Java SPARQL查询";计数“;在大师Jena API中-QueryParseException

Java SPARQL查询";计数“;在大师Jena API中-QueryParseException,java,count,sparql,jena,Java,Count,Sparql,Jena,相同的查询在DBpedia Endpoint()中工作,但在我的Java代码中不工作。 我只是想用“计数”函数来提取频率 VirtGraph set = new VirtGraph("http://ko.dbpedia.org", HOST, USERNAME, PASSWORD); Query freqsparql = QueryFactory.create("SELECT ?class count(distinct ?s) as ?count where{?s <http://ko.d

相同的查询在DBpedia Endpoint()中工作,但在我的Java代码中不工作。 我只是想用“计数”函数来提取频率

VirtGraph set = new VirtGraph("http://ko.dbpedia.org", HOST, USERNAME, PASSWORD);
Query freqsparql = QueryFactory.create("SELECT ?class count(distinct ?s) as ?count where{?s <http://ko.dbpedia.org/property/이름> ?o. ?s a ?class.} order by DESC(?count)");
VirtuosoQueryExecution freqvqe = VirtuosoQueryExecutionFactory.create(freqsparql, set);
ResultSet freqresults = freqvqe.execSelect();
VirtGraph set=新的VirtGraph(“http://ko.dbpedia.org“、主机、用户名、密码);
Query freqsparql=QueryFactory.create(“选择类计数(不同的)作为计数,其中{s?o?s a?class.}按描述排序(?计数)”);
VirtuosoQueryExecution freqvqe=VirtuosoQueryExecutionFactory.create(freqsparql,set);
ResultSet freqresults=freqvqe.execSelect();
误差如下

Exception in thread "main" com.hp.hpl.jena.query.QueryParseException: Encountered " "count" "count "" at line 1, column 15.
Was expecting one of:
<VAR1> ...
<VAR2> ...
"from" ...
"where" ...
"(" ...
"{" ...

at com.hp.hpl.jena.sparql.lang.ParserSPARQL11.perform(ParserSPARQL11.java:102)
at com.hp.hpl.jena.sparql.lang.ParserSPARQL11.parse$(ParserSPARQL11.java:53)
at com.hp.hpl.jena.sparql.lang.SPARQLParser.parse(SPARQLParser.java:37)
at com.hp.hpl.jena.query.QueryFactory.parse(QueryFactory.java:148)
at com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:80)
at com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:53)
at com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:41)
线程“main”com.hp.hpl.jena.query.QueryParseException中的异常:在第1行第15列遇到“count”“count”。 我期待的是: ... ... “从”。。。 “哪里”。。。 "(" ... "{" ... 位于com.hp.hpl.jena.sparql.lang.ParserSPARQL11.perform(ParserSPARQL11.java:102) 位于com.hp.hpl.jena.sparql.lang.ParserSPARQL11.parse$(ParserSPARQL11.java:53) 位于com.hp.hpl.jena.sparql.lang.SPARQLParser.parse(SPARQLParser.java:37) 位于com.hp.hpl.jena.query.QueryFactory.parse(QueryFactory.java:148) 在com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:80)上 位于com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:53) 位于com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:41) 我正在使用virt_jena2.jar和virtjdbc4.jar。 我已经看过了类似的问题和答案(Jena ARQ扩展和SPARQL 1.1支持这个聚合查询-但我找不到如何更改它-我认为我使用SPARQL1.1是因为错误消息包括PARSERSPARQL11.java),但目前还不知道如何解决这个问题

提前谢谢


String sparqlQueryString=“选择类计数(不同的)作为计数,其中{s?o?s a?类。}按描述排序(?计数)”;
Query=QueryFactory.create(sparqlQueryString);
QueryExecution qexec=QueryExecutionFactory.sparqlService(
"http://ko.dbpedia.org/sparql“,查询);
试一试{
ResultSet results=qexec.execSelect();
while(results.hasNext()){
QuerySolution freqresult=results.nextSolution();
RDFNode domain=freqresult.get(“类”);
RDFNode freqcount=freqresult.get(“count”);
系统输出打印项次(结果);
System.out.println(域+“--”+频率计数);
}
}捕获(例外e){
e、 printStackTrace();
}最后{
qexec.close();
}

这个Jena代码(没有Virtuoso)给了我同样的错误消息。

这是非法的SPARQL语法:

SELECT ... count(distinct ?s) as ?count where
应该是

SELECT ... (count(distinct ?s) as ?count) where
您将遇到以下方面的
?类问题:

SELECT ?class (count(distinct ?s) as ?count) where

因为它不是一个分组变量(使用
count
你有一组所有的东西)。你的意思是按类分组吗?

这是非法的SPARQL语法:

SELECT ... count(distinct ?s) as ?count where
应该是

SELECT ... (count(distinct ?s) as ?count) where
您将遇到以下方面的
?类问题:

SELECT ?class (count(distinct ?s) as ?count) where

因为它不是一个分组变量(使用
count
你有一组所有的东西)。你是想让
按类分组吗?

关键字是
遇到的“count”“count”
关键字是
遇到的“count”“count”

谢谢@AndyS它正在工作。我忘了放置支持轻松查询的
按类分组
端点环境,在生成适当的查询时让我感到困惑。
选择类(计数(不同的)作为计数)其中{s?o.s a?类。}按类分组按描述顺序(?计数)
再次访问这里…我用谷歌搜索了我自己的问题..lol:)谢谢@AndyS它正在工作。我忘了放置支持轻松查询的
GROUP BY?class
端点环境,在生成适当的查询时让我感到困惑。
选择?class(count(distinct?s)as?count)在哪里{s?o?s a?class.}分组?按描述的班级顺序(?计数)
再次访问这里…我用谷歌搜索了我自己的问题..哈哈:)