ウェブログや日記にキーワードをつけるのは広く行われているが、どうせならSemantic Bloggingのような階層アプローチがいいなと思って、試しに小さな独自シソーラスを定義してみた。こうすることで、FOAFという特定のジャンルでも、メタデータという大きな括りでも、記事を検索することが可能になる。
シソーラスの定義には、RDF Vocabularies for ThesauriのSKOS-Coreを用いた。クラス(Concept)をより定義の広い概念に結びつけるプロパティskos:broader
を始め、skos:narrower
、skos:related
などを使ってシンプルなシソーラスを容易に構築できるものだ(キーワードにWordnetのような既存シソーラスの利用を提案すると、その世界観に絡め取られるような気がするのか、かなり抵抗されることがあるのだが、こうやって自前のシソーラスをつくれば、そういう問題もない)。必要に応じて、RDF版WordnetにsubClassOfで関係づけておけば、ある程度の意味の共有も可能だろう。
(例)
<skos:Concept rdf:ID="foaf">
<rdfs:label>FOAF</rdfs:label>
<rdfs:comment>FOAF - Friend of a Friend Vocabulary</rdfs:comment>
<skos:broader
rdf:resource="#metadata"/>
</skos:Concept>
少々迷ったのが、クラスの名前付けだ。シソーラスの場合、各キーワード名やクラスのURIもその階層構造に合わせて決めるのが分かりやすそうに思える。たとえばSemantic Bloggingでは、階層を直接キーワードの名前に反映させている。
(例)
/technologies/ /technologies/blogging/ /technologies/blogging/communities/ /technologies/blogging/trackback/
キーワードに対しては、最後の例なら次のようにしてURIを対応させて、RDFでシソーラスを定義している。
http://jena.hpl.hp.com/topic
/technologies/blogging/trackback/
この方法の難点は、XMLの名前に'/'を含むことはできないので、(最後の/はないとしても)/technologies/blogging/trackback
をクラス名とすることができないところ。従って、このクラスURIを名前空間
+ ローカル名
という形で書くと次のようになってしまう。
(例)
http://jena.hpl.hp.com/topic/technologies/blogging/
+trackback
http://jena.hpl.hp.com/topic/technologies/
+blogging
RDFでこれらのキーワードをQNameとして表現しようとした場合、trackback
とblogging
は別の名前空間URIが必要になるわけだ。これはいまひとつ使い勝手が悪い。
クラスの階層を名前に持ち込まないというのもひとつの考え方だ。上の例ならば、URIをhttp://jena.hpl.hp.com/topic/
trackback
という具合にしておけば、名前空間はボキャブラリ全体でhttp://jena.hpl.hp.com/topic/
ひとつで済むことになる。もっともこの場合は、同じ名前をツリーの異なる場所で使うことはできなくなる。たとえば、book
を「読んだ本」と「自分で書き著す本」とで使い分けるといった階層キーワードのメリットは生かせない。
あれやこれや考えた結果、このメモ帖キーワードでは、ピリオド「.」を使って階層を区切ったクラス名を用いることにした。たとえばFOAFならweb.meta.foaf
というもので、「webカテゴリーのmetaカテゴリーに属するfoaf」であることを示している。上位カテゴリーのweb.meta
で検索すれば、web.meta.foaf
もweb.meta.rss
も引っかかるという仕掛けだ。
階層が名前に含まれていると、階層カテゴリー検索の実装が簡単というメリットもある。ただし、こうした名前は、あとで階層構造を変更しようとすると大変なことになるので、名前の重複の可能性がなく、設計の柔軟性を残しておきたいなら、クラス名は階層を含まないものにしておく方が賢明かも知れない。
- セマンティック・ウェブが目指さないもの (2004-02-24)
- RSSのtaxonomyモジュール (2004-03-02)
- ダブリン・コア・セミナー (2004-03-08)
- ウェブログのメタデータ (2004-04-16)