Jenaは、デフォルトでは、クエリ結果をHTMLとして出力する方法を提供していません。ただし、XMLを生成することは可能です。が必要になりResultSetFormatter
ます。次に例を示します。
Dataset ds = TDBFactory.createDataset(dbDirectory.getAbsolutePath());
Model model = ds.getDefaultModel();
String query = "SELECT * WHERE {?subject ?predicate ?object .}";
execution = QueryExecutionFactory.create(query, model.getUnionGraph());
ResultSet results = execution.execSelect();
resultString = ResultSetFormatter.asXMLString(results);
(明確にするために例外キャッチは省略されています)
この方法で取得するXMLは、非常に単純な形式になります。上記で使用したクエリの例を次に示します。
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
<head>
<variable name="subject"/>
<variable name="predicate"/>
<variable name="object"/>
</head>
<results>
<result>
<binding name="subject">
<uri>http://blahblahblah</uri>
</binding>
<binding name="predicate">
<uri>http://foobar</uri>
</binding>
<binding name="object">
<uri>http://fizzbuzz</uri>
</binding>
</result>
<result>
<binding name="subject">
<uri>http://yadayada</uri>
</binding>
<binding name="predicate">
<uri>http://example</uri>
</binding>
<binding name="object">
<literal>This is a literal, expect them to pop up here and there too</literal>
</binding>
</result>
<!-- and the results continue like this -->
</results>
</sparql>
ここからHTMLテーブルに到達するには、XSL変換を適用する必要があります。XPathまたはXMLパーサーを使用してデータを読み取り、JSPに渡すことも簡単です。
もう1つのオプションは、を使用しResultSetFormatter
てaを返し、Jenaが提供するイテレータModel
を使用してテーブルを作成することです。