java - 在推断模型上使用 Jena 规则文件为本体创建 validator

标签 java jena rule-engine jena-rules

我想做的:用 Java 为本体创建一个 validator 。为此,我想在推断模型上使用耶拿规则。不幸的是,我不能同时使用标准推理器 (ReasonerRegistry.getOWLReasoner()) 和我自己的推理器 (new GenericRuleReasoner(Rule.rulesFromURL("file:rulefile.txt")) )。这有可能吗?

最佳答案

耶拿内的默认本体推理应该为标准 owl 本体提供良好的验证。下面解释了如何对可能超出 owl 提供的范围的域使用相同的机制。

为了在使用 GnericRuleReasoner 时生成特定于域的冲突,需要在 FBRuleInfGraph.validate() 时刺激特定于域的 ValidityReport 的生成。被调用。

此方法向推理图引入了一个三元组:

728  Triple validateOn = new Triple(NodeFactory.createAnon(), 
729                          ReasonerVocabulary.RB_VALIDATION.asNode();
730                          Functor.makeFunctorNode("on", new Node[] {}));

这背后的想法是域内的规则会对这个三元组的存在敏感,然后生成一个 RB_VALIDATE_REPORT当域的约束失败时。

以现有 OWL 域为例,我们可以搜索表示违反 OWL 域特定约束的规则(来自 etc/owl-fb.rules):

[validationIndiv2: (?v rb:validation on()) (?X owl:disjointWith ?Y) ->
  [validationIndiv: (?I rb:violation error('conflict', 'Individual a member of disjoint classes', ?X, ?Y))
        <- (?I rdf:type ?X), (?I rdf:type ?Y) noValue(?T rb:prototype ?I)] ]

此前向链接规则引入了后向链接规则,当个体是不相交类的成员时,该规则表示 rb:violation

关于java - 在推断模型上使用 Jena 规则文件为本体创建 validator ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25342195/

相关文章:

java - Android 一段时间后隐藏滑动抽屉

java - 获取数组类型的 Class 对象的最佳方法是什么?

java - 将 JVM/JRE 设置为自动使用 Windows 代理

java - 如何在程序中仅打印斜杠 "/"之前的字母?

jsp - 从 JSP 读取 RDF(FOAF)

java - 将 Json-Ld 对象数组读入 Apache Jena 中的模型。如何从模型中检索单个对象?

.net - 评分/评级引擎 - 建议和示例?

java - (ILOG) IBM ODM 是否有使用像查找表这样的决策表或者这是一个不好的用法?

jena - 用Jena读取Protege本体文件时出错如何处理?

java - Drools 知识库大小