如何通过维基百科URL构建Wikidata SPARQL查询获取单个人物数据?我的查询无结果
修复Wikidata SPARQL查询:通过维基百科URL获取人物数据
原查询的问题
- 类型匹配错误:
?article是URI类型,但你在filter里把它和带引号的字符串做比较,Wikidata无法识别这种匹配逻辑,所以查不到结果。 - 查询效率低下:原写法会让系统遍历大量条目,自然耗时久。
正确的查询写法
下面是两种高效且能返回结果的写法:
写法一:用VALUES绑定目标URL(推荐,便于批量扩展)
SELECT ?item ?itemLabel ?itemDescription ?image ?article WHERE { # 直接指定目标维基百科URL,精准定位 VALUES ?article { <https://en.wikipedia.org/wiki/Ronaldo_(footballer,_born_1977)> } ?article schema:about ?item ; schema:inLanguage "en" ; schema:isPartOf <https://en.wikipedia.org/> . # 限定条目为人物 ?item wdt:P31 wd:Q5 ; # 用OPTIONAL包裹头像字段,避免无头像时丢失整个结果 OPTIONAL { ?item wdt:P18 ?image } . SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } } LIMIT 1
写法二:直接将URL写入三元组(更简洁)
SELECT ?item ?itemLabel ?itemDescription ?image ?article WHERE { <https://en.wikipedia.org/wiki/Ronaldo_(footballer,_born_1977)> schema:about ?item ; schema:inLanguage "en" ; schema:isPartOf <https://en.wikipedia.org/> . ?item wdt:P31 wd:Q5 ; OPTIONAL { ?item wdt:P18 ?image } . SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } } LIMIT 1
优化说明
- 直接绑定目标URL,避免系统遍历海量数据,大幅提升查询速度。
- 用
OPTIONAL处理头像字段,防止因目标人物无头像导致查询无结果。 - 用分号合并同一主体的三元组,让查询结构更简洁易读。
内容的提问来源于stack exchange,提问作者Gabtni Mohamed
相关产品推荐
相关产品推荐

