2005-06-01
FOAFの情報を明確に記述しよう!
一昨年7月にFOAF語彙を用いて私のFOAF(変換版)を作成してから約2年、内容が殆ど当時のまま(foaf:interest
プロパティーに設定していた「福岡ダイエーホークス」を買収に伴い「福岡ソフトバンクホークス」に修正した程度の変更)なので、現状に合わせて更新(手直し)しました。
FOAFでは、対象となる人物をfoaf:Person
という要素で表し、プロパティー要素でその人物の情報を記述します。このプロパティー要素には、名前(foaf:name
)やメールアドレス(foaf:mbox
)、その人ホームページ(foaf:homepage
)情報などを表す語彙が各種用意されています。
例を簡単に示すと次のようになります。(注意:例の人物や情報は実際には存在しません。)
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xml:lang="ja">
<foaf:Person>
<foaf:mbox rdf:resource="mailto:yoshitune@genji.com"/>
<foaf:name>源義経</foaf:name>
<foaf:nick>九郎判官</foaf:nick>
<foaf:homepage rdf:resource="http://www.yositune.or.jp/"/>
<foaf:knows>
<foaf:Person>
<foaf:mbox_sha1sum>...</foaf:mbox_sha1sum>
<foaf:name>静</foaf:name>
</foaf:Person>
</foaf:knows>
<foaf:knows>
<foaf:Person>
<foaf:mbox_sha1sum>...</foaf:mbox_sha1sum>
<foaf:name>武蔵坊弁慶</foaf:name>
</foaf:Person>
</foaf:knows>
<foaf:knows>
<foaf:Person>
<foaf:mbox_sha1sum>...</foaf:mbox_sha1sum>
<foaf:name>源頼朝</foaf:name>
<foaf:homepage rdf:resource="http://www.genji.com/"/>
</foaf:Person>
</foaf:knows>
<foaf:knows>
<foaf:Person>
<foaf:mbox_sha1sum>...</foaf:mbox_sha1sum>
<foaf:name>平清盛</foaf:name>
<foaf:homepage rdf:resource="http://www.heike.com/"/>
</foaf:Person>
</foaf:knows>
</foaf:Person>
</rdf:RDF>
これは源義経の(架空の)FOAFであるが、次いで Eric Vitiello's 氏が提案する Relationship module を用いると、次の様に表すこともできます。
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:rel="http://purl.org/vocab/relationship/"
xml:lang="ja"
>
<foaf:Person>
<foaf:mbox rdf:resource="mailto:yoshitune@genji.com"/>
<foaf:name>源義経</foaf:name>
<foaf:nick>九郎判官</foaf:nick>
<foaf:homepage rdf:resource="http://www.yositune.or.jp/"/>
<rel:engagedTo>
<foaf:Person>
<foaf:mbox_sha1sum>...</foaf:mbox_sha1sum>
<foaf:name>萌</foaf:name>
<rel:parentOf>
<foaf:Person>
<foaf:name>河越太郎重頼</foaf:name>
</foaf:Person>
</rel:parentOf>
</foaf:Person>
</rel:engagedTo>
<rel:spouseOf>
<foaf:Person>
<foaf:mbox_sha1sum>...</foaf:mbox_sha1sum>
<foaf:name>静</foaf:name>
</foaf:Person>
</rel:spouseOf>
<rel:worksWith>
<foaf:Person>
<foaf:mbox_sha1sum>...</foaf:mbox_sha1sum>
<foaf:name>武蔵坊弁慶</foaf:name>
</foaf:Person>
</rel:worksWith>
<rel:siblingOf>
<foaf:Person>
<foaf:mbox_sha1sum>...</foaf:mbox_sha1sum>
<foaf:name>源頼朝</foaf:name>
<foaf:homepage rdf:resource="http://www.genji.com/"/>
</foaf:Person>
</rel:siblingOf>
<rel:parentOf>
<foaf:Person>
<foaf:mbox_sha1sum>...</foaf:mbox_sha1sum>
<foaf:name>平清盛</foaf:name>
<foaf:homepage rdf:resource="http://www.heike.com/"/>
</foaf:Person>
</rel:parentOf>
</foaf:Person>
</rdf:RDF>
このように Relationship module は、foaf:knows
を置き換えるだけで、人物の関係をより明らかに表すことができます。
ところで、私の古いFOAF(2003年7月に作成したもの)では、後述のように私自身を表すfoaf:Person
クラスのプロパティーのひとつとして、foaf:logo
プロパティーを用いて本サイトのサイトバナーを提示していました。これが今になって「おや?」と疑問を感じた訳なのですが、これって明らかに変ですよね?当時の私が何も疑問を抱かずにいたことがとても不思議に思います。
<foaf:Person xml:base="http://purl.org/net/osamurai/">
...
<foaf:nick>らいおさむ</foaf:nick>
<foaf:homepage rdf:resource="" dc:title="らいおさむのお屋敷"/>
<foaf:logo rdf:resource="images/rai-type1.png"
dc:title="「らいおさむのお屋敷」のサイトバナー"/>
...
</foaf:Person>
重複しますが、FOAFでは、対象となる人物をfoaf:Person
という要素で表し、プロパティー要素でその人物の情報を記述します。つまり、このfoaf:logo
によって表される情報(ここでは、サイトバナー)は、対象となる人物(私)のロゴマークではありません。よくあるタレントグッズ等に描かれるタレント本人を表す様なロゴであればこの記述で問題ないでしょうし、私が「否や、これは私自身を表すロゴだ!」と頑として言い張ればそうなのかも知れません。しかしこれは明らかにfoaf:homepage
を対象とした「らいおさむのお屋敷」のロゴ(サイトバナー)な訳ですから、正しくは次のように表す必要があるのです。
<foaf:Person xml:base="http://purl.org/net/osamurai/">
...
<foaf:nick>らいおさむ</foaf:nick>
<foaf:homepage>
<foaf:Document rdf:about="">
<dc:title>らいおさむのお屋敷</dc:title>
<foaf:logo rdf:resource="images/rai-type1.png"
dc:title="「らいおさむのお屋敷」のサイトバナー"/>
</foaf:Document>
</foaf:homepage>
...
</foaf:Person>
これで、サイトバナーはその対象がホームページであると、正しく表現できるでしょう。これは、サイトバナーの画像をfoaf:logo
だけではなくfoaf:depiction
などで示す場合、他のプロパティ記述でも同様のことでしょう。
さて、今回約2年ぶりに現状に合わせて私のFOAF(変換版)を手直ししました。この2年の間に新たに追加されたクラスやプロパティーもあるので、それらも活用して現状に合うように修正した訳なのですが・・・、内容の変化は殆どありません。foaf:knows
に至っては、身近な周囲にFOAFが(それどころか正しいマークアップすらも)浸透していないのが現実だし、ネットを通した交流の無い私では、これからも増えそうにありません。
ん~、ちょっぴり哀しい・・・。誰か連鎖して頂けませんか?(オイオイ)
注釈
私が公開している uri-parser.xsl
を使用すると、XML Base(xml:base
)を用いた資源の相対パスを解消するのに便利です。このXSLファイルは、ご自由にご利用頂けます。