Импортируйте.clp и добавьте факты

Я использую Python и Clips для решения проблемы, вот что я пытаюсь сделать:

Я ищу, чтобы загрузить.clp файл из Python и запустить его. Мне нужно также добавить факты, основанные на базе данных. Таким образом, файл.clp будет иметь правила, и я использую

clips.Load("myfile.clp")

загрузить мой файл. Я застрял на том, как утверждать факты в клипах. У меня также есть финальный финал в клипах, в котором будет храниться то, что получится, основываясь на фактах. Мне нужно вернуть это обратно в Python для запуска другого кода.

Спасибо

1 ответ

Я предполагаю, что вы используете PyCLIPS.

import clips

def clips_callable(f):
    def wf(*args, **kwargs):
        if f(*args, **kwargs):
            return clips.Symbol("TRUE")
        else:
            return clips.Symbol("FALSE")
    clips.RegisterPythonFunction(wf, f.__name__)

@clips_callable
def pyprint(s):
    print s
    print "".join(map(str, s))


clips.Load("test.clp")
clips.Reset()
clips.Run()

# assert a fact.
a = clips.Assert("(order (part-id p1) (quantity 20))")
clips.Run()

test.clp выглядит примерно так:

(deffunction MAIN::print ($?value) 
    (python-call pyprint ?value)
;   (printout t ?value)
)

(deftemplate MAIN::order
    (slot part-id)
    (slot quantity)
)

Я включил @clips_callable декоратор в качестве бонуса, что позволяет очень легко вызывать функцию Python из клипов.

Другие вопросы по тегам