或者在sparql查询中

时间:2016-12-18 12:58:59

标签: sparql wikidata

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

我想扩展这个以寻找德国的地方,比如奥地利。

我尝试将第8行修改为:

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

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

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

1 个答案:

答案 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)$").
}