2013-05-30 31 views
1

我需要從定義爲DROOLS .drl文件的規則轉換爲CLIPS .clp。如何將JBoss/DROOLS規則轉換爲CLI clp

據我所知,應該可以將DROOLS規則轉換成ruleML,將ruleML轉換成CLIPS .clp。

我很清楚這件事比在文件格式之間轉換更復雜。但據我深入研究(閱讀網上發現的文章和信息),這應該是可能的。但是,這只是我的領域(尚未),對於我而言,如果沒有實際的建議和示例,這件事情就太複雜了。

回答

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")))) 
+0

感謝您的回答。你的回答以及更多的研究使我得出結論,我的最初想法在實際項目中不可行。 – benjist

相關問題