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


2005 年 1 月

更新情報

1 月 9 日

画像メタデータと,はてなフォトライフの RSS

blog.bulknews.net の Hatena XML Namespaceという記事で,はてなフォトライフというサービスがあって RSS を配信しているという事を知りました.それは RDF である RSS 1.0 でした.画像を Weblog のようなもので扱い,そのメタデータを RSS 形式にまとめるという課題には興味があったので,はてなフォトライフの RSS にも興味を持ちました.

でもはてなフォトライフの RSS を見てみると,RDF としてはあまり良く無いものでした.ぼくが期待していたものとの違いを説明してみます.

まず Weblog での画像のメタデータで表現したいものを考えます.

  • HTML である記事の URI
  • JPEG などの画像の URI
  • 小さい画像(サムネイル)の URI

この三つが基本でしょう.これらの関係は,記事の主題はある画像であり,その画像のサムネイルが別の画像となります.

メタデータで表現したいもの
主語 述語 目的語
ある記事の 主題は ある画像
ある画像の サムネイルは 別のある画像

ある記事とかある画像に具体的な URI を付加してみます.「主題は」とか「サムネイルは」といった語彙は,FOAF のなかにあるのでそれを使ってみましょう.

メタデータで表現したいもの
主語 述語 目的語
ある記事
http://onohiroki.cycling.jp/comp-DSCN2312.html
http://xmlns.com/foaf/0.1/topic
(主題)は
ある画像
http://onohiroki.cycling.jp/PhotoAlbum/2003-07-30_nobeyama/image/DSCN2312.jpg
ある画像
http://onohiroki.cycling.jp/PhotoAlbum/2003-07-30_nobeyama/image/DSCN2312.jpg
http://xmlns.com/foaf/0.1/thumbnail
(サムネイル)は
別のある画像
http://onohiroki.cycling.jp/PhotoAlbum/2003-07-30_nobeyama/thumbnail/DSCN2312.jpg

この関係を RDF/XML で書くと以下のようになります.


<?xml version="1.0"?>
<rdf:RDF 
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:foaf="http://xmlns.com/foaf/0.1/">
  <rdf:Description rdf:about="http://onohiroki.cycling.jp/comp-DSCN2312.html">
    <foaf:topic> 
      <foaf:Image rdf:about="http://onohiroki.cycling.jp/PhotoAlbum/2003-07-30_nobeyama/image/DSCN2312.jpg">
        <foaf:thumbnail rdf:resource="http://onohiroki.cycling.jp/PhotoAlbum/2003-07-30_nobeyama/thumbnail/DSCN2312.jpg" />
      </foaf:Image>
    </foaf:topic>
  </rdf:Description>
</rdf:RDF>

[以下間違い:
<?xml version="1.0"?>
<rdf:RDF 
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:foaf="http://xmlns.com/foaf/0.1/">
  <rdf:Description rdf:about="http://onohiroki.cycling.jp/comp-DSCN2312.html">
    <foaf:topic 
      rdf:resource="http://onohiroki.cycling.jp/PhotoAlbum/2003-07-30_nobeyama/image/DSCN2312.jpg">
      <foaf:thumbnail 
        rdf:resource="http://onohiroki.cycling.jp/PhotoAlbum/2003-07-30_nobeyama/thumbnail/DSCN2312.jpg" 
      />
    </foaf:topic>
  </rdf:Description>
</rdf:RDF>
]

これを RSS 1.0 に適合させると RSS での item は,以下のようになります.


<item rdf:about="http://onohiroki.cycling.jp/comp-DSCN2312.html">
  <link>http://onohiroki.cycling.jp/comp-DSCN2312.html</link>
  <title>ニッコウキスゲ</title>
  <foaf:topic>
    <foaf:Image rdf:about="http://onohiroki.cycling.jp/PhotoAlbum/2003-07-30_nobeyama/image/DSCN2312.jpg">
      <foaf:thumbnail rdf:resource="http://onohiroki.cycling.jp/PhotoAlbum/2003-07-30_nobeyama/thumbnail/DSCN2312.jpg" />
    </foaf:Image>
  </foaf:topic>
</item>

