2017-02-18 85 views
0

我已經與SWRLAPI的SWRLBuiltInBridge組件來實現這一點: https://github.com/protegeproject/swrlapi/wiki/SWRLBuiltInBridge如何使用自定義SWRL內置函數擴展Pellet 2.4.0?

然而,在我的Java代碼我也用顆粒裏森納與OWLAPI。每當我使用推理器時,當它找到一個內置未知的SWRL規則時會產生一個警告。我知道我可以禁用推理器中的規則檢查,並在我想運行規則時使用SWRLAPI。

但這似乎不實際......因爲在使用推理器之前,我必須在每個本體修改之後運行規則。

我見過它深入探討了這個問題一個博客頁面,但可能已過時: https://semwebguy.wordpress.com/2011/01/04/how-to-extend-pellet2-2-2s-swrl-built-in-support-with-your-custom-built-in/

此外,創建的方式內置(相應於博客)當與相比的不同SWRLAPI(例如,Abox對象是一個參數)。

是否有另一種方法來做到這一點?或者可以將Pellet與SWRLBuiltInBridge連接起來?

+0

據我所知,沒有單位測試用例的功能是代碼。如果你設法得到一個可用的代碼,那麼從它衍生出一個測試可能會很好,或者功能可能不會被支持很久。 – Galigator

回答

0

Pellet推理器不使用SwrlApi。 Pellet使用/實現內置的方式與SwrlApi相差甚遠。每個內置的必須與推理器(ABox)的內部數據結構進行交互,並且必須使用ATerm的objets來完成。

但是,如果你需要這樣做,總有一種可能的破解。 您可以按照示例on the method testSpecialBuitIn()

他們關鍵是要添加自定義的buildin使用這種方法:BuiltInRegistry.instance.registerBuiltIn.

如果你的內置是正確的,沒有什麼更多的要求。

請不要在此解決方案中使用.core。 Pellet無模塊接口;所以在形式/行爲上的變化可以從一個版本發生到另一個版本而沒有警告

相關問題