查询Wikidata,p和wdt默认前缀之间的差异 [英] Querying WikiData, difference between p and wdt default prefix
本文介绍了查询Wikidata,p和wdt默认前缀之间的差异的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我刚接触Wikidata,我不知道什么时候应该使用-->
WDT前缀(http://www.wikidata.org/prop/direct/)
以及何时应该使用-->
p前缀(http://www.wikidata.org/prop/)。
在我的SPARQL查询中。有没有人能解释一下它们各自的含义和区别?
推荐答案
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". }
}
现在少了一行,因为我们不再查找有关涂鸦的语句,而是查找涂鸦本身。用相同P31
属性的wdt:
版本来总结对偶p:
和ps:
链接。但是,请注意:
- 这项技术只适用于那些本质上是真是假的陈述,比如涂鸦或不涂鸦。(
wdt:
中的&t";代表";truthy";)。 wdt:
可用的信息有时只是缺少某些事实。根据我的经验,p:
和ps:
查询通常比wdt:
查询返回更多的结果。
这篇关于查询Wikidata,p和wdt默认前缀之间的差异的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文