在 Java 中使用 Jess 规则:断言实例不能用于进一步推理
Use Jess rules in Java: Asserted instances cannot be used for further reasoning
我正在使用 JessTab API 通过 Jess 规则在 Java 中操作本体。一个简单的 ontology 和 class Person 被用作示例。我 运行 来自 Java 的以下代码为 class 人断言新实例:
private final Rete r = new Rete();
Random randomGenerator = new Random();
r.executeCommand("(make-instance test of http://www.owl-ontologies.com/Ontology1431767500.owl#Person)");
列出 class 个人的简单规则如下所示不会显示新断言的实例测试:
(defrule listPeople
(object (is-a http://www.owl-ontologies.com/Ontology1431767500.owl#Person)
(OBJECT ?p)
)
=>
(printout t "Person instances: " (instance-name ?p) crlf)
)
在 Protege IDE 中使用 JessTab 执行此操作会显示实例,但是 运行ning 来自 Java NetBeans 不会考虑 make-instance 命令断言的事实。我尝试在执行 make-instance 命令后保存 ontology,然后保存 运行 规则,但出现相同的行为,即不考虑新事实。我必须 运行 特定的 JessTab 命令吗?
make-instance 命令应包含 map 关键字:
r.executeCommand("(make-instance test of http://www.owl-ontologies.com/Ontology1431767500.owl#Person map)");
我正在使用 JessTab API 通过 Jess 规则在 Java 中操作本体。一个简单的 ontology 和 class Person 被用作示例。我 运行 来自 Java 的以下代码为 class 人断言新实例:
private final Rete r = new Rete();
Random randomGenerator = new Random();
r.executeCommand("(make-instance test of http://www.owl-ontologies.com/Ontology1431767500.owl#Person)");
列出 class 个人的简单规则如下所示不会显示新断言的实例测试:
(defrule listPeople
(object (is-a http://www.owl-ontologies.com/Ontology1431767500.owl#Person)
(OBJECT ?p)
)
=>
(printout t "Person instances: " (instance-name ?p) crlf)
)
在 Protege IDE 中使用 JessTab 执行此操作会显示实例,但是 运行ning 来自 Java NetBeans 不会考虑 make-instance 命令断言的事实。我尝试在执行 make-instance 命令后保存 ontology,然后保存 运行 规则,但出现相同的行为,即不考虑新事实。我必须 运行 特定的 JessTab 命令吗?
make-instance 命令应包含 map 关键字:
r.executeCommand("(make-instance test of http://www.owl-ontologies.com/Ontology1431767500.owl#Person map)");