This sparql query on wikidata显示德国(Q183)的所有地方,其名称以-ow或-itz结尾。
我想扩展这个以寻找德国的地方,比如奥地利。
我尝试将第8行修改为:
wdt:P17 (wd:Q183 || wd:Q40);
为了寻找奥地利的地方(Q40),但这不是一个有效的查询。
有什么方法可以将查询扩展到包含其他国家/地区?
答案 0 :(得分:5)
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)$").
}
或作为替代方案使用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)$").
}