У меня есть следующий SPARQL запрос:IF заявление в 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 Toronto = 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).
}
Благодарности
Новый SPARQL 1.1 вводит BIND, которое эквивалентно LET в этом случае. Кроме того, для переносимости ваши проектные выражения нуждаются в круглых скобках вокруг них: (if (count (? MontrealC)> count (? TorontoC), 1,2) как? Montreal) –