weavin'

2005-08-190106

[][][] Multiple Accounts in Autodiscovery

昨日書こうと思っててすっかり忘れてたことを。はてなだけではなく、別のアカウント情報をAutodiscoveryにて埋め込む方法と、注意点についてです。

Account Autodiscoveryの仕様がまとまってはてなポイントを贈るなんてページができたのはいいんですが、複数のアカウントを記述する方法が書かれていないんですよ。これだとはてなの外にこの仕様が広がらないので、なんか面白くありません。というわけでここに書いてみます。

とりあえずソースをごらんくださいな。

<rdf:RDF
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:foaf="http://xmlns.com/foaf/0.1/">

<rdf:Description rdf:about="http://example.com/permalink">
  <foaf:maker rdf:parseType="Resource">

    <!-- ひとつめ -->
    <foaf:holdsAccount>
      <foaf:OnlineAccount foaf:accountName="kotastyle">
        <foaf:accountServiceHomepage rdf:resource="http://www.hatena.ne.jp/"/>
      </foaf:OnlineAccount>
    </foaf:holdsAccount>

    <!-- ふたつめ -->
    <foaf:holdsAccount>
      <foaf:OnlineAccount  foaf:accountName="kota">
        <foaf:accountServiceHomepage rdf:resource="http://example.com/"/>
      </foaf:OnlineAccount>
    </foaf:holdsAccount>

    <!-- みっつでもよっつでもいつつでも -->

  </foaf:maker>
</rdf:Description>
</rdf:RDF>

というわけで、複数のアカウント情報を記述する場合には、foaf:holdsAccountのブロックをアカウントの数だけfoaf:makerに用意しなければなりません。

「なんでふたつのfoaf:OnlineAccountを、一緒にひとつのfoaf:holdsAccountに入れられないのか」という疑問を持った方、するどいです。でもだめなんです、XML的には不思議じゃないんですが、RDF的に困るのです。

具体的な説明をすると混乱する人しか出ないような気がするので、ちょっとつっこんで理解したい方は、神崎先生の書かれた複数の知人を示すときの注意点をお読みください。文中のfoaf:knowsをfoaf:holdsAccountに、foaf:Personをfoaf:OnlineAccountに読み替えると、疑問への答えとなりますので。

というわけで、アカウントの数だけfoaf:holdsAccountを記述してください。Autodiscoveryを解析して実装する方々も、この点に関してはご注意を。

そうそう、先ほどの例は僕が一番スマートに思うものを書いたのですが、実はアカウントの数だけrdf:RDFなブロックを記述しても、意味的におかしいところはないのですよ(実装がどうなのかは知りませんが)。ただ、面倒なので複数のfoaf:holdsAccountでAutodiscoveryを記述するのをおすすめしたいです。

はてな側にもこれをどこかに書いておいて欲しいなとおもったり。

© 2004 kota.