2016-12-18 1 views
1

This sparql query on wikidata은 -ow 또는 -itz로 끝나는 이름을 가진 독일의 모든 장소 (Q183)를 보여줍니다.또는 sparql 쿼리의 OR

저는 이것을 독일과 오스트리아에있는 장소를 찾기 위해 확장하고 싶습니다.

내가 좋아하는 뭔가 8 라인을 수정하려고 : 오스트리아 (Q40)의 장소를 찾아하기 위해

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

, 그러나 이것은 유효한 쿼리하지 않습니다.

다른 국가를 포함하도록 검색어를 확장하는 방법은 무엇입니까?

답변

5

Afaik 거기에는 간단한 구문이 없습니다.

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을 사용하여 두 국가를 포함하는 새로운 변수를 만들 : 당신은, 그러나,이 같은 동일한 효과를 UNION을 사용할 수 있습니다

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

우수함! 둘 다 작동합니다 - 많은 감사합니다! –

관련 문제