2012-11-12 84 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構造表。