如何检索具有特定名称的规则所断言的事实?

时间:2019-06-14 07:01:10

标签: clips

我有一些定义如下的模板:

(deftemplate action
    (slot name)
    (slot field)
    (slot value))

我还有其他规则,这些规则将使用其他事实来断言动作事实。

现在我只想通过模板操作检索事实。

目前,我正在使用find-fact进行检索,但是在这里我必须使用不想提供的查询。

(find-fact ((?fact action)) (= (str-compare ?fact:name 'Action1') 0))

我想要使用模板操作的所有事实,并且不想使用Action1,Action2等在所有名称上写一个循环。

谢谢。

1 个答案:

答案 0 :(得分:1)

         CLIPS (6.31 4/1/19)
CLIPS> 
(deftemplate action
    (slot name)
    (slot field)
    (slot value))
CLIPS> 
(deffacts actions
   (action (name Action1) (field x) (value 3))
   (action (name Action2) (field y) (value 4))
   (action (name Action3) (field z) (value 5)))
CLIPS>        
(defrule find-Action1
   (action (name Action1))
   =>)
CLIPS> (reset)
CLIPS> (agenda)
0      find-Action1: f-1
For a total of 1 activation.
CLIPS> (facts)
f-0     (initial-fact)
f-1     (action (name Action1) (field x) (value 3))
f-2     (action (name Action2) (field y) (value 4))
f-3     (action (name Action3) (field z) (value 5))
For a total of 4 facts.
CLIPS>