在Java中进行SPARQL查询

3

我正在使用Java编写SPARQL查询,以选择所有特定标题的记录。我正在尝试使用以下查询:

SELECT * WHERE { ?title rdf:type ?specific_title .}    

但是它不能工作。有人知道我的错误在哪里吗? 谢谢。

5
请说明一下“不起作用”的具体表现。是否有错误信息、堆栈跟踪或行为可以作为原因的线索? - duffymo
服务器返回的答案是根本原因java.lang.IndexOutOfBoundsException: Index: 3, Size: 3 - user1218282
请问您能否提供您代码或服务器返回的完整堆栈跟踪信息? - RobV
我已经问过了,请展示一下实际的RDF数据示例,否则你就只是让我们猜测。 - DNA
如果服务器在评估您的查询时遇到IndexOutOfBoundsException,则几乎可以肯定这是服务器软件中的错误。您使用哪个三元组存储,以及哪个版本?您可能需要联系开发人员,看看是否有可用的更新修复此问题。 - Jeen Broekstra
2个回答

2

java.lang.IndexOutOfBoundsException: 索引:3,大小:3。

听起来像是您正在尝试迭代结果集,并请求不存在的行。您是否在使用Jena?如果是,则应该简单地采取以下方式:

if (ResultSet.hasNext()) {
    ResultSet.next();
    QuerySolution nextResult = ResultSet.nextSolution();
}

0
你能展示一下你正在运行此查询的数据的例子吗?
你是否在查询开头定义了rdf前缀(命名空间)。
还请注意,rdf:type属性的值应该是一个由其URI表示的rdfs:Class,例如。
PREFIX rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
PREFIX ex: http://www.example.com#
SELECT ?x WHERE { ?x rdf:type ex:ExampleClass }  

1
?specific_title 不必绑定。假设 OP 的查询(假设正确的命名空间声明)在语法上是正确的。 - soulcheck
糟糕,你是对的。这会教训我匆忙发布帖子。我几乎从不使用SELECT *查询。我会修复的。 - DNA
是的,我定义了RDF前缀。我有一些记录,包括标题、名字、姓氏等,我想找到具有特定标题的记录。 - user1218282
请给我们展示一下数据的例子,否则就无法找出正确的查询语句。 - DNA
我的数据就像你的答案。通过这个查询,我可以找到所有记录。我想要一个查询来查找具有特定标题的记录,例如用户添加的标题,这就是为什么我尝试使用 ?specific_title。 - user1218282

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接