RDFスキーマ(るふじすきーま、)は、RDFの拡張可能な知識表現データモデルを使用して、特定のプロパティを持つクラスの集合であり、オントロジーを記述するための基本要素を提供する。
最初のバージョンは1998年4月にWorld Wide Web Consortium(W3C)によって公開され、最終的なW3C勧告は2014年2月にリリースされた。多くのRDFSコンポーネントは、より表現力の高いWeb Ontology Language(OWL)に含まれている。
用語 RDFSの構成要素はRDFSクラス、関連プロパティ、およびRDFのボキャブラリ上に構築されたユーティリティプロパティである。
クラス
すべてのクラスを表す。RDFで記述されるすべてのものはリソースである。
rdfs:Classはリソースを他のリソースのためのクラスとして宣言する。 rdfs:Classの典型的な例は、Friend of a Friend(FOAF)ボキャブラリのである。のインスタンスとは、プロパティを使用してクラスに結びついているリソースのことで、自然言語の文「ジョンは人間である」を形式的に表現した以下の例のようなものである。 ex:John rdf:type foaf:Person の定義は再帰的である。はクラスのクラスであり、自分自身のインスタンスである。 rdfs:Class rdf:type rdfs:Class
RDFおよびRDFS仕様が記述するその他のクラスは以下の通りである。
文字列や整数などのリテラル値。テキスト文字列などのプロパティ値はRDFリテラルの例である。リテラルはプレーンまたは型付きのいずれかである。
データ型のクラス。はのインスタンスかつサブクラスの両方である。の各インスタンスはのサブクラスである。
XMLリテラル値のクラス。はのインスタンスである(したがってのサブクラス)。
プロパティのクラス。
プロパティ プロパティはクラスのインスタンスであり、主語リソースと目的語リソースの間の関係を記述する。そのように使用される場合、プロパティは述語である(RDF:リファイケーションも参照)。
のrdfs:domainは、そのプロパティが述語であるトリプル内の主語のクラスを宣言する。
のrdfs:rangeは、そのプロパティが述語であるトリプル内の目的語のクラスまたはデータ型を宣言する。
例えば、以下の宣言はプロパティが型の主語を型の目的語に関連付けることを表すために使用される。 ex:employer rdfs:domain foaf:Person ex:employer rdfs:range foaf:Organization 前の2つの宣言を前提として、次のトリプルから: ex:John ex:employer ex:CompanyX がであり、がであることが推論(または導出)できる。
リソースがクラスのインスタンスであることを述べるために使用されるプロパティ。このプロパティの一般的に受け入れられているは「a」である。
:クラスの階層を宣言できる。
例えば、以下は「すべての人間はエージェントである」と宣言する。 foaf:Person rdfs:subClassOf foaf:Agent クラスの階層はプロパティのドメインとレンジの継承(次のセクションの定義を参照)をクラスからサブクラスへとサポートする。
あるプロパティで関連するすべてのリソースが別のプロパティでも関連することを述べるために使用されるのインスタンス。
リソースの名前の人間可読バージョンを提供するために使用できるのインスタンス。
リソースの人間可読な説明を提供するために使用できるのインスタンス。
ユーティリティプロパティ
主語リソースに関する追加情報を提供できるリソースを示すために使用されるのインスタンス。
主語リソースを定義するリソースを示すために使用されるのインスタンス。このプロパティはリソースが記述されているRDFボキャブラリを示すために使用できる。
RDFSの含意 含意(エンテイルメント)レジームは、グラフ内のトリプルが論理的に矛盾しているかどうかを定義する。RDFSの含意はあまり制限的でなく、グラフ内でどのような文が有効かを制限するルール量が(例えばOWLと比べて)少ない。一方で、グラフで機械解釈可能な方法で表現できるセマンティクスがかなり限られているという意味で、あまり表現力も高くない。
以下はRDFSの含意の機能と制限の簡単な例である。以下の明示的なトリプルを含むグラフから始める: foo:SomeGiraffe rdf:type bar:Animal. foo:SomeElephant rdf:type bar:Elephant. foo:SomeZoo rdf:type bar:Zoo. bar:livesInZoo rdfs:domain bar:Animal. bar:livesInZoo rdfs:range bar:Zoo. foo:SomeElephant bar:livesInZoo foo:SomeZoo. RDFSの含意による推論を有効にしないと、持っているデータからはfoo:SomeElephantがbar:Animalかどうかわからない。RDFSベースの推論を行うと、以下の追加トリプルが得られる: foo:SomeElephant rdf:type bar:Animal. rdfs:domain文は、bar:livesInZooが述語であるトリプルの主語はすべてbar:Animal型であることを規定する。RDFSの含意で分からないのはbar:Animalとbar:Elephantの関係である。推論によりfoo:SomeElephantはbar:Animalでもbar:Elephantでもあることがわかるので、これらのクラスは交差するが、単に交差するだけか、等しいか、またはサブクラス関係にあるかを推論する情報はない。
RDFS 1.1では、ドメインとレンジの文は正式な意味を持たず、その解釈は実装者に委ねられる。一方、1.2ワーキングドラフトでは個人の型を推論するための含意ルールとして使用される。それでも両バージョンで、レンジの期待される機能は「プロパティの値は1つ以上のクラスのインスタンスである」、ドメインは「特定のプロパティを持つリソースは1つ以上のクラスのインスタンスである」と明確に述べられている。
上記の例はRDFS含意の制限と機能の一部を示したが、論理的不整合(一般の言葉では「バリデーションエラー」と解釈できる)の例は示さなかった。論理的不整合とはトリプルが表す文が矛盾し、相互に矛盾する状態を表現しようとすることを意味する。RDFSにおける例としては、推論が有効な場合にオブジェクトに対して競合するデータ型を持つこと(例えばリソースをxsd:integer型として宣言し、同時にxsd:booleanと宣言するなど)が挙げられる。
RDFボキャブラリの例 RDFSで表現されるRDFボキャブラリには次のものが含まれる: FOAF:FOAFボキャブラリ仕様のソースはRDFa構文で書かれたRDFSである。 Dublin Core:RDFSソースは複数の構文で利用可能である。 :スキーマのソースは2020年7月まで元々RDFa構文で書かれたRDFSであった。 (SKOS)はSKOS XLボキャブラリと題されたRDFスキーマを開発した。これはOWL RDF/XML構文を使用するSKOSボキャブラリのOWLオントロジーであり、したがってRDFSの多数のクラスとプロパティを使用する。 アメリカ議会図書館はRDFで(MADS/RDF)と題されたRDFスキーマを定義している。概要によれば、自館と「情報科学(LIS)コミュニティ」での使用を意図している。例えば家族の中の個人がで著名かどうかなど、特殊な関係データに注釈を付けることができる。 UniProtデータベースは生化学データを記述するためのRDFスキーマを持ち、タンパク質の記述に特化している。
関連項目 SPARQL – RDF向けクエリ言語 (PICS) Resource Description Framework(RDF) Web Ontology Language(OWL)
– RDF向けシェイプと制約言語
参考文献
外部リンク W3C RDFS仕様書 W3C RDF 1.1入門 W3C SPARQL 1.1含意レジーム仕様書 W3C RDFS含意 SPARQL2XQuery OWL-RDF/SオントロジーとXMLスキーマのマッピング。