我正在尝试通过 Python 脚本查询 Wikidata SPARQL 端点。我已成功获取实体的 QID,但无法获取标签。
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT DISTINCT ?item ?itemLabel WHERE {
{
?item p:P31 ?statement0.
?statement0 (ps:P31/(wdt:P279*)) wd:Q103890060.
FILTER(NOT EXISTS { ?statement0 prov:wasDerivedFrom ?reference. })
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE]".
}
}
}
但是,当我使用脚本查询时,我没有得到标签,我只得到 uri 和 qid:
{
"item":{
"type":"uri",
"value":"http://www.wikidata.org/entity/Q5449566"
},
"itemLabel":{
"type":"literal",
"value":"Q5449566"
}
}
我需要 URI 和标签,而不是 QID。
我不确定我的查询出了什么问题。我使用维基数据查询服务提供的 python 代码来查看是否缺少参数或其他内容,但这也提供了上述结果。
根据评论和Wikidata文档:
维基数据查询服务网站自动将[AUTO_LANGUAGE]替换为当前用户界面的语言代码。例如,如果用户的 UI 为法语,则 SPARQL 的代码 bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" 将在发送到查询服务之前转换为 bd:serviceParam wikibase:language "fr,en"。
当您从脚本构建请求时,不要使用
[AUTO_LANGUAGE]
,而使用“en”或“fr”等标签。