私が今持っているものは、X(Y) が私の小さな DB で受け入れられた事実ではないことを確認します。X(Y) は false を返すため、それをアサートしようとします。(X が事実ではなく規則である場合、これは問題を引き起こすことを認識しています)
ifNotAdd(X,Y):-
not(call(X,Y)),
!,
assert(X(Y)).
たとえば、この事実がDBにあるとしましょう
mammal(dolphin).
ifNotAdd(哺乳類、ゾウ) に質問します。
私はそれを見たいですか?哺乳類(ゾウ)。は false で、哺乳類 (象) をアサートします。
明らかに「assert(X(Y))」です。行が間違っていますが、何に置き換えますか? 答えを求めてプロローグのドキュメントとフォーラムを探していますが、今のところうまくいきません。私はまた、これを自分で行うものを書き込もうとしています。
編集 ユーザーが対話できる動的データベースを作成するには、DB を編集する必要があります。私は引数マシンを構築していますが、システムがドメイン外の知識を処理できるように、ユーザーが「事実を確実に知っている」ことをシステムに伝えることができるようにする必要があります。
http://en.wikipedia.org/wiki/Reason_maintenanceの流れで
乾杯、