如何找到具有 Wikidata API 的城市实体?
How to find entities which are cities with Wikidata API?
我尝试根据城市名称的一部分查找城市(通常 https://en.wikipedia.org/wiki/Lavo%C3%BBte-sur-Loire,法国城市)
我找到的唯一方法是先通过以下请求请求 "Lavoute"(不带重音)。
它returns 5个链接,然后使用此信息请求所有结果,最后有这样的东西具有良好的价值(有属性 P281意味着它是一个城市)
有更简单的方法吗?
正如您所说,您想根据城市名称的一部分查找城市,这里是您问题的解决方案:
SELECT ?location ?locationLabel WHERE {
?location wdt:P17 wd:Q142.
?location wdt:P31 ?settlement .
?settlement wdt:P279 wd:Q3266850 .
?location rdfs:label ?de_label .
FILTER (lang(?de_label) = "en") .
FILTER (regex((?de_label), "Lavoûte")).
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
参考这个 link,您可能还会对您的问题有一些想法:
https://opendata.stackexchange.com/questions/11675/most-efficient-way-to-get-the-wikidata-entity-for-a-city-given-as-a-string
我尝试根据城市名称的一部分查找城市(通常 https://en.wikipedia.org/wiki/Lavo%C3%BBte-sur-Loire,法国城市)
我找到的唯一方法是先通过以下请求请求 "Lavoute"(不带重音)。
它returns 5个链接,然后使用此信息请求所有结果,最后有这样的东西具有良好的价值(有属性 P281意味着它是一个城市)
有更简单的方法吗?
正如您所说,您想根据城市名称的一部分查找城市,这里是您问题的解决方案:
SELECT ?location ?locationLabel WHERE {
?location wdt:P17 wd:Q142.
?location wdt:P31 ?settlement .
?settlement wdt:P279 wd:Q3266850 .
?location rdfs:label ?de_label .
FILTER (lang(?de_label) = "en") .
FILTER (regex((?de_label), "Lavoûte")).
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
参考这个 link,您可能还会对您的问题有一些想法: https://opendata.stackexchange.com/questions/11675/most-efficient-way-to-get-the-wikidata-entity-for-a-city-given-as-a-string