<$BlogRSDUrl$>

Pro·Log·[IR]

Programación Lógica y Recuperación de Información

«Algorithm = Logic + Control» Robert Kowalski (1979)

¡Importante! esta página hace uso de estilos recogidos en la especificación CSS2, no soportados por el navegador que está utilizando. Por favor, lea esta recomendación al respecto.

Archivo

Guardado por meses.

Enlaces

Los siguientes listados son una referencia a partir de la cual ampliar la búsqueda de sitios relacionados (i).

Bitácoras en castellano

Bitácoras en inglés

Directorios, metablogs

Programación lógica, Inteligencia Artificial, Recuperación de Información

Usabilidad, Arquitectura de la Información

Listas, foros, wikis

Matemáticas, ciencias

Miscelánea

Búsquedas

Búsqueda simple en varios de los motores más conocidos. Para mayor precisión, entrar en la página correspondiente e ir al apartado de búsqueda avanzada.

Búsqueda con Google
 

Búsqueda con Yahoo!
 

Búsqueda con AlltheWeb

Varios

Esta página traducida:

Traducción al catalán, internostrum; traducción al portugués, universia.

Reciba un aviso de nuevos comentarios (por Bloglet).


Agregue este sitio a su lector de "feeds" (sindicación mediante el sistema Atom).

Sobre este sitio

Espacio dedicado a la programación lógica y la recuperación de información, con una atención especial al lenguaje Prolog y otros lenguajes afines, pertenecientes al paradigma lógico y declarativo. También se tratará de hablar de estos temas desde la perspectiva de la Biblioteconomía y la Documentación.

En esta página

1.7.03

Java e Inteligencia Artificial - Java y Prolog

En Null Pointer Exception, "weblog" dedicado a hablar de Java, Inteligencia Artificial (IA), Linux y otros temas, Jose Luis Mondelo describe con ejemplos concretos la creciente aplicación de Java a la implementación de desarrollos basados en técnicas propias de la IA... no todo va a ser Prolog, Lisp y otros lenguajes basados en el paradigma de la programación lógica, en el desarrollo de programas "inteligentes"...

En el apartado de enlaces sobre IA que encontramos en esta bitácora destaca, a mi modo de ver, el portal especializado generation5.org. Recomiendo visitar la sección de ensayos y artículos. Breves, claros y concisos, complementados, muchos de ellos, con la explicación de aplicaciones reales cuyo código se puede descargar, en estos artículos se habla, entre otros temas, de: Algoritmos genéticos, Redes Neuronales, Lógica Difusa, Procesamiento del Lenguaje Natural, Vida Artificial, etc. También se ocupan de Prolog, dentro del subapartado Programming: introducción a este lenguaje en tres partes, desarrollo de un sistema experto, tutorial de WinProlog, y, finalmente (al día de hoy), un artículo sobre los árboles de decisión. Por lo demás, el resto del sitio no tiene menos interés, pero lo mejor es ir y verlo por uno mismo.

A los usuarios de FeedReader y otros agregadores les resultará interesante saber que esta página tiene un servicio de sindicación (RSS) tanto de noticias como de artículos.

En JavaPro, el artículo "Prove It, Don't Compute It" trata sobre la programación en Java de reglas de inferencia y bases de conocimiento, emulando mediante clases de Java los principios y métodos del paradigma de la programación lógica. La explicación se ilustra con una serie de ejemplos, cuyo código fuente se puede visualizar en ventanas aparte, y descargar en un solo archivo comprimido (entrar en "get the code").

Y ya que hablamos en esta ocasión de Java e IA, me parece interesante mencionar varias aplicaciones cuyo propósito es implementar código escrito en Prolog dentro de Java y viceversa: tuProlog es un intérprete Prolog y una herramienta de desarrollo para aplicaciones basadas en Internet, de uso libre para su utilización con fines no comerciales. La integración del lenguaje Prolog con Java permite combinar el componente lógico-declarativo del primero con el funcional y orientado a objetos del segundo. En el manual de usuario leemos la siguiente introducción:

"tuProlog is a Java-based light-weight Prolog for Internet applications and infrastructures. For this purpose, tuProlog has been designed to be easy deployable light-weight, dynamically configurable, easily interoperable and built upon Java.

