使用Protege中的Jess规则对消息进行分类

时间:2017-05-26 14:41:23

标签: classification ontology protege rule jess

您好我正在尝试在Protege 3.4中的Jess Tab中形成一个Jess规则我是Jess的新手。我有一个带有Message类和3种数据类型属性的本体:兴趣,类别和类。如果消息的兴趣列表等于消息为火腿的消息的类别列表,则该规则如下工作。

我使用:(mapclass前缀:Message)映射我的Message类,这是我的规则。首先,规则导致无限循环并且仅修改1个实例的类。我做错了什么?当我只打印它是成功的但是作为我工作基础的修改没有,请紧急帮助。规则是

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))))

1 个答案:

答案 0 :(得分:0)

基本上,如果您匹配规则中的事实然后修改该事实,如果规则仍然与修改的事实匹配,则将再次触发规则。你必须编写规则,以便一旦修改了事实,规则就不再匹配了。在您的情况下,这可能涉及匹配" #class"价值并排除您将要更改为的价值。