Download - Presentación ontologías (parte ii)
![Page 1: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/1.jpg)
Grupo CADOS
Diego Pérez Montes
David Estévez Queija
![Page 2: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/2.jpg)
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
![Page 3: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/3.jpg)
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.
![Page 4: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/4.jpg)
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
![Page 5: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/5.jpg)
Hacemos doble click sobre el archivo install_protege_3.4.4.exe.
Al elegir la carpeta de destino seleccionamos Mis Documentos\Protege.
La máquina virtual de Java ya está instalada en el equipo, así que siguiente…
![Page 6: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/6.jpg)
Plugin beangenerator v3.2.1 (NO la v4.0) Descargar desde la URL de wikispaces.
Copiamos la carpeta que contiene a“Mis Documentos\Protege\plugins\”
También nos bajaremos el fichero de ejemplos beangeneratos_examples.zip y pegamos la carpeta en “Mis Documentos\Protege\”
![Page 7: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/7.jpg)
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
![Page 8: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/8.jpg)
![Page 9: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/9.jpg)
Definimos todos los conceptos.
Definimos los predicados.
Definimos las acciones en la clase AgentAction.
Generamos la ontología con BeanGenerator.
![Page 10: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/10.jpg)
Open Other… > SimpleJADEAbstractOntology.pprj
![Page 11: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/11.jpg)
![Page 12: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/12.jpg)
![Page 13: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/13.jpg)
Definimos todos los conceptos.
Definimos los predicados.
Definimos las acciones en la clase AgentAction.
Generamos la ontología con BeanGenerator.
![Page 14: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/14.jpg)
![Page 15: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/15.jpg)
![Page 16: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/16.jpg)
![Page 17: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/17.jpg)
Definimos todos los conceptos.
Definimos los predicados.
Definimos las acciones en la clase AgentAction.
Generamos la ontología con BeanGenerator.
![Page 18: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/18.jpg)
![Page 19: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/19.jpg)
![Page 20: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/20.jpg)
Definimos todos los conceptos.
Definimos los predicados.
Definimos las acciones en la clase AgentAction.
Generamos la ontología con BeanGenerator.
![Page 21: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/21.jpg)
![Page 22: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/22.jpg)
![Page 23: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/23.jpg)
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
![Page 24: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/24.jpg)
// ONTOLOGIA GENERADA DESDE PROTEGEpackage 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";
![Page 25: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/25.jpg)
//.../** * 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);
![Page 26: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/26.jpg)
// 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);
//...
![Page 27: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/27.jpg)
// AGENTE “CLIENTE”, EN ESTE CASO EL TESTIGO DEL DELITO
import policiaOntology.*; //Import de la ontologia en el directorio “policiaOntology”//Resto de importsimport 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 mensajeACLMessage 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());
![Page 28: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/28.jpg)
//...// Mostrar menu por pantalla//...// Crea la accion DetenerLadron con la descripcion dadaDetenerLadron dl = new DetenerLadron();
// Registra el lenguaje de contenido y la ontologia utilizadagetContentManager().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);
//...
![Page 29: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/29.jpg)
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 actualesContentElement 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
//...
![Page 30: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/30.jpg)
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
//...
![Page 31: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/31.jpg)
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."); }
//...
![Page 32: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/32.jpg)
// 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 importspublic 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
![Page 33: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/33.jpg)
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 contenidosgetContentManager().registerLanguage(codec);getContentManager().registerOntology(ontologia);
![Page 34: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/34.jpg)
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();
![Page 35: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/35.jpg)
// 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);
![Page 36: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/36.jpg)
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);
![Page 37: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/37.jpg)
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
![Page 38: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/38.jpg)
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();...
![Page 39: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/39.jpg)
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
![Page 40: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/40.jpg)
Fiesta del IMSERSO. Diagrama:
![Page 41: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/41.jpg)
Agente FiestaAgent: La fiesta del IMSERSO.
Agente FiesteroAgent: “Portero” del a fiesta.
![Page 42: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/42.jpg)
![Page 43: Presentación ontologías (parte ii)](https://reader036.vdocuments.co/reader036/viewer/2022062307/554a253db4c90520578b4863/html5/thumbnails/43.jpg)
Grupo CADOS