在缺省情况下,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