首页 文章

使用Jena api进行Sparql COUNT查询

提问于
浏览
1

我想获得sparql查询结果的总数 . 我在java中使用jena API . count查询在virtuoso中工作,但它不能使用jena api在java中工作 .

Sparql Query:

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编辑器中工作 . 所以,如果你有一个解决方案,那么请告诉我 . 并告诉我是否有其他解决方案 .

谢谢

这是我的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 .....

1 回答

  • 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}
    

    但这是因为Virtuoso实际上遇到了问题 .

相关问题