ARQ1.0でSPARQL XML Result Formatでの出力を行う方法

10月12日にSWフレームワークであるJenaのバージョン2.3が公開され、SPARQL実装であるARQも1.0にバージョンアップした。それに伴い、筆者の開発環境でも新しいJARファイルに入れ替えてみたのだが、どうやらAPIがいくつか変更されたらしく、既存のコードが動かなくなってしまうトラブルに見舞われた。そこで今回は、使用頻度が高いと思われるSPARQL XML Result Formatでのクエリ結果の出力方法について、若干のメモを書き残しておきたい。

Query query = QueryFactory.create(qStr); // クエリ文字列をセット
QueryExecution qexec = QueryExecutionFactory.create(query, model); // modelはあらかじめ作っておく
ResultSet results = qexec.execSelect();
OutputFormatter oFo = new XMLOutput();
ByteArrayOutputStream out = new ByteArrayOutputStream(); // 出力先
oFo.format(out, results);

上記のコードのうち強調した箇所が最近の更新で変更された部分になる。以前はResultSetFormatterを使用していたが、その代わりにXMLOutputをつかうことになる。なお、公開されているJavadocは最新のコードに追従できていないため、そのほかの出力方法は自力で探す必要がある。com.hp.hpl.jena.query.resultset周辺を探すとよいだろう。

ちなみに、ARQ1.0の出力するSPARQL XML Result Formatは最新の草案に従っているため、以前のように自前のXSLで変換する必要はなくなった。