如何强制片段忽略规则的某个事实?

问题描述 投票:0回答:1

我具有以下定义]

(deftemplate potential
     (multislot values (type INTEGER))
)

并且我想删除此deftemplate的实例,如果其中仅出现整数。例:事实1:潜力1 2 3事实2:潜力2 3 4事实3:潜力2 3 4 5

我想撤消事实1和事实3,因为它们分别包含1和5。

我正在尝试使用如下规则来实现它:

  1 (defrule remove_if_only_option
  2     ?p<-(potential (values $? ?value $?   ))
  3     (not (exists   (potential (values $? ?value $?)  )))
  4     =>
  5     (retract ?p)
  7 )

显然,它不起作用,因为第3行可以匹配初始事实。是否有任何方法可以使该规则以其余规则不考虑?p的方式运行?

谢谢。

我具有以下deftemplate(潜在的deftemplate(多时隙值(INTEGER类型))),如果仅在整数中出现,我想删除此deftemplate的实例。例如:fact-1:...

clips
1个回答
0
投票

您的规则中的任何一种模式都不会受到初始事实的影响,因为它们都与潜在事实相匹配。存在条件元素在第二种模式中是多余的,因此您的规则等效于

© www.soinside.com 2019 - 2024. All rights reserved.