查询维基数据,p和wdt默认前缀的区别
Querying WikiData, difference between p and wdt default prefix
我是维基数据的新手,不知道什么时候应该使用 -->
wdt 前缀 (http://www.wikidata.org/prop/direct/)
以及我应该何时使用 -->
p 前缀 (http://www.wikidata.org/prop/)。
在我的 sparql 查询中。有人能解释一下这些是什么意思,有什么区别吗?
它们只是 XML 名称空间前缀,基本上是完整 URI 的快捷方式。所以给定 wdt:Apples,完整的 URI 是 http://www.wikidata.org/prop/direct/Apples and given p:fruitType the URI is http://www.wikidata.org/prop/fruitType.
Prefixes/namespaces 没有其他含义,它们只是定义具有 URL 格式的名称的简单方法。然而,诸如在 http://www.wikidata.org/prop/ 中定义属性的约定对于区分术语的含义很有用,因此 'direct' 也可能是 属性 的子类型(在这种情况下必须这样做与维基百科转储)。
对于具体细节,您需要希望作者已经公开了一些命名约定,或者陷入 "was it p:P51 or p:P15 or maybe wdt:P51?" 的循环。祝你好运,因为 "semantics" 语义技术已经丢失。
p:
命名空间中的内容用于select 语句。 wdt:
命名空间中的事物用于 select entites。实体 selection,带有 wdt:
,允许您简化或总结涉及语句 selection.
的更复杂的查询
当您看到 p:
时,您通常很快就会看到 ps:
或 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". }
}
这里使用了两个不同版本的 P31
属性,位于不同的命名空间中。每个版本都对如何连接到其他项目有不同的期望。 p:
命名空间中的事物将实体连接到语句,而 ps:
命名空间中的事物将语句连接到值。在示例中,p:P31
用于 select 关于实体的语句。实体将是涂鸦,但我们直到下一行才指定,其中 ps:P31
用于 select 语句的值(主题),指定这些值应该是涂鸦。
所以,这有点复杂! 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”代表“真实”)。
wdt:
可用的信息有时只是缺少一些事实。根据我的经验,p:
和 ps:
查询通常会 return 比 wdt:
查询多一些结果。
如果您转到 https://www.wikidata.org/wiki/Q76 上巴拉克奥巴马的维基数据项目页面并向下滚动,您会看到“配偶”属性 P26
的条目:
将 p:
前缀视为到达图像右侧整个白框的一种方式。
为了获得白框内的信息,您需要更深入地挖掘。
为了获得信息的主要部分(“Michelle Obama”),您将 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:
前缀结合起来。
下面的例子查询returns所有的信息连同语句结点:
SELECT ?s ?spouse ?time ?place WHERE {
wd:Q76 p:P26 ?s .
?s ps:P26 ?spouse .
?s pq:P580 ?time .
?s pq:P2842 ?place .
}
我是维基数据的新手,不知道什么时候应该使用 -->
wdt 前缀 (http://www.wikidata.org/prop/direct/)
以及我应该何时使用 -->
p 前缀 (http://www.wikidata.org/prop/)。
在我的 sparql 查询中。有人能解释一下这些是什么意思,有什么区别吗?
它们只是 XML 名称空间前缀,基本上是完整 URI 的快捷方式。所以给定 wdt:Apples,完整的 URI 是 http://www.wikidata.org/prop/direct/Apples and given p:fruitType the URI is http://www.wikidata.org/prop/fruitType.
Prefixes/namespaces 没有其他含义,它们只是定义具有 URL 格式的名称的简单方法。然而,诸如在 http://www.wikidata.org/prop/ 中定义属性的约定对于区分术语的含义很有用,因此 'direct' 也可能是 属性 的子类型(在这种情况下必须这样做与维基百科转储)。
对于具体细节,您需要希望作者已经公开了一些命名约定,或者陷入 "was it p:P51 or p:P15 or maybe wdt:P51?" 的循环。祝你好运,因为 "semantics" 语义技术已经丢失。
p:
命名空间中的内容用于select 语句。 wdt:
命名空间中的事物用于 select entites。实体 selection,带有 wdt:
,允许您简化或总结涉及语句 selection.
当您看到 p:
时,您通常很快就会看到 ps:
或 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". }
}
这里使用了两个不同版本的 P31
属性,位于不同的命名空间中。每个版本都对如何连接到其他项目有不同的期望。 p:
命名空间中的事物将实体连接到语句,而 ps:
命名空间中的事物将语句连接到值。在示例中,p:P31
用于 select 关于实体的语句。实体将是涂鸦,但我们直到下一行才指定,其中 ps:P31
用于 select 语句的值(主题),指定这些值应该是涂鸦。
所以,这有点复杂! 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”代表“真实”)。 wdt:
可用的信息有时只是缺少一些事实。根据我的经验,p:
和ps:
查询通常会 return 比wdt:
查询多一些结果。
如果您转到 https://www.wikidata.org/wiki/Q76 上巴拉克奥巴马的维基数据项目页面并向下滚动,您会看到“配偶”属性 P26
的条目:
将 p:
前缀视为到达图像右侧整个白框的一种方式。
为了获得白框内的信息,您需要更深入地挖掘。
为了获得信息的主要部分(“Michelle Obama”),您将 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:
前缀结合起来。
下面的例子查询returns所有的信息连同语句结点:
SELECT ?s ?spouse ?time ?place WHERE {
wd:Q76 p:P26 ?s .
?s ps:P26 ?spouse .
?s pq:P580 ?time .
?s pq:P2842 ?place .
}