每次执行后刷新断言(事实)
Flushing the asserts(facts) after each execution
我在 python 程序中使用 swi-prolog。它从用户那里获取输入查询并为其创建断言。我将这部分保留为 gearman worker(如服务器套接字),它一直在监听输入查询。
第一个查询 - 程序生成 x 个断言
第二个查询 - 程序生成 y 个断言,现在程序在处理查询时考虑 (x+y) 个断言。
等等。
是否有任何方法可以在每次查询执行后刷新断言?这是 process.pro:
的代码片段
此处链接采用断言,问题用于输入查询。
question(REND, RULE):-
linkage(LINK, LEND, REND_NEW),
(
(
rule_first_question(LINK, REND_NEW) ->
nb_getval(rule, RULE_NEW),
nb_getval(rend, REND)
; nb_linkval(rule, ''), nb_getval(rule, RULE)
)
;
(
rule_third_question(LINK, REND_NEW) ->
nb_getval(link, LINK_NEW),
nb_getval(rule, RULE_NEW)
; nb_linkval(rule, ''), nb_getval(rule, RULE)
)
;
(
rule_four_question(LINK, REND_NEW) ->
nb_getval(link, LINK_NEW),
nb_getval(rule, RULE_NEW)
; nb_linkval(rule, ''), nb_getval(rule, RULE)
)
).
是的,retract 可以帮助您从数据库中删除事实。
for p in self.prolog_question_identify.query("retract(linkage(_,_,_)),fail"):
print
在链接中你可以给出你想要刷新的任何值。
我假设您所说的“同花顺”是指“忘记”。
retractall/1如你所愿
示例:
?- assert(bottoms_on_fire(all_english_men)).
正确。
?- assert(bottoms_on_fire(all_scottish_men)).
正确。
?- bottoms_on_fire(all_english_men).
正确。
?- retractall(bottoms_on_fire(_)).
正确。
%note- 使用匿名变量来统一所有这些事实
?- bottoms_on_fire(all_english_men).
错误。
我在 python 程序中使用 swi-prolog。它从用户那里获取输入查询并为其创建断言。我将这部分保留为 gearman worker(如服务器套接字),它一直在监听输入查询。
第一个查询 - 程序生成 x 个断言
第二个查询 - 程序生成 y 个断言,现在程序在处理查询时考虑 (x+y) 个断言。
等等。
是否有任何方法可以在每次查询执行后刷新断言?这是 process.pro:
的代码片段此处链接采用断言,问题用于输入查询。
question(REND, RULE):-
linkage(LINK, LEND, REND_NEW),
(
(
rule_first_question(LINK, REND_NEW) ->
nb_getval(rule, RULE_NEW),
nb_getval(rend, REND)
; nb_linkval(rule, ''), nb_getval(rule, RULE)
)
;
(
rule_third_question(LINK, REND_NEW) ->
nb_getval(link, LINK_NEW),
nb_getval(rule, RULE_NEW)
; nb_linkval(rule, ''), nb_getval(rule, RULE)
)
;
(
rule_four_question(LINK, REND_NEW) ->
nb_getval(link, LINK_NEW),
nb_getval(rule, RULE_NEW)
; nb_linkval(rule, ''), nb_getval(rule, RULE)
)
).
是的,retract 可以帮助您从数据库中删除事实。
for p in self.prolog_question_identify.query("retract(linkage(_,_,_)),fail"):
print
在链接中你可以给出你想要刷新的任何值。
我假设您所说的“同花顺”是指“忘记”。
retractall/1如你所愿
示例:
?- assert(bottoms_on_fire(all_english_men)).
正确。
?- assert(bottoms_on_fire(all_scottish_men)).
正确。
?- bottoms_on_fire(all_english_men).
正确。
?- retractall(bottoms_on_fire(_)).
正确。
%note- 使用匿名变量来统一所有这些事实
?- bottoms_on_fire(all_english_men).
错误。