• No se han encontrado resultados

CAPÍTULO 3. QUIMEX: VISTO DESDE EL USUARIO FINAL

3.5 A DMINISTRACIÓN DE LA BASE DE CONOCIMIENTO

3.5.4 Crear base de conocimiento

La opción “crear una nueva base de conocimiento” (la última del menú “Administración”). Permite crear un directorio con el nombre y los archivos necesarios para que se pueda seleccionar como base de conocimiento. Se le añade además una sustancia hipotética con el nombre “sustancia”, que sirve como ejemplo.

Si se selecciona esta opción, se visualiza un cuadro de diálogo que facilita la selección del camino donde se desea crear la nueva base de conocimiento, se muestra entonces un mensaje anunciando que la base de conocimiento será cambiada y que automáticamente el sistema adoptará los cambios, si es confirmada se cumple la acción.

67

CONCLUSIONES

Con este trabajo se logra un Sistema Basado en Conocimiento que permite realizar diagnósticos sobre las patologías asociadas al uso de sustancias químicas, así como su diseño e implementación puede guiar a estudiantes de Ciencia de la Computación en la asignatura Programación Lógica o Programación Declarativa.

Se creó una base de conocimiento haciendo uso del lenguaje Prolog donde se representó la información proveniente de especialistas de química, a través de esta se puede conservar, almacenar y ordenar el conocimiento en materia de diagnóstico. Se implementó un mecanismo que permite la comunicación entre Java y SWI-Prolog haciendo uso de la biblioteca que ofrece este último denominada JPL (Java Prolog). Se desarrolló una interfaz gráfica que permite al usuario final la interacción con el sistema de forma agradable.

Se implementó un mecanismo de actualización de la base de conocimiento, donde el usuario especialista tiene la posibilidad de agregar o eliminar hechos a la base de conocimiento del Prolog sin la necesidad de conocer el lenguaje.

68

RECOMENDACIONES

Se recomienda:

1. Incrementar la información de la base de conocimiento inicial del software Quimex versión 1.0 con la inclusión de nuevas sustancias químicas.

2. Implementar un mecanismo de protección de la base de conocimiento que permita reparar esta en caso de ser dañada por intrusos.

69

REFERENCIAS

ALBERICIO, F. 2010. RedEmprendia [Online]. Available: http://www.redemprendia.es

[Accessed].

BELLO, R. 2002. Aplicaciones de la Inteligencia Artificial, Jalisco.

BELLO, R., GÁLVEZ, D., GARCÍA, M., LEZCANO, M. 1995. Modelos Computacionales Avanzados,

Villa Clara.

BRAMER, M. 2005. Logic Programming with Prolog, Portsmouth, Springer.

BRATKO, I. 1990. PROLOG PROGRAMMING FOR ARTIFICIAL INTELLIGENCE New York Addison-

Wesley

CALLEJA, Y. 2010. PATHOS SISTEMA BASADO EN CONOCIMIENTO PARA EL DIAGNÓSTICO

PATOLÓGICO EN EDIFICACIONES. Trabajo de diploma de la carrera de Ciencia de la Computación. Universidad Central “Marta Abreu” de Las Villas.

CLIMENT, S. 1999. SISTEMAS EXPERTOS VALENCIA.

GÁLVEZ, D. 1998. Sistemas Basados en el Conocimiento, Villa Clara.

GARCÍA VALDIVIA, Z. Z., BELLO PÉREZ, R. 2000. Introducción a la Inteligencia Artificial, México,

Editorial Pandora.

HAYES-ROTH, F. 1983. Building Expert Systems, California, Addison-Wesley.

LEZCANO, M. 2000. Prolog y los Sistemas Expertos, Jalisco.

(Macprogramadores,2011). "JNI(Java Native Interface)." from http://www.macprogramadores.org/.

ModelSim (2002). Foreign Language Interface. Portland, Model Technology Incorporated.

NILSSON, U., MATUSZYNSKI, J. 2000. Logic, Programming and Prolog, John Wiley & Sons Ltd.

ROWE, N. C. 1988. Artificial Intelligence through Prolog, Prentice-Hall.

RUSSELL, S., NORVIG, P. 2004. Inteligencia Artificial un Enfoque Moderno, Madrid, Prentice

Hall.

70

BIBLIOGRAFÍA

Murrugarra, N. (2002). "Conectar Java con Prolog." from

http://inf.unitru.edu.pe/~nineil/.

PatrickBlackburn (2001). LearnPrologNow!

WALKER ADRIAN, M. M. C., JOHN SOWA Y WALTER WILSON. 1990. Knoledge

71

ANEXOS

ANEXO 1 Orientación del trabajo extraclase de la asignatura Programación Lógica Trabajo extraclase de Programación Lógica

Curso 2009-2010 Orientaciones:

Desarrollar un sistema basado en el conocimiento usando Prolog que permita ofrecer a los usuarios sobre los metales (que le correspondan al equipo) la información siguiente:

Distribución y usos, riesgos, toxicología, síntomas, compuestos, medidas de salud y seguridad, tratamiento.

La información se toma del archivo E-02 Metales-Propiedades químicas y toxicidad.pdf que aparece en la carpeta de la asignatura denominada Trabajo extraclase PL 09-10 o que se adjunta en el mensaje sobre Trabajo extraclase. En el documento podrá encontrar información de cada metal pero también aparecen tablas resumen que debe consultar, ellas son Tabla 63.3 Riesgos para la salud, Tabla 63.2 Riesgos físicos y químicos.

