在 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)");