如何将JBoss / DROOLS规则转换为CLIPS clp

时间:2013-05-30 15:18:13

标签: jboss drools clips

我需要将定义为DROOLS .drl文件的规则转换为CLIPS .clp。

据我了解,应该可以将DROOLS规则转换为ruleML,将ruleML转换为CLIPS .clp。

我很清楚这件事比在文件格式之间转换更复杂。但就我而言(阅读网上发现的文件和信息),它应该是可能的。然而,这不是我的领域(还),如果没有实际的建议和例子,这件事太复杂了。

1 个答案:

答案 0 :(得分:1)

如果您正在翻译两种语言之间的类似功能,那么您可以编写一个程序来进行翻译或使用搜索,最好用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"))))