CONECTAR JAVA CON PROLOG
Nils Murrugarra Llerena [Link]@[Link]
[Link]
Resumen: En este documento veremos la manera de conectar Java con swi-Prolog
de una manera simple y sencilla mediante JPL, el ejemplo mostrado ha sido
obtenido de los ejemplos que vienen al instalar el swi-prolog, veamos a
continuación los pasos que debemos realizar:
1. Crear un proyecto en NetBeans: jpl
2. Crear una clase Family que contenga:
package jpl;
import [Link];
import jpl.*;
import [Link];
public class Family
{
public static void main( String argv[] )
{
String t1 = "consult('[Link]')";
Query q1 = new Query(t1);
[Link]( t1 + " " + ([Link]() ? "succeeded" : "failed") );
//--------------------------------------------------
String t2 = "child_of(joe, ralf)";
Query q2 = new Query(t2);
[Link]( t2 + " is " + ([Link]() ? "provable" : "not
provable") );
//--------------------------------------------------
String t3 = "descendent_of(steve, ralf)";
Query q3 = new Query(t3);
[Link]( t3 + " is " +([Link]() ? "provable" : "not
provable") );
//--------------------------------------------------
String t4 = "descendent_of(X, ralf)";
Query q4 = new Query(t4);
[Link]( "first solution of " + t4 + ": X = " +
[Link]().get("X"));
//--------------------------------------------------
[Link][] ss4 = [Link]();
[Link]( "all solutions of " + t4);
for ( int i=0 ; i<[Link] ; i++ ) {
[Link]( "X = " + ss4[i].get("X"));
}
//--------------------------------------------------
[Link]( "each solution of " + t4);
while ( [Link]() ){
[Link] s4 = [Link]();
[Link]( "X = " + [Link]("X"));
}
//--------------------------------------------------
String t5 = "descendent_of(X,Y)";
Query q5 = new Query(t5);
[Link]( "each solution of " + t5 );
while ( [Link]() ){
[Link] s5 = [Link]();
[Link]( "X = " + [Link]("X") + ", Y = " + [Link]("Y"));
}
}
}
3. Compilemos
Como podemos ver nos salen 2 errores, veremos como solucionarlos.
4. Añadir las siguientes rutas al path del sistema:
a. C:\Archivos de programa\Java\jdk1.5.0_09\bin;
b. C:\Archivos de programa\Java\jdk1.5.0_09\lib\[Link];
c. C:\Archivos de programa\Java\jdk1.5.0_09\jre\lib\[Link];
d. C:\Archivos de programa\pl\bin;
e. C:\Archivos de programa\pl\lib\[Link];
5. Añadiendo Librería
Añadamos la librería [Link] al proyecto, la librería debe encontrarse en:
C:\Archivos de programa\pl\lib . Vamos al panel de la izquierda en el ítem
libraries, add Jar Fólder y añadimos el [Link].
6. Ahora al realizar la compilación todo sale ok.
7. Crear un archivo en prolog: [Link] con el siguiente contenido
child_of(joe, ralf).
child_of(mary, joe).
child_of(steve, joe).
descendent_of(X, Y) :-
child_of(X, Y).
descendent_of(X, Y) :-
child_of(Z, Y),
descendent_of(X, Z).
8. Copiar [Link] en la carpeta del proyecto actual
9. Analicemos el código
a. Query q1 = new Query(“consult('[Link]')”);
Accedemos al archive de prolog de donde obtendremos nuestras
consultas.
b. Query q2 = new Query("child_of(joe, ralf)");
[Link]();
Determinamos si el hecho child_of(joe, ralf) nos brinda como respuesta
verdadero o falso.
c. Query q4 = new Query("descendent_of(X, ralf)");
[Link]().get("X")
Calcula la primera solución al predicado dado.
d. [Link][] ss4 = [Link]();
Calcula todas las soluciones posibles para el predicado de q4
10. Compilemos y Ejecutemos
La salida que debemos obtener es la siguiente:
% c:/documents and settings/pc compatible/[Link] compiled 0.00 sec,
1,732 bytes
% [Link] compiled 0.00 sec, 1,100 bytes
consult('[Link]') succeeded
child_of(joe, ralf) is provable
descendent_of(steve, ralf) is provable
first solution of descendent_of(X, ralf): X = joe
all solutions of descendent_of(X, ralf)
X = joe
X = mary
X = steve
each solution of descendent_of(X, ralf)
X = joe
X = mary
X = steve
each solution of descendent_of(X,Y)
X = joe, Y = ralf
X = mary, Y = joe
X = steve, Y = joe
X = mary, Y = ralf
X = steve, Y = ralf
11. Los pasos anteriores son suficientes para compilar y ejecutar los programas que
usen prolog y Java, pero cuando deseemos usar el .jar generado de nuestro
programa debemos tener algunas consideraciones:
a. Crear un archivo .bat que contenga
call "C:\Archivos de programa\pl\doc\packages\examples\jpl\java\[Link]"
[Link]
b. En nuestro caso nuestro no se vera nada ya que el NetBeans no muestra
datos escritos en texto, pero cuando se levante una interfaz esto les será
útil.