如何将维基数据的结果过滤为特定语言

How to filter results of wikidata to specific language

我有一个获取所有大写字母的查询。 (首府城市)

SELECT DISTINCT ?Stadt ?label ?Staat ?StaatLabel ?geographische_Koordinaten ?StadtLabel WHERE {
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
  ?Stadt wdt:P31 wd:Q5119.
  ?Stadt rdfs:label ?label.
  OPTIONAL { ?Stadt wdt:P17 ?Staat. }
  OPTIONAL { ?Stadt wdt:P625 ?geographische_Koordinaten. }
}
LIMIT 100

Try it here

结果是:

 wd:Q61     Washington D.C.     wd:Q30  Vereinigte Staaten  Point(-77.036666666 38.895)     Washington, D.C.
wd:Q61  Washington D. C.    wd:Q30  Vereinigte Staaten  Point(-77.036666666 38.895)     Washington, D.C.
wd:Q61  واشنگٹن ڈی سی   wd:Q30  Vereinigte Staaten  Point(-77.036666666 38.895)     Washington, D.C.
wd:Q61  Washington D.C.     wd:Q30  Vereinigte Staaten  Point(-77.036666666 38.895)     Washington, D.C.
wd:Q61  واشنګټن ډي سي   wd:Q30  Vereinigte Staaten  Point(-77.036666666 38.895)     Washington, D.C.
wd:Q61  Вашингтон   wd:Q30  Vereinigte Staaten  Point(-77.036666666 38.895)     Washington, D.C.
wd:Q61  ওয়াশিংটন, ডি.সি.   wd:Q30  Vereinigte Staaten  Point(-77.036666666 38.895)     Washington, D.C.

我得到了同一个城市的多种语言的许多结果。

如何过滤查询以便每个城市只获得一个带有英文标签的结果?

* 已更新 *

感谢您帮助 Stanislav。你回答了问题。我的新查询是:

SELECT DISTINCT ?Stadt ?label ?StadtLabel ?Staat ?StaatLabel ?geographische_Koordinaten WHERE {
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
  ?Stadt wdt:P31 wd:Q5119.
  ?Stadt wdt:P17 ?Staat.
  OPTIONAL { ?Stadt wdt:P625 ?geographische_Koordinaten. }
}
LIMIT 100

Try it here

我可以问以下问题吗?为什么我不仅得到这个查询的大写字母?为什么是“?Stadt wdt:P31 wd:Q5119。”被忽略了?

按照@Stanislav Kralin 的commnet 和示例here,此查询returns 个国家及其首都:

SELECT ?country ?countryLabel ?capital ?capitalLabel ?coords WHERE {
  ?country wdt:P31 wd:Q3624078.
  ?country wdt:P36 ?capital.
  FILTER NOT EXISTS {?country wdt:P31 wd:Q3024240} # not a former country
  OPTIONAL { ?capital wdt:P625 ?coords. }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
ORDER BY ?countryLabel
LIMIT 1000

Try it here

然而some countries such as Bolivia, Costa Rica and South Africa由于某些原因拥有不止一个资本!

要将每个国家限制为一个(随机)首都,请尝试:

SELECT  ?country ?countryLabel ?aCapital ?aCapitalLabel ?coords
WHERE
  { { { SELECT  ?country (SAMPLE(?capital) AS ?aCapital)
        WHERE
          { ?country  wdt:P31  wd:Q3624078
            FILTER NOT EXISTS { ?country  wdt:P31  wd:Q3024240 }
            ?country  wdt:P36  ?capital
          }
        GROUP BY ?country
      }
      OPTIONAL
        { ?aCapital  wdt:P625  ?coords }
      SERVICE wikibase:label
        { bd:serviceParam
                    wikibase:language  "en"
        }
    }
  }
ORDER BY ?countryLabel
LIMIT   1000

Try it here