【发布时间】:2019-01-15 00:20:02
【问题描述】:
我有一个在 VPS 上运行的 graphDB 实例,我想获取具有 hasUnit 关系的组织列表。 以下查询在 SPARQL 执行页面上执行良好:
PREFIX org: <http://www.w3.org/ns/org#>
SELECT (?s AS ?Organization) (COUNT(?o) AS ?Count)
WHERE{
?s org:hasUnit ?o .
} GROUP BY ?s
但是当我尝试使用 REST 接口获取结果时,我收到一个错误“MALFORMED QUERY: org.eclipse.rdf4j.query.parser.sparql.ast.VisitorException: QName 'org:hasUnit' uses an undefined prefix”
这是我的请求 uri:
http://23.101.230.37:7200/repositories/CSIRO?query= SELECT (?s AS ?Organization) (COUNT(?o) AS ?Count) WHERE{
?s org:hasUnit ?o . } GROUP BY ?s
以下查询可以正常执行:
http://23.101.230.37:7200/repositories/CSIRO?query= SELECT (?s AS ?Organization) (COUNT(?o) AS ?Count) WHERE{
?s ?p ?o . } GROUP BY ?s
【问题讨论】:
-
你真的看不懂错误信息
"QName 'org:hasUnit' uses an undefined prefix"吗?我觉得它非常清晰和有帮助。但到目前为止,您并不是第一个在 SPARQL 查询中缺少前缀声明的人。从我的角度来看,我总是尝试添加所有使用的前缀以使 SPARQL 独立,这样您就可以在任何环境中运行它而无需预定义的前缀。