Wikidata SPARQL查询部分条目未返回正常itemLabel问题咨询
原因说明
查询中部分条目返回Q开头的ID作为label,是wikibase:label服务的兜底机制导致的:
- 你在label服务中配置的语言优先级为
[AUTO_LANGUAGE],fr,即优先匹配查询环境自动识别的语言标签,匹配不到时返回法语标签 - 对应条目在你指定的两个语言维度下都没有配置标签文本时,服务就会直接返回条目ID作为展示内容,不会主动拉取其他语言的标签。
调整方法
两种方案可以解决这个问题:
- 扩充语言回退列表,增加通用语言作为兜底,比如将label服务配置修改为:
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],fr,en". }
修改后如果法语、自动识别语言都没有对应标签,会回退返回英语标签,大幅减少纯ID返回的情况。
- 如果需要结果必须有可读标签,可以额外增加过滤规则,直接排除指定语言下无标签的条目。
另外补充查询逻辑的注意点:当前用FILTER NOT EXISTS {?item wdt:P570|wdt:P509|wdt:P20 ?o}判断在世人物存在一定数据误差,部分已去世人物可能存在死亡相关属性缺漏,会被误判为在世。
内容的提问来源于stack exchange,提问作者curious
相关产品推荐
相关产品推荐

