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:Document
rdf: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)