如何在pyswip中沿side assertz使用retract / retractall

时间:2015-03-26 05:56:29

标签: prolog swi-prolog

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

我发现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)

1 个答案:

答案 0 :(得分:1)

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

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

linkage中,您可以提供要清除的值。