Download - JADE+JENA
![Page 2: JADE+JENA](https://reader034.vdocuments.com.br/reader034/viewer/2022042715/5598f6911a28ab78278b4658/html5/thumbnails/2.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042715/5598f6911a28ab78278b4658/html5/thumbnails/3.jpg)
JADE
![Page 4: JADE+JENA](https://reader034.vdocuments.com.br/reader034/viewer/2022042715/5598f6911a28ab78278b4658/html5/thumbnails/4.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042715/5598f6911a28ab78278b4658/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042715/5598f6911a28ab78278b4658/html5/thumbnails/6.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042715/5598f6911a28ab78278b4658/html5/thumbnails/7.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042715/5598f6911a28ab78278b4658/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042715/5598f6911a28ab78278b4658/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042715/5598f6911a28ab78278b4658/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042715/5598f6911a28ab78278b4658/html5/thumbnails/11.jpg)
Criando uma plataforma distribuída
Figura 1. Plataformas distribuídas
![Page 12: JADE+JENA](https://reader034.vdocuments.com.br/reader034/viewer/2022042715/5598f6911a28ab78278b4658/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042715/5598f6911a28ab78278b4658/html5/thumbnails/13.jpg)
Ciclo de vida dos agentes
Figura 2. Ciclo de vida dos agentes
![Page 14: JADE+JENA](https://reader034.vdocuments.com.br/reader034/viewer/2022042715/5598f6911a28ab78278b4658/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042715/5598f6911a28ab78278b4658/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042715/5598f6911a28ab78278b4658/html5/thumbnails/16.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042715/5598f6911a28ab78278b4658/html5/thumbnails/17.jpg)
Jena
![Page 18: JADE+JENA](https://reader034.vdocuments.com.br/reader034/viewer/2022042715/5598f6911a28ab78278b4658/html5/thumbnails/18.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042715/5598f6911a28ab78278b4658/html5/thumbnails/19.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042715/5598f6911a28ab78278b4658/html5/thumbnails/20.jpg)
Modelo interno
Figura 3. Visualização de um modelo de ontologia no Jena
![Page 21: JADE+JENA](https://reader034.vdocuments.com.br/reader034/viewer/2022042715/5598f6911a28ab78278b4658/html5/thumbnails/21.jpg)
Especificações de modelos de ontologias
![Page 22: JADE+JENA](https://reader034.vdocuments.com.br/reader034/viewer/2022042715/5598f6911a28ab78278b4658/html5/thumbnails/22.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042715/5598f6911a28ab78278b4658/html5/thumbnails/23.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042715/5598f6911a28ab78278b4658/html5/thumbnails/24.jpg)
Modelo de Inferência
Figura 4. Estrutura do mecanismo de inferência do Jena
![Page 25: JADE+JENA](https://reader034.vdocuments.com.br/reader034/viewer/2022042715/5598f6911a28ab78278b4658/html5/thumbnails/25.jpg)
Exemplo de inferência
Figura 5. Exemplo de inferência
![Page 26: JADE+JENA](https://reader034.vdocuments.com.br/reader034/viewer/2022042715/5598f6911a28ab78278b4658/html5/thumbnails/26.jpg)
Exemplo de inferência
Código
Saída
![Page 27: JADE+JENA](https://reader034.vdocuments.com.br/reader034/viewer/2022042715/5598f6911a28ab78278b4658/html5/thumbnails/27.jpg)
Regras para inferência
![Page 28: JADE+JENA](https://reader034.vdocuments.com.br/reader034/viewer/2022042715/5598f6911a28ab78278b4658/html5/thumbnails/28.jpg)
Regras para inferência - Exemplo
Código
![Page 29: JADE+JENA](https://reader034.vdocuments.com.br/reader034/viewer/2022042715/5598f6911a28ab78278b4658/html5/thumbnails/29.jpg)
Validação da ontologia
Procura inconsistências no modelo resultante da
inferência;
Código
![Page 30: JADE+JENA](https://reader034.vdocuments.com.br/reader034/viewer/2022042715/5598f6911a28ab78278b4658/html5/thumbnails/30.jpg)
DEMONSTRAÇÃO
![Page 31: JADE+JENA](https://reader034.vdocuments.com.br/reader034/viewer/2022042715/5598f6911a28ab78278b4658/html5/thumbnails/31.jpg)
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