Bah*_*har 8 rdf sparql wikidata
我是wikidata的新手,我不知道何时应该使用->
wdt前缀(http://www.wikidata.org/prop/direct/)
当我应该使用->
p前缀(http://www.wikidata.org/prop/)。
在我的sparql查询中。有人可以解释这些含义是什么吗?有什么区别?
在物联网p:的命名空间用来选择语句。在物联网wdt:的命名空间用来选择的entites。实体选择与wdt:允许您简化或总结涉及语句选择的更复杂的查询。
当您看到 a 时,p:您通常会看到 aps:或pq:紧随其后。这是因为您很少需要语句列表;您通常想了解有关这些陈述的一些信息。
这个例子是一个两步过程,向你展示了维基数据中的所有涂鸦:
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". }
}
Run Code Online (Sandbox Code Playgroud)
P31这里使用了两个不同版本的属性,位于不同的命名空间中。每个版本都对其如何连接到其他项目有不同的期望。p:命名空间中的事物将实体连接到语句,ps:命名空间中的事物将语句连接到值。在示例中,p:P31用于选择关于实体的语句。实体将是涂鸦,但我们直到下一行才指定, whereps:P31用于选择语句的值(主题),指定这些值应该是涂鸦。
所以,这有点复杂!该wdt:命名空间应该做出这种查询假笑的。该示例可以重写为:
SELECT ?graffiti ?graffitiLabel
WHERE
{
?graffiti wdt:P31 wd:Q17514 . # entities that are graffiti
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
Run Code Online (Sandbox Code Playgroud)
这现在缩短了一行,因为我们不再寻找关于涂鸦的陈述,而是寻找涂鸦本身。对偶p:和ps:链接用wdt:相同P31属性的一个版本进行总结。但是,请注意:
wdt:代表“真实”)。wdt:有时,可获得的信息只是缺少一些事实。根据我的经验,通常 a p:andps:查询会返回比wdt:查询多一些的结果。如果您转到巴拉克·奥巴马 (Barack Obama) 的维基数据项目页面https://www.wikidata.org/wiki/Q76并向下滚动,您会看到“配偶”属性的条目P26:

将p:前缀视为访问图像右侧整个白框的一种方式。为了获取白盒内的信息,您需要更深入地挖掘。为了获取信息的主要部分(“米歇尔·奥巴马”),您可以将p:前缀与ps:前缀组合起来,如下所示:
SELECT ?spouse WHERE {
wd:Q76 p:P26 ?s .
?s ps:P26 ?spouse .
}
Run Code Online (Sandbox Code Playgroud)
该变量?s是一个抽象语句节点(也称为白框)。
您只需使用查询正文中的一个三元组即可获得相同的信息wdt::
SELECT ?spouse WHERE {
wd:Q76 wdt:P26 ?spouse .
}
Run Code Online (Sandbox Code Playgroud)
那么你为什么要使用呢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 .
}
Run Code Online (Sandbox Code Playgroud)