サイトマップを、サイト構造定義ファイルとして再定義してみました(仮)。とはいっても殆ど何も変わっていません。今までと同じようなXHTML文書です。しかしそれを実際のサイト構造に反映させる為には「自分だけが構造の意味を理解できる」ゆえに書ける「場当たり的なスクリプト」を書かざるを得ませんでした。
しかしそれでは駄目なのです。何故なら、将来的にスクリプトをメンテナンスするのが困難になるからです。
サイト構造定義ファイルとしてのサイトマップは純粋なメタデータですから、当然RDF/XMLで再定義できる筈です。また、このサイトの運営目的はリンクを見極めることですので、計算機に都合の良いリソースとリソースの関係の明示方法は調べておかねばなりません。
そういうわけで、RDF/XMLの勉強を始めました。え? XLink?
今の編集メンバが全員首になってBehavior Attributesが削除されたら、その時にでも見てみます。すみません。ちょっと、脱線してしまいました。
私の場合、RDF (英語)を、predicate(述語) object(目的語) subject(主語)のtripleとやらで考えていると頭が混乱してくるのですが、一般的なオブジェクトモデルで考えて、それぞれ、property、value、objectに脳内変換したら理解が進むようになりました(現在は脳内変換していません)。
まずは基本ということで、rdf:Descriptionを主語にした基本フォームで書いてみました。
語彙が貧弱なのでまだ殆ど実用性がありません。
過去の記事を読み返してみたら、rss:channel要素のrdf:about属性という記事の「追記」が欠けてしまっていることに気づきました。確かSjoerd Visscherさん (英語)とのメールのやり取りを書いたのだと思います。
確かここで私はどこぞのリソースの参照を促したのですが、良く覚えていません(再セットアップの際メールを紛失)。たしかchannelもfeedも比喩的表現であって、元は同じような意味であったというような文章ですが、とりあえずこの後返信が途絶えたことは確かです。私もなんだか自信がなくなってきたのでそれ以上追求するのは止めました。
改めてchannel要素をRDF的に見てみます。
channel要素には、そのプロパティとしての子要素(propertyElt)たち(link要素、title要素等)が存在します:
<channel rdf:about="http://foo.com/bar">
<title>baz</title>
<link>http://foo.com/bar</link>
</channel>
http://foo.com/bar という「リソース」は、linkという性質を持っていることになり、その値は、http://foo.com/bar という「文字列」です。なんだか訳がわかりませんが、link要素の定義を見てみます:
The URL to which an HTML rendering of the channel title will link, commonly the parent site's home or news page.
なんだかアレな定義ですが訳しますと、link要素は、channelのtitleのHTML整形結果がリンクするURLで、通常親サイトのホームかニュースページになるのだそうです。整形結果に依存した定義でちょっぴり虫唾が走りますが、この例の場合、RDF的な意味は(意訳すれば)大体次のようになります:
馬鹿馬鹿しくて力が抜けましたが、これで明確になりました。rss:channel要素のrdf:about属性には、そのRSSファイル自身のURIを記述しないと矛盾が発生します。http://foo.com/bar が要約対象のウェブサイトであったならば、title要素なんてありません。大目に見てウェブサイトをあるウェブページ(HTML文書)と見なしたとしても、整形されたtitle(title要素)はリンクを形成しません。linkという語彙をもうちょっとマシなもの、例えば、「リンクしているリソースのURL」に訂正しても駄目です。
自分自身にリンクしていることを叙述してどうするのでしょうか。
海外のRDFに明るそうな人物のRSS1.0 feedを調べてみました。
RDF/XML Syntax Specification (Revised) (英語)の著者のサイトのRSS 1.0 feedです。さてchannel要素のrdf:about属性は 。
やはりfeed自身のURIが記述されています。RDF/XML Syntax Specification (Revised) (英語)をこれからも安心して読むことが出来ます。