我想提出一个问题。我有一个正在处理的知识库,我希望用户使用 delete_predicate 删除他想要的谓词。
知识库是这样的:
is_tired(erin).
is_tired(mary).
我已将删除谓词定义为
delete_predicate(Predicate):-tell('my_knowledge_base.pl'),
retract(Predicate),
told.
假设用户想要删除谓词 is_tired(mary)。他将输入以下查询:
?-delete_predicate(is_tired(mary)).
并且给定的谓词将从 kb 中删除。我尝试了上述规则,但它删除了所有 kb 的内容!!
我真的很感激任何指针!
我将准确地展示我需要 delete_predicate 如何工作。
假设我在前面提到的知识库中增加了一些谓词:
:-dynamic(tired/1).
tired(kosta).
tired(renata).
tired(jim).
tired(mom).
tired(sister).
tired(mother).
tired(uncle).
tired(me).
如果用户想删除累(妈妈)。从kb他会查询这个:
?-delete_predicate(tired(mom)).
然后,知识库将删除该谓词,它看起来像这样:
tired(kosta).
tired(renata).
tired(jim).
%here used to be the tired(mom).
tired(sister).
tired(mother).
tired(uncle).
tired(me).
如果用户想从 kb 中删除疲倦(我),那么 kb 将是:
tired(kosta).
tired(renata).
tired(jim).
%here used to be tired(mom).
tired(sister).
tired(mother).
tired(uncle).
%here used to be tired(me).
等等...