我是wikidata的新手,我不知道何时应该使用->
wdt前缀(http://www.wikidata.org/prop/direct/)
当我应该使用->
p前缀(http://www.wikidata.org/prop/)。
在我的sparql查询中。有人可以解释这些含义是什么和有什么区别吗?
最佳答案
p:
名称空间中的内容用于选择语句。 wdt:
命名空间中的属性用于选择实体。
当您看到p:
时,通常很快就会看到ps:
或pq:
。这是因为您很少想要一个语句列表。您通常希望对这些陈述有所了解。
此示例是一个两步过程,向您显示Wikidata中的所有涂鸦:
SELECT ?graffiti ?graffitiLabel
WHERE
{
?graffiti p:P31 ?statement . # entities that are statements
?statement ps:P31 wd:Q17514 . # which state something is graffiti
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
此处使用了两个不同版本的
P31
属性,它们位于不同的命名空间中。每个版本对如何连接到其他项目都有不同的期望。 p:
命名空间中的事物将实体连接到语句,而ps:
命名空间中的事物将语句连接到值。在示例中,p:P31
用于选择有关实体的语句。该实体将是涂鸦,但是直到下一行才指定。然后,ps:P31
用于选择语句的值(主题)并指定这些值应为涂鸦。所以,这有点复杂!
wdt:
命名空间应该使这种查询更简单。该示例可以重写为:SELECT ?graffiti ?graffitiLabel
WHERE
{
?graffiti wdt:P31 wd:Q17514 . # entities that are graffiti
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
现在减少了一行,因为我们不再寻找有关涂鸦的陈述,而是寻找涂鸦本身。双重
p:
和ps:
链接使用相同的wdt:
属性的P31
版本进行了汇总。但是,请注意:此技术仅适用于本质上是对还是错的语句,例如是否涂鸦。 (
wdt:
中的“ t”代表“真实”)。有时
wdt:
可用的信息只是缺少一些事实。根据我的经验,p:
和ps:
查询通常会比wdt:
查询返回更多结果。