miércoles, 8 de febrero de 2012

Sistema de Recomendación Ontológico usando Servicios Web Semánticos

Introduccion



Los servicios web son una tecnología emergente durante los últimos años y que se ha venido desarrollando en el marco de la Arquitectura Orientada a Servicios (SOA) obedeciendo a la necesidad de implementar procesos de negocios. Este tipo de arquitectura resulta altamente ventajosa con respecto a otras gracias a la escalabilidad e interoperabilidad que ofrece. 
Cada servicio web se comporta como una pieza de software que realiza una tarea acorde a unas entradas (inputs), que son procesadas para luego emitir unas salidas (outputs) que serán finalmente el objetivo principal del servicio.
En nuestro caso particular, poseemos un servicio web (compuesto) que se compone de tres servicios más (atómicos), y al operar éstos últimos entre sí, generan un sólo resultado que se convertirá en el resultado del servicio compuesto. Remitiéndonos a las características esenciales de los servicios web, de que cada uno de éstos es una pieza de software que recibe unas serie de entradas y devuelve el resultado de un proceso, nuestro servicio web recibirá una serie de dispositivos que serán ingresados por un usuario que deseará que el servicio le devuelva el mejor robot que cumpla con dichos dispositivos en algún ambiente particular. Ésto se obtendrá a partir de la tarea específica de cada servicio web atómico, por ejemplo, para la recomendación del robot, se usa un servicio cuya tarea está programada con el algoritmo de la correlación de Pearson.
Un aspecto muy importante a tener en cuenta es que en la comunicación de los servicios web se necesitan una serie de convencionalismos sobre lo que significa cada uno de los datos que intervienen como entradas y salidas, lo que hace que en muchos casos se cometan errores a pesar de la intervención humana. Supongamos que tenemos un servicio web para la búsqueda de libros a partir del nombre de su autor. Este servicio web, tendrá una operación buscar que recibirá un tipo de dato "String" para su funcionamiento. Desde el punto de vista sintáctico, la operación puede ser confundida con otros servicios de búsqueda existentes de productos distintos a libros. Para evitar este tipo de confusiones, es necesario dotar de semántica al servicio, lo cual se hace mediante la creación de una ontología que describe de manera taxonómica el dominio en el cual actúa el servicio web. De esta manera, al definir una ontología de libros y al marcar semánticamente los servicios, la operación buscar quedaría identificada como una operación sólo para los libros. En nuestro caso particular, la ontología del dominio es acerca de robots.
Este tipo de aplicaciones sirven como modelos aplicables a lo que se conoce como "Cloud Robotics" o Robótica en la Nube, suponiendo un ambiente de robots en el cual cada uno está conectado a un servicio web listos para ejecutar un trabajo colaborativo.

Funcionamiento

 

Este sistema que recomienda robots es una aplicación realizada bajo una arquitectura orientada a servicios, ya que contiene tres procesos atómicos independientes que utilizan basados en el protocolo de comunicación sencillo que se trata de enviar un mensaje y recibir otro con las respuestas que se necesitaban. Es una aplicación web semántica ya que se compuso utilizando la ontología owl-s para marcar los servicios y crear con ellos un servicio compuesto utilizado de orquestador.

Creamos en protege una ontología de dominio, teniendo como dominio los robots, con el lenguaje de marcado OWL. Convertimos desde protege la ontología en código de java para que se creen los tipos de datos, relaciones e instancias especificadas en la ontología, importamos ese código, las librerías de protege y las librerías de Jena (para poder leer y manipular la ontología) en un proyecto dentro de la IDE netbeans. 
Además describimos los servicios en wsdl para luego crear a partir de ellos los tres servicios simples que en particular se encargan de:
• Primer servicio: recibe un Array de Dispositivos y devuelve un objeto de la clase Paquete, el cual tiene dos atributos: Un Array de Robots y un array de Dispositivos, será el encargado de consultar en las Ontologías cuales instancias de la clase Robot tienen los dispositivos requeridos y devolverá dicha lista, notemos que no importa si la distancia del Wifi de un Robot A es 50m y dentro de mis requisitos está un Wifi de 80m, este servicio solo obtiene los robots que tengan los dispositivos sin importar sus propiedades de datos. El Paquete devuelto tiene como atributos el Array de robots obtenidos y el Array de dispositivos requeridos, los mismos que se ingresaron como parámetro de entrada.
• Segundo servicio: recibirá una clase Paquete y devolverá una clase paquete. Este servicio será el encargado de eliminar los demás dispositivos que no nos interesan para poder aplicar el algoritmo de la correlación de Pearson en el tercer servicio, ya que este necesita que los objetos a comparar tengan las mismas características en común, es decir, si requerimos un robot con Wifi, Brazo y un Motor y encontramos un Robot con Wifi, Motor, Brazo y Bluetooth debemos ocultar el ultimo dispositivo para trabajar con los que son necesarios. Así que este servicio eliminará los dispositivos que no son necesarios.
• Tercer servicio: recibirá un Paquete y devolverá un Array de Robots, Aplicará la correlación de Pearson comparando cada robot con los valores de los dispositivos dados y luego los ordenará, dando así lugar a un Array con los robots que cumplen las características solicitadas ordenados de forma tal que el primero es el que más se parece al requerido.







Todos los datos de entrada y de salida de los servicios están especificados en la ontología para poder manipularlos con Jena y hacer los procesos necesarios para que se den los resultados esperados.

Luego utilizando OWL-S API instalada en protege, marcamos los servicios web atómicos para crear el compuesto, que se encarga de obtener los inputs y llamar a los demás servicios para que hagan su tarea específica (sin saber con qué fin la están realizando) y devuelvan sus outputs, se hace en forma de secuencia, el mensaje enviado por el cliente al servicio compuesto (un array de dispositivos) va al input del primer servicio que devuelve un objeto de la clase paquete al servicio compuesto, luego ese objeto de la clase paquete es enviado al segundo servicio que devuelve otro objeto de la clase paquete diferente y mejorado que vuelve al servicio compuesto para que se lo envíe al tercer servicio y ese devuelva un array con los robots recomendados al servicio compuesto y este se lo devuelva al cliente.


Conclusiones



·         La aplicación realizada representa un modelo que podría ser aplicable en un ambiente colaborativo de robots, generando una red de éstos, gracias a la funcionalidad que permiten los servicios web.
·         La arquitectura orientada a servicios tiene grandes beneficios, los modelos de negocios evolucionan y hay independencia en la operatividad de las aplicaciones, de esta manera abra mas flexibilidad entre la composición de software complejo .
·         La web semántica se ira expandiendo a medida en que existan más servicios web, mas ontologías asociadas a un dominio particular y unos agentes desarrollados para crear servicios automáticamente.
·         Crear un sistema de recomendación de robots es importante para un futuro cercano, ya que la robótica es un mundo amplio en el que se están aportando mucho. Será algo muy efectivo pero aun es un campo grande y al que se irán aportando más idea a medida que avanza la robótica
·         La robótica en la nube es el futuro de la robótica ya que permitirá procesos más rápidos y complejos que ayuden a la vida diaria en la realización de tareas en diferentes robots.

No hay comentarios:

Publicar un comentario