В SPARQL 1.1 вы можете сделать это, используя выражения Project, например:
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 определяет правила продвижения типов, например:
- целое число / целое число = десятичное число
- float / double = double
Если вам действительно нужен результат с гарантированным типом данных, вы можете привести все выражение деления, например,
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
}