2014-04-23 75 views
2

我只是想知道如何爲Jena創建新的定製內置函數。我知道爲此目的,它應該同時用於「BaseBuiltin」類和「BuiltinRegistry」類(但是如何?)。如何在Jena中創建自定義內置函數?

我也發現了一個名爲「SADL」的Eclipse插件,但我不確定如果爲了這個目的我可以使用它。如果我可以......哪種方法更好,爲什麼?

難道你們中的任何一個人都能解釋我應該採取哪種方式?

乾杯!

+1

你見過[寫作耶拿的內置插件(http://stackoverflow.com/q/12139978/1281433)的問題(這不是一個很大的問題,得到的回答並不能幫助所有的東西,在我看來,但它是相關的)。 –

+0

你想讓你的內建工作做什麼?他們不太難實現,但是一些特定的要求可以更容易地創建一個示例。 –

+0

另外,您是否看過Jena中擴展BaseBuiltin的所有內置源的源代碼。例如,[addOne](http://grepcode.com/file/repo1.maven.org/maven2/org.apache.jena/jena-core/2.7.3/com/hp/hpl/jena/reasoner/rulesys/內建/ AddOne.java)? –

回答

1

follow-up to a later question of yours中,我也提供了演示這個問題的答案的代碼。

爲了需要快速參考的人,我在這裏複製了它。此內建函數的名稱爲example,並根據writing Jena builtin-insOfficial Documentation將其大部分功能委託給BaseBuiltin。感謝JT提及他以前的問題。

BuiltinRegistry.theRegistry.register(new BaseBuiltin() { 
    @Override 
    public String getName() { 
     return "example"; 
    } 
    @Override 
    public void headAction(final Node[] args, final int length, final RuleContext context) { 
     System.out.println("Head Action: "+Arrays.toString(args)); 
    } 
}); 
相關問題