使用SPARQL从yago获取所有属性

问题描述 投票:0回答:1

我想从 yago 检索所有属性,这是一个 RDFS 知识库(.nt 格式)。我尝试过 如下查询

SELECT distinct ?x WHERE { ?y ?x ?z . }

这给了我所有的谓词。

在网络中,他们将谓词定义为谓词(属性)。据此我的结果应该是正确的。但我的教授建议我进行以下查询

SELECT distinct ?x WHERE { ?y ?x ?z . ?z a ?zt. }

他没有解释原因。这两个查询的结果略有不同。第二个查询的结果是第一个查询的子集。是不是更精确的意思?

谁能帮我理解他为什么添加

?z a ?zt .
?用于获取属性的对象总是
rdf:type
属于不同的类吗?

sparql rdf turtle-rdf
1个回答
1
投票

根据RDF 1.1规范

抽象语法的核心结构是一组三元组,每个三元组由主语、谓语和宾语组成。

[...]

谓词本身是一个IRI,表示一个属性,即可以被视为二元关系的资源。

根据这些定义,您可以通过第一个请求获取SPARQL中的所有属性:

SELECT distinct ?x WHERE { ?y ?x ?z . }

第二个要求更具体:

SELECT distinct ?x WHERE { ?y ?x ?z . ?z a ?zt. }

它列出了在三元组中至少使用一次的所有属性,其中对象也作为主语参与到

rdf:type
三元组中。

请注意,在 SPARQL 中

a
rdf:type
快捷方式

© www.soinside.com 2019 - 2024. All rights reserved.