2017-05-26 33 views
1

您好,我正在嘗試在Protege 3.4中的Jess Tab中形成Jess規則。我是Jess中的新成員。我有一個具有類消息和3個數據類型屬性的本體:興趣,類別和類。如果消息的興趣列表等於消息的消息的消息的分類列表,則該規則如下工作。使用Jess Rule中的消息分類在Protege中

我使用映射我的消息類:(mapclass prefix:Message),這裏是我的規則。首先規則導致無限循環,並且只修改1個實例的類。我究竟做錯了什麼?我只打印它是成功的,但是這是我的工作沒有,請幫助urgently.The規則底部的修改是

defrule print_message_cat_int_modify 
(object (is-a ..#Message) (OBJECT ?o) 
(object (...#interests $?i) (OBJECT ?o)) 
(object (..#category $?c) (OBJECT ?o)) 
(object (..#id ?id) (OBJECT ?o)) 
=> (if (eq (intersection$ $?c $?i)()) then (printout t "spam" crlf) 
(modify-instance ?o (..#class spam)) else (printout t "ham" crlf) (modify- 
instance ?o (..#class ham)))) 

回答

0

基本上,如果你在一個規則匹配的事實然後修改該事實,如果規則仍然匹配修改後的事實,則該規則將再次被觸發。你必須寫規則,一旦事實被修改,規則不再匹配。在你的情況下,這可能會涉及匹配「#class」值,並排除你要改變它的那個值。

+0

我正在匹配幾個事實,他們依賴於可變的消息數量以及我希望規則值匹配的情況編號(例如,火腿),只要利益和類別沒有變化(如果它們更改並且是不等於fr例如那麼它應該是垃圾郵件。可以通過修改我的代碼來顯示我,我是jess中的新手,本週需要代碼。謝謝。 – user3379762