• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Presentación ontologías (parte ii)
 

Presentación ontologías (parte ii)

on

  • 1,197 views

 

Statistics

Views

Total Views
1,197
Views on SlideShare
1,193
Embed Views
4

Actions

Likes
0
Downloads
16
Comments
0

1 Embed 4

http://www.slideshare.net 4

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Está en “mis documentosprotegeexamples”
  • Nombre ya en uso: en rojo. Protégé distingue mayúsculas y minúsculas.
  • AddSlot -> elegimos ladron, que ya existe porque ha sido creado en el predicado ladronDetenido.
  • Se creará “C:policiaOntologyPoliciaOntology.java”, que es la ontología que hemos definido.

Presentación ontologías (parte ii) Presentación ontologías (parte ii) Presentation Transcript

  • Grupo CADOS Diego Pérez Montes David Estévez Queija
    • Recordar qué es una ontología.
    • Instalación de Protégé.
    • Desarrollo de una ontología con Protégé.
    • Integración de la ontología con JADE.
    • Lenguajes de contenido (LEAP, SL)
    • Explicación de la práctica
    • Def-> Una Ontología es la "especificación de una conceptualización", la descripción de los conceptos y relaciones entre ellos, que pueden formar parte del conocimiento de un agente o una sociedad de agentes.
    • Recordar qué es una ontología.
    • Instalación de Protégé.
    • Desarrollo de una ontología con Protégé.
    • Integración de la ontología con JADE.
    • Lenguajes de contenido (LEAP, SL)
    • Explicación de la práctica
    • Hacemos doble click sobre el archivo install_protege_3.4.4.exe.
    • Al elegir la carpeta de destino seleccionamos Mis DocumentosProtege.
    • La máquina virtual de Java ya está instalada en el equipo, así que siguiente…
    • Plugin beangenerator v3.2.1 (NO la v4.0)
      • Descargar desde la URL de wikispaces.
    • Copiamos la carpeta que contiene a
    • “ Mis DocumentosProtegeplugins”
    • También nos bajaremos el fichero de ejemplos beangeneratos_examples.zip y pegamos la carpeta en “Mis DocumentosProtege”
    • Recordar qué es una ontología.
    • Instalación de Protégé.
    • Desarrollo de una ontología con Protégé.
    • Integración de la ontología con JADE.
    • Lenguajes de contenido (LEAP, SL)
    • Explicación de la práctica
  •  
    • Definimos todos los conceptos.
    • Definimos los predicados.
    • Definimos las acciones en la clase AgentAction.
    • Generamos la ontología con BeanGenerator.
    • Open Other… > SimpleJADEAbstractOntology.pprj
  •  
  •  
    • Definimos todos los conceptos.
    • Definimos los predicados.
    • Definimos las acciones en la clase AgentAction.
    • Generamos la ontología con BeanGenerator.
  •  
  •  
  •  
    • Definimos todos los conceptos.
    • Definimos los predicados.
    • Definimos las acciones en la clase AgentAction.
    • Generamos la ontología con BeanGenerator.
  •  
  •  
    • Definimos todos los conceptos.
    • Definimos los predicados.
    • Definimos las acciones en la clase AgentAction.
    • Generamos la ontología con BeanGenerator.
  •  
  •  
    • Recordar qué es una ontología.
    • Instalación de Protégé.
    • Desarrollo de una ontología con Protégé.
    • Integración de la ontología con JADE.
    • Lenguajes de contenido (LEAP, SL)
    • Explicación de la práctica
  • // ONTOLOGIA GENERADA DESDE PROTEGE package policiaOntology; import jade.content.onto.*; //IMPORTS //... public class PoliciaOntology extends jade.content.onto.Ontology { //NOMBRE ONTOLOGIA public static final String ONTOLOGY_NAME = "policia"; // The singleton instance of this ontology private static ReflectiveIntrospector introspect = new ReflectiveIntrospector(); private static Ontology theInstance = new PoliciaOntology(); public static Ontology getInstance() { return theInstance; } // VOCABULARIO public static final String DISPONIBLE_TIEMPO="TIEMPO"; public static final String DISPONIBLE="Disponible"; public static final String NODISPONIBLE_MOTIVO="MOTIVO"; public static final String NODISPONIBLE="NoDisponible";
  • //... /** * Constructor */ private PoliciaOntology(){ super(ONTOLOGY_NAME, BasicOntology.getInstance()); try { // CONCEPTOS ConceptSchema ladronSchema = new ConceptSchema(LADRON); add(ladronSchema, policiaOntology.Ladron.class); ConceptSchema motivoSchema = new ConceptSchema(MOTIVO); add(motivoSchema, policiaOntology.Motivo.class); ConceptSchema descripcionSchema = new ConceptSchema(DESCRIPCION); add(descripcionSchema, policiaOntology.Descripcion.class); ConceptSchema tiempoLlegadaSchema = new ConceptSchema(TIEMPOLLEGADA); add(tiempoLlegadaSchema, policiaOntology.TiempoLlegada.class); // ACCIONES (AgentAction) AgentActionSchema detenerLadronSchema = new AgentActionSchema(DETENERLADRON); add(detenerLadronSchema, policiaOntology.DetenerLadron.class);
  • // PREDICADOS PredicateSchema ladronDetenidoSchema = new PredicateSchema(LADRONDETENIDO); add(ladronDetenidoSchema, policiaOntology.LadronDetenido.class); PredicateSchema noDisponibleSchema = new PredicateSchema(NODISPONIBLE); add(noDisponibleSchema, policiaOntology.NoDisponible.class); PredicateSchema disponibleSchema = new PredicateSchema(DISPONIBLE); add(disponibleSchema, policiaOntology.Disponible.class); // CAMPOS EN CONCEPTOS Y PREDICADOS (“slots”) ladronSchema.add(LADRON_DESCRIPCION, descripcionSchema, ObjectSchema.OPTIONAL); motivoSchema.add(MOTIVO_MOTIVO, (TermSchema)getSchema(BasicOntology.STRING), ObjectSchema.OPTIONAL); //...
  • // AGENTE “CLIENTE”, EN ESTE CASO EL TESTIGO DEL DELITO import policiaOntology.*; //Import de la ontologia en el directorio “policiaOntology” //Resto de imports import jade.content.lang.sl.*; //Import del lenguaje de contenido: SL public class Testigo extends Agent { //Se usara el lenguaje SL private Codec codec = new SLCodec(); private Ontology ontologia = PoliciaOntology.getInstance(); //... //Emision del mensaje ACLMessage msg = new ACLMessage(ACLMessage.REQUEST); //... // Se establece el protocolo de comunicaciones msg.setProtocol(FIPANames.InteractionProtocol.FIPA_REQUEST); // Se establece el lenguaje de contenido y la ontología del mensaje. msg.setLanguage(codec.getName()); msg.setOntology(ontologia.getName());
  • //... // Mostrar menu por pantalla //... // Crea la accion DetenerLadron con la descripcion dada DetenerLadron dl = new DetenerLadron(); // Registra el lenguaje de contenido y la ontologia utilizada getContentManager().registerLanguage(codec); getContentManager().registerOntology(ontologia); // Crea la accion a enviar asociándola a la acción DetenerLadron creada // necesitado por SL. Action a = new Action(getAID(), dl); // Rellena el mensaje ACL para que sea consistente con el lenguaje de contenido y la //ontologia getContentManager().fillContent(msg,a); //...
  • class ManejadorInitiator extends AchieveREInitiator{ public ManejadorInitiator(Agent a,ACLMessage msg) { super(a,msg); } protected void handleAgree(ACLMessage agree) { try{ // Decodifica el mensaje ACL recibido mediante el lenguaje de contenido y la ontologia actuales ContentElement ce = getContentManager().extractContent(agree); if (ce instanceof Disponible) { // Recibido un AGREE con contenido correcto Disponible disp = (Disponible) ce; // Transforma el contenido en el objeto predicado EstoyDisponible de la ontologia //...
  • protected void handleInform(ACLMessage inform) { try{ // Decodifica el mensaje ACL recibido mediante el lenguaje de contenido y la ontologia actuales ContentElement ce = getContentManager().extractContent(inform); if (ce instanceof LadronDetenido) { // Recibido un INFORM con contenido correcto LadronDetenido ld = (LadronDetenido) ce; // Transforma el contenido en el objeto predicado LadronDetenido de la ontologia //...
  • protected void handleRefuse(ACLMessage refuse) { try{ // Decodifica el mensaje ACL recibido mediante el lenguaje de contenido y la ontologia actuales ContentElement ce = getContentManager().extractContent(refuse); if (ce instanceof NoDisponible) { // Recibido un REFUSE con contenido correcto NoDisponible nd = (NoDisponible) ce; // Transforma el contenido en el objeto predicado NoDisponible de la ontologia //... protected void handleNotUnderstood(ACLMessage notUnderstood) { System.out.println("La comisaria " + notUnderstood.getSender().getName() + " no entiende el mensaje."); } //...
  • // AGENTE “SERVIDOR”, EN ESTE CASO LA COMSARIA import policiaOntology.*; //Import ontologia import jade.content.lang.Codec; import jade.content.lang.sl.SLCodec; //Import lenguaje SL //Resto imports public class Comisaria extends Agent { private Codec codec = new SLCodec(); private Ontology ontologia = PoliciaOntology.getInstance(); //... protected void setup() { // Crea una plantilla que solo acepte los mensajes ACL recibidos que utilizan el protocolo FIPA_REQUEST // Y ademas que sean del tipo REQUEST // Y ademas que esten codificados mediante el lenguaje de contenido SLCodec // Y que utilicen la ontologia policiaOntology
  • MessageTemplate protocolo = MessageTemplate.MatchProtocol(FIPANames.InteractionProtocol.FIPA_REQUEST); MessageTemplate performativa = MessageTemplate.MatchPerformative(ACLMessage.REQUEST); MessageTemplate lenguajeContenido = MessageTemplate.MatchLanguage(codec.getName()); MessageTemplate ontoTemplate = MessageTemplate.MatchOntology(ontologia.getName()); MessageTemplate plantilla = MessageTemplate.and(MessageTemplate.and(protocolo, performativa),MessageTemplate.and(lenguajeContenido, ontoTemplate)); // Registra el lenguaje de contenido y la ontologia en el gestor de contenidos getContentManager().registerLanguage(codec); getContentManager().registerOntology(ontologia);
  • class ManejadorResponder extends AchieveREResponder { public ManejadorResponder(Agent a,MessageTemplate mt) { super(a,mt); } protected ACLMessage prepareResponse(ACLMessage request) { ACLMessage respuesta = request.createReply(); try { // Decodifica el mensaje ACL recibido a un objeto de tipo Action mediante el lenguaje de contenido y la ontologia actuales Action a = (Action) myAgent.getContentManager().extractContent(request); // Recupera el objeto accion de la ontologia DetenerLadron dl = (DetenerLadron) a.getAction();
  • // Crea un predicado Disponible de la ontologia añadiandole el concepto TiempoLlegada TiempoLlegada tl = new TiempoLlegada(); tl.setTiempo((int)(Math.random()*10)); Disponible disp = new Disponible(); disp.setTIEMPO(tl); getContentManager().fillContent(respuesta,disp); protected ACLMessage prepareResultNotification(ACLMessage request,ACLMessage response) { // Si la policia fue a detener al ladron ACLMessage inform = request.createReply(); try { ContentElement ce = getContentManager().extractContent(response);
  • Disponible disp = (Disponible)ce; System.out.println("[Comisaria "+getLocalName()+"]: Hemos conseguido detener al ladron!!"); inform.setPerformative(ACLMessage.INFORM); Action a = (Action) myAgent.getContentManager().extractContent(request); DetenerLadron dl = (DetenerLadron) a.getAction(); // Crea un predicado LadronDetenido de la ontologia y le añade el ladron detenido LadronDetenido ld = new LadronDetenido(); ld.setLadron(dl.getLadron()); getContentManager().fillContent(inform,ld);
    • Recordar qué es una ontología.
    • Instalación de Protégé.
    • Desarrollo de una ontología con Protégé.
    • Integración de la ontología con JADE.
    • Lenguajes de contenido (LEAP, SL)
    • Explicación de la práctica
    • SL: Strings. Operadores Lógicos y Modales. Requiere de “ACTION”.
    • LEAP: Binario. Más ligero.
    // USO DE SL import jade.content.lang.sl.*; ... public class Testigo extends Agent { private Codec codec = new SLCodec(); private Ontology ontologia = PoliciaOntology.getInstance(); ...
    • Recordar qué es una ontología.
    • Instalación de Protégé.
    • Desarrollo de una ontología con Protégé.
    • Integración de la ontología con JADE.
    • Lenguajes de contenido (LEAP, SL)
    • Explicación de la práctica
    • Fiesta del IMSERSO. Diagrama:
    • Agente FiestaAgent: La fiesta del IMSERSO.
    • Agente FiesteroAgent: “Portero” del a fiesta.
  •  
  • Grupo CADOS