2015-09-22 23 views
0

我嘗試閱讀有關Jess的教​​程,但找不到任何有用的東西。我想建立一個程序來找出我正在談論的那個樂器。因此,如果樂器有琴絃,我們知道樂器是琴絃或打擊樂器(即鋼琴)類別。我會如何編寫一個規則來保存一個事實,說明該類別是基於此標準的打擊樂器或字符串?如何在Jess中通過規則添加事實?

我認爲綁定,但不綁定意味着我將不得不爲每個潛在的類別有一個單獨的變量?或者,我應該使用斷言?

回答

2

這演示瞭如何從規則中插入一個事實來存儲一組可能的類別。

(deftemplate Instrument (slot strings)) 
(deftemplate Classification (multislot category)) 
(defrule cat-by-strings 
    ?i <- (Instrument (strings ?s&:(> ?s 0))) 
=> 
    (assert (Classification (category STRING PERCUSSION))) 
) 
(assert (Instrument (strings 18))) 
(run) 
(facts) 

輸出:

f-0 (MAIN::initial-fact) 
f-1 (MAIN::Instrument (strings 18)) 
f-2 (MAIN::Classification (category STRING PERCUSSION)) 
For a total of 3 facts in module MAIN. 

使用約束變量是無用的,因爲它們被限制爲規則的上下文。

相關問題