我正在尝试编写一个只会搜索dbpedia影片的查询,并找到包含关键字“Inception”的影片。该查询正在http://dbpedia.org/sparql,但不在我的java代码中。我正在使用jena库。
这是我的查询
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select ?Concept where {
?Concept a dbpedia-owl:Film.
?Concept rdfs:label ?label. FILTER (strStarts(str(?label), 'Inception')). } limit 10
这是我的Java函数
public static String extractDbpedia (String jenaString) {
String result;
String queryString =
"prefix rdfs:<http://www.w3.org/2000/01/rdf-schema#>" +
"prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>" +
"prefix dbpedia-owl:<http://dbpedia.org/ontology/>" +
"prefix xsd: <http://www.w3.org/2001/XMLSchema#>" +
"SELECT * WHERE { " +
" SERVICE <http://141.117.3.88:8890/sparql> { " +
"select ?Concept where { ?Concept a dbpedia-owl:Film. ?Concept rdfs:label ?label. FILTER (strStarts(str(?label), 'Inception')). } limit 10" +
" }" +
"}" ;
LogCtl.setCmdLogging();
Query query = QueryFactory.create(queryString) ;
try(QueryExecution qexec = QueryExecutionFactory.create(query, ModelFactory.createDefaultModel())) {
ResultSet rs = qexec.execSelect();
result = (ResultSetFormatter.asText(rs));
}
return result;
我收到错误HttpException:400,我不知道为什么。 谢谢!
答案 0 :(得分:2)
您的查询可能在DBpedia上有效,但应该在http://141.117.3.88:8890/sparql
上执行的部分在http://141.117.3.88:8890/sparql
不起作用。如果您尝试运行
prefix rdfs:<http://www.w3.org/2000/01/rdf-schema#>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix dbpedia-owl:<http://dbpedia.org/ontology/>
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
select ?Concept where {
?Concept a dbpedia-owl:Film.
?Concept rdfs:label ?label.
FILTER (strStarts(str(?label), 'Inception')).
}
SPARQL Results (an error message)
那里,你得到:
Virtuoso 37000 Error SP030: SPARQL compiler, line 11: syntax error at 'strStarts' before '('
SPARQL query:
define sql:big-data-const 0
#output-format:text/html
define sql:signal-void-variables 1 prefix rdfs:<http://www.w3.org/2000/01/rdf-schema#>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix dbpedia-owl:<http://dbpedia.org/ontology/>
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
select ?Concept where {
?Concept a dbpedia-owl:Film.
?Concept rdfs:label ?label.
FILTER (strStarts(str(?label), 'Inception')).
}
服务器的about文本说:
版权所有©2015 OpenLink Software Virtuoso 06.01.3127版 Linux(x86_64-pc-linux-gnu),单服务器版
也许该版本的Virtuoso不支持所有SPARQL 1.1功能?您需要检查Virtuoso文档,但基于 Does Virtuoso versions <=6.0 support SPARQL 1.1? ,听起来您所拥有的版本6.01可能不完全支持SPARQL 1.1。另一方面,公共DBpedia端点is running a 7.x version:
版权所有©2015 OpenLink Software Virtuoso版本07.20.3213 on Linux(x86_64-redhat-linux-gnu-FX2),单服务器版