Integration with Java is as wide, deep, and clean as possible, so that tuProlog components can be developed by choosing at any step the most suitable paradigm either declarative/logic or imperative/object-oriented. From the Prolog side, thanks to the JavaLibrary library, any Java entity (objects, classes, packages) can be represented as a Prolog term, and exploited from Prolog. So, for instance, Java packages like Swing and JDBC can be directly used from within Prolog, straightforwardly enhancing tuProlog with graphics and database access capabilities. From the Java side, a tuProlog engine can be invoked and used as a simple Java object, possibly embedded in beans, or exploited in a multi-threaded context, according to the application needs. Also, a multiplicity of different tuProlog engines can be used from a Java program at the same time, each one configured with its own libraries and knowledge base.

Interoperability is strongly developed along two main lines: Internet standard patterns, and coordination models. So, tuProlog supports interaction via TCP/IP and RMI, and can be also provided as a CORBA service. In addition, tuProlog supports tuple-based coordination under many forms. First, components of a tuProlog application can be organised around Java-based tuple spaces, logic tuple spaces, and ReSpecT tuple centres. Then, tuProlog applications can exploit Internet infrastructures providing tuple-based coordination services, like LuCe and TuCSoN."

El intérprete Prolog de esta aplicación se puede ejecutar "online" por medio de un "applet" de Java. Este applet permite introducir directamente hechos y reglas escritos en Prolog en una caja de texto al efecto, o bien cargar una base de conocimiento previamente guardada en un archivo, y a continuación interrogarla e inferir resultados. También permite salvar las posibles modificaciones que vayamos realizando durante la ejecución. De entre las ventajas de tuProlog destacaría, además de la integración de Java con Prolog y al contrario, la posibilidad de desarrollar aplicaciones cuyo motor de razonamiento y de inferencia lógica es una base de conocimiento y un conjunto de reglas escritas en Prolog, a las que se puede incorporar un componente de orientación a objetos, cuyo funcionamiento será independiente del SO en el que se ejecuten.

Una aplicación muy interesante de tuProlog es PrologConsole. Se trata de un "plug-in" que añade a jEdit, editor de texto de código abierto, escrito en Java, la capacidad de manejar un intérprete para el lenguaje Prolog, basado en el estándar ISO. Esto permite utilizar jEdit para escribir código Prolog, o bien editar un archivo ya existente, y al tiempo comprobar la ejecución de los predicados y sentencias de ese código en una consola aparte. En el archivo de descarga de este plug-in viene incluida una copia de tuProlog, ya que es necesaria su instalación para que funcione esta utilidad de jEdit.

JinniConsole, es otro interesante "plug-in" para jEdit. En este caso sirve para "embeber" en dicho editor de texto el intérprete para Prolog y herramienta de "script" Jinni:

"A Prolog Compiler built in Java for Intelligent Mobile Agent Scripting and Internet Programming [...] lightweight, multi-threaded, Java based Prolog compiler intended to be used as a flexible scripting tool for gluing together knowledge processing components and Java objects in networked client/server applications, as well as through applets over the Web."

Para finalizar este comentario, dos recomendaciones más a propósito del tema tratado: "Java Meets Prolog for Advisors, Analysts and Agents", artículo publicado originalmente en PC AI magazine (noviembre/diciembre 1996), describe cómo incorporar un motor de inferencia escrito en Prolog (basado en el entorno de desarrollo Amzi! Prolog) en una clase de Java. Por su parte, en este documento se explica, en castellano, cómo comunicar código escrito en Prolog con Java y viceversa, utilizando JIPL. Hay muchas otras implementaciones, además de las ya mencionadas, que sirven para este propósito, por ejemplo, y sin ánimo exhaustivo:

Algunas de ellas, al igual que en el caso de tuProlog, permiten ejecutar un applet de Java, a modo de intérprete Prolog, dentro de una página HTML. Por último, recomendar la siguiente página de enlaces comentados: Links for Java Prolog.

[1] comentarios | # | lista |


Pro·Log·[IR],

Publicación: Blogger | Estadísticas: eXTReMe Tracking

Se recomienda ver este sitio con Mozilla 1+, Firefox 0.8+ ó Netscape 7+. Si no queda más remedio, con IE 6+. Si lo desea, comunique cualquier problema al respecto. También será bien recibida cualquier sugerencia sobre el contenido. La fuente de letra preferente es Georgia. Se prohibe la utilización del diseño de la página salvo autorización expresa del autor. Los contenidos escritos son de uso libre, siempre que se cite la fuente.