ちょっとしたメモ

RSS 1.0のchannel要素のrdf:about

少し議論する機会があったので、今更ながら、RSS 1.0のchannel要素のrdf:about属性には何のURIを書くべきなのかを、仕様成立の背景とともに整理しておきます。結論から言えば「チャンネル自身のURI」なのですが、仕様書の記述が曖昧だったりして、実装にはばらつきがあるのです。

RSS 1.0の仕様書では、channel要素(のrdf:about)は次のように定義されています。

The {resource} URL of the channel element's rdf:about attribute must be unique with respect to any other rdf:about attributes in the RSS document and is a URI which identifies the channel. Most commonly, this is either the URL of the homepage being described or a URL where the RSS file can be found.

RSS 1.0 Spec., 5.3 <channel>

ここで"a URI which identifies the channel"となっているとおり、URIはチャンネルを識別するURIです。RDFのモデルとしてみても、これはchannelクラスのリソースを示す主語であって、それ以外ではあり得ません。ところが、後半には"either the URL of the homepage being described or a URL where the RSS file can be found."という曖昧なことが書かれていて、「チャンネル」とはそもそもRSSのことなのか、ホームページのことなのかが分からなくなってしまいます。

I'm confused as to whether the 'channel' is the RSS file, a particular
HTML (or other) respresentation of the RSS file (as in the first example
above) or some more abstract concept that corresponds to a particular, but
changing, collection of items.

Andy Powell, RSS-DEV post 996, 2000-10-18

この背景としては、RSS 0.9xで使われていたlink要素と、RSS 1.0をRDFとして成立させるために導入されたrdf:aboutの役割を巡る食い違いがあります。前者は基本的に「人間が読むページにリンクする」ことを目的にしていたのに対し、後者は純粋にリソースの主語を識別するもので、item要素では大きな矛盾は生じませんが、channel要素では話がややこしくなって来たわけです。

What is sure is that:
1) per RDF semantic, rdf:about is used as an identifier for the channel.
2) per RSS 0.9x usage, the link element is a URL (or URI) pointing on an
existing page which can be visualized for a human being.

Eric van der Vlist, RSS-DEV post 1005, 2000-10-20

議論としては多くのメンバーがチャンネル=RSSという意見を出していますが、もう少し異なる意見もありました。

I believe I've also read that some think channel rdf:about should
point to the RSS file, and I'd like to give a counter-argument for
that: I would like to see the channel rdf:about to uniquely identify
the *channel*, where there might be several versions of RSS, other
site summary, topic maps, etc. that may also describe that channel.
As such, there may (to be determined later) be statements that could
be made about a channel that provide links to these other resources.

Ken MacLeod, RSS-DEV post 1006, 2000-10-20

それやこれやで、まずrdf:aboutとlink要素との関連についての投票をしようということになります。

I'd like to propose the following poll to determine consensus on the
connection between rdf:about and link:
Should the value of rdf:about be required identical with the value of the
link (or in case of image, the url) element?

Markus Strickler, RSS-DEV post 1018, 2000-10-20

結果は、rdf:aboutとlink要素は同一でなくてよいということになりますが、channelの定義やrdf:aboutの意味は改めて議論すべきという暫定的な提案が出ています。

Proposal:
For RDF+NS RSS 1.0, then, I'd like to propose for RW30 that we
remove the hard tie between rdf:about and link (uri) and replace it
with a soft tie. More specifically, as a brief summary of changes
to the spec, "rdf:about MUST be globally unique; an item's 
need not be unique; rdf:about SHOULD be a copy of  ()."
This proposal leaves open what rdf:about should mean to further
discussion, is clear to implementors that the two are not (yet, maybe
ever) aliases, and by starting out with a copy of  () we
can revisit that discussion as well.

Ken MacLeod, RSS-DEV post 1030, 2000-10-21

結局、channelとは何かについてはこのあと議論が深まることはなく、RSS 1.0仕様書のような曖昧な記述ができてしまいました(いつの間に「ホームページ」が紛れ込んできたのかは、よく確認できていません)。

「チャンネル」が何かというのが"further discussion"として宙に浮いてしまったわけですが、これはやはりフィードすなわちRSSファイルとするのが妥当でしょう(例えば、FOAFファイルでfoaf:madeプロパティを使ってrss:channelをつくったと言いたい時、どのURIを書くかと考えれば分かりやすいかも)。つまり:

  • channel要素のrdf:aboutはRSSのURIを記述する
  • channel要素内のlink要素には、そこからリンクして人間が読むためのURIを記述する

以上は、仕様書成立の背景とRDFの観点からの望ましい解釈を示すもので、rdf:aboutにホームページURIを書くことが間違いであると主張するわけではありません(実際、仕様書にホームページURIでもいいと書かれているわけだし、実装で特に問題も生じていないし…)。まあしかし、せっかくRDFとしてのRSS 1.0を採用するなら、リソースが何を指しているのかをきちんと意識しておく方が実り多いだろうとは思います(これについては次の「RSS 1.0の可能性」参照)。

map - genre: rss. at