SPARQL是否已新增幂函数?当前字符串处理替代方案寻求优化
SPARQL是否已新增幂函数?当前字符串处理替代方案寻求优化
嘿,我来帮你捋捋这个问题~
首先说幂函数的事儿:目前标准SPARQL 1.1里并没有内置的幂运算函数(比如像很多编程语言里的POWER()那种),不过部分SPARQL引擎(比如Apache Jena、Blazegraph这类)可能会提供自定义的扩展函数来实现幂运算,但这不属于官方标准规范的内容,得看你使用的具体引擎是否支持。
再看你现在用来处理科学计数法转常规数值的字符串操作,确实有点繁琐,而且容错性也不高——要是遇到负数指数、不带小数点的科学计数法格式,你的逻辑大概率会出问题。其实有个更简洁靠谱的办法:直接利用SPARQL的类型转换能力!
科学计数法格式的字符串本身可以直接转换成xsd:decimal或者xsd:double类型,完全不需要手动拆字符串处理。比如你可以把代码改成这样:
?contract part:price ?price_E ; part:Currency ?currency . BIND(xsd:decimal(?price_E) AS ?price)
这样输入1.51535E3的话,直接就能得到1515.35的decimal类型结果,不管是性能、可读性还是容错性,都比你之前的字符串处理方案好太多啦~
要是你确实需要用到幂运算(比如计算某个数的n次方),那可以去查查你用的SPARQL引擎的文档,比如Apache Jena支持fn:pow()扩展函数(需要导入对应的命名空间),不过这类扩展函数没有统一标准,不同引擎的用法可能不一样。
备注:内容来源于stack exchange,提问作者Ckk
相关产品推荐
相关产品推荐

