如何在 pyswip 中使用 retract/retractall 和 assertz

How to use retract/retractall along side assertz in pyswip

我面临缓冲事实问题,其中来自先前查询的 assertz(facts) 在后续查询中也保留在缓冲区中。

我发现 retract 从数据库中删除了事实,但仍然无法弄清楚如何在 python(/pyswip) 中使用它们。

任何示例或参考都非常有用。

代码片段:

        self.prolog_question_identify = Prolog()
        self.prolog_question_identify.consult(subject_object.pro")
        for linking in self.post_script_link_list:
            linkage = self.outObj.createLinkage(linking,len(link.links)) #UDF in preprocess_link_output
            self.prolog_question_identify.assertz(linkage)

是的,retract 可以帮助您从数据库中删除事实。

    for p in self.prolog_question_identify.query("retract(linkage(_,_,_)),fail"):
        print

linkage 中,您可以给出要清除的任何值。