Wikidata SPARQL查询.不是结果中的所有属性



有人能帮我理解为什么?sEnd属性对于此处的最后一条记录为空?

SELECT ?sLabel ?sStart ?sEnd
WHERE {
BIND(wd:Q32522 as ?p).
?s wdt:P26 ?p .
OPTIONAL { ?s p:P26 [pq:P580 ?sStart] }
OPTIONAL { ?s p:P26 [pq:P582 ?sEnd] }
SERVICE wikibase:label { bd:serviceParam wikibase:language 'en' }
}

基本上,我想检索的是詹妮弗·安妮斯顿的配偶,以及婚姻的开始和结束日期。

提前感谢!

问题似乎是你在查询詹妮弗·安妮斯顿配偶的结婚日期,而不是直接查询她的。

由于两个不同的原因,您的查询返回了一些奇怪的结果:

1.布拉德·皮特第二次结婚,与安吉丽娜·朱莉(2014-19(。因此,您的查询也会返回这些日期。

2.贾斯汀·塞鲁和珍妮弗·安妮斯顿的数据不一致(这是维基数据的问题(。特别是,正如@UniinformedUser所指出的,贾斯汀的页面上没有他们婚姻的结束日期。詹妮弗·安妮斯顿关于她和贾斯汀婚姻的数据比贾斯汀的数据更具体,并且有开始和结束日期。

推理是一种可以用来处理这类问题的东西,一些三元组商店也有

尽管如此,您需要的查询是:

SELECT ?spouseLabel ?sStart ?sEnd
WHERE {
BIND(wd:Q32522 as ?person).
?person p:P26 ?marriage .
?marriage pq:P580 ?sStart ;
ps:P26 ?spouse .
OPTIONAL{?marriage pq:P582 ?sEnd}

SERVICE wikibase:label { bd:serviceParam wikibase:language 'en' }
}

这给出了所需的结果。请注意,婚礼属性的名称空间会根据对象的不同而变化。请参阅此处了解更多信息。

最新更新