SPARQL中的IF语句

SPARQL中的IF语句,sparql,Sparql,我有以下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}. }

我有以下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}.
}
前缀yago: 选择不同计数(?蒙特利尔)作为?蒙特利尔计数(?多伦多)作为?多伦多 哪里 { {蒙特利尔rdf:typeYAGO:HospitalsInMontreal}联盟{多伦多rdf:typeYAGO: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 ).
}
前缀yago: 选择不同计数(?蒙特利尔)作为?蒙特利尔计数(?多伦多)作为?多伦多 哪里 { {蒙特利尔rdf:typeYAGO:HospitalsInMontreal}联盟{多伦多rdf:typeYAGO:HospitalsInToronto}。 设(?蒙特利尔:=如果(?蒙特利尔>?多伦多,-1,1)。 }
谢谢

SPARQL中没有LET表达式,但是上面的查询不需要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}.
}
前缀yago: 前缀rdf: 选择不同的if(count(?montreac)>count(?TorontoC),1,2)作为蒙特利尔if(count(?TorontoC)>count(?montreac),1,2)作为多伦多 哪里 { {MontrealC rdf:TypeYago:HospitalsInMontreal}联盟{TorontoC rdf:TypeYago:Hospitalsintorono}。 }
新的SPARQL 1.1引入了BIND,在本例中相当于LET。此外,为了便于移植,您的项目表达式需要在其周围加上括号:(if(count(?MontrealC)>count(?TorontoC),1,2)as?Montreal)