IF заявление в SPARQL - PullRequest
       4

IF заявление в SPARQL

2 голосов
/ 05 марта 2012

У меня следующий запрос SPARQL:

PREFIX yago: <http://dbpedia.org/class/yago/>
SELECT distinct  count (?Montreal) as ?Montreal count(?Toronto) as ?Toronto
WHERE
{
{?Montreal rdf:type yago:HospitalsInMontreal} UNION {?Toronto rdf:type yago:HospitalsInToronto}.
}

Этот запрос приводит к:

Монреаль = 20 Торонто = 28

То, что я хочу, это: Я хочу отредактировать запрос и вместо 20 и 28 хочу сравнить результаты так, чтобы Если количество больниц в Монреале больше, чем число больниц в Торонто, тогда:

Монреаль = 1 Торонто = 2

Если число больниц в Торонто больше, чем число больниц в Монреале, то:

Монреаль = 2
Торонто = 1

Я пробовал этот запрос, но он не работал:

PREFIX yago: <http://dbpedia.org/class/yago/>
SELECT distinct  count (?Montreal) as ?Montreal count(?Toronto) as ?Toronto
WHERE
{
{?Montreal rdf:type yago:HospitalsInMontreal} UNION {?Toronto rdf:type yago:HospitalsInToronto}.
LET( ?Montreal := IF( ?Montreal > ?Toronto, -1, 1 ).
}

Спасибо

1 Ответ

5 голосов
/ 05 марта 2012

В SPARQL нет выражения LET, но оно не нужно для вышеуказанного запроса:

PREFIX yago: <http://dbpedia.org/class/yago/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT distinct if(count(?MontrealC)>count(?TorontoC),1,2) as ?Montreal if(count(?TorontoC)>count(?MontrealC),1,2) as ?Toronto 
WHERE
{
{?MontrealC rdf:type yago:HospitalsInMontreal} UNION {?TorontoC rdf:type yago:HospitalsInToronto}.
}
...