回答:
セマンティックWebは層状になっています。これはあなたが興味を持っていると思うものの簡単な要約です。
更新:RDFSは、OWL ではなく、データの構造を定義するために使用されることに注意してください。OWLは、C構造体などの通常のプログラミングでは問題にならず、AIの研究と集合論に近い意味関係を記述します。
トリプルとURI
Subject - Predicate - Object
これらは単一の事実を説明しています。一般に、URIは主語と述語に使用されます。オブジェクトは、別のURIか、数値や文字列などのリテラルです。リテラルはタイプ(URIでもある)を持つことができ、言語も持つことができます。はい、これはトリプルが最大5ビットのデータを持つことができることを意味します!
たとえば、トリプルはチャールズがハリーズの父親であるという事実を説明するかもしれません。
<http://example.com/person/harry> <http://familyontology.net/1.0#hasFather> <http://example.com/person/charles> .
トリプルとは、論理的に極端なデータベースの正規化です。それらには、多くのソースからのトリプルを再構成せずに1つのデータベースにロードできるという利点があります。
RDFおよびRDFS
次のレイヤーはRDF-Resource Description Frameworkです。RDFは、トリプルにいくつかの追加の構造を定義します。RDFが定義する最も重要なことは、「rdf:type」と呼ばれる述語です。これは、物事があるタイプのものであると言うために使用されます。誰もがrdf:typeを使用しているため、非常に便利です。
RDFS(RDFスキーマ)は、サブジェクト、オブジェクト、述語などの概念を表すいくつかのクラスを定義します。これは、モノのクラスや関係のタイプについての記述を開始できることを意味します。最も単純なレベルでは、http://familyontology.net/1.0#hasFatherは人と人との関係であると述べることができます。また、人間が読めるテキストで関係やクラスの意味を説明することもできます。これはスキーマです。これは、さまざまなクラスや関係の合法的な使用法を示しています。また、クラスまたはプロパティがより一般的なタイプのサブタイプであることを示すためにも使用されます。たとえば、「HumanParent」は「Person」のサブクラスです。「愛」は「知識」のサブクラスです。
RDFシリアライゼーション
RDFは、いくつかのファイル形式でエクスポートできます。最も一般的なのはRDF + XMLですが、これにはいくつかの弱点があります。
N3は読みやすい非XML形式であり、より厳密なサブセット(TurtleおよびN-Triples)があります。
RDFはファイル形式ではなく、トリプルを処理する方法であることを理解することが重要です。
XSD
XSDは、主に日付、整数などのプロパティタイプを記述するために使用される名前空間です。これは一般に、リテラルの特定のタイプを識別するRDFデータで見られます。また、XMLスキーマでも使用されます。これは、少し異なる魚のやかんです。
フクロウ
OWLはセマンティクスをスキーマに追加します。プロパティとクラスについてはるかに詳細に指定できます。また、トリプルで表現されます。たとえば、「If A isMarriedTo B」の場合、「B isMarriedTo A」を意味します。または、「C isAncestorOf D」および「D isAncestorOf E」の場合、「C isAncestorOf E 「フクロウが追加するもう1つの便利なことは、2つのことは同じであると言うことができることです。これは、異なるスキーマで表現されたデータを結合するのに非常に役立ちます。1つのスキーマでの「兄弟関係」はowl:sameAsであると言うことができます。他のスキーマ。これを使用して、Wikipediaの「Elvis Presley」がBBCの「Elvis Presley」と同じであるなど、2つのことは同じであると言うこともできます。これは、複数のサイトからデータを結合し始めることができることを意味し、非常にエキサイティングです(これは「リンクされたデータ」です)。
また、OWLを使用して、「C isAncestorOf E」などの暗黙のファクトを推測することもできます。
要するに:
以前のポスターが書いたように、RDFはトリプルを定義する方法を説明する仕様です。
問題は、RDFではすべてを定義できるため、次のような宣言を作成できることです。
| subject | predicate | object |
|---------|-----------|--------|
| Alex | Eats | Apples |
| Apples | Eats | Apples |
| Apples | Apples | Apples |
これらのトリプルは、有効なRDFドキュメントを形成します。
しかし、意味的には、これらのステートメントは正しくなく、RDFは記述内容の検証を支援できないことを理解しています。
これは有効なオントロジーではありません。
OWL仕様は、有効なオントロジーを持つためにRDFで何を書くことができるかを正確に定義しています。
オントロジーにはいくつかの特性があります。
そのため、OWL(バージョン1)は、OWL DL、OWL Lite、OWL Fullなどのいくつかのバージョンを定義しています。
RDF、RDFS、OWLは、ますます複雑になる情報や知識を表現する手段です。これらはすべて、RDF / XML構文(または、たとえばTurtleやN3などの他のRDFシリアル化構文)でシリアル化できます。
これらのテクノロジーには関連性があり、相互運用可能であると想定されていますが、起源が異なるため、テクノロジー間の関係を把握するのが複雑な場合があります。どちらを選択するかは、モデル化する状況がどれほど複雑に必要かによって異なります。
表現力のまとめ
RDF:インスタンスとそのタイプへのマッピングに焦点を当てた単純な表現(rdf:type
)。データをリンクしてトリプルを作成するカスタムプロパティを定義することが可能です。RDFデータはSPARQLでクエリされます。Turtleでシリアル化されたRDFの例:
@prefix : <http://www.example.org/> .
:john rdf:type :Man .
:john :livesIn "New-York" .
:livesIn rdf:type rdf:Property .
RDFS:一部の状況はRDFだけでは簡単にモデル化できません。たとえば、サブクラス(タイプのタイプ)などのより複雑な関係を表すことが興味深い場合があります。RDFSはrdfs:subClassOf
、rdfs:range
やのような構成要素を使用して、このようなケースを表す特別な手段を提供しますrdfs:domain
。理想的には、推論は、 RDFSの意味論を理解することができるとの関係に基づいて、トリプルの数を展開します。たとえば、あなたがトリプルを持っている場合John a Man
とMan rdfs:subClassOf
Human
、あなたは同様にトリプルを生成する必要がありますJohn a Human
。これは、RDFだけでは実行できないことに注意してください。RDFSデータは、SPARQLを使用して照会されます。Turtleでシリアル化されたRDFSの例:
@prefix : <http://www.example.org/> .
:john rdf:type :Man .
:Man rdfs:subClassOf :Human .
:john :livesIn "New-York" .
:livesIn rdf:type rdf:Property .
# After reasoning
:john rdf:type :Human .
OWL:最高レベルの表現力。クラス間の関係は、記述ロジック(数学理論)に基づいて正式にモデル化できます。OWLは推論器に大きく依存しているため、インスタンス間の連鎖プロパティやクラス間の制限などの複雑な構成を表現することが可能です。OWLは、RDFデータセットの上にオントロジーまたはスキーマを構築するのに役立ちます。OWLはRDF / XMLとしてシリアル化できるため、SPARQLを介してクエリすることは理論的に可能ですが、DLクエリ(通常は標準のOWLクラス式)でOWLオントロジーをクエリする方がはるかに直感的です。Turtleでシリアル化されたOWLコンストラクトの例。
@prefix : <http://www.example.org/> .
:livesIn rdf:type owl:DatatypeProperty .
:Human rdf:type owl:Class .
:Man rdf:type owl:Class .
:Man rdfs:subClassOf :Human .
:John rdf:type :Man .
:John rdf:type owl:NamedIndividual .
まず、以前に指摘されたように、フクロウはRDFでシリアル化できます。
第二に、OWLは、形式的な計算可能な一次記述ロジックを使用してトリプルのコンポーネントを定義するための装置を提供することにより、RDFにオントロジー機能を追加します(それ自体は、形式的な既知レッジ表現に対して非常に限られた機能しか提供しません)。それがここのポスターが彼らが「意味の豊かさ」について話すときに意味することです。
第3に、OWL-Full(OWL 1の場合)ではrdfs:classとowl:classは同等であり、OWL-DLではowl:classはrdfs:classのサブクラスであることを認識することが重要です。実際には、これは、OWLオントロジーをRDFのスキーマとして使用できることを意味します(これは正式にはスキーマを必要としません)。
それがさらに明確になることを願っています。
RDFという用語を使用している場合、次の2つを区別する必要があります。
RDFを概念として参照できます。
トリプルのコレクションを使用して、物/論理/何かを記述する方法。
例:
「アンナはリンゴを持っています。」「リンゴは健康です。」
上記には、2つのリソース「Anna」と「apples」を表す2つのトリプルがあります。RDF(Resource Description Framework)の概念は、わずか3語(用語)のセットでリソース(すべて)を記述できるということです。このレベルでは、3単語の文字列、壁の絵、3列のテーブルなど、情報の格納方法を気にしません。
この概念レベルで重要なのは、トリプルステートメントを使用して、必要なすべてのものを表現できることです。
RDFを語彙として参照できます
語彙は、ファイルまたはどこかに保存されている用語定義の集まりです。これらの定義された用語は、一般的に他の記述で再利用されることを目的としているため、人々はより簡単かつ標準的な方法でデータ(リソース)を記述できます。
ウェブでは、次のような標準的な語彙を見つけることができます。
RDF(https://www.w3.org/1999/02/22-rdf-syntax-ns)
RDFS(https://www.w3.org/2000/01/rdf-schema#)
OWL(https://www.w3.org/2002/07/owl)
RDF語彙は、クラスの個人/インスタンスを(可能な限り最も基本的なレベルで)記述するのに役立つ用語を定義します。例:rdf:type、rdf:Property。
rdf:typeを使用すると、一部のリソースがクラスのインスタンスであることを説明できます。
<http://foo.com/anna> rdf:type <http://foo.com/teacher>
そのため、RDFボキャブラリには、クラスインスタンスの基本的な説明と他のいくつかの説明(トリプルステートメント定義や述語定義など、一般的にRDFの概念に関連するもの)を対象とする用語があります。
RDFSボキャブラリーには、クラスとそれらの間の関係を説明するのに役立つ用語定義があります。RDFSボキャブラリーは、RDFボキャブラリーのようにクラス(個体)のインスタンスを気にしません。例:クラスAがクラスBのサブクラスであることを説明するために使用できるrdfs:subClassOfプロパティ。
RDFとRDFSの語彙は互いに依存しています。RDFはその用語をRDFSを使用して定義し、RDFSはRDFを使用して独自の用語を定義します。
RDF / RDFSボキャブラリは、リソースの非常に基本的な説明を作成するために使用できる用語を提供します。より複雑で正確な説明が必要な場合は、OWLボキャブラリーを使用する必要があります。
OWL語彙には、より詳細な説明を対象とした一連の新しい用語が付属しています。これらの用語は、RDF / RDFSボキャブラリの用語を使用して定義されています。
owl:ObjectProperty a rdfs:Class ;
rdfs:label "ObjectProperty" ;
rdfs:comment "The class of object properties." ;
rdfs:isDefinedBy <http://www.w3.org/2002/07/owl#> ;
rdfs:subClassOf rdf:Property .
owl:DatatypeProperty a rdfs:Class ;
rdfs:label "DatatypeProperty" ;
rdfs:comment "The class of data properties." ;
rdfs:isDefinedBy <http://www.w3.org/2002/07/owl#> ;
rdfs:subClassOf rdf:Property .
owl:TransitiveProperty a rdfs:Class ;
rdfs:label "TransitiveProperty" ;
rdfs:comment "The class of transitive properties." ;
rdfs:isDefinedBy <http://www.w3.org/2002/07/owl#> ;
rdfs:subClassOf owl:ObjectProperty .
上記のように、OWLボキャブラリーは、抽象性が低く、リソースのより正確な説明を提供できる新しいタイプのプロパティーを作成することにより、rdf:Propertyの概念を拡張します。
結論:
RDFは、トリプルの「主語」、「述語」、「値」を定義する方法です。たとえば、言いたいのなら
「私の名前はピエール」
私は書きます
<mail:me@where.com> <foaf:name> "Pierre"
を参照してください<foaf:name>
?これはFOAFオントロジーの一部です。オントロジーは、プロパティ、特定のサブジェクトのクラスを記述する正式な方法であり、OWLはオントロジーを定義する(RDF)方法です。
C ++、Javaなどを使用して、クラス、サブクラス、フィールドなどを定義します。
class Person
{
String email_as_id;
String name;
}
RDFはOWLを使用してこれらの種類のステートメントを定義します。
この種の質問をする別の場所:http : //www.semanticoverflow.com/
セマンティックウェブの概念を理解しようとしています。RDFとOWLの違いを正確に理解するのは難しいと感じています。OWLはRDFの拡張ですか、またはこれら2つはまったく異なるテクノロジーですか?
要するに、はい、OWLはRDFの拡張であると言えます。
より詳細には、RDFでは、主語、述語、目的語のトリプルを定義することにより、有向グラフを記述することができます。サブジェクトとオブジェクトはノードであり、述語はエッジです。つまり、述語はサブジェクトとオブジェクトの間の関係を表します。たとえば:Tolkien :wrote :LordOfTheRings
または:LordOfTheRings :author :Tolkien
などリンクされたデータシステムは、これらのトリプルを使用してナレッジグラフを記述し、それらを保存してクエリする方法を提供します。現在、これらは巨大なシステムですが、小規模なプロジェクトでRDFを使用できます。すべてのアプリケーションには、ドメイン固有の言語(またはDDD用語ではユビキタス言語)があります。その言語をオントロジー/語彙で説明できるので、アプリケーションのドメインモデルをグラフで説明できます。グラフを視覚化して、ビジネスモデルに表示し、モデルに基づいてビジネス上の決定について話し、アプリケーションを上に構築できます。その。アプリケーションの語彙を、それが返すデータや、microdataなどの検索エンジンが認識している語彙にバインドできます。(たとえば、これを行うためにRDFAでHTMLを使用できます)。そのため、検索エンジンはアプリケーションの検索を簡単に行うことができます。これは、その機能に関する知識が機械で処理できるためです。これがセマンティックWebの仕組みです。(少なくともこれは私が想像する方法です。)
オブジェクト指向のアプリケーションを説明するには、型、クラス、プロパティ、インスタンスなどが必要です。RDFでは、オブジェクトのみを説明できます。RDFS(RDFスキーマ)は、クラス、継承(オブジェクトに基づく)を記述するのに役立ちますが、あまりに広範です。制約を定義するには(たとえば、中国の家族ごとに1人の子供)、別の語彙が必要です。OWL(Webオントロジー言語)はこの仕事をします。OWLは、Webアプリケーションの記述に使用できるオントロジーです。XSD simpleTypesを統合します。
したがってRDF -> RDFS -> OWL -> MyWebApp
、Webアプリケーションをより具体的な方法で説明するための順序になります。
personA friendsWith personB
)、その(2)RDFSは関係指定する能力を提供することによって、これを延びobject classes
すなわち- class Person <has 'friendsWith' relationship> Person
。これにより、クラスを介してRDFをフレーズすることができますA:typeof:person friendsWith B:<typeof:person>
。(3)OWLでは、関係の制約を指定できますか?
RDFSはあなたが柔軟、トリプルベースのフォーマットに標準化して、語彙(例えば「キーワード」を提供することで、物事の間の関係を表現することを可能にするrdf:type
かrdfs:subClassOf
、物事を言うために使用することができます)。
OWLは似ていますが、より大きく、より良く、より悪いです。OWLを使用すると、データモデルについてより多くのことを言うことができ、データベースクエリと自動推論を効率的に処理する方法を示し、データモデルを現実世界に導入するための便利な注釈を提供します。
RDFSとOWLの違いのうち、最も重要なのは、OWLが物事を言うために使用できるはるかに大きな語彙を提供することだけです。
例えば、OWLは、次のようなRDFSからすべてのあなたの古い友人を含みrdfs:type
、rdfs:domain
とrdfs:subPropertyOf
。しかし、OWLはあなたに新しくてより良い友達を与えます!例えば、OWLを使用すると、集合演算の観点からデータを記述できます。
Example:Mother owl:unionOf (Example:Parent, Example:Woman)
これにより、データベース間の同等性を定義できます。
AcmeCompany:JohnSmith owl:sameAs PersonalDatabase:JohnQSmith
プロパティ値を制限できます:
Example:MyState owl:allValuesFrom (State:NewYork, State:California, …)
実際、OWLは、独自の教訓を得るために、データモデリングと推論で使用する非常に新しい高度な語彙を提供します。
もう1つの大きな違いは、RDFSとは異なり、OWLは特定の語彙を使用する方法を通知するだけでなく、実際には使用できないことも通知することです。それとは対照的に、RDFSはあなたが望むどんなトリプルもほとんど追加できる何でも行く世界を提供します。
たとえば、RDFSでは、好きなように感じるものはすべてのインスタンスになりますrdfs:Class
。Beagleはであるrdfs:Class
と言い、次にFidoはBeagleのインスタンスであると言うかもしれません:
Example: Beagle rdf:Type rdfs:Class
Example:Fido rdf:Type Example: Beagle
次に、ビーグルについて話したいと思うかもしれません、おそらくビーグルはイギリスで飼育されている犬の実例だと言いたいかもしれません:
Example:Beagle rdf:Type Example:BreedsBredInEngland
Example: BreedsBredInEngland rdf:Type rdfs:Class
この例で興味深いのは、クラスとインスタンスのExample:Beagle
両方として使用されていることです。ビーグルはフィドがメンバーになっているクラスですが、ビーグルはそれ自体が別のクラスのメンバーです:英国で生まれたもの。
RDFSでは挿入できるステートメントと挿入できないステートメントをRDFSが実際に制約しないため、RDFSではこれらすべてが完全に合法です。対照的に、OWLでは、またはOWLのいくつかのフレーバーでは、上記のステートメントは実際には合法ではありません。何かがクラスとインスタンスの両方になる可能性があると言うことはできません。
これは、RDFSとOWLの2番目の大きな違いです。RDFSは、何でも無料で、何でもワイルドウエスト、スピークイージーズ、サルバドールダリに満ちた世界を実現します。OWLの世界は、はるかに厳格な構造を課しています。
ラジオ製造ビジネスを説明するオントロジーの構築にこの1時間を費やしたとします。昼食時のあなたの仕事は、時計製造ビジネスのためのオントロジーを構築することです。今日の午後、おいしいコーヒーを飲んだ後、上司から、非常に収益性の高いクロックラジオビジネスのためにオントロジーを構築する必要があると言われました。朝の仕事を簡単に再利用する方法はありますか?
OWLは、このようなことを非常に簡単にします。Owl:Import
あなたは、クロックラジオの状況で使用するものですが、OWLはまた、あなたのような注釈の豊かな多様性を与えowl:versionInfo
、owl:backwardsCompatibleWith
とowl:deprecatedProperty
、簡単に相互にコヒーレント全体に一緒に使用するリンク・データ・モデルとすることができます。
RDFSとは異なり、OWLはあなたのメタメタデータモデリングのニーズのすべてを確実に満たすでしょう。
OWLを使用すると、操作できるはるかに大きな語彙が得られます。これにより、データモデルについて言いたいことが何でも簡単に言えます。さらに、今日のコンピューターの計算現実に基づいて発言を調整したり、特定のアプリケーション(検索クエリなど)に合わせて最適化したりすることもできます。さらに、OWLを使用すると、標準の注釈フレームワークを使用して異なるオントロジー間の関係を簡単に表現できます。 。
これらはすべてRDFSと比較して利点であり、通常、それらに慣れるために余分な労力をかける価値があります。
ソース:RDFS対OWL
WC3のドキュメントオブジェクトモデルでは、文書は抽象的なものです:要素、テキスト、コメント、属性、およびその内にネストされた他の要素と。
セマンティックWebでは、「トリプル」のセットを扱います。各トリプルは:
スキーマはW3Cドキュメントオブジェクトモデルに対するものであるのに対し、OWLはセマンティックWebに対するものです。さまざまなURIの意味を文書化し、マシンでチェックできる正式な方法でそれらを使用する方法を指定します。セマンティックWebは、ドキュメントがスキーマに関して有効である場合とそうでない場合と同様に、それに適用されるOWLに関して有効である場合とそうでない場合があります。
XMLがDOMと同じように、RDFはセマンティックWebに対応します。これは、一連のトリプルのシリアル化です。
もちろん、RDFは、通常、XML文書としてシリアル化されています...が、それはRDFは、「XMLシリアル化と同じものではないことを理解することが重要だの RDFが」。
同様に、OWLはOWL / XMLを使用してシリアル化することも、(これについて申し訳ありませんが)RDFとして表現することもできます。RDF自体は通常、XMLとしてシリアル化されます。
基本的なセマンティックWebスタックは、このスレッドですでに多く説明されています。最初の質問に焦点を当て、RDFをOWLと比較したいと思います。
いくつかの事実を知るだけでより多くの意味(推論と推論)を得るには、OWLの使用が不可欠です。この「動的に作成された」情報は、SPARQLのような一致するクエリにさらに使用できます。
いくつかの例は、OWLで実際に機能することを示しています。これらは、2015年にスペインのTYPO3camp Mallorcaで行われたセマンティックWebの基本についての私の話から取られました。
Spaniard: Person and (inhabitantOf some SpanishCity)
つまり、a Spaniard
はa である必要がありPerson
(したがって、推論部分のすべてのプロパティを継承する)、少なくとも1つ(または複数)に存在する必要がありますSpanishCity
。
<Palma isPartOf Mallorca>
<Mallorca contains Palma>
この例は、inverseOf
プロパティisPartOf
とに適用した結果を示していますcontains
。
<:hasParent owl:cardinality “2“^^xsd:integer>
これは、それぞれThing
(このシナリオでは、おそらくHuman
)がちょうど2つの親を持つことを定義します-カーディナリティーはhasParent
プロパティーに割り当てられます。
絵は千の言葉を話します!以下のこの図は、セマンティックWebが「階層化アーキテクチャ」であるというこの回答でのChristopher Gutteridgeの 発言を補強するものです。
出典:https : //www.obitko.com/tutorials/ontologies-semantic-web/semantic-web-architecture.html
リソース記述フレームワーク(RDF)は、強力な形式的な知識表現言語とセマンティックWebの基本的な標準です。コアの概念と関係を定義する独自の語彙(たとえば、rdf:typeはisA関係に対応)と、subject-predicate-object(resource-property-value)の形式でマシンが解釈可能なステートメントを可能にするデータモデル写真描写本などのRDFトリプルと呼ばれるトリプル。制御された語彙と基本的なオントロジーを作成するために必要な概念を持つRDF語彙の拡張は、RDFスキーマまたはRDF語彙記述言語(RDFS)と呼ばれます。RDFSを使用すると、クラスとリソースに関するステートメントを記述し、スーパークラスとサブクラスの関係などを介して分類構造を表現できます。
複雑な知識ドメインには、RDFSで利用可能な機能よりも多くの機能が必要であり、OWLが導入されました。OWLは、クラス間の関係(ユニオン、インターセクション、ディスジョイント、同等性)、プロパティのカーディナリティ制約(最小、最大、正確な数、たとえば、すべての人がちょうど1人の父親を持つ)、プロパティの豊富な型付け、プロパティの特性および特別なプロパティ(推移的、対称、関数、逆関数、たとえば、A ex:hasAncestor BおよびB ex:hasAncestor Cは、A ex:hasAncestor C)を意味し、特定のプロパティが特定のクラスのインスタンスの一意のキーであること、およびドメインと範囲の制限を指定します。プロパティ用。