ちょっとしたメモ

SPARQLのプロトコルと結果フォーマット

SPARQL照会言語によるクエリをサーバーとやり取りするためのプロトコル仕様 SPARQL Protocol for RDF と、検索結果をXMLとして返すときのフォーマット SPARQL Query Results XML Format の草案が、いずれも5月27日付で改訂された。かなり変更されているので、実装には注意が必要だ。

プロトコルの方は、前の草案とは構成が様変わりしている。抽象プロトコルというのはやめて、WSDL2.0による定義を用意し、それに具体的なバインディングを与えるようになった。HTTPバインディングでは、RDFソースのURIを表す変数名が、前回のgraph-idからdefault-graph-uriに変わっている。その他いろいろあったパラメータは整理されているようだ。

XML結果フォーマットは、枠組みは同じだが、変数に値を結びつける部分の書式が大きく変更された。前回は、変数名を直接XML要素名として、URIならuri属性値、リテラルなら要素内容として値を記述するというものだったのに対し、今回は要素名は全て<binding>となり、変数名はそのname属性値、値はタイプに応じて<uri><literal>などの要素内容として記述する。

例えば(FOAFデータなどを検索して)ホームページURIを?hpage、ニックネームを?nick、友人を表す空白ノードを?friendという形にしてクエリを送った場合、旧版なら次のような形のXMLとして返されることになっていた。

(例)

<result>
 <hpage uri="http://work.example.org/bob/"/>
 <nick xml:lang="en">Bob</nick>
 <friend bnodeid="r1"/>
</result>

今回の草案では、次のような形になる。

(例)

<result>
 <binding name="hpage"><uri>http://work.example.org/bob/</uri></binding>
 <binding name="nick"><literal xml:lang="en">Bob</literal></binding>
 <binding name="friend"><bnode>r1</bnode></binding>
</result>

議論の流れはフォローしていないので、今後もこの形で進むのか(どの程度コンセンサスが得られているのか)は不明。とりあえずSPARQLのクエリを送る場合は、サーバーが新旧どちらのフォーマットに対応しているのか、きちんと確認する必要がある。

関連メモ:
map - genre: rdf. at