有人能帮我理解为什么?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' }
}
这给出了所需的结果。请注意,婚礼属性的名称空间会根据对象的不同而变化。请参阅此处了解更多信息。