维基数据上的 SPARQL:一个国家的官方语言,而不仅仅是区域语言

问题描述 投票:0回答:1

我想要一个 SPARQL 查询来检索一个国家/地区的官方语言,例如阿富汗:

SELECT ?langCode ?itemLabel WHERE {
  wd:Q889 wdt:P37 ?officialLanguage.
  ?officialLanguage rdfs:label ?itemLabel.
  OPTIONAL { ?officialLanguage wdt:P424 ?langCode. }
  FILTER(LANG(?itemLabel) = "en")
}

该查询尽可能有效并返回九个结果。然而,其中大多数(例如俾路支语和努里斯塔尼语)在维基数据中使用“适用于部分”属性(P518)被标记为“区域语言”(Q770220)。我如何从结果中排除这些?

我已经尝试了很多方法,使用

MINUS
FILTER NOT EXISTS
,但无法让它工作。

sparql wikidata country
1个回答
0
投票

为了处理限定符,您可以使用以下前缀:

  • p:
    用于将项目与声明链接起来;
  • ps:
    带有其对象的语句;
  • pq:
    带有限定符的语句。

因此,您想要的查询采用以下形式:

SELECT ?langCode ?itemLabel WHERE {
  wd:Q889 p:P37 ?officialLanguageStatement .
  ?officialLanguageStatement ps:P37 ?officialLanguage .
  ?officialLanguage rdfs:label ?itemLabel .
  OPTIONAL { ?officialLanguage wdt:P424 ?langCode . }
  FILTER(LANG(?itemLabel) = "en")
  FILTER NOT EXISTS {
    ?officialLanguageStatement pq:P518 wd:Q770220 .
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.