0
A
回答
1
請注意,由於這個問題非常廣泛,我的回答僅僅是對整體設計的一系列建議。首先,我們將從耶拿如何做到這一點開始。
Apache Jena將其規則文件存儲爲分佈式jar包中的類路徑資源。 jena-core
有一個名爲etc
的包(目錄),其中存儲了多個規則文件。 Jena已經實施的reasoners實際上只是具有特定規則集的GenericRuleReasoner
。例如,FBRuleReasoner#loadRules()
方法用於檢索此推理程序將使用的規則集。你應該看看它被調用的地方,以便弄清楚你將如何使用這樣的範例。
在你的系統中,我建議構建你自己的實現ReasonerFactory
(我們稱之爲MyReasonerFactory
)。在MyReasonerFactory
中,您可以有一個靜態初始化塊,它將爲您的域特定推理程序註冊Builtin
。當有人撥打ReasonerFactory#create(Resource)
時,您可以從類路徑加載規則,然後創建一個使用這些規則的GenericRuleReasoner
。
一些僞代碼(也可能無法編譯)如下:
public class MyReasonerFactory implements ReasonerFactory
private static final String RULE_LOC = "/some/directory/in/my/jar/filename.extensiondoesntmatter";
static {
// register your builtins
}
@Override
public RuleReasoner create(Resource r) {
final GenericRuleReasoner reasoner = new GenericRuleReasoner(this, r);
reasoner.setRules(FBRuleReasoner.loadRules(RULE_LOC));
return reasoner;
}
@Override
public String getUri() {
return "urn:ex:yourReasoner";
}
@Override
public Model getCapabilities() {
// Your capabilities are identical to GenericRuleReasoner's
return GenericRuleReasonerFactory.theInstance().getCapabilities();
}
}
+1
我會試試看。順便說一句...非常感謝。你得到了我正在尋找的東西。 – user3563844
相關問題
- 1. 創建一個新的類庫項目
- 2. Probem創建一個新的phonegap項目
- 3. 創建一個新的Tomcat項目
- 4. 在eclipse中創建一個新項目
- 5. 使用PhoneGap創建一個新項目
- 6. foundationCLI ENOENT當創建一個新項目
- 7. 創建自動創建一個新的數據庫條目
- 8. 爲一個SharePoint項目創建一個類庫
- 9. 創建新項目
- 10. 創建一個Java項目的構建
- 11. 如何重新創建一個Django項目的數據庫?
- 12. python django:爲每個django項目創建一個新的virtualenv?
- 13. 當我創建一個新項目時未創建Appcompat_v7
- 14. Eclipse的Maven項目錯誤創建一個新的Maven項目
- 15. 創建一個maven項目
- 16. 創建一個twitter項目
- 17. 創建一個Laravel項目
- 18. 爲Xamarin創建一個UWP項目
- 19. 爲java項目創建一個.exe
- 20. 爲opencv項目創建一個makefile
- 21. 在Eclipse中創建一個新項目後自動創建「appcompat_v7」項目
- 22. SCRAPY - 如何創建一個帶有Scarpy項目時設置項目創建
- 23. Laravel:創建一箇舊項目傳出的新項目
- 24. 創建新的Gerrit項目
- 25. Jinja2:爲每3個項目創建一個新行
- 26. 爲Xampp創建一個新的Eclipse項目
- 27. CVS:爲私人項目創建一個新的離線分支
- 28. Rails將不會創建新項目,因爲它認爲它在一個內
- 29. 創建每個項目的新對象
- 30. 獲取每個新創建的項目
因爲你問它的問題可能是過於寬泛。你有沒有想過看看Jena如何實施? –