我面临缓冲事实问题,其中来自先前查询的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)
答案 0 :(得分:1)
是的,撤回可以帮助您从数据库中删除事实。
for p in self.prolog_question_identify.query("retract(linkage(_,_,_)),fail"):
print
在linkage
中,您可以提供要清除的值。