Creando assert
Desde la línea de comandos de CLIPS, puede “asertarse” un hecho mediante
(assert):
CLIPS> (assert (Pedro 45 V NO))Registros
Primero, definiremos el tipo de dato registro con (deftemplate). A continuación, utilizaremos (assert) para establecer uno o varios hechos del tipo definido.
CLIPS> (deftemplate Persona
(field Nombre)
(field Edad)
(field Sexo)
(field EstadoCivil) )
CLIPS> (assert (Persona
(Nombre Juan)
(Edad 30)
(EstadoCivil casado)
(Sexo V)))
Cada vez que se añade un hecho (vector o registro), CLIPS devuelve un identificador de hecho, empezando desde 0 (a no ser que se haya asertado automáticamente con (reset) el hecho inicial, en cuyo caso, éste es el que tiene índice 0).
Multifield
Dentro de un template, si queremos que un campo sea un vector ordenado de características, usamos el identificador multifield, en vez de field:
(deftemplate Persona
(multifield Nombre)
(field Edad)
)
(assert (Persona
(Nombre Juan Carlos Cubero)
(Edad 33))
)
Reglas
(defrule <nombre> <comentario>
<patrón antecedente> +
=>
<consecuente> +
)
La parte izquierda de la regla suele llamarse LHS (Left Hand Side), mientras que la parte derecha es RHS (Right Hand Side). La LHS está constituida por varios patrones. En ellos se establecen las condiciones que han de darse sobre los elementos de la memoria de trabajo para que la regla pueda activarse. Los consecuentes pueden consistir en la adición o supresión de un elemento a la memoria de trabajo (ejecutando (assert) o (retract)) o la ejecución de algún procedimiento (como, por ejemplo, (printout)).
(deffacts VariosHechosVectores
(Persona Pedro 45 V SI)
(Persona Maria 34 M NO)
)
(defrule ECivilPedro_Soltero
(Persona Pedro 45 V NO)
=>
(printout t crlf "Pedro está soltero")
)
(defrule ECivilPedro_Casado
(Persona Pedro 45 V SI)
=>
(printout t crlf "Pedro está casado")
)
(defrule ECivilMaria_Soltera
(Persona Maria 34 M NO)
=>
(printout t crlf "Maria está soltera")
)
Para que se ejecuten las reglas ejecutamos el siguiente comando
CLIPS> (run)