代码之家  ›  专栏  ›  技术社区  ›  the.real.gruycho

或在sparql查询中

  •  3
  • the.real.gruycho  · 技术社区  · 8 年前

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

    我想把这个扩展到德国和奥地利。

    我试着把第8行改成这样:

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

    以查找奥地利的位置(Q40),但这不是有效的查询。

    如何将查询扩展到其他国家?

    1 回复  |  直到 8 年前
        1
  •  9
  •   Joshua Taylor    8 年前

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