我需要将定义为DROOLS .drl文件的规则转换为CLIPS .clp。
据我了解,应该可以将DROOLS规则转换为ruleML,将ruleML转换为CLIPS .clp。
我很清楚这件事比在文件格式之间转换更复杂。但就我而言(阅读网上发现的文件和信息),它应该是可能的。然而,这不是我的领域(还),如果没有实际的建议和例子,这件事太复杂了。
答案 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"))))