2012-05-29 4 views
1

Я хочу получить общее количество результатов запроса sparql. Я использую jena API для этого в java. счетчик работает в виртуозе, но не работает в java, используя jena api.Запрос Sparql COUNT с использованием Jena api

SPARQL запроса:

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

Его не работает в Jena API. Я прочитал http://www.w3.org/2001/sw/DataAccess/issues#countAggregate Так что я думаю, что он не работает в rdf, но работает в редакторе Virtuoso sparql. Итак, если у вас есть решение, тогда plz сообщит мне. А также скажите мне, есть ли альтернативное решение.

Спасибо

Вот мой код 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 Bad Request: HttpException: 400 Bad Request .....

+2

Что значит «это не работает»? Что происходит? Любые сообщения об ошибках и т.д.? Как вы пытаетесь запустить запрос в API Jena? – cygri

+0

Показать код, который использует API Jena, будет полезен. – 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} 

Но это потому, что на самом деле виртуоз имел вопрос с ними.