2. RDFの簡単なXML構文RDF は一般的に XML により表現されます。 XML によって RDF を表現するための構文を RDF/XML といいます。この章では RDF/XML について簡単に説明します。 RDFのデータモデル第1章でも出てきましたが、 RDF のデータモデルは基本的に次の3つの要素から構成されます。
グラフ表現このデータモデルを XML で記述するための簡単な例として、第1章でも使用した「"http://tech.4dd.co.jp"の作者は四次元太郎です」という関係を記述します。 RDF ではこのような関係をラベル付き有向グラフで表現します。
リソースを楕円、リテラルを長方形として、プロパティを矢印(アーク)、矢印の始点が主語、終点が値を表しています。また主語と目的語をノードと言います。目的語がリソースの場合、そのリソースを主語とした文を続けることができます。 XMLを使った文の構造次に上記の関係を XML の構造で記述します。 例1 <rdf:Description rdf:about="http://tech.4dd.co.jp"> <作者>四次元太郎</作者> </rdf:Description> このように、 Description要素が「文」を表し、 about属性が「主語」となるリソースの URI を表します。 Description要素の内容が「述語」の部分であるプロパティ(「作者」要素)と、「目的語」となる値(四次元太郎)を表しています。 例2
<?xml version="1.0" encoding="Shift_JIS"?>
<rdf:RDF
xmls:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmls:dc="http://purl.org/dc/elements/1.1/"
xml:lang="ja">
<rdf:Description rdf:about="http://tech.4dd.co.jp">
<dc:creator>四次元太郎</dc:creator>
</rdf:Description>
</rdf:RDF>
まず XML宣言 を行い、次に ルート要素RDF を定義します。 RDF要素 の中には名前空間宣言や xml:lang属性 などを含めることができます。 トリプルを組み合わせる、つまり「目的語」の部分をリテラル値ではなくリソースとし、他の文の「主語」とすることによって関係を構造化することが可能です。例えば次のラベルのような関係を記述します。ここで接頭辞vはvCardの名前空間を表すものとします。
例3
<?xml version="1.0" encoding="Shift_JIS"?>
<rdf:RDF
xmls:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmls:dc="http://purl.org/dc/elements/1.1/"
xml:lang="ja">
<rdf:Description rdf:about="http://tech.4dd.co.jp">
<dc:creator rdf:resource="urn:4dd:000"/>
</rdf:Description>
<rdf:Description rdf:about="urn:4dd:000">
<v:name>四次元太郎</v:name>
<v:mailAddress>yojigen@4dd.co.jp</v:mailAddress>
</rdf:Description>
</rdf:RDF>
と書くことで、「"http://tech.4dd.co.jp"の作者は"urn:4dd:000"という URI で表される人物で、その人物の名前は四次元太郎、メールアドレスは"yojigen@4dd.co.jp"です。」という関係を記述することができます。 コンテナモデルRDF では表現のためにいろいろなモデルが定義されています。そのひとつがこのコンテナモデルです。例えば作者が複数存在する場合や別表記があったりする場合、複数のリソースをまとめて表現する必要があります。このような用途のため、 RDF ではコンテナという3つのモデルが用意されています。
例として先ほどの"http://tech.4dd.co.jp"の作者が複数存在する場合の表記を示します。 例4
<?xml version="1.0" encoding="Shift_JIS"?>
<rdf:RDF
xmls:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmls:dc="http://purl.org/dc/elements/1.1/"
xml:lang="ja">
<rdf:Description rdf:about="http://tech.4dd.co.jp">
<dc:creator>
<rdf:Bag>
<rdf:li>四次元太郎</rdf:li>
<rdf:li>四次元次郎</rdf:li>
<rdf:li>四次元データ</rdf:li>
</rdf:Bag>
</dc:creator>
</rdf:Description>
</rdf:RDF>
rdf:liタグ の部分は rdf:_nタグ でも記述できます。 例5
<?xml version="1.0" encoding="Shift_JIS"?>
<rdf:RDF
xmls:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmls:dc="http://purl.org/dc/elements/1.1/"
xml:lang="ja">
<rdf:Description rdf:about="http://tech.4dd.co.jp">
<dc:creator>
<rdf:Bag>
<rdf:_1>四次元太郎</rdf:_1>
<rdf:_2>四次元次郎</rdf:_2>
<rdf:_3>四次元データ</rdf:_3>
</rdf:Bag>
</dc:creator>
</rdf:Description>
</rdf:RDF>
また英語表記などを書く場合、 Alt要素 を使用して次のように記述します。 例6
<?xml version="1.0" encoding="Shift_JIS"?>
<rdf:RDF
xmls:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmls:dc="http://purl.org/dc/elements/1.1/"
xml:lang="ja">
<rdf:Description rdf:about="http://tech.4dd.co.jp">
<dc:creator>
<rdf:Alt>
<rdf:li xml:lang="ja">四次元太郎</rdf:li>
<rdf:li xml:lang="en">Taro,Yojigen</rdf:li>
</rdf:Alt>
</dc:creator>
</rdf:Description>
</rdf:RDF>
例4の関係をグラフ表現すると次のようになります。
dc:creatorプロパティ には直接値が記述されていないため、目的語は匿名リソースとなります。コンテナモデルは rdf:typeプロパティ (RDF Schema参照)によって「 rdf:Bagタイプ のリソース」として表現されます。 文の具体化文を主語とする場合、その文をリソースとして具体化する必要があります。例えば「四次元太郎のテニスが人々を感動させる」という文を書きたいとします。
例7
<?xml version="1.0" encoding="Shift_JIS"?>
<rdf:RDF
xmls:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmls:dc="http://purl.org/dc/elements/1.1/"
xmls:4dd="http://tech.4dd.co.jp/yojigen"
xml:lang="ja">
<rdf:Statement rdf:ID="thisGame">
<rdf:subject rdf:resource="#Taro,Yojigen"/>
<rdf:predicate rdf:resource="#plays"/>
<rdf:object rdf:resource="#Tennis"/>
</rdf:Statement>
<rdf:Description rdf:about="#thisGame">
<4dd:impresses rdf:resource="#People"/>
</rdf:Description>
</rdf:RDF>
例からもわかるように、 rdf:subjectプロパティ には主語となるリソースを、 rdf:predicateプロパティ には述語となるリソースを、 rdf:objectプロパティ には目的語となるリソースを値として記述します。 |
![]()
![]()
|