Wikidata中过滤ISO 639-2术语代码查询无结果如何解决
问题根因
你之前的查询失效的核心原因确实是wdt:P219直接返回的是字符串类型的代码值,而“属于术语代码/文献代码”的限定属性是挂载在ISO 639-2代码对应的Wikidata声明节点上,而非字符串值本身,因此无法直接对?code变量附加属性过滤。
可行查询方案
需要使用Wikidata的声明级三元组访问语法,通过访问声明节点的限定属性实现过滤,正确写法如下:
SELECT ?item ?code WHERE { ?item p:P219 ?codeStatement. # 获取语言条目关联的ISO 639-2代码声明节点 ?codeStatement ps:P219 ?code. # 从声明节点中提取代码字符串值 ?codeStatement pq:P518 wd:Q1725664. # 过滤仅保留术语类型的代码声明 }
补充说明
- 上述查询返回的所有结果均为ISO 639-2术语代码,同一语言仅返回唯一的术语编码,不会再出现法语同时返回
fra和fre的问题 - 如果需要过滤保留文献代码,仅需要将上述代码中的
wd:Q1725664替换为wd:Q1725663即可
内容的提问来源于stack exchange,提问作者mrBen
相关产品推荐
相关产品推荐

