SPARQL:变量之间的算术操作符? [英] Sparql: Arithmetic operators between variables?
本文介绍了SPARQL:变量之间的算术操作符?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
您好,我有一个类似如下的查询:
SELECT ?a ?b
WHERE
{
?c property:name "myThing"@en
?c property:firstValue ?b
?c property:secondValue ?a
}
我如何区分第一个和第二个数字?最理想的情况是:
SELECT ?a/?b
WHERE
{
?c property:name "myThing"@en
?c property:firstValue ?b
?c property:secondValue ?a
}
谢谢
推荐答案
在SPARQL1.1中,您可以使用类似如下的项目表达式:
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT (xsd:float(?a)/xsd:float(?b) AS ?result)
WHERE
{
?c property:name "myThing"@en
?c property:firstValue ?b
?c property:secondValue ?a
}
您可以交替使用xsd:double(?var)
转换为双精度数,xsd:integer(?var)
转换为整数,xsd:decimal(?var)
转换为小数。
请注意,SPARQL指定了类型提升规则,例如:
- INTEGER/INTEGER=小数
- 浮点/双精度=双精度
如果您确实需要保证数据类型的结果,则可以转换整个除法表达式,例如
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT (xsd:double(xsd:float(?a)/xsd:float(?b)) AS ?result)
WHERE
{
?c property:name "myThing"@en
?c property:firstValue ?b
?c property:secondValue ?a
}
这篇关于SPARQL:变量之间的算术操作符?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文