Presentación ontologías (parte ii)

Post on 06-May-2015

974 views 0 download

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

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 Documentos\Protege.

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 Documentos\Protege\plugins\”

También nos bajaremos el fichero de ejemplos beangeneratos_examples.zip y pegamos la carpeta en “Mis Documentos\Protege\”

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 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";

//.../** * 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 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());

//...// 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);

//...

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

//...

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 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

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);

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