セマンティックWebの概念を把握しようとしています。 RDFとOWLの違いを正確に理解するのは難しいと感じています。 OWLはRDFの拡張ですか、またはこれら2つはまったく異なる技術ですか?
セマンティックWebは層になっています。これは、あなたが興味を持っていると思うものの簡単な要約です。
Update:データの構造を定義するためにRDFSが使用されることに注意してください、notOWL。 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-リソース記述フレームワークです。 RDFは、トリプルの追加構造を定義します。 RDFが定義する最も重要なことは、「rdf:type」と呼ばれる述語です。これは、物事が特定のタイプであると言うために使用されます。誰もがrdf:typeを使用しているため、非常に便利です。
RDFS(RDFスキーマ)は、サブジェクト、オブジェクト、述語などの概念を表すいくつかのクラスを定義します。これは、事物のクラスと関係のタイプに関するステートメントの作成を開始できることを意味します。最も単純なレベルでは、 http://familyontology.net/1.0#hasFather は人と人の関係です。また、人間が読めるテキストで、関係またはクラスの意味を説明できます。これはスキーマです。さまざまなクラスおよび関係の合法的な使用法を示します。また、クラスまたはプロパティがより一般的なタイプのサブタイプであることを示すためにも使用されます。たとえば、「HumanParent」は「Person」のサブクラスです。 「愛」は「知識」のサブクラスです。
RDFシリアル化
RDFは、さまざまなファイル形式でエクスポートできます。最も一般的なのはRDF + XMLですが、これにはいくつかの弱点があります。
N3は読みやすい非XML形式であり、一部のサブセット(タートルおよびNトリプル)はより厳密です。
RDFはファイル形式ではなくトリプルを操作する方法であることを知っておくことが重要です。
XSD
XSDは、日付、整数などのプロパティタイプを記述するために主に使用される名前空間です。通常、RDFデータで特定のタイプのリテラルを識別するデータに見られます。また、XMLスキーマでも使用されていますが、これは魚のやかんとは少し異なります。
フクロウ
OWLは、スキーマにセマンティクスを追加します。プロパティとクラスについてより詳細に指定できます。また、トリプルで表現されます。たとえば、「If A isMarriedTo B」の場合、「B isMarriedTo A」を意味します。または、「C isAncestorOf D」および「D isAncestorOf E」次に「C isAncestorOf E」。フクロウが追加するもう1つの便利な点は、2つのことは同じであると言う機能です。これは、異なるスキーマで表現されたデータを結合するのに非常に役立ちます。あるスキーマの「sired」関係は、他のスキーマのowl:sameAs「fathered」であると言えます。また、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で記述できるwhatを正確に定義しています。
オントロジーにはいくつかのプロパティがあります。
それが、OWL(ver 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だけでは簡単にモデル化されず、サブクラス( type)など。 RDFSは、rdfs:subClassOf
、rdfs:range
、またはrdfs:domain
などの構造を使用して、このようなケースを表す特別な手段を提供します。理想的には、reasonerは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にオントロジー機能を追加します(これは、正式な計算可能な一次記述ロジックを使用してトリプルのコンポーネントを定義する装置を提供することにより、正式な既知のレッジ表現に対して非常に限られた機能のみを提供します)。それが、ここでのポスターが「意味の豊かさ」について話すときの意味です。
第三に、OWL-Full(OWL 1)ではrdfs:classとowl:classは同等であり、OWL-DLではowl:classはrdfs:classのサブクラスであることを認識することが重要です。実際には、これはOWLオントロジーをRDFのスキーマとして使用できることを意味します(正式にはスキーマを必要としません)。
これがさらに明確になることを願っています。
個人的には、このスライドデッキは非常に便利で理解しやすいものでした。 http://www.slideshare.net/rlovinger/rdf-and-owl
RDFは、トリプル 'subject'、 'predicate'、 'value'を定義する方法です。たとえば、言いたい場合は、
「私の名前はピエール」
私は書くだろう
<mail:[email protected]> <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を使用している場合、次の2つのことを区別する必要があります。
RDFをconceptとして参照できます。
トリプルのコレクションを使用して、モノ/ロジック/任意のものを記述する方法。
例:
「アンナにはリンゴがあります。」 「リンゴは健康です。」
上記の2つのリソース「Anna」と「apples」を記述する2つのトリプルがあります。 RDF(リソース記述フレームワーク)の概念は、3つの単語(用語)のみのセットでリソース(何でも)を記述できることです。このレベルでは、3語の文字列、壁の絵、3列のテーブルなど、情報の保存方法は気にしません。
この概念レベルで重要なことは、トリプルステートメントを使用して必要なものを表現できることだけです。
RDFはvocabularyとして参照できます
ボキャブラリーは、ファイルまたはどこかに保存されている用語定義のコレクションです。これらの定義された用語は、一般に他の説明で再利用されることを目的としているため、人々はデータ(リソース)をより簡単に、標準的な方法で説明できます。
Webでは、次のような標準的な語彙を見つけることができます。
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の概念を拡張し、抽象性が低く、リソースのより正確な説明を提供できる新しいタイプのプロパティを作成します。
結論:
RDFSを使用すると、柔軟なトリプルベースの形式を標準化し、物事を言うために使用できる語彙(rdf:type
やrdfs:subClassOf
などの「キーワード」)を提供することで、物事間の関係を表現できます。
OWLも同様ですが、より大きく、より良く、より悪いです。 OWLを使用すると、データモデルについてさらに詳しく説明し、データベースクエリと自動推論システムを効率的に使用する方法を示します。また、データモデルを現実世界に持ち込むための便利な注釈を提供します。
RDFSとOWLの違いの中で、最も重要なのは、OWLが物事を言うために使用できるはるかに大きな語彙を提供することだけです。
たとえば、OWLには、rdfs:type
、rdfs:domain
、rdfs:subPropertyOf
など、RDFSの古い友人がすべて含まれます。ただし、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はcan特定の語彙を使用する方法を示すだけでなく、実際にcannot使用する方法を示すことです。対照的に、RDFSは、必要なトリプルをほとんど追加できる、何でもできる世界を提供します。
たとえば、RDFSでは、気になるものはすべてrdfs:Class
のインスタンスになります。 Beagleはrdfs:Class
であると言って、Fidoはビーグル:
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
がクラスとインスタンスの両方として使用されていることです。 BeagleはFidoが属するクラスですが、Beagleはそれ自体が別のクラスのメンバーです:英国で育ったモノ。
RDFSでは、挿入できるステートメントと挿入できないステートメントをRDFSが実際に制約しないため、これはすべて完全に合法です。 OWLでは、対照的に、または少なくともOWLのいくつかのフレーバーでは、上記のステートメントは実際には正当ではありません:単に何かがクラスとインスタンスの両方になりうると言うことは許されません。
これは、RDFSとOWLの2番目の大きな違いです。 RDFSはすべてを自由に有効にする、何でもWild West、Speak-Easies、およびSalvador Daliに満ちた世界になります。 OWLの世界では、はるかに厳格な構造が課されています。
ラジオの製造ビジネスを説明するオントロジーを構築するために最後の1時間を費やしたとします。昼食時のあなたの仕事は、時計製造ビジネスのオントロジーを構築することです。今日の午後、素敵なコーヒーの後、あなたの上司は、あなたの非常に収益性の高い時計ラジオ事業のためにオントロジーを構築しなければならないと言うでしょう。朝の仕事を簡単に再利用する方法はありますか?
OWLを使用すると、このようなことが非常に簡単になります。 Owl:Import
は時計ラジオの状況で使用するものですが、OWLはowl:versionInfo
、owl:backwardsCompatibleWith
、owl:deprecatedProperty
などのさまざまな注釈も提供します。簡単に使用して、相互に一貫性のある全体にデータモデルをリンクします。
RDFSとは異なり、OWLはメタメタデータモデリングのすべてのニーズを確実に満たします。
OWLを使用すると、プレイできる語彙が大幅に増えるため、データモデルについて言いたいことを簡単に言うことができます。さらに、今日のコンピューターの計算の現実に基づいて発言を調整し、特定のアプリケーション(検索クエリなど)向けに最適化することもできます。さらに、OWLを使用すると、標準のアノテーションフレームワークを使用して異なるオントロジー間の関係を簡単に表現できます。
これらはすべてRDFSと比較して利点であり、通常、これらに慣れるのに余分な労力を費やす価値があります。
ソース: RDFS vs. OWL
セマンティックWebの概念を把握しようとしています。 RDFとOWLの違いを正確に理解するのは難しいと感じています。 OWLはRDFの拡張ですか、またはこれら2つはまったく異なる技術ですか?
要するに、はい、OWLはRDFの拡張であると言えます。
より詳細には、RDFを使用して、主語-述語-目的語トリプルを定義することにより、有向グラフを記述することができます。サブジェクトとオブジェクトはノードであり、述語はエッジです。つまり、述語はサブジェクトとオブジェクトの間の関係を表します。たとえば、:Tolkien :wrote :LordOfTheRings
または:LordOfTheRings :author :Tolkien
など。リンクされたデータシステムは、これらのトリプルを使用してナレッジグラフを記述し、それらを保存し、クエリする方法を提供します。現在、これらは巨大なシステムですが、小規模プロジェクトでRDFを使用できます。すべてのアプリケーションには、ドメイン固有の言語があります(またはDDD用語ではユビキタス言語です)。オントロジー/ボキャブラリーでその言語を記述することができるため、アプリケーションのドメインモデルをグラフで記述できます。グラフを視覚化して、ビジネスpplに視覚化し、モデルに基づいてビジネス上の決定について話し、アプリケーションを構築できますその。 microdata のように、アプリケーションの語彙を、返されるデータと検索エンジンが知っている語彙にバインドできます(たとえば、RDFAでHTMLを使用してこれを行うことができます)。アプリケーションが何をするかについての知識は機械で処理できるため、アプリケーションを簡単に見つけることができます。これがセマンティックWebの仕組みです。 (少なくともこれは私が想像する方法です。)
オブジェクト指向アプリケーションを記述するには、タイプ、クラス、プロパティ、インスタンスなどが必要です。RDFを使用すると、オブジェクトのみを記述できます。 RDFS(RDFスキーマ)は、クラス、継承(オブジェクトに基づく)を記述するのに役立ちますが、あまりにも広範です。制約を定義するには(たとえば、中国人家族ごとに1人の子供)、別の語彙が必要です。 OWL(Webオントロジー言語)はこの仕事をします。 OWLは、Webアプリケーションを記述するために使用できるオントロジーです。 XSD simpleTypesを統合します。
したがって、RDF -> RDFS -> OWL -> MyWebApp
は、Webアプリケーションをより具体的な方法で記述する順序です。
WC3ドキュメントオブジェクトモデルでは、documentは抽象的なものです:elementテキスト、コメント、属性、その他の要素がネストされています。
セマンティックWebでは、「トリプル」のセットを扱います。各トリプルは次のとおりです。
スキーマはW3Cドキュメントオブジェクトモデルに対するものであるため、OWLはセマンティックウェブに対するものです。さまざまなURIの意味を文書化し、それらがマシンでチェックできる正式な方法で使用される方法を指定します。ドキュメントがスキーマに関して有効である場合とそうでない場合があるように、セマンティックWebは、それに適用されるOWLに関して有効である場合とそうでない場合があります。
RDFはセマンティックWebに対するものであり、XMLはDOMに対するものです。これはトリプルのセットのシリアル化です。
もちろん、RDFは通常、XMLドキュメントとしてシリアル化されますが、RDFは「XMLシリアル化ofRDF」。
同様に、OWLはOWL/XMLを使用してシリアル化できます。または(申し訳ありませんが)RDFとして表現できます。RDF自体は通常XMLとしてシリアル化されます。
基本的なセマンティックWebスタックは、このスレッドですでに多く説明されています。最初の質問に焦点を当て、RDFをOWLと比較したいと思います。
OWLの使用は、いくつかの事実を知っているだけで、より多くの意味(推論と推論)を得るために不可欠です。この「動的に作成された」情報は、SPARQLのように、さらに適切なクエリに使用できます。
いくつかの例は、それが実際にOWLで機能することを示します-これらは2015年にスペインのTYPO3campマヨルカで私の セマンティックWebの基本について話す から取られました。
Spaniard: Person and (inhabitantOf some SpanishCity)
つまり、Spaniard
は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 で述べたこと answer を補強するものです。
ソース: https://www.obitko.com/tutorials/ontologies-semantic-web/semantic-web-architecture.html
Resource Description Framework(RDF)は、強力な形式的知識表現言語であり、セマンティックWebの基本的な標準です。コアの概念と関係を定義する独自の語彙(たとえば、rdf:typeはisA関係に対応)、およびsubject-predicate-object(resource-property-value)の形式の機械解釈可能なステートメントを可能にするデータモデルpicture-depicts-bookなど、RDF triplesと呼ばれるトリプル。制御された語彙と基本的なオントロジーを作成するために必要な概念を持つRDF語彙の拡張は、RDFスキーマまたはRDF語彙記述言語(RDFS)と呼ばれます。 RDFSを使用すると、クラスとリソースに関するステートメントを記述し、スーパークラスとサブクラスの関係などを介して分類構造を表現できます。
複雑なナレッジドメインには、RDFSで利用可能な機能よりも多くの機能が必要であるため、OWLが導入されました。 OWLは、クラス間の関係(ユニオン、インターセクション、ディスジョイント、同等性)、プロパティのカーディナリティー制約(最小、最大、正確な数、たとえばすべての人に父親が1人だけ)、プロパティの豊富な入力、プロパティの特性、および特別なプロパティ(推移的、対称、機能、逆機能、たとえば、A ex:hasAncestor BおよびB ex:hasAncestor Cは、A ex:hasAncestor C)を意味し、特定のプロパティが特定のクラスのインスタンスの一意のキーであり、ドメインおよび範囲の制限であることを指定しますプロパティ用。
最良の答えは、James HendlerによるSemantic Webの先駆者の1人である「働くオントロジストのためのSemantic Web」から本を読むことです。クイッククラッシュコースを探している場合。このudemyコースを確認してください。