首页 文章

查询Spaces Sparql

提问于
浏览
6

如果我想返回三重奏的“玩乐”结果 . 我不知道如何解释这两个词之间的空间 . 下面是我试过的一个查询,但它没有用 . 让我知道是否有人能够发现我做错了什么

<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> }";

2 回答

  • 2

    简短的回答:你不能,至少不能直接 .

    稍微长一点的答案:RDF本身使用RDF URI引用 . 另一方面,SPARQL查询语言使用IRI(原因是RDF早于IRI,并且RDF URI引用的概念是在预期IRI最终会是什么样的情况下开发的 . 他们差不多正确:)) .

    遗憾的是,RDF URI引用和IRI的定义之间存在差异,您刚刚遇到其中一种情况:虽然RDF URI引用允许使用空格,但IRI却不允许 . SPARQL语法无法处理URI引用,例如示例中的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")
    }
    
  • 9
    • 这是 owl:sameAs 不是 owl:sameas . 注意资本A.

    • IRI中不能有空格 .

相关问题