Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Presentación ontologías (parte ii)

1,019 views

Published on

  • Be the first to comment

  • Be the first to like this

Presentación ontologías (parte ii)

  1. 1. Grupo CADOS Diego Pérez Montes David Estévez Queija
  2. 2. <ul><li>Recordar qué es una ontología. </li></ul><ul><li>Instalación de Protégé. </li></ul><ul><li>Desarrollo de una ontología con Protégé. </li></ul><ul><li>Integración de la ontología con JADE. </li></ul><ul><li>Lenguajes de contenido (LEAP, SL) </li></ul><ul><li>Explicación de la práctica </li></ul>
  3. 3. <ul><li>Def-> Una Ontología es la &quot;especificación de una conceptualización&quot;, la descripción de los conceptos y relaciones entre ellos, que pueden formar parte del conocimiento de un agente o una sociedad de agentes. </li></ul>
  4. 4. <ul><li>Recordar qué es una ontología. </li></ul><ul><li>Instalación de Protégé. </li></ul><ul><li>Desarrollo de una ontología con Protégé. </li></ul><ul><li>Integración de la ontología con JADE. </li></ul><ul><li>Lenguajes de contenido (LEAP, SL) </li></ul><ul><li>Explicación de la práctica </li></ul>
  5. 5. <ul><li>Hacemos doble click sobre el archivo install_protege_3.4.4.exe. </li></ul><ul><li>Al elegir la carpeta de destino seleccionamos Mis DocumentosProtege. </li></ul><ul><li>La máquina virtual de Java ya está instalada en el equipo, así que siguiente… </li></ul>
  6. 6. <ul><li>Plugin beangenerator v3.2.1 (NO la v4.0) </li></ul><ul><ul><li>Descargar desde la URL de wikispaces. </li></ul></ul><ul><li>Copiamos la carpeta que contiene a </li></ul><ul><li>“ Mis DocumentosProtegeplugins” </li></ul><ul><li>También nos bajaremos el fichero de ejemplos beangeneratos_examples.zip y pegamos la carpeta en “Mis DocumentosProtege” </li></ul>
  7. 7. <ul><li>Recordar qué es una ontología. </li></ul><ul><li>Instalación de Protégé. </li></ul><ul><li>Desarrollo de una ontología con Protégé. </li></ul><ul><li>Integración de la ontología con JADE. </li></ul><ul><li>Lenguajes de contenido (LEAP, SL) </li></ul><ul><li>Explicación de la práctica </li></ul>
  8. 9. <ul><li>Definimos todos los conceptos. </li></ul><ul><li>Definimos los predicados. </li></ul><ul><li>Definimos las acciones en la clase AgentAction. </li></ul><ul><li>Generamos la ontología con BeanGenerator. </li></ul>
  9. 10. <ul><li>Open Other… > SimpleJADEAbstractOntology.pprj </li></ul>
  10. 13. <ul><li>Definimos todos los conceptos. </li></ul><ul><li>Definimos los predicados. </li></ul><ul><li>Definimos las acciones en la clase AgentAction. </li></ul><ul><li>Generamos la ontología con BeanGenerator. </li></ul>
  11. 17. <ul><li>Definimos todos los conceptos. </li></ul><ul><li>Definimos los predicados. </li></ul><ul><li>Definimos las acciones en la clase AgentAction. </li></ul><ul><li>Generamos la ontología con BeanGenerator. </li></ul>
  12. 20. <ul><li>Definimos todos los conceptos. </li></ul><ul><li>Definimos los predicados. </li></ul><ul><li>Definimos las acciones en la clase AgentAction. </li></ul><ul><li>Generamos la ontología con BeanGenerator. </li></ul>
  13. 23. <ul><li>Recordar qué es una ontología. </li></ul><ul><li>Instalación de Protégé. </li></ul><ul><li>Desarrollo de una ontología con Protégé. </li></ul><ul><li>Integración de la ontología con JADE. </li></ul><ul><li>Lenguajes de contenido (LEAP, SL) </li></ul><ul><li>Explicación de la práctica </li></ul>
  14. 24. // 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 = &quot;policia&quot;; // 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=&quot;TIEMPO&quot;; public static final String DISPONIBLE=&quot;Disponible&quot;; public static final String NODISPONIBLE_MOTIVO=&quot;MOTIVO&quot;; public static final String NODISPONIBLE=&quot;NoDisponible&quot;;
  15. 25. //... /** * 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);
  16. 26. // 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); //...
  17. 27. // 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());
  18. 28. //... // 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); //...
  19. 29. 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 //...
  20. 30. 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 //...
  21. 31. 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(&quot;La comisaria &quot; + notUnderstood.getSender().getName() + &quot; no entiende el mensaje.&quot;); } //...
  22. 32. // 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
  23. 33. 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);
  24. 34. 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();
  25. 35. // 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);
  26. 36. Disponible disp = (Disponible)ce; System.out.println(&quot;[Comisaria &quot;+getLocalName()+&quot;]: Hemos conseguido detener al ladron!!&quot;); 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);
  27. 37. <ul><li>Recordar qué es una ontología. </li></ul><ul><li>Instalación de Protégé. </li></ul><ul><li>Desarrollo de una ontología con Protégé. </li></ul><ul><li>Integración de la ontología con JADE. </li></ul><ul><li>Lenguajes de contenido (LEAP, SL) </li></ul><ul><li>Explicación de la práctica </li></ul>
  28. 38. <ul><li>SL: Strings. Operadores Lógicos y Modales. Requiere de “ACTION”. </li></ul><ul><li>LEAP: Binario. Más ligero. </li></ul>// USO DE SL import jade.content.lang.sl.*; ... public class Testigo extends Agent { private Codec codec = new SLCodec(); private Ontology ontologia = PoliciaOntology.getInstance(); ...
  29. 39. <ul><li>Recordar qué es una ontología. </li></ul><ul><li>Instalación de Protégé. </li></ul><ul><li>Desarrollo de una ontología con Protégé. </li></ul><ul><li>Integración de la ontología con JADE. </li></ul><ul><li>Lenguajes de contenido (LEAP, SL) </li></ul><ul><li>Explicación de la práctica </li></ul>
  30. 40. <ul><li>Fiesta del IMSERSO. Diagrama: </li></ul>
  31. 41. <ul><li>Agente FiestaAgent: La fiesta del IMSERSO. </li></ul><ul><li>Agente FiesteroAgent: “Portero” del a fiesta. </li></ul>
  32. 43. Grupo CADOS

×