Copyright©2002 W3C® (MIT, INRIA, Keio), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply.
Resource Description Framework (RDF) とはWebで情報を表現するための多目的な言語のことである。本仕様書は、RDFを使ってRDFボキャブラリを記述する方法について規定する。 また、より高度なRDFボキャブラリ言語をサポートするためセマンティックWebが使用することができる規定だけでなく、この目的としての基本ボキャブラリについても規定している。
本節では、本文書の発行時の本文書の位置付けを規定する。本書は他の文書と差し替えられることがある
本書は、World Wide Web Consortium (W3C) RDF コアワーキンググループのワーキングドラフトであり、セマンティックWeb 活動の一環として作成された。
この仕様書は、レビューコメントを受け、編集者の提案を組み入れた2000年3月27日勧告候補の改訂版である。 また、本書はRDFコアワーキンググループによるRDFスキーマ仕様書の第一版である。RDFコアワーキンググループはRDFSのデザインに関してのフィードバックを取り入れる特権が与えられている。
Resource Description FrameworkはW3CセマンティックWeb活動の一部である。本活動、そして特にRDFの目的はWebを使用して機械が理解することのできる情報の交換を行うのための言語を作成することである。
ここで紹介するRDFボキャブラリ記述言語(RDF Vocabulary Description Language)とは、RDFスキーマ1.0 2000年3月27日の勧告候補に記述されている言語の改訂版のことである。仕様書はRDFボキャブラリとXMLスキーマの関係を明確にする目的として、フィードバックの観点で改訂を行ったものである。 が、同時にWebオントロジー言語に関するこれからの作業のためにより明確な原理も提供する。
編集上の変更を若干行い、それに平行してRDF Model Theory [RDFMT] で表現しているRDFの定型化と本仕様書を合わせるために、技術的な部分でもわずかに改訂を行っている。 rdfs:subClassOfおよび rdfs:subPropertyOfは現在、サイクルを形成でき、rdfs:domainおよび rdfs:rangeの記述は明確になった。また、本仕様書ではCRのリリースのフィードバックでその意味を明確に規定できないとしていたため、前回述べていたrdfs:ConstraintResourceおよびrdfs:ConstraintProperty の構成を省略している。オリジナルのRDFのデザインの特徴に関する実装者のフィードバックに応じて、新しいプロパティ、rdfs:member をRDFコンテナボキャブラリに追加した。
本書のコメントは公的メーリングリストwww-rdf-comments@w3.orgへお願いしたい。 コメントの履歴はhttp://lists.w3.org/Archives/Public/www-rdf-comments/で参照できる。
W3Cワーキングドラフトを参考文献資料として使用したり、"進行中の作業"ではないとして引用することは不適切である。これは、進行中の作業であって、W3Cによる保証を示してもいないし、W3Cの総意でもない。現在のW3C勧告とその他の技術ドキュメントのリストはhttp://www.w3.org/TR/を参照されたい。
Resource Description Framework (RDF) は、指定されたプロパティと値に関するリソース間の関係を述べるための簡単なモデルを定義している。RDFのプロパティはリソースの属性とみなされることがあり、その点では、従来の属性と値のペアに相当する。また、RDFのプロパティリソース間の関係も表現する。従って、RDFデータモデルはそれ自体、エンティティと関係の図と似ている。しかし、RDFデータはそれ自体、こういったプロパティを記述するメカニズムを提供しないし、プロパティとその他のリソース間の関係を記述するメカニズムも提供しない。そのメカニズムを提供するのは本仕様書の役割である。RDFボキャブラリ記述言語はその他のクラスやプロパティを記述するために使用できるクラスやプロパティを定義している。
リソース記述コミュニティにはある種のリソースについてある事柄を述べる機能が必要である。例えば、参考書目のリソースを記述するためには、"著者"、"タイトル"そして、"表題"などを含む記述的な属性が共通である。デジタル証明書の場合、"検査合計(checksum)" および"認証(authorization)"が必要となる場合が多い。 これらのプロパティ(属性)とそれに対応するセマンティックの宣言はRDFスキーマとして、RDFのコンテキストに定義されている。スキーマは、リソースのプロパティ(例えば、タイトルや著者、表題、サイズ、色、など)だけでなく、記述されているリソースの種類(例えば、本やWebページ、人、会社など)も定義できる。
本文書は"著者"など、記述要素のボキャブラリを規定してはいないが、そういった要素を定義したり、一緒に使用することのできるリソースのクラスを指定したり、クラスと関係の考えられる組み合わせを制限したり、その制限の違反を検知するのに役立つのに必要なメカニズムを明記する。 従って、本書はボキャブラリ記述言語を定義する。
RDFのボキャブラリ記述言語RDFスキーマは、基本のRDF情報モデル(リソースとプロパティを記述するグラフ構造)の問題として特定されている。RDFボキャブラリはすべて、基本的で共通の構造をいくつか共有する。つまり、 RDFボキャブラリはリソースのクラスとリソース間の関係の種類を記述する。この共通性によって、機械が処理できる言語をより細かにして混合させることが可能となり、[EXTWEB] の必要性を取り扱って、独立したコミュニティによって分散した方法で管理できる複数のボキャブラリを使用できるステートメントを有するメタデータを作成する。
ボキャブラリ記述へのRDFスキーマのアプローチによって、ボキャブラリ設計者達はWWWにクラスやプロパティの記述を表現できる。例えば、クラスとプロパティと値が組み合わせが供に意味あるように使用できる方法で記述することによって可能である。
以降ではそのアプローチの詳細について紹介する。クラスとプロパティを記述するためのRDFスキーマボキャブラリの使用法とアプリケーションレベルのデータへの接続を示して、簡単な例を図表に記述する。
本例では、RDFを使用して実世界のもの{人(people)、文書(document)}や、それらが該当するクラス(eg:Document, eg:Person)、そして、これらのクラスのメンバーを関連付けるのに使用できるプロパティを説明する。-- この例では、プロパティeg:author。RDFスキーマを使用することで、RDFプロパティ(eg:authorなど)とリソースのクラスとの関係を記述することができる。本例では、RDFスキーマを使用してeg:authorプロパティが文書と人を関連付けていることを述べる。また、すべての文書は仕事であり、すべての人は代理人であるとみなされていることを示す。本例の拡張はeg:authorと、よく知られていて、より一般的なDublin Core ([DCMI])) プロパティdc:creatorとの関係を示すかもしれない。
編集上の覚書: 本例は以前に使用した例を変更して差し替えている新しい資料である。現在のドラフトではまだこの例を完全に述べてはいないし、ここで示しているスキーマやインスタンスデータを元にしたRDF/XMLテスト事例を含んでもいない。
本仕様書で定義している言語は、アプリケーション専用のRDFボキャブラリを定義する(プロパティを含む)その他のRDFリソースのプロパティを記述するために使用できるRDFリソースの集まりで構成されている。コアボキャブラリは、ここで正式には'rdfs'というネーム空間に定義されており、URI参照 http://www.w3.org/2000/01/rdf-schema#によって識別されている。また、本仕様書は、接頭語'rdf'を使用してコアRDFネーム空間 http://www.w3.org/1999/02/22-rdf-syntax-ns#を参照する。
編集上の覚書: 本ワーキングドラフトはネーム空間URIの使用を変更する計画もなければ、ボキャブラリ記述言語のネーム空間URIを示すために従来から使用されている接頭語'rdfs'に変更を加える計画もない。ワーキンググループは、新しいRDFSネーム空間URIへの移行に関する長所と欠点を実装者から求める。 実装者は本仕様書のrdfs:domainおよび rdfs:rangeがRDFスキーマ仕様書の初期の版とは異なることに注意が必要である。
RDFスキーマクラスおよびプロパティシステムは、Javaなどのオブジェクト指向のプログラミング言語のタイプシステムに類似している。しかし、RDFスキーマは、クラスのインスタンスが持っているプロパティに関してクラスを定義するのではなく、プロパティが適用しているリソースのクラスに関してプロパティを定義するといった理由から、RDFはオブジェクト指向のプログラミング言語のタイプシステムとは違いがある。これは本仕様書で記述しているrdfs:domainメカニズムとrdfs:rangeメカニズムの役割である。例えば、eg:authorプロパティを定義してeg:Documentのドメインとeg:Personの範囲を定義できるかもしれないが、従来のOOシステムは通常、タイプ eg:Personのeg:authorという属性でクラスeg:Bookを定義するかもしれない。RDFの方法を使用して、続けてDocumentのドメイン、または、eg:Personの範囲でさらなるプロパティを定義することが容易になる。これは、これらのクラスのオリジナルの記述を再定義する必要なしにおこなう事ができる。RDFのプロパティを中心とした方法の一つの長所は、Web [BERNERS-LEE98]のアーキテクチュアな原則の一つである現行のリソースについて言いたいことを誰もが何でも非常に簡単に言えるということである。
本仕様書では、RDFデータのプロパティとクラスの重要な使用法を記述するためのRDFボキャブラリを紹介する。例えば、RDFスキーマはいくつかのプロパティに適切な値の種類に関する制約や、そういったプロパティの原因となるのが当然であるクラスに関しての制約を記述するだろう。
RDFスキーマはこの情報を記述するためのメカニズムを提供するが、どこで、そしてどのようにアプリケーションがそのメカニズムを使用するかは述べない。 例えば、RDFスキーマは クラスPersonのメンバであるリソースを述べるためにauthor プロパティが使用されることを主張できるが、そのクラス情報を処理するときにアプリケーションがどこでそして、どのように動作するのかは述べない。違うアプリケーションがこの情報を異なる方法で使用するだろう。例えば、データチェッキングツールはRDFを使用していくつかのデータセットのエラー発見を支援し、対話式のエディタは適切な値を提案し、推論的なアプリケーションはRDFを使用してインスタンスデータからの詳細情報を推論するかもしれない。
RDFスキーマは、個々に開発された複数のスキーマからのボキャブラリ項目間の関係を記述することができる。URI参照はWebのクラスとプロパティを識別するために使用されるので、他のネーム空間で定義されているクラスを値とするdomain、または、rangeを持つ新しいプロパティを作成することができる。
本仕様書ではRDFクラスとプロパティの意味を表現するのに便利なボキャブラリ記述のありうる形すべてを列挙しようとはしないが、RDFボキャブラリ記述の方針はクラスやプロパティの意味を示す技術が数多くあることを認識し、RDF/XMLを使用してRDFのクラスとプロパティの特性を記述するための規定を確立することである。
より豊富なスキーマや、DAML+OILなどのオントロジー言語、W3C WebOnt言語、推論規則言語、そして、その他のフォーマリズム(例えば、一時的な論理など)は各々Webのデータについての重要な総括を得る機能に貢献している。 RDFボキャブラリの設計者は、この一般的な方法を共有するより豊富なボキャブラリ記述言語を模索しながら、基本のRDFスキーマ1.0の機能を使用してセマンティックWebアプリケーションを作成し導入することができる。
以下の表では、RDFで始まるクラスとプロパティでRDFモデルおよび構文仕様書(RDF Model and Syntax specification )で初めに定義したボキャブラリを一緒に引用し、基本のボキャブラリ概要を紹介する。クラスやプロパティは以下に詳しく述べる。コアクラスとプロパティはRDFのボキャブラリ記述言語の機構を定義する。ユーティリティーとコンテナボキャブラリは、集合とRDFステートメントを記述しWWWにRDFボキャブラリ記述を導入するためのさらなるサポートを提供する。
| クラス名 | コメント |
|---|---|
| rdfs:Resource | クラスResource |
| rdfs:Class | Classの概念 |
| rdf:Property | プロパティの概念 |
| rdfs:Literal |
クラスrdfs:Literalは原文の文字列などリテラルな値のセットを表現する。
|
| rdf:Statement | RDFステートメントのクラス |
| rdfs:Container | これはセットContainerを表現する。 |
| rdf:Bag | 無秩序の集合 |
| rdf:Seq | 秩序のある集合 |
| rdf:Alt | 選択肢(alternative)の集合。 |
| rdfs:ContainerMembershipProperty | rdf:_1, rdf:_2, ...などコンテナメンバーシッププロパティ、これはすべて'メンバー(member)'のサブプロパティである。 |
| プロパティ名 | コメント | ドメイン | 範囲 |
|---|---|---|---|
| rdfs:isDefinedBy | リソースのネーム空間を示す。 | rdfs:Resource | rdfs:Resource |
| rdf:subject | RDFステートメントのサブジェクト。 | rdf:Statement | rdfs:Resource |
| rdf:predicate | RDFステートメントの述部。 | rdf:Statement | rdf:Property |
| rdf:object | RDFステートメントのオブジェクト。 | rdf:Statement | not specified |
| rdf:type | クラスのメンバーシップを示す。 | rdfs:Resource | rdfs:Class |
| rdfs:member | コンテナのメンバー。 | rdfs:Container | not specified |
| rdfs:subClassOf | クラスのメンバーシップを示す。 | rdfs:Class | rdfs:Class |
| rdf:value | プロパティ値が構造化されたリソースの場合、プロパティの主要な値(通常は文字列)を識別する。 | rdfs:Resource | not specified |
| rdfs:subPropertyOf | プロパティの特殊化を示す。 | rdf:Property | rdf:Property |
| rdfs:comment | 記述用にこれを使用すること。 | rdfs:Resource | rdfs:Literal |
| rdfs:label | リソース名の人間が読むことのできるバージョンを提供する。 | rdfs:Resource | rdfs:Literal |
| rdfs:domain | プロパティタイプのドメインクラス。 | rdf:Property | rdfs:Class |
| rdfs:range | プロパティタイプの範囲のクラス。 | rdf:Property | rdfs:Class |
| rdfs:seeAlso | サブジェクトリソースについての情報を提供するリソース。 | rdfs:Resource | rdfs:Resource |
RDFで記述しているものはすべてリソースといい、クラスrdfs:Resourceのメンバーである。
クラスrdfs:LiteralはRDFグラフ構造で、'literals'という自己を意味するノードを表現する。原文の文字列などのプロパティ値はRDFリテラルの例である。
これはリソースのタイプやカテゴリの一般的な概念に相当する。
RDFクラスメンバーシップを使用してリソースのタイプやプロパティを表現する。別個のリソースのままではあるが、二つのクラスはたまたま同じメンバーを所有していることがある。
rdf:PropertyはRDFプロパティであるリソースを表現する。
rdf:typeプロパティはリソースはクラスのメンバーであるということを示す。
リソースにプロパティ値が特定のクラスであるrdf:typeプロパティがある場合、そのリソースは指定されたクラスのインスタンスであると言える。
rdf:typeプロパティの値はいつもrdfs:Classのインスタンスであるプロパティである。rdfs:Classとして知られているリソースは、それ自身、rdf:type rdfs:Classのリソースである。
rdfs:subClassOfプロパティはリソースのクラス間の特殊化関係を表現する。 rdfs:subClassOfプロパティは移行する。
プロパティrdfs:subPropertyOf は、一つのプロパティが他のものの特殊化であるということを指定するために使用されるrdf:Propertyのインスタンスである。
サブプロパティの階層を使用して範囲とドメインの制約の階層を表現できる。RDFプロパティに適用するrdfs:rangeプロパティとrdfs:domainプロパティは各々のサブプロパティにも適用する。
編集上の覚書: 用語'スーパープロパティ'は あるプロパティと、rdfs:subPropertyOfであるより一般的なプロパティとの関係を示すために使用されることがある。このプロパティ(そしてrdfs:subClassOfーーこれは'スーパークラス'と呼んだ方がいいかもしれない)の名前は、やや紛らわしい。現在、ワーキンググループはこれらの名前を変えたいとは思わないが、変更した場合の長所と短所に関してのフィードバックを実装者から求める。
プロパティの値がメンバーであるクラス(または複数のクラス)を示すために使用される rdfs:Propertyのインスタンス。
rdfs:rangeプロパティの値はいつもClassである。rdfs:rangeプロパティはそれ自身、rdfs:rangeのrdfs:rangeはクラスrdfs:Classである、ということを表現するために使用できる。範囲プロパティの値であるリソースはいずれもクラスになるということを示す。
rdfs:rangeプロパティはプロパティに適用されるのみである。 これは、rdfs:domainプロパティを使用してRDFで表現することもできる。rdfs:rangeのrdfs:domainはクラスrdf:Propertyである。これは、rangeプロパティががそれら自身プロパティであるリソースに当てはまることを示す。
指示されたプロパティを所有するリソースをメンバーとして持つクラスを示すために使用されるrdfs:Propertyのインスタンス。
rdfs:domainのrdfs:domainはクラス rdf:Propertyである。これは、ドメインプロパティが、プロパティであるリソースで使用されていることを示す。
rdfs:domainのrdfs:rangeはクラス rdfs:Classである。これは、ドメインプロパティの値であるリソースはいずれもクラスであることを示す。
編集上の覚書:これらの定義はRDFスキーマのRDFモデル論理[RDFMT] の形式化と一致するが、rdfs:rangeとrdfs:domainを充分には説明していない。特に、複数のドメインと範囲プロパティの使用法はRDF/XMLのテスト事例として表すべきであるし、上記で紹介している例と一体化すべきである。
サブプロパティの階層を使用して範囲とドメインの制約の階層を表現することができる。 RDFプロパティに適用するrdfs:rangeプロパティおよび rdfs:domainプロパティはすべて、各々のサブプロパティにも適用する。
rdfs:labelプロパティはリソース名の人間が読むことのできるバージョンを提供するために使用される。
rdfs:commentプロパティは リソースの人間が読むことができる記述を提供するために使用される。
原文のコメントはRDFクラスとプロパティの意味を明確にするのに役立つ。こういった袋字の文書は正式な技術(オントロジーや規則言語)と非公式のもの(テスト事例のような散文的な文書)の両方の使用を補完する。様々な文書の形式を組み合わせてRDFスキーマに記述されているクラスやプロパティの意図する意味を表すことができる。
スキーマの多言語の文書はxml:lang言語タグ付け機能を使用することで構文レベルでサポートされる。RDFスキーマはRDFグラフとして表現されるため、他のネーム空間で定義されているボキャブラリを使用してより豊かな文書を提供することができる。
RDFは、コンテナやRDFステートメントを表現し、RDFボキャブラリ記述をWWWに導入するための構造を含む更なるクラスやプロパティを多数定義する。
rdfs:Containerクラスとは、rdf:Bag, rdf:Seq, rdf:AltなどのようなRDFコンテナクラスのスーパークラスのことである。
rdf:BagクラスはRDFの'Bag'コンテナ構造を表現し、rdfs:Containerのサブクラスである。
rdf:SeqクラスはRDFの'Sequence'コンテナ構造を表現し、rdfs:Containerのサブクラスである。
rdf:SeqクラスはRDFの'Alt'コンテナ構造を表現し、rdfs:Containerのサブクラスである。
rdfs:ContainerMembershipPropertyクラスには、メンバーとしてBagコンテナ、Seqコンテナ、そして、Altコンテナのメンバーシップを表すために使用できるプロパティrdfs:memberと、プロパティ_1, _2, _3 ... がある。 rdfs:ContainerMembershipProperty はrdf:Propertyのサブクラスである。各コンテナのメンバーシッププロパティはrdfs:memberプロパティの rdfs:subPropertyOfである。
rdfs:memberプロパティはコンテナメンバーシップのサブプロパティであり、 クラスrdfs:ContainerMembershipPropertyのメンバーである。
(つまり、番号がつけられている各コンテナメンバーシッププロパティにはプロパティrdfs:memberへのrdfs:subPropertyOf関係がある).
編集上の覚書: rdfs:memberが rdfs:ContainerMembershipPropertyのメンバーであるかどうかははっきりしない。これはワーキンググループがはっきりさせる必要がある。
以下のユーティリティクラスおよびプロパティはRDFコアネーム空間で定義されている。
プロパティrdfs:seeAlsoは、サブジェクトリソースについての詳細情報を提供するリソースを示すために使用される。
プロパティrdfs:isDefinedByはrdfs:seeAlsoのサブプロパティであり、サブジェクトリソースを定義するリソースである。rdfs:seeAlsoと同様に、このプロパティはrdfs:Resourceのインスタンスに適用できるし、値として、rdfs:Resourceを持つことができる。
rdf:valueプロパティは、プロパティ値が構造化されたリソースである場合、プロパティの主要な値(通常は文字列)を識別する。
rdf:Statementクラスはリソースのプロパティについてのステートメントを表現する。
rdf:Statement はプロパティrdf:predicate、 rdf:subject、そして、rdf:objectのドメインである。
異なる個々のrdf:Statementインスタンスには、たまたまその述部プロパティ、主題プロパティ、そしてオブジェクトプロパティに対して同じ値がある。
RDFステートメントのサブジェクトである。
rdf:subjectプロパティはいくつかのRDFステートメントのサブジェクトであるリソースを表す。
rdf:subjectのrdfs:domainは、rdf:Statementであり、rdfs:range は rdfs:Resourceである。このプロパティは、RDFステートメントによって記述されているリソースを指定するために使用できる。
RDFステートメントの述部である。
rdf:predicateのrdfs:domainは rdf:Statementであり、 rdfs:rangeはrdfs:Resourceである。このプロパティは、RDFステートメントで使用されている述部を指定するために使用できる。
RDFステートメントのオブジェクトである。
rdf:objectのrdfs:domainは rdf:Statementである。rdfs:objectの値にはLiteralやResourceを含むことができるので、このプロパティのために範囲は定義されていない。このプロパティはRDFステートメントのオブジェクトを指定するために使用できる。
RDFスキーマデザインは、当初、RDFスキーマワーキンググループ(1997-2000)によって作成された。現在の仕様書は当初のデザインを大幅に編集し、説明している。また、これはRDFコアワーキンググループのメンバーの努力の賜物であり、 RDF関連グループの多くのメンバーからのフィードバックを完成させたものである。
IBM社のDavid Singerは、この仕様の開発の大部分を通じて、当初のRDFスキーマグループの議長であった。我々はDavidの尽力に対して感謝し、この努力において、彼と我々へのIBM社の支援に対して感謝する。同じく、この仕様より以前のバージョンの編集の仕事をしたAndrew Laymanに特別に感謝する。
最初のRDFワーキンググループは以下である。
Nick Arnett (Verity), Dan Brickley (ILRT / University of Bristol), Walter Chang (Adobe), Sailesh Chutani (Oracle), Ron Daniel (DATAFUSION), Charles Frankston (Microsoft), Joe Lapp (webMethods Inc.), Patrick Gannon (CommerceNet), RV Guha (Epinions, previously of Netscape Communications), Tom Hill (Apple Computer), Renato Iannella (DSTC), Sandeep Jain (Oracle), Kevin Jones, (InterMind), Emiko Kezuka (Digital Vision Laboratories), Ora Lassila (Nokia Research Center), Andrew Layman (Microsoft), John McCarthy (Lawrence Berkeley National Laboratory), Michael Mealling (Network Solutions), Norbert Mikula (DataChannel), Eric Miller (OCLC), Frank Olken (Lawrence Berkeley National Laboratory), Sri Raghavan (Digital/Compaq), Lisa Rein (webMethods Inc.), Tsuyoshi Sakata (Digital Vision Laboratories), Leon Shklar (Pencom Web Works), David Singer (IBM), Wei (William) Song (SISU), Neel Sundaresan (IBM), Ralph Swick (W3C), Naohiko Uramoto (IBM), Charles Wicksteed (Reuters Ltd.), Misha Wolf (Reuters Ltd.)
図1では、ドメインと範囲プロパティの使用を示してどのようにコアRDFプロパティが使用されているかを説明している。この図はここで、RDFグラフ構造のノードとarc表現として表示されている。ボールド 枠がついているノードはrdfs:Classのインスタンスである。

編集上の覚書: 現在のワーキングドラフトでは、以前にこの仕様書に挿入していた図をいくつか省略している。以降の改定では、RDFスキーマクラスとプロパティの階層の図表イラストを増やすだろう。また、rdf:valueやrdf:member、そして、その他のプロパティを省略しているので、現在の図表は未完成であることに注意されたい。
RDFコアボキャブラリのRDF記述は、ここではRDF/XMLシリアライゼーション構文に提供されている。RDFスキーマボキャブラリのネーム空間URIは本仕様書の将来の版では変更される可能性があることに注意されたい。このRDFスキーマには、RDFコアスキーマボキャブラリで導入したリソースのための定義だけでなく、1999年のRDFモデルおよび構文仕様書(1999 RDF Model and Syntax specification)で最初に紹介されたRDFリソースを記述するステートメントも含んでいる。
また、このRDF/XMLは、RDF/XML文書(rdfs-namespace.xml)とは別に利用できる。それは、現在W3C RDFスキーマネーム空間URIで公開されてはいない。
|
本仕様書の以下の編集上の問題は未解決である。本仕様書とその他RDFコア仕様書に関する技術上の問題は RDF Issue Tracking 文書に追跡記録されている。