FoaF と Web of Trust

no extension

ここしばらく頭を悩ませていた懸案が解決しそうなので, 久しぶりに自サイトをメンテ。 前からやろうと思っていたが, 「公開履歴書」FoaF を改訂する。

「公開履歴書」は職務履歴をばっさり削除した。 いや, 禁則事項が多くて書けないのよ, 特にここ10年ほどの仕事は。 もともと「公開履歴書」はフリーになったときに飯(=お仕事)くれアピール用に作ったものだけど, 今はそれなりに仕事をもらえてるし, ネットでことさら実務を書き連ねても大した自慢にはならないような気がするし。 すっかりプロフもどきな内容になってしまったが, そこはそれということで。

FoaF については foaf:mbox_sha1sum 値を Vox の FoaF に合わせることにした。 んでもって rdfs:seeAlso で両者を関連付けている。 Vox の FoaF のコードはなかなかよくできている。 一昔前のキャラメルのオマケみたいなちゃっちいもんじゃなく, 必要な内容をちゃんと記述している。 他のブログサービスや SNS などは Vox の FoaF コードを参考にするとよいと思う。 (タグと foaf:interest は相性よさげである)

今回は更に Web of Trust の記述を FoaF に追加した。 実は「メタデータによる知人ネットワークの表現」を参考にして FoaF に PGP 署名をしていたんだけど

<rdf:Description rdf:about="">
 <wot:assurance rdf:resource="foaf.rdf.sig"/>
</rdf:Description>

という記述だけではどの鍵で署名したのかさっぱり分からない。 そこで以下のように記述を追加・変更してみた。

<rdf:Description rdf:about="/profile/foaf.rdf.xml">
  <wot:assurance>
    <wot:Endorsement rdf:about="/profile/foaf.rdf.xml.sig">
      <dc:title>Detached signature for FoaF</dc:title>
      <wot:endorser rdf:nodeID="KeyOfSpiegel" />
    </wot:Endorsement>
  </wot:assurance>
</rdf:Description>

<wot:PubKey rdf:nodeID="KeyOfSpiegel"> <wot:hex_id>49B41EA3</wot:hex_id> <wot:length>1024</wot:length> <wot:fingerprint>15D76C6DF4F249EC06B0D2264DA78E8A49B41EA3</wot:fingerprint> <wot:pubkeyAddress rdf:resource="/pubkeys/spiegel.sig2007.asc"/> <wot:identity> <wot:User> <foaf:nick>Spiegel</foaf:nick> <foaf:mbox_sha1sum>0f4e42f290be2a297b587c3f7703156c929be77c</foaf:mbox_sha1sum> </wot:User> </wot:identity> </wot:PubKey>

これならどの鍵で署名したかはっきり分かるし公開鍵のある場所も示すことができる。 また foaf:Person クラスの中で wot:hasKey プロパティを使うことによって人と公開鍵を関連付けることもできる。 更に, 今回は使わなかったが, wot:PubKey クラスの中で wot:signed プロパティを付加することで公開鍵同士の署名関係も記述することができる。

FoaF には他にも foaf:Document, foaf:Project, foaf:Group といったクラスがあるので, FoaF をベースに wot を組み合わせることで, 友達関係だけでなく, ネット上の様々なリソースを Web of Trust (信頼のウェブ)で結ぶことができる。 (「信頼のウェブ」はセマンティック・ウェブの最上位レイヤにある概念)

そうそう, RDF を「手書き」で変更した場合は RDF Validation Service 等を使ったコードの検証をお忘れなく。

セマンティック・ウェブのためのRDF OWL入門
神崎 正英著
森北出版 (2005.1)
通常2-3日以内に発送します。