January 30, 2004

publications FOAF

Publications Listblosxom で構築しているわけですが、blosxom の flavour 機能をつかって foaf:publications な FOAFをつくってみました。この柔軟性が blosxom のよさ!

先述したように、書籍リストは 1記事1エントリになっていて、ディレクトリは [出版社]/[雑誌名] になっています。利用しているプラグインは
  • category_name - フォルダ名を日本語に、かつ出版社や雑誌へのリンクをつくる (自作)
  • entries_index_tagged - 発売日を dc:date にする
  • foreshortened - rss10 で必要
  • meta - エントリのメタデータ
  • archives - 年/月のアーカイブ作成
  • breadcrumbs - Permalink にパンくず作成
  • categories - カテゴリツリー作成
  • flavourdir - flavour のディレクトリわけ
  • interpolate_fancy - テンプレートエンジン
  • rss10 - RSS/1.0
  • trackback_counts_display - Trackback 数表示 (tb-standalone 連携)
ぐらいです。

category_name は、英数字であるディレクトリ名を日本語に alias するプラグインで、breadcrumbs とか categories もそれを利用するように改造してあります。これ blosxom のコアにしちゃってもいいかも、とかおもいますな。

んで、rss フレーバは rss10 で上書きしてあります。FOAF なデータは rdf で作成する方向で。

エントリのファイルは meta データつかって、こんな感じになってます。
実践 Web サービスプログラミング - Amazon Web Services
meta-issued: 2003/12/22
meta-volume: Vol.18
meta-link: http://www.gihyo.co.jp/magazines/wdpress/archive/Vol18/
meta-isbn: 4774119016

使える Web サービスプログラミングの実践として  ...
meta-issued: は発売日なんですが、entries_index_tagged で、
$entries_index_tagged::date_tag = "meta-issued:";
としてやって、blosxom のエントリ作成時刻が発売日になるようにしています。RSS1.0 の dc:date にも使用されます。

ここでエントリに指定した meta なデータは html flavour でも表示につかっていますが、FOAF RDF にもバリバリ使えます(というか RDF は メタデータなわけで、コレだけで OK すね)。というわけで FOAF 用の flavour (rdf) をつくります。

content_type.rdf:
application/xml; charset=utf-8
application/rdf+xml にするのが正しい気もするんですが、IE とかでブラウザで開かないのが微妙に不便なので application/xml にしてます。

head.rdf:
<?xml version="1.0" encoding="utf-8" ?>
<rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns="http://xmlns.com/foaf/0.1/">
<Person>
<name>$rss10::creator</name>
<mbox rdf:resource="mailto:$rss10::email" />
<rdfs:seeAlso rdf:resource="http://blog.bulknews.net/foaf.rdf" />
rss10 プラグインの変数をそのまま流用してます。rdfs:seeAlso には本家 foaf の URL http://blog.bulknews.net/foaf.rdf を指定、これだけ hardcode になってしまいまいした。

date.rdf は必要ないので空です。

story.rdf:
<publications <?$meta::isbn>dc:identifier="urn:isbn:$meta::isbn" </?>
rdf:resource="$meta::link"
dc:title="$title ($category_name::category_nolink)"
dc:date="$yr-$mo_num-$da$rss10::T$hr$rss10::colon$min$rss10::tz_offset" />
foaf:publications 要素を 1つずつ表示していきます。meta-isbn: がある場合には urn:isbn タグをつけて dc:identifier にいれています。rss10 の dc:date をここにもいれました。

foot.rdf:
</Person>
</rdf:RDF>
こんな感じで FOAF データ が出力されるわけです。例によって blosxom ですから、 ってなこともカンタン(ムダに同じ内容の FOAF が増えるのはどうよという気もしますが)。

あとは head.html に
<link rel="meta" type="application/rdf+xml" title="FOAF" href="$url/index.rdf" />
といれて FOAF Auto-Discovery に対応させておきました。

Posted by miyagawa at January 30, 2004 03:22 AM | Permalink | Comments (0) | TrackBack(3)
Comments
Trackbacks
TrackBack URL for this entry: http://blog.bulknews.net/mt3/mt-tb.cgi/756
よく分かんないけれど blosxom ってすごいらしい
Excerpt: でも、MT以上に難しそう・・・ (^^; Publications List は
Weblog: あそびをせんとやうまれけむ
Tracked: January 30, 2004 09:42 AM
すばらしいがむつかしい
Excerpt: blosxomのflavour機能のもつ思想とFOAFのpublicationsの思想のつながるところがすばらしい。
Weblog: 先達の知恵を得たい
Tracked: January 31, 2004 11:26 AM
すばらしいがむつかしい
Excerpt: blosxomのflavour機能のもつ思想とFOAFのpublicationsの思想のつながるところがすばらしい。
Weblog: 先達の知恵を得たい
Tracked: January 31, 2004 11:28 AM
Post a comment