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 ;} }

非常感谢您提前提供的帮助!

4

1 回答 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)
{
   ...
}
于 2013-04-29T15:05:41.393 回答