修改Wikidata SPARQL查询以支持多条目婚姻起始日期获取
修改Wikidata SPARQL查询以批量获取婚姻信息
原查询硬编码了特定实体wd:Q42,只能获取单个人的婚姻数据。要批量获取符合条件群体(比如所有作家、美国公民)的婚姻起始日期,只需做以下调整:
核心修改思路
- 将固定实体
wd:Q42替换为变量?person,作为查询的目标群体 - 给
?person添加属性约束,匹配你需要的群体(比如职业、国籍) - 新增
SELECT子句明确返回字段,让结果更直观
示例1:获取所有作家的婚姻信息
SELECT ?person ?personLabel ?spouse ?spouseLabel ?starttime ?endtime WHERE { ?person wdt:P106 wd:Q36180; # 筛选职业为作家(wd:Q36180)的实体 p:P26 ?statement. ?statement ps:P26 ?spouse; pq:P580 ?starttime; pq:P582 ?endtime. SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } } ORDER BY (?starttime)
示例2:获取所有美国公民的婚姻信息
SELECT ?person ?personLabel ?spouse ?spouseLabel ?starttime ?endtime WHERE { ?person wdt:P27 wd:Q30; # 筛选国籍为美国(wd:Q30)的实体 p:P26 ?statement. ?statement ps:P26 ?spouse; pq:P580 ?starttime; pq:P582 ?endtime. SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } } ORDER BY (?starttime)
扩展:多条件叠加(比如美国作家)
如果需要同时满足多个筛选条件,直接叠加属性约束即可:
SELECT ?person ?personLabel ?spouse ?spouseLabel ?starttime ?endtime WHERE { ?person wdt:P106 wd:Q36180; # 职业为作家 wdt:P27 wd:Q30; # 国籍为美国 p:P26 ?statement. ?statement ps:P26 ?spouse; pq:P580 ?starttime; pq:P582 ?endtime. SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } } ORDER BY (?starttime)
内容的提问来源于stack exchange,提问作者F Gh
相关产品推荐
相关产品推荐

