这个关于wikidata的sparql查询显示德国(Q183)的所有地方,其名称以-ow或-itz结尾.
我想扩展它以寻找德国和奥地利的地方.
我尝试将第8行修改为:
wdt:P17 (wd:Q183 || wd:Q40);
Run Code Online (Sandbox Code Playgroud)
为了寻找奥地利的地方(Q40),但这不是一个有效的查询.
有什么方法可以将查询扩展到包含其他国家/地区?
Afaik没有那么简单的语法.但是,你可以UNION像这样使用相同的效果:
SELECT ?item ?itemLabel ?coord
WHERE
{
?item wdt:P31/wdt:P279* wd:Q486972;
rdfs:label ?itemLabel;
wdt:P625 ?coord;
{?item wdt:P17 wd:Q183}
UNION
{?item wdt:P17 wd:Q40}
FILTER (lang(?itemLabel) = "de") .
FILTER regex (?itemLabel, "(ow|itz)$").
}
Run Code Online (Sandbox Code Playgroud)
或者作为替代方案创建一个包含两个国家的新变量VALUES:
SELECT ?item ?itemLabel ?coord
WHERE
{
VALUES ?country { wd:Q40 wd:Q183 }
?item wdt:P31/wdt:P279* wd:Q486972;
wdt:P17 ?country;
rdfs:label ?itemLabel;
wdt:P625 ?coord;
FILTER (lang(?itemLabel) = "de") .
FILTER regex (?itemLabel, "(ow|itz)$").
}
Run Code Online (Sandbox Code Playgroud)