Hatena::Groupweb

vantguarde

 | 

3.8

CURIE - 短縮URI構文

| 21:45

そういえばCURIE Syntax 1.0のドラフトが出たのでした。これを使うとURIをQNameのような形で表す事が出来るようになります。

もともとはRDF由来です。N3などがRDFURI参照をQNameのような形*1で表現しているのですが、その読みやすさをRDFaでも実現させようと考えられたのがCURIE (Compact URI)です。

パラメータ実体とnamespace宣言とQNameとRDFURI参照とmod_rewriteから、美味しいところを持ってきた感じでしょうか。

わかりにくいので例を。はてなキーワードを短縮URIにしてみます。CURIEはprefix, suffixから成り、prefix部分をnamespace宣言(xmlns:prefix="uri")で定義します。つまりxmlns:hatena="http://d.hatena.ne.jp/keyword/"というnamespace宣言がなされていた場合、はてなキーワードRDF」に対応するCURIEは、hatena:RDFとなるわけです。

短縮構文ではありますが勿論URIなわけで、リンクのアンカーに指定することもできます。この場合hatena:RDFをhrefの値としてしまうと、hatena:というプロトコルのように解釈されるおそれがあるため、ブラケットに囲んで[hatena:RDF]と記述します。

<html
  xmlns="http://www.w3.org/1999/xhtml"
  xmlns:hatena="http://d.hatena.ne.jp/keyword/">
<head><title>はてなキーワードのCURIE表現</title></head>
<body>
  <p>
    <!-- prefixが何かのプロトコルとして解釈されるのを防ぐため、"[prefix:suffix]"と記述する -->
    <a href="[hatena:RDF]">はてなダイアリー - RDFとは</a>にてRDFの解説が、
    <a href="[hatena:XHTML]">はてなダイアリー - XHTMLとは</a>にてXHTMLの解説がなされてます。
  </p>
</body>
</html>

Wikiやはてなの記法に似てますよね。xmlns:asin="http://d.hatena.ne.jp/asin/"としておけば、asin:4861671647なんてはてな記法がそのままURIとして認識可能となるわけです。またこれは出来るかどうか解りませんが*2xmlns:ttp="http"とすれば、ttp://example.comなんていうものも正規なURIとして表記できそうです。うわあ。

まあ、若干気持ち悪さを覚えるわけなんですが、RDFURI参照をQNameのように表現したい場合、何らかのひもづけが必要なのは事実なんですよね。また長ったらしいURLを短縮したいって需要は少なからずあると思うので、こんな風に解決できるなら面白いなあとは思います。

実装もuserscriptである程度簡単にできそうですし、今後どうなるのかいろんな意味で楽しみです。

*1<#> dc:title "webtech:vantguarde" .

*2:出来たとしてもバッドノウハウな気がします

iishikawaiishikawa2008/05/18 01:161年以上前の記事へのコメントで恐縮なのですが、CURIEやらRDFaやらで気になることがあって質問したいのですがよろしいでしょうか。(もしここがまずければ人力検索でも構いません。)

vantguardevantguarde2008/05/18 04:43答えられるかどうかは分かりませんが、ここで特に問題ないですよー

iishikawaiishikawa2008/05/18 22:41ありがとうございます。

質問は、XHTMLで名前空間を宣言する際にDTDで属性リスト宣言をする必要があるのかどうかというものです。xmlns:dc="..."などを書いたXHTMLをOpenSPやxmllintで検証してみると「属性xmlns:dcはありません」というエラーが発生します。XMLの仕様も属性xmlns:*だけに例外を設けていることはなさそうなのですが、W3CのMarkup Validation Serviceやブラウザでチェックしてみるとエラーにならないし、もし属性リスト宣言が必要ならRDFaやXHTML 2.0がとても面倒なことになるので、さすがにそれはないかなと思っています。名前空間がわかるプロセッサはxmlns:*を特別に処理していたりするのでしょうか。

vantguardevantguarde2008/05/20 22:46あまり回答にはなっていないのですが、エントリとして書いてみました。http://web.g.hatena.ne.jp/vantguarde/20080520/1211290752

iishikawaiishikawa2008/05/21 00:30エントリまで書いていただいて、ありがとうございます。ちょっとすっきりしました。

 | 
Contact: @vant / lepetitcroissant@gmail.com.