查询WikiData,p和wdt默认前缀之间的区别

时间:2016-03-15 22:03:54

标签: sparql rdf wikidata

我是wikidata的新手,我无法弄明白何时应该使用 - >

wdt 前缀(http://www.wikidata.org/prop/direct/

当我应该使用 - >

p 前缀(http://www.wikidata.org/prop/)。

在我的sparql查询中。有人能解释一下这些意味着什么,有什么区别?

2 个答案:

答案 0 :(得分:4)

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:查询返回的结果要多一些。

答案 1 :(得分:1)

它们只是XML名称空间前缀,基本上是完整URI的快捷方式。所以给定wdt:Apples,完整的URI是http://www.wikidata.org/prop/direct/Apples,给定p:fruitType,URI是http://www.wikidata.org/prop/fruitType

前缀/命名空间没有其他含义,它们只是用URL格式定义某些内容名称的方法。但是,约定(例如在http://www.wikidata.org/prop/中定义属性)对于区分术语的含义很有用,因此“直接”也可能是属性的子类型(在这种情况下与维基百科转储有关)。 / p>

具体而言,你需要希望作者已经暴露了一些命名惯例,或者陷入了“它是p:P51还是p:P15还是可能是p51?”的循环中。也许幸运与你在一起,因为语义技术的“语义”已经丢失。