weavin'

 | 

2005-07-160102

[][] Geographical Information in Hatena Map & GeoURL Feeds

はてなの RSS (RDF/XML) には,いつもがっかりにて、はてなマップのRSSが持つ問題についてまとめられています。同じ事を書こうと思ってたのですが遅くなってしまったので、位置情報についての補足なんかを。

はてなマップのRSSには、各itemにgeo:latとgeo:longで位置情報が記述されているのですが、現在の記述ではRDFを解釈すると不都合が起こる場合があります。「株式会社はてな」のキーワードを例に取ってみます。

<item rdf:about="http://d.hatena.ne.jp/keyword/%b3%f4%bc%b0%b2%f1%bc%d2%a4%cf%a4%c6%a4%ca">
  <title>株式会社はてな</title>
  <link>http://d.hatena.ne.jp/keyword/%b3%f4%bc%b0%b2%f1%bc%d2%a4%cf%a4%c6%a4%ca</link>
  <description>人力検索サイトはてなの開発・運用やWEBおよび携帯コンテンツの企画立案、開発をやってます。 
2004年2月1日をもって有限会社から株式会社に組織変更をおこない「 ...</description>

  <geo:lat>35.6512</geo:lat>
  <geo:long>139.6980</geo:long>
</item>

RDFの解釈ではキーワード「株式会社はてな」のURLが主語となり、title, link, description, geo:lat, geo:longは「キーワードのURLが指すもの」のプロパティとなります。「キーワードのURLが指すもの」は一般には「リソース」となるのですが、いくつかのボキャブラリによりRDFが構成されている場合、各ボキャブラリのスキーマによりリソースの存在範囲が制限される場合があります。

さて、「株式会社はてな」というキーワードURLは、geo:latおよびgeo:longという二つのプロパティを持っています。Geo Vocabularyのスキーマでは、「geo:latおよびgeo:longをプロパティに持つリソースは、geo:SpatialThingというクラスのインスタンスになる。」と定義されているのです。

geo:SpatialThingの定義にはAnything with spatial extentとあり、これは位置や大きさを持つ(空間に存在する)ものを意味します。つまりキーワードのURLが指すリソースは、空間的に存在するものに限定されちゃうんですよ。

はい、ここで問題がでてきます。キーワード「株式会社はてな」のURLが表すリソースは、キーワードについて解説した「Web上の文書」であり、空間的に存在しないものなんです。つまり、空間的に存在しないものが、緯度経度をもつという矛盾が生じるのです。

はてなフォトライフの写真がはてなマップ上にある場合も同様で、デジタル画像が緯度経度を持つことになります。言葉を読むとそうおかしくないのですが、デジタル画像は「撮影した地点の緯度および経度の情報」を持っているのであり、画像そのものに緯度経度があるわけではありません。なので、こちらもおかしなことになります。

というわけで、問題とならないようなフィードを考えてみます。

<item rdf:about="http://d.hatena.ne.jp/keyword/%b3%f4%bc%b0%b2%f1%bc%d2%a4%cf%a4%c6%a4%ca">
  <title>株式会社はてな</title>
  <link>http://d.hatena.ne.jp/keyword/%b3%f4%bc%b0%b2%f1%bc%d2%a4%cf%a4%c6%a4%ca</link>
  <description>人力検索サイトはてなの開発・運用やWEBおよび携帯コンテンツの企画立案、開発をやってます。
 2004年2月1日をもって有限会社から株式会社に組織変更をおこない「 ...</description>

  <foaf:topic parseType="Resource">
    <geo:lat>35.6512</geo:lat>
    <geo:long>139.6980</geo:long>
  </foaf:topic;>
</item>

foaf:topicにparseType="Resource"をつけて、geo:latとgeo:longを囲ってやります。ほかにもいろいろな書き方がありますが、多分この変更が一番楽で、マークアップの変更による影響が少ないものかと思われます。

<dcterms:spatial parseType="Resource">
<!-- 又は<dc:coverage parseType="Resource"> -->
  <geo:lat>35.6512</geo:lat>
  <geo:long>139.6980</geo:long>
</dcterms:spatial;>

FOAFって人についてでしょ?」みたいなステレオタイプを持っていて、なんとなくfoaf:topicを使いたくない場合は、まあdcterms:spatial又はそのスーパープロパティなdc:coverageあたりがいいかなと。

さてさて、このRSSを見て思い出したのは位置情報を含めたGeoURLのRSSフィードです。もしかして、これを参考にしたのかな。

GeoURLは緯度と経度情報を埋め込んだWebサイトのデータベースなのですが、出力されるRSSフィードは現在のはてなマップフィードによく似た構造となってます。

<item rdf:about="http://ericrichardson.com/">
  <title>eWorld: eric richardson meets the web</title>
  <link>http://ericrichardson.com/</link>
  <description>About 9.4 km away. Near Los Angeles.</description>

  <geourl:longitude>-118.25201</geourl:longitude>
  <geourl:latitude>34.0456</geourl:latitude>
</item>

geourl:longitudeおよび、geourl:latitudeという独自のプロパティを用いて、緯度と経度情報を記述してあります。どのような定義をしてあるかがわからないので果たしてこれは良いのか悪いのかわかりませんが、「リソースに関連した緯度および経度」というものをそれぞれ表していると考えて納得できます(バッドノウハウ)。

はてなもフォトライフのRSSでhatena:imageurlとか独自の語彙を定義してあるくらいなんで、位置情報に関しても同じ事をすればよかったのに。やってることにconsistencyをあんまり持たないのが悪くもはてなだなあと思ったり思わなかったり。

まあそんなことはさておいて、ぼちぼち RSS 2.0 に移行時かなとか破壊的なことは言わないで(「移行」とか言うのは「がっかり」しちゃいます)、ちょこっと追加はいかがかしら。

追記。はてなマップのRSSはてなマップのRSS配信開始についてにトラックバックを送ったんですが、届いてないようなのでリンク張ってみますよ。言及リンクないとできなくなったとかかしら。

さらに追記。うまく送ることができました、IEで。なんでだー

 | 
© 2004 kota.