一开始这似乎是一件微不足道的事情,但到目前为止,我还没有设法使用 SPARQL 获取给定资源的唯一标识符。我的意思是给出,例如,rdf:Description rdf:about="http://..."
然后是一些标识这个资源的属性,我想做的是首先找到这个资源,然后检索给定某个 URI 的所有三元组。
我通过在WHERE
子句中编写语句来尝试天真的方法,例如:
?x rdf:about ?y and ?x rdfs:about ?y
我希望我是准确的。
一开始这似乎是一件微不足道的事情,但到目前为止,我还没有设法使用 SPARQL 获取给定资源的唯一标识符。我的意思是给出,例如,rdf:Description rdf:about="http://..."
然后是一些标识这个资源的属性,我想做的是首先找到这个资源,然后检索给定某个 URI 的所有三元组。
我通过在WHERE
子句中编写语句来尝试天真的方法,例如:
?x rdf:about ?y and ?x rdfs:about ?y
我希望我是准确的。
您犯了一个典型的错误:将 RDF(这是 SPARQL 查询的内容)与其序列化(其中之一)混淆,即 RDF/XML。rdf:about
(和rdf:ID
, rdf:Description
, rdf:resource
)是 RDF/XML 的一部分,是 RDF 的一种写法。您可以使用RDF Validator来查看从一段 RDF/XML 中产生的 RDF 三元组。
在您的情况下,让我们从以下开始:
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/terms/">
<rdf:Description rdf:about="http://www.example.org/">
<dc:title>Example for Donal Fellows</dc:title>
</rdf:Description>
</rdf:RDF>
将其插入验证器,您将获得:
Number Subject Predicate Object
1 http://www.example.org/ http://purl.org/dc/terms/title "Example for Donal Fellows"
(您也可以要求图片表示)
注意rdf:about
不存在:它的值提供了三元组的主题。
如何进行查询以查找与关联的属性http://www.example.org
?像这样:
select * {
<http://www.example.org/> ?predicate ?object
}
你会得到:
?predicate ?object
<http://purl.org/dc/terms/title> "Example for Donal Fellows"
您会注意到查询是与变量 ( ?v
) 的三重匹配,在我们想要查找值的地方。我们还可以通过询问来询问谓词http://www.example.org/
与什么相关联"Example for..."
:
select * {
<http://www.example.org/> ?predicate "Example for Donal Fellows"
}
这种模式匹配是 SPARQL 的核心。
RDF/XML 是一头棘手的野兽,您可能会发现使用非常冗长但清晰的 N-Triples 或使用Turtle更容易,它类似于具有大量速记和缩写的 N-Triples。rdf 社区通常更喜欢 Turtle。
PSrdfs:about
在任何地方都不存在。