-->

在SPARQL查询对数函数(Logarithm Function in SPARQL Query)

2019-09-01 09:36发布

我想创建一个SPARQL执行对返回的结果对数函数查询。 我已经实现了耶拿SPARQL引擎在我的java程序,但只能够找到这些可用的功能: 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 ;} }

非常感谢你的帮助提前!

Answer 1:

日志不是标准或部分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)
{
   ...
}


文章来源: Logarithm Function in SPARQL Query