基于Wikidata SPARQL查询单词kind同义词的技术求助
解决Wikidata同义词查询返回零结果的问题
我来帮你搞定这个查询问题!你的原始查询返回空结果主要有两个关键原因,我来拆解并给出修正后的方案:
问题分析
- 缺少语言标签匹配:Wikidata里的词位(lexeme)lemma是带语言标识的(比如
"kind"@en),你直接用?lemma = 'kind'无法匹配到任何条目,因为系统默认会检查完整的带标签字符串。 - 同义词属性指向实体而非字符串:
wdt:P5973(同义词)关联的是其他lexeme实体,不是直接的同义词文本,所以你需要额外一步获取这些实体的lemma才能得到目标词汇。
修正后的查询语句
SELECT ?originalLemma ?synonymLemma WHERE { # 定位英语中lemma为"kind"的所有lexeme ?lexeme wikibase:lemma ?originalLemma. FILTER (?originalLemma = 'kind'@en) # 获取该lexeme的同义词lexeme实体 ?lexeme wdt:P5973 ?synonymLexeme. # 提取同义词lexeme的英语lemma ?synonymLexeme wikibase:lemma ?synonymLemma. FILTER (lang(?synonymLemma) = 'en') }
额外说明
这个查询会返回"kind"所有含义对应的同义词:
- 当
kind作为形容词(表示友善)时,会返回empathetic、kindly等结果; - 当
kind作为名词(表示类型)时,会返回type、sort等结果。
如果需要查看更多细节(比如对应的lexeme ID),可以把?lexeme和?synonymLexeme加入SELECT字段。
内容的提问来源于stack exchange,提问作者John Skiles Skinner
相关产品推荐
相关产品推荐

