我的本体IRI是“http://mycompany.com/ontologies/quality”。我想找到“查找具有给定对象属性的所有主题(hasSolution)”
SELECT ?subject
WHERE { ?subject hasSolution <http://mycompany.com/ontologies/quality#Issue> } LIMIT 10
导致此错误消息:
Caused by: org.openrdf.query.parser.sparql.ast.TokenMgrError: Lexical error at line 8, column 30. Encountered: " " (32), after : "hasSolution"
at org.openrdf.query.parser.sparql.ast.SyntaxTreeBuilderTokenManager.getNextToken(SyntaxTreeBuilderTokenManager.java:3499)
at org.openrdf.query.parser.sparql.ast.SyntaxTreeBuilder.jj_ntk(SyntaxTreeBuilder.java:8861)
答案 0 :(得分:2)
我怀疑这里的问题是你如何表达你的谓词 - 它应该是IRI形式,要么使用这样的尖括号:
SELECT ?subject
WHERE {
?subject <http://mycompany.com/ontologies/hasSolution> <http://mycompany.com/ontologies/quality#Issue>
}
LIMIT 10
或者,使用PREFIX语句给你这样的东西:
PREFIX mycoont: <http://mycompany.com/ontologies/>
SELECT ?subject
WHERE
{
?subject mycoont:hasSolution <http://mycompany.com/ontologies/quality#Issue>
}
LIMIT 10
或者,更一般地说,如果您不知道谓词IRI究竟是什么,您可以将其作为查询的一部分:
SELECT ?subject ?predicate
WHERE {
?subject ?predicate <http://mycompany.com/ontologies/quality#Issue>
}
LIMIT 10
并探索结果 - 返回的?谓词值应表示为完整的IRI,或者,根据您的查询引擎,表示为某种形式的前缀:后缀排列。
在探索结果时,您应该能够将适当的值复制粘贴到WHERE子句的?谓词三元组中,并从SELECT子句中删除?谓词三元组。