【问题标题】:Querying with Spaces Sparql使用空间查询 Sparql
【发布时间】:2012-01-29 17:28:22
【问题描述】:
如果我想返回三元组“玩得开心”的结果。我不知道如何解释单词之间的空格。以下是我尝试过的查询,但没有成功。让我知道是否有人能发现我做错了什么
<rdf:Description rdf:about="http://website.com/urls/playing games">
<owl:sameAs rdf:resource="http://website.com/urls/having fun"/>
</rdf:Description>
"PREFIX owl: <http://www.w3.org/2002/07/owl#> SELECT * WHERE { ?y owl:sameAs+ <http://website.com/urls/playing fun> }";
【问题讨论】:
标签:
sparql
semantic-web
jena
arq
【解决方案1】:
简答:你不能,至少不能直接。
略长一点的答案:RDF 本身使用 RDF URI 引用。另一方面,SPARQL 查询语言使用 IRI(原因是 RDF 早于 IRI,并且 RDF URI 引用的概念是在预期 IRI 最终的样子时开发的。他们几乎做对了 :))。
不幸的是,RDF URI 引用和 IRI 的定义存在差异,您刚刚遇到了一种情况:虽然 RDF URI 引用允许空格,但 IRI 不允许。 SPARQL 语法无法处理 URI 引用,例如您的示例中的引用。请查看this discussion 了解更多详情。
你最好的选择?避免在 URI 引用中使用空格。用下划线替换它们或删除它们。
话虽如此,有一种解决方法可以使您的查询正常工作:
PREFIX owl: <http://www.w3.org/2002/07/owl#>
SELECT ?y
WHERE {
?y owl:sameAs+ ?x
FILTER (str(?x) = "http://website.com/urls/playing fun")
}
【解决方案2】:
- 是
owl:sameAs 不是owl:sameas。注意大写 A。
- IRI 中不能有空格。