我正在尝试获取某个国家/地区使用的语言。返回的结果要按顺序返回。此顺序应该是国家/地区给出的官方语言顺序(如果可以获得),或者是使用该语言的人数给出的顺序。第一种语言之后的语言顺序并不是特别重要,但返回的第一种语言必须是主要官方语言,或者如果没有定义,它应该是最常用的语言。
以瑞士为例,官方语言顺序(可能由使用该语言的人数决定)是,根据维基百科:德语、法语、意大利语、罗曼语。
瑞士的维基数据页面按以下顺序显示官方语言:德语、意大利语、法语、罗曼语。这不是维基百科中显示的顺序。然而,在我看过的维基数据页面上,列出的第一种语言始终是主要语言(参见 Spain 的示例)。
以下 SPARQL 查询检索瑞士的官方语言(在这里尝试):
SELECT *
{
BIND(wd:Q39 as ?country)
OPTIONAL {
?country wdt:P37 ?officialLanguages.
?officialLanguages wdt:P424 ?officialLanguagesCode.
}
}
此查询返回另一种语言排序,不同于维基数据页面排序。结果是:法语、德语、意大利语、罗曼语。 第一语言不再是主要语言,不像维基数据页面中显示的那样。
为什么此查询返回的顺序与维基数据页面中语言的顺序不同?
如何获得一个国家/地区使用的官方语言的有序列表?
为什么此查询返回的顺序与维基数据页面中语言的顺序不同?
当你询问一个查询时,输出顺序是不相关的(你得到一组结果)。获得所需内容的唯一方法是明确此信息,在知识图中添加更多数据。
如何获得一个国家/地区使用的官方语言的有序列表?
唯一的方法是手动向维基数据添加更多信息。例如,在 Q39#P37 中,我刚刚添加了属性 proportion (P1107) 作为限定符。现在您可以提交以下查询(按
DESC(?proportion)
排序):
SELECT *
{
BIND(wd:Q39 as ?country)
OPTIONAL {
?country p:P37 [
ps:P37 ?officialLanguage ;
pq:P1107 ?proportion
] .
?officialLanguage wdt:P424 ?officialLanguageCode .
}
}
ORDER BY ?country DESC(?proportion)
还有其他方法可以将数据添加到维基数据。向
official languages
添加排序的另一个(我认为次优)选项可能是添加一个series ordinal (P1545) 限定符以指示重要性顺序(1、2、3 等)。
目前,您在其他项目中看不到任何限定词,因为显然到目前为止还没有人提出这个问题。因此,您可以大胆并添加此类限定符,或者在维基数据的某个地方打开一个新主题,看看共识是如何演变的。