Ejemplo de busqueda en CLIPS
Inicio de una sesion en CLips version para UNIX.
Esto es un ejemplo de como realizar busquedas.
godai@godai:~$ clips
CLIPS (V6.10 07/01/98)
CLIPS> (deffacts dato
(dato jose mariscal)
(dato jose casa)
(dato jose lapiz)
(dato casa azul)
)
CLIPS> (defrule busca-dato-1
(dato jose ?x)
(dato casa ?x)
=>)
CLIPS> (defrule busca-dato-2
(dato jose $?x)
(dato casa $?x)
=>)
CLIPS> (reset)
CLIPS> (facts)
f-0 (initial-fact)
f-1 (dato jose mariscal)
f-2 (dato jose casa)
f-3 (dato jose lapiz)
f-4 (dato casa azul)
For a total of 5 facts.
CLIPS> (agenda)
;; no se ve nada en la agenda porque las reglas que hemos metido con
;; defrule no se activan
;; vamos a crear una que busque (dato jose casa)
CLIPS> (defrule como
(dato jose casa)
=>)
CLIPS> (agenda)
0 como: f-2
For a total of 1 activation.
;; efectivamente se activa esa regla
CLIPS> (defrule busqueda-1
(dato ?x casa)
=>)
CLIPS> (agenda)
0 busqueda-1: f-2
0 como: f-2
For a total of 2 activations.
CLIPS> (defrule busqueda-2
(dato jose ?x)
(dato jose ?y)
=>)
;; esta se va a repetir mucho puesto que buscamos doblemente, se activara
;; como hay tres reglas que empiezan por jose, tres veces en cada una.
;; es decir la que se este evaluando consigo misma y con las demas
;; restantes
CLIPS> (agenda)
0 busqueda-2: f-1,f-3
0 busqueda-2: f-1,f-2
0 busqueda-2: f-1,f-1
0 busqueda-2: f-2,f-3
0 busqueda-2: f-2,f-2
0 busqueda-2: f-2,f-1
0 busqueda-2: f-3,f-3
0 busqueda-2: f-3,f-2
0 busqueda-2: f-3,f-1
0 busqueda-1: f-2
0 como: f-2
For a total of 11 activations.
;; ahora buscamos que sean solo jose y casa, se activaran las que tienen
;; jose con las que aparezcan casa.
CLIPS> (defrule busqueda-3
(dato jose $?x)
(dato casa $?k)
=>)
CLIPS> (agenda)
0 busqueda-3: f-1,f-4
0 busqueda-3: f-2,f-4
0 busqueda-3: f-3,f-4
0 busqueda-2: f-1,f-3
0 busqueda-2: f-1,f-2
0 busqueda-2: f-1,f-1
0 busqueda-2: f-2,f-3
0 busqueda-2: f-2,f-2
0 busqueda-2: f-2,f-1
0 busqueda-2: f-3,f-3
0 busqueda-2: f-3,f-2
0 busqueda-2: f-3,f-1
0 busqueda-1: f-2
0 como: f-2
For a total of 14 activations.