2017-05-26 6 views
1

こんにちは私はProtege 3.4のJessタブでJessルールを作成しようとしています。私はJessの新機能です。私はクラスMessageと3つのデータ型プロパティ、つまり興味、カテゴリ、クラスを持つオントロジーを持っています。メッセージの関心リストが、メッセージがハムであるメッセージのカテゴリリストと等しい場合、ルールは次のように機能する。ProtegeのJess Ruleを使用したメッセージの分類

私はメッセージクラスをマッピングしました:(mapclass接頭辞:メッセージ)ここに私のルールです。最初に、ルールは無限ループにつながり、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

私はいくつかの事実にマッチしています。それらは可変であるメッセージの数とケースIDに依存します。関心とカテゴリが変更されない限り(たとえばハムなど)そうでなければそれはスパムになります。私の苦しみを修正することで私を見せてもらえますか、私はジェスで新しく、今週のコードが必要です。ありがとう。 – user3379762

関連する問題