在缺省情況下,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也很容易。
另一種選擇是使用ResultSetFormatter
返回Model
並使用iterators provided by Jena構造表。
這是可能的,但您必須告訴我們您正在使用哪些工具/庫來執行查詢以及當前使用哪種輸出格式。 – toniedzwiedz
感謝您的回覆,我使用eclipse和Jena TDB – maya