import clips
# Para que Clips pueda mostrar mensajes en Jupyter es necesario redirigir la salida.
# Esto lo conseguimos mediante "logging".
import logging
logging.basicConfig(level=10, format='%(message)s')
env = clips.Environment()
router = clips.LoggingRouter()
router.add_to_environment(env)
env.load('../sbr/demo-python-clips.clp')
fact = env.assert_string('(cielo azul)')
env.run()
[BLOAD2] File ../sbr/demo-python-clips.clp is not a binary construct file. Hola Mundo!!
1
A lo largo del tiempo nuevos hechos (eventos) van teniendo lugar. Es necesario informar a Clips de las cosas que van cambiando.
import clips
import logging
logging.basicConfig(level=10, format='%(message)s')
env = clips.Environment()
router = clips.LoggingRouter()
router.add_to_environment(env)
env.load('../sbr/main.clp')
env.reset()
env.run()
[BLOAD2] File ../sbr/main.clp is not a binary construct file. Encender aire acondicionado de: Sala de Juntas Apagar la luz de: Almacén Encender la luz de: Administración Encender la luz de: Sala de Juntas
6
template = env.find_template('person')
print(template)
fact = template.new_fact()
fact["id_card"]="44678678"
fact["name"]="Ana"
fact["surname"]="Peña"
fact["location"]="Almacén"
print(fact)
fact.assertit()
env.run()
Encender la luz de: Almacén
(deftemplate MAIN::person (slot id_card (type STRING)) (slot name (type STRING)) (slot surname (type STRING)) (slot location) (slot cellphone (type STRING))) (person (id_card "44678678") (name "Ana") (surname "Peña") (location "Almacén") (cellphone ))
1
fact.retract()
env.run()
Apagar la luz de: Almacén
1
for fact in env.facts():
print(fact)
(initial-fact) (person (id_card "42888777R") (name "Juan") (surname "Pérez") (location "Sala de Juntas") (cellphone "619123456")) (person (id_card "44555666L") (name "Laura") (surname "Martínez") (location "Sala de Juntas") (cellphone "616778899")) (person (id_card "43999000L") (name "Antonio") (surname "Hernández") (location "Administración") (cellphone "")) (person (id_card "45333444K") (name "Luis") (surname "Sosa") (location nil) (cellphone "")) (location (name "Sala de Juntas") (description "") (telephone "928458899")) (location (name "Administración") (description "") (telephone "928111222")) (location (name "Almacén") (description "") (telephone "928000888")) (temperature 28) (raining no)
import clips
import logging
logging.basicConfig(level=10, format='%(message)s')
env = clips.Environment()
router = clips.LoggingRouter()
router.add_to_environment(env)
def suma(a, b):
return a+b
env.define_function(suma)
env.eval('(> 10 (suma 5 4))')
'TRUE'
import clips
import logging
logging.basicConfig(level=10, format='%(message)s')
env = clips.Environment()
router = clips.LoggingRouter()
router.add_to_environment(env)
env.load('../sbr/restricciones.clp')
env.assert_string('(luz amarilla)') # Ejemplo 1
env.assert_string('(valor 4)') # Ejemplo 2
env.run()
[BLOAD2] File ../sbr/restricciones.clp is not a binary construct file. 4 No cruce Cruce con precaución
3