SPARQL查询中的对数函数

3
我正在尝试创建一个SPARQL查询,在返回的结果上执行对数函数。我在我的Java程序中实现了Jena SPARQL引擎,但只能找到这些可用函数:http://jena.sourceforge.net/ARQ/library-function.html 有人知道如何获取SPARQL返回变量的对数(最好是自然对数)吗?
以下是一个有效的示例查询:
SELECT DISTINCT ((?Transactions_Num) AS ?BusinessValue) 
WHERE {{?BusinessProcess relation:Transactions_Num ?Transactions_Num ;} }

我想让以下查询正常工作(但目前还不行):

SELECT DISTINCT (LOG(?Transactions_Num) AS ?BusinessValue) 
WHERE {{?BusinessProcess relation:Transactions_Num ?Transactions_Num ;} }

Thanks you very much for the help in advance!

1个回答

2

日志不是标准或ARQ的扩展的一部分,但编写自己的日志功能非常容易

package app;

public class log extends FunctionBase1
{
    public log() { super() ; }

    public NodeValue exec(NodeValue v)
    {
        return Math.log(v.getDouble());
    }
}

今日免费次数已满, 请开通会员/明日再来
FunctionRegistry.get().put("http://example.org/function#log", log.class) ;

您可以像这样使用它:
PREFIX myfun: <http://example.org/function#>
SELECT DISTINCT (myfun:log(?Transactions_Num) AS ?BusinessValue)
{
   ...
}

虽然需要一些澄清。但这个类是添加到jena-core jar还是我的Java项目中呢?我在我的Java项目中创建了它,但这个类无法转换为FunctionFactory。 它应该被添加到jar中吗? - BigDataBill
添加了一个快速的注册代码解释。我相信它应该像这样工作。 - user205512
非常感谢您的帮助。不需要对jar文件进行任何操作,这真是太棒了!现在我正在尝试使用Sesame API与OpenRDF的BigdataEngine一起使用。我能找到的唯一帮助网站是rivuli,但似乎无法使其正常工作。我可能应该开一个新问题,但想知道您是否有任何见解。 - BigDataBill

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接