Fecha de entrega: jueves 3 de junio a través del correo o en copia dura.

Equipo Metales

Grupo 1

Alina, Anabel, Merly Aluminio, antimonio

Abbi, Pedro, Retsel, Iosvani, Luc Gerard, Gilberto (G2) Zinc, cadmio, tantalo, níquel

Leidy, Brenda Talio

Yoandy, Ernesto Pereira, Asley, Gerardo, Miguel Angel Magnesio, galio, germanio

Yaimit, Dairon Manganeso

Rafael, Misladys Mercurio

Humberto, Josué, Yosvany, Frank Plata, paladio

Grupo 2

Adrián, Maray, Carlos E. Fdez, Yanet Cobre, arsénico, plomo Lisette Izada, Claudia Orama, Itnamy, Landy, Ariel Cromo, bario, platino Vladimir, Leonel, Yasser Almeida, Ernesto Miranda Estaño, bismuto

72 Anexo 2 Diagrama parcial de clases

73 ANEXO 3 Uso de las clases de la biblioteca JPL

La biblioteca JPL está formada por un conjunto de clases que representan los diferentes predicados del lenguaje Prolog.

Term: Esta clase es abstracta y de ella heredan todas las demás clases que conforman JPL. No puede ser instanciada directamente sino que se debe instanciar una de sus clases hijas.

Variable:

Para crear un objeto de Java que represente una variable del Prolog se instancia la clase Variable de la siguiente manera:

Variable X = new Variable (“X”);

Variable anónima = new Variable (“_”);

El primer ejemplo representa una variable X del Prolog, el segundo representa una variable anónima. Para crear variables en Java se sigue el mismo criterio del Prolog. Las variables comienzan con letra mayúscula y las variables anónimas con „_‟.

Atom:

A través de esta clase se representan las constantes del Prolog. A continuación se muestra como se aplica la misma:

Atom juan = new Atom (“Atom1”); Atom pedro = new Atom (“Atom2”);

Cada uno de los ejemplos representa las constantes „Atom1‟ y „Atom2‟ respectivamente.

Compound: Clase que representa un predicado que puede ser simple o compuesto: Compound c = new Compound (“padre”, new Term [] { Atom1, Atom2}); Compound d = new Compound (“padre”, new Term [] {X, Atom2});

El primer ejemplo hace uso de los átomos anteriormente mostrados y representa el predicado de Prolog “padre („Atom1‟, „Atom2‟).”, que constituye un hecho. El segundo utiliza la variable mostrada anteriormente y representa el predicado:

74

Query: Esta clase es la encargada de realizar interrogantes al mecanismo de inferencias del Prolog.

Query q = new Query (c); Query p = new Query (d);

El primer ejemplo representa la interrogante “? padre („Atom1‟, „Atom2‟).” A lo que el mecanismo de inferencia de Prolog responderá sí o no según sea el caso.

A continuación se describen algunos de los principales métodos de la clase Query: q. query (); Ejecuta la consulta q y devuelve un valor booleano que indica si obtuvo alguna solución o no. Generalmente se utiliza para obtener respuestas de sí o no.

q. oneSolution (); Ejecuta la consulta y devuelve una Tabla Hash con la primera solución que encuentre o el valor null si no obtuvo ningún resultado. Generalmente se utiliza para realizar interrogantes que impliquen variables como la interrogante p. En ese caso la Tabla Hash contendrá en su llave el nombre de la variable y en el campo correspondiente a la llave contendrá un objeto de la clase Term que representa el predicado o la constante que unificó con la variable durante la búsqueda del Prolog. q. allSolutions (); Funciona de manera similar a la anterior, solo que esta devuelve un arreglo de Tabla Hash donde cada una contiene una unificación diferente hasta llegar a todas las posible.

A continuación se muestran ejemplos de cómo obtener los resultados de una consulta utilizando los objetos Query anteriormente declarados:

Hashtable resultado = p. oneSolution (); if (resultado != null {salir} Atom respuesta = (Atom) resultado.get (“X”); String mostrar = respuesta.getName ();

75 ANEXO 4 Configuraciones del IDE NetBeans y SWI-Prolog paralograr la comunicación entre Java y Prolog.

El proyecto fue realizado usando IDE NetBeans 6.0 y SWI-Prolog .Ambos software necesitan ser instalados. A continuación se muestran los pasos para la configuración de IDE NetBeans:

Añadir la biblioteca JPL que ofrece SWI-Prolog al proyecto: Hacer clic izquierdo sobre el proyecto y seleccionar en el menú contextual la opción Properties. En el árbol de categorías del diálogo que se muestra seleccionar la categoría Libraries. Luego en la parte derecha del diálogo añadir la dirección donde se encuentra la biblioteca jpl.jar seleccionando el botón Add JAR/Folder. Generalmente se puede encontrar en la carpeta lib del directorio de instalación del SWI-Prolog.

Declarar las siguientes variables de entornos:

Variable Valor

SWI_HOME C:\Archivos de programa\pl CLASSPATH %SWI_HOME%\lib\jpl.jar

HOME %HOMEDRIVER%%HOMEPATH%

Documento similar