JADE+JENA

31
JADE + Jena José Ferdinandy Silva Chagas [email protected]

description

Apresentação sobre a plataforma de agentes JADE e a API para manipulação de ontologias JENA

Transcript of JADE+JENA

Page 1: JADE+JENA

JADE + Jena

José Ferdinandy Silva [email protected]

Page 2: JADE+JENA

Apresentação JADE

Iniciando a plataforma;

Passando objetos para os agentes;

Criando uma plataforma distribuída;

Ciclo de vida dos agentes;

Clonando agentes;

Movendo agentes.

Jena

Modelo interno;

Criando um modelo interno;

Especificações de modelos de ontologias;

Uniform Resource Identifier (URI);

Exemplo simples;

Modelo de inferência;

Exemplo de inferência;

Regras de inferência;

Validação da ontologia.

Demonstração JADE + Jena

Page 3: JADE+JENA

JADE

Page 4: JADE+JENA

Iniciando a plataforma

Aplicações geralmente não são compostas apenas por

agentes;

A aplicação interage com agentes instanciados em uma

plataforma JADE externa a aplicação.;

Aplicações externas podem iniciar o JADE de duas

formas:

Criando um container principal;

Criando um container adicional.

Page 5: JADE+JENA

Iniciando a plataforma

Linha de comando:

Código Java (Aplicação):

# java jade.Boot -h localhost -agents Agente:pacote.Classe

...

Runtime rt = Runtime.instance();

Profile p = new ProfileImpl();

ContainerController cc = rt.createMainContainer(p);

AgentController ac = cc.createNewAgent(“Agente”,”pacote.Classe”, args);

ac.start();

...

Page 6: JADE+JENA

Passando objetos para agentes

Em uma aplicação os agentes podem acessar todas as

variáveis ou objetos;

Para isso eles precisam receber essas variáveis ou objetos

através da aplicação;

Variáveis podem ser passadas para os agentes através da

linha de comando ou do próprio código da aplicação.

Page 7: JADE+JENA

Passando objetos para agentes

Aplicação

...

Runtime rt = Runtime.instance();

Profile p = new ProfileImpl();

ContainerController cc = rt.createMainContainer(p);

String nome = “Ferdinand”;

Object[] obj = new Object[3];

obj [0] = nome;

AgentController ac = cc.createNewAgent(“Agente”,”pacote.Classe”, obj);

ac.start();

...

Page 8: JADE+JENA

Passando objetos para agentes

Linha de comando:

Código Java (Aplicação):

# java jade.Boot -agents Agente:pacote.Classe arg1 arg2 arg3 ...

...

Runtime rt = Runtime.instance();

Profile p = new ProfileImpl();

ContainerController cc = rt.createMainContainer(p);

String nome = “Ferdinand”;

Object[] args = new Object[3];

args[0] = nome;

AgentController ac = cc.createNewAgent(“Agente”,”pacote.Classe”, args);

ac.start();

...

Page 9: JADE+JENA

Passando objetos para agentes

Código Java (Agente):

...

Object[] args = getArguments();

String nome = (String) args[0];

System.out.println(“Olá “+nome+”! Meu nome é “+getLocalName());

...

Page 10: JADE+JENA

Criando uma plataforma distribuída

Podemos criar e utilizar um sistema multiagentes de

forma distribuída.;

Isso permite o compartilhamento de recursos entre

agentes, aplicações, sistemas, etc.

Requisitos Mínimos:

Container principal;

Container adicional (1... N).

Page 11: JADE+JENA

Criando uma plataforma distribuída

Figura 1. Plataformas distribuídas

Page 12: JADE+JENA

Criando uma plataforma distribuída

Linha de comando:

Código Java:

# java jade.Boot -host myhost (1)

# java jade.Boot -container -host myhost -port 1099 (2)

...

Runtime rt = Runtime.instance();

Profile p = new ProfileImpl();

p.setParameter(Profile.MAIN_HOST,”myhost”);

p.setParameter(Profile.MAIN_PORT,”1099”);

ContainerController cc = rt.createAgentContainer(p);

AgentController ac = cc.createNewAgent(“Agente”,”pacote.Classe”, args);

ac.start();

...

Page 13: JADE+JENA

Ciclo de vida dos agentes

Figura 2. Ciclo de vida dos agentes

