2012-05-29 81 views
1

我想獲得sparql查詢結果的總數。我在java中使用jena API。 計數查詢在virtuoso中工作,但它不能在java中使用jena api工作。使用Jena api的Sparql COUNT查詢

SPARQL查詢:

select (count (?name) AS ?total) from <mygraph> 
where { ?name rdf:type foaf:Name} 

它不是在耶拿API工作。我已閱讀http://www.w3.org/2001/sw/DataAccess/issues#countAggregate 所以我認爲它不在rdf工作,但它在Virtuoso sparql編輯器中工作。 所以,如果你有解決方案,然後請讓我知道。並告訴我是否有其他解決方案。

謝謝

這裏是我的Java代碼,

String countQueryString="select (count (?name) AS ?total) from <mygraph> 
where { ?name rdf:type foaf:Name}"; 
Query selectQuery = QueryFactory.create(countQueryString); 
     QueryExecution qe = QueryExecutionFactory.sparqlService(Constant.SPARQL_ENDPOINT, selectQuery); 
Resultset results=qe.execSelect(); 
if(results.hasNext()) 
{ 
    totalCount=countResult.next().get("total").toString(); 
} 

以下是例外: HttpException:HttpException:400錯誤的請求:HttpException:400錯誤的請求.....

+2

你是什麼意思「它不工作」?發生了什麼?任何錯誤消息等?你如何在Jena API中運行查詢? – cygri

+0

顯示一些使用Jena API的代碼會很有用。 – MikeJ

+0

這是我用於此查詢的java代碼。 – Raxit

回答

2

查看ARQ文檔以獲得聚合支持(我遇到類似問題)

http://jena.apache.org/documentation/query/group-by.html

看來,它不支持

(count(?variable) as ?binding) 

在過去,我也曾嘗試周圍聚集投影即去掉括號:

select count (?name) AS ?total from <mygraph> where { ?name rdf:type foaf:Name} 

但是,這是因爲炫技實際上有一個問題與他們。