3

DROOLS .drl ファイルとして定義されたルールを CLIPS .clp に変換する必要があります。

私が理解しているように、DROOLS ルールを ruleML に変換し、ruleML を CLIPS .clp に変換できるはずです。

ファイル形式間の変換よりも複雑な問題であることはよく理解しています。しかし、私がこの問題に飛び込んだ限り(ネットで見つかった論文や情報を読んで)、それは十分に可能であるはずです. しかし、これは私の領域ではなく (まだ)、問題は複雑すぎて、実用的なアドバイスや例がなければ始めることができません。

4

1 に答える 1

3

2 つの言語間で同様の機能を翻訳する場合は、翻訳を行うプログラムを作成するか、できれば検索と置換を grep 式で使用することができます。プログラムが非常に単純でない限り、翻訳をチェックして微調整するかなりの作業を行う必要があります (これには、両方の言語の実用的な知識が必要です)。たとえば、以下のコードは IRL (JRules) から CLIPS に変換されたルールです。

私は ruleML で使用できるツールに詳しくありませんが、部分的な変換でも実行できるツールがあれば、それを使用して開始する価値があります。

when 
  {
   Phase ( name == "match" ) ;
   Rank ( ?p : value; process == "yes" );
   Technique ( name == "Hidden-Single"; rank == ?p ) ;   
   Possible ( ?v : value; ?r : row; ?pid : id );
   not Possible ( value == ?v; row == ?r; id != ?pid ) ;
   Possible ( ?v2: value; value != ?v; row == ?r; id == ?pid ) ;
   not Impossible ( id == ?pid; value == ?v2; rank == ?p ) ;
  }
then 
  {
   insert Impossible() { id = ?pid; value = ?v2; rank = ?p; reason = "Hidden Single";  }  
  }

(defrule hidden-single-row   
   (phase match)
   (rank (value ?p) (process yes))
   (technique (name Hidden-Single) (rank ?p))
   (possible (value ?v) (row ?r) (id ?id))
   (not (possible (value ?v) (row ?r) (id ~?id)))
   (possible (value ?v2&~?v) (row ?r) (id ?id))
   (not (impossible (id ?id) (value ?v2) (rank ?p)))
   =>
   (assert (impossible (id ?id) (value ?v2) (rank ?p) (reason "Hidden Single"))))
于 2013-06-04T02:12:15.620 に答える