1

我正在使用 JessTab API 通过 Jess 规则在 Java 中操作本体。以 Person 类的简单本体为例。我从 Java 运行以下代码来断言类 Person 的新实例:

private final Rete r = new Rete();
Random randomGenerator = new Random();
r.executeCommand("(make-instance test of http://www.owl-ontologies.com/Ontology1431767500.owl#Person)");

如下列出 Person 类的个体的简单规则不会显示新断言的实例测试:

(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 执行此操作会显示实例,但从 Java NetBeans 运行不会考虑 make-instance 命令断言的事实。我尝试在执行 make-instance 命令后保存本体,然后运行规则,但出现相同的行为,即不考虑新事实。我必须运行特定的 JessTab 命令吗?

4

1 回答 1

0

make-instance 命令应包含 map 关键字:

r.executeCommand("(make-instance test of http://www.owl-ontologies.com/Ontology1431767500.owl#Person map)");
于 2015-05-16T16:29:17.530 回答