Uma Proposta para Integração de Java e Prolog

Propaganda
Laboratório de Programação III
Sumário
Considerações Iniciais
 Modelo Arquitetural
 Outras Integrações
 Referências Bibliográficas

Considerações Iniciais

Porque integrar?
 Emprego do mecanismo de busca e inferência
de prolog em programas Java;
 Utilização das vantagens do Java em programas
prolog;
 Ampliação do domínio dos termos prolog
○ De Strings a objetos
Modelo Arquitetural

Arquitetura em 1 camada
 Um programa Prolog é transformado em um programa
Java;

Arquitetura em 2 camadas
 Emulação de um motor Prolog emulado em Java;

Arquitetura em 3 ou mais camadas
 Programas Java fazem chamadas a uma camada
intermediária, que por sua vez invoca o motor Prolog;
 Programas Prolog fazem chamadas a uma camada
intermediária, que as repassam para a JVM.
Arquitetura em 1 camada
Pré-compilação de regras prolog em classes Java, que
implementam o mecanismo de busca e inferência prolog.
Programa Prolog (Familia.pl)
avo(X,Z) :- pai(X,Y), pai(Y,Z).
avo(X,Z) :- pai(X,Y), mae(Y,Z).
avo(X,Z) :- mae(X,Y), pai(Y,Z).
avo(X,Z) :- mae(X,Y), mae(Y,Z).
mae(marta, joao).
mae(maria, silvia).
pai(jose, joao).
pai(joao, marcos).
mae(sandra, jose).
pai(pedro, jose).
Arquitetura em 1 camada
Programa Java (Familia.java)
public class Familia {
private static Set fatos = new HashSet();
static {
fatos.add(new Fato(“Mae”, “Marta”, “Joao”));
fatos.add(new Fato(“Mae”, “Maria”, “Silvia”));
fatos.add(new Fato(“Pai”, “Jose”, “Joao”));
. . .
}
public static boolean Avo(String x, Sting y) {
return (Avo_1(x,y) || Avo_2(x,y) || Avo_3(x,y) || Avo_4(x,y));
}
private static boolean Avo_1(String x, String y) {
for (Iterator i = fatos.iterator(); i.hasNext(); ) {
Fato f = (Fato) i.next();
if (f.getPredicateName().equals(“Pai”) &&
g.getParam(1).equals(x) {
Fato aux = new Fato(“Pai”, f.getParam(2), y);
if (fatos.contains(aux)) return true;
}
}
return false;
}
. . .
}
Arquitetura em 2 camadas
Biblioteca de classes Java que implementam a
funcionalidade do motor de Prolog;
Emulação do motor Prolog em Java:
 Exemplos:
○ jProlog
 Descrição: IDE para linguagem Prolog com interpretador.
 Link: http://sourceforge.net/projects/jprolog/
○ JavaLog
 Descrição: Uma biblioteca de classes Java.
 Link: http://sourceforge.net/projects/javalog/
Arquitetura em 2 camadas
InterfaceProlog
Objeto
+ assert(String)
+ checkGoal(String)
+ findAll(String)
Classes Java que
implementam
o motor prolog
Arquitetura em 3 camadas
Biblioteca de classes Java servem como
ponte para algum sistema já existente:
 Plugins para algum sistema integrado de outra
linguagem(C, C#,...) com prolog.
 Comunicação da JVM com o runtime prolog via
sockets (ou similar).
○ Ex.: InterProlog
○ Link: http://www.declarativa.com/interprolog/
Arquitetura em 3 camadas
InterProlog - integra Java e Prolog via comunicação
JVM via sockets ↔ Runtime Prolog
Aplicações
Java
Programa
Prolog
Classes
InterProlog
Predicados
InterProlog
JVM
Redirecionam. I/O
sockets
Visão Geral da Arquitetura
Executável
Prolog
Arquitetura em 3 camadas
termoProlog :javaMessage(...).
InterfaceJava.pl
Predicado javaMessage ( . . .)
usado para enviar mensagens a
objetos Java.
Três formas:
• javaMessage(Objeto, Mensagem)
• javaMessage(Objeto, Resultado,
Mensagem)
• javaMessage(Objeto, Resultado,
Excecao,Mensagem, Argumentos,
ArgumentosDepois)
javaMessage(T,R,E,M,A,RA,N) :socket_get(S,T,...),
socket_put(S,T,M,...)...
Rede
Objetos Java
Arquitetura em 3 Camadas
InterProlog – Exemplo de uma regra em Prolog
trabalhando com javaMessage
distancia(Local1, Local2, Dist) :javaMessage(Local1, Dist, dist(Local2)).
Outras Integrações
Ontologias(OWL) X Prolog
Disponível em http://arxiv.org/ftp/arxiv/papers/0711/0711.3419.pdf
Outras Integrações
Prolog nos fundamentos WS
Disponível em http://ftp.informatik.rwth-aachen.de/Publications/CEUR-WS/Vol-287/paper_1.pdf
Outras Integrações
Prolog/Java

JPL – Interface bidirecional Prolog/Java
 Link: http://www.swi-prolog.org/packages/jpl/

JIProlog – Plataforma Java interpretação Prolog
 Link: http://www.brothersoft.com/mobile/jiprolog-2179.html

PrologCafe – Sistema de comunicação Prolog e Java
 Link: http://kaminari.scitec.kobe-u.ac.jp/PrologCafe/

Diversos:
 Link: http://kaminari.scitec.kobe-u.ac.jp/logic/jprolog.html
Referências Bibliográficas



jProlog
http://people.cs.kuleuven.be/~bart.demoen/PrologI
nJava/
JavaLog
http://azunino.sites.exa.unicen.edu.ar/research/pro
jects/agent-development-tools
InterProlog
http://www.declarativa.com/interprolog
Download