Accout Auto-Discovery 仕様修正案

いくつかのフィードバックを受けて Hatena ID Auto-Discovery 改め Account Auto-Discovery の仕様を修正。

まず、

それはともかく、ふと思ったのは、FOAFに対する名前空間指定は無くて良いんだろうかということ。XMLにはそんなに詳しくないのでただの勘なのだが、FOAF内に記述するならともかくとしてXHTML内に記述する訳だから、デフォルトの名前空間FOAFにすることは出来ないんじゃないかなと考えた。

という名前空間に関する話。その通りなのでこれは即採用です。

あと TrackbackRDF を HTML/XHTML に埋め込む時に,XHTML にはコメントとしてではなく直接埋め込むことを想定していて,現状では DTD 違反になるからコメントでって話だったと思います.だから Trackback ping URI の埋め込みについての話では RDF の部分が XHTML としてレンダリングした時に値が表示されないように配慮されていました.ぢゃあ実際に XHTML に埋め込む時に,コメントとしてではなく,直接埋め込むかというと DTD との関係で今のところは直接埋め込むことをぼくはしないだろうけど.それで問題の部分は naoya であって,ここは書き方を変えたほうが良いでしょう.

XHTML にコメントしないで埋め込んだとき、そのメタデータがブラウザなどでレンダリングして「naoya」とか画面に出てしまうのを回避したほうが良いだろう、という話。これも確かにそうなので、アトリビュートを使う方向に変更してみます。

やむにやまれぬとして許容するとして(許容したくないけど)考えましょう: 要素内容をコメントアウトする前例に、<script>や<style>があります(XMLではなくて古いSGML構文ならこれを合理化することもできます)。この例では、特定要素の内部にあるコメントということで、囲っている要素タグが「誰が何のためにどんなフォーマットで何を書いているか」を伝えています。というわけで、特定囲みタグの内部に限定して内容をコメントアウト
して欲しいな。

これは正直もうちょっと吟味したいところ。囲みを追加したほうが良い、という論旨は理解できるのですが、FOAF にすることで少し仕様が膨れ上がっているところに、更にこの仕様を盛り込むのがいいかどうか。個人的にはアリだと思うのですが、他の方の意見も聞いてみたい。

ということで、上記三つを盛り込んで


<span class="embeddedMetainfo">
<!--
<rdf:RDF
xmlns:rdf="[]http://www.w3.org/1999/02/22-rdf-syntax-ns#[]"
xmlns:dc="[]http://purl.org/dc/elements/1.1/[]"
xmlns:foaf="[]http://xmlns.com/foaf/0.1/[]">
<rdf:Description rdf:about="[]http://www.hatena.ne.jp/info/perl/autodiscovery/test[]">
<dc:creator>
<foaf:Person>
<foaf:holdsAccount>
<foaf:OnlineAccount foaf:accountName="hatena">
<foaf:accountServiceHomepage rdf:resource="[]http://www.hatena.ne.jp/[]"/>
</foaf:OnlineAccount>
</foaf:holdsAccount>
</foaf:Person>
</dc:creator>
</rdf:Description>
</rdf:RDF>
[]-->[]
</span>

となりました。うーん、長い。でもしょうがないのかも。もう少し短縮できたらいいんだけど。

ちなみにこの中に含まれる値としてのデータは、

  • rdf:about にあるリソースURI
  • hatena というアカウント名
  • そのアカウント名のホームページURI

の三つです。どれも業者側がこのデータのために新たに定義する必要のないデータなので、配布自体の敷居はそれほど高くないと思います。AdSenseJavaScript コードのように、丸々コピペもしくは必要な箇所だけ変えることになるでしょうしね。

rdf:about の URI に関して、

rdf:aboutのところはpermalink毎に変えていかないといけないのか?かなり面倒だぞ。
複数個のアカウントを書いていこうとか思ったら、blogのような自動生成ではないホームページではほぼ無理。ツールの進歩も必要かな。

とあるのですが、permalink を埋められるのならそうした方がいいとは思いますが、そうでなければそのウェブサイトのトップページの URI でも問題はないのでないかなと思います。現実問題、rdf:about の値を parse の条件判定に使うことはないでしょうし、RDF のトリプルを考えても意味的には問題なさそうです。

逆に、blog や CMS のようなツールによる自動生成じゃないウェブサイトで、こういったメタデータを埋め込みたいと思うサイトがどれぐらいあるかってとこですよね。そんなになさそう。(笑)

ということで、新しい仕様に対応した Perl モジュールを以下においておきます。0.03 になりました。

microformats 的にメタデータを囲む、というところに関してコメントいただけると嬉しいです。