2012-11-12 130 views
1

我在这里有一个问题,它看起来很容易,但因为我不太熟悉Sparal查询,我无法找到它的解决方案。如何使SPARQL查询返回HTML表格格式的数据?

让我解释我的问题。我想在一个HTML表格中显示SPARQL查询的结果。 我创建了我的查询并成功执行,但我不知道如何将结果显示为网页上的HTML表格。

例如,我希望一个单元格包含名称和另一个单元格,以显示关于具有该名称的人员的所有信息或描述......此名称取自我的本体论。我想知道是否有可能。如果是,我该怎么办?

+1

这是可能的,但您必须告诉我们您正在使用哪些工具/库来执行查询以及当前使用哪种输出格式。 – toniedzwiedz

+0

感谢您的回复,我使用eclipse和Jena TDB – maya

回答

2

在缺省情况下,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构造表。