2015-05-16 22 views
2

我正在使用JessTab API通過Jess規則操縱Java中的本體。以一個Person類的簡單本體爲例。我跑從Java下面的代碼斷言新的實例類人:在Java中使用Jess規則:斷言實例不能用於進一步推理

private final Rete r = new Rete(); 
Random randomGenerator = new Random(); 
r.executeCommand("(make-instance test of http://www.owl-ontologies.com/Ontology1431767500.owl#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命令嗎?

+1

'化妝instance'不是傑斯功能中。在任何情況下,您都應該檢查或顯示'Rete.executeCommand'的返回值以瞭解它是否成功。此外,'executeCommand'已被棄用 - 使用'eval'來代替。 – laune

+0

Thnx @laune。從JessTab文檔中,我發現如果必須將映射到Jess的WM中,則需要關鍵字映射。它現在有效。願真主保佑你 – Edi

回答

0

該補充instance命令應包括地圖關鍵字:

r.executeCommand("(make-instance test of http://www.owl-ontologies.com/Ontology1431767500.owl#Person map)");