JADE + Jena

José Ferdinandy Silva Chagas
            ferdinandsc@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:
    # java jade.Boot -h localhost -agents Agente:pacote.Classe

   Código Java (Aplicação):
    ...
    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:
    # java jade.Boot -agents Agente:pacote.Classe arg1 arg2 arg3 ...

   Código Java (Aplicação):
    ...
    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:
    # java jade.Boot -host myhost                           (1)
    # java jade.Boot -container -host myhost -port 1099     (2)


   Código Java:
    ...
    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
Exemplo simples
   Código Java:
    ...

    //Criando um modelo interno
    OntModel model = ModelFactory.createOntologyModel( OntModelSpec.OWL_DL_MEM);

    //Lendo uma ontologia no formato OWL
    model.read("file:C:UsersFerdinandDesktopOntologiaBibliotecaBiblioteca.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:UsersFerdinandDesktopOntologiaBibliotecaBibliotecaInf.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

Mais conteúdo relacionado

PPT
Java Básico :: Stream
PPT
Ficheiros em JAVA
PDF
Python e django na prática
PDF
Java 07
PDF
java.io - fluxos (streams) e arquivos
PPT
Ficheiros texto
PDF
Pged 05
PDF
Pged 04
Java Básico :: Stream
Ficheiros em JAVA
Python e django na prática
Java 07
java.io - fluxos (streams) e arquivos
Ficheiros texto
Pged 05
Pged 04

Mais procurados (18)

PDF
Introducao ao python - Luciana Mota
PPTX
Curso Java Básico - Aula 04
PPT
Java Desktop
PDF
Atualização Java 8 (2014)
PDF
Curso de Java: Introdução a lambda e Streams
PDF
Java collections-basic
PDF
Cherrypy - um framework para desenvolvimento rápido de aplicações web
PDF
Curso java 04 - ap is e bibliotecas
PDF
Introdução a estruturas de dados em python
PDF
POO - Unidade 1 (complementar) - Introdução a Java e UML (versão draft 01)
PDF
Postgresql + Python = Power!
PDF
PPTX
Mapeamento Objeto-Relacional com LINQ
PDF
Threads 07: Sincronizadores
PDF
TDC2018SP | Trilha Ruby - Programacao funcional com Ruby, potencialize e simp...
PPTX
Java: Manipulação de Arquivos
PPTX
Curso Java Básico - Aula 03
Introducao ao python - Luciana Mota
Curso Java Básico - Aula 04
Java Desktop
Atualização Java 8 (2014)
Curso de Java: Introdução a lambda e Streams
Java collections-basic
Cherrypy - um framework para desenvolvimento rápido de aplicações web
Curso java 04 - ap is e bibliotecas
Introdução a estruturas de dados em python
POO - Unidade 1 (complementar) - Introdução a Java e UML (versão draft 01)
Postgresql + Python = Power!
Mapeamento Objeto-Relacional com LINQ
Threads 07: Sincronizadores
TDC2018SP | Trilha Ruby - Programacao funcional com Ruby, potencialize e simp...
Java: Manipulação de Arquivos
Curso Java Básico - Aula 03
Anúncio

Semelhante a JADE+JENA (20)

PDF
Mobile agent
PPT
Agentes Moveis - Aspectos De Desenvolvimento
PDF
Agent toolkits rc3
PDF
Estudo de técnicas de persistência e acesso concorrente a ontologias
PPT
Integração de Tecnologias
PDF
VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabr...
PPT
Periódicos MundoJ e Java Magazine Fevereiro 2012
PDF
Framework web 01 - Aula UTFPR 2018
PPTX
Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...
PPT
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
PPTX
Inovando na Plataforma Java
PPTX
Inovando na plataforma Java
PPTX
O Spring está morto! Viva o Spring!
PDF
1409243945064
PDF
Palest"Tecnologias para Desenvolvimento Baseado em Componentes"
PDF
Spring framework 2.0 pt_BR
PDF
Spring boot
PDF
Algaworks livro-spring-boot-v3.0
PPTX
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
Mobile agent
Agentes Moveis - Aspectos De Desenvolvimento
Agent toolkits rc3
Estudo de técnicas de persistência e acesso concorrente a ontologias
Integração de Tecnologias
VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabr...
Periódicos MundoJ e Java Magazine Fevereiro 2012
Framework web 01 - Aula UTFPR 2018
Akka - Uma plataforma para o desenvolvimento de sistemas concorrentes e distr...
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Inovando na Plataforma Java
Inovando na plataforma Java
O Spring está morto! Viva o Spring!
1409243945064
Palest"Tecnologias para Desenvolvimento Baseado em Componentes"
Spring framework 2.0 pt_BR
Spring boot
Algaworks livro-spring-boot-v3.0
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
Anúncio

Último (12)

PDF
Manejo integrado de pragas na cultura do algodão
PDF
Processos no SAP Extended Warehouse Management, EWM100 Col26
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
PPTX
Utilizando code blockes por andre backes
PPTX
Aula 9 - Funções em Python (Introdução à Ciência da Computação)
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PPTX
Tipos de servidor em redes de computador.pptx
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PPTX
Analise Estatica de Compiladores para criar uma nova LP
PDF
Jira Software projetos completos com scrum
PPT
Conceitos básicos de Redes Neurais Artificiais
Manejo integrado de pragas na cultura do algodão
Processos no SAP Extended Warehouse Management, EWM100 Col26
Viasol Energia Solar -Soluções para geração e economia de energia
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
Utilizando code blockes por andre backes
Aula 9 - Funções em Python (Introdução à Ciência da Computação)
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Tipos de servidor em redes de computador.pptx
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Analise Estatica de Compiladores para criar uma nova LP
Jira Software projetos completos com scrum
Conceitos básicos de Redes Neurais Artificiais

JADE+JENA

  • 1. JADE + Jena José Ferdinandy Silva Chagas ferdinandsc@gmail.com
  • 2. 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
  • 4. 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.
  • 5. Iniciando a plataforma  Linha de comando: # java jade.Boot -h localhost -agents Agente:pacote.Classe  Código Java (Aplicação): ... Runtime rt = Runtime.instance(); Profile p = new ProfileImpl(); ContainerController cc = rt.createMainContainer(p); AgentController ac = cc.createNewAgent(“Agente”,”pacote.Classe”, args); ac.start(); ...
  • 6. 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.
  • 7. 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(); ...
  • 8. Passando objetos para agentes  Linha de comando: # java jade.Boot -agents Agente:pacote.Classe arg1 arg2 arg3 ...  Código Java (Aplicação): ... 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(); ...
  • 9. Passando objetos para agentes  Código Java (Agente): ... Object[] args = getArguments(); String nome = (String) args[0]; System.out.println(“Olá “+nome+”! Meu nome é “+getLocalName()); ...
  • 10. 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).
  • 11. Criando uma plataforma distribuída Figura 1. Plataformas distribuídas
  • 12. Criando uma plataforma distribuída  Linha de comando: # java jade.Boot -host myhost (1) # java jade.Boot -container -host myhost -port 1099 (2)  Código Java: ... 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(); ...
  • 13. Ciclo de vida dos agentes Figura 2. Ciclo de vida dos agentes
  • 14. 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;
  • 15. 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”); ...
  • 16. 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
  • 17. Jena
  • 18. 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.
  • 19. 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.
  • 20. Modelo interno Figura 3. Visualização de um modelo de ontologia no Jena
  • 22. 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
  • 23. Exemplo simples  Código Java: ... //Criando um modelo interno OntModel model = ModelFactory.createOntologyModel( OntModelSpec.OWL_DL_MEM); //Lendo uma ontologia no formato OWL model.read("file:C:UsersFerdinandDesktopOntologiaBibliotecaBiblioteca.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:UsersFerdinandDesktopOntologiaBibliotecaBibliotecaInf.owl"); model.write(new FileOutputStream(file); ...
  • 24. Modelo de Inferência Figura 4. Estrutura do mecanismo de inferência do Jena
  • 25. Exemplo de inferência Figura 5. Exemplo de inferência
  • 26. Exemplo de inferência  Código  Saída
  • 28. Regras para inferência - Exemplo  Código
  • 29. Validação da ontologia  Procura inconsistências no modelo resultante da inferência;  Código
  • 31. 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