metaprofをプロファイルに指定してGRDDLで処理するとき、ブロックレベル要素に接頭辞付@class属性値を用いると型付ノード要素を生成しますが、文書自身とこのノードをfoaf:topic以外のプロパティで結び付けたいという要望を見かけたので、対応してみました。@classに、プロパティをあらわす値を付け加えるだけで、任意のプロパティを利用できます。
要望であげられていた例を使うと、
(例)
<dl class="prism.isTranslationOf foaf.Document">
<dt>Original Page</dt>
<dd><a href="http://www.alistapart.com/articles/previewofhtml5"
class="about">A List Apart: Articles: A Preview of HTML 5</a></dd>
<dt>Author</dt>
<dd><a rel="creator" href="http://lachy.id.au/">Lachlan Hunt</a></dd>
<dt>Copyright</dt>
<dd><a rel="rights" href="http://www.alistapart.com/copyright/">Copyright ©</a>
1998-2008 A List Apart Magazine and the authors.</dd>
</dl>
上記のように記述すれば、以下のRDFグラフが得られます(最初のfoaf:DocumentはXHTML文書自身です)。〔追記〕型付ノード要素の主語(rdf:about)にするa要素は、class="about"としてください。慌ててrel="about"と書いていたのを修正しました)。
(例)
<foaf:Document rdf:about=""> ... <prism:isTranslationOf> <foaf:Documentrdf:about="http://www.alistapart.com/articles/previewofhtml5"> <rdfs:label>A List Apart: A Preview of HTML 5</rdfs:label> <dc:creator> <foaf:Agent> <rdfs:label>Lachlan Hunt</rdfs:label> <foaf:homepage rdf:resource="http://lachy.id.au/"/> </foaf:Agent> </dc:creator> <dc:rights> <rdf:Description rdf:about="http://www.alistapart.com/copyright/"> <rdfs:label>Copyright</rdfs:label> </rdf:Description> </dc:rights> </foaf:Document> </prism:isTranslationOf> </foaf:Document>
(ここで、foaf:、dc:はあらかじめmetaprofで定義しているので直接foaf.、dc.としてXHTMLの@class属性値で使えますが、prism.は未定義なので、XHTMLのlink要素で rel="schema.prism" href="..." という形で指定しておく必要があります)
ブロックレベル要素の@class属性の扱いは、ピリオドを含む(以下、接頭辞付き)名前かどうかで次のようになっていました。
- 属性値が大文字で始まる(
Bookなど)か、接頭辞+大文字で始まる値(foaf.Documentなど)なら、型付ノード要素とする - 属性値が接頭辞+小文字で始まる値(prism:isTranslationOf!など)ならプロパティ要素として、内容をリテラル値にする
- それ以外の
@class値は無視する(abstractなどの予約値は別)
今回、1.と2.を合わせる形で、新しい規則を追加します。
- 属性値が接頭辞付き名を含むとき、1つ目が接頭辞+小文字開始名、2つ目が接頭辞+大文字開始名ならば、それぞれをプロパティ要素、型付ノード要素とする
接頭辞付き名前の順序を逆にする(1番目を接頭辞+大文字開始名とする)ことはできませんが、この順序さえ正しければ、それ以外の名前(クラス属性値トークン)が含まれても構いません。なお、2つめのトークンとして、接頭辞のない大文字で始まる値(Bookなど)を用いても、型付ノード要素は生成されないので注意してください。
また、例で強調しているのは、要望のオリジナルから書き換えている部分ですが、@rel属性をうまく使うことで、型付ノード要素の中の情報を、リテラルではなくリンク可能なデータとして表現できます。
- metaprofと文書トピックの主語URI (2007-10-06)
- GRDDLがW3C勧告に (2007-09-13)


