JADE+JENA

Post on 05-Jul-2015

711 views 0 download

description

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

Transcript of JADE+JENA

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