sparql - 维基数据 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' }
}
基本上,我要检索的是 Jennifer Aniston 的配偶的婚姻开始和结束日期。
提前致谢!
解决方案
问题似乎是您正在查询 Jennifer Aniston 的配偶的结婚日期,而不是直接查询她的结婚日期。
您的查询返回一些奇怪的结果,原因有两个:
1.布拉德皮特第二次结婚,安吉丽娜朱莉(2014-19)。因此,您的查询也会返回这些日期。
2. Justin Theroux 和 Jennifer Aniston 的数据不一致(这是一个维基数据问题)。特别是,正如@UninformedUser 所指出的,贾斯汀的页面没有他们结婚的结束日期。詹妮弗安妮斯顿关于她与贾斯汀婚姻的数据比他的数据更具体,并且有开始和结束日期。
推理是可以用来处理这类问题的东西,一些三联商店有它。
尽管如此,您需要的查询是:
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' }
}
这给出了所需的结果。请注意,婚礼属性的名称空间会根据对象的不同而变化。请参阅此处了解更多信息。
推荐阅读
- reactjs - 如何使用材料设计将图标与选择控件对齐?
- java - Android Polyline 未显示在发布 apk 中
- python - 如何使用硒获取具有id的元素的文本
- node.js - 函数返回空 [object Promise]
- mysql - Laravel 从 mysql 获取“唯一”行
- java - 无法评估表达式方法抛出“org.hibernate.exception.GenericJDBCException”异常
- postgresql - 多列 BRIN 列顺序是否重要?
- javascript - 为什么我的玩家街机物理身体没有更新触摸?移相器 3
- java - 找不到 vaadin css 文件
- javascript - React Hooks,为不同的变量声明相同的状态