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

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
  • 3.
  • 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 paraagentes  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 paraagentes  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 paraagentes  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 paraagentes  Código Java (Agente): ... Object[] args = getArguments(); String nome = (String) args[0]; System.out.println(“Olá “+nome+”! Meu nome é “+getLocalName()); ...
  • 10.
    Criando uma plataformadistribuí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 plataformadistribuída Figura 1. Plataformas distribuídas
  • 12.
    Criando uma plataformadistribuí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 vidados agentes Figura 2. Ciclo de vida dos agentes
  • 14.
    Ciclo de vidados 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.
  • 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
  • 21.
  • 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
  • 27.
  • 28.
    Regras para inferência- Exemplo  Código
  • 29.
    Validação da ontologia  Procura inconsistências no modelo resultante da inferência;  Código
  • 30.
  • 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