0

問題を解決するためにpythonとClipsを使用しています。これが私がやろうとしていることです:

Python から .clp ファイルを読み込んで実行しようとしています。データベースに基づいて事実を追加する必要もあります。したがって、.clpファイルにはルールが含まれており、私は使用しています

clips.Load("myfile.clp")

私のファイルをロードします。事実をクリップに主張する方法に行き詰まっています。また、事実に基づいて得られたものを保存するクリップの変数ファイナルもあります。他のコードを実行するには、それを python に戻す必要があります。

ありがとう

4

1 に答える 1

0

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 関数を簡単に呼び出すことができます。

于 2014-05-06T10:43:11.720 に答える