或者在 sparql 查询中

OR in sparql query

This sparql query on wikidata 显示德国 (Q183) 中名称以 -ow 或 -itz 结尾的所有地点。

我想扩展它以查找德国和奥地利的地方。

我尝试将第 8 行修改为:

wdt:P17 (wd:Q183 || wd:Q40);

为了查找奥地利 (Q40) 的地点,但这不是有效的查询。

有什么方法可以将查询扩展到包括其他国家/地区?

据我所知,没有这么简单的语法。但是,您可以使用 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)$").
}