2013-05-30 4 views
1

Мне нужно преобразовать из правил, определенных как файлы DROOLS .drl, в CLIPS .clp.Как перевести правила JBoss/DROOLS в CLIPS 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

Смежные вопросы