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

19

https://dev59.com/JqXja4cB1Zd3GeqPMiKM#46197121 - Stanislav Kralin
3个回答

14

p: 命名空间中的内容用于选择语句wdt: 命名空间中的内容用于选择实体。 使用 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:链接可用同样的P31属性的wdt:版本进行总结。然而,请注意:

  • 这个技术仅适用于真实或虚假的语句,比如,某物是不是涂鸦。(wdt:中的“t”代表“truthy”)。
  • wdt:可用的信息有时会缺少一些事实。根据我的经验,p:ps:查询通常会返回比wdt:查询多一些结果。

2
“wdt:” 命名空间中的内容用于选择实体。不,wdt: 前缀也可以选择像 wdt:P1082 这样的文字值。 - iron9

7
如果您访问巴拉克·奥巴马(Barack Obama)在Wikidata上的条目页面https://www.wikidata.org/wiki/Q76并向下滚动,您会看到“配偶”属性P26的条目: wikidata-spousep:前缀视为访问图像右侧整个白色框的方法。 要访问白色框内的信息,您需要进行更深层次的挖掘。 要访问信息的主要部分(“米歇尔·奥巴马”),您可以这样组合p:前缀和ps:前缀:
SELECT ?spouse WHERE {
  wd:Q76 p:P26 ?s .
  ?s ps:P26 ?spouse .
}

变量?s是一个抽象的语句节点(也称为白盒子)。

通过使用wdt:,可以在查询主体中仅使用一条三元组获得相同的信息:

SELECT ?spouse WHERE {
  wd:Q76 wdt:P26 ?spouse .
}

那么为什么会使用p:呢? 你可能已经注意到白色框中还包含元信息(“开始时间”和“结婚地点”)。 为了获取元信息,您需要将p:前缀与pq:前缀组合起来。 以下示例查询返回所有信息以及语句节点:

SELECT ?s ?spouse ?time ?place WHERE {
  wd:Q76 p:P26 ?s .
  ?s ps:P26 ?spouse .
  ?s pq:P580 ?time .
  ?s pq:P2842 ?place .
}

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/中定义属性的约定非常有用,可以分离术语的含义,因此“direct”很可能也是属性的子类型(在这种情况下与维基百科转储有关)。
要了解具体内容,您需要希望作者公开了一些命名约定,否则将陷入“是p:P51还是p:P15或者可能是wdt:P51?”的循环中。祝你好运,因为“语义技术”的“语义”已经丢失了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接