SPARQL:变量之间的算术操作符? [英] Sparql: Arithmetic operators between variables?

查看:19
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