Account Auto-DiscoveryとTrackBack Auto-Discoveryを合わせるの記事を書いた時、既に以下の2記事で同様の試みがされていたのですが、そこに書かれていたRDFについては少し気になるところがあったため、改めて自分なりに書いてみることにしたのでした。
以下、その気になったところについて述べてみます。
のりさんが書かれていたRDFには、TrackBack Auto-Discovery用のRDFには必須ではない、dc:creator
とdc:date
の値が書かれていました。ソースの要点を記すとこのような感じ:
<rdf:Description
rdf:about="http://diary.noasobi.net/2005/08/diary_050810a.html"
...
dc:creator="のり"
dc:date="2005-08-10T00:00:00+09:00">
<foaf:maker rdf:parseType="Resource">
...
</foaf:maker>
</rdf:Description>
RDF/XMLとしては問題無いと思います。
ただ、dc:creator
とfoaf:maker
が別個に書かれていて、それぞれ関連が無いように見えるのが惜しい気がしたのでした。rdf:about
の値で示してあるところのリソースを作った人の名前を記述するのであれば、foaf:maker
が指すノードのプロパティとして記述した方がよさそうに思います。
というわけで、以下のようにすればいいのではと考えました。
<rdf:Description
rdf:about="http://diary.noasobi.net/2005/08/diary_050810a.html"
...>
<foaf:maker rdf:parseType="Resource">
<foaf:name>のり</foaf:name>
<foaf:holdsAccount>
...
</foaf:holdsAccount>
</foaf:maker>
</rdf:Description>
これもRDF/XMLとしては問題無い(筈)ですが、Account Auto-Discovery仕様の策定時には、「XHTMLにコメントしないで埋め込んだ時にそのメタデータがブラウザ等でレンダリングされないようにする」ということが考慮されていました(naoyaのはてなダイアリー - Accout Auto-Discovery 仕様修正案)。してみるとfoaf:name
の値は要素内容としてではなく属性値として記述した方がよさそうであり。
で、どう書けば属性値として書けるのものかと調べたところ、rdf:parseType="Resource"
により省略されていたノード要素を復活させて、
<rdf:Description
rdf:about="http://diary.noasobi.net/2005/08/diary_050810a.html"
...>
<foaf:maker>
<foaf:Person foaf:name="のり">
<foaf:holdsAccount>
...
</foaf:holdsAccount>
</foaf:Person>
</foaf:maker>
</rdf:Description>
……とすればよさそうです。
あと、おのひろきさんが書かれていたRDFについてなのですが、ソースの概要を書くとこんな感じになっていました。
<rdf:RDF ... >
<rdf:Description rdf:about="http://onohiroki.cycling.jp/"
... />
<foaf:maker rdf:parseType="Resource">
<foaf:holdsAccount>
...
</foaf:holdsAccount>
</foaf:maker>
</rdf:RDF>
rdf:Description
要素が空要素になっており、それと別にfoaf:maker
要素が独立して書かれているので、リソースのURIと作者との関連が外れた状態になっています。rdf:Description
要素でfoaf:maker
要素を囲うようにした方がよいように思います。
※ ちなみにこの記述だと、rdf:parseType
属性が書けない位置に書かれている、ということでパースエラーになるようです。
……といったことをここ最近考えていたのですが、自分自身RDFに関してはまだあまりよく知らない状態なので、間違いがありましたらご指摘頂けると有難いです。