Page 14: JADE+JENA

Ciclo de vida dos agentes

Métodos de transição

doWait – faz o agente parar todas as suas atividades (interno);

doWake – faz o agente retomar suas atividades;

doMove – transporta o agente de um container pra outro;

doActivate – retoma as atividades do agente;

doSuspend – suspende as atividades (externo/interno);

doDelete – destrói o agente;

doClone – cria o clone do agente;

Page 15: JADE+JENA

Clonando agentes

É possível clonar agentes dentro da aplicação;

Os clones são criados em containers do JADE;

As informações necessárias para realizar a clonagem são:

Local onde será gerado o clone (Container);

Nome do clone .

Código Java (Agente):

...

doClone(local, “AgenteClone”);

...

Page 16: JADE+JENA

Movendo agentes

O JADE permite mover um agente de um container para

outro ou de uma plataforma para outra;

O processo composto pelo estado do agente irá migrar

para outro container;

Chamada do método doMove:

doMove(local);

local é a variável que armazena o endereço do container para

o qual o agente será transportado

Page 17: JADE+JENA

Jena

Page 18: JADE+JENA

Jena

O que é?

Framework Java para desenvolvimento e manipulação de ontologias desenvolvidas nos padrões RDF, OWL, etc.

Qual utilidade?

Criar, manter e utilizar bases de conhecimento para Web Semântica especificadas por ontologias utilizando a linguagem Java.

Principais recursos:

Métodos para leitura, escrita e manipulação de ontologias;

Possui uma máquina de inferência baseada em regras que permite estender as ontologias.

Page 19: JADE+JENA

Modelo interno

O Jena trabalha com um modelo interno que é a

representação em memória da base de conhecimento

que será manipulada;

Os modelos são criados com base em especificações dos

padrões utilizados para criação de ontologias (RDF, SRDF,

OWL, etc);

As especificações descrevem as características ou

limitações das operações para cada padrão de

representação de ontologias.

Page 20: JADE+JENA

Modelo interno

Figura 3. Visualização de um modelo de ontologia no Jena

Page 21: JADE+JENA

Especificações de modelos de ontologias

Page 22: JADE+JENA

Uniform Resource Identifier (URI)

Identificador de recursos no modelo de conhecimento;

Tudo é considerado um recurso;

Exemplo:

http://www.owl-ontologies.com/Ontology1250705464.owl#

http://www.owl-ontologies.com/Ontology1250705464.owl#Livro

Page 23: JADE+JENA

Código Java:

Exemplo simples

...

//Criando um modelo interno

OntModel model = ModelFactory.createOntologyModel( OntModelSpec.OWL_DL_MEM);

//Lendo uma ontologia no formato OWL

model.read("file:C:\\Users\\Ferdinand\\Desktop\\Ontologia\\Biblioteca\\Biblioteca.owl");

//Especificando URI de domínio

String URI = model.getNsPrefixURI("");

String URIObjeto = URI+"Livro";

OntClass dominio = model.getOntClass(URIObjeto);

//Criando instância de Livro

Individual instancia = dominio.createIndividual();

//Salvando modelo interno

File file = new File("C:\\Users\\Ferdinand\\Desktop\\Ontologia\\Biblioteca\\BibliotecaInf.owl");

model.write(new FileOutputStream(file);

...

Page 24: JADE+JENA

Modelo de Inferência

Figura 4. Estrutura do mecanismo de inferência do Jena

Page 25: JADE+JENA

Exemplo de inferência

Figura 5. Exemplo de inferência

Page 26: JADE+JENA

Exemplo de inferência

Código

Saída

Page 27: JADE+JENA

Regras para inferência

Page 28: JADE+JENA

Regras para inferência - Exemplo

Código

Page 29: JADE+JENA

Validação da ontologia

Procura inconsistências no modelo resultante da

inferência;

Código

Page 30: JADE+JENA

DEMONSTRAÇÃO

Page 31: JADE+JENA

Referências

JADEProgramming Tutorial for beginners (Documentação do

JADE).

Bellifemine, F., Caire, G. and Greenwood, D. (2007) Developing

multi-agent systems with JADE. Inglaterra: John Wiley & Sons,

Ltd.

Jena – Documentação oficial disponível em:

http://jena.sourceforge.net/documentation.html