肝心のRDF Semanticsの和訳がない

今日は時間がなかったのでドキュメントを読むのは中断.

RDF:概念および抽象構文」で述べられていた"含意"の意味や,
RDFの形式的な意味論についても知りたいのだが,RDF Semanticsの和訳が見つからない&ドキュメント長い…

OWLについてはまだ和訳ドキュメントがいくつかあるのでOWLから読むかな.

「RDF語彙記述言語1.0: RDFスキーマ」読了

RDF語彙記述言語1.0: RDFスキーマを読んだ.

RDFのドキュメント(入門,概念,構文,セマンティクス,語彙,テストケース)のうち語彙に当たる文書.

RDF語彙記述言語1.0: RDFスキーマ」の簡単なまとめ

クラス
クラス名 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コレクション
  • RDFコレクション=明示した以上の要素を持てないコレクション
  • Lispなどのリスト構造と同様に表現される
クラス名 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ステートメントの目的語を示す
ユーティリティ・プロパティ
プロパティ名 instance-of subproperty-of domain range 説明
rdfs:seeAlso rdf:Property - rdfs:Resource rdfs:Resource 主語に関する追加情報を示す
rdfs:isDefinedBy rdf:Property rdfs:seeAlso rdfs:Resource rdfs:Resource 主語の定義を示す
rdf:value rdf:Property - rdfs:Resource rdfs:Resource 構造化された値を示す

疑問点

  • rdfs:Resourceのスーパークラスは何か?(rdfs:Resourceか?)
  • rdf:nilスーパークラスを明示しないのは何故か?(rdfs:Resourceであると思うが)
  • rdfs:Resourceありき,に見えるもののrdfs:Classのインスタンスになっているのは何故?
    • もっとも根源的な語彙は何か?(今のところ,rdfs:Resourceとrdfs:Classが相互に定義し合うところが根源に見える)

「RDF:概念および抽象構文」読了

RDF(Resource Description Framework): 概念および抽象構文を読んだ.

RDF:概念および抽象構文の簡単なまとめ

  • RDFの設計目標
    • シンプルなデータ・モデルを持つこと
    • 形式意味論と証明可能な推論を持つこと
    • 拡張可能なURIベースの語彙の使用
    • XMLベースの構文の使用
    • XMLスキーマ・データ型の使用のサポート
    • 誰でもがあらゆる資源に関するステートメントを作成可能にすること
  • RDFの概念
    • グラフ・データ・モデル
      • 主語-述語-目的語のトリプルで表現.各トリプルはグラフ(ノード-アーク-ノードのリンク)で表現.
    • URIベースの語彙
    • 空白ノード
      • 空白ノードは固有の名前を持たないユニークなノード.
    • データ型
    • リテラル
    • XMLシリアル化構文
    • シンプルな事実の表現
    • 含意
      • RDF上での推論に関する概念.
      • 詳しくはRDF Semanticsを参照
  • RDFの抽象構文
    • RDFトリプル
      • 主語(URI参照 or 空白ノード)
      • 述語(URI参照)
      • 目的語(URI参照 or リテラル or 空白ノード)
      • URI参照,リテラル,空白ノードの集合は互いに素である.
    • RDFグラフ
      • RDFトリプルの集合
      • RDFグラフのノードの集合=グラフのトリプルの主語と目的語の集合
    • RDFグラフの同等性
      • 2つのグラフGとG'が等しいとは,2つのグラフのノード間に全単射Mが存在すること.
        1. Mは空白ノードを空白ノードにマッピングする
        2. グラフGの任意のリテラルlitに対して,M(lit)=lit
        3. グラフGの任意のURI参照uriに対して,M(uri)=uri
        4. トリプル(s, p, o)がGの要素ならば,かつそのときに限り,トリプル(M(s), p, M(o))はG'の要素

OWLガイド読了

OWLウェブ・オントロジー言語ガイドを読んだ.

前エントリで引用したRDFスキーマでできないことは,OWLの語彙で全て実現可能.

OWLガイドの簡単なまとめ

  • クラスの定義
    • owl:Class語彙でクラスを定義
      • すべての個体はowl:Thingのメンバ
  • プロパティの定義
  • プロパティの性質を定義
    • 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:equivalentClass語彙で2つのクラスが等価であることを定義
      • 2つのクラスが等価であるとき,それぞれのクラスは,全く同じインスタンスを持つ(集合の等価性)
    • owl:equivalentProperty語彙で2つのプロパティが等価であることを定義
    • owl:sameAs語彙で2つの個体が同一であることを定義
      • 2つの個体が同一であることは,owl:FunctionalPropertyから推論可能
    • owl:differentFrom語彙で2つの個体が互いに素であることを定義
      • owl:AllDifferent語彙でコレクションの要素が互いに素であることを定義
  • 複合クラスの定義
    • 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: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語彙を用いて,プロパティの定義域・値域を定義
  • クラスとプロパティの定義例(引用
    • ex:Book rdf:type rdfs:Class .
    • ex:author rdf:type rdf:Property .
    • ex:author rdfs:domain ex:Book .
  • 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つのクラスが互いに素である(すなわち、資源は両方のクラスのインスタンスではない)と述べる性能。

感想

  • rdfs:subClassOf, rdfs:subPropertyOf語彙は,単純に部分集合を表す語彙で十分ではないのか?
  • プロパティの定義域や値域まで定義できるとは思わなかった
  • RDFスキーマでカバーできない範囲に重要なことが多い
    • あるプロパティが推移的であるかどうかは"情報"か"知識"か?
      • "情報"ならばRDFで扱えるようにしたい
      • "知識"ならばOWLで扱えればよい
  • OWLやSPARQLといったRDFの上のレイヤーについても調べる必要がある

RDFの調査具合

RDF入門の4章(その他のRDFの性能)まで読了

RDFについて,わかったこと(確認含む)

  • (subject, predicate, object)の3項組で情報を表現
    • 3項組の要素は,URIrefノード,空白ノード,リテラルのいずれか
    • リテラルは,objectにしか出現しない
    • リテラルには型(整数,文字列,etc)を付けることができる(2.4 型付きリテラル
  • 集合や配列などのコンテナを表すことができる(4.1 RDFコンテナ)
  • 3項組そのものを要素とすることもできる(4.3 RDFの具体化)
    • ただし,あまりスマートな表記ではない

自分のやりたかったことは以下のURLにだいたいまとまっている気がする…
RDFとメタデータの相互運用