或者在sparql查询中

the*_*cho 1 sparql wikidata

这个关于wikidata的sparql查询显示德国(Q183)的所有地方,其名称以-ow或-itz结尾.

我想扩展它以寻找德国和奥地利的地方.

我尝试将第8行修改为:

wdt:P17 (wd:Q183 || wd:Q40);
Run Code Online (Sandbox Code Playgroud)

为了寻找奥地利的地方(Q40),但这不是一个有效的查询.

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

Sir*_*rko 6

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)