2
我只是想知道如何爲Jena創建新的定製內置函數。我知道爲此目的,它應該同時用於「BaseBuiltin」類和「BuiltinRegistry」類(但是如何?)。如何在Jena中創建自定義內置函數?
我也發現了一個名爲「SADL」的Eclipse插件,但我不確定如果爲了這個目的我可以使用它。如果我可以......哪種方法更好,爲什麼?
難道你們中的任何一個人都能解釋我應該採取哪種方式?
乾杯!
我只是想知道如何爲Jena創建新的定製內置函數。我知道爲此目的,它應該同時用於「BaseBuiltin」類和「BuiltinRegistry」類(但是如何?)。如何在Jena中創建自定義內置函數?
我也發現了一個名爲「SADL」的Eclipse插件,但我不確定如果爲了這個目的我可以使用它。如果我可以......哪種方法更好,爲什麼?
難道你們中的任何一個人都能解釋我應該採取哪種方式?
乾杯!
在follow-up to a later question of yours中,我也提供了演示這個問題的答案的代碼。
爲了需要快速參考的人,我在這裏複製了它。此內建函數的名稱爲example
,並根據writing Jena builtin-ins和Official 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));
}
});
你見過[寫作耶拿的內置插件(http://stackoverflow.com/q/12139978/1281433)的問題(這不是一個很大的問題,得到的回答並不能幫助所有的東西,在我看來,但它是相關的)。 –
你想讓你的內建工作做什麼?他們不太難實現,但是一些特定的要求可以更容易地創建一個示例。 –
另外,您是否看過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)? –