[以下間違い:
<item rdf:about="http://onohiroki.cycling.jp/comp-DSCN2312.html">
  <link>http://onohiroki.cycling.jp/comp-DSCN2312.html</link>
  <title>ニッコウキスゲ</title>
  <foaf:topic 
    rdf:resource="http://onohiroki.cycling.jp/PhotoAlbum/2003-07-30_nobeyama/image/DSCN2312.jpg">
    <foaf:thumbnail 
      rdf:resource="http://onohiroki.cycling.jp/PhotoAlbum/2003-07-30_nobeyama/thumbnail/DSCN2312.jpg" 
    />
  </foaf:topic>
</item>
]

これまでは記事に注目してメタデータを考えて来ましたが,画像そのものに注目して,記事は画像の説明であるという見方で書き換えるとこうなります.

<item 
  rdf:about="http://onohiroki.cycling.jp/PhotoAlbum/2003-07-30_nobeyama/image/DSCN2312.jpg">
  <link>http://onohiroki.cycling.jp/comp-DSCN2312.html</link>
  <title>ニッコウキスゲ</title>
  <foaf:page rdf:resource="http://onohiroki.cycling.jp/comp-DSCN2312.html" />
  <foaf:thumbnail 
    rdf:resource="http://onohiroki.cycling.jp/PhotoAlbum/2003-07-30_nobeyama/thumbnail/DSCN2312.jpg"
  />
</item>

ひとつの記事にひとつの画像なら,このように画像についてのメタデータを記述したほうが,簡潔で良いのではないかと思います.

では,はてなフォトライフではどうなっているでしょう? まねして書いてみるとこんな感じです.

<item rdf:about="http://onohiroki.cycling.jp/comp-DSCN2312.html">
  <title>ニッコウキスゲ</title>
  <link>http://onohiroki.cycling.jp/comp-DSCN2312.html</link>
  <hatena:imageurl>
    http://onohiroki.cycling.jp/PhotoAlbum/2003-07-30_nobeyama/image/DSCN2312.jpg
  </hatena:imageurl>
  <hatena:imageurlsmall>
    http://onohiroki.cycling.jp/PhotoAlbum/2003-07-30_nobeyama/thumbnail/DSCN2312.jpg
  </hatena:imageurlsmall>
</item>

ここでは「xmlns:hatena="http://www.hatena.ne.jp/info/xmlns"」と独自の名前空間を定義して hatena という接頭辞を使っています.

まず RDF であるはずなのに,rdf:resourceを使わず,たんなるリテラルとして URI を記述してしまっています.画像そのものと画像のサムネイルとの関係がどうなっているのかも,これでは分からないですね.RSS 2.0 などの RDF でないものならこれでも十分ですが.FOAF の語彙をを利用すれば明確に記述できるのですから,へたに独自のものなんて定義しないで FOAF を利用したら良かったと思います.

ぼくは RSS 1.0 が普及したほうがおもしろいと思うのですが,RDF を理解しようと思わないなら RSS 1.0 を無理して使わないで RSS 2.0 を使った方が良いのではないでしょうか.

あと,名前空間の定義もあやしいですよね.これは RDF の話でなく XML 名前空間の話です.
「xmlns:hatena="http://www.hatena.ne.jp/info/xmlns/"」でも
「xmlns:hatena="http://www.hatena.ne.jp/info/xmlns#"」でもなく
「xmlns:hatena="http://www.hatena.ne.jp/info/xmlns"」となっているのです.
「xmlns:hatena="http://www.hatena.ne.jp/info/xmlns#"」としておけば,「hatena:imageurl」は「http://www.hatena.ne.jp/info/xmlns#imageurl」ってなるのですが,
「xmlns:hatena="http://www.hatena.ne.jp/info/xmlns"」の場合は,「hatena:imageurl」はどうなるのでしょう? 意図してこうしているのか単なる間違いなのか分かりません.

ぼくが RSS 1.0 による画像のメタデータ作成を試したものが「SwPhotoAlbum / 画像アルバム」なんですが,今回見直してみたらあちこちに間違いがありました.さてどうしたものか.

間違いがあったので修正しました.

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