Sparql 从Wikidata中的空白节点检索数据
我试图检索某些人的寿命数据。对于生活在不久前的人来说,这是个问题。例如,的数据集似乎有一个所谓的“空白节点”,用于Sparql 从Wikidata中的空白节点检索数据,sparql,wikidata,Sparql,Wikidata,我试图检索某些人的寿命数据。对于生活在不久前的人来说,这是个问题。例如,的数据集似乎有一个所谓的“空白节点”,用于出生日期(P569)。但是这个空白节点引用了另一个节点最早日期(P1319),它的数据我可以处理得很好 但由于某种原因,我无法检索该节点,但不知何故,这会导致一个完全空的结果集: SELECT DISTINCT ?person ?name ?dateofbirth ?earliestdateofbirth WHERE { ?person wdt:P31 wd:Q5.
出生日期(P569)
。但是这个空白节点引用了另一个节点最早日期(P1319)
,它的数据我可以处理得很好
但由于某种原因,我无法检索该节点,但不知何故,这会导致一个完全空的结果集:
SELECT DISTINCT ?person ?name ?dateofbirth ?earliestdateofbirth WHERE {
?person wdt:P31 wd:Q5. # This thing is Human
?person rdfs:label ?name. # Name for better conformation
?person wdt:P569 ?dateofbirth. # Birthday may result in a blank node
?dateofbirth wdt:P1319 ?earliestdateofbirth # Problem: Plausbible Birth
}
然后我发现另一种语法建议使用?person wdt:P569/wdt:P1319?earliestdateofbirth
,作为某种“快捷方式”——我在上面所做的显式导航语法
那么,如何访问Wikidata中空白节点引用的节点(在我的例子中,特别是最早的出生日期)
但是这个空白节点引用了另一个节点
情况略有不同。最早日期
属性不是的属性,而是语句wd:Q10261 wdt:P569
的属性
在Wikidata中,这些注释使用表示
您的查询应该是:
选择不同的人?姓名?出生日期?最早的出生日期{
值(?人){(wd:Q10261)}
人wdt:P31 wd:Q5.#——是人类
?人员rdfs:标签?名称。#——名称,以便更好地确认
?人员p:P569/pq:P1319?最早出生日期。
过滤器(lang(?name)=“en”)
}
顺便说一句,时间精度(出生日期已知时使用)是另一个限定词:
SELECT ?person ?personLabel ?value ?precisionLabel {
VALUES (?person) {(wd:Q859) (wd:Q9235)}
?person wdt:P31 wd:Q5 ;
p:P569/psv:P569 [ wikibase:timeValue ?value ;
wikibase:timePrecision ?precisionInteger ]
{
SELECT ?precision (xsd:integer(?precisionDecimal) AS ?precisionInteger) {
?precision wdt:P2803 ?precisionDecimal .
}
}
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
我觉得自己很愚蠢,但我无法马上发现:它确实有效,但您的查询有什么不同?过滤器
和值
似乎只会更严格地限制它。请仔细查看:)。我将在几分钟后解释,现在我正在寻找好的链接。啊,您对P569
和P1319
使用了不同的前缀,我很高兴有一些好的链接!哇,谢谢你如此彻底地更新你的答案,这真的很有帮助!
SELECT ?person ?personLabel ?value ?precisionLabel {
VALUES (?person) {(wd:Q859) (wd:Q9235)}
?person wdt:P31 wd:Q5 ;
p:P569/psv:P569 [ wikibase:timeValue ?value ;
wikibase:timePrecision ?precisionInteger ]
{
SELECT ?precision (xsd:integer(?precisionDecimal) AS ?precisionInteger) {
?precision wdt:P2803 ?precisionDecimal .
}
}
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}