「RDF語彙記述言語1.0: RDFスキーマ」読了
RDFのドキュメント(入門,概念,構文,セマンティクス,語彙,テストケース)のうち語彙に当たる文書.
「RDF語彙記述言語1.0: RDFスキーマ」の簡単なまとめ
クラス
- クラス=リソースのグループ
- クラスのメンバーをクラスのインスタンスと呼ぶ
- クラスとそのインスタンスの集合を区別する(同じインスタンス集合を持つからといって同じクラスではない)
- クラスC,C'に対して,CがC'のサブクラスならば,任意のCのインスタンスは,C'のインスタンスである
クラス名 | instance-of | subclass-of | 説明 |
---|---|---|---|
rdfs:Resource | rdfs:Class | - | リソースのクラス,RDFのすべての語彙のスーパークラス |
rdfs:Class | rdfs:Class | rdfs:Resource | クラスのクラス |
rdfs:Literal | rdfs:Class | rdfs:Resource | 文字列や整数などのリテラル値のクラス |
rdfs:Datatype | rdfs:Class | rdfs:Class | RDFデータ型のクラス |
rdf:XMLLiteral | rdfs:Datatype | rdfs:Literal | XMLリテラル値のクラス |
rdf:Property | rdfs:Class | rdfs:Resource | RDFプロパティのクラス |
プロパティ
- プロパティ=主語リソースと目的語リソースとの関係
- プロパティP,P'に対して,PがP'のサブプロパティならば,Pによって関連付けられるすべてのリソースの対は,P'によっても関連付けられている
プロパティ名 | instance-of | domain | range | 説明 |
---|---|---|---|---|
rdfs:range | rdf:Property | rdf:Property | rdfs:Class | 主語プロパティの値域 |
rdfs:domain | rdf:Property | rdf:Property | rdfs:Class | 主語プロパティの定義域 |
rdf:type | rdf:Property | rdfs:Resource | rdfs:Class | 主語は目的語クラスのインスタンス |
rdfs:subClassOf | rdf:Property | rdfs:Class | rdfs:Class | 主語は目的語クラスのサブクラス |
rdfs:subPropertyOf | rdf:Property | rdf:Property | rdf:Property | 主語は目的語プロパティのサブプロパティ |
rdfs:label | rdf:Property | rdfs:Resource | rdfs:Literal | 人間が読める(human-readable)主語の名前 |
rdfs:comment | rdf:Property | rdfs:Resource | rdfs:Literal | 主語の説明 |
コンテナ
- RDFコンテナ=コレクションを表現するリソース
- 1つのコンテナ内に同じ資源が複数回出現することができる
- コンテナは,そのコンテナ自身を含むことができる
- RDFコンテナは,明示していない要素が含まれる可能性がある
クラス名 | instance-of | subclass-of | 説明 |
---|---|---|---|
rdfs:Container | rdfs:Class | rdfs:Resource | RDFコンテナクラス(Bag,Seq,Alt)のスーパークラス |
rdf:Bag | rdfs:Class | rdfs:Container | 順不同コンテナのクラス |
rdf:Seq | rdfs:Class | rdfs:Container | 順序付きコンテナのクラス |
rdf:Alt | rdfs:Class | rdfs:Container | 代替コンテナのクラス |
rdfs:ContainerMembershipProperty | rdfs:Class | rdf:Property | rdf:_1,rdf:_2,...などのコンテナ・メンバーシップ・プロパティのクラス |
プロパティ名 | instance-of | subproperty-of | domain | range | 説明 |
---|---|---|---|---|---|
rdfs:member | rdf:Property | - | rdfs:Resource | rdfs:Resource | 主語リソースのメンバを示す |
rdf:_1, rdf:2, ... | rdfs:ContainerMembershipProperty | rdfs:member | rdfs:Container | rdfs:Resource | コンテナ・メンバーシップ・プロパティ |
RDFコレクション
クラス名 | instance-of | subclass-of | 説明 |
---|---|---|---|
rdf:List | rdfs:Class | rdfs:Resource | RDFリストのクラス |
rdf:nil | rdf:List | - | 空リスト |
プロパティ名 | instance-of | domain | range | 説明 |
---|---|---|---|---|
rdf:first | rdf:Property | rdf:List | rdfs:Resource | 主語RDFリストの最初の項目 |
rdf:rest | rdf:Property | rdf:List | rdf:List | 主語RDFリストの2番目以降の項目(のRDFリスト) |
具体化語彙
クラス名 | instance-of | subclass-of | 説明 |
---|---|---|---|
rdf:Statement | rdfs:Class | rdfs:Resource | RDFステートメントのクラス |
プロパティ名 | instance-of | domain | range | 説明 |
---|---|---|---|---|
rdf:subject | rdf:Property | rdfs:Statement | rdfs:Resource | 主語RDFステートメントの主語を示す |
rdf:predicate | rdf:Property | rdfs:Statement | rdfs:Resource | 主語RDFステートメントの述語を示す |
rdf:object | rdf:Property | rdfs:Statement | rdfs:Resource | 主語RDFステートメントの目的語を示す |
「RDF:概念および抽象構文」読了
OWLガイド読了
OWLウェブ・オントロジー言語ガイドを読んだ.
前エントリで引用したRDFスキーマでできないことは,OWLの語彙で全て実現可能.
OWLガイドの簡単なまとめ
- クラスの定義
- owl:Class語彙でクラスを定義
- すべての個体はowl:Thingのメンバ
- owl:Class語彙でクラスを定義
- プロパティの定義
- プロパティの性質を定義
- owl:TransitiveProperty語彙で推移的であると定義(P(x,y) and P(y,z) implies P(x,z))
- owl:SymmetricProperty語彙で対称的であると定義(P(x,y) iff P(y,x))
- owl:FunctionalProperty語彙で関数型であると定義(P(x,y) and P(x,z) implies y = z)
- owl:inverseOf語彙で逆関係であると定義(P1(x,y) iff P2(y,x))
- owl:InverseFunctionalProperty語彙で逆関数型であると定義(P(y,x) and P(z,x) implies y = z)
- プロパティの制約を定義
- owl:allValuesFrom, owl:someValuesFrom語彙で値の制約を定義
- プロパティの定義域,値域とは異なり,あるクラスにおけるプロパティの値の制約
- 例.WineクラスのhasMakerプロパティの値は,Wineryクラスである
- 一方で,CarクラスのhasMakerプロパティの値は,Companyクラスである
- プロパティの定義域,値域とは異なり,あるクラスにおけるプロパティの値の制約
- owl:cardinality語彙でカーディナリティー制約を定義
- あるクラスのあるプロパティの数の制約
- 例.Wineクラスは,必ず1つのhasMakerを持つ
- owl:minCardinality, owl:maxCardinality語彙でカーディナリティーの範囲を定義できる
- あるクラスのあるプロパティの数の制約
- owl:hasValue語彙で特定のプロパティ値を定義
- owl:allValuesFrom, owl:someValuesFrom語彙で値の制約を定義
- オントロジーのマッピング
- owl:equivalentClass語彙で2つのクラスが等価であることを定義
- 2つのクラスが等価であるとき,それぞれのクラスは,全く同じインスタンスを持つ(集合の等価性)
- owl:equivalentProperty語彙で2つのプロパティが等価であることを定義
- owl:sameAs語彙で2つの個体が同一であることを定義
- 2つの個体が同一であることは,owl:FunctionalPropertyから推論可能
- owl:differentFrom語彙で2つの個体が互いに素であることを定義
- owl:AllDifferent語彙でコレクションの要素が互いに素であることを定義
- owl:equivalentClass語彙で2つのクラスが等価であることを定義
- 複合クラスの定義
- owl:intersectionOf語彙で積集合を用いてクラスを定義
- 例.WhiteWineクラスは,WineクラスとhasColorプロパティがWhiteであるクラスの積集合である
- owl:unionOf語彙で和集合を用いてクラスを定義
- 例.Fruitクラスは,SweetFruitクラスとNonSweetFruitクラスの和集合である
- owl:complementOf語彙で補集合を用いてクラスを定義
- あるクラスの補集合は,owl:Thingとあるクラスの差集合
- 通常,非常に大きな集合を表す
- owl:oneOf語彙でクラスのメンバをすべて列挙する
- 例.WhineColorクラスのインスタンスは,White/Red/Roseのいずれか(それ以外の色はない)
- owl:disjointWith語彙で2つのクラスが互いに素であることを定義
- owl:intersectionOf語彙で積集合を用いてクラスを定義
- バージョン付け
- owl:priorVersion語彙で以前のバージョンへのリンクを作成
- owl:backwardCompatibleWith,owl:incompatibleWith語彙で互換性を定義
- owl:DeprecatedClass,owl:DeprecatedProperty語彙で互換性がなくなる可能性を示唆
RDF Primer読了
RDF入門の5章以降を読んだ.
以下簡単なまとめ
- RDF語彙の定義
- rdfs:Class語彙を用いて,クラスを定義
- rdf:Property語彙を用いて,プロパティ(クラスの属性・性質)を定義
- rdfs:subClassOf, rdfs:subPropertyOf語彙を用いて,クラス・プロパティの上位/下位関係を定義
- rdfs:domain, rdfs:range語彙を用いて,プロパティの定義域・値域を定義
- クラスとプロパティの定義例(引用)
- RDFスキーマでカバーできないこと(引用)
- プロパティーにおけるカーディナリティー制約。例えば、人(Person)にはきっかり1人の実の父親がいるなど。
- あるプロパティー(ex:hasAncestorのような)が推移的であると指定すること。例えば、A ex:hasAncestor Bであり、B ex:hasAncestor Cである場合、A ex:hasAncestor Cであるなど。
- あるプロパティーが特定のクラスのインスタンスに対する一意の識別子(または、キー)であると指定すること。
- 2つの異なるクラス(異なるURIrefを持っている)が実際には同じクラスを表現していると指定すること。
- 2つの異なるインスタンス(異なるURIrefを持っている)が実際には同じ個体を表現していると指定すること。
- プロパティーが適用される資源のクラスに依存するプロパティーの値域やカーディナリティーにおける制約を指定すること。例えば、サッカー・チームではex:hasPlayersプロパティーには11の値がある一方で、バスケットボール・チームでは同じプロパティーに5つの値しかない、と言うことができるなど。
- 他のクラスの組み合わせ(例えば、和集合と積集合)で新しいクラスを記述したり、2つのクラスが互いに素である(すなわち、資源は両方のクラスのインスタンスではない)と述べる性能。
RDFの調査具合
RDFについて,わかったこと(確認含む)
- (subject, predicate, object)の3項組で情報を表現
- 集合や配列などのコンテナを表すことができる(4.1 RDFコンテナ)
- 3項組そのものを要素とすることもできる(4.3 RDFの具体化)
- ただし,あまりスマートな表記ではない
自分のやりたかったことは以下のURLにだいたいまとまっている気がする…
RDFとメタデータの相互運用