Jess es un motor de reglas para la plataforma de computación Java , escrito en el lenguaje de programación Java . Fue desarrollado por Ernest Friedman-Hill de los Laboratorios Nacionales Sandia . [ 1 ] Es un superconjunto del lenguaje CLIPS . [ 1 ] Fue escrito por primera vez a finales de 1995. [ 1 ] El lenguaje proporciona programación basada en reglas para la automatización de un sistema experto , y a menudo se le denomina shell de sistema experto . [ 1 ] En los últimos años, también se han desarrollado sistemas de agentes inteligentes , que dependen de una capacidad similar.
En lugar de un paradigma procedimental , donde un programa tiene un bucle que se activa solo una vez, el paradigma declarativo utilizado por Jess aplica un conjunto de reglas a un conjunto de hechos de forma continua mediante un proceso denominado coincidencia de patrones . Las reglas pueden modificar el conjunto de hechos o ejecutar cualquier código Java. Para la ejecución de las reglas, utiliza el algoritmo Rete [ 1 ] .
Licencia
La licencia de Jess es gratuita para uso educativo y gubernamental, y es un software propietario que requiere licencia para uso comercial. En cambio, CLIPS, que es la base y el código inicial de Jess, es software libre y de código abierto .
Ejemplos de código
Ejemplos de código:
; es un comentario( enlazar ?x 100 ); x = 100( deffunction max ( ?a ?b ) ( if ( > ?a ?b ) then ?a else ?b ))( deffacts mi habitación ( mueble silla ) ( mueble mesa ) ( mueble cama ) )( deftemplate coche ( slot color ) ( slot kilometraje ) ( slot valor ) )( afirmar ( coche ( color rojo ) ( kilometraje 10000 ) ( valor 400 )))Código de ejemplo:
( clear ) ( deftemplate donante de sangre ( slot nombre ) ( slot tipo )) ( deffacts banco de sangre ; poner nombres y sus tipos en [[memoria de trabajo]] ( donante de sangre ( nombre "Alice" )( tipo "A" )) ( donante de sangre ( nombre "Agatha" )( tipo "A" )) ( donante de sangre ( nombre "Bob" )( tipo "B" )) ( donante de sangre ( nombre "Barbara" )( tipo "B" )) ( donante de sangre ( nombre "Jess" )( tipo "AB" )) ( donante de sangre ( nombre "Karen" )( tipo "AB" )) ( donante de sangre ( nombre "Onan" )( tipo "O" )) ( donante de sangre ( nombre "Osbert" )( tipo "O" )) ) ( defrule puede -donar-al-mismo-tipo-pero-no-sí-mismo ; maneja A > A, B > B, O > O, AB > AB, pero no N1 > N1 ( donante de sangre ( nombre ?nombre )( tipo ?tipo )) ( donante de sangre ( nombre ?nombre2 )( tipo ?tipo2 &: ( eq ?tipo ?tipo2 ) &: ( neq ?nombre ?nombre2 ) )) => ( printout t ?nombre " puede dar sangre a " ?nombre2 crlf ) ) ( defrule O-da-a-otros-pero-no-a-sí-mismo ; O a O cubrir en la regla anterior ( donante de sangre ( nombre ?nombre )( tipo ?tipo &:( eq ?tipo "O" ))) ( donante de sangre ( nombre ?nombre2 )( tipo ?tipo2 &: ( neq ?tipo ?tipo2 )&: ( neq ?name ?name2 ) )) => ( printout t ?name " puede dar sangre a " ?name2 crlf ) ) ( defrule A-or-B-gives-to-AB ; case O da a AB y AB da a AB ya tratado ( donante de sangre ( nombre ?name )( tipo ?type &: ( o ( eq ?type "A" ) ( eq ?type "B" )))) ( donante de sangre ( nombre ?name2 )( tipo ?type2 &: ( eq ?type2 "AB" ) &: ( neq ?name ?name2 ) )) => ( printout t ?name " puede dar sangre a " ?name2 crlf ) ) ;(watch all) ( reset ) ( run )Véase también
Sistemas relacionados
- CLIPS : herramienta de software de dominio público para construir sistemas expertos.
- Reglas ILOG : sistema de gestión de reglas de negocio
- JBoss Drools : sistema de gestión de reglas de negocio (BRMS)
- Prolog : lenguaje de programación lógica de propósito general
- Tabletas OpenL : reglas centradas en el negocio y BRMS
- DTRules: motor de reglas de código abierto basado en tablas de decisión para Java.
Referencias
Fuentes adicionales
Enlaces externos
- "Jess, el motor de reglas para la plataforma Java" . Archivado del original el 29 de diciembre de 2011.
- Sistemas expertos
- Motores de reglas
- lenguajes de representación del conocimiento
- API de Java
- Laboratorios Nacionales Sandia