| Resource Description Framework Schema | |
| ステータス | W3C勧告 |
|---|---|
| 開始年 | 1999年1月5日 |
| 初版 | 2002年4月30日 |
| 最新版 | 1.1(勧告) |
RDFスキーマ(るふじすきーま、英: RDF Schema)は、RDFの拡張可能な知識表現データモデルを使用して、特定のプロパティを持つクラスの集合であり、オントロジーを記述するための基本要素を提供する。
最初のバージョンは1998年4月にWorld Wide Web Consortium(W3C)によって公開され、最終的なW3C勧告は2014年2月にリリースされた。多くのRDFSコンポーネントは、より表現力の高いWeb Ontology Language(OWL)に含まれている。
RDFSの構成要素はRDFSクラス、関連プロパティ、およびRDFのボキャブラリ上に構築されたユーティリティプロパティである。
rdfs:Resourcerdfs:Classrdfs:Classの典型的な例は、Friend of a Friend(FOAF)ボキャブラリのfoaf:Personである。foaf:Personのインスタンスとは、rdf:typeプロパティを使用してクラスfoaf:Personに結びついているリソースのことで、自然言語の文「ジョンは人間である」を形式的に表現した以下の例のようなものである。
ex:John rdf:type foaf:Person
rdfs:Classの定義は再帰的である。rdfs:Classはクラスのクラスであり、自分自身のインスタンスである。
rdfs:Class rdf:type rdfs:Class
RDFおよびRDFS仕様が記述するその他のクラスは以下の通りである。
rdfs:Literalrdfs:Datatyperdfs:Datatypeはrdfs:Classのインスタンスかつサブクラスの両方である。rdfs:Datatypeの各インスタンスはrdfs:Literalのサブクラスである。rdf:XMLLiteralrdf:XMLLiteralはrdfs:Datatypeのインスタンスである(したがってrdfs:Literalのサブクラス)。rdf:Propertyプロパティはrdf:Propertyクラスのインスタンスであり、主語リソースと目的語リソースの間の関係を記述する。そのように使用される場合、プロパティは述語である(RDF:リファイケーションも参照)。
rdfs:domainrdf:Propertyのrdfs:domainは、そのプロパティが述語であるトリプル内の主語のクラスを宣言する。rdfs:rangerdf:Propertyのrdfs:rangeは、そのプロパティが述語であるトリプル内の目的語のクラスまたはデータ型を宣言する。例えば、以下の宣言はプロパティex:employerがfoaf:Person型の主語をfoaf:Organization型の目的語に関連付けることを表すために使用される。
ex:employer rdfs:domain foaf:Person ex:employer rdfs:range foaf:Organization
前の2つの宣言を前提として、次のトリプルから:
ex:John ex:employer ex:CompanyX
ex:Johnがfoaf:Personであり、ex:CompanyXがfoaf:Organizationであることが推論(または導出)できる。
rdf:typerdfs:subClassOf例えば、以下は「すべての人間はエージェントである」と宣言する。
foaf:Person rdfs:subClassOf foaf:Agent
クラスの階層はプロパティのドメインとレンジの継承(次のセクションの定義を参照)をクラスからサブクラスへとサポートする。
rdfs:subPropertyOfrdf:Propertyのインスタンス。rdfs:labelrdf:Propertyのインスタンス。rdfs:commentrdf:Propertyのインスタンス。rdfs:seeAlsordf:Propertyのインスタンス。rdfs:isDefinedByrdf:Propertyのインスタンス。このプロパティはリソースが記述されているRDFボキャブラリを示すために使用できる。含意(エンテイルメント)レジームは、グラフ内のトリプルが論理的に矛盾しているかどうかを定義する。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と宣言するなど)が挙げられる。
RDFSで表現されるRDFボキャブラリには次のものが含まれる:
madsrdf:prominentFamilyMemberで著名かどうかなど、特殊な関係データに注釈を付けることができる。