我对使用Java代码的SPARQL端点有问题。
特别是,我有这个Java类:
public class example {
public static void main(String[] args) {
String value = "http://dbpedia.org/resource/Fred_Guy";
example exam = example();
QueryExecution qe = exam.query(value);
ResultSet results = ResultSetFactory.copyResults( qe.execSelect() );
}
public QueryExecution query(String stringa){
ParameterizedSparqlString qs = new ParameterizedSparqlString( "" +
"prefix dbpediaont: <http://dbpedia.org/ontology/>\n" +
"prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n" +
"\n" +
"select ?resource where {\n" +
"?mat rdf:type ?resource\n" +
"filter strstarts(str(?resource), dbpediaont:)\n" +
"}" );
Resource risorsa = ResourceFactory.createResource(stringa);
qs.setParam( "mat", risorsa );
QueryExecution exec = QueryExecutionFactory.sparqlService( "http://dbpedia.org/sparql", qs.asQuery() );
ResultSet results = ResultSetFactory.copyResults( exec.execSelect() );
while ( results.hasNext() ) {
System.out.println( results.next().get( "resource" ));
}
// A simpler way of printing the results.
ResultSetFormatter.out( results );
return exec;
}
}
我想检索谓词为“ RDF:type” 的资源“
http://dbpedia.org/resource/Fred_Guy ”
的对象。但是我有一个我不明白的错误:
Exception in thread "main" HttpException: 500
at com.hp.hpl.jena.sparql.engine.http.HttpQuery.execGet(HttpQuery.java:340)
at com.hp.hpl.jena.sparql.engine.http.HttpQuery.exec(HttpQuery.java:276)
at com.hp.hpl.jena.sparql.engine.http.QueryEngineHTTP.execSelect(QueryEngineHTTP.java:345)
at MyPackage.example.main(example.java:19)
为什么会出现此错误?
我正在尝试执行此查询
“ http://dbpedia.org/sparql ”
没有写strstarts,我得到这个错误:
Virtuoso 37000 Error SP031: SPARQL compiler: No one quad map pattern is suitable for GRAPH <http://dbpedia.org> { "http://dbpedia.org/resource/Fred_Guy" <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?resource } triple at line 7
SPARQL query:
define sql:big-data-const 0
#output-format:text/html
define sql:signal-void-variables 1 define input:default-graph-uri <http://dbpedia.org> prefix dbpediaont: <http://dbpedia.org/ontology/>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
select ?resource where {
"http://dbpedia.org/resource/Fred_Guy" rdf:type ?resource
}
我在这里做错了什么?
我试图用Virtuoso编写以下代码:
prefix dbpediaont: <http://dbpedia.org/ontology/>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
select ?resource where {
dbpedia:Fred_Guy rdf:type ?resource
}
SPARQL结果
如何用耶拿代码编写?
您在这里有两个查询。在问题的最后,您使用的查询没有过滤器,但是与代码中嵌入的查询不同。如果您使用DBpedia终结点上的代码中嵌入的查询,则会收到非常清楚的错误消息:
Virtuoso 22023 Error SL001: The SPARQL 1.1 function STRSTARTS() needs a string value as 2d argument
SPARQL query:
define sql:big-data-const 0
#output-format:text/html
define sql:signal-void-variables 1 define input:default-graph-uri <http://dbpedia.org> prefix dbpediaont: <http://dbpedia.org/ontology/>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
select ?resource where {
?mat rdf:type ?resource
filter strstarts(str(?resource), dbpediaont:)
}
关键是
SPARQL 1.1函数STRSTARTS()需要一个字符串值作为2d参数
你需要写dbpediaont:
用str()
,因为它是一个IRI,而不是字符串:
filter strstarts(str(?resource), str(dbpediaont:))
Virtuoso 37000错误SP030:SPARQL编译器,第21行:“_new_south_wales”之前“,”处的语法错误SPARQL查询:#output-format:application/SPARQL-results+JSON define输入:default-graph-uri PREFIX owl:PREFIX xsd:PREFIX rdfs:PREFIX rdfs:PREFI
问题内容: 我正在尝试使用耶拿创建一个SPARQL查询来查询DBpedia。 当我将查询与独立工具(Twinkle)一起使用时,该查询正在运行,但是当我将其插入此Java代码时,它将返回一个空集。 有什么想法我做错了吗? 问题答案: 问题是你的条款。删除它,一切都很好。有了该子句,我怀疑端点将查询限制在具有该名称的图上,但是不存在这样的图,因此没有结果。 令人困惑的是,查询似乎可以在http://
问题内容: 是否有一个库,可以像JPA中那样以编程方式构建SPARQL查询,或者可以像使用for SQL 一样构建查询? 问题答案: 您可以使用两种方法在Jena中以编程方式构建查询:语法或代数。耶拿维基上有一个介绍。 使用代数,您将执行以下操作: (摘自Wiki页面) 不是(也不是预期的),但是那是其中的一些方式。您而不是AND,而您想要进行OR等。痛点是我的经验中的表达式:您可能想从字符串中解
他们说现在com.hp.hpl.jena.sparql.Engine.Binding.BindingMap在这个版本中不是一个简单的类,而是一个接口。 如果是这样,那么如何在当前版本中运行sparql查询。请根据我分享的代码给出一个例子。提前道谢。
问题内容: Lucene的新手在这里。我在Java客户端中将它与Hibernate一起使用,并且在特定查询中遇到此错误: 搜索适用于所有其他查询,即使结果集为空。我的测试数据库确实具有“ a”的记录。这有什么问题吗? 问题答案: “ a”是停用词,StandardAnalyzer会将其从查询中过滤掉。停用词是在您使用的搜索语言中足够普遍的词,并且对生成搜索结果没有意义。这是一个简短的列表,但是“
给定以下模式: ...以及附加到列表查询listWaterQualities的以下解析器: ...和以下db表结构(主键uuid): ...并在AppSync控制台和通过代码运行查询。我要暂停了。 道歉如果这已经解决了,但我找不到相关的解决方案,有人能发现我的错误/问题吗。我忽略了什么,或者是明显的错误原因? 一如既往地感谢任何和所有的反馈和提前感谢!