ちょっとしたメモ

RSS 1.1

RSS 1.1のドラフトというものが出てきた。RSS 1.0のRDF/XML構文の取っつきにくさや、定義上の不明確な点を改良したという位置づけらしい。詳しく検討する時間がないので、評価は保留としておくが、ざっとみたところいくつか疑問はある。

簡単な例(上記暫定仕様のものを編集):

(例)

<Channel xmlns="http://purl.org/net/rss1.1#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   rdf:about="http://www.xml.com/xml/news.rss">
 <title>XML.com</title>
 <link>http://xml.com/pub</link>
 <description>.....</description>
 ...
 <items rdf:parseType="Collection">
  <item rdf:about="http://www.xml.com/pub/a/2005/01/05/restful.html">
   <title>The Restful Web: Amazon's Simple Queue Service</title>
   <link>http://www.xml.com/pub/a/2005/01/05/restful.html</link>
   <description>In Joe Gregorio's latest ....</description>
  </item>
  ....
  <item>
   <title>Transforming XML: Extending XSLT with EXSLT</title>
   <link>http://www.xml.com/pub/a/2005/01/05/tr-xml.html</link>
   <description>In this month's Transforming XML column...</description>
  </item>
 </items>
</Channel>

構文上の大きな違いは、(1)rdf:RDF要素を用いずに、Channelを文書要素としていること;(2)items要素(プロパティ)の目的語をコンテナ(rdf:Seq)にせず、コレクションを用いてitem要素をitemsの子要素にしていること;の2点だろう。(1)はまぁどっちでもよいことだが、(2)でコレクションを持ってくるのは、モデルとしては疑問が残る。構文的にitems直下にitemを書きたいというだけだろうが、itemsが閉じたリストになるのは違和感がある。

item要素のrdf:about属性はオプションになっている。理由は、ひとつのRSSで同じURI参照を持つitem要素が複数ある(たとえば更新履歴のようなケース)とそれらがマージされてしまうため、その場合はitemを空白ノードとして扱えるようにということだ。これは、本来はフラグメント識別子を加えるなどしてURI参照自体を区別するべきで本末転倒だと思うが、RSSをもっと幅広いメタデータのコンテナとして考える場合、もしかしたら使い道があるかも知れない。

RELAX NGのスキーマやらオントロジー、ツール、テストケースまでつくってずいぶん気合いは入っている。しかし、XML構文的にはすっきりするものの、RDFとして見たときは今ひとつしっくり来ない。それに、RSS1.0の構文が多少複雑だからといって、それを手書きするケースなんてほとんどなく、リーダーでも問題なくパースされているのだから、この上フォーマットを増やさなくてもいいようなものだが。

以上、速報と第一印象。

map - genre: rss. at