2005 年 7 月の履歴(もしくは日誌)


2005 年 7 月

7 月 15 日

はてなの RSS (RDF/XML) には,いつもがっかり

Google Maps API はすごいですね.これを利用したものがいろいろ出て来ていますが,「はてなマップ」なんてのも出て来ました.それで位置情報を含んだ RSS を RSS 1.0 形式で配信するようになったんだけど,それは RDF/XML としてちょっとおかしいです.「はてなフォトライフ」の時も残念な RSS でしたが,また残念な RSS になってます.RDF/XML としてきちんとした RSS 1.0 を配信するか,それができないなら RSS 1.0 ぢゃなくて RSS 2.0 とかを利用するかのどちらかにしてほしい.やっていることがめちゃくちゃですよ.Google Maps API などの外のオープンなものは利用するけど,RDF/XML などのオープンな規格については,どーでもいいっていう態度に見えますぞ.

今のところ,こんな感じの RSS が配信されています.注目している rss:item だけ抜き出して,さらに関係ない要素を省略します:

<item rdf:about="http://f.hatena.ne.jp/tiga/20050708143637">
  <link>http://f.hatena.ne.jp/tiga/20050708143637</link>
  <hatena:imageurl>http://f.hatena.ne.jp/images/fotolife/t/tiga/20050708/20050708143637.jpg</hatena:imageurl>
  <hatena:imageurlsmall>http://f.hatena.ne.jp/images/fotolife/t/tiga/20050708/20050708143637_m.jpg</hatena:imageurlsmall>
  <geo:lat>35.6510</geo:lat>
  <geo:long>139.6938</geo:long>
</item>

これ経度と緯度といった位置情報がなんの位置情報なのかという点をまったく意識していないで書いていると思うのです.RDF ってのは,メタデータを記述するのですが,「主語」がなにかってのが重要です.位置情報を記述するだけでなくて,「なにの」位置情報なのかってのですね.

で,なにの位置情報なのかを考えて文章かします:

    • 「記事 (http://f.hatena.ne.jp/tiga/20050708143637)
    • 「主題 (foaf:topic) として」
    • 「写真 (http://f.hatena.ne.jp/images/fotolife/t/tiga/20050708/20050708143637.jpg) がある.」
    • 「写真 (http://f.hatena.ne.jp/images/fotolife/t/tiga/20050708/20050708143637.jpg)
    • 「主題 (foaf:topic) として」
    • 「ある地点 (geo:Point) がある」
    • 「ある地点 (geo:Point)
    • 「緯度 (geo:lat) は」
    • 「35.6510 である.」
    • 「ある地点 (geo:Point)
    • 「経度 (geo:long) は」
    • 「139.6938 である.」

これを RDF/XML にしたら:

<item rdf:about="http://f.hatena.ne.jp/tiga/20050708143637">
  <link>http://f.hatena.ne.jp/tiga/20050708143637</link>
  <foaf:topic>
    <foaf:Image rdf:resource="http://f.hatena.ne.jp/images/fotolife/t/tiga/20050708/20050708143637.jpg">
      <foaf:thumbnail rdf:resource="http://f.hatena.ne.jp/images/fotolife/t/tiga/20050708/20050708143637_m.jpg" />
      <geo:Point>
        <geo:lat>35.6510</geo:lat>
        <geo:long>139.6938</geo:long>
      </geo:Point>
    </foaf:Image>
  </foaf:topic>
</item>

これ,出発点を記事にしているけど,画像ファイルを出発点にした方がより簡潔でしょう.

<item rdf:about="http://f.hatena.ne.jp/images/fotolife/t/tiga/20050708/20050708143637.jpg">
  <link>http://f.hatena.ne.jp/tiga/20050708143637</link>
  <foaf:Page rdf:resource="http://f.hatena.ne.jp/tiga/20050708143637" />
  <foaf:thumbnail rdf:resource="http://f.hatena.ne.jp/images/fotolife/t/tiga/20050708/20050708143637_m.jpg" />
  <foaf:topic>
    <geo:Point>
        <geo:lat>35.6510</geo:lat>
        <geo:long>139.6938</geo:long>
    </geo:Point>
  </foaf:topic>
</item>

foaf:topic 以下は rdf:parseType を使って簡略化する方法があります:

<foaf:topic rdf:parseType="Resource">
  <geo:lat>35.6510</geo:lat>
  <geo:long>139.6938</geo:long>
</foaf:topic>

そうでなかったらこんなでも良いと思います:

<foaf:topic>
  <geo:Point geo:lat="35.6510" geo:long="139.6938" />
</foaf:topic>

で,最初のはてなの RSS を RDF/XML として書きなおすと:

<item rdf:about="http://f.hatena.ne.jp/images/fotolife/t/tiga/20050708/20050708143637.jpg">
  <link>http://f.hatena.ne.jp/tiga/20050708143637</link>
  <foaf:page rdf:resource="http://f.hatena.ne.jp/tiga/20050708143637" />
  <foaf:thumbnail rdf:resource="http://f.hatena.ne.jp/images/fotolife/t/tiga/20050708/20050708143637_m.jpg" />
  <foaf:topic>
    <geo:Point geo:lat="35.6510" geo:long="139.6938" />
  </foaf:topic>
</item>

ほら,見た目の複雑さは大した違いはないですよね.

FOAF っていうと,みな「知人ネットワークを表現する...」ってのを最初に思い浮かべると思うけど,実は RDF/XML の基本ボキャブラリとしてとても広く使える便利なものなのです.hatena:imageurlsmall なんてのはやめて foaf:thumbnail を使えば良いと思うし,geo ボキャブラリを使うなら,きちんとそれが何の位置情報なのかも考えた記述をしてほしいです.RDF としての意味を考えることができないなら RSS 1.0 をやめて RSS 2.0 にしたら良いと思います.

http://onohiroki.cycling.jp/tb/tb.cgi/weblog_d20050715n1 TrackBack