2016-12-18 17 views
1

This sparql query on wikidataは、ドイツ語(Q183)のすべての場所に-owまたは-itzで終わる名前を表示します。またはsparqlクエリのOR

ドイツやオーストリアなどの場所を探すためにこれを拡張したいと考えています。

は、私のような何かに8行を変更しようとした:オーストリア(Q40)で場所を探すために

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

が、これは有効なクエリではありません。

他の国を含むようにクエリを拡張する方法はありますか?

答えて

5

Afaikには構文がありません。あなたは、しかし、このような同じ効果にUNIONを使用することができます。VALUESを使用して両国を含む新しい変数を作成

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

または代替として:

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

グレート!どちらも動作します - 多くの感謝! –