维基数据 SPARQL - 国家及其(仍然存在的)邻国
Wikidata SPARQL - Countries and their (still existing) neighbours
我想从 Wikidata 使用 SPARQL 查询邻国,例如 this:
SELECT ?country ?countryLabel WHERE {
?country wdt:P47 wd:Q183 .
FILTER NOT EXISTS{ ?country wdt:P576 ?date } # don't count dissolved country - at least filters German Democratic Republic
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en" .
}
}
我的问题是,例如在这个德国邻国的例子中,仍然显示了不再存在的国家,例如:
- 丹麦王国或
- 萨尔州。
已经尝试过
我已经可以通过 FILTER
语句减少数量。
问题
- 如何声明减少到9个国家?
- (也分陆地边界和海洋边界就好了)
备选
- 过滤 API 对我来说也很好 https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q35
- 一个数据库或列出或准备好与世界上所有邻国的HashMap
您可以检查 wd:Q133346
('border') 或 wd:Q12413618
('international border') 类型的实体:
SELECT ?border ?borderLabel ?country1Label ?country2Label ?isLandBorder ?isMaritimeBorder ?constraint {
VALUES (?country1) {(wd:Q183)}
?border wdt:P31 wd:Q12413618 ;
wdt:P17 ?country1 , ?country2 .
FILTER (?country1 != ?country2)
BIND (EXISTS {?border wdt:P31 wd:Q15104814} AS ?isLandBorder)
BIND (EXISTS {?border wdt:P31 wd:Q3089219} AS ?isMaritimeBorder)
BIND ((?isLandBorder || ?isMaritimeBorder) AS ?constraint)
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
} ORDER BY ?country1Label
从某种意义上说,记录是重复的:对于阿富汗-乌兹别克斯坦边界,该列表同时包含 (?country1=Afganistan,?country2=Uzbekistan)
和 (?country1=Uzbekistan,?country2=Afganistan)
。
- a database or lists or prepared HashMaps whatever with all countries of the world with neighbours
上提问
我想从 Wikidata 使用 SPARQL 查询邻国,例如 this:
SELECT ?country ?countryLabel WHERE {
?country wdt:P47 wd:Q183 .
FILTER NOT EXISTS{ ?country wdt:P576 ?date } # don't count dissolved country - at least filters German Democratic Republic
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en" .
}
}
我的问题是,例如在这个德国邻国的例子中,仍然显示了不再存在的国家,例如:
- 丹麦王国或
- 萨尔州。
已经尝试过
我已经可以通过 FILTER
语句减少数量。
问题
- 如何声明减少到9个国家?
- (也分陆地边界和海洋边界就好了)
备选
- 过滤 API 对我来说也很好 https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q35
- 一个数据库或列出或准备好与世界上所有邻国的HashMap
您可以检查 wd:Q133346
('border') 或 wd:Q12413618
('international border') 类型的实体:
SELECT ?border ?borderLabel ?country1Label ?country2Label ?isLandBorder ?isMaritimeBorder ?constraint {
VALUES (?country1) {(wd:Q183)}
?border wdt:P31 wd:Q12413618 ;
wdt:P17 ?country1 , ?country2 .
FILTER (?country1 != ?country2)
BIND (EXISTS {?border wdt:P31 wd:Q15104814} AS ?isLandBorder)
BIND (EXISTS {?border wdt:P31 wd:Q3089219} AS ?isMaritimeBorder)
BIND ((?isLandBorder || ?isMaritimeBorder) AS ?constraint)
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
} ORDER BY ?country1Label
从某种意义上说,记录是重复的:对于阿富汗-乌兹别克斯坦边界,该列表同时包含 (?country1=Afganistan,?country2=Uzbekistan)
和 (?country1=Uzbekistan,?country2=Afganistan)
。
上提问
- a database or lists or prepared HashMaps whatever with all countries of the world with neighbours