我是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:查询返回更多结果。

07-24 09:54