我正在尝试建立一个SPARQL查询,该查询列出指定国家的博物馆。我的主要目标是找到博物馆所在的城市。
我是wikidata的新手,刚刚开始。
到目前为止,我已经使用属性?located_in_the_administrative_territorial_entity
来查找城市。问题是,对于许多国家来说,这不仅给了我城市,而且给了我州,例如在瑞士,它给了我苏黎世和另一个苏黎世州。
是否可以限制搜索范围,使其只给我城市信息?
prefix schema: <http://schema.org/>
PREFIX wikibase: <http://wikiba.se/ontology#>
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
SELECT ?museum ?museumLabel ?located_in_the_administrative_territorial_entity ?located_in_the_administrative_territorial_entityLabel
WHERE {
?museum wdt:P17 wd:Q39; # countries
wdt:P31 ?type.
?type (wdt:P279*) wd:Q33506.
# If available, get the "en" entry, use native language as fallback:
SERVICE wikibase:label { bd:serviceParam wikibase:language "en,de". }
# get location if available
OPTIONAL { ?museum wdt:P131 ?located_in_the_administrative_territorial_entity. }
}
order by ?museum
我希望每个博物馆都有一行,其中包括博物馆所在的城市。我不希望同一博物馆的几行显示不同的地理等级(州/市)。