Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jena出现SPARQL解析错误,但DBpedia接受该查询_Java_Sparql_Jena - Fatal编程技术网

Java Jena出现SPARQL解析错误,但DBpedia接受该查询

Java Jena出现SPARQL解析错误,但DBpedia接受该查询,java,sparql,jena,Java,Sparql,Jena,我正在使用Jena启动SPARQL查询。我有这个代码,它会产生一个错误。 我不明白这个错误的原因,因为我把这个查询放到了工作中!我认为我正确地编写了查询字符串。怎么了 代码 String sparqlQueryString= “前缀rdfs:”+ “选择?sub?super(count(?mid)作为?length),其中{”+ “值?sub{}”+ “子RDF:子RDF*?mid。”+ “?mid rdfs:子类+?超级。}”+ “分组依据(?sub?super)”+ “按(?长度)排序”;

我正在使用Jena启动SPARQL查询。我有这个代码,它会产生一个错误。 我不明白这个错误的原因,因为我把这个查询放到了工作中!我认为我正确地编写了查询字符串。怎么了

代码
String sparqlQueryString=
“前缀rdfs:”+
“选择?sub?super(count(?mid)作为?length),其中{”+
“值?sub{}”+
“子RDF:子RDF*?mid。”+
“?mid rdfs:子类+?超级。}”+
“分组依据(?sub?super)”+
“按(?长度)排序”;
query=QueryFactory.create(sparqlQueryString);
查询执行qexec=
QueryExecutionFactory.sparqlService(“http://dbpedia.org/sparql“,查询);
错误 线程“main”com.hp.hpl.jena.query.QueryParseException:遇到异常 第231列第1行的“超级”。 我期待的是: “不是”。。。 “作为”。。。 “在”。。。 ... ... ... ... ... ... ")" ... "=" ... "!=" ... ">" ...
“不要在
GROUP BY
变量周围加括号。也就是说,它应该是
GROUP BY?sub?super
, 而不是
groupby(?sub?super)
。如果您在查询中添加带有
\n
的换行符,这一点非常清楚,以便更容易看到错误所在。例如,当我尝试编译以下代码时,会出现以下运行时错误

import com.hp.hpl.jena.query.query;
导入com.hp.hpl.jena.query.QueryExecution;
导入com.hp.hpl.jena.query.QueryExecutionFactory;
导入com.hp.hpl.jena.query.QueryFactory;
公共类解析错误{
@抑制警告(“未使用”)
公共静态void main(字符串[]args){
字符串sparqlQueryString=
“前缀rdfs:\n”+
“选择?sub?super(count(?mid)作为?length),其中{\n”+
“值?sub{}\n”+
“?子rdfs:子SSOF*?mid。\n”+
“?mid rdfs:子类+?超级。}\n”+
“分组依据(?sub?super)\n”+
“按(?长度)\n排序”;
Query=QueryFactory.create(sparqlQueryString);
查询执行qexec=
QueryExecutionFactory.sparqlService(“http://dbpedia.org/sparql“,查询);
}
}
线程“main”com.hp.hpl.jena.query.QueryParseException中出现异常:在第6行第16列遇到“super”

错误正好指向有问题的行。此处不需要括号,因为语法中的结果需要一个或多个s,其形式由该结果定义:

GroupCondition::=内置调用|函数调用|'('表达式('作为'Var'))'|变量

如果有一个
groupby(…)
应该是

分组依据(?a+?b)
分组依据(?a+?b为?abSum)
您还可以通过粘贴查询来测试这一点

前缀rdfs:
选择sub super(计数(?中间)作为长度),其中{
值?sub{}
子RDF:子RDF*?mid。
?mid rdfs:子类+?超级。}
分组依据(?sub?super)
按(?长度)排序
从中可以获得输出:

输入:
1前缀rdfs:
2选择子超级(计数(?中间)作为长度),其中{
3个值?sub{}
4?子RDF:子RDF*?mid。
5?中间rdfs:子类+?超级。}
6按(?亚?超)分组
7按(?长度)排序
语法错误
在第6行第16列遇到“?super”。
我期待的是:
“不是”。。。
“作为”。。。
“在”。。。
...

不要在
GROUP BY
变量周围加括号。也就是说,它应该是
GROUP BY?sub?super
, 而不是
groupby(?sub?super)
。如果您在查询中添加带有
\n
的换行符,这一点非常清楚,以便更容易看到错误所在。例如,当我尝试编译以下代码时,会出现以下运行时错误

import com.hp.hpl.jena.query.query;
导入com.hp.hpl.jena.query.QueryExecution;
导入com.hp.hpl.jena.query.QueryExecutionFactory;
导入com.hp.hpl.jena.query.QueryFactory;
公共类解析错误{
@抑制警告(“未使用”)
公共静态void main(字符串[]args){
字符串sparqlQueryString=
“前缀rdfs:\n”+
“选择?sub?super(count(?mid)作为?length),其中{\n”+
“值?sub{}\n”+
“?子rdfs:子SSOF*?mid。\n”+
“?mid rdfs:子类+?超级。}\n”+
“分组依据(?sub?super)\n”+
“按(?长度)\n排序”;
Query=QueryFactory.create(sparqlQueryString);
查询执行qexec=
QueryExecutionFactory.sparqlService(“http://dbpedia.org/sparql“,查询);
}
}
线程“main”com.hp.hpl.jena.query.QueryParseException中出现异常:在第6行第16列遇到“super”

错误正好指向有问题的行。此处不需要括号,因为语法中的结果需要一个或多个s,其形式由该结果定义:

GroupCondition::=内置调用|函数调用|'('表达式('作为'Var'))'|变量

如果有一个
groupby(…)
应该是

分组依据(?a+?b)
分组依据(?a+?b为?abSum)
您还可以通过粘贴查询来测试这一点

前缀rdfs:
选择sub super(计数(?中间)作为长度),其中{
值?sub{}
子RDF:子RDF*?mid。
?mid rdfs:子类+?超级。}
分组依据(?sub?super)
按(?长度)排序
从中可以获得输出:

输入:
1前缀rdfs:
2选择子超级(计数(?中间)作为长度),其中{
3个值?sub{}
4?子RDF:子RDF*?mid。
5?中间rdfs:子类+?超级。}
6按(?亚?超)分组
7按(?长度)排序
语法错误
在第6行第16列遇到“?super”。
我期待的是:
“不是”。。。
“作为”。。。
“在”。。。
...
不要插入括号
 String sparqlQueryString=
 "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> "+
 "select ?sub ?super (count(?mid) as ?length) where {"+
 "values ?sub { <http://dbpedia.org/ontology/Writer> }" +
 "?sub rdfs:subClassOf* ?mid ."+
 "?mid rdfs:subClassOf+ ?super .}"+
 "group by (?sub ?super)"+
 "order by (?length)";
 query = QueryFactory.create(sparqlQueryString); 
 QueryExecution qexec = 
 QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql",query);