如何修改SPARQL查询以排除阿富汗的区域性官方语言?
修改后的SPARQL查询
你可以用FILTER NOT EXISTS或MINUS来排除适用范围标记为区域性语言的条目,以下是修正后的查询:
方案1:使用FILTER NOT EXISTS
SELECT ?langCode ?itemLabel WHERE { wd:Q889 wdt:P37 ?officialLanguage. ?officialLanguage rdfs:label ?itemLabel. OPTIONAL { ?officialLanguage wdt:P424 ?langCode. } FILTER(LANG(?itemLabel) = "en") # 过滤掉适用范围为区域性语言的语言条目 FILTER NOT EXISTS { ?officialLanguage wdt:P518 wd:Q770220. } }
方案2:使用MINUS
SELECT ?langCode ?itemLabel WHERE { wd:Q889 wdt:P37 ?officialLanguage. ?officialLanguage rdfs:label ?itemLabel. OPTIONAL { ?officialLanguage wdt:P424 ?langCode. } FILTER(LANG(?itemLabel) = "en") # 排除适用范围为区域性语言的语言条目 MINUS { ?officialLanguage wdt:P518 wd:Q770220. } }
说明
之前尝试失败大概率是因为没正确关联?officialLanguage、wdt:P518(适用范围)和wd:Q770220(区域性语言)这三者的关系。上面的查询会明确排除所有通过P518属性直接标记为区域性语言的官方语言条目,只保留真正的国家级官方语言。
内容的提问来源于stack exchange,提问作者Christian Siefkes
相关产品推荐
相关产品推荐

