jade+jena
Post on 05-Jul-2015
711 Views
Preview:
DESCRIPTION
TRANSCRIPT
JADE + Jena
José Ferdinandy Silva Chagasferdinandsc@gmail.com
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
JADE
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.
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();
...
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.
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();
...
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();
...
Passando objetos para agentes
Código Java (Agente):
...
Object[] args = getArguments();
String nome = (String) args[0];
System.out.println(“Olá “+nome+”! Meu nome é “+getLocalName());
...
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).
Criando uma plataforma distribuída
Figura 1. Plataformas distribuídas
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();
...
Ciclo de vida dos agentes
Figura 2. Ciclo de vida dos agentes
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;
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”);
...
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
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.
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.
Modelo interno
Figura 3. Visualização de um modelo de ontologia no Jena
Especificações de modelos de ontologias
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
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);
...
Modelo de Inferência
Figura 4. Estrutura do mecanismo de inferência do Jena
Exemplo de inferência
Figura 5. Exemplo de inferência
Exemplo de inferência
Código
Saída
Regras para inferência
Regras para inferência - Exemplo
Código
Validação da ontologia
Procura inconsistências no modelo resultante da
inferência;
Código
DEMONSTRAÇÃO
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
top related