publications FOAF
Publications List は
blosxom で構築しているわけですが、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)