在以下的SPARQL查询中,我不确定如何使用
if
将两个字符串中的一个绑定到变量?result
。我听说有“in scope”和“out of scope”的概念,但我并没有真正看到差别。我也尝试在select
行中放置if
子句,但它也没有起作用。如何修改此查询以根据条件将?result
绑定到两个字符串中的一个?SELECT ?result
WHERE{
?chain rdf:type rdfs:Property .
?chain rdfs:domain <http://www.vs.cs.hs-rm.de/ontostor/SVC#MDiskGroup> .
?chain rdfs:range <http://www.vs.cs.hs-rm.de/ontostor/SVC#IOgroup> .
?this ?chain ?arg .
?arg io:id ?var .
IF(?var = "0"^^xsd:integer,
BIND(" *"^^xsd:string AS ?result),
BIND(""^^xsd:string AS ?result)) .
}
BIND(IF(?var = 0, " *"^^xsd:string, ""^^xsd:string))
,即不需要显式地声明整数类型,而是依赖于SPARQL语法中的整数纯文字快捷方式。 - RobVxsd:integer
,xsd:int
等)。如果我们在进行代码高尔夫比赛,我们也可以使用xsd:string
作为构造函数,并且执行bind( xsd:string(if(?var = 0, " *", "")) as ?result)
。:) - Joshua Taylor