ちょっとしたメモ

XHTMLにメタデータを埋め込む

XHTMLにメタデータを埋め込み、RDFとしての抽出を可能にする方法について、HTML WGからXHTML and RDFという文書が出てきた。XHTML2を前提にしているので直接の利用価値はないが、考え方の一部は現在のXHTMLでも可能で、GRDDLによる抽出もできそうだ。

ざっと読んだところでは、head要素を使ってつぎのようなメタ情報を記述するという感じ。

  • html要素でdc:などの名前空間宣言を行う
  • meta要素のname属性の変わりにproperty属性を導入して、そこでプロパティのQNameを記述
  • meta要素を入れ子にすることで構造化メタデータも記述できるようにする
  • リテラル値ではなくURIをもつリソースを目的語にするには、link要素を用い、rel属性にプロパティのQNameを記述
  • さらにlink要素にabout属性を導入することで、外部文書やXHTML文書内のフラグメントなど、文書自身以外を主語にしたメタデータも記述できるようにする

掲載されているいくつかの例を合成して、ひとつ簡単なサンプルを作ってみる(例の中での#qは、本文のパラグラフidへの参照)。

(例)

<html xmlns:dc="http://purl.org/dc/elements/1.1/"
      xmlns:con="http://www.w3.org/2000/10/swap/pim/contact#">
 <head>
  <title>How to complete Memorandum cover sheets</title>
  <meta property="dc:creator">
   <meta property="con:fullName">John Doe</meta>
  </meta>
  <link about="#q1" rel="dc:source"
      href="http://www.example.com/tolkien/twotowers.html" />
</head>

適当なXSLTを使うなどして、次のようなRDFを得ることができる。

(例)

<rdf:Description rdf:about="">
 <dc:title>How to complete Memorandum cover sheets</dc:title>
 <dc:creator rdf:parseType="Resource">
  <con:fullName>John Doe</con:fullName>
 </dc:creator>
</rdf:Description>
 
<rdf:Description rdf:about="#q1">
 <dc:source rdf:resource="http://www.example.com/tolkien/twotowers.html"/>
</rdf:Description>

さらに本文についてメタデータを与える方法も、いくつかのアイデアが示されている。

  • resource属性を(span要素などとともに)使って、単なる文字列として出現している値を、リソースとして理解できるようにする
  • property属性をmeta要素に限らずあらゆる要素に認めて、本文そのものが直接メタデータになるようにする

挙げられている例を多少修正して紹介すると:

(例)

<p>By <span property="dc:creator">John Doe</span></p>
<p>Tomorrow the <span resource="p:TonyBlair">Prime Minister</span> is
expected to fly to ...</p>

こちらはまだ疑問が残る部分があるが、概ね次のようなRDFを得ることを想定している。

(例)

<rdf:Description rdf:about="">
 <xhtml2:reference rdf:resource="http://people.com/TonyBlair"/>
 <dc:creator>John Doe</dc:creator>
</rdf:Description>

meta要素の入れ子はともかくとして、property属性、resource属性による方法は現在のXHTMLに応用できなくはない。多少強引ながら、class属性にQNameを書いたり、a要素とrel属性を組み合わせれば、似たようなことはある程度可能だろう。dfn要素を利用するのも面白そうだ(「XHTMLからメタデータを自動抽出する」で検討している方法と重なる部分が多いので、これらも取り込んだ形で、そのうち改訂しよう)。

head要素だけでなく本文まで踏み込んでタグ付けを試みることで、日付とか作者といったシンプルな書誌データのみならず、キーワードや細かな参照関係など内容に関するメタデータを抽出できることになる。さらに、本文とメタデータを同時にメンテナンスできるので、メタデータが等閑にされる危険が減るというのも大きいな。

関連メモ: