2013-04-29 53 views
3

我正在嘗試創建一個SPARQL對返回的結果執行對數函數的查詢。我在我的java程序中實現了Jena SPARQL引擎,但只能找到這些可用的函數:http://jena.sourceforge.net/ARQ/library-function.htmlSPARQL查詢中的對數函數

有沒有人知道一種方法獲取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 ;} } 

非常感謝你的幫助提前!

回答

2

日誌不是標準的一部分或ARQ's additions,但它是very easy to write your own

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) 
{ 
    ... 
} 
+0

非常感謝您的幫助! – BigDataBill 2013-04-29 19:11:15

+0

雖然有點澄清,但不勝感激。這個類是否被添加到jena-core jar或我的java項目中?我在我的Java項目中創建了它,但該類不能作爲一個FunctionFactory轉換。它應該添加到jar嗎? – BigDataBill 2013-04-29 19:13:05

+0

添加了從代碼註冊的快速說明。我相信它應該像那樣工作。 – user205512 2013-04-29 21:52:14