tesis “un agente basado en un razonador de ontologías ...materias.fi.uba.ar/7500/aguirre.pdf ·...

133
Tesis “Un agente basado en un razonador de ontologías” Autora: Norka Natalia Aguirre Helguero e-mail: [email protected] Directora: Lic. Adriana Echeverría 2011

Upload: others

Post on 24-Sep-2019

0 views

Category:

Documents


0 download

TRANSCRIPT

Tesis

“Un agente basado en un razonador de ontologías”

Autora: Norka Natalia Aguirre Helguero

e-mail: [email protected]

Directora: Lic. Adriana Echeverría

2011

75.00 Tesis

2

Agradecimientos

En primer lugar a mis padres, Mario y Norka, mis hermanos,

Marito, Sebastián, Marco y Bernardo y todo el pequeño grupo de familiares por

su contención, paciencia y continuas palabras de aliento.

A mi directora de tesis, Adriana Echeverría, por darme su

orientación, sus consejos y comprensión, determinante para la realización del

presente trabajo.

A ellos mis esfuerzos y gratitud, de corazón.

75.00 Tesis

3

INDICE

TESIS ............................................................................................................................... 1

“Un agente basado en un razonador de ontologías” ............................................................................................. 1

INTRODUCCIÓN ............................................................................................................... 6

CAPÍTULO I.................................................................................................................... 10

Servicios Web ........................................................................................................................................................... 10 1.1 Generalidades ................................................................................................................................................ 10

1.1.1 Definiciones .......................................................................................................................................... 10

1.1.2 Características primarias ................................................................................................................... 11

1.1.3 Características secundarias ................................................................................................................ 13

1.2 Desarrollo orientado a servicios ................................................................................................................ 14

1.2.1 Beneficios .......................................................................................................................................... 14

1.2.2 Diferencias con el desarrollo orientado a objetos ...................................................................... 15

1.2.3 Composición de servicios ............................................................................................................... 15

1.2.4 Abstracción de Servicios ................................................................................................................. 16

1.3 Modelos de interoperabilidad en una arquitectura de servicios Web ......................................... 17

1.3.1 Modelo orientado a mensajes - MOM ............................................................................................ 17

1.3.2 Modelo orientado servicios - SOM ................................................................................................. 19

1.3.3 Modelo orientado a recursos – ROM .............................................................................................. 21

1.3.4 Modelo de políticas - PM .................................................................................................................. 23

1.4 Arquitectura orientada a servicios .................................................................................................... 24

1.4.1 Generalidades ................................................................................................................................... 24

1.4.2 Directorio de servicios ........................................................................................................................ 26

1.4.3 BPM ......................................................................................................................................................... 26

1.4.4 Gobierno de políticas y procesos ....................................................................................................... 27

1.4.5 Especificaciones ................................................................................................................................... 28

1.5 Servicios Web RESTFul ............................................................................................................................... 30

CAPÍTULO II .................................................................................................................. 31

Ontología ................................................................................................................................................................... 31 2.1 Generalidades ................................................................................................................................................ 31

2.2 Folksonomías y ontologías ......................................................................................................................... 33

2.3 Lógica y ontologías ....................................................................................................................................... 35

2.4 Aplicaciones .................................................................................................................................................. 36

2.5 Lenguajes ontológicos ................................................................................................................................. 39

2.5.1 RDF ..................................................................................................................................................... 39

2.5.1.1 Conceptos Básicos ........................................................................................................................ 39

2.5.1.2 RDF y la ambigüedad semántica XML ....................................................................................... 43

2.5.2 OWL .................................................................................................................................................... 45

2.5.2.1 Conceptos Básicos ........................................................................................................................ 45

2.5.2.2 Sub-Lenguajes ............................................................................................................................... 49

2.5.2.3 Semántica Formal ........................................................................................................................ 51

2.5.3 WSMO ................................................................................................................................................. 51

2.5.3.1 Principios de diseño .................................................................................................................... 52

2.5.3.2 Conceptos básicos ........................................................................................................................ 52

2.5.4 DAML-S............................................................................................................................................... 53

2.5.5 OWL-S ..................................................................................................................................................... 54

2.5.6 SWSF ................................................................................................................................................... 54

2.5.7 WSDL-S............................................................................................................................................... 55

2.5.8 SAWSDL ............................................................................................................................................. 56

2.6 Razonador ...................................................................................................................................................... 57

2.6.1 Clasificación .......................................................................................................................................... 59

75.00 Tesis

4

2.6.1.1 Razonadores de lógica descriptiva ............................................................................................. 59

2.6.1.2 Razonadores de programación lógica ....................................................................................... 60

2.7 SWRL .............................................................................................................................................................. 61

2.7.1 Motivaciones ......................................................................................................................................... 61

2.7.2 DL-Safe Rules ......................................................................................................................................... 62

2.8 Ejemplos ......................................................................................................................................................... 62

CAPÍTULO III ................................................................................................................. 81

Agentes ...................................................................................................................................................................... 81 3.1 Generalidades ................................................................................................................................................ 81

3.1.1 Agente y entorno ............................................................................................................................. 81

3.1.2 Agentes y objetos ............................................................................................................................. 85

3.1.3 Agentes y sistemas expertos .......................................................................................................... 86

3.1.4 Agentes y servicios .......................................................................................................................... 86

3.2 Clasificación................................................................................................................................................... 90

3.2.1 Clasificación dependiendo de la relación entre percepciones y acciones ............................... 92

3.2.2 Clasificación de acuerdo al tipo de aplicación ............................................................................. 92

3.2.3 Clasificación de acuerdo a características especiales ................................................................ 92

3.3 Matchmaking entre agentes heterogéneos ............................................................................................. 93

3.4 Información semántica que registran ...................................................................................................... 94

3.5 Aplicaciones de ontologías en agentes...................................................................................................... 97

3.6 Definición de las funcionalidades relacionadas con las capacidades esperadas de los agentes basados en razonadores. .................................................................................................................................... 99

3.7 Razonadores alternativos que puedan ser incorporados en el agente .............................................. 99

CAPÍTULO IV ............................................................................................................... 102

Composición dinámica de servicios ................................................................................................................... 102

4.1 Estudio de los últimos avances en composición dinámica de servicios como una solución eficiente y efectiva. ........................................................................................................................................... 102

4.2 Alternativas de composición semántica como OWL, Pellet, el algoritmo backward-chaining ...... 105

4.3 Agentes y la composición de servicios Web ........................................................................................... 106

CAPÍTULO V ................................................................................................................ 107

Caso práctico .......................................................................................................................................................... 107

5.1 Escenario de aplicación representativo del problema a resolver ...................................................... 107

5.2 El prototipo construido ............................................................................................................................. 108

5.2.1 Criterio adoptado ................................................................................................................................ 108

5.2.2 Componentes ...................................................................................................................................... 109

5.2.3 Herramientas ...................................................................................................................................... 111

5.3 Resultados ................................................................................................................................................... 114

CAPÍTULO VI ............................................................................................................... 121

Conclusiones y trabajos futuros ......................................................................................................................... 121

GLOSARIO.................................................................................................................... 124

REFERENCIAS .............................................................................................................. 129

ANEXO I ....................................................................................................................... 132

ANEXO II ...................................................................................................................... 133

75.00 Tesis

5

Objetivos ................................................................................................................................................................. 133

75.00 Tesis

6

Introducción

La visión del próximo paso en la evolución de la Web es la Web Semántica. En ella la

información será provista de significado explícito facilitando a los ordenadores procesar e integrar automáticamente la información disponible en la Web [W3C1; 2009]. La Web puede

alcanzar su máximo potencial si se convierte en un lugar donde la información pueda ser

compartida y procesada no sólo por personas sino también por herramientas automatizadas.

La Web Semántica permite diseñar agentes para que traten la información contenida en sus

páginas de manera automática a fin de convertir la información en conocimiento. Los datos

de las páginas Web son referenciados por esquemas de metadatos consensuados sobre un

dominio particular. Los esquemas de metadatos proporcionan información adicional, la cual

permite hacer deducciones y establecer axiomas y si son compartidos, realizar búsquedas de

información contextuales así como desarrollar aplicaciones Web más potentes. Las

ontologías brindan una representación consensuada de un dominio específico y legible por

ordenadores [Tello; 2001]

Según [Herman; 2010], el objetivo de la Web Semántica es crear un medio universal para el

intercambio de información, al mismo tiempo que prevé la interconexión de las

administraciones de información personal, integración de aplicaciones enterprise y el

intercambio global de información comercial, científica y cultural. La instalación de

información que se comprensible por los ordenadores en la Web se está convirtiendo

rápidamente en prioridad clave para organizaciones, individuos y comunidades.

La Web Semántica encuentra su propósito en una variedad de áreas de aplicación:

integración de datos; descubrimiento y clasificación de recursos (motores de búsqueda);

clasificación de páginas, sitios Web o bibliotecas digitales; en agentes de software para mayor

intercambio y acceso compartido de información; descripción de los derechos de propiedad

intelectual de páginas Web, etc.

La Web es uno de los repositorios públicos más grandes de información. Al 18 de diciembre

de 2010, se estima que en la Web existen 13.63 billones de páginas Web2. Esto representa

una cantidad extraordinaria de información. Desafortunadamente, la mayoría de esa

información es inaccesible a las computadoras debido a que fue diseñada para consumo

humano [Hebeler et al.; 2009]. Las máquinas fueron diseñadas para retransmitir

información, no para ser conscientes de los conceptos y relaciones contenidos en ella. Esto

es lo que hace difícil a las aplicaciones utilizar la Web como fuente de información de manera

automatizada.

Desde que la Web fue diseñada para humanos y basada sobre un concepto simple, la

información consiste de páginas de texto y gráficos que contienen links [Huhns; 2002]. Cada

link guía a otra página con información que una persona podría estar interesada en ver. Las

construcciones para la descripción y codificación, habitualmente empleadas en las páginas

1 World Wide Web Consortium o Consorcio World Wide Web es una comunidad internacional donde las

organizaciones Miembro, personal a tiempo completo y el público en general trabajan conjuntamente para

desarrollar estándares Web. Liderado por el inventor de la Web, Tim Berners-Lee y el Director Ejecutivo (CEO)

Jeffrey Jaffe, la misión del W3C es guiar la Web hacia su máximo potencial. 2www.worldwidewebsize.com

75.00 Tesis

7

(HTML) describen su apariencia pero no su contenido, mientras que a los agentes de

software sólo les interesaría su contenido. Pero a pesar de esta falencia, algunos agentes se las

ingenian para utilizar la Web en esas condiciones. Un shopbot 3 visita catálogos online de

vendedores para retornar precios de artículos según las preferencias registradas por el

usuario. Los shopbots operan por screen-scraping4, descargan páginas de catálogos y buscan

por nombre de artículo y por el conjunto de caracteres más cercano a un signo dólar, que

presumiblemente sería el precio del artículo. Los shopbots pueden entregar las mismas

formas que posiblemente entregaría una persona y analizar las páginas retornadas que un

comerciante esperaría que sus clientes vean. La Web Semántica hará la Web más accesible a

los agentes por utilizar construcciones semánticas como las provistas por ontologías,

representadas en lenguajes bien establecidos, y los agentes podrán comprender lo que hay en

una página.

[Berners-Lee et al.; 2006] afirman que los shopbots y los auctionbots5, de uso frecuente en la

Web, son trabajos artesanales de tareas específicas, con poca capacidad para interactuar con

diversidad de datos y tipos de información. Es con estándares bien establecidos que los

agentes de software pueden florecer y, en los últimos cinco años, estos estándares han

avanzado para expresar la información compartida.

En el contexto de la Web Semántica, ontologías, reglas e inferencia brindan soporte para

expresar restricciones adicionales sobre los recursos así como relaciones lógicas.

Las ontologías definen conceptos y relaciones por describir y representar un área de

conocimiento particular. Con ellas es posible clasificar términos en una determinada

aplicación, caracterizar relaciones y definir restricciones sobre esas relaciones. Sin embargo,

no es factible conseguir que todas las personas adhieran a una ontología. La actitud de la Web

con las ontologías es racionalizar6 la práctica de compartir información. Las aplicaciones

pueden interactuar sin tratar de lograr cobertura y consistencia global. No existen

requerimientos de acuerdo global o de traslación global entre ontologías específicas, excepto

para el subconjunto de términos relevantes de una transacción particular, que no es más que

un acuerdo local. Es importante tener presente que la adopción de ontologías existentes

favorece la integración y contribución de información, que algunas son más utilizadas que

otras y que su evolución es más del tipo bottom-up que top-down. [Herman; 2009]

Las reglas ofrecen una forma de expresar restricciones sobre las relaciones definidas por un

3 Agente que sirve para realizar la compra comparativa de programas informáticos que el usuario desea adquirir.

Analiza precios y especificaciones de los productos. Incluye características como heurísticas, patrones de

emparejamiento y técnicas de aprendizaje inductivo que le permiten desenvolverse en cualquier dominio de compra. 4 Screen scrapping consiste en obtener los datos mostrados por pantalla al capturar el texto vía software (visto

también como alternativa de conseguir los datos sin acceder a las fuentes como bases de datos). Las páginas

Web en formato HTML son un ejemplo. El software a ser utilizado debe ser escrito para reconocer datos

específicos. 5 Agente de subastas. Su propósito es pujar en la red para conseguir productos en las mejores condiciones

posibles. Implementan diferentes tipos de subastas y pueden gestionar varias simultáneamente. 6 Significa organizar una actividad social, laboral o comercial de forma de abaratar costos e incrementar el

rendimiento. En este sentido, el W3C proporciona especificaciones y estándares de los lenguajes ontológicos

que facilitan la codificación de conceptos mutuamente inteligibles lo que contribuye al progreso de la

comunicación dentro de la Web y, por lo tanto, al crecimiento de la utilidad Web.

75.00 Tesis

8

lenguaje ontológico (como RDF) y pueden ser empleadas para descubrir relaciones nuevas e

implícitas. No es posible definir un lenguaje de reglas para todos los sistemas basados en

reglas pero si un “core” comprendido por todas. Este core esta basado sobre tipos

restringidos de reglas, llamado reglas “Horn”, que tienen la forma if-then y establecen

restricciones sobre los tipos diferentes de condiciones y consecuencias. El Rule Interchange

Format (RIF) Working Group está trabajando en una definición precisa de un lenguaje de

reglas “core”, su extensibilidad, intercambio de expresiones de reglas entre sistemas y la

definición de su relación con OWL7 y su uso con triplas RDF.

A partir de la información adicional provista por las ontologías y conjuntos de reglas, los

razonadores pueden llevar a cabo procedimientos automáticos para inferir y generar nuevas

relaciones. Existe un amplio rango de razonadores automatizados disponibles y en general, la

inferencia utilizada en este contexto corresponde a lógica de primer orden.

La World Wide Web, inventada en 1989 por Tim Berners-Lee, cambio el modo en que las

personas reúnen y acceden información. Hoy la Web es un enorme repositorio de datos en

continuo crecimiento y existe un cuello de botella cada vez mayor cuando se intenta explotar

la información representada, es decir, piezas de información específicas. La Web Semántica

fue concebida con el propósito de resolver esta cuestión. Ella apunta a agregar semántica a la

información publicada en la Web (establecer el significado de los datos), tal que los

ordenadores puedan procesarla de manera similar a como lo harían los humanos y siendo la

columna vertebral tecnológica de ello las ontologías.

La Web fue concebida como una fuente de información distribuida y luego extendida, con la

aparición de tecnologías de servicios Web, a una fuente de funcionalidad distribuida. Esto es,

los servicios Web conectan computadoras y dispositivos utilizando Internet para

intercambiar y combinar datos en nuevas formas.

El crecimiento de la Web en tamaño y diversidad contribuye a una mayor necesidad para

automatizar aspectos de los servicios Web como descubrimiento, ejecución, selección,

composición e interoperación. De hecho, una de las ventajas de los servicios Web es que

hacen posible una composición dinámica de servicios utilizando componentes de software

reutilizables e independientes. El problema es que las actuales tecnologías (SOAP, UDDI,

WSDL) no proveen el soporte adecuado.

Las aplicaciones que emplean semántica en servicios Web son referidas como servicios Web

semánticos (SWS), los cuales, también, son anunciados como uno de los próximos pasos en el

camino hacia la evolución Web [Sánchez-García et al.; 2009]. Los SWS describen el contenido

de los servicios mediante anotaciones semánticas con el propósito de que el descubrimiento,

composición y la invocación de servicios pueda ser realizado automáticamente por agentes

inteligentes al procesar la información semántica provista.

Con el propósito de alcanzar estándares en la tecnología de SWS, el W3C ha recibido y

publicado diferentes presentaciones, algunas de las cuales han sido aprobadas y otras

7 Ontology Web Language o Lenguaje de Ontología Web.

75.00 Tesis

9

permanecen como potenciales entradas del proceso del W3C. Entre las primeras se

encuentra el estándar SAWSDL8, aprobado en el año 2007, realizado por SAWSDL Working

Group y basado en la presentación WSDL-S, realizada en el año 2005, por IBM y la

Universidad de Georgia. Entre los segundos siguen: 1) OWL-S, presentado en el año 2004, por

Nokia, Stanford Research Institute9 (SRI), y las universidades de Carnegie Mellon, Toronto,

Southampton, Yale, entre otras; 2) WSMO, presentado en el año 2005 por el WSMO Working

Group10; y 3) SWSF, presentado en el año 2005, por Hewlett Packard (HP), el Massachusetts

Institute of Technology11 (MIT), el National Research Council of Canada12, SRI y las

universidades de Stanford, Zurich, Toronto, California, entre otras.

En la presente tesis se estudiará cómo los servicios Web pueden interoperar combinando de

manera automática sus funcionalidades a fin de resolver situaciones que así lo requieren. Se

empleará un agente dotado con capacidades semánticas por medio de diferentes razonadores

y de las ontologías adecuadas al escenario elegido para el descubrimiento y combinación

automática de los servicios.

El aporte de esta tesis es establecer de qué manera la Web Semántica, descripta a través de

agentes, ontologías y razonadores podría contribuir a una área de investigación activa como

los servicios Web.

La tesis es organizada como sigue: en el capítulo I, se realiza una presentación de los

servicios Web; en el capítulo II se desarrollan las ontologías, los lenguajes ontológicos más

conocidos y más citados en las investigaciones de la Web Semántica, los razonadores y, se

adelanta una parte del prototipo construido por detallar las ontologías desarrolladas para el

escenario de aplicación representativo; en el capítulo III se exponen los agentes y su relación

con el software; en el capítulo IV se describen algunas de las investigaciones realizadas

acerca de la composición dinámica de servicios; el capítulo V trata del prototipo construido,

los criterios adoptados, sus componentes y las herramientas empleadas, el capítulo VI

enuncia las conclusiones finales y trabajo futuro y al final se anexan los objetivos que

formaron la primera presentación de este trabajo como propuesta .

8 Desarrollado en la sección 2.5.8 “SAWSDL”

9 Instituto de investigación sin fines de lucro cuya misión es el descubrimiento y la aplicación de la ciencia y la

tecnología al conocimiento, el comercio, la prosperidad y la paz. Las áreas principales incluyen comunicaciones y

redes, informática, sistemas de ingeniería, robótica, seguridad y defensa nacional, entre otras. 10

Su misión es alinear los proyectos de investigación europea en el área de los SWS, trabajando en la

estandarización de lenguajes y una arquitectura y plataforma común. 11

Instituto de Tecnología de Massachussets 12

Consejo Nacional de Investigación de Canadá

75.00 Tesis

10

Capítulo I

Servicios Web

1.1 Generalidades

1.1.1 Definiciones

Los servicios Web surgen como la mejor solución para la ejecución remota de funcionalidad.,

debido, parcialmente, a propiedades como independencia del sistema operativo y del

lenguaje de programación, interoperabilidad, ubicuidad y la posibilidad para desarrollar

sistemas débilmente acoplados. [García-Sánchez et al.; 2009]

Los servicios Web son diseñados para proveer interoperabilidad para diversas aplicaciones.

Los servicios Web son (por su diseño) independientes de las plataformas e interfaces de

lenguaje permitiendo una fácil integración entre diversos sistemas. Lenguajes Web como

UDDI, WSDL y SOAP definen estándares para descubrimiento, descripción y protocolos de

mensajes. [Sirin et al.; 2002]

Una perspectiva de negocios, los define como activos IT, como actividades del mundo real o

funciones de negocios reconocibles, posibles de ser accedidos cumpliendo políticas de

servicio (quien o qué es autorizado para acceder un servicio, cuando un servicio está

disponible, el costo de utilizar un servicio, niveles de confiabilidad por tiempo de restitución,

niveles de seguridad por requerimientos de privacidad e integridad, niveles de performance

por tiempo de respuesta, etc.).

Una perspectiva técnica, en cambio, los define como activos IT reutilizables, coarse-

grained13, con interfaces o contratos de servicio, que ocultan su implementación y

desacoplan la relación usuario-proveedor de servicio, permitiendo que ambos puedan

evolucionar independientemente, mientras los contratos de servicios permanecen sin

cambios (que un usuario pueda utilizar los servicios de otros proveedores o que un

proveedor pueda atender otros usuarios).

Los servicios pueden interactuar de manera consistente e independiente de la tecnología

gracias a estándares y facilidades provistas por la plataforma de servicios Web, la cual

constituye una infraestructura común para que usuarios y proveedores puedan localizar y

utilizar los servicios de otros o agregar nuevos servicios de manera estandarizada, siendo su

propósito principal el de facilitar la distribución de servicios.

Los servicios son un elemento clave en una arquitectura orientada a servicios. Un análisis

por capas, distingue entre contratos de servicios, servicios técnicos y línea de negocios.

13

En este contexto, denota características generales

75.00 Tesis

11

La capa de línea de negocios automatiza, de manera parcial o total, los servicios que una

organización presta directa (propios) o indirectamente14 (tercerización). La línea de

negocios establece un dominio de servicio (ingeniería, finanzas, ventas, marketing,

manufacturas, transporte, entre otros) a fin de que los servicios de ese dominio puedan

comunicarse mediante un vocabulario común y sea posible combinarlos. Generalmente,

servicios de diferentes dominios tendrán inconsistencias o vocabularios contradictorios y

por lo tanto, la plataforma de servicios Web necesitará proveer facilidades de transformación

de datos para pedidos de dominios diferentes.

La capa de servicios técnicos se ocupa de definir servicios reutilizables a lo largo de múltiples

líneas de negocios. Por ejemplo, servicios de transformación de datos, acceso a datos,

auditoría, acceso y administración de identidad (login). Los servicios de esta capa son

valiosos porque responden a un requerimiento especial de negocios como es la mitigación

del riesgo en escenarios cambiantes.

Cada servicio consta de una interfaz bien definida (es decir de una separación clara entre

interfaz e implementación) llamada formalmente, contrato de servicio. El contrato de servicio

es un mecanismo para formalizar un sistema y su alcance, minimizar dependencias,

maximizar adaptabilidad, emplear pruebas de caja negra, seleccionar servicios y cambiar de

proveedores.

Un proveedor de servicios (service provider) es un módulo de software que implementa un

contrato de servicio. Varios proveedores pueden implementar un mismo contrato de servicio

y ser instanciados por cada vez que son requeridos.

Un usuario de servicio (service requester) es un módulo de software que invoca el servicio

implementado por algún proveedor y utiliza las facilidades provistas por la plataforma de

servicios Web a fin de localizar el servicio y comunicarse con él.

Los servicios Web proponen un enfoque diferente para resolver algunos de los problemas IT

(especialmente en torno a la integración) que se desprenden de las nuevas capacidades

ofrecidas por la tecnología. Cabe destacar que considerando que los servicios Web son

tecnologías de interfaz basadas en XML, la utilización adecuada de servicios Web requiere de

un cambio en la forma de pensar la tecnología, la cual no consiste en simplemente aprender

una nueva gramática para la misma manera de construir y desplegar sistemas sino en tener

presente que los servicios Web hoy y siempre requerirán de una combinación de

tecnologías.

1.1.2 Características primarias Los servicios Web permiten obtener beneficios de negocios y técnicos debido a ciertas

características claves, las cuales deben estar presentes en el diseño, la implementación y

14

Outsourcing o tercerización. Contratar a otra empresa para que realice determinadas tareas que hacen a la

actividad empresarial pero no al núcleo del negocio. Realizado cuando se mejora la eficiencia en los resultados

(reducir costos, mejorar la calidad prestada) y se liberan recursos para reasignarlos a las tareas centrales de la

empresa

75.00 Tesis

12

administración. Estas características por grado de importancia se encuentran agrupadas en

características primarias, desarrolladas en esta sección y características secundarias,

desarrolladas a continuación.

Las características primarias son claves en la obtención de beneficios. Ellas incluyen: débil

acoplamiento, contratos de servicios bien definidos, útiles para el usuario y basados en

estándares. A continuación se describen brevemente.

Para que un servicio tenga débil acoplamiento hay que considerarlo a través de su interfaz, la

tecnología y los procesos. Idealmente, un usuario de servicio debería solicitar el servicio a

partir del contrato de servicio publicado y del acuerdo de nivel de servicio (SLA) pero nunca

requerir información acerca de su implementación. La dependencia de tecnología limitaría la

diversidad de usuarios que podrían acceder al servicio y la posibilidad de ser exteriorizado

para proveer a terceros. Por último, se debería tratar que los servicios no queden ligados a

procesos de negocios para que luego puedan ser reutilizados en diferentes procesos y

aplicaciones.

Cada servicio cuenta con una interfaz, bien definida llamada contrato de servicio, para definir

capacidades y modos de invocación, mientras oculta detalles de implementación. Así, un

estándar para contratos de servicios es provisto por WSDL. Por otro lado, un servicio puede

incluir metadatos sobre seguridad, políticas y con otros propósitos, utilizando la familia de

especificaciones WS-Policy15. Es importante destacar que un contrato de servicio debe ser

desarrollado con conocimiento del dominio de negocio y no simplemente derivado de la

implementación del servicio. Como primer corolario, el contrato de servicio debe ser

independiente de la implementación y manejado como un artefacto separado. Los contratos

de servicios son más valiosos que las implementaciones debido a que representan

conocimiento vital de negocios, son la base para compartir y reutilizar servicios y el

mecanismo primario para reducir acoplamiento de interfaz. Los cambios en los contratos de

servicios son más costosos que los cambios en la implementación dado que se propagan a los

usuarios, mientras que los cambios de implementación no tienen esos efectos. Como segundo

corolario entonces, es importante tener un mecanismo formal de extensión y versionado de

contratos de servicios para manejar dependencias y costos.

Servicios útiles son aquellos que poseen contratos de servicios definidos con un nivel de

abstracción apropiado y con sentido para los usuarios. Un nivel apropiado de abstracción es

aquel que captura la esencia del servicio sin restringir aplicaciones futuras, evita exponer a

los usuarios detalles técnicos como estructuras internas o convenciones y utiliza vocabulario

del dominio del servicio para definir el servicio y los documentos de entrada y salida. Una

interfaz abstracta promueve la sustitución, permitiendo cambiar de proveedores sin afectar a

los usuarios. En general, los servicios útiles ejecutan tareas discretas y proveen interfaces

simples a fin de lograr reutilización y débil acoplamiento.

Los servicios basados en estándares tienen varias ventajas: evitan depender de un vendedor

IT, aumentan las oportunidades que tiene un usuario de utilizar proveedores de servicios

alternativos, las oportunidades de los proveedores de soportar un amplio número de usuarios

15

Desarrollado por IBM, Microsoft, SAP y BEA. Políticas expresadas siguiendo un enfoque checklist para asociar

solicitudes con proveedores. Las políticas son declaraciones establecidas por el proveedor que solicitan al usuario

información adicional aparte de la provista por WSDL (requerimientos de seguridad, transacciones, etc.) a fin de

poder invocar el servicio.

75.00 Tesis

13

y de utilizar implementaciones open-source, a su vez, basadas en estándares, en tanto que,

para las comunidades de desarrolladores crecen las oportunidades en torno a las

implementaciones.

Además de adherir a estándares tecnológicos, resulta relevante poder respaldar el modelo de

datos y el modelo de procesos con estándares maduros del dominio de negocio y de la

industria vertical.

1.1.3 Características secundarias

Las características secundarias de los servicios permiten incrementar los beneficios. Ellas

incluyen:

� SLAs,

� stateless,

� diseño con soporte para múltiples estilos de invocación,

� diseño de contratos de servicios relacionados,

� compensación de transacciones,

� implementación independiente de otros servicios,

� descubrimiento y administración por metadatos.

A continuación se presenta una descripción de cada una de estas características.

Los acuerdos de nivel de servicio (SLA), definen métricas de servicios (tiempo de respuesta,

rendimiento, disponibilidad, tiempo entre fallas, entre otras) y permiten a los usuarios

determinar si un servicio satisface sus requerimientos no funcionales; a los proveedores

determinar la cantidad de instancias de servicios, provisión dinámica de servicios, servicios

centralizados o distribuidos geográficamente, entre otras. Un SLA debe ser establecido

tempranamente porque afecta el diseño, la implementación y la administración. Su función

es establecer, monitorear y permitir renegociar objetivos de negocios después de finalizada la

implementación.

Los metadatos permiten que los servicios sean publicados de manera especial para ser

descubiertos y consumidos sin intervención del proveedor. Esto reduce costos en localizar y

utilizar servicios, errores asociados con su utilización y permite una mejor administración.

Se deben implementar servicios autosustentables para minimizar dependencias entre

servicios, a fin de permitir que puedan interoperar sin dependencias internas y sin

compartir estado.

Una compensación de transacción corrige los errores producidos en una transacción

comercial. Ambas, la transacción y compensación, deben ser implementadas

simultáneamente por servicios distintos para asegurar consistencia entre ellas.

75.00 Tesis

14

El diseño y la implementación de operaciones de servicio deben soportar múltiples estilos de

invocación a fin de ser utilizadas en un amplio rango de situaciones y procesos de negocios.

En la mayoría de los casos la lógica de negocios implementada por un proveedor de servicio es

completamente independiente del estilo de invocación.

Los servicios stateless (servicios sin estado) son implementaciones donde las invocaciones

son independientes una de la otra y no dependen de un mantenimiento específico del cliente,

ni de estados persistentes entre invocaciones (no mantienen el estado de los procesos que

ejecutan ni los resultados que generan). Por lo tanto, resulta inmediato que las interacciones

stateless escalan eficientemente al permitir que cualquier pedido pueda ser enrutado a

cualquier instancia de servicio en oposición a los servicios stateful16 que no escalan

eficientemente dado que el servidor necesita recordar cuales servicios están sirviendo a cual

cliente y no se puede reutilizar un servicio hasta que éste haya terminado o por timeout.

Dado que los servicios no están aislados, al diseñar interfaces de servicios para un dominio de

negocios particular, se diseña el modelo de datos a nivel servicio (XML Schema) y

simultáneamente todas la interfaces. Esto es porque los servicios de ese dominio de negocios

utilizarán elementos del mismo modelo de datos. Además, asegura que los elementos de datos

sean definidos y aplicados de manera consistente y evita situaciones donde los servicios

utilicen definiciones similares aunque sutilmente diferentes. Es importante que todos los

servicios compartan el mismo modelo de datos a nivel servicio, incluyendo la estructura y

semántica de los documentos de negocios.

Los servicios deberían ser diseñados e implementados con todas sus características. Sin

embargo esto no siempre es posible y, puede ocurrir que el costo de agregar una

característica particular sea prohibitivo, comparada con los objetivos de la organización. Si

esto sucede, se deben privilegiar las características primarias, las cuales otorgaran los

mayores beneficios.

1.2 Desarrollo orientado a servicios 1.2.1 Beneficios El desarrollo orientado a servicios es complementario a otros enfoques como el desarrollo

orientado a objetos, el desarrollo por procedimientos, el desarrollo por mensajes y el

desarrollo de base de datos. Entre los beneficios que provee el desarrollo orientado a servicios

se encuentran:

� Reutilización: capacidad para crear servicios utilizables en múltiples aplicaciones.

� Eficiencia: capacidad para crear servicios y aplicaciones a partir de la combinación de los

servicios existentes y capacidad de enfocarse en los datos a ser compartidos (en lugar de la

implementación subyacente).

� Débil acoplamiento de tecnologías: capacidad para modelar servicios independientemente

16

Servicios con estado que suelen mantener las decisiones del usuario durante un proceso o una sesión, por

ejemplo un carrito de compras o los diferentes pasos para registrarse en una página Web.

75.00 Tesis

15

de su entorno de su ejecución y crear mensajes que puedan ser enviados a cualquier

servicio.

� División de responsabilidad: permite a los analistas de negocios y técnicos colaborar en el

desarrollo de servicios mediante los contratos de servicio.

El último beneficio es producto del cambio radical que exige la forma de pensar servicios (en

temas de diseño, desarrollo y despliegue) que conduce a una redistribución de

responsabilidades en los departamentos IT. Surgen el rol de analista de negocios, responsable

por montar nuevas aplicaciones compuestas y flujos de procesos que aseguren el

cumplimiento de requerimientos operacionales y estratégicos de negocios y, el rol de técnico,

responsable por manejar la complejidad de la tecnología de fondo en el despliegue de

servicios, asegurar que las descripciones de servicios XML/Web son las que el usuario

necesita y determinar los datos correctos a compartir.

1.2.2 Diferencias con el desarrollo orientado a objetos

Desarrollar un servicio es diferente a desarrollar un objeto. Un servicio es definido por los

mensajes que intercambia con otros servicios y no por métodos. Un servicio es definido a un

nivel de abstracción más alto (el denominador común menor) que el empleado en la

definición de un objeto, precisamente, eso es lo que hace posible que una definición de

servicio pueda ser implementada en un lenguaje orientado a procedimientos (COBOL), en un

sistema de encolado de mensajes (JMS) o en un sistema orientado a objetos (J2EE o .NET).

La granularidad en la definición de un servicio marca otra diferencia. Un servicio

generalmente define una interfaz general que acepta más datos en una invocación que un

objeto y que consume más recursos de procesamiento que un objeto a causa de su

necesidad de mapear a un entorno de ejecución, procesar el XML y permitir acceso remoto.

Aunque las interfaces de objetos pueden ser muy generales, el punto es que los servicios son

diseñados para solucionar problemas de interoperabilidad entre aplicaciones y para

componer nuevas aplicaciones (o sistemas de aplicación) pero no para crear lógica detallada

de negocios para las aplicaciones. [Newcomer y Lomov; 2004]

1.2.3 Composición de servicios

La Web crece en diversidad y tamaño incrementando la necesidad para automatizar aspectos

de los servicios Web como descubrimiento, ejecución, selección, composición e

interoperación. [García-Sánchez et al.; 2009]

Es posible crear una agregación de servicios Web de forma tal que el servicio Web publicado

encapsule otros servicios Web. Así una interfaz general puede ser descompuesta en un

número de servicios específicos (o múltiples servicios específicos ser combinados en una

interfaz general). Esto es frecuente en una composición estática de servicios efectuada por

medio de WS-BPEL17.

17

Web Services Business Process Execution Language. Es un lenguaje de composición orientado a procesos

para servicios Web. Depende de WSDL. Un proceso WS-BPEL puede ser expuesto como un servicio definido por

WSDL e invocado como cualquier otro servicio Web. Además WS-BPEL espera que todos los servicios incluidos

75.00 Tesis

16

A nivel proyecto, un arquitecto supervisa el desarrollo de servicios reutilizables e identifica

un medio para almacenar, administrar y recuperar descripciones de servicios. Una capa de

servicios separa las operaciones de negocios de variaciones en la implementación de la

plataforma de software subyacente, de la misma manera que los servidores Web y los

navegadores separan la WWW de variaciones en los sistemas operativos y lenguajes de

programación. Son los servicios reutilizables, por su capacidad para ser compuestos en

servicios más grandes rápida y fácilmente, lo que proveen a una organización de los

beneficios de la automatización de procesos y de la agilidad para responder a condiciones

cambiantes.

1.2.4 Abstracción de Servicios Un servicio tiene, en la red, una descripción de los mensajes que recibe y opcionalmente

retorna. En efecto, un servicio es definido en términos del patrón de intercambio de

mensajes (MEP) que soporta. Un esquema para los datos contenidos en el mensaje es

utilizado como parte principal del contrato (descripción) entre el servicio solicitante y el

servicio proveedor. Otros ítems de metadatos incluyen la dirección de red del servicio,

operaciones y requerimientos de confiabilidad, seguridad y transaccionalidad.

[Newcomer y Lomov; 2004]. Componentes de servicio.

Las partes de un servicio incluyen la implementación, una capa de mapeo y la descripción. La

implementación puede ser provista por cualquier entorno de ejecución. La implementación

en una composición sean definidos empleando contratos de servicio WSDL. Esto permite a un proceso WS-

BPEL invocar otros procesos WS-BPEL recursivamente.

J2EE .NET

CORBA IMS

Implementación de servicio / Agente ejecutable Usuario de servicio

Descripción de servicio

Capa traductora

(Mapping Layer)

Pedido de servicio

75.00 Tesis

17

del servicio también es llamada agente ejecutable. El agente ejecutable es responsable de

implementar el modelo de procesamiento definido por las especificaciones. El agente

ejecutable corre dentro de un entorno de ejecución, el cual es generalmente un sistema de

software o un lenguaje de programación.

La descripción se encuentra separada del agente ejecutable. Una descripción puede tener

múltiples agentes ejecutables asociados. Similarmente, un agente puede soportar múltiples

descripciones. Entre la descripción y el entorno de ejecución se encuentra la capa de mapeo

(algunas veces llamada capa de transformación), que es implementada por medio proxies o

stubs. La capa de mapeo es responsable de aceptar el mensaje, transformar los datos desde el

XML al formato original y despachar los datos obtenidos al agente ejecutable.

Los servicios Web pueden adoptar dos roles, como servicio solicitante, al iniciar la ejecución

de un servicio por enviar mensajes al servicio proveedor y como servicio proveedor, al

ejecutar el servicio y opcionalmente retornar resultados. Un agente ejecutable puede ocupar

uno o ambos roles.

La abstracción de servicios permite acceder a una variedad de servicios, incluyendo

aplicaciones legacy18 (wrapped o encapsuladas) y aplicaciones compuestas por otros

servicios.

1.3 Modelos de interoperabilidad en una arquitectura de servicios Web [Booth et al., 2004] definen una arquitectura de servicios Web (WSA - Web Service

Architecture) como una arquitectura de interoperabilidad, asegurada por identificar los

elementos de una red de servicios Web global. Estos elementos son combinados en cuatro

modelos diferentes.

1.3.1 Modelo orientado a mensajes - MOM

El modelo orientado a mensajes, también llamado MOM, por sus siglas en inglés (Message

Oriented Model), se centra sobre aspectos de la arquitectura relacionados a los mensajes y su

procesamiento.

El modelo no refiere el significado semántico del contenido de un mensaje o su relación con

otros mensajes.

MOM se centra en la estructura de los mensajes, las relaciones entre el emisor y el receptor y

cómo son transmitidos.

Los conceptos y relaciones en MOM son ilustrados a continuación:

18

Legacy usualmente significa aplicaciones remanentes, en versiones muy anteriores y que se han reemplazado por

más modernas, pero que siguen funcionando todavía.

75.00 Tesis

18

[Booth et al.; 2004] Modelo orientado mensajes

Algunos conceptos y relaciones son explicados a continuación.

� Dirección: es la información requerida por un mecanismo de transporte de mensaje a fin

de entregar el mensaje apropiadamente. Generalmente, la dirección dependerá del

transporte de mensajes particular. En el caso de transporte de mensajes HTTP, la dirección

tomará la forma de una URL.

� Mensaje: es la unidad básica de datos enviada desde un agente a otro. Las partes

principales de un mensaje son la envoltura, un conjunto de headers y el cuerpo. La

envoltura sirve para encapsular las partes componentes del mensaje y ubicar información

de direccionamiento. Los headers contienen información auxiliar acerca del mensaje y

facilidades de procesamiento modular. El cuerpo consta del contenido del mensaje.

� Cuerpo: provee un mecanismo para transportar información hacia el destinatario. La

forma del cuerpo y restricciones sobre el cuerpo pueden ser expresadas como parte de la

descripción de servicio. En muchos casos, la interpretación precisa del cuerpo del mensaje

dependerá de los headers del mensaje.

� Correlación: es la asociación de un mensaje con un contexto. Asegura que un agente

solicitante puede relacionar la respuesta con el pedido, especialmente cuando múltiples

respuestas son posibles.

� Envoltura: encapsula las partes componentes del mensaje, el cuerpo y los headers. En ella

se pueden encontrar la dirección de destino, información de seguridad que permite

autenticar el mensaje, información de calidad de servicio.

� Patrón de intercambio de mensajes: también llamado MEP (Message Exchange Pattern).

Es un template que describe un patrón genérico para el intercambio de mensajes entre

agentes. Los mensajes que son instancias de un MEP están correlacionados, explícita o

implícitamente. Los intercambios pueden ser sincrónicos o asincrónicos. La diferencia

precisa entre un MEP y una coreografía no está resuelta. Algunos sostienen que MEP

consiste de patrones atómicos y una coreografía de una composición de patrones. Un MEP

75.00 Tesis

19

es desprovisto de la semántica de la aplicación mientras que una coreografía incluye la

semántica en la descripción de patrones. A nivel de escala, una coreografía

frecuentemente utiliza MEP en la construcción de bloques.

� Header: contienen información acerca del mensaje. Su función primaria es facilitar el

procesamiento modular del mensaje. Parte del header puede incluir información

pertinente a funcionalidades extendidas de los servicios Web como seguridad, contexto de

transacción, información de orquestación, información de ruteo o administración. Pueden

ser procesados independientemente del cuerpo del mensaje, cada header puede identificar

un rol de servicio que indica el tipo de procesamiento que debería ser ejecutado sobre el

mensaje. Un mensaje puede tener varios headers identificando roles de servicios

diferentes.

� Destinatario: el destinatario de un mensaje es el agente que recibe un mensaje.

� Emisor: el emisor de un mensaje es el agente que transmite un mensaje. Aunque cada

mensaje tiene un emisor, la identidad podría no estar disponible en el caso de

interacciones anónimas.

� Confiabilidad: el objetivo es reducir la frecuencia de error y proveer suficiente

información acerca del estado de un envío. Esta información permite a un agente

participante tomar decisiones de compensación cuando se producen errores. Cuando más

de dos agentes están involucrados, es necesario utilizar una correlación de alto nivel como

“two-phase commit19”. El envío puede ser realizado por una combinación de

acknowledgement y correlación. Si un mensaje no ha sido recibido apropiadamente, el

emisor puede intentar un reenvío o alguna acción de compensación a nivel aplicación.

� Secuencia: conjunto ordenado de mensajes intercambiados entre un agente proveedor y

un agente solicitante durante una interacción. La secuencia puede ser realizada por un

MEP, usualmente identificado por una URI.

� Transporte: mecanismo empleado por los agentes para enviar mensajes. Ejemplos de

transporte de mensajes incluyen HTTP sobre TCP, SMTP, middleware20

orientado a mensajes,

etc.

1.3.2 Modelo orientado servicios - SOM

Se centra sobre aspectos de la arquitectura que relacionan servicio y acción. El propósito de

SOM es explicar las relaciones entre un agente con los servicios que provee y pedidos que

realiza. SOM se construye sobre MOM pero se ocupa de la acción que tiene lugar.

Los conceptos y relaciones en SOM son ilustrados a continuación.

19 Empleado en el procesamiento de transacciones, bases de datos y redes, es un algoritmo distribuido que coordina

todos los procesos que participan en una transacción atómica distribuida para el commit o rollback de la transacción

(tipo de protocolo por consenso). El protocolo es resistente, en muchos casos, a fallas temporales del sistema (por

procesos, nodos de red, comunicación). Sin embargo no es resistente a todas las posibles fallas de configuración y

en casos especiales puede requerir la intervención del usuario. 20

Software de conectividad que ofrece un conjunto de servicios que hacen posible el funcionamiento de

aplicaciones distribuidas sobre plataformas heterogéneas. Funciona como una capa de abstracción de software

distribuida que se sitúa entre las capas de aplicaciones y las capas inferiores (sistema operativo y red). El

middleware abstrae de la complejidad y heterogeneidad de las redes de comunicación subyacentes, así como de los

sistemas operativos y lenguajes de programación, proporcionando una API para la fácil programación y manejo de

aplicaciones distribuidas.

75.00 Tesis

20

[Booth et al.; 2004] Modelo orientado a servicios

Los conceptos relacionados con agente proveedor, agente solicitante, entidad proveedor y

entidad solicitante son definidos en la sección agentes.

Para el modelo, un servicio es un recurso abstracto que representa la capacidad de ejecutar

tareas y posee funcionalidad coherente desde el punto de vista de una entidad proveedor y

solicitante y que para ser utilizado debe ser implementado por un agente proveedor.

Los servicios Web se distinguen de otros recursos Web en que no necesariamente tienen

una representación. Los servicios Web son interacciones entre agentes proveedor y

solicitante, centrados en acciones, que con propósitos de caracterizar la semántica son

capturadas en términos de tareas (la semántica de cualquier sistema está ligado al

comportamiento del sistema). Las tareas combinan el concepto de acción con intención: los

servicios Web son invocados con un propósito, que puede ser expresado como un objetivo de

estado deseado.

Algunos conceptos y relaciones son explicados a continuación.

� Acción: ejecutada por un agente, por recibir un mensaje o enviar un mensaje o cualquier

otro cambio de estado observable que satisface un objetivo de estado deseado.

� Coreografía: define la secuencia y condiciones bajo las cuales múltiples agentes

intercambian mensajes a fin de alcanzar el objetivo de estado de la tarea a ejecutar. Se

apoya en interfaces de servicio, puede pertenecer a una tarea, define la relación entre los

mensajes intercambiados y las tareas de un servicio. Mientras una orquestación define la

secuencia y condiciones bajo las cuales un servicio Web invoca a otro para realizar alguna

función, una coreografía puede ser descripta utilizando un lenguaje de descripción de

coreografía sobre cómo componer servicios Web, cómo establecer roles y asociaciones en

los servicios Web y cómo manejar el estado de los servicios compuestos.

� Capacidad: pieza de funcionalidad soportada o requerida por un agente. Tiene un

75.00 Tesis

21

identificador URI, una descripción semántica, puede ser publicada por un agente

proveedor o solicitante y referenciada por una descripción de servicio.

� Objetivo de estado: es el estado deseable de algún servicio o recurso desde el punto de vista

de una persona u organización. Asociado con las tareas provistas por un servicio, los

objetivos son caracterizados por predicados que son verdaderos para ese estado.

� Descripción: contiene detalles de la interfaz y del comportamiento esperado del servicio y

puede ser utilizada para facilitar la construcción y despliegue de servicios, por personas

para localizar servicios apropiados y por agentes solicitantes para automáticamente

descubrir agentes proveedores.

� Interfaz: define los diferentes tipos de mensajes que un servicio envía y recibe, junto con

el patrón de intercambio de mensajes (MEPs) empleado tal como request/response21,

one-way asynchronous22 o publish/subscribe23.

� Rol: es un conjunto de tareas de servicio, que puede ser definido en términos de

propiedades de mensajes y establecido por el propietario del servicio. Un mensaje recibido

por un servicio puede involucrar procesamiento asociado con varios roles. Similarmente,

los mensajes emitidos pueden involucrar más de un rol de servicio.

� Semántica: es el contrato entre una entidad proveedora y una entidad solicitante

concerniente a los efectos y requerimientos pertenecientes al uso de un servicio. Trata

sobre las tareas que constituyen el servicio. Debería ser identificada en una descripción de

servicio y descripta formalmente por un lenguaje procesable por máquina. Las

descripciones semánticas procesables por máquina proveen un uso sofisticado de los

servicios Web. Aparte del comportamiento esperado de un servicio, otros aspectos de la

semántica de un servicio incluyen restricciones sobre políticas, la relación entre la entidad

proveedor y la entidad solicitante y cuáles características de manejabilidad están asociadas

con el servicio.

� Tarea: es una abstracción que encapsula los efectos deseados de invocar un servicio. Las

tareas están asociadas con objetivos de estado. La performance de una tarea es observable

por el intercambio de mensajes entre un agente solicitante y un agente proveedor. El

patrón específico de mensajes define la coreografía asociada con la tarea. Las tareas

representan una unidad útil en el modelado de la semántica de un servicio y de hecho, del

rol de un servicio.

1.3.3 Modelo orientado a recursos – ROM

También llamado ROM (Resource Oriented Model). Los recursos son un concepto

fundamental que sustenta gran parte de la Web y gran parte de los servicios Web. Por

ejemplo, un servicio Web es un tipo particular de recurso. El modelo se centra en

características claves de los recursos tales como propiedad de recursos y políticas

asociadas con recursos. Dado que los servicios Web son recursos, estas propiedades son

heredadas por ellos.

Los conceptos y relaciones en ROM son ilustrados a continuación:

21

Patrón para el intercambio de dos mensajes entre dos nodos SOAP adyacentes. Un mensaje “request” es

transferido desde el nodo solicitante al nodo receptor para luego transferir un mensaje “response” desde el nodo

receptor al nodo solicitante. 22

Patrón para el envío de mensajes que no requiere que el emisor y el receptor estén on-line simultáneamente.

Limitado a la transmisión de mensajes desde un nodo emisor a cero o más nodos SOAP receptores. 23 Patrón por eventos, en el que eventos “subscribers” indican los eventos de su interés en un broker de eventos para

recibir notificaciones cuando los eventos indicados son generados por los eventos “publishers”. Permite

interacciones del tipo many-to-many.

75.00 Tesis

22

[Booth et al.; 2004] Modelo orientado a recursos

Algunos conceptos y relaciones son explicados a continuación.

� Servicio de descubrimiento: utilizado para publicar y buscar descripciones conformes con

ciertos criterios funcionales o semánticos. Facilita a las entidades solicitantes el proceso de

encontrar un agente proveedor apropiado para una tarea particular. También,

dependiendo de la implementación y políticas de descubrimiento, puede ser utilizado por

entidades proveedoras para publicar sus descripciones de servicio.

En un servicio de descubrimiento dinámico, la interacción es directa con el agente

solicitante para encontrar el agente proveedor más conveniente. En un servicio de

descubrimiento estático, la interacción es indirecta con una persona a través de un agente

apropiado, tal como un navegador.

� Identificador: la arquitectura utiliza URIs para identificar recursos.

� Representación: pieza de información que describe el estado de un recurso.

� Recurso: es el corazón de la arquitectura Web. La Web es un universo de recursos. Desde

una perspectiva del mundo real, un aspecto interesante de un recurso es su propiedad. Un

recurso es algo que puede ser apropiado y por lo tanto está sujeto a políticas. Las políticas

aplicadas a recursos son relevantes para la administración de recursos Web, seguridad de

acceso a servicios Web y otros aspectos del rol que un recurso tiene en el mundo.

� Descripción: procesable por computadora, son utilizadas por los agentes para el

descubrimiento de recursos. Su propósito principal es facilitar descubrimiento de

recursos. Para lograrlo, provee información sobre la ubicación del recurso, accesibilidad y

políticas aplicadas. Cuando el recurso es un servicio Web, la descripción puede contener

información acerca de los efectos esperados de utilizar el servicio. La descripción de un

servicio es distinta de la representación. Esta última es un snapshot24 que refleja el estado

del recurso, la descripción consiste de meta-información acerca del recurso.

24

En sistemas informáticos, es el estado de un sistema en un punto particular en el tiempo.

75.00 Tesis

23

1.3.4 Modelo de políticas - PM

También llamado PM (Policy Model), se centra en aspectos de la arquitectura relacionados

con políticas y por extensión, a seguridad y calidad de servicio. La seguridad es llevada a

cabo por restricciones sobre el comportamiento de una acción y sobre el acceso a

recursos. Similarmente, la calidad de servicio trata de restricciones sobre el servicio. Hay

otros tipos de restricciones y políticas relevantes para los servicios Web, incluyendo varias

restricciones a nivel de aplicación.

Los conceptos y relaciones en PM son ilustrados a continuación:

[Booth et al.; 2004] Modelo orientado a políticas

Algunos conceptos y relaciones son explicados a continuación:

� Guardián: mecanismo que asegura el cumplimiento de políticas. Desplegado en nombre

de un propietario. La arquitectura identifica dos tipos de guardias, a saber, guardia auditor

y guardia de permiso.

� Políticas: restringen el comportamiento de agentes, personas u organizaciones, como

permisos y obligaciones, que constituyen tales políticas.

� Guardia auditor: mecanismo utilizado en nombre de un propietario para monitorear que

las acciones y los agentes cumplan con la ejecución de sus obligaciones. No es posible

proactivamente hacer cumplir las obligaciones, por lo tanto, el incumplimiento de una

obligación resulta en algún tipo de retribución después de cometida la falta.

� Dominio: conjunto de recursos sujeto a las restricciones establecidas por las políticas.

� Obligación: tipo de política que prescribe las acciones y estados de un agente o un recurso.

� Permiso: tipo de política que prescribe las acciones y estados permitidos de un agente o

recurso.

� Guardia de permiso: asegura que los usos de cualquier servicio o recurso son consistentes

con las políticas establecidas por el administrador o propietario del servicio. Ubicado entre

un servicio y un usuario del servicio. Puede permitir o denegar un pedido de acceso. Esto

75.00 Tesis

24

es posible porque las políticas de permisos son proactivamente controladas.

� Descripción: descripción procesable de un conjunto de políticas.

1.4 Arquitectura orientada a servicios

1.4.1 Generalidades

Una arquitectura orientada a servicios o SOA (Service Oriented Arquitecture) es definida por

[Newcomer y Lomov; 2004] como un estilo de diseño que dirige los aspectos de crear y

utilizar servicios de negocios a lo largo del ciclo de vida del servicio (desde su concepción

hasta su retiro). Es también una manera para definir y disponer una infraestructura IT que

posibilita a diferentes aplicaciones intercambiar datos y participar en procesos de negocios,

sin considerar los sistemas operativos o lenguajes de programación que sostienen esas

aplicaciones.

En SOA, los servicios de negocios (servicios para operar con clientes, socios o empleados)

son el principio clave para alinear sistemas IT con los objetivos estratégicos de negocios IT.

Las empresas que implementan sus sistemas IT de esta manera reaccionan más rápido a

nuevos requerimientos dejando atrás competidores con sistemas ligados a los entornos de

ejecución. Resulta más sencillo combinar servicios Web, más fácil cambiar composiciones de

servicios Web y más barato cambiar servicios Web y datos XML que cambiar entornos de

ejecución. Las ventajas de SOA con servicios Web incluyen un mejor retorno de la inversión

(ROI) por los gastos IT en proyectos, proyectos más rápidos y capacidad para responder en

corto tiempo a nuevos requerimientos de negocios y del gobierno.

La orientación a servicios reduce los costos y los calendarios de proyectos exitosos por

adaptar la tecnología a las personas, en lugar de enfocarse en la tecnología en sí. La mayor

ventaja de un desarrollo orientado a servicios es que permite concentrarse en la descripción

de un problema de negocios en oposición a enfoques anteriores que prestaban atención a las

tecnologías de un entorno de ejecución particular.

El concepto SOA no es nuevo. Lo nuevo es la capacidad para mezclar y asociar entornos de

ejecución, separando claramente la interfaz de servicio de la tecnología de ejecución,

permitiendo que los departamentos IT puedan elegir el mejor entorno de ejecución para cada

trabajo y vincularlos utilizando un enfoque de arquitectura consistente.

La idea de separar una interfaz de su implementación para crear un servicio ha demostrado

buenos resultados. Pero la capacidad de separar clara y completamente una descripción de

servicio de su entorno de ejecución es nueva, una capacidad otorgada por los conceptos Web

y las tecnologías a los servicios Web. Las implementaciones tradicionales del concepto de

interfaz no consideraron una separación como ésta, debido a las implicaciones negativas de

performance. Sin embargo, algunas veces, la performance es menos importante que la

capacidad para alcanzar más interoperabilidad, algo que la industria ha luchado por lograr

pero que sólo ha conseguido parcialmente [Newcomer y Lomov; 2004].

SOA no depende de avances en software, traídos por los servicios Web, sino de un cambio de

75.00 Tesis

25

enfoque. Separar la descripción de servicio de la tecnología de implementación significa que

los negocios pueden centrarse en pensar y planificar inversiones IT en torno a la realización

de consideraciones de negocios, en lugar de ocuparse de las capacidades de un producto

individual o de la tecnología elegida para ejecutar una descripción. En este caso, la

descripción convierte la definición del conjunto de características y funciones en el

denominador común que cualquier producto o tecnología debe soportar. Sin embargo, esto es

posible si se produce un cambio en la manera de pensar los negocios IT. El mundo es diverso

por naturaleza y un SOA con servicios Web no sólo abraza esta diversidad sino que provee la

capacidad para crear sistemas IT acordes con las operaciones de negocios. En un mundo

SOA, las empresas tienen que aprender a pensar servicios como diferentes a entornos de

ejecución y, además, a tener que ensamblar aplicaciones a partir de componentes de una

variedad de proveedores IT.

El valor real de SOA proviene de las últimas etapas de implementación, cuando nuevas

aplicaciones pueden ser desarrolladas enteramente, o casi enteramente, por componer los

servicios existentes. Es, en este momento, cuando se alcanzan los mayores valores por el

esfuerzo realizado (menores costos, resultados más rápidos, mejora del ROI). Sin embargo,

toma tiempo alcanzar este punto, además de una inversión significativa en desarrollo

orientado a servicios.

La clave es determinar el diseño correcto y el funcionamiento de los servicios en bibliotecas

reutilizables, las cuales deben reflejar las características operacionales de la organización.

Estas características operacionales necesitan ser automatizadas y un proyecto SOA,

finalizado con buen éxito, garantiza que los servicios reutilizables se encuentran

apropiadamente alineados con los procesos de negocios operacionales. Una alineación

correcta de servicios de negocios y su implementación asegura poder cambiar rápida y

fácilmente los procesos de negocios operacionales a medida que cambios externos causan

que una organización se adapte y evolucione.

Las principales dificultades para adoptar SOA incluyen la formación del personal adecuado y

el mantenimiento del nivel de disciplina que se requiere para garantizar que los servicios

que se desarrollen sean reutilizables. Cualquier tecnología, por prometedora que sea, puede

ser objeto de abuso y un uso inadecuado. Los servicios deben ser desarrollados no sólo para

beneficio inmediato sino principalmente para prestaciones a largo plazo. Dicho de otro

modo, la existencia de un servicio individual no es de mucho valor a menos que se ajuste a

una colección más grande de servicios que puedan ser consumidos por múltiples

aplicaciones y de las cuales nuevas aplicaciones se puedan componer.

Otras dificultades incluyen la gestión de costos a corto plazo. La construcción de un SOA no es

barata; la reingeniería de los sistemas existentes cuesta dinero y el ROI se extiende en el

tiempo. Resulta necesario contar con analistas de negocios para definir los procesos de

negocios, arquitectos de sistemas para convertir los procesos en especificaciones,

ingenieros de software para desarrollar nuevas aplicaciones y lideres de proyecto para

realizar un seguimiento de toda la reingeniería.

Algunas aplicaciones pueden necesitar ser modificadas para participar en SOA y esto podría

representar una dificultad. Estas aplicaciones podrían carecer de una interfaz para

75.00 Tesis

26

convertirlas en servicios. Existen aplicaciones que sólo son accesibles vía transferencia de

archivos o entrada/salida de datos por lotes y que, por lo tanto, ciertos programas adicionales

resultarían indispensables a fin de habilitarlas como servicios.

1.4.2 Directorio de servicios

Un directorio de servicios permite que ciertos componentes puedan localizar otros

componentes, donde los componentes pueden ser aplicaciones, agentes, proveedores de

servicios Web, usuarios de servicios Web, objetos o procedimientos [Huhns; 2002]. Existen

dos tipos generales de directorios según sus entradas: white-pages cuyas entradas listan los

nombres de servicios y yellow-pages, cuyas entradas listan las características y capacidades

de los servicios.

Implementar un directorio básico es un mecanismo simple como una base de datos que

permite a los participantes insertar descripciones sobre los servicios ofrecidos y consultar

los servicios ofrecidos de otros participantes. Un directorio más avanzado podría ser más

activo que otros al proveer no sólo búsqueda de servicios sino también brokering25 o

facilidades de servicios. Por ejemplo, un participante podría solicitar un servicio de brokering

para reclutar los agentes necesarios a fin de responder una consulta. El servicio de brokering

utilizaría la información acerca de las características y capacidades de los proveedores de

servicios registrados para determinar a qué proveedores enviar la consulta. De esta manera,

el directorio podría enviar la consulta a esos proveedores, retornar las respuestas a quien las

solicitó y aprender acerca de las propiedades de las respuestas que gestiona.

UDDI es en sí mismo un servicio Web basado en XML y SOAP. Provee servicios de white-

pages y yellow-pages pero no facilidades de servicios [Newcomer y Lomov; 2004].

1.4.3 BPM

Un administrador de procesos de negocios (BPM o Business Process Management) denota

un conjunto de sistemas de software relacionados y de metodologías para el desarrollo,

despliegue y manejo de procesos de negocios. Un proceso de negocio puede incluir sistemas

IT que requieran interacción humana o sistemas IT completamente automatizados.

El objetivo de los sistemas BPM es alinear los sistemas IT con los procesos de negocios y por

lo tanto con los objetivos de negocios.

Todos los sistemas IT implementan procesos de negocios pero BPM separa explícitamente la

lógica de procesos de negocios del código de aplicación (en contraste con otras formas de

desarrollo de sistema donde la lógica de proceso esta embebida en el código de aplicación).

25

Desarrollado en la sección 3.3, “Matchmaking entre agentes heterogéneos”.

75.00 Tesis

27

Separar la lógica de procesos del código de aplicación ayuda a aumentar la productividad,

reduce los costos operacionales y mejora la agilidad. Correctamente implementado, las

organizaciones pueden responder rápidamente a condiciones cambiantes del mercado y

aprovechar oportunidades para ganar ventaja competitiva.

BPM simplifica el problema de combinar la ejecución de múltiples servicios Web para

resolver un problema particular. Si se piensa en un servicio como la alineación de un sistema

IT con una función de negocio, como puede ser el procesamiento de una orden de compra,

BPM estaría representado por una capa con varios servicios unidos por un flujo de ejecución

para completar la función. Por definir el flujo de proceso fuera del código de aplicación, el

proceso de negocio puede ser fácilmente cambiado y actualizado por nuevas características y

funciones.

El flujo de proceso es dividido en tareas individuales llamadas servicios Web. Cada parte de

un flujo es probado basado en los resultados de ejecutar una tarea.

1.4.4 Gobierno de políticas y procesos

Algunas organizaciones creen haber adoptado SOA simplemente por utilizar tecnologías de

servicios Web como SOAP o WSDL. Sin embargo, SOA no es una aplicación sino más bien

una disciplina que abarca casi la totalidad de la actividad IT, incluyendo procesos, métodos y

herramientas para diseño, desarrollo, administración y mantenimiento de activos IT.

El propósito de un gobierno26 SOA es alinear los gobiernos de negocios y de software,

incluyendo la coordinación del desarrollo y la adquisición de software y su reutilización para

lograr mayor agilidad y economía de escala. El gobierno SOA es una extensión del gobierno

IT para manejar servicios y abstracciones a nivel servicios.

La necesidad de un gobierno surge de reconocer que los servicios son activos, proveen una

unidad común para administración de requerimientos, acuerdos de servicios (SLA),

performance de negocios y técnica y reutilización de recursos y por lo tanto requieren ser

manejados durante su ciclo de vida.

Un gobierno SOA es un cuerpo dentro de la empresa con representantes de cada dominio de

servicio, de cada unidad de negocio y de expertos en la materia que puedan hablar acerca de

los diferentes componentes tecnológicos de una solución.

Entre sus responsabilidades se encuentran establecer las políticas y procesos que permitan

identificar, implementar, desplegar y versionar servicios llevando a cabo un proceso

descentralizado (cada departamento o proyecto es responsable por identificar, implementar y

desplegar servicios) o centralizado (donde el cuerpo de gobierno revisa la adición,

modificación y eliminación de servicios antes de autorizar su implementación y despliegue),

determinar las herramientas a utilizar (en administración de proyectos, modelado de

26

Entendido aquí como la acción de dirigir, decidir, guiar.

75.00 Tesis

28

negocios, modelado de servicios, modelado de datos, desarrollo, administración de sistemas,

entre otras) y el intercambio de información entre ellas y determinar la formación

obligatoria y opcional de miembros del equipo de SOA y de equipos de proyectos grandes en

la implementación de procesos y utilización de herramientas SOA. En cualquier caso, es

importante que haya algún nivel de estandarización que atraviese los departamentos y

proyectos para promover la reutilización de servicios.

1.4.5 Especificaciones

Una arquitectura de servicios Web consiste de especificaciones WSDL, SOAP y UDDI, a fin de

soportar interacción entre un usuario, un proveedor de servicio y algún mecanismo

potencial para descubrimiento de servicios. Un proveedor publica una descripción WSDL de

sus servicios en un registro UDDI (o algún otro tipo de registro), otro agente accede a la

descripción publicada y envía un mensaje SOAP al proveedor solicitando la ejecución del

servicio.

Según el W3C, WSDL es un protocolo de comunicación. Define una gramática XML para

describir los servicios Web como una colección de endpoints capaces de intercambiar

mensajes. Es utilizado frecuentemente en combinación con SOAP. Un programa cliente

conectándose a un servicio Web puede leer su archivo WSDL a fin de determinar cuáles

operaciones están disponibles en el servidor. El cliente luego utiliza SOAP para invocar

alguna de las operaciones listadas.

WSDL 2.0 es la última versión de la especificación y fue aprobada en el año 2007 por el W3C.

Esta especificación soporta todos los métodos HTTP request, ubicándola como el mejor

soporte para servicios Web RESTful27, además de ser mucho más simple de implementar. Sin

embargo, todavía son pocas la herramientas que la incluyen entre sus funcionalidades

ofrecidas y pocas las aplicaciones que la incluyen en sus implementaciones (la última versión

de BPEL28 sólo soporta WSDL 1.1).

WSDL define un servicio como una colección de endpoints (WSDL 2.0) o ports (WSDL 1.1).

Un endpoint, a su vez, es definido por asociar una dirección de red con una interfaz

reutilizable. Los mensajes describen de manera abstracta los datos intercambiados y los

portypes (se explica más abajo su significado), de manera abstracta también, el conjunto de

operaciones disponibles. El protocolo concreto y el formato de datos de un portype particular

constituyen un binding reutilizable, donde las operaciones y los mensajes son vinculados a un

protocolo de red concreto y a un formato de mensaje. De esta manera WSDL define la

interfaz pública de un servicio. Los elementos que componen WSDL son presentados e

identificados a continuación, según su denominación en WSDL 1.1/WSDL 2.0:

27

Desarrollado en las siguientes secciones 28

El Business Process Execution Language, nombre corto del Web Services Business Process Execution Language

(WS-BPEL) es un lenguaje ejecutable estándar OASIS (consorcio global que dirige el desarrollo, convergencia y

adopción de estándares e-business y servicios Web) por especificar las acciones que ocurren dentro de los procesos

de negocios con servicios Web. Los procesos en BPEL exportan e importan información por utilizar interfaces de

servicios Web exclusivamente.

75.00 Tesis

29

� Types/Types: contiene las definiciones de los tipos de datos utilizados. XML-Schema es

utilizado (inline o por referencia) para este propósito.

� Message/No aplica: un mensaje corresponde a una operación. El mensaje contiene la

información necesaria para ejecutar la operación. Cada mensaje consiste de una o más

partes lógicas. Cada parte está asociada con un atributo del tipo de mensaje. El atributo

nombre del mensaje provee un nombre único entre todos los mensajes. El atributo

nombre de la parte provee un nombre único entre todas las partes que conforman el

mensaje. Las partes son una descripción lógica del contenido del mensaje. Los mensajes

fueron removidos en WSDL 2.0 donde los tipos XML-Schema para definir los input, output

y faults (entradas, salidas y fallas) son referidos directamente.

� Operation/Operation: cada operación puede ser comparada con la llamada a un método o

función en un lenguaje de programación tradicional. Define las acciones SOAP y la manera

en que el mensaje SOAP es codificado (por ejemplo un valor “literal” indica que el

mensaje es intercambiado tal cual es, sin información de tipo incluida, un valor “encoged”,

en cambio, indica que se trata de un mensaje con información de tipos incluida).

� PortType/Interface: el elemento portype fue renombrado en WSDL 2.0 como interface.

Define las operaciones que pueden ser ejecutadas y los mensajes empleados para ejecutar

la operación.

� Binding/Binding: especifica la interfaz, define el estilo de binding SOAP (RPC/Document)

y transporte (protocolo SOAP).

� Port/Endpoint: definido por una combinación binding - dirección de red, a menudo, es

representado mediante un URL HTTP.

� Service/Service: colección de endpoints relacionados que representa el conjunto de las

funciones de sistema que han sido expuestas basadas en los protocolos Web.

WSDL no introduce un lenguaje para la definición de tipos sino que debido a la importancia de

incorporar sistemas de tipos poderosos para describir mensajes a largo plazo soporta XSD

como sistema de tipos canónico y permite utilizar otros lenguajes de definición de tipos vía

extensibilidad.

WSDL introduce extensiones específicas de binding para los siguientes protocolos y

formatos de mensajes: SOAP, HTTP GET/POST y MIME.

Según el W3C, SOAP es un protocolo para intercambiar información estructurada en

entornos descentralizados o distribuidos. Emplea tecnologías XML para definir un marco

extensible de mensajes proporcionando una estructura de mensaje que puede ser

intercambiada sobre una variedad de protocolos de transporte.

Las ventajas que ofrece la especificación SOAP incluyen independencia de cualquier lenguaje

de programación, independencia del protocolo de transporte, independencia de cualquier

infraestructura de objetos distribuidos, utilización de estándares como XML para codificación

de los mensajes y de HTTP y SMTP como protocolos de transporte y permite

interoperabilidad entre múltiples entornos.

75.00 Tesis

30

Aparte de las especificaciones principales de servicios Web (WSDL y SOAP) existen otras

especificaciones que extienden los servicios Web como especificaciones de seguridad,

confiabilidad, transacciones, administración de metadatos y orquestación, las cuales proveen

soluciones basadas en SOA a un nivel de calidad de servicio empresarial en proyectos

corporativos grandes y de misión crítica.

1.5 Servicios Web RESTFul En general, los servicios Web son construidos utilizando SOAP y estándares WS-*29 pero los

servicios Web REST30 prescinden de SOAP y utilizan HTTP y XML [Mandel; 2008]. Cada uno

de estos estilos de arquitectura de servicios Web es ampliamente utilizado por la comunidad

de desarrollo.

REST es un estilo de arquitectura que trata a la Web como una aplicación centrada en

recursos. Los principios de diseño claves de esta arquitectura enuncian que 1) las

aplicaciones RESTFul deben ser stateless, es decir, que cada mensaje HTTP debe contener

toda la información necesaria para procesar una petición. Como resultado, ni el cliente ni el

servidor necesitan recordar ningún estado de las comunicaciones entre mensajes (en la

práctica un número de aplicaciones basadas en HTTP utilizan cookies y otros mecanismos a

fin de mantener el estado de la sesión, algunas de las cuales no son permitidas por REST); 2)

un conjunto de operaciones bien definidas mediante el estilo CRUD31 el cual a su vez utiliza

el amplio rango de verbos HTTP (POST, GET, PUT y DELETE); 3) una sintaxis universal para

identificar recursos (URI) y 4) utilización de hipermedios, explicado a continuación.

El Dr. Roy Fielding acuñó el término REST en la disertación de su Ph.D.32 donde refirió los

hipervínculos como el motor de los estados de la aplicación. Esto significa que para que una

transición pueda tener lugar, ya sea por cambiar el estado de un recurso o por transferir a

otro recurso, un recurso debe contener hipervínculos. Mientras los hipervínculos son

pensados para consumo humano, en general, no son utilizados en XML, los cuales, a su vez,

son pensados para ser procesados por computadora. Los servicios Web REST (al igual que

HTML) reúnen ambas características por utilizar hipervínculos en XML.

29 Se refiere a las especificaciones que extienden los servicios Web: WS-Addressing, WS-Security, WS-Policy, WS-

Transactions, son algunas de ellas. 30

REpresentational State Transfer refiere a una arquitectura de servicios Web basada en recursos 31

Acrónimo para create, read, update y delete. 32 Philosophy Doctor significa Doctorado en investigación. Reconocimiento al doctorando sobre su capacidad de

hacer investigación científica a partir de la presentación de una tesis doctoral que represente una contribución al

menos modesta al conocimiento humano.

75.00 Tesis

31

Capítulo II

Ontología 2.1 Generalidades Un modelo conceptual es la descripción de un dominio de interés (sus conceptos y

relaciones). En el campo de la informática, los modelos conceptuales deben transformarse de

tal manera que puedan almacenarse en la memoria de los ordenadores y permitan aplicar

algoritmos.

El propósito de las ontologías (originarias del campo de la Inteligencia Artificial) se apoya en

proporcionar los modelos conceptuales almacenables y computables. En informática, una

ontología designa la descripción de un dominio mediante un vocabulario común de

representación.

La definición más citada es la de [Gruber; 1993]: “una ontología es una especificación

explícita de una conceptualización”. Una conceptualización es una visión abstracta,

simplificada del mundo. Toda base de conocimiento, utilizada por un sistema o un agente de

conocimiento está vinculada, explícita o implícitamente, a una conceptualización.

Una ontología es un vocabulario controlado que describe de manera formal los objetos y las

relaciones entre ellos, y proporciona una gramática para utilizar los términos del vocabulario

con el fin de expresar algo con significado, dentro del dominio de interés específico. El

vocabulario puede ser empleado para hacer búsquedas y aserciones.

Los compromisos ontológicos acuerdan utilizar el vocabulario de una manera consistente a

fin de compartir conocimiento.

Las ontologías pueden incluir glosarios, taxonomías y diccionarios pero normalmente tienen

mayor expresividad y reglas más estrictas que las anteriores.

Una ontología formal es un vocabulario controlado que se expresa en un lenguaje de

representación de ontologías. Es conveniente aclarar que una ontología formal es una

semántica formal, es decir, describe el significado del conocimiento de manera precisa,

logrando una interpretación única por parte de máquinas y personas, y utiliza lógica de

primer orden o un subconjunto de ella (como la lógica descriptiva). Disponer de una

semántica formal resulta indispensable para implementar sistemas de inferencia o de

razonamiento automático.

Las ontologías son, también, una herramienta para compartir información y conocimiento,

es decir, para conseguir interoperabilidad. Al definir un vocabulario formal de los conceptos

del dominio y un conjunto de las relaciones entre ellos, permiten que las aplicaciones

“comprendan” la información.

75.00 Tesis

32

Por lo general, las ontologías toman la forma de una jerarquía de términos que representan

los conceptos básicos de un determinado dominio. En el entorno de la Web lo usual es

representarlas en formato XML. A diferencia de las ontologías, XML carece de una semántica

que permita razonamiento automático.

Según [Tello; 2001] para representar conocimiento de dominio, las ontologías poseen los

siguientes componentes:

� Conceptos: ideas básicas que se intentan formalizar. Pueden ser clases de objetos,

métodos, planes, estrategias, procesos de razonamiento, etc.

� Relaciones: representan la interacción y enlace entre los conceptos de dominio. Suelen

formar la taxonomía de dominio: “subclase de”, “parte de”, “parte exhaustiva de”,

“conectado a”, etc.

� Funciones: son un tipo concreto de relación donde se identifica un elemento mediante el

cálculo de una función que considera varios elementos de la ontología. Por ejemplo, pueden

aparecer funciones como categorizar clase, asignar fecha, etc.

� Instancias: se utilizan para representar objetos que pertenecen a un concepto

determinado.

� Axiomas: proposiciones que se declaran sobre las relaciones que deben cumplir los

elementos de la ontología. Por ejemplo: “Si A y B son de clase C, entonces A no es subclase

de B”, “Para todo A que cumpla condición C1, A es B”, etc.

Los axiomas, junto a la herencia de conceptos, permiten inferir el conocimiento oculto detrás

de una taxonomía de conceptos.

La Web, vista como una gran fuente de conocimiento, requiere de lenguajes apropiados para

representar ontologías. En este sentido, RDFS soporta algunos aspectos sobre conceptos de

dominio y permite crear, mediante relaciones taxonómicas, una jerarquía. Sin embargo, sirve

mejor como base de lenguajes con mayor expresividad y capacidad de razonamiento. Tello

sostiene que, a fin de potenciar la utilización de ontologías en la Web, se debería disponer de

aplicaciones de búsqueda de ontologías a fin de que los usuarios puedan utilizarlas en sus

sistemas.

La unificación de contenidos semánticos que formalicen conocimiento consensuado y

reutilizable a través de ontologías, conduce a la Web Semántica y, por lo tanto, a ventajas

como el desarrollo de aplicaciones con esquemas de datos compartidos, fomento de

transacciones entre empresas y búsqueda de información por inferencias.

Según [Dickinson; 2009] RDFS es el lenguaje ontológico más débil. Menciona que con RDFS

es posible construir una jerarquía de conceptos y propiedades simples pero no es posible

construir expresiones interesantes. Afirma que RDFS es suficiente para aplicaciones que

sólo necesiten de un vocabulario básico.

Por otro lado, existen ontologías profundas y poco profundas. Las ontologías profundas

requieren de considerables esfuerzos para construir y desarrollar conceptualizaciones y,

75.00 Tesis

33

algunos ejemplos se pueden encontrar en ciencia e ingeniería. Las ontologías poco

profundas, en cambio, comprenden algunas conceptualizaciones que son términos fijos y

que permiten organizar grandes cantidades de datos.

La complejidad asociada a las ontologías profundas ha llevado a buscar diferentes enfoques

como las folksonomías33, las cuales son utilizadas principalmente dentro del contexto de la

Web 2.034.

En el proceso de desarrollo de una ontología, la dificultad real es comprender el problema a

modelar y lograr un acuerdo a nivel comunidad. En esta línea, RDFS y OWL proveen el marco

para formalizar ontologías en un lenguaje específico; el tiempo y la energía necesarias para

aprender y utilizar estos lenguajes es sólo una fracción mínima del tiempo requerido en el

desarrollo de una ontología. Herramientas de desarrollo de ontologías como Protégé o

SWOOP, ocultan la complejidad de sintaxis y permiten al usuario concentrarse en temas de

representación real.

2.2 Folksonomías y ontologías

El término folksonomía deriva de taxonomía y es un neologismo atribuido a Thomas Vander

Wall. Literalmente folksonomía significa “clasificación gestionada por el pueblo”.

Una folksonomía es el resultado del tagging35 de información y objetos36, el cual es personal,

libre y contempla la posterior recuperación de información por parte de otros usuarios. Este

proceso de tagging conduce a un índice de tags que sirve como herramienta de búsqueda y

acceso a otros recursos.

Partiendo de premisas como distribución y desnormalización del trabajo de indización37, una

folksonomía habilita a los usuarios a indizar recursos utilizando cualquier palabra que

deseen. Esta dimensión colectiva y colaborativa le otorga al proceso de tagging el nombre de

indización social. La indización social representaría un nuevo modelo de indización, en el

que los usuarios llevarían a cabo la descripción de los recursos. Una agregación de todas las

descripciones (un mismo recurso sería indizado por numerosos usuarios) daría como

resultado una descripción intersubjetiva y más fiable que la realizada por el autor del recurso

[Navoni y González; 2009].

33

Desarrollado en la siguiente sección. 34 El término es empleado para enfatizar el carácter social de la red. Prácticamente todas las herramientas que

definen la Web 2.0 (blogs, wikis, Flickr, You Tube, RSS, folksonomías, entre otras) son calificadas como software

social a través de las cuales se crean comunidades, se exponen conocimientos de forma abierta y se desarrolla

aprendizaje colaborativo. El poder de la colectividad es completo en los blogs, las wikis, el editor de videos You

Tube, la herramienta para colgar fotos Flickr, el sistema de gestión de favoritos del.icio.us., los cuales, permiten al

usuario añadir valor, elegir, decidir, ser parte activa del proceso de construcción de la red que más que nunca tiene al

usuario en el centro de la escena. A diferencia de la Web 1.0, caracterizada, entre otras cosas, por un usuario receptor

pasivo. 35

Etiquetado realizado en un contexto social 36 Aquí refiere a recursos Web 37

Se refiere a un cambio en los métodos habitualmente aplicados en los procesos de indización. La indización

consiste en registrar los datos ordenadamente, a fin de elaborar un índice con ellos.

75.00 Tesis

34

Las folksonomías tienen a su favor simplicidad en su utilización y posibilidades constantes

de expansión y actualización. Pero presentan problemas de representación de información

en lenguaje natural y no poseen herramientas de control de vocabulario. Hacer uso de esta

opción requiere diseñar sistemas que procuren integrar las folksonomías con los

vocabularios controlados ya existentes de las aplicaciones.

La naturaleza múltiple del tagging y la falta de control de su terminología hacen que las

folksonomías sean incapaces de representar de forma consistente un dominio o contexto

específico y de brindar estructuras sólidas de navegación entre conceptos.

Las ontologías se encuentran en las antípodas de las folksonomías. Las ontologías son

diseñadas por expertos para hacer explícito y unívoco el significado de los documentos

utilizados en la comunicación interpersonal, en las interacciones humano-computadora y

computadora- computadora. Expresan conceptualizaciones formales de un área del

conocimiento a través de conceptos (clases), casos (individuos) y las relaciones entre ellos.

Las ontologías parten de relaciones jerárquicas como base estructural para diseñar un

dominio y van más allá permitiendo definir y modelar libremente relaciones entre conceptos

de un mismo dominio, haciendo explícitas todas las interrelaciones posibles y volviendo

transparente su estructura conceptual. Las ontologías son una representación formal y

explícita de la estructura conceptual del campo sobre el cual se está trabajando, logrando

economizar la codificación de la información al incluir a la herencia38 como mecanismo de

inferencia. Las ontologías funcionan como base de conocimiento de una comunidad (al

contener información sobre áreas, objetos y contextos), pudiendo ser utilizadas en

aplicaciones de representación y recuperación de información como estructuras de

navegación interconceptual para indizar o buscar información.

Las ontologías y las folksonomías presentan características complementarias que, explotadas

de manera conveniente, pueden generar sinergias productoras de más valor mediante apoyo

mutuo y suma de ventajas.

Las aplicaciones basadas en folksonomías se benefician de su naturaleza dinámica y

extensible y, de su potencial para canalizar la colaboración entre usuarios (por habilitar

mecanismos sencillos de indización).

Las aplicaciones basadas en ontologías explotan su rigor y son capaces de ofrecer una

estructura de conocimiento bien definida, respuestas basadas en razonamiento lógico y el

formalismo necesario para el back-end de la aplicación.

Como alternativa, las folksonomías pueden ser enriquecidas con ontologías aplicándolas en

el backstage39 del tagging social a fin de realizar recomendaciones por tags relacionados

explícita e implícitamente. Otra alternativa es utilizar las ontologías como mecanismo de

38 Los conceptos superiores transmiten sus características a los conceptos inferiores. 39

“Detrás de escena”. Se refiere a una implementación que ofrezca sugerencias de tagging o asista en las búsquedas

al usuario.

75.00 Tesis

35

ampliación de consultas, por medio de tags relacionados, dentro de las plataformas del tagging

social.

De la misma manera, las ontologías pueden ser enriquecidas con folksonomías, brindando

información acerca del vocabulario empleado en el tagging de documentos y, por lo tanto,

capturando el lenguaje de uso actual, ayudando a actualizar los sistemas existentes y a evaluar

la oportunidad, perceptibilidad e idoneidad de un sistema de representación de conocimiento

diseñado por profesionales. Los términos de la folksonomía pueden, de esta forma, utilizarse

como sugerencias para nuevos términos (conceptos o individuos) controlados.

El tagging, a escala Web es un desarrollo novedoso como fuente potencial de metadatos y

posibilita que las folksonomías puedan emerger como una variante de búsqueda por

palabras claves en el proceso de recuperación de información [Berners-Lee et al.; 2006].

Pero mientras las ontologías son definidas siguiendo un proceso cuidadoso, explícito, de

inferencia lógica y sin ambigüedades, los tags, por el contrario, son definidos siguiendo un

proceso arbitrario, implícito, de inferencia estadística y con la presencia de ambigüedades.

2.3 Lógica y ontologías Los términos lógica de predicados, lógica descriptiva o lógica son utilizados frecuentemente

cuando se trata la Web Semántica o alguna de sus partes, como las ontologías. En esta sección

se expone en qué consisten y la utilidad que brindan en este contexto.

Para las máquinas actuales, el término “comprender” no debe entenderse en el sentido de la

comprensión humana40 sino en el de inferir, deducir. Las máquinas son capaces de inferir

conclusiones a partir de datos mediante procesos lógico-matemáticos. Estos datos

incorporan información en los documentos en la forma de metadatos y por medio de un

lenguaje formal41, posibilitando que las máquinas puedan procesar la información mediante

la aplicación de reglas lógicas y seguidamente extraer inferencias lógicas.

Según [Abián; 2005] la Lógica resulta de suma relevancia en la Web Semántica por tres

motivos, a saber: 1) permite desarrollar lenguajes formales para representar conocimiento;

2) proporciona semánticas bien definidas42; 3) proporciona reglas de inferencia a partir de

las cuales se pueden extraer consecuencias del conocimiento. Lo que se conoce como

“interpretación semántica automática de documentos” no pasa de ser la aplicación de reglas

lógicas a datos presentados en algún lenguaje formal (como OWL o DAML+OIL).

Los lenguajes formales (OWL o DAML+OIL) se basan en lógica descriptiva. La lógica

descriptiva proporciona un formulismo para representar y expresar conocimiento humano,

basándose en métodos de razonamiento bien establecidos y procedentes de un subconjunto

de la lógica de predicados o lógica de primer orden43. Los lenguajes naturales no resultan ser

los más apropiados para expresar conceptos sin ambigüedad. Con la lógica que hay detrás de

los lenguajes de la Web Semántica, las máquinas pueden realizar inferencias de manera

40 Asociación automática entre los símbolos y los conceptos que realiza el cerebro humano a partir de la

información almacenada a lo largo de la vida de una persona. 41 Lenguaje lógico y axiomático o lenguaje de representación de conocimiento. 42

Se refiere a un sistema lógico donde cada símbolo y cada expresión tiene un significado único y preciso 43

Más conocido en inglés como First Order Logic o FOL.

75.00 Tesis

36

similar a los humanos, y justificarlas. Los usuarios de la Web Semántica no tienen que

preocuparse por conocer la lógica formal de los lenguajes, sino modelar mediante dichos

lenguajes, las áreas de conocimiento de interés; luego, los lenguajes realizarán las inferencias

correspondientes a los datos introducidos.

La lógica de primer orden permite establecer formalmente sentencias sobre cosas y

colecciones de cosas, sus tipos y propiedades, y también, clasificarlas y describirlas.

En la lógica de primer orden, cada sentencia se divide en un sujeto y un predicado, donde el

predicado modifica o define las propiedades del sujeto. En ésta lógica, los predicados siempre

se refieren a individuos u objetos y los cuantificadores (∀ para todo, ∃ existe) sólo se

permiten para individuos. Las sentencias se expresan en la forma R(x), donde R es el

predicado y x es el sujeto, formulado como variable. R(x) es una función proposicional; estas

funciones se convierten en proposiciones sujeto-predicado cuando se asignan valores a sus

predicados. Por ejemplo, “Todos los hombres son débiles” se expresa en lógica de primer

orden:

∀x: P(x) -> M(x)

Donde P representa el predicado “es hombre” y M representa el predicado “es débil”. Por las

reglas del modus ponens, un sujeto Adán por ser hombre es débil

P(Adán) - > M(Adán)

Ciertos subconjuntos de la lógica de primer orden, especializados en clasificar cosas, se

denominan lógicas descriptivas. Si bien las lógicas descriptivas carecen de la potencia

expresiva de la LPO44 (no pueden expresar tantas cosas como ésta) son matemáticamente

trazables y computables.

2.4 Aplicaciones Una de las áreas de aplicación más prominente de las ontologías es la medicina y ciencias de

la vida, entre las que se destacan las ontologías “Systematized Nomenclature of Medicine

Clinical Terms (SNOMED CT)”45, GALEN46, el “Foundational Modelo of Anatomy (FMA)”47, el

“National Cancer Institute (NCI) Thesaurus”48 y el OBO Foundry49. Todas en OWL. Este tipo

de ontologías están reemplazando gradualmente a los clasificadores médicos existentes por

plataformas que reúnen y comparten conocimiento médico. Por capturar los registros

médicos empleando ontologías se reduce la posibilidad de errores de interpretación en los

datos y posibilita el intercambio de información entre diferentes aplicaciones e institutos.

El W3C afirma que las ontologías pueden mejorar las aplicaciones Web existentes y abrir

nuevos usos de la Web y describe seis casos de aplicación los cuales son desarrollados a

continuación:

44 Lógica de primer orden. 45

http://www.birncommunity.org 46

http://www.opengalen.org/ 47 http://sig.biostr.washington.edu/projects/fm/index.html 48

http://www.cancer.gov/ 49

http://www.obofoundry.org/

75.00 Tesis

37

El primer caso de aplicación es un portal Web. Un portal Web es un sitio con información

sobre algún tema en especial. Las personas interesadas en un determinado tema pueden

recibir noticias, participar de una comunidad o seguir enlaces a otros recursos de interés.

Para que un portal Web sea útil debe tener un punto de partida que describa el contenido

interesante del sitio. Habitualmente, el contenido es subido por miembros de la comunidad

y agrupado mediante tagging 50 o indizado bajo algún subtema de interés. No obstante, la

indización puede carecer de la habilidad requerida para la búsqueda. Para permitir una

agrupación más inteligente, los sitios Web pueden definir una ontología acorde con la

comunidad y realizar inferencias para obtener resultados imposibles en los sistemas

convencionales actuales. Esta técnica requiere un lenguaje de ontología que posibilite

capturar relaciones con alta calidad (mayor detalle). Un ejemplo de un portal basado en

ontología es OntoWeb51.

El segundo caso de aplicación corresponde a las colecciones multimedia. Las ontologías

pueden proveer de anotaciones semánticas a las colecciones de imágenes, audio u otros

objetos no textuales. Para los ordenadores es más difícil extraer significado semántico de la

multimedia que del texto. Estos recursos son indizados mediante captions52 o metatags53.

Las ontologías, idealmente capturarían el conocimiento adicional acerca del dominio para

mejorar la recuperación de imágenes.

El tercer caso de aplicación es sobre la administración de un sitio Web corporativo. Las

corporaciones tienen varias páginas Web concernientes a comunicados de prensa, ofertas

de productos, estudios de casos, procedimientos corporativos, white-papers, etc. Las

ontologías pueden ser utilizadas para indizar estos documentos y prestar mejores medios

de recuperación. Las corporaciones emplean taxonomías para organizar la información, las

cuales resultan insuficientes dado que las categorías constitutivas quedan restringidas a la

representación de un dominio. La habilidad de trabajar con múltiples ontologías haría a las

descripciones más completas y las búsquedas por parámetros serían más útiles que las

búsquedas por palabras claves con taxonomías.

El cuarto caso de aplicación tiene relación con la documentación empleada en ingeniería.

Los documentos sobre diseño, por ejemplo, tienen una estructura diferente a los

documentos de testing o a los documentos de producción. La definición y descripción

completa de algún ítem dado es obtenida por seguir la traza de los documentos

relacionados. Las ontologías servirían para construir un modelo de información que

permitiría la exploración del espacio de información (en términos de representación,

asociación y propiedades de ítems), con enlaces a las descripciones y definiciones de ítems

a fin de conseguir la documentación completa. Esto significa que las ontologías y

taxonomías no son independientes de los ítems físicos que representan pero pueden ser

desarrolladas/exploradas en tándems. Este tipo de ontologías también podrían ser

utilizadas para la visualización y edición de gráficos las cuales mostrarían capturas del

espacio de información, sobre un concepto en particular (diagramas de actividades, reglas

o diagramas de entidad-relación).

50 Desarrollado en la sección 2.2 “Folksonomías y ontologías”. 51 http://www.ontoweb.org/ 52

Títulos 53

Tags sobre los tags

75.00 Tesis

38

El quinto caso de aplicación describe un escenario con agentes y servicios. La Web

Semántica provee agentes con la capacidad de comprender e integrar diversos recursos de

información. Un ejemplo es un planificador de actividades sociales que toma las preferencias

del usuario (tipos de películas, tipo de comidas, etc.) para planear una salida. La tarea de

planificar las actividades depende de la variedad del entorno de servicios ofrecidos y de las

necesidades del usuario. Durante el proceso de búsqueda se pueden consultar comentarios y

tarifas de servicios a fin de encontrar aquellos que mejor se ajusten a las preferencias del

usuario. Este tipo de agente requiere ontologías de dominio que representen los términos

relacionados a restaurantes, hoteles, etc. y ontologías de servicios con términos relacionados

a servicios reales, permitiendo capturar información interesante para el usuario. Tal

información puede ser provista por un número de fuentes, como portales, sitios de servicios,

sitios de reservas y la Web en general.

En un escenario como el descripto es necesario resolver cuestiones relacionadas con:

� Uso e integración de múltiples ontologías separadas a través de diferentes dominios y

servicios,

� Ubicación distribuida de ontologías a través de Internet,

� Ontologías potencialmente diferentes para cada dominio o servicio (traslación de

ontologías/referencias cruzadas),

� Representación simple de ontologías.

El sexto caso de aplicación es sobre ubiquitous computing54 El ubiquitous computing es un

paradigma emergente del “personal computing”55, caracterizado por desplazar la

capacidad de procesamiento de los ordenadores al entorno cotidiano de las personas.

Dispositivos de procesamiento pequeños, wireless y de mano son ejemplos de “ubiquitous

computing”. La naturaleza wireless y ubicua de estos dispositivos requieren arquitecturas

de red que soporten configuración automática y ad-hoc a fin de simplificar al usuario el

manejo de los mismos.

Una tecnología clave de las redes ad-hoc es el descubrimiento de servicios (funciones

ofrecidas a dispositivos como teléfonos celulares, impresoras, etc.). El descubrimiento de

servicios y los mecanismos de descripción de capacidades están basados en esquemas de

representación ad-hoc y dependen fuertemente de la estandarización. El objetivo que

persigue ubiquitous computing es la interoperabilidad fortuita, es decir, que dispositivos

que no fueron necesariamente diseñados para trabajar juntos (por ser construidos con

diferentes propósitos, por diferentes fabricantes, en diferentes tiempos, etc.) puedan

descubrir y tomar ventaja de la funcionalidad del otro. Los escenarios ubiquitous

computing involucran un número considerable de dispositivos y, llevar a cabo una

estandarización a priori, de los casos de aplicación, sería una tarea inmanejable. Por eso

comprender otros dispositivos y razonar acerca de sus servicios/funcionalidad se vuelve

indispensable. Los escenarios de interoperación son dinámicos por naturaleza (los

dispositivos aparecen y desaparecen en cualquier momento debido al movimiento de los

propietarios). Las tareas en la utilización de servicios involucran descubrimiento,

contratación y composición. Un contrato de servicios requiere representar información

sobre seguridad, privacidad, confianza y detalles relacionados a la compensación de

servicios.

54

Computación ubicua. Ubicua denota lo que esta presente al mismo tiempo y en todas partes. Omnipresente. 55

Computación personal.

75.00 Tesis

39

En este contexto, un lenguaje de ontología podría ser de utilidad en la descripción de las

características, los medios de acceso, las políticas de uso de los dispositivos y demás

restricciones técnicas y los requerimientos que afecten incorporar un nuevo dispositivo en

una red ubiquitous computing.

2.5 Lenguajes ontológicos

2.5.1 RDF 2.5.1.1 Conceptos Básicos Según el W3C, el Resource Framework Description (RDF) es un lenguaje para representar

recursos Web56, apoyándose en ideas de Inteligencia Artificial, grafos conceptuales y de

representación de conocimiento basado en lógica, entre otras y, cuyo objetivo radica en

especificar datos en XML de manera estandarizada a fin de posibilitar interoperabilidad.

Debido a su carácter general, también puede ser utilizado para representar datos

simplemente.

Según [Dickinson; 2009] es un lenguaje ontológico débil que permite construir jerarquías de

conceptos y propiedades siendo suficiente para aplicaciones que sólo necesitan establecer un

vocabulario básico. [Abián; 2005] prefiere definir que si bien RDF es un modelo de

representación de metadatos puede utilizarse como lenguaje general para la representación

del conocimiento.

En RDF, la construcción básica es la tripla (sujeto, propiedad, objeto). Toda tripla RDF

corresponde a una sentencia RDF: la parte que identifica a qué se refiere la sentencia es el

sujeto; la parte que identifica la característica del sujeto es la propiedad o predicado y la parte

que identifica el valor de la propiedad es el objeto.

Los sujetos, las propiedades y los objetos son recursos. Los recursos con los que trabaja RDF

no son necesariamente recursos presentes en la Web. En general, un recurso RDF es

cualquier cosa con identidad. Para identificarlos se recurre a URIs57.

Los URIs no tiene significado por sí mismos: son identificadores y la persona u organización

que los crea se responsabiliza de otorgarles significado. Un concepto puede tener asociados

diferentes URIs. Dos empresas pueden asignar un significado distinto a una propiedad y

utilizar para ello dos URIs distintos. Dos o más recursos pueden utilizar el mismo URI,

reflejando una comprensión compartida de un concepto.

56

Los recursos Web refieren aquí a dispositivos físicos (impresoras, ordenadores, agendas electrónicas) o estructuras

de datos de software (páginas web, imágenes, videos, directorios) accesibles a través de una red. 57

Uniform Resource Identifier o identificador uniforme de recurso. La principal diferencia con URL es que el

URI no se limita a identificar entidades con localizaciones en la Web o accesibles mediante aplicaciones

informáticas. Cualquier organización o persona puede crear sus URIs y utilizarlos para trabajar con sus

dominios de interés. Frente a URL, el URI permite referirse a un mismo recurso ubicado en distinta

localizaciones.

75.00 Tesis

40

Las triplas RDF pueden representarse en forma gráfica mediante grafos (los nodos

corresponden a recursos y los arcos a propiedades) o en formato RDF/XML (representación

XML de RDF). La ventaja de utilizar este último estriba en poder reutilizar todas las

herramientas existentes para XML (analizadores sintácticos, transformaciones XSLT,

representaciones en memoria de objetos XML mediante DOM/SAX, etc.). Es oportuno aclarar

que RDF no está ligado a XML; se puede utilizar otra representación para RDF, sin que ello

produzca cambios en la sintaxis de triplas y su semántica.

Cada persona u organización puede definir su propio vocabulario mediante un esquema RDF

llamado RDFS (RDF Schema). Un esquema permite comprobar si un conjunto de triplas RDF

es válido para el esquema o no (comprobar si las propiedades aplicadas a los recursos son

correctas y si los valores vinculados a las propiedades tienen sentido). RDFS permite controlar

la validez de los valores y restringir las entidades a las cuales pueden aplicarse ciertas

propiedades.

El modelo de metadatos que RDFS permite expresar coincide con el de los lenguajes de

programación orientada a objetos pues permite expresar clases e instancias. Cabe señalar

que las propiedades definidas en RDFS son globales; esto es, no están encapsuladas como

atributos en las definiciones de clases. A diferencia de lo que ocurre en LOO58, RDFS permite

asignar a una clase, sin modificarla, nuevas propiedades.

Las restricciones que RDFS introduce son análogas a las empleadas en lenguajes OO con

tipos.

Tabla Clases RDF predeterminadas Clase Descripción rdfs:type Subclase de

rdfs:Class Clase de todas las clases. Equivalente al

concepto de clase en LOO

rdfs:Class

rdfs:Resource Toda cosa descripta por RDF es un recurso

e instancia de rdfs:Resource

rdfs:Class

rdfs:Literal Clase para los literales rdfs:Class rdfs:Resource

rdfs:Datatype Clase para los literales tipados como

Datatype

rdfs:Class rdfs:Literal

rdf:XMLLiteral Clase para XML literal rdfs:Datatype rdfs:Literal

rdf:Property Clase para las propiedades RDF rdfs:Class

rdf:Statement Clase para representar un statement RDF. rdfs:Class

rdfs:Container Clase para representar contenedores. rdfs:Class

rdf:Bag Clase para indicar un contenedor sin orden rdfs:Class rdfs:Container

rdf:Seq Clase para indicar un contenedor con

orden

rdfs:Class rdfs:Container

rdf:Alt Clase para indicar un contenedor donde

sólo se elige uno de los miembros. La

elección por defecto es el valor de la

property rdf:_1

rdfs:Class rdfs:Container

rdf:List Clase para construir listas y otras

estructuras

rdfs:Class

[Brickley y McBride; 2004]. Fragmento del vocabulario de clases de RDF Schema

recomendado por el W3C.

58

Lenguajes orientados a objetos.

75.00 Tesis

41

Una propiedad es un recurso que permite caracterizar clases y establece una relación entre

dos recursos, sujeto y objeto, constituyendo el primero su dominio y el segundo su rango.

Tabla Properties RDF predeterminadas

Property Descripción rdfs:type rdfs:domain rdfs:range rdfs:range Rango de clases válidas

que acepta una propiedad

rdf:Property rdf:Property rdfs:Class

rdfs:domain Dominio de clases válidas

sobre el que se aplica una

propiedad

rdf:Property rdf:Property rdfs:Class

rdfs:type De que clase es instancia un recurso

rdf:Property rdfs:Resource rdfs:Class

rdfs:subClassOf Los recursos instancias de

una clase son instancias

de otra. Transitiva

rdf:Property rdfs:Class rdfs:Class

rdfs:subPropertyOf Los recursos instancias de

una propiedad son

instancias de otra.

Transitiva

rdf:Property rdf:Property rdf:Property

rdfs:label Versión legible del

nombre de rdf:subject.

rdf:Property rdfs:Resource rdfs:Literal

rdfs:comment versión legible de un

recurso

rdf:Property rdfs:Resource rdfs:Literal

rdf:subject Sujeto de una tripla RDF. rdf:Property rdf:Statement rdfs:Resource

rdf:predicate Predicado de una tripla

RDF.

rdf:Property rdf:Statement rdfs:Resource

rdf:object Objeto de una tripla RDF. rdf:Property rdf:Statement rdfs:Resource

rdfs:seeAlso Información adicional

acerca de rdf:subject.

rdf:Property rdfs:Resource rdfs:Resource

rdfs:member Super-property de todas

las properties miembro

del contenedor

rdf:Property rdfs:Resource rdfs:Resource

rdfs:ContainerMem

bershipProperty

Tiene como instancias las

propiedades rdf:_1, rdf:_2, rdf:_n. Establece que un

recurso es miembro de

un contenedor. Es

subpropiedad de

rdfs:member y subclase

de rdf:Property

rdf:Property rdfs:Resource rdfs:Resource

rdf:first Primer ítem de una lista

RDF

rdf:Property rdf:List rdfs:Resource

rdf:rest resto de una lista RDF rdf:Property rdf:List rdf:List

rdf:nil denota una lista vacía rdf:Property

[Brickley y McBride; 2004]. Fragmento del vocabulario de propiedades de RDF Schema

Recomendado por el W3C

Las definiciones de propiedades son independientes de las definiciones de clases y, por

defecto, son de alcance global (no restringidas a clases). Como consecuencia, no es posible

definir una propiedad con diferentes rangos según sea la clase a la que es aplicada.

RDF puede brindar descripciones adicionales por medio de esquemas pero no prescribe

cómo una aplicación debería tratar con las descripciones. Los statements en RDFS son

75.00 Tesis

42

siempre descripciones. Pueden ser prescriptivos (introducir restricciones) sólo si a la

aplicación que los interpreta es requerida tratarlos de ese modo. Todo lo que RDFS hace es

proveer información adicional.

RDF es utilizado como base para lenguajes más expresivos como DAM+OIL o DAML y OWL.

En resumen RDFS proporciona clases, jerarquías de clases, propiedades, jerarquías de

propiedades y restricciones sobre dominios y rangos.

La semántica de RDF y RDFS es expresada mediante lógica de predicados59, un lenguaje

formal que resulta conveniente a fin de evitar ambigüedades y hacer la semántica

“comprensible” a las máquinas, proporcionando una base firme para razonamiento

automático.

Por eficacia computacional, la semántica de RDF y RDFS es expresada mediante triplas. La

semántica en RDF y RDFS incluye un sistema de inferencia robusto y completo. Las reglas del

sistema de inferencia son de la forma if-then y permiten a una máquina realizar deducciones.

En situaciones con cientos, miles de clases, subclases, instancias, propiedades y

subpropiedades resultará apreciable la verdadera potencia de la interpretación semántica

automática, la cual permitirá extraer deducciones escondidas entre avalanchas de datos,

aparentemente inconexos.

¿Es posible construir la Web Semántica con la interoperabilidad sintáctica que provee XML y

la interoperabilidad semántica que presta RDFS?

La respuesta a este interrogante es no, no es posible debido a las carencias que RDFS posee:

� No es posible declarar restricciones de rango que sean válidas sólo para algunas clases;

� No es posible representar ciertas características de las propiedades (propiedades

transitivas, simétricas, inversas o funcionales);

� No es posible reflejar clases disjuntas;

� No permite expresar restricciones de cardinalidad (cantidad de valores que puede tomar

una propiedad);

� Existen expresiones cuya semántica no es la estándar (es decir que no pueden expresarse

mediante lógica de primer orden) provocando que dado un sistema de axiomas no se

pueda afirmar o negar nada.

RDFS no es completo para describir los recursos de la Web con el detalle que se requiere. Se lo

59 Desarrollado en la sección 2.3 “Lógica y ontologías”

75.00 Tesis

43

utiliza porque es tan general que puede emplearse en muchos dominios y porque sirve como

puente entre vocabularios diferentes.

2.5.1.2 RDF y la ambigüedad semántica XML ¿Por qué se recurre a RDF para describir recursos y no a XML? Antes de responder es

conveniente recordar para qué sirve XML.

XML es un lenguaje de marcado para documentos de toda clase. Permite al programador

definir una gramática por medio de un DTD60 o XML-Schema utilizando etiquetas

(metadatos) en todas sus combinaciones posibles y, por medio, de un analizador de sintaxis

comprobar si el documento cumple con la gramática definida (si es un documento XML

válido).

XML es un gran paso hacia la interoperabilidad sintáctica. Cualquier documento y tipo de

dato puede expresarse como un documento XML. Los datos son definidos en forma

independiente del lenguaje de programación o plataforma utilizada convirtiéndolo en un

formato universal para el intercambio de datos. Entre sus ventajas cabe señalar:

� Un documento XML es autodescriptivo, almacena datos y la estructura de éstos y por ser

de fácil procesamiento en un medio para compartir documentos entre personas y empresas.

� Un documento XML es customizable. Permite a una empresa desarrollar los DTDs (o XML-

Schema) de los documentos de negocios (facturas, pedidos, órdenes de producción…) y

realizar sus operaciones con clientes y proveedores a través de los documentos XML

conforme a los DTDs o (o XML-Schema) desarrollados.

� La estructura de los documentos XML puede comprobarse automáticamente, de manera de

rechazar aquellos documentos que no estén construidos de acuerdo a los DTDs o XML-

Schema exigidos. Si dos empresas trabajan con un conjunto común de DTDs, XML-

Schema, pueden analizar cualquier documento que una vaya a enviar a la otra y evitar el

envío de documentos incorrectos.

� Un documento XML se basa en texto ordinario y lo hace idóneo para ser transportado a

través de Internet, donde conviven muchas plataformas y sistemas informáticos, cada una

con sus propios formatos de archivos.

� El juego de caracteres predefinido para XML es UNICODE. Esto permite crear documentos

XML internacionalizables (en cualquier lenguajes humano).

� XML ha tenido un enorme impacto sobre las tecnologías de las empresas IT. Se ha

convertido en el formato universal para el intercambio de datos entre organizaciones

públicas y privadas; ha modificado radicalmente el panorama de las transacciones B2B61

(productos compatibles con especificaciones XML para el intercambio comercial

desarrollados por organizaciones como OASIS62, ebXML63, RosettaNet64, etc.), ha logrado

60 Document Type Definition 61

Para denotar el origen y destino de una actividad comercial entre empresas, diferente al B2C. 62

Organization for the Advancement of Structured Information Standards 63

Electronic Business using eXtensible Markup Language. Conjunto modular de especificaciones que posibilita a

las empresas realizar negocios en Internet. http://www.ebxml.org/ 64

Define estándares para la cadena de suministro global, los cuales permiten la automatización de procesos de

negocios. http://www.rosettanet.org/

75.00 Tesis

44

imponerse como solución para la integración de aplicaciones, sistemas y bases de datos;

se ha introducido como parte clave de las plataformas de software más difundidas (J2EE y

.NET); ha liberado a las empresas de desarrollar en una plataforma determinada al

permitir desarrollar servicios Web, los cuales al emplear XML son independientes de la

plataforma; la mayor parte de los sistemas de gestión de bases de datos relacionales lo ha

incorporado a sus productos y también ha tenido gran impacto en el desarrollo de portales

(distintos portales pueden tener un mismo esqueleto XML y distintas presentaciones en

XSLT65 lo que reduce el trabajo de realizar cambios en el front-end).

A pesar de las ventajas señaladas, XML no incorpora mecanismos para garantizar

interoperabilidad semántica y, en consecuencia, ofrecer una interoperabilidad completa.

Las estadísticas muestran que en Europa el 20-30% de los gastos relacionados con el

comercio electrónico deriva de la falta de interoperabilidad semántica [Abián; 2005]. Este

gasto se debe a que, aunque los SI66 empresariales utilicen las mismas tecnologías (por

ejemplo XML para describir los datos), el significado de sus modelos de negocios suele diferir.

Nociones habituales como “pedido” o “cliente” pueden significar cosas muy distintas, en cada

empresa. Como consecuencia el intercambio de información entre empresas, en el mejor de

los casos, resulta en un proceso semi-manual. La principal dificultad a la que se enfrenta el

modelado empresarial reside en traducir los objetos de negocio de una empresa a los de otras

y viceversa. Sin esa traducción, la integración automática de los SI de las empresas que

forman parte de una misma cadena de aprovisionamiento resulta imposible sin un

entendimiento común.

Con XML es posible realizar la especificación del formato y la estructura de cualquier

documento pero no impone ninguna interpretación semántica acerca de esos datos. En

consecuencia, desde el punto de vista semántico, XML resulta inútil: dado un documento XML

no es posible reconocer en él los objetos y relaciones de un dominio de interés.

El marcado de los documentos XML es efectuado por medio de metadatos. Cuando una

persona lee un DTD, puede extraer la semántica prestando atención a los nombres de los

elementos o a los comentarios que figuran en él, interpretando semánticamente el DTD. Por

el contrario, para un programa que procesa los documentos XML, las etiquetas, por sí solas,

no tienen significado alguno.

Volviendo al planteo que abrió esta sección, cabe responder que XML no es apropiado para

incluir semántica desde que el modelo de datos de un dominio puede ser representado por

diferentes DTDs (o XML Schema) y, al mismo tiempo, un DTD (o XML Schema) puede

representar varios modelos de datos distintos. En cambio, RDFS proporciona una

representación única de un modelo de datos, al considerar la semántica de los datos.

Pese a la similitud entre los términos “esquema RDF” (RDFS) y “esquema XML” (XML

Schema), sus significados son muy distintos. Los esquemas XML, al igual que los DTD,

especifican el orden y las combinaciones de etiquetas que son aceptables en un documento

65

Stylesheet Language Transformation, transformación del lenguaje de hojas de estilo. 66

Sistema de información

75.00 Tesis

45

XML. En cambio, los esquemas RDF especifican qué interpretación hay que dar a las

sentencias de un modelo de datos RDF; es más, dejan libre la representación sintáctica del

modelo.

Los esquemas XML modelan datos expresados en XML mientras que los esquemas RDF

(RDFS) modelan conocimiento o dicho de otra manera: XML y los esquemas XML son un

lenguaje de modelado de datos y RDF y RDFS son un lenguaje de modelado de metadatos.

2.5.2 OWL 2.5.2.1 Conceptos Básicos El Ontology Web Language (OWL) es una especificación de lenguaje desarrollado por el W3C

para describir ontologías, es decir, representar el significado y las relaciones de términos en

vocabularios de manera que la información contenida en los documentos pueda ser

procesada por aplicaciones.

Es una extensión de RDFS y mantiene una buena relación entre eficacia computacional y

poder expresivo.

A continuación, las tablas muestran algunos de los términos del vocabulario OWL empleados

en la descripción de clases, object-properties, data-properties y properties-restriction

respectivamente. [Hebeler et al.; 2009].

Tabla términos OWL para describir clases

Clase Descripción owl:equivalentClass Relación que especifica que las extensiones de dos clases son equivalentes

owl:Thing Clase de todos los individuos

owl:OneOf La pertenencia a la clase está limitada a los miembros especificados en la

colección de individuos

owl:intersectionOf Los miembros de esta clase son miembros de todas las clases especificadas

owl:unionOf Los miembros de esta clase son miembros de al menos alguna de las clases especificadas

owl:complementOf Los miembros de esta clase no son miembros de la clase especificada

owl:disjointWith Relación que establece que los miembros de las dos clases especificadas no comparten individuos

owl:AllDisjointClasses Una clase utilizada con owl:members para especificar un conjunto de clases

que son disjuntas por pares

owl:disjointUnionOf Una relación que especifica que esta clase es la unión del conjunto de clases

especificadas las cuales son disjuntas por pares

owl:Restriction La clase de todas las restricciones

75.00 Tesis

46

Tabla términos OWL para describir object-properties

Object-Property Descripción owl:objectProperty La clase de todas las propiedades que relacionan dos individuos owl:DataProperty La clase de todas las propiedades que relacionan un individuo con un valor

literal

owl:topObjectProperty Propiedad que conecta todos los posibles pares de individuos

owl:bottomObjectProperty Propiedad que no conecta pares de individuos

owl:topDataProperty Propiedad que conecta todos los posibles individuos con todos los posibles

literales

owl:bottomDataProperty Propiedad que no conecta ningún individuo con un literal

owl:SymmetricProperty La clase de todas las propiedades que son simétricas. Para todas las

propiedades simétricas p, el statement (A p B) implica la existencia del

statement (B p A)

owl:AsymmetricProperty La clase de todas las propiedades que son explícitamente no simétricas. Para

todas las propiedades asimétricas p, el statement (A p B) implica la no

existencia del statement (B p A)

owl:equivalentProperty Propiedad que especifica que dos propiedades son equivalentes

owl:ReflexiveProperty La clase de todas las propiedades que son reflexivas. Para todas las

propiedades reflexivas p y los individuos A, A esta relacionado a sí mismo

por p (A p A)

owl:IrreflexiveProperty La clase de todas las propiedades que no son reflexivas. Para todas las

propiedades irreflexivas p y los individuos A, no existe un statement p (A p

A)

owl:TransitiveProperty La clase de todas las propiedades que son transitivas. Para todas las

propiedades transitivas p, (A p B) y (B p C) implica (A p C)

owl:FunctionalProperty La clase de todas las propiedades para las cuales un valor de dominio dado

tiene sólo un valor de rango

owl:InverseFunctionalProperty La clase de todas las propiedades para las cuales un valor de rango dado tiene

sólo un valor de dominio

owl:inverseOf Propiedad que especifica que dos propiedades son una la inversa de la otra.

Si una propiedad p1 es la inversa de una propiedad p2, la existencia de un

statement (A p1 B) implica la existencia del statement (B p2 A)

owl:propertyChain Propiedad que es utilizada para construir una cadena de propiedades que representa la superproperty en una relación subproperty-of

Owl:propertyDisjointWith Relación que establece que dos propiedades son disjuntas. Si dos

propiedades p1 y p2 son disjuntas, implica que dos statements con el

mismo sujeto y objeto no pueden tener los predicados p1 y p2

owl:AllDisjointProperties Una clase que es utilizada con owl:members para describir colecciones de

propiedades que son disjuntas por pares.

Tabla términos OWL para describir data-properties

Data-Property Descripción owl:onDataType Propiedad que identifica el datatype al cual se aplican las restricciones

owl:intersectionOf Propiedad que identifica un conjunto de datatypes tal que el datatype

descripto contiene los valores contenidos en todos los datatypes del

conjunto

owl:unionOf Propiedad que identifica un conjunto de datatypes tal que el datatype

descripto contiene algún valor que está contenido en al menos uno de los

datatypes del conjunto

owl:oneOf Propiedad que identifica un conjunto de valores que conforman al datatype

owl:datatypeComplementOf Propiedad que especifica que el datatype descripto contiene todos los

valores que no están en el datatype que la propiedad identifica

Una property-restriction describe a la clase de individuos que cumplen con las condiciones

especificadas sobre la propiedad. La restricción es declarada empleando la construcción

75.00 Tesis

47

owlRestriction y la propiedad a la cual refiere la restricción es identificada utilizando la

propiedad owl:onProperty. Las restricciones son relacionadas a clases utilizando

rdfs:subclassOf o owl:equivalentClass.

Tabla términos OWL para describir property resctriction

Property Restrictions Descripción owl:onProperty Propiedad que identifica la propiedad a la cual la restricción aplica

owl:allValuesFrom Propiedad que especifica que todas las instancias en esta clase deben tener

valores solo del rango especificado para la propiedad

owl:someValuesFrom Propiedad que especifica que todas las instancias en esta clase deben tener

al menos una propiedad con un valor del rango especificado

owl:hasValue Propiedad que especifica que todas las instancias de esta clase deben tener

el valor especificado por la propiedad

owl:minCardinality Propiedad que especifica que debe haber al menos N de las propiedades

especificadas sobre cada instancia de esta clase

owl:maxCardinality Propiedad que especifica que debe haber a lo sumo N de las propiedades

especificadas sobre cada instancia de esta clase

owl:cardinality Propiedad que especifica que debe haber exactamente N de las propiedades

especificadas sobre cada instancia de esta clase

Además OWL dispone de los siguientes términos para individuos:

� owl:sameAs: relación que especifica que dos individuos son el mismo individuo;

� owl:differentFrom: relación que especifica que dos individuos no son el mismo individuo;

� owl:AllDifferent: una clase utilizada con owl:distinctMembers para definir una colección

de individuos que son diferentes por pares.

Como puede observarse, OWL tiene mucha más capacidad expresiva que RDFS. OWL facilita

la importación y exportación de clases por medio de propiedades como sameAs,

equivalentClass, equivalentProperty, differentFrom, etc.

OWL soporta una sintaxis abstracta (independiente de cualquier representación

computacional), una basada en XML y otra basada en RDF.

La primera versión de la especificación fue OWL 1 (también conocida como OWL), la cual fue

aprobada por el W3C en el año 2004. La segunda fue OWL 2, aprobada en el año 2009 con el

agregado de nuevas características mientras mantiene compatibilidad con la anterior.

OWL tiene más facilidades para expresar significado y semántica que XML, RDF y RDF-S:

� XML: provee una base sintáctica para documentos estructurados aunque no impone

restricciones semánticas en el significado de esos documentos

� XML Schema: extiende XML con datatypes y provee un lenguaje para restringir la

estructura de documentos XML.

75.00 Tesis

48

� RDF: modela recursos y sus relaciones utilizando una representación y semántica simple

por medio de sintaxis XML

� RDF Schema: brinda un vocabulario para describir propiedades y clases de recursos RDF,

con una semántica para la generalización de jerarquías de clases y propiedades

� OWL: agrega más vocabulario para describir clases y propiedades. Entre otras: relaciones

entre clases, cardinalidad, igualdad, más propiedades, características de propiedades y

enumerados de clases.

OWL es un componente de la actividad de la Web Semántica. Dado que la Web Semántica es

por naturaleza distribuida, OWL permite que la información pueda ser reunida desde fuentes

remotas. Esto es parcialmente logrado por relacionar ontologías y permitir importar

información desde otras ontologías.

OWL2 es un lenguaje declarativo y utiliza lógica descriptiva en la representación de cualquier

situación, lo cual constituye una base formal que propicia el uso de herramientas de

inferencia como razonadores, ampliando la información disponible.

Las inferencias son realizadas algorítmicamente y no forman parte del documento OWL sino

que dependen de implementaciones específicas. La respuesta correcta a una cuestión es

predeterminada por la semántica formal (Direct Model-Theoretic o RDF-Based).

El tipo de conocimiento capturado por OWL no refleja todos los aspectos de conocimiento

humano sino una parte de él. OWL es considerado como un lenguaje de modelado de

propósito general, poderoso, que como resultado del proceso de modelado logra una

ontología.

A fin de formular conocimiento explícito, OWL asume que éste consiste de piezas

elementales llamadas statements (o proposiciones). Los statements obtenidos a partir de la

ontología son llamados axiomas y pueden ser verdaderos o falsos según la situación.

Un statement es cierto siempre que los otros statements lo sean. En términos OWL: un

conjunto de statements A implican un statement a, si en cualquier situación donde todos los

statements de A son ciertos, también lo es a. La semántica formal de OWL especifica las

posibles situaciones en las que un conjunto de statements es verdadero. Existen herramientas

OWL, y razonadores que pueden procesar consecuencias.

Los statements poseen componentes atómicos llamados entidades. Las entidades pueden

representar objetos, categorías o relaciones o en términos de OWL2 individuos, clases y

propiedades, respectivamente. A su vez, las propiedades se dividen en:

� object-property: relaciona individuos. El orden en que los individuos aparecen es

importante.

� datatype-property: relaciona individuos con valores de datos y se pueden utilizar datatypes

XML-Schema.

75.00 Tesis

49

� annotation-property: comentarios relacionados con partes de la ontología, como autor y

fecha de creación de un axioma. Permite anotaciones de anotaciones. Son empleadas, por

herramientas, en interfaces de ayuda para proveer acceso a texto en lenguaje natural.

Las expresiones son combinaciones de entidades (individuos, clases y propiedades). Una

expresión de clase puede ser utilizada en statements o en otras expresiones. En este sentido,

las expresiones pueden ser vistas como nuevas entidades definidas por sus estructuras.

2.5.2.2 Sub-Lenguajes

OWL es, en general, un lenguaje muy expresivo y puede resultar difícil de implementar y

trabajar con él.

Los sublenguajes fueron diseñados como subconjuntos de OWL 2 y lo suficientemente

accesibles para ser utilizados en una variedad de aplicaciones. Al igual que en OWL 2 DL, los

mayores requerimientos de los sublenguajes tienen que ver con consideraciones de

procesamiento.

En la primera versión de OWL se definieron tres sublenguajes:

� OWL DL: soporta lógica descriptiva y provee un subconjunto del lenguaje con propiedades

de cómputo propicias para sistemas de razonamiento. Establece restricciones sobre la

combinación con RDF y requiere separación estricta de clases, propiedades, individuos y

valores de datos.

� OWL Lite: es parte de OWL DL, diseñado para una fácil implementación y proveer a los

usuarios con un subconjunto funcional a fin de iniciarlos en el uso de OWL.

� OWL FULL: provee un lenguaje completo y relaja algunas de las restricciones de OWL DL.

A diferencia de OWL DL, permite combinar libremente OWL con RDF Schema y, como

éste, no posee una separación estricta entre clases, propiedades, individuos y valores de

datos.

Como consecuencia del despliegue de ontologías OWL, estos sublenguajes resultaron

insuficientes para responder a nuevos requerimientos.

Varias aplicaciones, particularmente en las ciencias de la vida, emplean ontologías de gran

tamaño (FMA, NCI Thesaurus, SNOMED CT, Gene Ontology y OBO). Tales ontologías, que

necesitan representar entidades complejas o permitir la propagación de propiedades, poseen

un enorme número de clases y hacen uso intensivo de mecanismos de clasificación para

simplificar el desarrollo y el mantenimiento. Las aplicaciones, por lo tanto, prestan mayor

atención a la escalabilidad del lenguaje y performance de razonamiento, sacrificando algo de

expresividad por calidad de procesamiento, particularmente clasificación.

Otras aplicaciones, en cambio, utilizan bases de datos y priorizan la interoperabilidad de

OWL con tecnologías y herramientas de bases de datos. Las ontologías utilizadas en estas

aplicaciones son ligeras y empleadas para ejecutar consultas sobre grandes conjuntos de

individuos almacenados en dichas bases de datos. Por lo tanto existen requerimientos para

acceder a datos directamente vía consultas relacionales (es decir, por SQL).

75.00 Tesis

50

Por otro lado, existen aplicaciones que prestan especial cuidado a la interoperabilidad del

lenguaje de ontología con máquinas de reglas. Las ontologías utilizadas en estas aplicaciones

son ligeras y permiten consultar grandes datasets siendo conveniente operarlas directamente

en la forma de triplas RDF. Casos típicos de tales aplicaciones son aquellas que priorizan

eficiencia por expresividad y aplicaciones RDF que necesitan de la mayor expresividad

provista por OWL.

Ninguno de los sublenguajes presentados a continuación incluye al otro. Idealmente se puede

utilizar un razonador (o una herramienta) conforme a un superlenguaje en un sublenguaje

sin que se observen cambios en los resultados derivados (este principio se mantiene en

OWL2 EL y OWL 2 QL en relación a OWL 2 DL desde que cada razonador conforme a OWL2

DL es un razonador para OWL 2 EL y OWL 2 QL con las diferencias evidentes en rendimiento

desde que un razonador OWL DL trata un conjunto más general de casos).

A fin de satisfacer los requerimientos expuestos, la segunda versión de OWL definió tres

nuevos sublenguajes con propiedades útiles de procesamiento, a saber:

� OWL EL: fue diseñado pensando en las aplicaciones que emplean ontologías de gran

tamaño. Captura el poder expresivo en ontologías de gran escala. No permite negación y

disyunción de clases, cuantificación universal sobre propiedades ni propiedades inversas

El acrónimo EL refleja el origen del sublenguaje en la familia EL de lógica descriptiva. Las

herramientas (en proceso de alcanzar conformidad con OWL 2) que ofrecen soporte para

OWL 2 EL son: FaCT++, Hermit, Pellet, CEL, ELLY, REL, entre otras.

� OWL QL: fue diseñado pensando en aplicaciones que priorizan la interoperabilidad de

OWL con bases de datos. Utilizado en ontologías simples como Thesuari, permite

integración con RDBMS y la implementación de razonadores sobre la misma. Este

sublenguaje es adecuado para aplicaciones con ontologías ligeras pero con un gran

número de individuos, las cuales necesitan acceder a los datos directamente vía consultas

relacionales. El razonamiento puede ser implementado eficientemente mediante técnicas

de re-escritura de consultas. El acrónimo QL refleja el hecho de que la respuesta a una

consulta puede ser implementada por re-escribir las consultas en el Standard Relational

Query Language. Las herramientas (en proceso de alcanzar conformidad con OWL 2) que

ofrecen soporte para OWL 2 QL son QuOnto, Quill, FaCT++, Hermit, Pellet, entre otras.

� OWL 2 RL: fue diseñado pensando en aplicaciones que priorizan la interoperabilidad de

OWL con máquinas de reglas. Define un subconjunto sintáctico de reglas para su

implementación a través de tecnologías basadas en reglas. Tales implementaciones pueden

operar directamente sobre triplas RDF y pueden ser aplicadas arbitrariamente a grafos

RDF. En este último caso no hay garantía de obtener todas las respuestas correctas desde

que la ontología puede estar incompleta. El acrónimo RL refleja el hecho de que el

razonamiento puede ser implementado utilizando el Standard Rule Language. Las

herramientas (en proceso de alcanzar conformidad con OWL 2) que ofrecen soporte para

OWL 2 RL son: Oracle Database 11g OWL Reasoner, Jena, FaCT++, Hermit y Pellet.

La elección de un sublenguaje depende principalmente de la expresividad requerida por la

aplicación, la prioridad dada al razonamiento sobre clases o datos, el tamaño de los datasets y

la importancia de la escalabilidad, entre otros.

75.00 Tesis

51

Para requerimientos de un sublenguaje escalable en ontologías grandes y con buenos

tiempos de performance en razonamiento ontológico, la recomendación es OWL 2 EL. Para

requerimientos de interoperabilidad con sistemas de BD relacionales y razonamiento

escalable sobre grandes datasets, la recomendación es OWL 2 QL mientras que para

requerimientos de interoperabilidad con máquinas de reglas y reglas extendidas de BD y

razonamiento escalable sobre grandes BD, la recomendación es OWL 2 RL.

2.5.2.3 Semántica Formal

La semántica formal utilizada en OWL 2 puede ser:

� Direct Model-Theoretic (Modelo Teórico Directo): provee significado en un estilo lógico

descriptivo. Una ontología con interpretaciones (I) realizadas por esta semántica es

referida como OWL 2 DL.

� RDF-Based: la visión de grafos de OWL 2. Es una extensión de la semántica RDFS. Una

ontología con interpretaciones (I) realizadas por esta semántica es referida como OWL 2

FULL.

Las diferencias entre ambas son sutiles siendo las inferencias realizadas utilizando el Direct

Model-Theoretic también válidas en RDF-Based, salvo las obtenidas de anotaciones que

mientras para la primera no tienen significado formal para la segunda son una fuente más de

inferencia.

Conceptualmente, se puede agregar que OWL 2 DL es la versión sintácticamente restringida

de OWL 2 FULL, haciendo el trabajo de desarrollo más sencillo. OWL DL permite construir un

razonador que, en principio, puede retornar respuestas del tipo si-no, siendo variada la

producción de razonadores que cubren el lenguaje OWL 2 DL bajo la semántica Direct Model-

Theoretic. En cambio, no existen razonadores para OWL 2 FULL bajo la semántica RDF-

Based.

2.5.3 WSMO El Web Service Modeling Framework67 (WSMF) satisface requerimientos claves como

máximo desacoplamiento y fuerte mediación, a fin de definir un modelo conceptual para el

desarrollo y la descripción de servicios Web.

El Web Service Modeling Ontology68 (WSMO) extiende WSMF proporcionando un marco

conceptual para la descripción semántica de los aspectos relevantes de los servicios Web

como la automatización del descubrimiento, combinación e invocación.

Comprende el Web Service Modeling Language69 (WSML), el cual establece la sintaxis y la

semántica formal y se basa en formalismos lógicos (lógica descriptiva, lógica de primer orden

y programación lógica), y el Web Service Execution Environment70 (WSMX), el cual define

67

Marco de Modelado de Servicios Web 68 Ontología de Modelado de Servicios Web 69

Lenguaje de Modelado de Servicios Web 70

Entorno de Ejecución de Servicios Web

75.00 Tesis

52

una arquitectura SWS prestando una implementación inicial para descubrimiento, selección,

mediación, invocación e interoperación de servicios Web. El objetivo de WSMX es

proporcionar un ambiente de prueba para WSMO y demostrar la viabilidad de utilizarlo

como modelo para alcanzar la interoperabilidad dinámica de SWS.

2.5.3.1 Principios de diseño

Como se mencionó, WSMO es un marco para la descripción de servicios Web, que integra

principios básicos y semánticos de diseño Web y principios de diseño para procesamiento

distribuido. A continuación se enumeran los principios de diseño de WSMO:

1. Conformidad Web: abarca el concepto de URI para identificación única de recursos, el

concepto de namespaces para denotar espacios de información consistentes, XML,

recomendaciones del W3C y recursos descentralizados.

2. Basado en ontologías: refiere a descripciones de servicios e intercambio de datos.

3. Desacoplamiento estricto: cada recurso WSMO deber ser especificado en forma

independiente, sin considerar posibles usos o interacciones con otros recursos.

4. Mediación centralizada: la mediación se ocupa de manejar la heterogeneidad que

naturalmente surge en entornos abiertos.

5. Separación de rol ontológico: los pedidos de usuario son formulados independientemente

de los servicios Web disponibles.

6. Ejecución semántica: la ejecución semántica de implementaciones de referencia como

WSMX proveen realización técnica y verificación de la especificación WSMO.

7. Servicios vs. Servicios Web: un servicio Web es una entidad computacional que puede

(por ser invocado) alcanzar un objetivo. Por el contrario, un servicio es el valor actual

provisto por esta invocación. WSMO no especifica servicios sino servicios Web.

2.5.3.2 Conceptos básicos Partiendo de la base conceptual establecida por WSMF, WSMO refina y extiende cuatro

elementos de modelado: ontologías, servicios Web, objetivos y mediadores, adoptando las

definiciones dadas a continuación.

Las ontologías son un elemento clave al proveer las terminologías específicas de dominio

para describir otros elementos. Cumplen un doble propósito: definir la semántica formal de la

información y vincular terminologías humanas y de computadora.

Los servicios Web utilizan protocolos basados en estándares Web para intercambiar y

combinar datos, son independientes de la plataforma y cada servicio Web es visto como una

pieza atómica de funcionalidad que puede ser reutilizada para construir servicios más

complejos. Además WSMO incluye tres perspectivas en la descripción de los servicios Web:

75.00 Tesis

53

propiedades no funcionales, funcionalidad y comportamiento.

Los objetivos (goals) especifican las funcionalidades que un servicio Web debe proveer desde

la perspectiva del usuario. La co-existencia de objetivos y servicios Web como entidades no

superpuestas asegura el desacoplamiento entre un pedido y un servicio Web. Esta forma de

establecer problemas, en la que el usuario formula objetivos sin considerar los servicios Web

de la solución es conocido como Goal-Driven Approach71, derivado del AI Racional Agent

Approach72.

Los mediadores resuelven incompatibilidades a nivel de datos, mediando entre diferentes

terminologías, específicamente solucionan problemas a nivel de procesos, de integración de

ontologías y median entre patrones de comunicación heterogéneos (este tipo de

heterogeneidad aparece durante la comunicación de servicios Web). Existen cuatro tipos de

mediadores: mediadores de ontologías, de servicios Web, de objetivos y mediadores entre

servicios Web y objetivos.

2.5.4 DAML-S

El Darpa Agent Markup Language for Services73 (DAML-S) es un intento por cerrar la

brecha entre la Web Semántica y los estándares de servicios Web [Paolucci y Sycara, 2003].

Permite una descripción estándar (WSDL y SOAP) de los servicios Web garantizando que

usuarios y servicios puedan descubrir e invocar otros servicios. Como ontología, define un

concepto de servicio Web utilizando construcciones DAML+OIL74. Además, las anotaciones

semánticas y ontológicas le permiten relacionar descripciones de servicios Web con

descripciones de dominio operacional.

Un servicio Web DAML-S es especificado por cuatro descripciones: el Service Profile, el

Process Model, el Service Grounding y el DAML-S Service Description, el cual es una especie

de contenedor de los anteriores. A nivel mensajes y transporte, DAML-S es consistente con el

resto de los estándares propuestos (WSDL, SOAP y otros protocolos).

El Service Profile provee una visión de alto nivel de un servicio Web, similar a la

representación de servicio Web UDDI. Ambos proveen información del proveedor de servicio

pero el Service Profile soporta propiedades como representación de capacidades (tareas

ejecutadas por el servicio) que UDDI no soporta. Por otro lado, UDDI describe los puertos que

el servicio Web utiliza, mientras que DAML-S relega esa información a otros módulos de la

descripción como el Service Grounding.

El Process Model especifica qué tareas ejecuta un servicio Web, el orden en que las ejecuta y

71

Enfoque Dirigido por Objetivos 72

Enfoque de Inteligencia Artificial de Agente Racional. 73 Lenguaje de Marcado de Agentes DARPA para Servicios 74

Lenguaje de marcado semántico para recursos Web, fue construido sobre los primeros estándares del W3C, RDF y

RDFS, extiende estos lenguajes con primitivas de modelado. http://www.w3.org/TR/daml+oil-reference

75.00 Tesis

54

las consecuencias de las mismas. Un cliente puede utilizar el Process Model para derivar la

coreografía del servicio o el patrón de intercambio de mensajes por seguir las entradas que

espera y cuando y las salidas que produce y cuando. El Process Model tiene un rol similar a

los estándares emergentes como BPEL4WS75 y WSCI76, pero se enfoca más en los efectos de

ejecutar los componentes de diferentes servicios.

El Service Grounding vincula la descripción abstracta de intercambio de información de un

servicio Web (definido en términos de entradas y salidas en el Process Model) con una

operación WSDL explícita, que luego WSDL vincula a mensajes SOAP e información de la

capa de transporte.

La dependencia de DAML-S sobre DAML+OIL, así como WSDL sobre SOAP, muestra cómo los

servicios Web pueden ser enriquecidos con información semántica. DAML-S agrega a las

especificaciones de servicios Web, representación formal de contenido y razonamiento

acerca de interacciones y capacidades. DAML-S permite que los servicios Web empleen UDDI,

WSDL y SOAP para descubrir e interactuar con otros servicios y que ellos utilicen DAML-S

para integrar estas interacciones en problemas propios a resolver.

2.5.5 OWL-S Se trata de una ontología de servicios Web basada en OWL que permite describir las

propiedades y capacidades de los servicios Web. OWL-S fue construido sobre la

recomendación OWL del W3C. Las publicaciones anteriores de este lenguaje fueron llamadas

DAML-S y construidas sobre DAML+OIL (predecesor de OWL). La última versión de OWL-S

es la 1.2. OWL-S puede ser comprendido a partir de DAML-S, desarrollado en la sección

anterior.

2.5.6 SWSF

En el año 2005, el W3C publicó el Semantic Web Services Framework (SWSF), presentado

por Hewlett Packard (HP), el Massachusetts Institute of Technology (MIT), el National

Research Council of Canada, SRI y las universidades de Stanford, Zurich, Toronto y California,

entre otras.

Dicha publicación empieza por mencionar la necesidad de estándares para servicios Web

(parcialmente logrados con WSDL, BPEL4WS y UDDI) y al mismo tiempo destaca la

necesidad creciente de especificaciones semánticas más ricas, basadas en un framework que

extienda el rango completo de conceptos relacionados a servicios Web. Un framework

debería permitir una automatización más completa y flexible en la provisión y utilización de

servicios, soportar la construcción de herramientas y metodologías más poderosas y

promover la utilización de razonamientos semánticos acerca de servicios. Dado que un

framework de representación expresivo permite la especificación de diferentes aspectos de

los servicios, puede proporcionar una base para un amplio rango de actividades a lo largo del

ciclo de vida de los servicios Web: semánticas más ricas pueden soportar mayor

75

Business Process Execution Language for Web Services, es un lenguaje para la especificación formal de procesos

de negocios y protocolos de interacción de negocios. Por esto, extiende el modelo de interacción de servicios Web y

lo habilita para soportar transacciones de negocios. 76

Web Service Choreography Interface. http://www.w3.org/TR/wsci/

75.00 Tesis

55

automatización de selección e invocación de servicios, traslación automática de contenido de

mensajes entre servicios, enfoques automatizados o semiautomatizados para la composición

de servicios, enfoques más comprensivos para monitoreo de servicios y recuperación de

fallas y una automatización más completa de verificación, simulación, configuración,

administración de la cadena de proveedores, contratación y negociación de servicios [Battle et

al., 2005].

Las tecnologías presentadas en el trabajo SWSF realizan esta visión de Servicios Web

Semánticos. En él exponen sus dos componentes principales: el Semantic Web Services

Language (SWSL) y el Semantic Web Service Ontology (SWSO).

SWSL se utiliza para especificar caracterizaciones formales de los conceptos de servicios

Web y las descripciones de los servicios individuales. Incluye dos sublenguajes: SWSL-FOL,

basado en lógica de primer orden para expresar la caracterización formal de conceptos de

servicio Web, y SWSL-Rules, basado en el paradigma de programación lógica (o reglas), para

soportar la utilización de la ontología de servicio en razonamiento y entornos de ejecución

basados sobre este paradigma.

SWSO presenta una axiomatización (caracterización formal) del modelo conceptual

empleado para describir los servicios Web. La axiomatización completa se encuentra en

lógica de primer orden utilizando SWSL-FOL en combinación con el Model–Theoretic

Semantic77 el cual especifica el significado preciso de los conceptos.

La forma FOL de la ontología es llamada FLOWS78 y la ontología resultante por trasladar

sistemáticamente axiomas FLOWS al lenguaje SWSL-Rules es llamada ROWS79.

Una contribución clave de la ontología FLOWS es el desarrollo de un modelo de proceso rico

de comportamiento basado en la ISO 18629 Process Specification Language (PSL)80.

2.5.7 WSDL-S

En el año 2005, el W3C publicó el trabajo “Web Service Semantics – WSDL-S”, entregado por

representantes del IBM Research, IBM Software Group y LSDIS Lab of the University of

Georgia.

[Miller et al.; 2004] sostienen que los servicios Web fueron diseñados para proveer

interoperabilidad entre aplicaciones de negocios. Las tecnologías actuales requieren de una

gran cantidad de interacción humana para integrar dos aplicaciones. Esto es debido a que la

integración de procesos de negocios necesita de la comprensión de los datos y las funciones

de las entidades involucradas. Las tecnologías semánticas apuntan a sumar mayor significado

al contenido Web, por anotar los datos con ontologías. Las ontologías proporcionan un

mecanismo para compartir conceptualizaciones de dominio. Esto permite a los agentes

conseguir una comprensión de los contenidos de los usuarios de la Web y reducir la

interacción humana en búsquedas Web significativas. Un enfoque similar puede ser

empleado por agregar significado a las descripciones de los servicios Web, las cuales

77

Ver sección 2.4.2.3 “Semántica Formal” 78

First Order Logic Ontology for Web Services 79 Rules Ontology for Web Services 80 Originalmente diseñado para soportar interoperabilidad entre lenguajes de modelado de procesos, PSL provee una

base para la interoperabilidad entre los modelos de procesos de los servicios Web emergentes mientras soporta la

realización de automatización de tareas asociadas con la visión de Servicios Web Semánticos.

75.00 Tesis

56

permiten mayor automatización por reducir el involucramiento humano en comprender los

datos y funciones de los servicios.

Debido a la tardía alineación de OWL-S con WSDL, el diseño de OWL-S puede ser

innecesariamente complejo. WSDL-S busca crear descripciones semánticas de los servicios

Web por agregar semántica por medio de extensiones simples a WSDL. La ontología de

servicio WSDL-S, es por lo tanto, más alineada con WSDL 2.0 y más compacta que OWL-S sin

perder expresividad.

Conceptualmente, la especificación WSDL 2.0 posee las siguientes construcciones para

representar descripciones de servicios: interface, operation, message, binding, service y

endpoint. Las primeras tres construcciones tratan con la definición abstracta de un servicio

mientras que las últimas tres tratan con la implementación del servicio. WSDL-S se enfoca en

anotar semánticamente la definición abstracta de un servicio a fin de permitir

descubrimiento, composición e invocación de servicios. Para ello, emplea mecanismos de

referencia URI vía elementos de extensibilidad en las construcciones interface, operation y

message los cuales apuntan a las anotaciones semánticas definidas en los modelos de dominio

de los servicios.

Los elementos y atributos de extensiblidad que [Akkiraju et al.; 2005] proponen son: 1) un

atributo de extensión, “modelReference”, para especificar la asociación entre una entidad

WSDL y un concepto en algún modelo semántico; 2) un atributo de extensión,

“schemaMapping”, para manejar diferencias estructurales entre los elementos Schema de un

servicio Web y sus correspondientes conceptos en el modelo semántico; 3) dos nuevos

elementos, “precondition” y “effect”, las cuales son utilizadas principalmente en el

descubrimiento de servicios y 4) un atributo de extensión sobre el elemento interface,

“category”, el cual provee información de categorización al publicar un servicio en un

registro como UDDI.

2.5.8 SAWSDL

“Semantic Annotations for WSDL” (o SAWSDL) fue aprobado en el año 2007 como una

recomendación del W3C y realizado por el SAWSDL Working Group basándose en la

presentación WSDL-S (desarrollada en la sección anterior).

SAWSDL propone un enfoque similar a WSDL-S. Define algún WSDL y extiende los atributos

XML-Schema a fin de permitir la descripción semántica de los componentes WSDL. Esto

requiere vincular los elementos WSDL con modelos semánticos como ontologías. SAWSDL

no está sujeto a ningún lenguaje de representación semántica pero proporciona los

mecanismos para referenciar conceptos del modelo semántico desde documentos WSDL.

Los principios de diseño de SAWSDL son: 1) permitir anotaciones semánticas en servicios

Web por utilizar el framework de extensibilidad de WSDL; 2) es agnóstico81 de los lenguajes

de representación semántica y 3) permite anotaciones semánticas en los servicios Web no

sólo para descubrimiento sino también para invocación.

A partir de estos principios de diseño, SAWSDL define tres nuevos atributos de extensibilidad

para elementos WSDL 2.0 a fin de habilitar la anotación semántica de componentes WSDL: 1)

un atributo de extensión, “modelReference”, para especificar la asociación entre un

81

Sin conocimiento.

75.00 Tesis

57

componente WSDL y un concepto en algún modelo semántico y 2) dos atributos de

extensión, “liftingSchemaMapping” y “loweringSchemaMapping”82, los cuales son agregados

a declaraciones de elementos y a definiciones de tipos de XML-Schema por especificar las

asociaciones entre datos semánticos y XML y utilizados durante la invocación del servicio.

2.6 Razonador

El desarrollo y aplicación de ontologías depende de razonamiento. Un razonador es un

componente clave para trabajar con ontologías OWL DL [Horridge; 2009].

Una base de conocimiento (KB)83 se compone de un TBox y un ABox. Un TBox describe

conocimiento intencional en la forma de conceptos (clases) y definiciones de roles

(propiedades) y un ABox describe conocimiento por extensión y consiste de un conjunto

finito de aserciones acerca de los individuos mientras utiliza los términos de la ontología.

Conviene notar que un ABox representa un conocimiento incompleto acerca del mundo.

Las clases pueden ser organizadas en una jerarquía de superclases-subclases, conocido como

taxonomía. Las subclases especializan (“son subsumidas por”) superclases. Estas relaciones

pueden ser procesadas por un razonador en OWL-DL. Virtualmente toda consulta a una

ontología OWL DL debe ser realizada utilizando un razonador que deduzca conocimiento

implícito. El OWL API incluye varias interfaces para acceder a razonadores OWL DL. La

interfaz OWL Reasoner del OWL API es implementada por FACT++, Hermit, Pellet y

RacerPro, entre otros.

Un razonador también es conocido como clasificador por la tarea de computar una jerarquía

de clases inferidas.

Como consecuencia de la naturaleza inherentemente distribuida de la Web, el razonamiento

en OWL DL se apoya en lo que se conoce como Open World Assumption84 (OWA) o como

Open World Reasoning85 (OWR). OWA establece que la verdad de un statement es

independiente de si es conocido, esto es, no saber si un statement es explícitamente

verdadero no implica que el statement sea falso (en todo caso se asume que no se ha

agregado suficiente conocimiento a la base de conocimiento). Bajo OWA, información nueva

es manejada de forma aditiva debido a que no se puede remover la información afirmada

previamente. OWA impacta el tipo de inferencia que puede ser ejecutada sobre la

información. En OWL, esto significa que la inferencia sólo puede ser ejecutada sobre

información que es conocida. La ausencia de una pieza de información no puede ser utilizada

para inferir la presencia de otra información. La correcta inferencia de las semánticas de

OWL en el mundo distribuido de la Web Semántica depende sobre la adhesión al supuesto de

mundo abierto.

En oposición a OWA, el Closed World Assumption86 (CWA) afirma que todo statement que no

sea verdadero es asumido como falso. La mayoría de los sistemas operan con supuestos de

82 El primero se refiere a levantar datos desde el XML al modelo semántico y el segundo a bajar datos desde el

modelo semántico al XML. Los mapping son útiles cuando la estructura de los datos de instancia (servicio) no se

corresponden con los de la organización de datos semánticos. Los mapping son utilizados cuando código de

mediación es generado para soportar invocación de servicios. 83 Las siglas corresponden al término en inglés Knowledge Base 84 Supuesto de Mundo Abierto. 85

Razonamiento de Mundo Abierto. 86

Supuesto de mundo cerrado.

75.00 Tesis

58

mundo cerrado. Ellos asumen que la información es completa y conocida. Sin embargo, en

algunos casos CWA puede limitar la expresividad de un sistema debido a que es más difícil

diferenciar entre información incompleta e información que es desconocida.

A fin de lograr una Web Semántica robusta, las ontologías deben procurar balancear entre la

complejidad computacional requerida por los mecanismos de razonamiento y el poder

expresivo de los conceptos definidos. RDF y RDFS proveen un poder expresivo muy limitado,

insuficiente para representar la semántica asociada a un dominio. OWL provee mayor poder

expresivo y promueve motores de inferencia por suministrar un soporte de razonamiento

apropiado. Nuevos dialectos que necesitan más servicios de razonamiento e inferencia,

plantean nuevos desafíos para los razonadores DL quienes deben controlar subsunción,

consistencia y satisfactibilidad de las ontologías.

La inferencia hace un dato mucho más valioso debido a que podría tener un efecto en la

creación de nueva información y conducir a efectos positivos o negativos. Cada pieza de

información tiene la capacidad de agregar gran cantidad de información nueva vía inferencia.

Por ello, se deben tomar cuidados extras para validar la información. El proceso de inferencia,

como todo sistema es vulnerable al fenómeno “garbage in, garbage out” pero la inferencia

amplía este asunto [Hebeler et al.; 2009].

A continuación, se exponen las limitaciones encontradas en relación a la utilización de

razonadores, servicios Web e inferencia y finalmente inferencia.

[Fahad et al.; 2008] sostuvieron que un soporte de razonamiento preciso es fundamental

para las ontologías de la Web Semántica, lo cual sólo puede ser posible si el estado del arte de

los razonadores de lógica descriptiva es capaz de detectar inconsistencias y ordenar

taxonomías en ontologías. Ellos discutieron errores y anomalías de diseño en ontologías y

realizaron un caso de estudio incorporando esos errores. Evaluaron consistencia,

subsunción y satisfactibilidad de los razonadores DL. El experimento determinó errores

dentro de los algoritmos utilizados por los razonadores. Especialmente errores circulares y

varios tipos de errores de inconsistencia semántica que podrían causar graves efectos

colaterales, los cuales deberían ser detectados por los razonadores DL a fin de asegurar un

razonamiento preciso sobre ontologías.

[Li et al.; 2006] propusieron un mecanismo de composición de servicios para realizar el

modelado semántico y el razonamiento de la composición de servicios con la incorporación

de preferencias de usuario. Sus pruebas fueron realizadas utilizando una base de

conocimiento con individuos y un TBox acíclico debido a que en un TBox acíclico las clases

primitivas determinan de manera unívoca la extensión de las clases definidas mientras que en

un TBox cíclico no sucede lo mismo.

[Baader et al.; 2005] propusieron un formalismo que describía la funcionalidad de los

servicios Web partiendo de las investigaciones realizadas en los campos de representación de

conocimiento, de razonamiento por ingeniería de ontologías y de razonamiento acerca de

acciones. Su formalismo se restringió a una base de conocimiento con individuos y un TBox

acíclico dado que un TBox cíclico presentaba problemas semánticos. En su trabajo adoptaron la definición de un TBox acíclico por no utilizar las mismas clases definidas en relación al

75.00 Tesis

59

TBox.

2.6.1 Clasificación

Los razonadores pueden ser agrupados en dos categorías: razonadores de lógica descriptiva y

razonadores de programación lógica.

2.6.1.1 Razonadores de lógica descriptiva

Como se mencionó en la sección 2.3 “Lógica y ontologías”, las lógicas descriptivas permiten

representar bases de conocimiento que describen un dominio particular. Una lógica

descriptiva se representa a través de clases (conceptos), individuos, roles (propiedades).

Además existe un conjunto de extensiones que incluyen el dominio y rango de las

restricciones. [Rodríguez et al.; 2010].

Los razonadores DL brindan los siguientes servicios de inferencia:

� Validación de la consistencia de una ontología: el razonador puede comprobar si una

ontología no contiene hechos contradictorios

� Validación del cumplimiento de los conceptos de la ontología: el razonador determina si es

posible que una clase tenga instancias. En el caso de que un concepto no sea satisfecho la

ontología será inconsistente.

� Clasificación de la ontología: el razonador computa a partir de los axiomas declarados en el

TBox, las relaciones de subclase entre todos los conceptos declarados explícitamente a fin

de construir la jerarquía de clases.

� Posibilita la resolución de consultas durante la recuperación de información basada en

ontologías: a partir de la jerarquía de clases se pueden formular consultas como conocer

todas las subclases de un concepto, inferir nuevas subclases de un concepto, las

superclases directas, etc.

� Precisiones sobre los conceptos de la jerarquía: el razonador puede inferir cuáles son las

clases a las que directamente pertenece y mediante la jerarquía inferida obtener todas las

clases a las cuales indirectamente pertenece una clase o individuo dentro de la ontología.

Algunos razonadores DL son Pellet, HermiT, FacT++, Racer Pro. Los tres primeros serán

desarrollados en las siguientes secciones dejando para esta sección, el razonador RacerPro.

Racer87 fue desarrollado en LISP88. Creado inicialmente por la Universidad de Hamburgo

luego se convirtió en software propietario. Su nombre comercial es RacerPro. Soporta OWL

DL excepto para los nominales (clases definidas por enumeración de sus miembros) y para

tipos de datos no estándar; maneja ABoxes largas en combinación con TBoxes largas y

expresivas, además de proveer servicios de inferencia sofisticados. Implementa un

procedimiento de decisión basado en calculus tableaux89 para TBoxes (subsunción,

87

Renamed ABox and Concept Expression Reasoner 88

Lenguaje de programación de tipo funcional especificado en 1958 es el segundo lenguaje de programación más

viejo de alto nivel. Utilizado frecuentemente en IA. 89

O tablas semánticas se encuentran dentro de lo que se conoce como algoritmos de razonamiento [Rodríguez et al.;

2010] y se basan en las semánticas de las fórmulas. De acuerdo a su tipo, una formula genera una extensión en el

75.00 Tesis

60

satisfactibilidad, clasificación) y ABoxes (consultas). Soporta la OWL-API, la interfaz DIG,

transformaciones SPARQL y SWRL a nRQL, diferentes formatos y sintaxis, conectividad con

software externo (Protégé, etc.), entre otras características. La última versión comercial es

RacerPro 1.9.0 que será reemplazada por RacerPro 2.0 a liberarse en el 2011.

2.6.1.2 Razonadores de programación lógica Entre los razonadores de programación lógica se encuentran: KAON2, FLORA-2, TRIPLE,

DLV, MINS, Jena, entre otros. A continuación se desarrollarán algunos.

KAON2 es un razonador con sistema de razonamiento híbrido que soporta SHIQ(D), Datalog y

DL-Safe. Fue desarrollado por la Universidad de Manchester, la Universidad de Karlsruhe y el

FZI90

. Dentro de KAON2, las reglas DL-Safe pueden ser agregadas a la salida de un DataLog

disyuntivo y no requieren preprocesamiento adicional, lo que mejora el rendimiento Su

razonamiento es implementado a través de algoritmos Novel, que reducen una base de

conocimiento SHIQ(D) a un programa de registro de datos disyuntivos. Posee una versión

comercial llamada OntoBroker OWL. KAON2 no maneja nominales ni números grandes en

sentencias de cardinalidad.

FLORA-2 es un sistema basado en conocimiento y un entorno completo para el desarrollo de

aplicaciones que hacen uso de conocimiento. FLORA-2 extiende el cálculo de predicados con el

concepto de objeto, clase y tipo, adaptados de la POO.

TRIPLE es un lenguaje de consulta, inferencia y transformación para la Web Semántica.

Proporciona soporte para RDF y para un subconjunto de OWL Lite. Su sintaxis está basada en F-

Logic y brinda soporte para símbolos de función, tratamiento de la igualdad o negación por

defecto, transformaciones, modelos y extensión sintáctica de la lógica de Horn. El motor de

inferencia de TRIPLE se basa en el sistema PROLOG XSB.

Jena es un framework open source para construir aplicaciones de la Web semántica sobre

modelos RDF. Soporta varios formatos como XML/RDF, N3 y N-Triples (formatos para grafos

abreviados). Los grafos son representados internamente como un modelo abstracto, que se puede

consultar mediante el lenguaje de consultas para RDF y SPARQL. Permite el tratamiento del

lenguaje OWL, al utilizar el modelo semántico de RDF y proporciona conexión de forma externa

a través de la interfaz DIG hacia razonadores DL como Pellet o FaCT++. Jena posee la

capacidad para conectarse con motores de inferencia externos tipo Plug-in a través de una

interface DIG y también ofrece un subsistema de inferencia propio el cual consiste en un motor

híbrido con encadenamiento hacia delante y hacia atrás, utilizando el algoritmo RETE (algoritmo

de reconocimiento de patrones). Ofrece razonadores para RDF, OWL, DAML, razonador

transitivo y motor de reglas multipropósito.

tableaux. La clasificación de las fórmulas son tipo α, para las formulas conjuntivas; tipo β, para las fórmulas

disyuntivas; tipoγ para las fórmulas universales y tipo δ, para las fórmulas existenciales. La base de este método es

el principio de refutación: dado un conjunto de premisas ϕ y una conclusión ϕ, mostrar que el conjunto ϕ ∪ {¬ϕ}

no tiene un modelo que lo satisfaga, demostrando que ϕ es una consecuencia de ϕ. 90 Universidad en Inglaterra, Universidad en Alemania y una de las más prestigiosas de ese país, Organización de

investigación por contratos sin fines de lucro para proveedores de inversión, productos de consumo y servicios de

información que soporta el desarrollo de aplicaciones innovadoras, principalmente en ingeniería, sobre la base de

técnicas recientes y probadas. La organización permite a profesores extender sus esfuerzos en la investigación

académica en la dirección de actividades más orientadas al mercado por prestar una infraestructura técnica y

organizacional que es congenial a establecer relaciones estrechas con la industria y organizaciones de servicios.

http://www.fzi.de/

75.00 Tesis

61

2.7 SWRL El Semantic Web Rule Language se basa en OWL DL y OWL Lite y utiliza el subconjunto de

reglas RuleML del Rule Markup Language91 las cuales son modeladas sobre cláusulas Horn. El

propósito de SWRL es extender el conjunto de axiomas OWL al incluir cláusulas Horn que

puedan ser combinadas con la base de conocimiento de OWL92.

Las cláusulas Horn representan condicionales if-then o más formalmente implicaciones. De

esta manera, las reglas tienen la forma de una implicación entre un antecedente (referido

como body en la sintaxis) y un consecuente (referido como head en la sintaxis). Una regla

puede ser interpretada como “si las condiciones especificadas en el antecedente son

verdaderas entonces, las condiciones especificadas en el consecuente también son

verdaderas”.

Ambos, el antecedente y el consecuente consisten de cero o más átomos. Un antecedente

vacío es tratado trivialmente como verdadero y por lo tanto, el consecuente también es

verdadero. Un consecuente vacío es tratado trivialmente como falso y por lo tanto, el

antecedente también es falso.

Los átomos pueden ser de la forma C(x), P(x, y), sameAs (x, y), differentFrom (x, y), donde C

es una descripción OWL, P es una propiedad OWL y x, y pueden representar variables,

individuos OWL o valores de datos OWL. Cabe destacar que OWL DL pierde decidibilidad93

cuando es extendido de esta manera porque las reglas pueden ser utilizadas para simular

asociaciones rol valor.

SWRL utiliza una extensión de la semántica model-theoretic94 de OWL. SWRL es construido

sobre OWL DL y provee más expresividad que OWL DL sólo. Sin embargo, comparte la

semántica formal: las conclusiones alcanzadas por SWRL tienen la misma garantía formal

que las conclusiones alcanzadas por construcciones OWL.

La expresividad adicional de SWRL es lograda a expensas de perder decidibilidad (mientras

es posible garantizar que un razonador OWL completará la clasificación de una ontología

OWL, no ocurre lo mismo a partir de la inferencia con SWRL). En general, se debería utilizar

OWL siempre que sea posible y recurrir a SWRL, sólo cuando resulte necesario disponer de

expresividad adicional.

[Hebeler et al.; 2009] enuncian a las reglas como un medio para representar conocimiento

que con frecuencia no es posible en OWL 1 o que resulta más fácil de comprender que las

expresiones que OWL 1 puede ofrecer.

2.7.1 Motivaciones Según [Hebeler et al.; 2009] las reglas surgieron por la falta de expresividad de OWL 1.

OWL 1 no presenta soporte para la composición de propiedades. Este problema también es

91

http://ruleml.org/ 92

http://www.w3.org/Submission/SWRL/#owls_Rule 93

En lógica, el término decidible refiere a la existencia de un método efectivo para determinar la pertenencia a un

conjunto de fórmulas, Por ejemplo, los sistemas lógicos, como la lógica proposicional, son decidibles si

efectivamente se puede determinar la pertenencia a los conjuntos de fórmulas válidas lógicamente. 94

Desarrollado en la sección 2.5.2.3, “Semántica Formal”.

75.00 Tesis

62

conocido como “uncle problem”. Es imposible, en OWL 1, determinar que un individuo A

tiene una relación uncle con un individuo B debido a la necesidad de dos piezas de

información: que A tenga una relación father con C y que C tenga una relación sibling con B.

Las reglas soportan la existencia de ambas piezas de información que resultan en la creación

de la relación uncle. OWL 2 parcialmente resolvió este problema mediante la

owl:propertyChain. Cabe aclarar que SWRL en anterior a OWL 2.

La utilización de built-ins permite realizar transformaciones comunes sobre los datos. No es

posible en OWL 1 verificar si una URI tiene una data-property que empieza con una palabra

dada y utilizar esa información como base para agregar una nueva propiedad al mismo

sujeto. La asociación por patrones, operaciones matemáticas, verificación de condicionales o

conversión de unidades son algunas de las necesidades para built-ins.

Las reglas pueden ser utilizadas para limitar el Open World Assumption (OWA) de OWL

(empleando una técnica conocida como Negation as Failure95 o NAF) o soportar el supuesto

de individuos únicos96.

Así, aparte de las ya mencionadas, existen otras carencias en OWL 1 que son superadas por

la utilización de reglas.

2.7.2 DL-Safe Rules

Las DL-Safe Rules poseen como propiedad decidibilidad y solucionan algunos de los

problemas asociados con la pérdida de decidibilidad que ocasiona SWRL.

Las DL-Safe Rules son un subconjunto de SWRL y asocian instancias conocidas de la base de

conocimiento o la ontología con las variables utilizadas por las reglas. Si no existe una

instancia que se pueda asociar con una consulta, entonces el consecuente de una regla DL-

Safe no se ejecutará sin importar que las reglas sean perfectamente válidas. La decidibilidad

sólo puede ser garantizada por tener toda la información necesaria al momento de evaluar la

regla. Restringiendo las reglas sólo a individuos conocidos asegura decidibilidad como fue

demostrado en [Motik et al., 2005].

2.8 Ejemplos Los trabajos de investigación estudiados han empleado ontologías sencillas a fin de concentrarse

en los aspectos de una solución al problema de composición dinámica de servicios: [Paolucci et

al.; 2002] utilizaron una ontología de vehículos hecha en DAML; [Li et al.; 2006] eligieron

como escenario el de una biblioteca universitaria, utilizando OWL-S para la descripción y OWL

para el modelado y razonamiento de la composición de servicios; en [Yong-Feng et al.; 2007]

utilizaron OWL-S para la composición de servicios y OWL para describir la interacción de

agentes; [Fahad et al.; 2008] emplearon una ontología de automóviles en OWL a fin de

evaluar los razonadores DL con respecto a su capacidad para clasificar e identificar

inconsistencias en las ontologías. Por otro lado, el W3C utiliza como ejemplo en sus

publicaciones relacionadas a la Web Semántica una ontología de vinos (wine.owl). Además

de las ontologías en el área de la medicina, mencionadas anteriormente en la sección 2.4,

95

Por ejemplo if Adan isn’t known to have a brother, then assert he is brotherless 96

En OWL los individuos son supuestos ser iguales salvo que explícitamente sea establecido lo contrario.

75.00 Tesis

63

existen ontologías disponibles en el sitio “Semantic Web”97, en el sitio del laboratorio LSDIS

del Departamento de Computación de la Universidad de Georgia98, en DAML99, en el sitio

del proyecto Co-Ode del Departamento de Computación de la Universidad de

Manchester100 y por medio del buscador semántico Swoogle101 (con 10.000 ontologías

disponibles), entre otras.

La ontología mostrada a continuación fue desarrollada en OWL con el editor de ontologías

Protégé 4.1.0. Después de evaluar las ontologías utilizadas en los trabajos mencionados, se

eligió construir una ontología que describiera la bolsa de trabajo de una facultad.

Jerarquía de clases de http://www.semanticweb.org/ontologies/2010/11/StudentsJobBag.owl.

En el panel izquierdo se puede observar la jerarquía y en el panel central el grafo

correspondiente.

97

http://semanticweb.org/wiki/Ontology 98

http://lsdis.cs.uga.edu/projects/ 99 http://www.daml.org/index.html 100

http://www.co-ode.org/ 101

http://swoogle.umbc.edu/

75.00 Tesis

64

Individuos utilizados en las definiciones de las clases Graduate y UnderGraguate en

http://www.semanticweb.org/ontologies/2010/11/StudentsJobBag.owl.

El iri http://www.semanticweb.org/ontologies/2010/11/StudentsJobBag.owl es el identificador en

el contexto de la Web de la ontología desarrollada, la cual se encuentra almacenada en el archivo

StudentsJobBag.owl. Anteponiendo el iri a cada elemento de la ontología, se obtiene su nombre

completo. El nombre completo del individuo notice_undergraduate es

http://www.semanticweb.org/ontologies/2010/11/StudentsJobBag.owl#notice_undergraduate. La

ontología de aquí en adelante será referenciada en su forma corta como bolsa de trabajo o

StudentsJobBag, indistintamente.

En el panel superior izquierdo se puede observar la jerarquía de clases, la cual se compone de

cinco (5) clases definidas (precedidas por el símbolo ≡ y resaltadas en naranja) y nueve (9) clases

primitivas.

Todas las clases permiten describir las actividades más comunes relacionadas a la bolsa de

trabajo de una facultad y proporcionan la información necesaria para el propósito de llevar a

cabo una composición de servicios Web. Esta sección se enfoca en la ontología misma.

Se llaman clases primitivas aquellas que poseen un conjunto de condiciones necesarias, esto es,

si un individuo es definido del tipo de una clase primitiva, necesariamente debe cumplir con las

condiciones de la clase pero si un individuo, del que se desconoce su tipo, cumple con las

condiciones de la clase, su tipo permanece desconocido. Por otro lado, se llaman clases

definidas aquellas que poseen un conjunto de condiciones necesarias y suficientes. A diferencia

de las clases primitivas, las clases definidas permiten que cualquier individuo cuyo tipo sea

desconocido y que cumpla con las condiciones de la clase sea clasificado como miembro de la

clase (el tipo del individuo ya no es más desconocido). Como se mencionó secciones atrás, las

75.00 Tesis

65

clases definidas proporcionan información suficiente para que un razonador DL pueda realizar

clasificación automática.

En la ontología bolsa de trabajo, las clases definidas incluyen la clase Student, la cual representa

al conjunto de individuos de tipo Estudiante; la clase Graduate, para el conjunto de individuos de

tipo Graduado; la clase UnderGraduate, para el conjunto de individuos de tipo No Graduados, la

clase JobOffer, para el conjunto de individuos de tipo Oferta de Trabajo y la clase PostulationJob

para el conjunto de individuos de tipo Postulación de trabajo.

Los individuos fueron definidos en una ontología aparte (como se explicará más adelante en esta

sección); salvo aquellos individuos que forman parte de las definiciones de las clases Graduate y

Undergraduate; a saber, los individuos notice_graduate y notice_undergraduate, pertenecientes a

la clase Notice.

Las definiciones empleadas en las clases Student, UnderGraduate, Graduate, JobOffer y

PostulationJob son mostradas aquí a continuación:

TBox = {

Graduate ≡ hasNotice value notice_graduate

UnderGraduate ≡ hasNotice value notice_underGraduate

Student ≡ Graduate ∪ New_Student ∪ UnderGraduate

JobOffer ≡ JobOfferPassant ∪ JobOfferProfessional

PostulationJob ≡ PostulationJobProfessionalJob ∪

PostulationJobPassantJob

}

La definición de la clase Graduate afirma que los individuos que tienen una nota de graduado

son graduados. La restricción “value” empleada aquí equivale semánticamente a una restricción

existencial ya que no reduce la propiedad hasNotice a un individuo específico. Cualquier

individuo que posea la propiedad hasNotice y además como valor de la misma al individuo

específico notice_graduate automáticamente será clasificado como miembro de la clase

Graduate. Un individuo miembro de la clase Graduate puede poseer más valores en su propiedad

hasNotice y seguir siendo miembro de la clase Graduate siempre que mantenga una relación

hasNotice con un individuo notice_graduate. En general las restricciones value relacionan un

conjunto de individuos con una clase enumerada, la cual incluye al el individuo de la restricción.

La definición de la clase UnderGraduate afirma que los individuos con la propiedad hasNotice y

el valor notice_underGraduate son no graduados. La restricción empleada aquí también es una

restricción value, de manera que los individuos de esta clase pueden tener otros valores en su

propiedad hasNotice, es decir, estar relacionados con otros individuos mientras mantengan la

relación hasNotice con el individuo específico notice_undergraduate. La intención de esta clase

es representar al conjunto de individuos no graduados.

La clase Student es definida por la unión de tres conjuntos de individuos, a saber los individuos

miembros de las clases Graduate, New_Student y UnderGraduate, respectivamente. Un

razonador DL, partiendo de esta definición, detecta una relación de subsunción e inmediatamente

infiere a las clases Graduate, New_Student y UnderGraduate como subclases de la clase Student.

De esta manera, los individuos miembros de cualquiera de las tres clases son también

clasificados como miembros de la clase Student.

75.00 Tesis

66

La clase JobOffer es definida de manera similar a la clase Student. Comprende el conjunto de

individuos resultante de la unión de dos conjuntos de individuos, a saber los individuos

miembros de las clases JobOfferPassant y JobOfferProfessional, respectivamente. Un razonador

DL, siguiendo esta definición, detecta una relación de subsunción e inmediatamente infiere que

las clases JobOfferPassant y JobOfferProfessional son subclases de la clase JobOffer. De esta

manera, los individuos miembros de cualquiera de las dos clases son también clasificados como

miembros de la clase JobOffer.

La clase PostulationJob es definida de manera similar a la clase JobOffer. Comprende el

conjunto de individuos resultante de la unión de dos conjuntos de individuos, a saber los

individuos miembros de las clases PostulationJobProfessionalJob y PostulationJobPassantJob,

respectivamente. Un razonador DL, siguiendo esta definición, detecta una relación de subsunción

e inmediatamente infiere que las clases PostulationJobProfessionalJob y PostulationJobPassantJob

son subclases de la clase PostulationJob. De esta manera, los individuos miembros de cualquiera

de las dos clases son también clasificados como miembros de la clase PostulationJob.

Como se mencionó, las clases primitivas poseen un conjunto de condiciones necesarias y las

clase definidas un conjunto de condiciones necesarias y suficientes. Estas condiciones, también

llamadas condiciones de clase, constituyen una parte de los axiomas utilizados por la ontología y

son las que posibilitan agregar más información sobre la información.

En la ontología bolsa de trabajo, las clases primitivas incluyen la clase Curriculum, la clase

JobOfferPassant, la clase JobOfferProfesional, la clase New_Student, la clase Record, la clase

JobPostulant, la clase Notice, la clase PostulationJob, la clase PostulationPassantJob y la clase

PostulationProfessionalJob. Un razonador no puede inferir que un individuo desconocido que

cumpla con las condiciones de alguna de estas clases primitivas sea miembro de algunas de ellas

debido a que las condiciones son condiciones necesarias pero no suficientes.

En la ontología se declaran las clases Curriculum, Student, Record y JobOffer como

DisjointClasses (disjuntas). De esta manera, un individuo declarado de tipo Curriculum y

Student provocaría una inconsistencia en la ontología y esto sería detectado por un razonador

DL.

El axioma DisjointClasses (disyunción) se utilizó para las clases de todos los niveles (las clases

del nivel tres PostulationPassantJob y PostulationProfessionalJob son disjuntas y un individuo no

puede pertenecer a ambas).

A continuación, se muestra la jerarquía de clases inferidas utilizando Pellet 2.2.1 como razonador

DL.

75.00 Tesis

67

Jerarquía de clases inferidas en

http://www.semanticweb.org/ontologies/2010/11/StudentsJobBag.owl.

El razonador DL dejó en el primer nivel de la jerarquía a la clase Curriculum y a las superclases

JobOffer, Record y Student. La clase JobOffer es una superclase de JobOfferProfessional y

JobOfferPassant; la clase Record es superclase de las clases Notice, JobPostulant y

PostulationlJob, y la clase Student como superclase de las clases (por inferencia) Graduate,

New_Student y UnderGraduate. La clase PostulationlJob, ubicada en el segundo nivel, quedó

como superclase de las clases PostulationPassantJob y PostulationProfessionalJob y subclase de

la clase Record.

A continuación se describen las propiedades.

75.00 Tesis

68

Jerarquía de object-properties en

http://www.semanticweb.org/ontologies/2010/11/StudentsJobBag.owl.

Como se describió en la sección 2.5.2.1, la propiedad topObjectProperty (introducida en OWL2)

es la propiedad de nivel superior y representa al conjunto de pares ordenados de todas las

propiedades. De acuerdo con la convención de utilizar clases definidas para la definición de

rangos y dominios de las propiedades, no se definieron rangos ni dominio salvo para la

propiedad hasRecord cuyo dominio es representado por la clase definida Student. El motivo de

esta convención surge a causa de que la definición del rango o dominio de una propiedad

constituye un axioma, y un razonador puede inferir erróneamente el tipo de un individuo por

asociarlo con las clases del rango o dominio, conduciendo a inconsistencias que luego son

difíciles de detectar en ontologías más grandes. El hecho de utilizar axiomas de rangos y

dominios con clases definidas conduce a que un razonador infiera correctamente el tipo de un

individuo por recurrir a la definición de la clase.

Las propiedades hasJobPostulant, hasNotice y hasPostulationJob son subproperties de hasRecord

o, lo que es lo mismo, hasRecord es una superproperty de ellas. Este tipo de relación jerárquica

entre propiedades provoca que para un par ordenado de individuos (i1, i2) relacionados por la

propiedad hasNotice (por ejemplo), el individuo i1 sea inferido y clasificado por un razonador

DL como miembro de la clase Student, debido a que el dominio de la propiedad hasNotice es

inferido ser del mismo tipo que el dominio de su superproperty hasRecord, el cual fue definido

de tipo Student y, por otro lado, el mismo par ordenado es clasificado como miembro de la

propiedad hasRecord o sea que, los dos individuos son también asociados por la propiedad

hasRecord.

Las propiedades RecordOf, CurriculumOf, JobPostulantOf, NoticeOf y PostulationJobOf son

propiedades inversas de hasRecord hasCurriculum, hasJobPostulant, hasNotice y

hasPostulationJob, respectivamente. Por ser la clase Student dominio de la propiedad hasRecord,

un razonador DL infiere que el rango de la propiedad RecordOf debe ser de tipo Student y al ser

la propiedad RecordOf superproperty de CurriculumOf, JobPostulantOf, NoticeOf y

75.00 Tesis

69

PostulationJobOf, infiere el mismo rango para estas últimas.

Las propiedades hasNotice, hasJobPostulant, hasCurriculum, NoticeOf, JobPostulantOf y

CurriculumOf son definidas como propiedades funcionales. Esto significa que un individuo

inscripto en la bolsa de trabajo de una facultad tendrá un registro llamado postulación de trabajo

(JobPostulant) con sus datos. Este registro es único para cada individuo. Si otro individuo tuviera

el mismo registro un razonador inferirá que, por ser la propiedad hasJobPostulant funcional, se

trata del mismo individuo. Si ambos individuos fueran declarados como distintos

(DifferentIndividuals) esto provocaría una inconsistencia con la ontología. De esta manera se

establece que un individuo puede tener solamente un curriculum, puede registrarse una vez en la

bolsa de trabajo y puede tener solamente una nota (de graduado o no graduado para el escenario

planteado y descripto más adelante).

Hasta aquí se ha utilizado una parte de las posibilidades expresivas que OWL brinda. La

documentación OWL102

(W3C) es bastante completa al respecto y muchos de los trabajos

consultados por esta tesis han elegido a OWL como el lenguaje de ontología Web para

comunicar sus servicios y respaldar sus investigaciones.

A continuación se describen las data-properties.

Jerarquía de data-properties en

http://www.semanticweb.org/ontologies/2010/11/StudentsJobBag.owl.

Un data-property relaciona un individuo con datatypes XML-Schema o literales RDF.

El rango de la propiedad contractType fue definido de tipo string, de manera que un individuo

podría tener como valor de la propiedad contractType el string “relación de dependencia”.

El rango de las data-properties fue definido de tipo string, salvo para las data-properties year y

numberReg con rango de tipo int.

102

http://www.w3.org/TR/2009/REC-owl2-primer-20091027/

75.00 Tesis

70

OWL ofrece variedad de datatypes como float, long, date, decimal, base64binary, QName,

positiveinteger, XMLLiteral, ENTITY, NMToken, ID, IDREF, IDREFS, etc., pero para los fines

de este trabajo fue suficiente con los tipos mencionados.

La jerarquía de data-properties consta de las propiedades contractType, employer, expiration,

horaryJobPosting, matriculate, numberReg, place, profession, reference, registrationDate,

requirements, tasks, university y year.

El iri http://www.semanticweb.org/ontologies/2010/11/membersStudentsJobBag.owl es el

identificador en el contexto de la Web de la ontología de individuos desarrollada y la misma se

encuentra almacenada en el archivo membersStudentsJobBag.owl. Anteponiendo el iri, se

obtiene el nombre completo de los individuos que componen la ontología. . La ontología será

referenciada de aquí en adelante como individuos o miembros de la bolsa de trabajo

indistintamente.

Como se mencionó anteriormente, los individuos fueron definidos en un archivo aparte. [Hebeler

et al.; 2009] sugieren que este tratamiento paralelo produce un razonamiento más eficiente el

cual resulta más apreciable en ontologías grandes. La ontología de individuos se apoya en la

ontología bolsa de trabajo para realizar la definición de los individuos. A continuación, se

muestra la ontología de miembros de la bolsa de trabajo.

Individuos en

http://www.semanticweb.org/ontologies/2010/11/membersStudentsJobBag.owl

Los individuos son mostrados a partir de su tipo definido. Así, el individuo c fue definido de

tipo Curriculum, el individuo jp de tipo JobPostulant, el individuo nt de tipo New_Student, el

individuo n de tipo Notice, el individuo ppas de tipo PostulationPassantJob y el individuo

75.00 Tesis

71

pprof de tipo PostulationProfessionalJob. Para definir el individuo gd se utilizó la aserción

“hasNotice notice_graduate”, que afirma que el individuo gd tiene una nota de graduado. Su

tipo permanece desconocido. De la misma manera, el individuo ug fue definido utilizando la

aserción “hasNotice notice_undergraduate”, que afirma que el individuo ug tiene una nota de

no graduado. Su tipo también permanece desconocido. Con estas definiciones y las

presentadas para Graduate y UnderGraduate, un razonador DL puede inferir los tipos para

gd y ug, respectivamente.

Es oportuno aclarar que los individuos de una clase también son llamados instancias de la

clase. De aquí en más se empleará el término instancia o individuo indistintamente.

ABox = {

c (Curriculum)

gd (hasNotice notice_graduate)

jp (JobPostulant )

nt (New_Student)

n (Notice)

ppas (PostulationPassantJob)

pprof (PostulantProfessionalJob)

r (Record)

ug (hasNotice notice_undergraduate)

}

75.00 Tesis

72

Por último se presentan las métricas de la ontología recogidas por Protégé.

Métricas para la ontología miembros de la bolsa de trabajo

(http://www.semanticweb.org/ontologies/2010/11/membersStudentsJobBag.owl)

Se puede observar que las métricas contabilizan los axiomas de las ontologías importadas (la

ontología bolsa de trabajo). Los indicadores reflejan los siguientes valores: 14 clases, 10

object-properties, 14 data properties, y 10 individuos. Para las clases tenemos 5 axiomas de

subclase, 5 axiomas de clases equivalentes, 5 axiomas de clases disjuntas. Para las object-

properties, 6 axiomas de subproperties, 4 axiomas de propiedades inversas, 7 axiomas de

propiedades funcionales, 1 axioma de dominio. Para las data-properties, 1 axioma de dominio

y 14 axiomas de rango. Y para los individuos, 8 axiomas de aserción de clase y 2 axiomas de

aserción de propiedad.

Las clases equivalentes mencionadas en las métricas corresponden a las clases definidas

Student, JobOffer, Graduate, UnderGraduate y PostulationJob, descriptas anteriormente. Los

axiomas utilizados en la definición de cada clase son considerados como una clase anónima y

por lo tanto, la métrica de clases equivalentes corresponde a la equivalencia entre las clases

definidas y las clases anónimas utilizadas en sus definiciones.

75.00 Tesis

73

Por último, se mostrarán las reglas DL-Safe Rules las cuales fueron definidas empleando

ontologías separadas.

rulesMatriculate: DL-Safe Rule del servicio Web semántico wsMatriculate en

http://www.semanticweb.org/ontologies/2010/11/rulesMatriculate.owl

El iri http://www.semanticweb.org/ontologies/2010/11/rulesMatriculate.owl es el

identificador, en el contexto de la Web, de la ontología reglas de matriculación (almacenada en el

archivo rulesMatriculate.owl), desarrollada para describir las operaciones del servicio Web

Matriculate (o también llamado wsMatriculate). La ontología de reglas se apoyo en las

ontologías anteriores, bolsa de trabajo y miembros de la bolsa de trabajo para la elaboración de la

misma.

La regla rulesMatriculate es empleada para anotar la operación proofRegister del servicio

wsMatriculate. Esta regla establece que si un individuo es un nuevo estudiante y presenta una

nota de inscripción entonces el nuevo estudiante es registrado con la nota de inscripción

presentada. Por lo tanto, la condición que debe cumplirse para que la operación pueda

ejecutarse satisfactoriamente es que previamente exista una instancia nt de la clase

New_Student y una instancia n de la clase Notice. El resultado de la acción realizada por la

operación proofRegister será la creación de la relación NoticeOf entre n, de la clase Notice con

la instancia nt de la clase New_Student.

En el panel derecho superior se puede observar el enunciado de la regla. A la izquierda se

encuentran las clases, propiedades e individuos importados de las ontologías bolsa de trabajo

y miembros de la bolsa de trabajo, respectivamente.

75.00 Tesis

74

rulesMatriculate: relaciones inferidas en

http://www.semanticweb.org/ontologies/2010/11/rulesMatriculate.owl

Después de correr el razonador Pellet integrado a Protégé y, como consecuencia de la regla, el

razonador infiere que la instancia n de la clase Notice está relacionada con la instancia nt de la

clase New_Student, por las propiedades NoticeOf y RecordOf. La última relación es inferida

debido a que NoticeOf es subproperty de RecordOf. Luego, como NoticeOf es propiedad

inversa de hasNotice, el razonador también infiere, ahora para la instancia nt, la relación

hasNotice con la instancia n y por ser hasNotice subproperty de hasRecord, también la

relación hasRecord con n. Se puede observar a la izquierda la instancia n (resaltado en azul)

y, a la derecha, sus relaciones inferidas con la instancia nt (resaltado en amarillo).

75.00 Tesis

75

rulesInscribeJobBag: DL-Safe Rule del servicio Web semántico wsInscribeJobBag en

http://www.semanticweb.org/ontologies/2010/11/rulesInscribeJobBag.owl

.

El iri http://www.semanticweb.org/ontologies/2010/11/rulesInscribeJobBag.owl es el

identificador, en el contexto de la Web, de la ontología reglas de inscripción de la bolsa de

trabajo (almacenada en el archivo rulesInscribeJobBag.owl), desarrollada para describir las

operaciones del servicio Web InscribeJobBag (o también llamado wsInscribeJobBag). La

ontología de reglas se apoyo en las ontologías anteriores, bolsa de trabajo y miembros de la bolsa

de trabajo para la elaboración de la misma

La regla rulesInscribeJobBag es empleada para anotar la operación applyForJobBag del

servicio wsInscribeJobBag. Esta regla establece que si un nuevo estudiante posee una nota y

existe un curriculum entonces puede inscribirse a la bolsa de trabajo y obtener un registro de

postulante de trabajo. Por lo tanto, la condición que debe cumplirse para que la operación

pueda ejecutarse satisfactoriamente es que previamente existan instancias c, n y nt de las

clases Curriculum, Notice y New_Student respectivamente, y que la instancia n esté asociada

con la instancia nt (n sea nota de nt). El resultado de la acción realizada por la operación

applyForJobBag será la creación de una nueva relación entre la instancia jp de la clase

JobPostulant con la instancia nt de la clase New_Student.

En el panel derecho superior se puede observar el enunciado de la regla. A la izquierda se

encuentran las clases, propiedades e individuos de las ontologías bolsa de trabajo y miembros

de la bolsa de trabajo, respectivamente.

75.00 Tesis

76

rulesInscribeJobBag: relaciones inferidas

http://www.semanticweb.org/ontologies/2010/11/rulesInscribeJobBag.owl

Después de correr el razonador Pellet integrado a Protégé y, como consecuencia de la regla, el

razonador infiere para el individuo nt las relaciones por medio de las propiedades

hasJobPostulant y hasRecord (esta última relación inferida debido a que hasJobPostulant es

subproperty de hasRecord) con el individuo jp. Consecuentemente, como hasJobPostulant es

propiedad inversa de JobPostulantOf, el razonador también para el individuo jp las relaciones

JobPostulantOf y RecordOf con nt (esta última relación por ser JobPostulantOf subproperty

de RecordOf). Se puede observar a la izquierda al individuo nt (resaltado en azul) y, a la

derecha, las relaciones inferidas con jp (resaltado en amarillo).

Las relaciones inferidas para el individuo nt, hasRecord y hasNotice con el individuo n de la

clase Notice son debidas al antecedente de la regla InscribeJobBag.

Las relaciones inferidas para el individuo nt, hasRecord y hasJobPostulant con el individuo jp

son debidas al consecuente de la regla InscribeJobBag.

Las relaciones inferidas mostradas son sólo algunas. El razonador también infiere otras

relaciones para los individuos jp y n.

75.00 Tesis

77

rulesPostulateJobG: DL-Safe Rule del servicio Web semántico wsPostulateJobG en

http://www.semanticweb.org/ontologies/2010/11/rulesPostulateJobG.owl

El iri http://www.semanticweb.org/ontologies/2010/11/rulesPostulateJobG.owl es el

identificador, en el contexto de la Web, de la ontología reglas para las postulaciones a trabajos

profesionales en la bolsa de trabajo (almacenada en el archivo rulesPostulateJobG.owl),

desarrollada para describir las operaciones del servicio Web PostulateJobG (o también llamado

wsPostulateJobG). La ontología de reglas se apoyo en las ontologías anteriores, bolsa de trabajo

y miembros de la bolsa de trabajo para la elaboración de la misma

La regla rulesPostulateJobG es empleada para anotar la operación postulateJob del servicio

wsPostulateJobG. Esta regla establece que si un nuevo estudiante esta registrado en la bolsa de

trabajo (posee un registro de postulante de trabajo asociado) y además es graduado entonces

puede postularse a una oferta de trabajo profesional quedando registrado su postulación de

trabajo profesional. Por lo tanto, la condición que debe cumplirse para que la operación

pueda ejecutarse satisfactoriamente es que previamente existan instancias nt y jp de las

clases New_Student y JobPostulant, respectivamente, que la instancia jp esté asociada con la

instancia nt y que, a su vez, la instancia nt este asociada con la instancia notice_graduate, de la

clase Notice. El resultado de la acción realizada por la operación postulateJob será la creación

de la relación hasPostulationProfessionalJob entre una instancia pprof de la clase

PostulationProfessionalJob con nt.

En el panel derecho superior se puede observar el enunciado de la regla. A la izquierda se

encuentran las clases, propiedades e individuos importados de las ontologías bolsa de trabajo

y miembros de la bolsa de trabajo, respectivamente.

75.00 Tesis

78

rulesPostulateJobG: relaciones inferidas en

http://www.semanticweb.org/ontologies/2010/11/rulesPostulateJobG.owl

Después de correr el razonador Pellet integrado a Protégé y, como consecuencia de la regla, el

razonador infiere para el individuo nt las relaciones hasPostulationProfessionalJob y

hasRecord con el individuo pprof de la clase PostulationProfessionalJob (la última relación es

inferida debido a que hasPostulationProfessionalJob es subproperty de hasRecord). Se puede

observar a la izquierda al individuo nt (resaltado en azul) y, a la derecha, las relaciones

inferidas con pprof y con jp (resaltado en amarillo) y las relaciones afirmadas (resaltadas en

verde).

Las relaciones inferidas para el individuo nt, hasJobPostulant y hasRecord con el individuo jp

son debidas al antecedente de la regla rulesPostulateJobG.

La relaciones inferidas para el individuo nt, hasPostulationProfessionalJob y hasRecord con

el individuo pprof son debidas al consecuente de la regla rulesPostulateJobG.

Las relaciones inferidas mostradas son sólo algunas. El razonador también infiere relaciones

para el individuo jp y gd. Para el caso de pprof, como RecordOf es propiedad inversa de

hasRecord, el razonador infiere que el individuo pprof tiene una relación RecordOf con nt.

75.00 Tesis

79

rulesPostulateJobU: DL-Safe Rule del servicio Web semántico wsPostulateJobU en

http://www.semanticweb.org/ontologies/2010/11/rulesPostulateJobU.owl

El iri http://www.semanticweb.org/ontologies/2010/11/rulesPostulateJobU.owl es el

identificador, en el contexto de la Web, de la ontología reglas para las postulaciones a trabajos

profesionales de la bolsa de trabajo (almacenada en el archivo rulesPostulateJobG.owl),

desarrollada para describir las operaciones del servicio Web PostulateJobG (o también llamado

wsPostulateJobG). La ontología de reglas se apoyo en las ontologías anteriores, bolsa de trabajo

y miembros de la bolsa de trabajo para la elaboración de la misma

La regla rulesPostulateJobU es empleada para anotar la operación postulateJob del servicio

wsPostulateJobU. Esta regla establece que si un nuevo estudiante está registrado en la bolsa de

trabajo (posee un registro de postulante de trabajo asociado) y además es no graduado

entonces puede postularse a una oferta de pasantía quedando registrado la postulación de

pasantía efectuada. Por lo tanto, la condición que debe cumplirse para que la operación pueda

ejecutarse satisfactoriamente es que previamente existan instancias nt y jp de las clases

New_Student y JobPostulant, respectivamente, que la instancia jp esté asociada con la

instancia nt y que, a su vez, la instancia nt este asociada con la instancia

notice_undergraduate, de la clase Notice. El resultado de la acción realizada por la operación

postulateJob será la creación de la relación hasPostulationPassantJob entre una instancia

ppas de la clase PostulationPassantJob con nt.

En el panel derecho superior se puede observar el enunciado de la regla. A la izquierda se

encuentran las clases, propiedades e individuos de las ontologías bolsa de trabajo y miembros

de la bolsa de trabajo, respectivamente

75.00 Tesis

80

rulesPostulateJobU: relaciones inferidas en

http://www.semanticweb.org/ontologies/2010/11/rulesPostulateJobU.owl

Después de correr el razonador Pellet integrado a Protégé y, como consecuencia de la regla, el

razonador infiere para el individuo nt las relaciones hasPostulationPassantJob y hasRecord

con el individuo ppas de la clase PostulationPassantJob (la última relación es inferida debido a

que hasPostulationPassantJob es subproperty de hasRecord). Se puede observar a la

izquierda al individuo nt (resaltado en azul) y, a la derecha, las relaciones inferidas con ppas y

con jp (resaltado en amarillo) y las relaciones afirmadas (resaltadas en verde).

Las relaciones inferidas para el individuo nt, hasJobPostulant y hasRecord con el individuo jp

son debidas al antecedente de la regla rulesPostulateJobU.

La relaciones inferidas para el individuo nt, hasPostulationPassantJob y hasRecord con el

individuo ppas son debidas al consecuente de la regla rulesPostulateJobU.

Las relaciones inferidas mostradas son sólo algunas. El razonador también infiere relaciones

para el individuo jp y ug. Para el caso de ppas, como RecordOf es propiedad inversa de

hasRecord, el razonador infiere que el individuo ppas tiene una relación RecordOf con nt.

75.00 Tesis

81

Capítulo III

Agentes

3.1 Generalidades

3.1.1 Agente y entorno La IA es el campo de las ciencias computacionales que trata de mejorar el desempeño de las

computadoras al dotarlas de características asociadas con la inteligencia humana, como la

capacidad de entender el lenguaje natural o de razonar bajo condiciones de incertidumbre

para tomar mejores decisiones. Los agentes provienen de la IA (robótica, minería de datos,

manipulación inteligente de base de datos, etc.). [Mansilla Espinosa; 2008]

[Mansilla Espinosa; 2008] Diagrama de tipos de agentes

Según [Mancilla Espinosa; 2008], un agente es aquello que percibe su ambiente mediante

sensores y responde o actúa en él mediante efectores. Un tipo de agente particular son los

agentes de software, un programa de computación que se ejecuta en un ambiente y realiza

acciones dentro de éste para alcanzar las metas para las cuales fue diseñado y sus

percepciones y acciones están dadas por instrucciones de programas en algún lenguaje en

particular.

Qué es un agente es una cuestión abierta, exhibiendo el riesgo de que cualquier programa

sea denominado agente. Se pueden distinguir dos nociones extremas de agentes: una débil y

otra fuerte.

Autonomous Agents

Software Agents

Computational Agents Robotic Agents Biological Agents

Artificial Life Agents

Task-Specific Agents Entertaiment Agents Virus

75.00 Tesis

82

Una noción débil consiste en definir un agente como una entidad capaz de intercambiar

mensajes utilizando un lenguaje de comunicación de agentes. Esta definición es la más

utilizada dentro de la ingeniería de software con el fin de conseguir la interoperabilidad entre

aplicaciones a nivel semántico utilizando la tecnología emergente de agentes.

Una noción más fuerte surge de una propuesta de programación orientada a agentes (AOP).

Un agente es visto como una entidad dotada de componentes mentales como creencias,

capacidades, elecciones y acuerdos.

Los agentes inteligentes son considerados una pieza de software que ejecuta una tarea

determinada, utilizando información recolectada del ambiente, para actuar de manera

apropiada y completar la tarea de manera exitosa. El software debe ser capaz de auto

ajustarse basándose en los cambios que ocurren en su ambiente, de forma tal, que un cambio

en las circunstancias produzca el resultado esperado.

[Wooldridge; 1998] citó que un agente, situado en algún entorno, es un sistema de

computadora capaz de actuar de manera autónoma en ese entorno a fin de cumplir sus

objetivos.

En la mayoría de dominios de complejidad razonable, un agente no tiene control completo

sobre su entorno. En el mejor de los casos, tiene control parcial desde que puede influir en él.

Desde el punto de vista del agente, significa que la misma acción ejecutada dos veces bajo las

mismas circunstancias podría tener efectos diferentes y, en particular, podría fallar en

conseguir el efecto deseado. Los agentes deben estar preparados para la posibilidad de fallas.

Esta situación es formalmente resumida diciendo que los entornos son no deterministas.

Normalmente, el agente tendrá un repertorio de acciones y efectos asociados que

representarán la capacidad del agente para modificar su entorno. Un conjunto de

precondiciones asociadas a las acciones definen situaciones posibles de aplicación. El

problema clave que deben enfrentar los agentes es decidir cuál de esas acciones ejecutar para

satisfacer, de la mejor manera posible, sus objetivos. La toma de decisiones es un proceso

complejo afectado por propiedades del entorno: accesible o inaccesible, determinista o no

determinista, episódico o no episódico, estático o dinámico, discreto o continuo.

Un entorno accesible permite al agente obtener información completa, precisa y actualizada.

La mayoría de entornos medianamente complejos (el mundo físico, Internet) son

inaccesibles. Cuanto más accesible sea el entorno más fácil es construir agentes para operar

sobre él. En un entorno determinista cualquier acción tiene un efecto garantizado, no hay

incertidumbre sobre el estado que resultará de ejecutar una acción. El mundo físico es

considerado no determinista. En un entorno episódico, la performance de un agente es

dependiente de un número de episodios discretos sin vínculo entre la performance de un

agente en diferentes escenarios. Un ejemplo de un entorno episódico es un sistema de

ordenamiento de mails. Un entorno estático permanece sin cambios excepto por la

performance de las acciones realizadas por el agente. Un entorno dinámico tiene otros

procesos operando en él y los cambios están más allá del control del agente. Un entorno

75.00 Tesis

83

discreto tiene un número de acciones y percepciones fijas y finitas. Un ejemplo de entorno

discreto es el juego de ajedrez y de entorno dinámico la conducción de un taxi. Los entornos

más complejos son inaccesibles, no deterministas, no episódicos, dinámicos y continuos.

Como ejemplo de agentes se pueden mencionar los sistemas de control y los “daemons” de

software.

Un sistema de control simple es el termostato. El termostato tiene un sensor para detectar la

temperatura del lugar. El sensor es ubicado dentro del lugar y produce como salida una de dos

señales: una que indica que la temperatura está demasiado baja y otra que indica que la

temperatura está bien. Las acciones disponibles para el termostato son calentar y no calentar.

La acción calentar tendrá el efecto de calentar la temperatura del lugar pero este efecto no

puede ser garantizado (la puerta del lugar podría estar abierta). El componente de toma de

decisiones del termostato (extremadamente simple) implementa las siguientes reglas: si está

frío entonces encender calefactor, si la temperatura está bien entonces apagar el calefactor.

Sistemas de control más complejos tienen que considerar estructuras de decisión más ricas

(sondas espaciales autónomas, reactores nucleares).

Los daemons (como los procesos background en UNIX) son otro ejemplo de agentes, ellos

monitorean un entorno de software y ejecutan acciones para modificarlo. Mientras el agente

termostato estaba en un entorno físico, los daemons están en un entorno de software. Ellos

obtienen información del entorno por ejecutar funciones y acciones de software. El

componente de toma de decisiones es simple como el del termostato. Por lo tanto, los agentes

son simples sistemas de computadora capaces de acciones autónomas de manera de

encontrar sus objetivos de diseño. Un agente típicamente sensará su entorno (por sensores

físicos en el caso de agentes ubicados en el mundo físico o por sensores de software en el

caso de agentes de software) y tendrá disponible un repertorio de acciones para modificar su

entorno, las cuales pueden responder en forma no determinista.

Los agentes exhiben proactividad cuando la decisión de tomar la iniciativa contribuya a lograr

sus objetivos. En entornos que cambian y en particular cuando las condiciones de un

procedimiento cambian mientras se está ejecutando, su comportamiento podría quedar

indefinido (con frecuencia se romperá). En entornos dinámicos, ejecutar un procedimiento

sin considerar que las condiciones que lo sustentan sean válidas es una estrategia pobre. En

tales entornos el agente debe ser reactivo. Es decir, debe ser sensible a 1) los eventos que

ocurran en su entorno y que afecten sus objetivos o, 2) a las condiciones que sustentan sus

procedimientos en ejecución, a fin de alcanzar sus objetivos. La habilidad social permite a los

agentes interactuar con otros agentes como un medio más hacia la concreción de sus

objetivos.

En otros casos, un sistema multi-agente (MAS) presenta ventajas sobre agentes individuales

como fiabilidad, robustez, modularidad, escalabilidad, adaptabilidad, concurrencia,

paralelismo y dinamismo. Aparece entonces la necesidad de lenguajes de comunicación y de

mecanismos que permitan coordinar a un grupo de agentes. En particular, los agentes

pueden cooperar (si tienen los mismos objetivos) o competir (si existe conflicto de

objetivos) distinguiendo de esa manera sistemas que resuelven problemas distribuidos (por

cooperación entre agentes) de sistemas abiertos (agentes con diferentes objetivos). Los

mecanismos más habituales en agentes cooperativos son las estructuras organizacionales

(centralizadas y distribuidas), la planificación multi-agente, contratos y cooperación de

75.00 Tesis

84

funcionalidad mientras que en agentes competitivos lo habitual son mecanismos de

negociación (formación de coaliciones, mecanismos de mercado, teoría de negociación, voto,

subastas, asignación de tareas, etc.). Lenguajes de comunicación de agentes son el

“Knowledge Query and Manipulation Language”103 (KQML) y “Foundations for Intelligent

Physical Agents-Agents Communication Language104” (FIPA-ACL).

La programación orientada a agentes (AOP) emerge como un nuevo paradigma de

programación que, basado en un MAS, es apropiado para desarrollar sistemas que operan

en entornos complejos, dinámicos e impredecibles (como control de tráfico aéreo, cuidado de

la salud y sistemas de control industriales). El Agent-Oriented Software Engineering (AOSE)

permite crear metodologías y herramientas que facilitan el desarrollo y mantenimiento de

software basado en agentes. Las metodologías extienden las metodologías tradicionales de

software y son propuestas a fin de aclarar el proceso de desarrollo de un MAS (MAS-

CommonKADS105, ZEUS106, GAIA107, MaSE108, INGENIAS109).

Esfuerzos hacia la estandarización de la tecnología de agentes son llevados a cabo por

organizaciones como FIPA y OMG Agent PSIG. FIPA apunta a producir estándares para la

interoperación de agentes de software. Las especificaciones desarrolladas identifican roles

necesarios para la plataforma y la administración de agentes como el Agent Managment

System (AMS) y el Directory Facilitator (DF) los cuales actúan como white-pages y yellow-

pages110, respectivamente. Existen diferentes implementaciones de la plataforma de agentes

que adhieren al estándar FIPA como la Java Agent Development Enviroment (JADE) y ZEUS,

entre las más utilizadas.

Como trabajo futuro en el campo de la tecnología de agentes [Sanchez-García et al.; 2009]

queda la creación de herramientas, técnicas y metodologías que soporten el desarrollo de

sistemas de agentes, automatización de la especificación, desarrollo y administración de

sistemas de agentes, integración de componentes y características, definición del balance

apropiado entre predicción y adaptabilidad y la vinculación con otras ramas de la

computación y disciplinas como economía, sociología y biología. En su trabajo destacan que

tendencias emergentes sugieren que las tecnologías de agentes serán vitales en el corto y

103

Lenguaje de Consulta y Manipulación del Conocimiento. 104 Fundamentos para Agentes Físicos Inteligentes - Lenguaje de Comunicación de Agentes. 105

Para el análisis y desarrollo de sistemas intensivos de conocimiento, proporciona herramientas para la

administración de conocimiento corporativo, el desarrollo de sistemas de conocimiento para los procesos de

negocios seleccionados, entre otras. http://www.commonkads.uva.nl/ 106 Herramienta para construir sistemas multi-agentes colaborativos. Define un enfoque de diseño y soporta un

entorno visual para capturar las especificaciones de agentes que son utilizadas para generar el código Java de los

agentes. http://sourceforge.net/projects/zeusagent/ 107

Metodología para análisis y diseño de agentes. Aplicable a un amplio rango de sistemas multi-agentes, trata los

aspectos a nivel macro (social) y micro (agente) de los sistemas. Se basa en la visión de un sistema multi-agente

como una organización computacional, consistente de varios roles interactuando. 108

Metodología de propósito general para el desarrollo de sistemas multi-agentes que se basa en principios de la

ingeniería de software. Divide el proceso de desarrollo en dos fases: análisis y diseño. Para cada fase provee el

conjunto de etapas necesarias: objetivos, casos de uso y roles para el análisis y creación de clases, interacción,

despliegue de clases y diseño del sistema, para el diseño. 109

Metodología para el desarrollo de sistemas multi-agentes que integra resultados del área de la tecnología de

agentes con procesos de desarrollo de software como RUP (Rational Unified Process). La metodología se basa sobre

la definición de un conjunto de metamodelos que describen los elementos que forman un MAS y permite definir un

lenguaje de especificación para MAS. http://grasia.fdi.ucm.es/main/node/220 110

Desarrollado en la sección 1.4.2, “Directorio de Servicios”.

75.00 Tesis

85

mediano plazo como hoy son los servicios Web, grid computing, etc.

Es necesario mencionar que las tecnologías de agentes presentan deficiencias al utilizar

protocolos de comunicación como IIOP o RMI los cuales no pueden atravesar firewalls

empresariales. Una solución a este problema implicaría la creación de gateways entre pares

de empresas. No obstante, este enfoque presenta un problema adicional relacionado al

tratamiento de enlaces dinámicos, los cuales no podrían ser establecidos entre dos entidades

que no hayan sido preparadas para eso, limitando claramente el dinamismo.

3.1.2 Agentes y objetos Los programadores acostumbrados a trabajar con objetos, no suelen ver cuál es la idea con

agentes. Se hace necesario recordar a los objetos definidos como entidades computacionales

que encapsulan algún estado, que pueden ejecutar acciones o métodos sobre ese estado y

comunicarse entre ellos mediante el paso de mensajes.

Similitudes y diferencias existen entre objetos y agentes. La primera diferencia trata con el

nivel de autonomía que cada uno posee. Desde que una variable de instancia (o métodos)

puede ser declarada privada para ser accesible sólo desde dentro del objeto, un objeto puede

ser pensado como exhibiendo autonomía (control) sobre su estado pero no sobre su

comportamiento. Si un método m es declarado público, el objeto no puede controlar ejecutar

el método o no. Los agentes no son pensados como invocando métodos sino como solicitando

ejecutar acciones. El foco de control con respecto a la decisión de ejecutar una acción, en el

caso orientado a objetos, se encuentra en el objeto que invoca el método y en el caso de

agentes, en el agente que recibe el pedido. El siguiente slogan, en inglés, destaca esta

diferencia entre objetos y agentes: “Objects do it for free; agents do it for money”.

Otra diferencia importante tiene que ver con la noción de comportamiento autónomo y

flexible (reactivo, proactivo, social) de un sistema de agentes. El modelo estándar de objetos

nada menciona acerca de construir sistemas que integren este comportamiento. Se podría

objetar que es posible construir programas orientados a objetos que integren el

comportamiento pero sólo se perdería el punto, que es que tal comportamiento no hace a la

programación orientada a objetos.

La siguiente diferencia es que cada agente tiene su propio hilo de control (en el modelo de

objetos estándar hay un simple hilo de control en el sistema). A pesar de que existen varios

lenguajes que permiten concurrencia en programación orientada a objetos, no capturan la

idea de agentes como entidades autónomas (con reactividad, proactividad y habilidad social).

Tal vez, lo más cercano en la comunidad orientada a objetos se encuentre en la idea de

objetos activos. Un objeto activo es el que abarca su propio hilo de control. Los objetos

activos son generalmente autónomos lo que aquí significa que pueden exhibir algún

comportamiento sin que exista otro objeto que los opere por encima. Los objetos pasivos, en

cambio, sólo pueden someterse a un cambio de estado cuando explícitamente son operados

por encima. Por lo tanto, los objetos activos son esencialmente agentes los cuales no

necesariamente tienen la habilidad para exhibir comportamiento flexible autónomo.

La visión tradicional de un objeto y de un agente concluye con la lista a continuación:

75.00 Tesis

86

� Los agentes encarnan una noción más fuerte de autonomía que los objetos y en particular

deciden si ejecutar una acción a partir del pedido de otro agente o no.

� Los agentes son capaces de comportamiento flexible (reactivo, proactivo, social) y el

modelo estándar de objetos no dice nada al respecto.

� Un sistema multi-agente es inherentemente multi-hilo donde cada agente posee al menos

un hilo de control.

3.1.3 Agentes y sistemas expertos Los sistemas expertos constituyen una etapa de la Inteligencia Artificial. Un sistema experto

es capaz de resolver problemas o dar consejos en algún dominio de conocimiento. Un

ejemplo de un sistema experto es MYCIN, el cual asiste a los médicos en el tratamiento de

infecciones de la sangre en personas. Un usuario presenta al sistema un número de casos, los

cuales el sistema emplea a fin de derivar alguna conclusión. MYCIN actúa como consultor: no

opera directamente sobre humanos o sobre algún entorno. Entonces, la diferencia más

importante entre agentes y sistemas expertos es que los sistemas expertos son

inherentemente incorpóreos [Wooldridge, 1998]. Esto significa que los mismos no

interactúan directamente con el entorno, ellos no consiguen su información vía sensores

sino a través de un usuario actuando como intermediario. De la misma manera, ellos no

actúan sobre algún entorno sino más bien entregan una respuesta o aconsejan a terceros.

Además, a los sistemas expertos no se les requiere el ser capaces de cooperar con otros

sistemas expertos. A pesar de estas diferencias, algunos sistemas expertos (particularmente

los que ejecutan control de tareas en tiempo real) logran un gran parecido con agentes.

Comparación entre sistemas expertos y agentes.

3.1.4 Agentes y servicios A fin de despejar confusiones en torno de agentes y servicios se enuncian primero las

características desarrolladas hasta acá.

Los agentes poseen conocimiento de sí mismos, de su entorno y de mecanismos de

resolución de problemas, están fuertemente basados en enfoques teóricos; son un recurso

limitado y persistente; proveen a sus pares de servicios en cualquier momento y cuentan con

limitado soporte pragmático para la comunidad de usuarios (sistemas, software y

herramientas). Esto último es consecuencia de que la investigación de sistemas multi-agente

se enfocó en desarrollar principios y mecanismos formales para resolver problemas

distribuidos a nivel conocimiento, en términos de los objetivos que la comunidad multi-

agente debía abarcar y las tareas que podían solucionar.

Sistemas expertos Agentes

� Sistemas cerrados

� Sistemas de decisión centralizados

� Interacción con el usuario bajo petición del

usuario

� Interactúan con el entorno

� Distribución de la toma de decisiones:

comportamiento emergente

� Mayor grado de interacción con el usuario

� Interacción con otros agentes

75.00 Tesis

87

Los servicios, en cambio, son procesos transitorios y stateless111, que existen sólo durante la

ejecución del servicio. Son instanciados para ejecutar una tarea específica siendo posible la

provisión de servicios escalables y concurrentes. A diferencia de la tecnología de agentes, la

investigación de servicios se enfocó en la comunidad de usuarios, resultando en una

tecnología bottom-up pragmática que permitía la construcción de sistemas orientados a

servicios. Los puntos principales fueron el desarrollo de estándares para lograr interfaces

bien definidas y declarativas, workflows y protocolos y no en mecanismos que ayudan al

servicio a ejecutar la tarea. Se desarrollaron herramientas para construir y desarrollar

software distribuido a gran escala. El desarrollo de servicios Grid112 se debió al desarrollo

pragmático de tecnologías, estándares, políticas, ontologías compartidas y plataformas que

permiten la realización de entornos distribuidos.

[Huhns; 2002] Los servicios Web utilizan tres protocolos diferentes a fin de publicar, buscar

y conectarse. Los agentes, en cambio, utilizan un protocolo para todas sus interacciones, el

Agent-Communication Language (ACL)

Los servicios Web se basan en una tríada de funcionalidades, a saber, SOAP provee los

protocolos necesarios para la comunicación entre sistemas, WSDL describe los servicios en

una forma legible por computadora, especificando nombres de funciones, parámetros

requeridos y resultados, UDDI permite a los clientes (usuarios y negocios) una manera para

encontrar servicios por especificar un registro o un yellow-pages de servicios.

Sin embargo, diferenciar agentes y servicios es problemático porque alguien podría

argumentar que un agente puede ser implementado empleando tecnología de servicios Web o

que se puede incorporar mecanismos adaptativos e inteligentes en el diseño de servicios

111

Desarrollado en la sección 1.1.3 “Características Secundarias”. 112 Combinación de recursos computacionales desde múltiples dominios administrativos a fin de lograr un objetivo

común. Se distingue de sistemas de procesamiento convencionales y alto rendimiento por ser ofrecer mayor

desacoplamiento, heterogeneidad y dispersión geográfica. Son construidos con la ayuda de middlewares.

BIND

SOAP ACL

PUBLISH

WSDL ACL

FIND

UDDI ACL

Servicio broker

Agente broker

Proveedor de servicio

Sistema multi-agente

(servicio distribuido

cooperativo)

Usuario de servicio

Agente de usuario

Servicio

Agente

75.00 Tesis

88

Web. Los investigadores han propuesto muchas definiciones para agentes, no obstante,

siempre aparece un ejemplo que a pesar de satisfacer estrictamente la definición en espíritu,

no es un agente.

[Payne; 2008] distingue agentes y servicios Web al discutir las cinco características de

agentes propuestas por Jennings.

La primera característica es que los agentes son entidades que resuelven problemas con

interfaces y límites bien definidos. Los servicios Web existen como workflows claramente

articulados y con protocolos formalmente validados. Los tipos y estructuras de datos definidos

crean los mecanismos para dirigir mensajes y desarrollar herramientas a fin de utilizar

servicios Web. En la visión de agentes, una variedad de métodos de interacción pueden ser

utilizados. Esas interacciones ocurren a nivel conocimiento de mensajes en lenguajes

declarativos como KQML o FIPA. Existe énfasis en razonar los mensajes recibidos, obtener

conocimiento del entorno y de las motivaciones y capacidades de sus pares para determinar

dinámicamente como resolver un problema durante una ejecución. Un agente puede

descomponer un problema en partes y elegir delegar tareas o coordinar con otros agentes

como resolver el problema. Esta descomposición al no ser prescripta sino realizada

dinámicamente permite una mejor adaptación a entornos y contextos cambiantes.

La segunda característica es que los agentes son capaces de exhibir una comportamiento

flexible para la resolución de problemas a fin de cumplir sus objetivos de diseño (reactivo y

proactivo). Los agentes son inherentemente comunicativos y socialmente conscientes. Ellos

responden a cambios en su entorno y a mensajes de pares como resultado de tareas internas

planificadas. Estos disparadores pueden motivar la intención de lograr algún objetivo,

resultando en comportamiento proactivo cuando es necesario. Los servicios Web, en cambio,

son procesos transitorios cuya instanciación y existencia es disparada por un Web Server

que recibe un mensaje. Una ventaja de esta instanciación (factory-based113) por cada

invocación de servicio recibida es que los proveedores pueden ofrecer servicios

concurrentes en respuesta a pedidos simultáneos.

Aunque un servicio Web puede iniciar comunicación con otro servicio Web cuando ejecuta

su tarea, es todavía reactivo porque aún forma parte de las acciones preescritas que se

disparan luego del mensaje instanciador original. Aunque se construya un servicio para que

sea proactivo, esto al final introduciría nociones de agentes en el diseño de servicios Web.

La tercera característica es que los agentes son diseñados para cumplir roles específicos, con

objetivos particulares. Un servicio Web existe para ejecutar una tarea, como sería ofrecer

una funcionalidad e-business. Compañías como eBay y Amazon.com ofrecen acceso a sus

tecnologías por servicios Web, ya sea para facilitar el comercio con terceros o para ofrecer

acceso a sus recursos. El comportamiento de agente es motivado por nociones más

abstractas, mentales como knowledge, intention, belief y obligation. Típicamente un agente

es diseñado para maximizar alguna utilidad a través de comportamiento racional. Cuando se

ejecuta una tarea, un agente puede intentar determinar la utilidad ganada en ejecutar su

113 Patrón de diseño creacional en la que una clase implementa métodos para crear instancias de objetos (las

instancias pueden ser de la misma clase o de otras). Esta clase tiene entre sus responsabilidades la creación de

instancias de objetos pero puede tener también otras responsabilidades adicionales.

75.00 Tesis

89

acción sobre la base de una posible recompensa o ventaja percibida (considerando los costos

incurridos). Si un agente no percibe ventaja alguna, podría decidir no ejecutar la tarea,

mientras que, un servicio Web recibiendo el mismo pedido ejecutará la tarea.

La cuarta característica es que los agentes son ubicados en un entorno particular, el cual

observan y sobre el cual tienen control parcial; ellos reciben entradas relacionadas con el

estado de su entorno por medio de sensores y actúan sobre él por medio de sus efectores.

Esta característica es atribuida a agentes de hardware pero igualmente aplica a agentes de

software. Sin embargo, los sensores pueden proveer sólo conocimiento parcial de su

entorno. Además en entornos dinámicos con numerosos agentes, el conocimiento puede ser

pasado. Como los agentes tienen control parcial sobre su entorno necesitan evaluar su

contexto. Esto, con frecuencia, necesita de la colaboración entre pares para lograr los

cambios deseados más allá de su esfera de influencia. Los agentes que son conscientes de su

entorno también tienen conocimiento de nuevos agentes, los cuales podrían utilizar para

resolver problemas futuros. Sin embargo la habilidad para observar e interrogar pares puede

producir un modelo de entorno más sofisticado, el cual pone en duda si a los agentes puede

ser confiada lograr una tarea o gozar de reputación para engañar o incumplir contratos. Los

servicios son igualmente limitados con respecto al alcance de observar hechos y las acciones

que pueden ejecutar para manipular y afectar su entorno. Sin embargo porque los servicios

Web son típicamente reactivos, el conocimiento que ellos procesan es sólo el que el

desarrollador consideró necesario cuando los diseñó. Esto elimina la posibilidad de

aprovechar conocimiento oportunista.

La quinta característica es que los agentes son autónomos, ellos controlan su estado interno y

su comportamiento. Autonomía es una característica esencial de los agentes. Los agentes

son conscientes de sí mismos. Por adquirir y retener conocimiento en el tiempo, ellos

pueden aprender estrategias alternativas y soluciones a problemas para producir soluciones

más optimas. Un agente puede evolucionar en sus comportamientos sin dirección del

usuario o su propietario. Los servicios Web raramente son autónomos, salvo que la noción

de autonomía sea incluida en el diseño del servicio, lo cual involucraría construir servicios

stateful114 y persistentes. Ya algunos investigadores han empezado a explorar esas nociones

de autonomía y comportamiento autónomo para servicios Web, pero hasta ahora se han

utilizado nociones de agentes para lograr tal autonomía.

Agregar persistencia, autonomía e identidad a los servicios Web debilitaría la distinción entre

agentes y servicios.

Debido a 1) inconvenientes de las tecnologías de agentes, 2) la necesidad inherente de

entidades de software en entornos de SWS y 3) los beneficios anunciados por tener agentes y

servicios trabajando cooperativamente, numerosos proyectos desarrollaron frameworks

integrando ambas tecnologías[Sánchez-García et al.; 2009]. Sin embargo, surgen

discusiones sobre la formas de lograr esa integración. Los escenarios posibles son: 1) que los

servicios Web provean la funcionalidad de bajo nivel y los agentes la funcionalidad de alto

nivel por usar, combinar y coreografiar servicios Web, obteniendo funciones de valor

agregado, 2) que la comunicación en servicios Web y agentes sea equivalente (agentes como

wrappers de servicios) y 3) ambos tipos permanezcan separados creando un espacio de

114

Desarrollado en la sección 1.1.3 “Características secundarias”

75.00 Tesis

90

servicios heterogéneos e interoperando a través de gateways y procesos de traslación.

Tecnologías de agentes inteligentes y servicios Web semánticos permiten alcanzar logros

notables con, en algunos casos, superposición de funcionalidades [Sánchez-García et al.;

2009]. Sin embargo, independientemente de los beneficios de estas tecnologías, su

funcionalidad se ve limitada cuando son aplicadas por separado, lo que impide que sean

utilizadas a escala masiva en la sociedad, particularmente en la industria. A pesar de que

los paradigmas de agentes y servicios, a menudo, son considerados similares, y por lo tanto

compitiendo entre sí, diferentes investigaciones demostraron que una interacción

cooperativa puede conducir al desarrollo de mejores aplicaciones. Como ejemplo, los

mecanismos factory115 utilizados por los servidores Web para crear instancias de servicios

(alivian el problema de acceso concurrente por crear nuevas instancias de servicios sobre

demanda) en entornos de recursos limitados (poder de procesamiento bajo o equipamiento

físico pobre), en proveedores con excesiva demanda o con múltiples partes generando

workflows sin formar compromisos o contratos, conducen a fallas o demoras en la ejecución

de los servicios, por lo tanto la existencia de mecanismos autónomos para soportar la

cooperación o refinar la planificación o el aprovisionamiento de servicios durante su

ejecución es sólo posible a través de agentes.

El Agents and Web Services Interoperability Working Group116 (AWSI WG) trabaja en la idea

de construir un middleware117 para manejar las principales diferencias entre tecnología de

agentes y servicios Web, a saber, utilización de protocolos de comunicación (ACL vs. SOAP),

lenguajes de descripción de servicios (DF-AgentDescription vs. WSDL) y mecanismos de

integración de servicios (DF vs. UDDI). Si bien esto facilita la integración, sin cambiar las

especificaciones e implementaciones existentes de ambas tecnologías, hace que los servicios

Web y agentes permanezcan al mismo nivel de abstracción, Como afirman [Sánchez-García

et al.; 2009], la funcionalidad provista por agentes y servicios Web es complementaria. La

idea original de las tecnologías de agentes es actuar como entidades autónomas que

incorporan capacidades inteligentes y cognitivas, lo que les permite mostrar un

comportamiento proactivo orientado a objetivos y establecer procesos de interacción,

cooperativos o competitivos, con otros agentes a fin de conseguir sus objetivos. Por otro lado,

los servicios Web involucran una evolución en cómputo distribuido y su propósito es

proveer funcionalidad accesible a todo el mundo. Estas diferencias conceptuales entre

tecnología de agentes y SWS llevan a la necesidad de tener ambas tecnologías trabajando en

entornos integrados y apreciar las ventajas de su combinación en el desarrollo de sistemas

complejos.

3.2 Clasificación Un sinfín de definiciones enuncian características de los agentes y contribuyen a que

pertenezcan a una clasificación o no. Las características más importantes de los agentes

inteligentes son:

115.Patrones creacionales como el Factory method, Abstract factory, Builder, entre otros. 116 Grupo de Trabajo para la Interoperabilidad de Servicios Web y Agentes. 117

Desarrollado en la sección 1.3.1 “Modelo orientado a mensajes – MOM”

75.00 Tesis

91

� Autonomía: un agente opera sin intervención directa humana, además tiene control

sobre sus acciones y su estado interno.

� Habilidad social: capacidad para interactuar con otros agentes inteligentes o el

usuario.

� Reactividad: perciben el entorno y responden en un tiempo razonable a los cambios

que ocurren en él.

� Proactividad: los agentes pueden reaccionar por iniciativa propia sin necesidad de

que el usuario tenga que activarlo.

� Orientación hacia el objeto final: divide una tarea compleja en varias actividades más

pequeñas a fin de lograr la meta compleja asociada.

� Racionalidad: el agente siempre actúa para lograr sus metas y nunca de forma de

evitar la consecución de las mismas.

� Adaptabilidad: el agente debe ser capaz de ajustarse a los hábitos, formas de trabajo y

necesidades del usuario.

� Colaboración: el agente debe ser capaz de determinar información importante ya que

el usuario puede proporcionar información ambigua.

Los agentes inteligentes son racionales, utilizan razonamiento basado en conocimiento.

Suelen considerar una base de conocimiento, que incorpora una serie de hechos y reglas, de

los cuales se vale un motor de inferencias.

Un agente racional ideal tiene un elemento al que hay que prestarle atención y es la “Parte de

Conocimiento Integrado”. Si las acciones que emprende el agente se basan exclusivamente

en un conocimiento integrado, haciendo caso omiso de sus percepciones, se dice que el

agente es autónomo. El auténtico agente inteligente autónomo debe ser capaz de funcionar

satisfactoriamente en una amplia gama de ambientes, considerando que se le da tiempo

suficiente para adaptarse.

[Mansilla Espinosa; 2008] Tipología de agentes

Una vez que se han revisado las características de los agentes, es posible encontrar una

Agent

Tipology

Interface

Agents

Colaborative

Agents

Information

Agents

Hybrid

Agents

Smart

Agents

Heteroeneous

Agents

Mobile

Agents

Reactive

Agents

75.00 Tesis

92

tipología; sin embargo, una reclasificación ha sido propuesta por [Mansilla Espinosa; 2008]

Su clasificación general de agentes inteligentes se basa en la relación existente entre

percepciones y acciones, aplicación a la que sirven y características especiales.

3.2.1 Clasificación dependiendo de la relación entre percepciones y acciones

� Agentes de reflejo simple: actúan encontrando una regla cuya condición coincida con

la situación actual (definida por la percepción) y efectuando la acción que corresponda

a tal regla.

� Agentes bien informados de todo lo que pasa: actualizan constantemente la

información que les permite discernir entre estados del mundo y su evolución,

además de necesitar conocer como las acciones del propio agente estarán afectando al

mundo, así se mantiene informado acerca de esas partes no visibles de él.

� Agentes basados en metas: deben ser flexibles con respecto a dirigirse a diferentes

destinos, ya que al marcar un nuevo destino, se crea en el agente una nueva conducta.

� Agentes basados en utilidad: la utilidad es una función que correlaciona un estado y

un número real mediante el cual se caracteriza el correspondiente grado de

satisfacción.

3.2.2 Clasificación de acuerdo al tipo de aplicación

� Agente de interfaz de usuario: funciona como un asistente personal, sus

características principales son la autonomía y aprendizaje. Enseña al usuario a

utilizar una aplicación en particular, poseen una base de conocimiento donde

almacena el conocimiento adquirido por el usuario o por otros agentes.

� Agentes de búsqueda: no se limitan a emplear técnicas de búsqueda, sino que además

tienen que interpretar patrones de búsqueda. Deben ser capaces de crear

información útil para el usuario a partir de pedazos de información.

� Agentes de monitoreo: avisan a los agentes de interfaz sobre algún cambio en el

contenido de alguna página Web.

� Agentes de filtrado: trabaja en base al perfil definido por el usuario. Interactúan con

los agentes de monitoreo a fin de mantener información actualizada de la Web y de los

intereses del usuario.

3.2.3 Clasificación de acuerdo a características especiales

� Agentes deliberantes o proactivos: son agentes que poseen mucho conocimiento del

entorno en el que se encuentran y son capaces de crear nuevos planes y adelantarse a

lo que va a ocurrir en su entorno. En esta clasificación se encuentra el modelo BDI118

118

Se trata de un modelo de agentes. Beliefs representa el estado del mundo (computacionalmente puede ser el valor

de una variable o una base de datos relacional), Desires (objetivos) es otro componente esencial del estado del

mundo, representa el estado final deseado (computacionalmente puede ser el valor de una variable o una estructura

de registro), Intentions representan los planes o procedimientos (computacionalmente a un conjunto de hilos

ejecutándose en un proceso a fin de lograr sus objetivos (desires). Beliefs, Desires, Intentions son los componentes

básicos de un sistema de agentes diseñado para un mundo dinámico. Los agentes de un sistema que siga el modelo

75.00 Tesis

93

(Beliefs, Desires, Intentions) y BVG119 (Beliefs, Values, Goals).

� Agentes reactivos: son sistemas estímulo-respuesta que actúan a partir de la

observación directa y continua del entorno. Se adaptan perfectamente a los entornos

dinámicos ya que no tienen que actualizar ninguna representación interna del

entorno como los agentes BDI.

� Agentes estacionarios: son un tipo de agente que no posee la capacidad de

desplazarse y salir del entorno.

� Agentes móviles: son agentes que tienen la capacidad de desplazarse a través de una

red; de esta forma cambian el entorno en el que se ejecutan. Esto reduce el consumo

de recursos en la máquina en la que se encontraba inicialmente el agente.

3.3 Matchmaking entre agentes heterogéneos En un entorno abierto como Internet, donde fuentes de información, enlaces de

comunicación y agentes pueden aparecer y desaparecer, los agentes intermediarios ayudan a

localizar soluciones alternativas. Existen dos tipos de agentes intermediarios, a saber,

matchmakers120 (también conocidos como yellow-pages services) y brokers. [Sycara et al.,

1998].

Para que un agente proveedor pueda prestar sus capacidades a otros (servicio de búsqueda,

comercio electrónico) debe primero registrarse con el matchmaker. Para eso, publica sus

capacidades enviando un mensaje en el que describe el tipo de servicio que ofrece. Otro

agente envía al matchmaker un pedido solicitando información y servicios.

Cada pedido que el matchmaker recibe es comparado con su colección actual de

publicaciones. Si existen coincidencias, el matchmaker retorna un conjunto ordenado con los

proveedores apropiados.

Un agente broker trata de contactar a los proveedores relevantes, transmitiendo el pedido al

proveedor y comunicando los resultados al solicitante.

Un matchmaker devuelve una lista de servicios y a continuación deja que interactúen los

agentes usuario y proveedor. En cambio, un broker interviene de principio a fin en esa

interacción. Un agente matchmaker reduce cuellos de botella a expensas de producir un

mayor número de interacciones entre agentes. Por el contrario, un agente broker reduce el

número de interacciones a expensas de producir un cuello de botella entre agentes.

BDI deben tener objetivos explícitos (desires) para alcanzar o manejar eventos, un conjunto de planes (intentions)

para describir como lograr esos objetivos y un conjunto de datos (beliefs) que describan el estado del mundo. 119

Se trata de un modelo de agentes basado en creencias, valores y objetivos (belief, values y goals). En este modelo

los Values (valores) son utilizados como mecanismos de decisión por el agente, los cuales no son rígidos y pueden

cambiar durante la interacción. Las Beliefs (creencias) representan lo que el agente cree saber, los Goals (objetivos)

lo que el agente quiere y los Values (valores) sus preferencias. 120 Agente intermediario que se ocupa de encontrar el proveedor apropiado.

75.00 Tesis

94

3.4 Información semántica que registran

El proceso de descubrimiento de servicios es posible si existe un lenguaje común que

describa los servicios, de manera, que otros agentes comprendan las funciones ofrecidas y

como utilizarlas. Las descripciones de servicios y agentes pueden ser depositadas en

directorios similares a las páginas amarillas.

Una forma de lograr una comprensión compartida entre agentes sería intercambiar las

ontologías necesarias para una comunicación y utilizar nuevas capacidades de

razonamiento. De esta manera se lograría una flexibilidad superior a la provista por

estandarización. [Berners-Lee et al.; 2001]

Los agentes muestran un comportamiento dual: por un lado son programas dirigidos por

objetivos que, de manera autónoma y proactiva, resuelven problemas de usuario y por otro,

poseen una dimensión social cuando interactúan como parte de un sistema multi-agente.

A fin de resolver problemas de manera autónoma, surge la necesidad de desarrollar un

modelo de su entorno, que les permita razonar acerca de cómo las acciones que ejecutan

afectan su entorno y cómo los cambios que producen conducen a sus objetivos.

Las ontologías proporcionan el framework conceptual que les permite construir esos

modelos: ellas describen el tipo de entidades que pueden encontrar, sus propiedades y que

relaciones existen entre ellas.

En su dimensión social, los agentes en un MAS, interactúan unos con otros, pueden competir

por recursos o colaborar hacia la consecución de objetivos. Mientras algunas interacciones

son accidentales (un agente esperando para acceder a un recurso que otro agente mantiene

ocupado), la herramienta principal que tienen para interactuar es la comunicación.

Mediante ella pueden intercambiar información y pedidos de servicio. Cuando se combina

comunicación con un problema a resolver, la solución involucra otros agentes. Las ontologías

prestan la representación básica que permite a los agentes razonar acerca de sus

interacciones y comunicarse y trabajar por compartir ese conocimiento.

Diferentes enfoques de ontología reflejan ese comportamiento dual, a saber, ontologías

privadas y ontologías públicas.

El propósito de las ontologías privadas es dar al agente un contexto del problema a resolver.

Con frecuencia, resulta difícil distinguir entre ontologías como conceptualización del dominio

del agente y ontologías como representación del conocimiento requerido por su proceso de

resolución de problemas.

Por otro lado, el propósito de las ontologías públicas es soportar interacción de agentes,

especialmente comunicación e intercambio de información. Las ontologías públicas prestan

una descripción de un dominio MAS, compartido por todos los agentes, y un vocabulario

compartido, de manera que los agentes pueden comprender el contenido de los mensajes que

75.00 Tesis

95

intercambian. Las ontologías públicas deben respetar la heterogeneidad de agentes en un

MAS y, por lo tanto, ser independientes del proceso de resolución de problemas de cada

agente.

Una parte crucial del dominio de un agente es el MAS al cual pertenece. Otros agentes en el

MAS afectan lo que el agente hace y cómo lo hace. Consecuentemente, las ontologías deben

soportar descripción de agentes en términos de capacidades, información básica de contacto,

protocolo de interacción, confiabilidad, reputación, seguridad, entre otras. La dimensión

social de un MAS emerge de la necesidad de los agentes de una infraestructura y de servicios

(como registros de ubicación y protocolos estándares) para interactuar. Por lo tanto, las

ontologías deben, también, soportar descripción de una infraestructura MAS, tipo de registros

empleados, tipo de protocolos, entre otros.

Dado que los agentes inteligentes han sido desarrollados sobre diferentes mecanismos de

resolución de problemas provistos por la AI121, encontrar un denominador común entre

ontologías privadas es, virtualmente, imposible.

Por la comunicación, el trabajo de un agente puede contribuir al trabajo de otro y

proporcionar mecanismos de coordinación (los agentes negocian cómo compartir recursos

o como colaborar hacia la solución de un problema). La interacción y colaboración de agentes

resulta en la aparición de una sociedad de agentes, con una estructura social propia. Los

agentes necesitan ser dotados de conocimiento social, que especifique qué agentes trabajan

juntos y normas de comportamiento social aceptable. Las normas actúan como una

herramienta para representar, de manera explícita, lo que un agente espera en una situación

particular; la utilidad de las normas es hacer a los agentes y los MAS predecibles. Es a través

de normas, que los agentes pueden desarrollar predicciones sobre el comportamiento de sus

pares, lo que a su vez permite mayores niveles de cooperación. A nivel conocimiento, las

normas especifican restricciones sobre el comportamiento del agente dentro de lo aceptable

por el resto de agentes. Mientras, en principio, las normas pueden ser empleadas para

expresar cualquier restricción social, ellas encuentran su inmediata aplicación en la

definición de conceptos como contratos y demás compromisos, que los agentes desarrollan a

fin de trabajar juntos.

Así, las normas, en este caso sociales, suministran una fuente de ontologías para la

especificación del comportamiento social en una comunidad de agentes. Sin embargo, a

pesar de su importancia, aún no se ha desarrollado una representación ontológica para estas

normas.

Otras fuentes de ontología son la representación de leyes en razonamiento legal. Las tareas

principales en una ontología de este tipo son la recuperación de información mediante

indización de leyes y verificación de regulaciones. Una ontología legal provee una noción

diferente de norma, básicamente, la descripción de una ley y los actos a los cuales esas leyes

aplican. Una segunda fuente de ontología viene de la comunidad e-commerce y sus

necesidades para expresar conceptos como contratos que regulen transacciones electrónicas.

121

Artificial Intelligence

75.00 Tesis

96

El proceso de descubrimiento de agentes tiene cuatro características distintivas:

� representación del agente en el sistema,

� proceso que identifica similitudes entre un pedido y una publicación de agente (servicio

ofrecido) en el MAS,

� componentes de infraestructura (como registros y protocolos) y,

� resolución de problemas.

Los esquemas de descubrimiento propuestos en la literatura se distinguen por la manera en

que dirigen estos cuatro aspectos, conduciendo a varios niveles de flexibilidad en la

reconfiguración dinámica y regímenes de coordinación de agentes en el MAS.

Las ontologías son un ingrediente esencial para descubrimiento de agentes. Proporcionan

los medios para representar diferentes aspectos de los agentes y los mecanismos básicos

para relacionar pedidos y publicaciones. Desde que los agentes modifican sus entornos, sus

descripciones necesariamente refieren a la descripción ontológica de su entorno.

Los agentes pueden estar representados con diferentes niveles de abstracción. A nivel físico,

son caracterizados por puertos y protocolos de red (de manera similar a la representación

provista por las especificaciones WSDL y UDDI para servicios Web). A nivel abstracto, los

agentes interactúan por medio de un lenguaje de comunicación, empleando un conjunto de

ontologías para codificar e interpretar mensajes.

Desde otro punto de vista, los agentes son caracterizados por sus capacidades, sus protocolos

de interacción, procedimientos de resolución de problemas, la entidad legal responsable de su

correcto funcionamiento, entre otras. La representación de las capacidades es crucial para

descubrimiento de agentes (inteligentes y autónomos). En algunos sistemas, los agentes son

conscientes de las necesidades del problema a resolver que emergen durante su

razonamiento pero no conocen otros agentes que puedan satisfacer sus necesidades. La

tarea de un agente es abstraer del problema específico las capacidades que espera de un

proveedor.

Un número de esquemas de representación de capacidades han sido propuestos por la

comunidad de agentes y, más recientemente, por las comunidades de servicios Web y la Web

Semántica. Se distinguen entre dos tipos de esquemas de representación: el primero supone

que las ontologías proveen una representación explícita de las tareas ejecutadas por los

agentes. En esas ontologías cada tarea es descripta por un concepto diferente, mientras que

los agentes son descriptos por enumerar las tareas que ejecutan. El segundo esquema de

representación describe agentes por la transformación de estados que producen, no hay

mención de la tarea ejecutada por el agente sino que la tarea es implícitamente representada

por información de estado de las entradas del agente a las salidas que produce. Los dos

enfoques de representación brindan dos maneras de utilizar ontologías.

Los esquemas de representación explícita permiten, dadas las capacidades deseadas del

agente, localización simple. Pero requieren que las ontologías asignen un concepto a cada

tarea ejecutada por el agente. Dado que los agentes pueden ejecutar varias tareas, estas

ontologías pueden crecer, volviéndose inmanejables, y no escalar al ingresar agentes con

75.00 Tesis

97

nuevas capacidades. Otro inconveniente de este tipo de esquema es que no representan que

información el agente proveedor y el agente solicitante necesitan para interactuar. Estas

ontologías son difíciles de construir.

Los esquemas de representación implícita requieren sólo de conceptos que describan la tarea

procesada por el agente y que el agente solicitante provea información (en términos de

entradas y salidas) para interactuar con un agente proveedor. No necesita una codificación

explícita de tareas en la ontología sino que proporcionan una expresión natural de tareas al

utilizar los dominios de las ontologías disponibles.

La ventaja de un esquema de representación explícita es que facilita la asociación de

solicitudes y publicaciones y no busca una relación de subsunción entre solicitud y

publicación. En cambio, la asociación por capacidades expresadas implícitamente es más

compleja. El hecho de que no exista una manera sencilla para clasificar las tareas, hace que la

asociación requiera una cuidadosa comparación entre la transformación de entradas y salidas

descripta en la solicitud con las transformaciones de entradas y salidas descriptas en las

publicaciones.

Otro enfoque para representación de capacidades utiliza una combinación de ambas

representaciones, explícita e implícita. Este enfoque combina la facilidad de uso provista por

el primero con la habilidad para describir la capacidad de una agente, provista por el

segundo. El ejemplo más notable de este enfoque es DAML-S.

3.5 Aplicaciones de ontologías en agentes En la Web Semántica, las anotaciones semánticas que describen la información posibilitan a

agentes procesarla automáticamente, presentándose nuevas oportunidades para usuarios y

desarrolladores.

Las tecnologías de SWS dependen de entidades de software de nivel superior con capacidades

cognitivas que puedan acceder al contenido semántico de sus descripciones, que puedan

procesarlas y comprenderlas a fin de hacer un uso apropiado de las funcionalidades provistas.

El marco semántico el cual describe las capacidades de los servicios Web semánticos (OWL-S,

WSMO, etc.) hace que los agentes puedan comprender, procesar y utilizar las capacidades

publicadas que representen un paso hacia el logro de sus objetivos. De esta manera,

mediante la combinación de agentes y servicios Web semánticos se automatiza la tarea de

descubrir, seleccionar, componer, ejecutar y monitorear servicios Web y la adaptación a

cambios en el entorno pasa a ser dinámica.

[Yong-Feng y Jason JEN-Yen; 2007] presentaron una descripción de interacción de agentes

en un marco de comunicación delimitado por el lenguaje de ontologías Web (OWL) y la

“Foundation of Intelligent and Physical Agents (FIPA)”. Estos autores sostuvieron que los

servicios Web se convirtieron en recursos extremadamente populares dejando atrás la

publicación de páginas Web. En la era Web, los servicios suelen ser representados por HTML

75.00 Tesis

98

y transferidos por HTTP mientras que las tecnologías de servicios Web, como WSDL y SOAP

agregan interoperabilidad a la Web. Su trabajo se centró en la invocación dinámica de

servicios por describir una interacción de agentes. Plantearon un escenario donde un

usuario solicitaba a su agente la ejecución de un servicio (Video Broadcast Service). El

agente buscaba el servicio en un registro OWL/UDDI y como no podía ejecutarlo puesto que

el servicio requería un ancho de banda superior a 2 Mbps solicitaba a otro agente su

ejecución quién, al cumplir con el requerimiento de ancho de banda, entregaba el servicio al

usuario. En general, la capa de interacción de agentes consiste de un protocolo preacordado

para el intercambio de mensajes, siendo frecuentemente empleados COOL (COOrdination

Language, basado en KIF/LQML) y IOM/T (Interaction-Oriented Model by Textual

representation). COOL es un framework para conversación de agentes que provee reglas

conversacionales y reglas de recuperación de errores. IOM/T sigue la notación de AUML

(Agent-based Unified Modeling Language) para definir la interacción. Como el anidamiento

de interacciones en IOM/T era complejo de procesar, definieron una máquina de estados

finita junto con una ontología OWL para la interacción de agentes en combinación con FIPA.

[Paolucci et al.; 2003] propusieron una solución DAML-S y analizaron los problemas

relacionados con los servicios Web autónomos. Sus resultados fueron que los servicios Web

podían ser desplegados a fin de proporcionar información e interactuar dinámicamente y

que una transacción podía ser llevada a cabo automáticamente sin intervención del

programador. Sostuvieron que tratar con ontologías (en su trabajo utilizaron DAML) era

fundamental porque permitía en servicios Web inferir sobre los statements de una

descripción DAML-S.

Construyeron una arquitectura de servicios Web DAML-S con dos partes principales: el

servicio proveedor y el DAML-S Port, que administraba la interacción con otros servicios.

Realizar una composición de servicios o, analizar y elegir de las opciones provistas por el

workflow (descripto en el Process Model) aquellas que estuvieran en línea con sus objetivos,

requería del servicio tomar decisiones no deterministas. Por tal motivo dotaron al servicio

con el planificador RESINA (basado sobre el paradigma de planificación HTN).

El DAML-S Port consistía de tres módulos: el DAML Parser (permitía cargar ontologías DAML

desde la Web); el DAML-S VM (definía conocimiento a partir de reglas que implementaban la

semántica axiomática DAML) y el Web service Invocation. La DAML-S VM era el corazón de

la arquitectura. Su tarea principal era comprender el Process Model del proveedor y para ello

había sido dotada de dos componentes: 1) un Process Model Rules semántico, que contenía

normas para la ubicación del próximo proceso a ejecutar, la extracción de entradas y salidas

de cada proceso y la administración de decisiones no deterministas, y 2) el Grounding Rules,

que especificaba la correspondencia de los procesos atómicos del Process Model con

operaciones WSDL y la relación de entradas y salidas de los procesos atómicos con las del

Process Model.

Sus pruebas se basaron en dos aplicaciones. Una aplicación B2B en la que un agente de

interfaz permitía a un operador interactuar con un agente planificador que se ocupaba de

comparar los costos de diferentes proveedores de hardware. El agente planificador

consultaba dos matchmakers, uno de hardware y otro de finanzas (análisis de solvencia) a fin

de obtener y organizar una cadena de proveedores de acuerdo con los límites

75.00 Tesis

99

presupuestarios y fechas indicadas. Finalmente, el agente planificador contactaba a los

proveedores para negociar plan de pagos y costos. La otra aplicación fue del tipo B2C, donde

un agente permitía a un usuario planificar un viaje a una conferencia (suponían que los

organizadores habían publicado un servicio con información de la conferencia como fechas,

lugares, expositores y otros). El agente verificaba la disponibilidad y utilizaba un

matchmaker para encontrar aerolíneas, alquilar coches y hoteles. Finalmente retornaba el

viaje programado. Dejaron como cuestión abierta proceder con un modelo computacional

más simple dado que los requerimientos computacionales de un planificador fueron

sumamente considerables.

3.6 Definición de las funcionalidades relacionadas con las capacidades esperadas de los agentes basados en razonadores. Como se mencionó en la sección 2.6 el desarrollo y aplicación de ontologías depende de

razonamiento. Por incluir ontologías en los procedimientos que implementan los agentes,

indirectamente se incluye algún razonador dado que las ontologías sólo describen de forma

explícita algún vocabulario de dominio y los razonadores obtienen el vocabulario implícito

oculto en las mismas. Los razonadores otorgan a los agentes de un mayor caudal de

información a fin de mejorar los resultados de los objetivos que persiguen. A continuación se

mencionan algunos de los cambios que introducirían en el agente los razonadores:

Realizar inferencias como hacen los humanos y justificarlas. Un agente que tenga

programada la regla “las compras de más de 300 € tienen un descuento del 10%” podrá

justificar lógicamente porque permite descuentos a unos clientes y a otros no.

Realizar búsquedas consultando la Web Semántica por medio de lenguajes que reconozcan

RDF como la sintaxis principal. Con esta base, consultando lenguajes basados en RDF tal

como OWL desde una perspectiva RDF pura no requiere procedimientos especiales o

características de lenguaje siendo, de esta manera, posible aprovechar los servicios ofrecidos

(sección 2.6) por un razonador en la resolución de consultas.

Buscar servicios Web y utilizarlos automáticamente sin intervención humana por acceder a

las ontologías que acompañen a los servicios Web y comprender e integrar esas ontologías.

Buscar productos, negociar compras, acuerdos de nivel de servicio, calidad de datos, cantidad

de datos, localizar servicios de interés para los usuarios. Por el uso de ontologías en las

empresas, los agentes podrán combinarlas con sus algoritmos de negociación y hacer

negocios electrónicos con otras empresas, de manera automática.

3.7 Razonadores alternativos que puedan ser incorporados en el agente

Se han estudiado los siguientes razonadores alternativos: HermiT, Pellet, FaCT++.

A continuación, se describen sus principales características.

HermiT es uno de los actuales proyectos de investigación del Laboratorio de Computación de

la Universidad de Oxford. Aunque puede ser empleado con cualquier ontología, los

investigadores toman como punto de partida los requerimientos de ontologías médicas a fin

de construir un razonador potente. Las ontologías médicas, sostienen, están fuertemente

relacionadas con las lógicas descriptivas, las cuales constituyen una base formal para muchos

75.00 Tesis

100

lenguajes de ontologías como OWL. Las ontologías médicas poseen significantes desafíos

para la teoría y la práctica de lenguajes basados en DL. Los razonadores existentes pueden

eficientemente tratar con ontologías enormes (como NCI) pero existen otras ontologías

importantes que están fuera del alcance de las herramientas disponibles (ninguno de los

razonadores existentes puede clasificar correctamente GALEN o FMA). El objetivo del

proyecto HermiT es, por lo tanto, desarrollar algoritmos de razonamiento escalables e

implementar un prototipo que pueda eficientemente manejar 1) ontologías enormes y

complejas y 2) volúmenes importantes de datos. El desarrollo de un razonador semejante

será clave para el éxito de aplicaciones basadas en ontologías.

En general, HermiT es un razonador para ontologías escritas empleando OWL y construido

empleando cálculo hypertableau a fin de proveer razonamiento más eficiente. Se anuncia

como un razonador veloz y capaz de resolver ontologías complejas. Utiliza Direct Semantic y

ha superado las pruebas de conformidad de OWL 2 DL, OWL 2 EL, OWL 2 QL y OWL 2 RL. La

última versión es HermiT 1.3.1, liberada en octubre de este año, la cual utiliza la reciente

OWL API 3.1.0. y es compatible con Java 1.5. HermiT es open-source y liberado bajo LGPL122.

Pellet fue desarrollado por el laboratorio Mindswap123 de la Universidad de Maryland (USA)

Empezó como una prueba de concepto de sistema para ayudar al W3C a satisfacer los

requerimientos de experiencia de implementación para OWL y posteriormente se

convirtió en una herramienta popular y práctica para trabajar con OWL. Entre sus

características se destacan que admite la expresividad completa de OWL DL, razonamiento

acerca de nominales (clases enumeradas o definidas por extensión), absorción, ramificación

semántica y fue extendido para soportar las nuevas características propuestas en OWL 1.1 y

OWL 2.

Pellet trata de un razonador DL basado sobre algoritmos tableaux. El núcleo del razonador, es

el algoritmo tableaux (desarrollado para lógicas descriptivas potentes) el cual verifica la

consistencia de la KB124, es decir del par ABox y TBox125. Las ontologías OWL son cargadas al

razonador después de validar las especies OWL (DL, RL, QL) y “reparar” ontologías. Este paso

asegura que todos los recursos tienen un tipo de tripla apropiado (un requerimiento para

OWL DL pero no para OWL FULL). Durante la fase de carga, los axiomas acerca de las clases

(subclase, clase equivalente o axiomas disjuntos) son ubicados en el componente TBox y las

aserciones acerca de individuos (aserciones de tipo y propiedad) son almacenadas en el

componente ABox. Los axiomas TBox pasan antes por un preprocesamiento estándar de

razonadores DL y luego por el razonador tableaux.

Esencialmente un razonador tableaux posee sólo la funcionalidad de verificar la

satisfactibilidad de un ABox con respecto a un TBox. Todas las otras tareas de razonamiento

pueden ser reducidas a pruebas de consistencia con la KB mediante la transformación

apropiada. El System Programming Interface (SPI) de Pellet provee funciones genéricas para

administrar tales transformaciones.

122

GNU Lesser General Public License. 123

Maryland Information and Network Dynamics Lab Semántica Web Agents Project o MINDSWAP, Laboratorio

Maryland de Información y Redes Dinámicas del Proyecto de Agentes de Web Semántica. La información del

razonador actualmente se encuentra disponible en el sitio Web http://pellet.owldl.com. 124

Knowledge Base. 125

Desarrollado en la sección 2.6 “Razonador”

75.00 Tesis

101

Este razonador implementa las mejores técnicas de optimización, lo que hace que su

desempeño sea bueno, en especial cuando debe evaluar ontologías con mayor complejidad y

expresividad; sin embargo no es tan eficiente como RacerPro o FACT++ en clasificaciones

[Rodriguez et al.; 2010].

Implementado en Java, soporta la interfaz Jena, la interfaz OWL API, la interfaz DIG y puede

trabajar con el editor Protégé. Es ofrecido bajo un modelo de licencia dual126. Ha superado las

pruebas de conformidad de OWL 2 DL, OWL 2 EL, OWL 2 QL y OWL 2 RL. La última versión

es Pellet 2.2.2, liberada en septiembre de este año.

FaCT++, desarrollado por la Universidad de Manchester bajo el proyecto europeo

“WonderWeb”, es un razonador DL basado en el algoritmo tableaux para lógica descriptiva.

Cubre los lenguajes de ontología OWL y OWL2.

FaCT++ es un buen razonador para la TBox de una ontología, sin embargo, carece de soporte

para otros tipos de datos que no sean string o integer (como si ocurre con Pellet) y tampoco

posee soporte para razonamiento con la ABox de una ontología. En el caso de los tipos de

datos en un entorno Web, es necesario que exista soporte para los tipos de datos de XML

Schema. Entre sus características se destaca: 1) trabaja de forma eficiente con TBox de

ontologías de tamaño grande y mediano y 2) es posible utilizar el lenguaje de consultas para

RDF: SPARQL, el cual permite consultar el modelo inferido de una ontología OWL-DL.

Mediante el algoritmo tableaux implementa un procedimiento de decisión para TBox y ABox.

También implementa nuevas características y optimizaciones, que permite personalizar

para adicionar nuevas tácticas de razonamiento y la capacidad de razonar con lógicas

descriptivas más potentes y cercanas a la expresividad de OWL-DL. Es un software open

source, distribuido bajo los términos de licencia GPL/LGPL e implementada en C++. Soporta

la OWL-API y la interfaz DIG. Ha superado la mayoría de las pruebas de conformidad de OWL

2 en todas sus especies quedando pendiente algunas pruebas. La última versión fue FaCT

++ 1.2.3, liberada en el año 2009.

126 En aplicaciones open source, Pellet puede ser utilizado según los términos de la licencia AGPL versión 3 y en

aplicaciones closed source, propietarias u otras aplicaciones comerciales, según los términos de licencia

alternativos establecidos por los autores.

75.00 Tesis

102

Capítulo IV

Composición dinámica de servicios

4.1 Estudio de los últimos avances en composición dinámica de servicios como una solución eficiente y efectiva.

Una transacción entre servicios involucra tres o más componentes: un usuario, uno o más

proveedores y un registro que soporta los servicios durante la transacción y posiblemente

actúe de mediador entre ambos. La composición de servicios Web sigue un ciclo que puede

ser segmentado en dos partes: la ubicación del proveedor y la interacción entre el usuario y

el proveedor. Un proveedor se inscribe en el registro y hace públicos sus servicios. La

inscripción no es parte de la transacción pero si una condición necesaria para que la

transacción tome lugar.

El proceso de localizar un proveedor se compone de tres etapas: el usuario prepara un

pedido y lo envía al registro, el registro busca y envía los servicios candidatos y el usuario

elige el proveedor que más se ajusta a sus necesidades. El usuario espera que un proveedor

resuelva su petición pero no conoce proveedores. Para encontrar los proveedores, necesita

consultar el registro a fin de localizar servicios con ciertas capacidades. La compilación

automática requiere una abstracción del problema por las capacidades que el usuario espera

que el proveedor posea para resolver sus requerimientos. Resulta crucial en esta situación

un lenguaje que posibilite efectuar publicaciones y consultas y permita al registro obtener y

procesar información de las capacidades publicadas. La tarea del registro es localizar las

publicaciones que coincidan con un pedido. Diferentes partes con diferentes perspectivas

pueden proveer descripciones radicalmente diferentes del mismo servicio. Por lo tanto, el

proceso de búsqueda no debe restringirse a encontrar una coincidencia exacta entre pedido y

servicio sino a establecer los niveles necesarios a fin de determinar servicios similares. El

resultado es una lista de proveedores potenciales entre los que el usuario elige.

En general, no hay una manera fácil y rápida de elegir un proveedor sino que pasa a ser una

decisión específica de dominio. Lo más simple es seleccionar el proveedor con el mayor

puntaje entre los servicios reportados por el registro. Un enfoque más general podría estar

basado sobre razonamiento teórico de decisión, en el cual los usuarios elijan el proveedor

que maximiza alguna función de utilidad, sin embargo, en la práctica es poco probable que los

servicios hagan uso de un modelo de utilidad explícito.

Para permitir descubrimiento e interacción automática de servicios, [Paolucci et al., 2003]

han propuesto una arquitectura de servicios Web que utilizaba DAML-S y un planificador

HITAP (modelo computacional con soporte de razonamiento no determinista), dejando como

una cuestión abierta encontrar un modelo computacional más simple con menores

requerimientos de procesamiento (a causa del planificador).

[Qiu et al., 2008] definieron los servicios Web como aplicaciones modulares autónomas, auto

descriptas que pueden ser publicadas, localizadas e invocadas a través de la Web. En su

trabajo expusieron que con el desarrollo de Internet, emergió un gran número de

organizaciones que implementaron sus negocios y los exteriorizaron como servicios Web.

75.00 Tesis

103

Cuando un sólo servicio no puede satisfacer un pedido de usuario, la capacidad para

seleccionar y componer servicios heterogéneos a lo largo de diferentes organizaciones,

eficiente y efectivamente, se transforma en un paso importante en el desarrollo de

aplicaciones Web, convirtiéndose la tecnología de composición automática de servicios en

uno de las principales cuestiones dentro del proceso de desarrollo de una aplicación Web. La

investigación para permitir fácil integración incluye UDDI, WSDL, BPEL4WS, donde la

representación de composición de servicios realizada a través del flujo de proceso y de la

conexión entre servicios es conocida a priori. La composición de servicios, afirman, es una

tarea compleja debido a 1) el incremento de servicios Web, 2) a cambios “on the fly” que las

aplicaciones de composición deben detectar en tiempo de ejecución a fin de tomar decisiones

correctas sobre información actualizada y 3) la falta de un lenguaje único para definir y

evaluar servicios. Estos autores aseguran que la Web semántica es un paso clave para la

composición de servicios. En su trabajo, extendieron WSDL con capacidades semánticas,

definieron una ontología en OWL y elaboraron un plan (a través de BPEL4WS) para analizar

la estructura de los servicios que mejor combinaba.

Un Framework de composición y adaptación dinámica basado en semántica fue propuesto

por [Hibner y Zielinski; 2007]. Como resultado, automatizaron el proceso de orquestación de

SOA utilizando el algoritmo backward-chaining.

[Thakker et al., 2007] utilizaron una metodología conocida como Case Based Reasoning

(CBR) para modelar descubrimiento y matchmaking dinámico de servicios Web. Su trabajo

consideraba la experiencia de ejecución de un servicio Web a fin de determinar si era

adaptable al pedido de un usuario. Desarrollaron un framework con descripciones

semánticas (OWL) para la implementación de los componentes CBR y matchmaking. Un

proceso CBR es un ciclo de cuatro fases: 1) representación del caso, que consiste del

problema, el contexto y la solución; 2) almacenamiento e indización de casos, donde se utiliza

una biblioteca de casos; 3) recuperación de casos, que utiliza índices para expresar el

contenido del caso y 4) matchmaking, que compara los casos recuperados con el pedido a fin

de verificar si una solución anterior puede ser reutilizada. Argumentaron que como el

comportamiento de un servicio no puede ser conocido con antelación, sólo puede ser

generalizado si los valores de su ejecución son almacenados y razonados para decidir la

capacidad del servicio.

A veces los casos anteriores no pueden ser reutilizados sin hacer cambios que requieren

conocimiento específico del dominio para modelar una adaptación. Tal conocimiento podría

surgir por relacionar los conceptos definidos en una ontología utilizando una taxonomía de

relaciones y reglas semánticas. El rol del conocimiento en reparar los casos existentes

requiere relajar las descripciones de servicios o sus parámetros funcionales y los valores de

ejecución de los casos candidatos (parámetros no funcionales) para encontrar descripciones

de servicios suficientemente similares. Sugirieron, y es más, dejaron como trabajo futuro el

desarrollo de sustitución basado en conocimiento para adaptar los atributos funcionales y no

funcionales de los casos candidatos como solución a un pedido, descartando completamente

un planificador de IA, por ser un recurso sumamente costoso.

[Küster et al., 2005] definieron composición de servicios como un servicio integrado,

obtenido por combinar componentes de servicios disponibles en situaciones donde un

pedido de cliente no podía ser satisfecho por un sólo servicio sino por una combinación de

75.00 Tesis

104

ellos. En términos de ingeniería de software, la composición automática de servicios podría

mejorar la capacidad de una arquitectura de servicios porque posibilitaría superar

dificultades como 1) especificar y combinar, manualmente, los servicios básicos a utilizar y

2) fortalecer el proceso de composición contra la falta de disponibilidad de un servicio o por

la aparición de otros nuevos. Por otro lado, mencionaron que la composición de servicios por

síntesis consiste de un plan para lograr el comportamiento deseado al combinar las

habilidades de múltiples servicios y que la composición de servicios por orquestación trata

del control y flujo de datos entre varios componentes de software cuando ese plan se ejecuta.

Sostuvieron que la composición por síntesis era más relevante en la composición

automática, quedando la orquestación como un elemento complementario. En su trabajo

estudiaron las capacidades requeridas y las generalmente utilizadas en los trabajos de

composición automática de servicios para finalmente concluir que: 1) un encadenamiento de

servicios podía introducir un nivel de incertidumbre, que en algunas situaciones era

inaceptable para el usuario, 2) los pedidos con múltiples efectos necesitaban capacidades

como escalabilidad estable y propiedades transaccionales, 3) los problemas relacionados con

falta de conocimiento requerían de servicios que recopilasen la información y 4) mejores

descripciones semánticas requerían del desarrollo de bases semánticas sólidas, entre otras.

[Aversano et al.; 2004] propusieron un algoritmo para descubrimiento de servicios. El

algoritmo tenía por objetivo aumentar la probabilidad de responder a un pedido de servicio

mediante composición de servicios. Se basaron en el Service Profile de DAML-S y en

ontologías DAML-OIL. La implementación incluyó entradas y salidas de servicio, dejando

como trabajo futuro sus precondiciones y efectos. El algoritmo propuesto tomaba la salida de

un pedido de servicio como objetivo. En el mejor caso, el objetivo podía ser alcanzado por un

sólo servicio. Caso contrario, la solución comprendía el conocido algoritmo backward-

chaining (BCA) con las siguientes variantes: 1) el algoritmo entity matching (EMA) y 2)

selección basada en meta-valores (SBM). BCA verificaba la posibilidad de componer varios

servicios, EMA evaluaba similitud entre entidades de distintas ontologías por considerar

entidades por su nombre, por sus características a nivel semántico (object-properties y data-

properties de DAML-OIL) y por sus relaciones semánticas (utilizaron SuperClass, SubClass,

DisjointWith, DifferentFrom, EquivalentClasses de DAML-OIL). SBM permitía establecer un

conjunto de atributos de calidad de servicios (QoS, disponibilidad, tiempo de respuesta, costo,

entre otros) y asignar un peso a cada atributo según los intereses del usuario. El Service

Profile de DAML-S ha permitido insertar atributos de calidad y los valores deseados.

Como conclusión, mencionaron que los servicios son desplegados por varias personas en el

mundo y es poco probable encontrar un servicio Web que perfectamente proveyese a otro,

que la capacidad de cubrir conceptos utilizados en diferentes ontologías es el tema más

importante en la Web Semántica y que desde que EMA evaluaba ontologías, la clasificación de

un servicio Web en un dominio semántico era innecesario.

[Paolucci et al., 2002] destacaron que UDDI y WSDL no prestaban capacidad de búsqueda de

servicios por match semántico al responder a un pedido de usuario y lo propusieron como

mejora. Para representar las capacidades de servicios utilizaron la sección Profile de DAML-S.

Para realizar inferencias sobre una jerarquía utilizaron las ontologías DAML. Un algoritmo

buscaba salidas de servicios que coincidieran con al menos una salida del pedido de usuario.

Las entradas de servicios eran utilizadas como complemento cuando había más de un

servicio que proveía las mismas salidas siendo elegido el que tenía más entradas similares

con el pedido. Como resultado daba un conjunto ordenado de servicios de acuerdo al nivel de

75.00 Tesis

105

matching de cada uno. El algoritmo fue dotado de cierta flexibilidad (configurable por el

usuario) para establecer los niveles de match que podían ser exacto (la salida coincidía con el

pedido o era una superclase directa del pedido suponiendo que el proveedor se comprometía

a prestar el servicio publicado a un nivel de profundidad de uno en la jerarquía de clases),

plug-in (superclases del pedido que podían incluirlo), subsumidos (salidas parciales, es decir

que el servicio proveía una parte del pedido) y fail (no match).

A partir de lo investigado y expuesto nuestra definición de servicio para el desarrollo del caso

práctico es: “un servicio es un activo que establece prestaciones y calidad a través de

contratos de servicio. Un servicio Web es funcionalidad disponible en la Web según

estándares estipulados (SOAP, WSDL, UDDI) a fin de garantizar interoperabilidad. Un servicio

Web semántico posee descripciones realizadas por ontologías las cuales agregan un nivel

más de procesamiento a fin de optimizar el ciclo de descubrimiento, selección, invocación y

composición de los servicios Web.”

4.2 Alternativas de composición semántica como OWL, Pellet, el algoritmo backward-chaining Una situación común es encontrar servicios que generan los efectos pedidos pero que

alguna precondición no pueda ser cubierta. Una solución es utilizar encadenamiento de

servicios. El encadenamiento considera recursivamente los efectos de un servicio como las

precondiciones del siguiente hasta que el efecto deseado es alcanzado. Los enfoques de

encadenamiento de servicios incluyen:

� Graph-Search: construye una representación de grafo de todos los servicios disponibles.

Los nodos representan servicios y las aristas las salidas de un servicio que sirven como

entradas de otro. Además, las aristas son pesadas de acuerdo al nivel de correspondencia de

entradas y salidas asociadas. Una adaptación del algoritmo de Bellman-Ford es utilizado

para encontrar el camino más corto entre las entradas del usuario y las salidas deseadas

que represente la mejor composición disponible. Como desventaja, este tipo de enfoque

no es escalable con el número de servicios ofrecidos, llegando a trabajar con complejidades

de orden O(n3) .

� Forward-Chaining: típico de sistemas de planificación basados en lógica, utiliza el

conocimiento disponible, precondiciones y entradas del servicio para inferir

conocimiento adicional hasta conseguir todos los efectos requeridos. Como desventaja,

para cubrir todos los efectos de un pedido tiende a buscar en direcciones innecesarias por

abarcar el máximo conocimiento posible.

� Backward-Chaining: supera la propuesta anterior. Se diferencia del forward-chaining en

que la composición considera aquellos servicios que generen los efectos deseados en lugar

de esos cuyas precondiciones son concedidas. Cualquier algoritmo recursivamente trata de

crear las precondiciones necesarias usando otros servicios hasta cubrir todas las

precondiciones. Mientras que el backward-chaining implementa una búsqueda dirigida

mejorada, el espacio del problema es todavía grande.

� Estimated-Regression planning: es un intento por mejorar la performance de la búsqueda

por implementar un forward chaining por una heurística basada en backward-chaining.

En general, los enfoques de encadenamiento están basados en sistemas de planificación de AI,

75.00 Tesis

106

los que generalmente conducen a problemas de escalabilidad en caso de un incremento en el

número de servicios.

4.3 Agentes y la composición de servicios Web

A fin de conseguir los beneficios anunciados por tener agentes y servicios trabajando

cooperativamente, ambas tecnologías se relacionan en un escenario donde el agente provee

la funcionalidad de alto nivel por utilizar, combinar y coreografiar los servicios Web

obteniendo funciones de valor agregado mientras que los servicios Web prestan la

funcionalidad de bajo nivel.

Los agentes con capacidades semánticas y los servicios Web semánticos permiten

automatizar una situación en la que fuera necesario ejecutar varios servicios a fin de

proporcionar el servicio requerido.

El agente consulta un registro de servicios a fin de localizar servicios con ciertas capacidades.

La compilación automática requiere una abstracción del problema por las capacidades que se

espera que el servicio posea, a fin de resolver el problema. Un lenguaje como SAWSDL

posibilita realizar publicaciones y consultas y permite al agente obtener y procesar

información acerca de las capacidades publicadas. La tarea del agente es localizar las

publicaciones que coincidan con un pedido. El proceso de búsqueda no se restringe a

encontrar una coincidencia exacta entre pedido y servicio sino que previamente se

establecen niveles (desarrollado en la sección 5.2.1) para que servicios similares puedan ser

elegidos. El resultado es una lista de servicios potenciales que cubren un pedido.

El agente accede a las publicaciones dadas por las descripciones WSDL de los servicios a fin

de conocer lo que hace el servicio. Las ontologías utilizadas por el servicio, sus entradas,

salidas y las reglas requeridas para su ejecución es lo que permite al agente conocer las

acciones y efectos del servicio. La forma en que el agente logra ese conocimiento es

desarrollado en la sección 5.2.1.

75.00 Tesis

107

Capítulo V

Caso práctico

5.1 Escenario de aplicación representativo del problema a resolver

El escenario de aplicación trata de la bolsa de trabajo de una facultad. Un nuevo estudiante

puede postularse a las ofertas publicadas por la bolsa de trabajo por presentar una nota de

inscripción, su curriculum y la oferta a la cual postula. Los graduados sólo pueden postularse

a ofertas de trabajo profesional y los no graduados a ofertas de pasantía.

El servicio Web semántico wsMatriculate define una interfaz con la operación Registration

para realizar la inscripción en la facultad de un nuevo estudiante recibiendo los datos del

nuevo estudiante y una nota de inscripción. El servicio retorna una nota con la inscripción

realizada (de tipo nota de graduado o de tipo nota de no graduado).

El servicio Web semántico wsInscribeJobBag define una interfaz con la operación

ApplyForJobBag para realizar la inscripción en la bolsa de trabajo de un nuevo estudiante

recibiendo un curriculum y la nota de inscripto en la facultad. El servicio retorna un registro

con la inscripción realizada en la bolsa de trabajo (de tipo postulación de trabajo).

El servicio Web semántico wsPostulateJobG define una interfaz PostulateJobOffer con la

operación postulateJob para realizar la postulación de trabajo profesional de un nuevo

estudiante graduado recibiendo la oferta de trabajo profesional elegida y el registro de

inscripto en la bolsa de trabajo. El servicio retorna un registro con la postulación a la oferta de

trabajo profesional realizada (de tipo postulación de trabajo profesional).

El servicio Web semántico wsPostulateJobU define una interfaz PostulateJobOffer con la

operación postulateJob para realizar la postulación de pasantía de un nuevo estudiante no

graduado recibiendo la oferta de pasantía elegida y el registro de inscripto a la bolsa de

trabajo. El servicio retorna un registro con la postulación a la oferta de pasantía realizada (de

tipo postulación de pasantía).

Dado un nuevo estudiante graduado que posea un curriculum y desee anotarse a una

búsqueda de trabajo profesional, la combinación de los servicios wsMatriculate,

wsInscribeJobBag y wsPostulateJobG responderían al pedido.

Para un nuevo estudiante con curriculum e intención de anotarse a una búsqueda de

pasantía, la combinación de los servicios wsMatriculate, wsInscribeJobBag y

wsPostulateJobU responderían al pedido.

Como puede observarse, los servicios propuestos ofrecen las posibles salidas requeridas y

cuál servicio se ejecutará para resolver el pedido es determinado en tiempo de ejecución.

Con este escenario se pretende estudiar de que manera los servicios Web semánticos pueden

ser combinados de manera automática por un agente provisto con las ontologías necesarias.

75.00 Tesis

108

5.2 El prototipo construido

5.2.1 Criterio adoptado

Se utilizaron estándares en la construcción de los servicios Web como WSDL y SOAP.

Se utilizaron estándares para la anotación semántica de los servicios Web como SAWSDL a

fin de convertir los servicios Web en servicios Web semánticos.

A fin de dotar a los servicios con información acerca de sus pre y postcondiciones de manera

que fuera compatible con el estándar SAWSDL, se eligió emplear el lenguaje de reglas SWRL.

Se implementaron reglas DL-Safe Rules con el propósito de conservar y disponer de las

capacidades de inferencia y clasificación sobre ontologías, entre otras, ofrecidas por un

razonador DL.

Se empleo el estándar OWL como lenguaje de ontología para lograr la máxima expresividad

semántica con las ontologías.

Para realizar la asociación de un pedido de servicio con los servicios ofrecidos se

consideraron los siguientes tipos de asociaciones [Paolucci et al.; 2002]:

� exact: cuando el pedido de servicio coincide exactamente con la salida de un servicio o

cuando el pedido de servicio coincide con algún subtipo directo de los tipos utilizados en la

salida del servicio. Esta decisión se sostiene bajo el supuesto de que un proveedor se

compromete a prestar salidas consistentes con cada subtipo inmediato de la salida con la

que publica su servicio.

� plug in: cuando la salida de un servicio subsume el pedido de un servicio. Esta relación

corresponde a un tipo de relación débil. El proveedor de servicio podría responder al

pedido de servicio. Esta asociación ocurre cuando el pedido de servicio es un subtipo no

directo de la salida de servicio (existe una relación lejana en la jerarquía).

� subsume: cuando el pedido de servicio incluye la salida de un servicio. El proveedor de

servicio no cumple completamente con el pedido de servicio. En este caso, el pedido de

servicio subsume la salida de servicio.

� fail: cuando ninguna relación de subsunción existe entre el pedido y el servicio ofrecido.

Se eligió realizar las asociaciones de acuerdo al primer tipo. Los tipos restantes fueron

implementados y dejados como trabajo futuro.

Lo anterior contempla sólo las salidas de un pedido de servicio y de un servicio ofrecido. Para

evaluar la asociación de las entradas de un pedido de servicio y de un servicio ofrecido se

consideró la propuesta de [Akkiraju y Sapkota; 2007] por aceptar que las entradas pueden

ser satisfechas por sus supertipos directos en la jerarquía de clases.

El agente lleva a cabo la composición mediante el algoritmo de backward-chaining y reglas

DL-Safe Rules.

Una composición es válida si el pedido de servicio y las entradas y las reglas de los servicios

elegidos son satisfechos. Los resultados finales son comunicados por el agente.

75.00 Tesis

109

La ontología de datos fue construida implementando un TBox acíclico127 a fin de evitar los

problemas semánticos que surgen con un TBox cíclico.

5.2.2 Componentes El prototipo consiste de un agente dotado con las capacidades de encontrar, combinar y

comunicar los servicios Web semánticos a fin de responder a un pedido de servicio

determinado, el cuál podría ser realizado por uno o varios servicios.

A fin de procesar las anotaciones semánticas incluidas en los documentos WSDL de los

servicios, el agente fue implementado incorporando, como razonador OWL-DL, la versión

Pellet 2.2.1.

Se definió la siguiente estructura de directorios:

� /repository/ontologies

� /repository/servicesDescription

� /AgentClient/request

� /AgentClient/response

� /AgentClient/temp

El directorio ontologies contiene las ontologías owl de todos los servicios. Cada servicio

incluye en su documento WSDL tres ontologías: una ontología para anotar los tipos de datos

de sus operaciones, otra ontología para describir las reglas asociadas a sus operaciones y una

tercera ontología que permite anotar la categoría a la que pertenece el servicio, en el

elemento interface, que integra la especificación WSDL 2.0.

La ontología de datos fue presentada en la sección 2.8, desde la perspectiva del lenguaje de

ontología OWL y, en la sección 5.1, por mencionar en detalle el escenario modelado. En la

sección 2.8, también se mencionó que la ontología de datos había sido dividida en dos partes:

una ontología para contener los axiomas de clases y propiedades y otra ontología, para

contener a los individuos. Los archivos StudentsJobBag.owl y membersStudentsJobBag.owl,

que corresponden a las ontologías bolsa de trabajo y miembros de la bolsa de trabajo, fueron

explicadas en esa sección y se encuentran en este directorio.

[Akkiraju y Sapkota; 2007] sugirieron que, a fin de agregar la categoría a la cual pertenecía

un servicio, antes de publicarlo en un registro de servicios, los servicios Web podían ser

anotados semánticamente por los mecanismos de extensión provistos con SAWSDL. Para

ello, plantearon las siguientes dos formas:

127

Desarrollado en la sección 2.6, “Razonador”.

75.00 Tesis

110

� Categorización por URI: a partir de un modelo semántico de categorías existente anotar

semánticamente los elementos operation o interface del documento WSDL 2.0 que

acompaña a un servicio por agregar la categoría del servicio. Esta forma presentaba el

inconveniente de que el modelo de categorías no fuera completo y, que fuera necesario

recurrir, a múltiples piezas de información para identificar la categoría del servicio.

� Categorización por identificadores: en esta forma los usuarios podían definir la categoría

según sus requerimientos empleando categorías definidas por otros usuarios. Así, la

categoría del servicio era obtenida por indicar una taxonomía y un identificador dentro de

esa taxonomía.

Se adoptó la segunda forma en el prototipo. El modelo de categorías definido fue

“categorización.owl”, el cual utilizó algunas de las categorías publicadas por NAICS128 para

anotar, en primer lugar, los pedidos de servicio y, en segundo lugar, los servicios ofrecidos,

con las categorías más adecuadas, de manera de que, si el servicio ofrecido resultaba

pertenecer a la misma categoría que el pedido, el servicio era elegido y posteriormente

procesado a fin de determinar si podía ser considerado para responder al pedido recibido,

reduciendo de manera considerable los costos de procesamiento.

Las ontologías de reglas, las cuales fueron empleadas para anotar las operaciones de un

servicio, fueron definidas con el propósito de habilitar al agente con la capacidad de decidir

acerca de las condiciones asociadas a la ejecución de un servicio. Estas reglas fueron definidas

en OWL como DL-Safe Rules del SWRL y explicadas en la sección 2.8. Sin embargo, es

necesario destacar, que las reglas hacen posible que el agente pueda determinar si un

servicio se ejecutará correctamente o no, y, qué cambios puede producir su ejecución, de

manera similar, a las pre y post condiciones utilizadas en OWL-S. Además, si bien para

ejecutar un servicio, éste debe ser invocado con las entradas requeridas por la firma de sus

operaciones, resulta indispensable considerar las condiciones que aseguren su buen

desempeño. Esta última verificación se logra mediante la utilización de reglas las cuales

permiten al agente disponer de la información necesaria a tal fin.

Las ontologías de reglas empleadas fueron cuatro: rulesMatriculate.owl,

rulesInscribeJobBag.owl, rulesPostulateJobG.owl y rulesPostulateJobU.owl. Para definir las

reglas, estas ontologías importaron las ontologías StudentsJobBag.owl y

membersStudentsJobBag.owl. Las cuatro ontologías de reglas fueron descriptas en la sección

2.8.

En el directorio servicesDescription se reúnen los documentos WSDL 2.0 de los servicios

Web semánticos creados. Este directorio actúa como un registro de servicios al que el agente

accede para resolver un pedido.

El directorio request es donde el agente recibe los pedidos de servicios. Los pedidos de

servicios fueron construidos siguiendo la propuesta de [Akkiraju y Sapkota; 2007] por

utilizar WSDL 2.0.

128

North American Industry Classification System. http://www.census.gov/eos/www/naics/

75.00 Tesis

111

El directorio response es donde el agente ubica el resultado de los pedidos recibidos. El

agente informa si encontró el o los servicios que corresponden al pedido, si el o los servicios

se pueden ejecutar por disponer de las entradas requeridas por los mismos y si se cumplen

las reglas asociadas a cada servicio para una ejecución exitosa.

El directorio temp fue el contenedor temporal de los archivos empleados a lo largo de las

pruebas realizadas durante el desarrollo del prototipo y finalmente movido al directorio

/AgentClient.

El directorio /AgentClient contiene stubs que automáticamente generan y envian pedidos a

los servicios Web para los contratos de servicio que implementan como clientes.

Su propósito es presentar pedidos y ejecutar los servicios compuestos encontrados por el

agente.

Finalmente, el archivo agent.properties permite configurar las rutas de la estructura de

directorios definida. Se encuentra en el directorio /AgentClient.

5.2.3 Herramientas

Para construir los servicios Web semánticos se utilizó la herramienta versión Axis2-1.5.2.

Axis2 es un proyecto de la Apache Software Foundation. Es una herramienta open-source

para crear y utilizar servicios Web e incluye SOAP 1.1 y SOAP 1.2, MTOM, XML/HTTP y los

estándares WS-*. Incluye un motor de ejecución veloz pudiendo desplegar servicios mientras

el sistema se está ejecutando (pueden agregarse nuevos servicios sin necesidad de detener el

servidor). Incorpora flexibilidad para soportar patrones de intercambio de mensajes

(Message Exchange Patterns o MEPs). Soporta la invocación de servicios Web asincrónicos

por utilizar clientes y transportes no-bloqueantes. Presta soporte para WSDL 1.1 y WSDL

2.0 y permite construir a partir de las descripciones WSDL stubs para acceder a servicios

remotos o exportar automáticamente las descripciones de los servicios Web, entre otras

características. Además Axis2 puede ejecutarse sólo o en algún contenedor de servlets como

Tomcat y posee dos implementaciones: Axis2/C y Axis2/Java.

Axis2 fue desplegado empleando la herramienta Tomcat - 6.0.29 como servidor Web.

Tomcat es otro proyecto de la Apache Software Foundation. Es una implementación open-

source de las tecnologías Java Servlet y Java Server Pages (especificaciones que son

desarrolladas por la Java Community Process129). Funciona como servidor Web con soporte

para servlets y JSP.

Los servicios fueron construidos empleando la versión WSDL 2.0 y SOAP 1.1 y SOAP 1.2.

129

http://jcp.org/en/home/index

75.00 Tesis

112

Las descripciones WSDL de los servicios Web fueron obtenidas a partir de su código en java

con la herramienta java2wsdl130 de Axis2. Las descripciones WSDL correspondían a la

versión WSDL 1.1 por lo que hubo que utilizar otra herramienta para obtener la versión

WSDL 2.0, Por medio de la herramienta comercial Altova XMLSPy 2011131 se pudo convertir

las descripciones WSDL 1.1 a descripciones WSDL 2.0, adhiriendo a la recomendación más

reciente del W3C.

Una vez obtenidas las descripciones WSDL 2.0 de los servicios y con la herramienta

wsdl2java132 de Axis2 se generaron los skeletons de los servicios. Finalmente los servicios

fueron ejecutados por ubicar el archivo de despliegue de cada servicio (estos archivos poseen

extensión .aar) en el directorio /webapps/axis2/WEB-INF de Tomcat.

Las herramientas presentadas hasta ahora resultaron adecuadas a los fines de conseguir los

servicios con los que el agente trabajó para la composición de servicios. Además, hay que

mencionar que dichas herramientas poseen una documentación completa y clara y son,

debido a una aceptación relativamente amplia, respaldadas por una comunidad de

desarrolladores que contribuyen con sus aportes a superar inconvenientes durante la

implementación.

A fin de agregar semántica a los servicios se recurrió a la herramienta Woden4SAWSDL.

Woden4SAWSDL es una API provista como parte de la infraestructura de APIs y

herramientas ofrecidas por el proyecto METEOR-S, del laboratorio LSDIS del Departamento

de Computación de la Universidad de Georgia. Permite la creación y el manejo de

documentos SAWSDL133 basados en WSDL 2.0.

Las ontologías fueron generadas a partir de la herramienta versión Protégé 4.1.0. Protégé 134

fue desarrollado por el Stanford Center for Biomedical Informatics Research de la Stanford

University School of Medicine como un editor de ontologías open source. Soporta dos formas

para modelar ontologías: mediante Protégé Frames y Protégé OWL. Entre sus características

se pueden mencionar la exportación de ontologías en una variedad de formatos (RDF, RDFS,

OWL y XML-Schema entre otros), es construido en Java, extensible y provee un entorno plug

and play que lo convierte en una base flexible para prototipado y desarrollo de aplicaciones

veloz.

El Protégé Frames es un conjunto de elementos de interfaz personalizables a fin de permitir

a los usuarios modelar conocimiento e ingresar datos de forma amigable. Provee una

arquitectura del tipo plug-in extensible mediante elementos diseñados por el usuario como

componentes gráficos (grafos y tablas), multimedia (sonido, imagen y video), herramientas

de soporte adicional (visualización de ontologías, inferencia y razonamiento, etc.), entre

otras. Dispone de una API basada en Java para acceder, utilizar y visualizar las ontologías

130 Script que genera el archivo WSDL apropiado a partir de la clase java especificada. 131

http://www.altova.com/xmlspy/wsdl-editor.html 132

Script que genera código Java de acuerdo al archivo WSDL especificado a fin de manejar las invocaciones de

servicio (stubs del lado del cliente). El script también puede generar los skeletons de los servicios de acuerdo al

WSDL especificado. 133

Desarrollado en la sección 2.5.8, “SAWSDL”. 134

http://protege.stanford.edu.

75.00 Tesis

113

creadas con Protégé Frames.

El editor Protégé OWL soporta el Ontology Web Language u OWL permitiendo cargar y

almacenar ontologías OWL y RDF, editar y visualizar clases, propiedades y reglas SWRL,

definir expresiones OWL como características de las clases, ejecutar razonadores como

clasificadores DL y editar individuos OWL.

Además, Protégé cuenta con el respaldo de una gran comunidad de desarrolladores y usuarios

universitarios (University of Manchester), del gobierno (DARPA) y empresas (eBay) quienes

utilizan Protégé para soluciones en áreas tan diversas como la biomedicina, recopilación de

información y el modelado de empresas.

El razonador empleado fue Pellet 2.2.1 descripto en la sección 3.7.

Para administrar las ontologías programáticamente en las primeras versiones del prototipo

se trabajó con el framework Jena 2.2.3.

Jena135 es un framework java, open-source, que creció como parte del Programa de la Web

Semántica de los laboratorios HP136. Actualmente, el proyecto fue desvinculado debido a la

decisión de la administración HP Labs de no continuar con el Programa, encontrándose la

propiedad de los derechos del código de Jena en proceso de transferencia desde HP a un

cuerpo comercialmente neutral. Sin embargo, HP asegura la continuidad del proyecto y su

participación en el papel de colaborador.

El Framework Jena incluye una API RDF, soporta los formatos RDF/XML, N3 y N-Triples, la

OWL API, el motor de consultas SPARQL, manejo de ontologías en memoria y persistencia,

entre otras características. Pero no provee soporte para DL-Safe Rules. Por este motivo fue

reemplazada por la OWL API versión 3.1.0.

La OWL API versión 3.0.0 en adelante fue desarrollada por la University of Manchester. Es

open-source y la última versión se enfocó hacia OWL 2. Es una API Java y una

implementación de referencia para crear, manipular y serializar ontologías OWL. Entre sus

componentes se encuentran: analizadores de sintaxis y escritura para RDF/XML, OWL/XML,

OWL Functional Syntax, Turtle, KRSS, interfaces para trabajar con razonadores como

FaCT++, HermiT, Pellet y Racer y una API para OWL 2, entre otros.

Con la OWL API, en su versión 3.1.0, fue posible implementar DL-Safe Rules.

135 También desarrollado en la sección 2.6.1.2, “Razonadores de programación lógica”.

http://jena.sourceforge.net/ 136 Hewlett-Packard Development Company

75.00 Tesis

114

5.3 Resultados

La pruebas realizadas utilizaron los pedidos de servicios del directorio temp, los cuales

fueron construidos siguiendo la propuesta de [Akkiraju y Sapkota; 2007] y la especificación

WSDL 2.0.

Los archivos “servicerequestXX.wsdl” corresponden a pedidos de servicio, los archivos

“reportCompositeServiceServiceRequestXX” son reportes de los servicios compuestos

encontrados y están ubicados en el directorio response/r1 y los archivos

“reportRunTimeServiceRequestXX” son reportes de las ejecuciones de los servicios

compuestos encontrados y están ubicados en el directorio response/r2.

Inicialmente, un pedido es ubicado en el directorio temp y movido al directorio request. El

agente levanta el pedido del directorio de entrada (request), lo procesa, elabora el reporte y lo

deposita en el directorio de salida (response). El directorio temp posibilitó incrementar los

pedidos a medida que se avanzaron con las pruebas. La última prueba fue con un lote de

diecisiete pedidos.

Como se mencionó secciones atrás, las reglas se componen de dos partes principales:

antecedente y consecuente. El antecedente y el consecuente están formados por átomos.

Los átomos comprenden predicados y los predicados argumentos. Los predicados pueden

ser descripciones de clases, propiedades y los argumentos variables o individuos. La

estructura de una regla queda como se muestra a continuación:

Rule ([ATOM1 (PREDICATE1(ARG1 ,.., ARGN) , ..., ATOMN (PREDICATEN (ARG1, .., ARGN))]) => ([ATOM1

(PREDICATE1 (ARG1, .., ARGN)])

SWS1 wsMatriculate Rule [New_Student (nt), Notice (n)] => [NoticeOf (n, nt)] Input {New_Student (a), Notice (n)}

Output {Notice (n)}

Descripción: realiza la inscripción en la facultad de un nuevo estudiante recibiendo los datos del nuevo

estudiante y una nota de inscripción. El servicio retorna una nota de inscripción realizada (de tipo nota de

graduado o de tipo nota de no graduado). SWS2 wsInscribeJobBag Rule [Curriculum(c), NoticeOf (n, nt)] => [hasJobPostulant (nt, jp)]

Input {Notice (n)}, Curriculum (c)}

Output {JobPostulant (jp)}

Descripción: realiza la inscripción en la bolsa de trabajo de un nuevo estudiante recibiendo un curriculum y

la nota de inscripto en la facultad. El servicio retorna el registro de inscripción en la bolsa de trabajo (de tipo

postulación de trabajo).

SWS3 wsPostulateJobG Rule [JobPostulantOf (jp, nt), hasNotice (nt, notice_graduate)] => [hasPostulationProfessionalJob (nt, pprof)] Input {JobPostulant (jp), JobOfferProfessional (joprof)}

Output {PostulationProfessionalJob (pprof)}

Descripción: realiza la postulación de trabajo profesional de un nuevo estudiante graduado recibiendo la oferta

de trabajo profesional elegida y el registro de inscripto en la bolsa de trabajo. El servicio retorna un registro con

la postulación a la oferta de trabajo profesional realizada (de tipo postulación de trabajo profesional).

SWS4 wsPostulateJobU Rule [JobPostulantOf (jp, nt), NoticeOf (notice_undergraduate, nt)] => [hasPostulationPassantJob (nt, ppas)] Input {JobPostulant (jp), JobOfferPassant (jopas)}

Output {PostulationProfessionalJob (pprof)}

Descripción: realiza la postulación de pasantía de un nuevo estudiante no graduado recibiendo la oferta de

75.00 Tesis

115

pasantía elegida y el registro de inscripto a la bolsa de trabajo. El servicio retorna un registro con la postulación

a la oferta de pasantía realizada (de tipo postulación de pasantía).

La primera prueba (reportCompositeServiceRequest10) fue un pedido de servicio por una

nota de inscripción presentando los datos del nuevo estudiante. El agente determinó que el

pedido podía ser resuelto por un servicio, el servicio wsMatriculate pero que como el pedido

era incompleto y no cumplía las reglas no podía ser ejecutado. Faltaba la presentación de una

nota como entrada.

La segunda prueba (reportCompositeServiceRequest11) fue un pedido de servicio por una

nota de inscripción presentando los datos del nuevo estudiante y una nota. El agente

determinó que el pedido podía ser resuelto por un servicio, el servicio wsMatriculate el cual

podía ser ejecutado porque el pedido era completo y cumplía con las reglas del servicio.

SWScompuesto = SWSsimple = {wsMatriculate}

ABoxpedido= { INPUT {x1 (Student), x2 (Notice)},

OUTPUT {x2 (Notice)}

}

ABoxinferido= { x1 (Student) superclass nt (New_Student),

x2 = n (Notice)

}

El reporte reportRunTimeServiceRequest11 con la ejecución del servicio compuesto se

puede ver en el directorio test/r2.

La tercera prueba (reportCompositeServiceRequest20) fue un pedido de servicio para

realizar una postulación de trabajo profesional presentando una nota y un curriculum. El

agente determinó que el pedido podía ser resuelto por dos servicios, los servicios

wsInscribeJobBag y wsPostulateJobG pero que como el pedido era incompleto y no cumplía

las reglas no podía ser ejecutado. Faltaba la presentación de la oferta de trabajo profesional a

la cual postulaba.

La cuarta prueba (reportCompositeServiceRequest21) fue un pedido de servicio para

realizar una postulación de trabajo profesional presentando una nota, un curriculum y la

oferta de trabajo profesional elegida. El agente determinó que el pedido podía ser resuelto

por los servicios wsInscribeJobBag y wsPostulateJobG pero que como el pedido no cumplía

las reglas no podía ser ejecutado. La regla asociada del servicio wsInscribeJobBag establecía la

existencia de una nota de graduado inscripto.

La quinta prueba (reportCompositeServiceRequest22) fue un pedido de servicio para

realizar una postulación de trabajo profesional presentando una nota de graduado, un

curriculum y la oferta de trabajo profesional elegida. El agente determinó que el pedido podía

ser resuelto por dos servicios, los servicios wsInscribeJobBag y wsPostulateJobG los cuales

podían ser ejecutados porque el pedido era completo y por cumplir con las reglas de los

servicios.

SWScompuesto = {wsInscribeJobBag, wsPostulateJobG}

ABoxpedido= { INPUT {x1 (Curriculum), notice_graduate (Notice),

x2 (JobOfferProfessional)},

75.00 Tesis

116

OUTPUT {x7 (PostulationProfessionalJob)}

}

ABoxinferido= { x6 = x3 = notice_graduate = n (Notice),

x1 = c (Curriculum), gd (Graduate) = nt (New_Student),

x4 = jp (JobPostulant),

x7 = pprof (PostulationProfessionalJob)

}

El reporte reportRunTimeServiceRequest22 con la ejecución del servicio compuesto se

puede ver en el directorio test/r2.

La sexta prueba (reportCompositeServiceRequest30) fue un pedido de servicio para realizar

una postulación de pasantía presentando un curriculum y la oferta de trabajo elegida. El

agente determinó que el pedido podía ser resuelto por tres servicios, los servicios

wsMatriculate, wsInscribeJobBag y wsPostulateJobU pero que como el pedido era

incompleto y no cumplía las reglas no podía ser ejecutado. Faltaba la presentación de los datos

del nuevo estudiante y una nota de inscripción.

La séptima prueba (reportCompositeServiceRequest31) fue un pedido de servicio para

realizar una postulación de pasantía presentando un curriculum, la oferta de trabajo elegida y

una nota de inscripción. El agente determinó que el pedido podía ser resuelto por dos

servicios, los servicios wsInscribeJobBag y wsPostulateJobU pero como el pedido no cumplía

las reglas no podía ser ejecutado. La regla del servicio wsInscribeJobBag exigía la existencia

de una nota de no graduado inscripto.

La octava prueba (reportCompositeServiceRequest32) fue un pedido de servicio para

realizar una postulación de pasantía presentando un curriculum, la oferta de trabajo elegida y

una nota de no graduado. El agente determinó que el pedido podía ser resuelto por dos

servicios, los servicios wsInscribeJobBag y wsPostulateJobU los cuales podían ser ejecutados

porque el pedido era completo y por cumplir con las reglas de los servicios.

SWScompuesto = {wsInscribeJobBag, wsPostulateJobU}

ABoxpedido= { INPUT {x1 (JobOffer), x2 (Curriculum),

notice_undergraduate (Notice)},

OUTPUT {x7 (PostulationPassantJob)}

}

ABoxinferido= { x2 = c (Curriculum),

x3 = x6 = notice_undegraduate = n (Notice),

x4 = jp (JobPostulant), ug (UnderGraduate) = nt (New_Student),

x7 = pprof (PostulationProfessionalJob)

}

El reporte reportRunTimeServiceRequest32 con la ejecución del servicio compuesto se

puede ver en el directorio test/r2.

La novena prueba (reportCompositeServiceRequest40) fue un pedido de servicio por una

nota de inscripción de no graduado presentando los datos del nuevo estudiante. El agente

75.00 Tesis

117

determinó que el pedido podía ser resuelto por un servicio, el servicio wsMatriculate pero

que como el pedido era incompleto, el servicio no podía ser ejecutado. Faltaba la

presentación de una nota.

La décima prueba (reportCompositeServiceRequest41) fue un pedido de servicio por una

nota de inscripción de no graduado presentando los datos del nuevo estudiante y una nota de

no graduado. El agente determinó que el pedido podía ser resuelto por un servicio, el

servicio wsMatriculate, el cual podía ser ejecutado porque el pedido era completo y cumplía

con las reglas del servicio.

SWScompuesto = SWSsimple = {wsMatriculate}

ABoxpedido= { INPUT {x1 (New_Student), notice_undergraduate (Notice)},

OUTPUT {notice_undergraduate (Notice)}

}

ABoxinferido= { x1 = ug (UnderGraduate) = nt (New_Student),

x2 = x3 = notice_undegraduate = n (Notice)

}

El reporte reportRunTimeServiceRequest41 con la ejecución del servicio compuesto se

puede ver en el directorio test/r2.

La undécima prueba (reportCompositeServiceRequest50) fue un pedido de servicio por una

nota de inscripción de no graduado y la inscripción a la bolsa de trabajo de la facultad

presentando los datos del nuevo estudiante y un curriculum. El agente determinó que el

pedido podía ser resuelto por dos servicios, el servicio wsMatriculate y el servicio

wsInscribeJobBag pero que como el pedido era incompleto y no cumplía las reglas no podía

ser ejecutado. Faltaba la presentación de una nota.

La duodécima prueba (reportCompositeServiceRequest51) fue un pedido de servicio por

una nota de inscripción de no graduado y la inscripción a la bolsa de trabajo de la facultad

presentando los datos del nuevo estudiante, un curriculum y una nota de no graduado. El

agente determinó que el pedido podía ser resuelto por dos servicios, el servicio

wsMatriculate y el servicio wsInscribeJobBag, los cuales podían ser ejecutados porque el

pedido era completo y cumplía con las reglas del servicio.

SWScompuesto = {wsMatriculate, wsInscribeJobBag}

ABoxpedido= { INPUT {x1 (New_Student), x2(Curriculum),

notice_undergraduate (Notice)},

OUTPUT {notice_undergraduate (Notice), x6 (JobPostulant)}

}

ABoxinferido= { x1 = ug (UnderGraduate) = nt (New_Student),

x2 = c (Curriculum),

x5 = x4 = x3 = notice_undegraduate = n (Notice),

x6 = jp (JobPostulant)

}

El reporte reportRunTimeServiceRequest51 con la ejecución del servicio compuesto se

puede ver en el directorio test/r2.

75.00 Tesis

118

La decimotercera prueba (reportCompositeServiceRequest60) fue un pedido de servicio

para realizar una postulación de pasantía presentando la inscripción a la bolsa de trabajo y la

oferta de pasantía elegida. El agente determinó que el pedido podía ser resuelto por un

servicio, el servicio wsPostulateJobU pero que como el pedido no cumplía la regla del

servicio no podía ser ejecutado. Faltaba la existencia de una nota de no graduado inscripto.

La decimocuarta prueba (reportCompositeServiceRequest61) fue el pedido de servicio para

realizar una postulación de trabajo de pasantía presentando una inscripción a la bolsa de

trabajo, la oferta de pasantía y los datos del nuevo estudiante no graduado. El agente

determinó que el pedido podía ser resuelto por un servicio, el servicio wsPostulateJobU

pero no podía ser ejecutado porque no se cumplía la regla asociada con el servicio. Faltaba la

presentación de una nota de no graduado inscripto.

La decimoquinta prueba (reportCompositeServiceRequest62) consistió de un pedido de

servicio para realizar la postulación a una oferta de pasantía presentando la oferta de

pasantía, el registro de inscripto en la bolsa de trabajo y una nota de no graduado. El agente

determinó que el pedido podía ser resuelto por un servicio, el servicio wsPostulateJobU el

cual podía ser ejecutado porque el pedido era completo y cumplía con las reglas de los

servicios.

SWScompuesto = SWSsimple = {wsPostulateJobU}

ABoxpedido= { INPUT {x1(JobPostulant), x2(JobOfferPassant),

notice_underGraduate (Notice)},

OUTPUT {x4 (PostulationPassantJob)}

}

ABoxinferido= { x1 = jp (JobOfferPassant),

x3 = notice_underGraduate = n (Notice),

x4 = ppas (PostulationPassantJob),

ug (UnderGraduate) = nt (NewStudent)

}

El reporte reportRunTimeServiceRequest62 con la ejecución del servicio compuesto se

puede ver en el directorio test/r2.

La decimosexta prueba (reportCompositeServiceRequest70) consistió de un pedido de

servicio para realizar la postulación a una oferta de trabajo profesional presentando los datos

del nuevo estudiante, una nota de inscripción de graduado, un curriculum y la oferta de

trabajo profesional elegida. El agente determinó que el pedido podía ser resuelto por tres

servicios, el servicio wsMatriculate, wsInscribeJobBag y wsPostulateJobG los cuales podían

ser ejecutados porque el pedido era completo y cumplía con las reglas de los servicios.

SWScompuesto = {wsMatriculate, wsInscribeJobBag, wsPostulateJobG}

ABoxpedido= { INPUT {x1(Curriculum), x2(JobOfferProfessional),

x3(New_Student), x6 = notice_graduate (Notice)},

OUTPUT {x10 (PostulationProfessionalJob)}

}

ABoxinferido= { x1 = c (Curriculum),

75.00 Tesis

119

x3 = gd (Graduate)= nt (New_Student),

x4 = x7 = x8 = x9 = notice_graduate = n (Notice),

x5 = jp (JobPostulant),

x10 = pprof (PostulationProfessionalJob)

}

El reporte reportRunTimeServiceRequest70 con la ejecución del servicio compuesto se

puede ver en el directorio test/r2.

La decimoséptima prueba (reportCompositeServiceRequest80) consistió de un pedido de

para realizar la postulación a una oferta de pasantía y de una nota de inscripción presentando

los datos del nuevo estudiante, una nota de inscripción de no graduado, un curriculum y la

oferta de pasantía elegida. El agente determinó que el pedido podía ser resuelto por tres

servicios, el servicio wsMatriculate, wsInscribeJobBag y wsPostulateJobU los cuales podían

ser ejecutados porque el pedido era completo y cumplía con las reglas de los servicios.

SWScompuesto = {wsMatriculate, wsInscribeJobBag, wsPostulateJobU}

ABoxpedido= { INPUT {x1(Curriculum), x2(JobOfferPassant),

x3(New_Student), x6 = notice_undergraduate (Notice)},

OUTPUT {x4(Notice), x10 (PostulationPassantJob)}

}

ABoxinferido= { x1 = c (Curriculum),

x3 = ug (UnderGraduate)= nt (New_Student),

x4 = x7 = x8 = x9 = notice_undergraduate = n (Notice),

x5 = jp (JobPostulant),

x10 = ppas (PostulationPassantJob)

}

El reporte reportRunTimeServiceRequest80 con la ejecución del servicio compuesto se

puede ver en el directorio test/r2.

Para la composición de servicios el agente fue provisto con el razonador Pellet 2.2.1

desarrollado en la clase ReasonerEngine.java y utilizado por la clase Compositor.java. La

primera otorga al agente la capacidad de realizar inferencias y de encontrar relaciones de

tipo superclase, subclase, subsumido entre entradas y salidas de los servicios y de los pedidos,

todas marcadas con clases o instancias de la ontología StudentsJobBag.owl. La segunda

otorga al agente la capacidad de componer los servicios para el pedido recibido, utilizando la

clase ReasonerEngine, el algoritmo de backward-chaining y los algoritmos de verificación de

reglas (DL-Safe Rules).

Se pueden observar en las pruebas la utilización de clases superiores de la ontología como la

clase JobOffer definida, en la ontología, como superclase directa de las clases JobOfferPassant

y JobOfferProfessional y aceptada ontológicamente como entrada válida de los servicios

wsPostulateJobU y wsPostulateJobG respectivamente. De la misma manera, se puede

observar la utilización de la instancia notice_graduate, miembro de la clase Notice para

solicitar una nota de inscripción particular y aceptada ontológicamente como entrada válida

de los servicios que requiren una nota para ejecutar un pedido.

Los algoritmos de verificación de reglas hacen uso de la inferencia permitiendo controlar la

75.00 Tesis

120

ejecución correcta de los servicios. En varias pruebas, por ejemplo, al presentar una nota de

graduado, el razonador infería inmediatamente que la instancia gd pertenecía a la clase

Graduate y que era igual a la instancia nt de la clase New_Student por tener una nota de

graduado. Con esto satisfacía parte de la regla asociada al SWS wsPostulateJobG. Los axiomas

considerados fueron:

Graduate ≡ hasNotice value notice_graduate

en la ontología StudentsJobBag.owl

gd (hasNotice notice_graduate)

en la ontología members StudentsJobBag.owl Rule [JobPostulantOf (jp, nt), hasNotice (nt, notice_graduate)] => [hasPostulationProfessionalJob (nt, pprof)]

en la ontología rulePostulateJobG.owl.

Inferencias similares fueron realizadas por el agente por medio del razonador DL en el resto

de las pruebas, como se puede observar en los reportes finales ubicados en el directorio test .

El marcado ontológico de los SWS fue una aproximación al funcionamiento general que

tendría la bolsa de trabajo de una facultad. Tal aproximación fue determinante en la

elaboración de las ontologías que permitieron agregar la semántica necesaria a los servicios

a fin de que el agente pudiera realizar la composición dinámica de servicios como finalmente

fue presentado en esta sección.

75.00 Tesis

121

Capítulo VI

Conclusiones y trabajos futuros

Los servicios Web fueron construidos adoptando estándares a fin de asegurar servicios

independientes de la tecnología y capaces de interoperar con otros servicios Web.

WSDL y SOAP emplean tecnologías XML para 1) describir los contratos de servicio de los

servicios Web y 2) permitir la combinación de tecnologías complejas en la construcción de

servicios Web.

Los contratos de servicios son más valiosos que las implementaciones por representar

conocimiento vital de negocios, son el mecanismo primario para reducir acoplamiento de

interfaz y la base para compartir y reutilizar servicios por lo cual deben ser manejados como

un artefacto separado, utilizando un mecanismo formal de extensión y versionado que

permita controlar dependencias y costos.

Los servicios requieren de un cambio radical en la manera de pensarlos. Para esto, el

desarrollo orientado a servicios plantea una división de responsabilidades donde surgen los

roles del analista de negocios y el técnico. El primero es responsable de montar flujos de

procesos a fin de asegurar el cumplimiento de requerimientos operacionales y estratégicos

de negocios. El segundo es responsable de manejar la complejidad de tecnologías en el

despliegue de servicios, asegurar que las descripciones XML/Web son las que el usuario

necesita y determinar los datos correctos a compartir.

Un servicio es un activo que establece prestaciones y calidad a través de contratos de servicio.

Un servicio Web es funcionalidad disponible en la Web según estándares estipulados (SOAP,

WSDL, UDDI) a fin de garantizar interoperabilidad. Un servicio Web semántico posee

descripciones realizadas por ontologías las cuales agregan un nivel más de procesamiento a

fin de optimizar el ciclo de descubrimiento, selección, invocación y composición de los

servicios Web.

Los servicios Web son recursos Web y son capturados en términos de tareas, las cuales

combinan el concepto de acción con intención: los servicios Web son invocados con un

propósito, que puede ser expresado como un objetivo de estado deseado.

Una ontología es una semántica formal la cual por describir el significado del conocimiento

de manera precisa logra una interpretación única por parte de máquinas y personas.

Disponer de una semántica formal resulta imprescindible para implementar sistemas de

inferencia o de razonamiento automático

Las ontologías actúan como una herramienta para compartir información y conocimiento, y

por lo tanto, para conseguir interoperabilidad semántica. Las ontologías asisten a la Web

Semántica por unificar contenidos semánticos y formalizar conocimiento consensuado y

reutilizable. Brindan ventajas como el desarrollo de aplicaciones con esquemas de datos

compartidos, el impulso de transacciones entre empresas y la búsqueda de información por

inferencias.

75.00 Tesis

122

Las máquinas son capaces de inferir, mediante procesos lógico-matemáticos, conclusiones a

partir de datos representados en un lenguaje formal (lógico y axiomático). Representar los

datos en un lenguaje formal posibilita que las máquinas puedan realizar inferencias lógicas.

Al anotar las descripciones de los servicios Web con ontologías, se consigue mayor

automatización, reduciendo el involucramiento humano en la comprensión datos y

funciones de servicios.

Entre los lenguajes ontológicos, OWL presta el mejor soporte de razonamiento al proveer

mayor poder expresivo y promover motores de inferencia.

El desarrollo y aplicación de ontologías depende de razonamiento. Un razonador es un

componente clave para trabajar con ontologías OWL DL. Los razonadores DL verifican

subsunción, consistencia y satisfactibilidad de ontologías, entre otras.

En el proceso de inferencia, cada pieza de información tiene la capacidad de producir nueva

información. Dicho proceso es vulnerable al fenómeno “garbage in, garbage out” y por ello

se deben aplicar cuidados extras a fin de validar la información inferida.

La composición automática por medio de servicios Web semánticos es conseguida con

ontologías cuidadosamente construidas las cuales reflejen los objetivos de dominio. El proceso

de desarrollo de una ontología es un proceso iterativo, compuesto de sucesivas

aproximaciones interviniendo en él expertos de dominio hasta conseguir una versión final

de la misma. Este proceso iterativo se extiende a lo largo del ciclo de vida de la ontología.

Varias metodologías generales existen para desarrollar ontologías, destacándose Diligence,

Competency Questions, Methontology, On-To-Knowledge [Contreras y Comeche; 2007].

La combinación de agentes y servicios fue realizada en un escenario donde los SW proveen la

funcionalidad de bajo nivel y los agentes la funcionalidad de alto nivel por utilizar, combinar y

coreografiar SW, obteniendo funciones de valor agregado. El agente construido reúne las

soluciones más recientes y distinguidas en relación a los avances en la composición de

servicios Web, a saber: implementado según la recomendación SAWSDL del W3C (extensión

semántica de WSDL) posee la capacidad de servirse de la información provista por servicios

Web semánticos para 1) determinar de qué categoría el servicio es miembro reduciendo

costos asociados con la búsqueda de servicios; 2) realizar la correcta utilización de los SWS

por incorporar reglas DL-Safe en las operaciones de SWS y 3) utilizar las ontologías

construidas correspondientes al dominio de datos asociado con la actividad dentro de la

categoría a la cual pertenecen los servicios.

Respecto del caso práctico, desde el punto de vista ontológico, 1) las limitaciones impuestas al

incorporar reglas DL-Safe y una ontología con una base de conocimiento formada por un

TBox acíclico y 2) los beneficios otorgados por la elección de un razonador DL posibilitó al

agente en el primer caso aprovechar la mayor expresividad ofrecida por OWL y en el

segundo, mejorar la búsqueda de servicios al considerar las relaciones semánticas de los

contratos de servicios.

Para ejecutar la composición de servicios, el agente fue implementado con el algoritmo de

backward-chaining para analizar los tipos de asociación entre entradas y salidas de servicios

y seleccionar aquellos que resolvieran el pedido. Además, para dotar al agente con la

capacidad de componer servicios se considero en el diseño de los servicios el formalismo de

75.00 Tesis

123

acciones desarrollado por [Baader et al.; 2005] quienes basaron en lógica descriptiva y

razonamiento de acciones la descripción de funcionalidad de los SW.

Como trabajo futuro queda investigar la posibilidad de ampliar los tipos de asociación

empleados en la composición de servicios con el fin de mejorar provisión de servicios,

investigar heurísticas del algoritmo de backward-Chaining, estudiar la capacidad del agente

para componer servicios en un MAS (sistema distribuido), innovar con la mediación de

ontologías al indicar en nuevas ontologías equivalencias de clases y de individuos entre las

ontologías que acompañan los SWS. Las ontologías obtenidas deberían ser sencillas y de

carácter público.

75.00 Tesis

124

Glosario

PLATAFORMA

Una plataforma es una base sólida sobre la cual construir algo. Puede estar basada sobre

estándares y especificaciones, siendo su grado de apertura a los mismos y la adherencia a ella

por parte de vendedores IT, de considerable importancia. Como ejemplos de plataformas

basadas en especificaciones y estándares se encuentran la plataforma de aplicación Web

(navegadores, URLs, HTML, CSS y HTTP/S), J2EE y CORBA. Por otro lado, los estándares de

servicios Web (SOAP, WSDL) son elementos claves de ella (pueden ser extendidos utilizando

otros estándares a fin de ajustar requerimientos específicos de negocios, de la industria o de

la organización).

URL

RFC 1738137. Los recursos disponibles en Internet son representados mediante secuencias

de caracteres llamadas Uniform Resource Locators (URL).

Los URL son utilizados para localizar recursos. Proveen un identificador abstracto de la

ubicación de un recurso. Un URL es escrito como sigue:

<scheme>:<scheme-specific-part>

El URL contiene el nombre del esquema empleado seguido por dos puntos y una secuencia

cuya interpretación depende del esquema. Los componentes de la jerarquía son separados

mediante “/”.

URL cubre los siguientes esquemas, además de permitir la especificación de esquemas

futuros:

� FTP: File Transfer Protocol,

� HTTP: Hypertext Transfer Protocol,

� GOPHER: protocolo Gopher,

� MAILTO: Electronic Mail Address,

� NEWS: USENET NEWS,

� NNTP: USENET NEWS utilizando acceso NNTP,

� TELNET: Referencia a sesiones interactivas,

� WAIS: Wide Area Information Servers,

� FILE: nombre específico de un archivo en un host y

� PROSPERO: directorio de servicios PROSPERO.

137

http://www.faqs.org/rfcs/rfc1738.html

75.00 Tesis

125

En algunos casos, los URL son utilizados para localizar recursos que contienen punteros a

otros recursos. Esos punteros son representados como enlaces relativos donde la expresión

de ubicación del segundo recurso está en términos del primero.

Mientras que el esquema elegido determina la sintaxis del resto del URL, los protocolos

basados en el protocolo IP para especificar un host en Internet utilizan una sintaxis común

para datos específicos del esquema:

//<user>:<password>@<host>:<port>/<url-path>.

Los datos específicos del esquema comienzan con una doble barra “//” para indicar su

conformidad con la sintaxis común de esquemas en Internet. Los componentes usuario y

clave son opcionales, host corresponde al nombre de dominio completo de un host en

Internet, port al número de puerto para conectarse y url-path a los datos específicos del

esquema.

El URL con esquema HTTP determina recursos de Internet accesibles utilizando HTTP. Un

URL HTTP es

http://<host>:<port>/<path>?<searchpart>

El valor por defecto de port es 80, <path> representa un selector HTTP y <searchpart> una

cadena de consulta. Los dos últimos son opcionales y dentro de ellos los caracteres “/”, ”;”, ”?”

son reservados. El carácter “/” puede ser utilizado dentro de HTTP para designar la estructura

jerárquica.

El URL con esquema file es utilizada para indicar archivos accesibles sobre un host

particular. Este esquema, a diferencia de los otros esquemas de URL, no representa un

recurso universalmente accesible en Internet. Un URL file es

file://<host>/<path>

La parte <host> es el nombre de dominio completo del sistema sobre el cual el path es

accesible y <path> es la jerarquía de directorios.

Un caso especial de <host> es la cadena “localhost” o la cadena vacía, donde ambas son

interpretadas para referir a la máquina donde el URL es interpretado.

75.00 Tesis

126

URI

RFC 3986138. El Uniform Resource Identifier (URI) es una secuencia compacta de caracteres

que identifica un recurso abstracto o físico. La especificación define la sintaxis genérica del

URI y un proceso para resolver las referencias URI que podrían estar en forma relativa, junto

con pautas y consideraciones de seguridad para la utilización de URIs en Internet. La sintaxis

URI define una gramática que es un superconjunto de todos los URIs válidos, posibilitando

implementar un analizador sintáctico de los componentes comunes de una referencia URI,

sin conocer los requerimientos específicos de esquema. La especificación no define una

gramática para URIs; esa tarea es ejecutada por las especificaciones individuales de cada

esquema URI.

Un URI es caracterizado como sigue:

� Uniform: provee varios beneficios. Permite que diferentes tipos de identificadores de

recursos puedan ser utilizados en el mismo contexto, aún cuando los mecanismos

utilizados para acceder a esos recursos puedan diferir. Esto permite una interpretación

semántica uniforme de convenciones sintácticas comunes, a través de diferentes tipos de

identificadores de recursos. Permite la introducción de nuevos tipos de identificadores de

recursos sin interferir con los identificadores existentes. Permite la reutilización de los

identificadores en diferentes contextos, brindando a las aplicaciones la posibilidad de

aprovechar un conjunto de identificadores ampliamente utilizados.

� Resource: la especificación no limita el alcance de lo que puede ser un recurso sino que el

término es utilizado en un sentido más general para cualquier cosa que pueda ser

identificado por un URI como un documento electrónico, una imagen, un servicio, etc. Un

recurso no es necesariamente accesible desde Internet (personas, empresas, libros). Del

mismo modo, los conceptos abstractos pueden ser recursos (operadores en una operación

matemática, tipos de relación o valores numéricos).

� Identifier: incorpora información para distinguir aquello que está siendo identificado.

Un URI es un identificador consistente de una secuencia de caracteres que sigue las reglas

definidas por la especificación. Permite la identificación uniforme de recursos por medio de

un conjunto extensible de esquemas de nombres. Cada esquema debe determinar cómo

acompañar la identificación, asignarla o habilitarla.

Los URIs tienen alcance global y son interpretados consistentemente sin importar el

contexto, aunque el resultado de esa interpretación podría estar en relación al contexto del

usuario final139. Sin embargo, una acción puede ser realizada sobre la base de que la

referencia tomará lugar en relación al contexto del usuario final, lo cual implica que una

acción que intenta referir a una cosa única globalmente debe utilizar un URI que diferencie

ese recurso de todas las otras cosas. Los URIs que identifican en relación al contexto local del

usuario final deberían ser utilizados sólo cuando el contexto mismo es un aspecto definido

del recurso140.

Cada URI comienza con un esquema, que posee su especificación para asignar

138 http://www.faqs.org/rfcs/rfc3986.html 139 http://localhost tiene la misma interpretación para cada usuario final de esa referencia, aunque la interfaz de

red correspondiente a “localhost” puede ser diferente para cada usuario final: la interpretación es

independiente del acceso 140

Como un manual de ayuda on-line que apunta a un archivo en el sistema de archivos del usuario final

(“file:///etc/hosts”).

75.00 Tesis

127

identificadores dentro de ese esquema. Así la sintaxis URI, es un sistema de nombres federado

y extensible, donde cada especificación de esquema puede restringir la sintaxis y semántica

de los identificadores utilizados en el esquema.

Esta especificación define los elementos de la sintaxis URI requeridos por todos los esquemas

URIs o comunes a muchos esquemas URIs. Define la sintaxis y semántica necesaria para

implementar un analizador sintáctico independiente del esquema, por el cual los manejos

dependientes del esquema de un URI pueden ser pospuestos hasta que la semántica

dependiente del esquema sea requerida.

La sintaxis URI genérica consiste de una secuencia de componentes jerárquicos, a saber,

esquema, autoridad, path, query y fragmento.

URI = scheme “:” hier-part [“?” query] [“#” fragment]

hier-part = “//” autoridad

/ path-absolute

/ path-rootless

/ path-empty

Los componentes path y esquema son requeridos, aunque el path puede estar vacío. Cuando

la autoridad está presente, el path debe empezar con el carácter “/” o puede estar vacío.

Cuando la autoridad no está presente, el path no puede empezar con los caracteres “//”.

La especificación detalla los caracteres, los componentes de la sintaxis, los usos, la resolución

por referencia, normalización y comparación, entre otras. Acá hemos mencionado sólo

algunas partes con el propósito de aclarar y diferenciar lo que URI representa.

IRI

RFC 3987141. El Internationalized Resource Identifier (IRI) extiende la sintaxis URI con un

repertorio más amplio de caracteres.

El URI es una secuencia de caracteres limitada a un subconjunto dentro del repertorio de

caracteres US-ASCII. Los caracteres en el URI representan palabras en lenguaje natural. Esta

utilización tiene varias ventajas: son más fáciles de memorizar, de interpretar, transcribir,

crear y adivinar. Para otros lenguajes diferentes del inglés, un script en lenguaje natural

utiliza caracteres distintos que no están dentro del rango de caracteres A-Z. Para muchas

personas manejar caracteres en Latín es tan difícil como lo sería para las personas que sólo

manejan caracteres del alfabeto latino scripts con otros caracteres. Scripts en otros lenguajes

son transcriptos al latín. Estas transcripciones, con frecuencia, son utilizadas en URIs pero

con la introducción adicional de ambigüedades. La infraestructura para la correcta utilización

de caracteres en los scripts locales es provista por sistemas operativos y aplicaciones de

software que pueden manejar simultáneamente una amplia variedad de scripts y lenguajes.

El incremento en el número de protocolos y formatos conduce a un amplio rango de

caracteres. Por este motivo, la RFC define un nuevo elemento de protocolo, llamado

Internationalized Resource Identifier (IRI) como un complemento del URI. Una IRI es una

secuencia de caracteres del conjunto universal de caracteres (Unicode/ISO 10646). Los IRIs

pueden ser utilizados en lugar de los URIs cuando sea necesario gracias al mapeo definido

por la RFC entre IRI y URI.

141 http://tools.ietf.org/html/rfc3987

75.00 Tesis

128

Los IRIs han sido diseñados para ser compatibles con los URIs. Esta compatibilidad es la

especificación de mapeos entre una secuencia de caracteres IRI y una secuencia de

caracteres URI.

La RFC describe los mapeos IRIs a URIs, conversión URIs a IRIs, utilización de los IRIs, pautas

para el procesamiento IRI y URI, entre otras.

75.00 Tesis

129

Referencias

http://hermit-reasoner.com/

HermiT OWL Reasoner

http://owlapi.sourceforge.net/index.html

The OWl API

http://www.w3.org/2001/sw/Activity.html

Herman I. 2010, última revisión. “Semantic Web Activity Statement”.

Rodríguez C. M., Montaño W. C., Martínez J.M. 2010. “Razonadores semánticos: en estado del

arte”. Revista Ingenium de la Facultad de Ingeniería, Universidad de San Buenaventura,

Bogotá, Colombia. Año 11. Nº 21. Enero-Junio de 2010.

http://jena.sourceforge.net/ontology/index.html

Dickinson I. 2009. “Jena Ontology API”.

http://www.w3.org/2001/sw/SW-FAQ

Herman I. 2009, última revisión. “W3c Semantic Web Frequently Asked Questions”.

http://www.w3.org/standards/techs/owl#w3c_all

W3C. 2009. “OWL Web Ontology Language Current Status”.

http://lsdis.cs.uga.edu/projects/meteor-s/

“METEOR-S: Semantic Web Services and Processes”.

http://www.w3.org/2002/ws/sawsdl/

Semantic Annotations for WSDL Working Group

García-Sánchez F., Valencia-García R., Martínez-Béjar R., Fernández-Breis J. 2009. “An

ontology, intelligent agent-based Framework for the provision of semantic web service”.

Expert Systems with Applications Vol. 36, Issue 2, Part 2, March 2009. Pages 3167-3187.

Navoni N., González P. 2009. “Indización social y control de vocabulario”. II Encuentro

Nacional de Catalogadores. “La Cooperación y las Normas para la Organización y Tratamiento

de la Información en las Bibliotecas Argentinas”.

http://www.ibm.com/developerworks/webservices/library/ws-restwsdl/

Hebeler J., Fisher M., Blace R., Perez-Lopez A. 2009. “ Semantic Web Programming”. 651

páginas. Editorial Wiley Publishing, Inc. ISBN 978-0-470-41801-7.

Mandel L. 2008. “Describe REST Web Services with WSDL 2.0”.

Ketel M. 2008. “Mobile Agents Based Infrastructure for Web services Composition”. 978-1-

4244-1884-8/08 IEEE.

Qiu Y., Ge J., Yin S. 2008. “Web Services Composition Method Based on OWL”. IEEE

International Conference on Computer Science and Software Engineering.

Mansilla Espinosa L. 2008. “¿Qué son los Agentes Inteligentes de Software?”. CONCYTEG. Año

3. Núm. 31, 21 de enero de 2008.

Fahad, M., Qadir, M.A. and Shah, S.A.H., 2008. In IFIP International Federation for

Information Processing, Volume 288; Intelligent Information Processing IV; Zhongzhi Shi, E.

Mercier-Laurent, D. Leake; (Boston: Springer), pp. 17–27.

Payne T. 2008. “Web Services from Agent Perspective”. IEEE Intelligent Systems. Vol. 23. Nro.

2.

75.00 Tesis

130

Contreras J., Martínez Comeche J.A. 2007. “Tutorial Ontologías”. Grupo de Trabajo sobre

“Normalización para la Recuperación de Información en Internet” (Normaweb).

http://www.sedic.es/gt_normalizacion.asp

Thakker D., Osman T., Al-Dabass D. 2007. “Semantic-Driven Matchmaking and Composition

of Web services Using Case-Based Reasoning”. Fifth European Conference on Web services.

Yong-Feng L., Jason Jen-Yen C. 2007. “OWL-Based Description for Agent Interaction”. 31st

Annual International Computer Software and Applications Conference (COMPSAC 2007)

IEEE.

Akkiraju R., Sapkota B. 2007. “Semantic Annotations for WSDL and XML Schema – Usage

Guide”. W3C Working Group.

http://www.w3.org/TR/sawsdl-guide/#registries

Berners-Lee T., Shadbolt N., Hall W. 2006. “The Semantic Web Revisited”. IEEE Intelligent

Systems.

Li Y., Yu X., Geng L. Wang L. 2006. “Research on Reasoning of The Dynamic Semantic Web Services Composition”. Proceedings of the 2006 IEEE/WIC/ACM International Conference on

Web Intelligence (WI 2006 Main Conference Proceedings) (WI’06)

Küster U., Stern M., König-Ries B. 2005. “A Classification of Issues and approaches in

Automatic Service Composition”. Intl. Workshop WESC’05.

Elenius D., Denker G., Martin D., Gilham F., Khouri J., Sadaati S., Senanayake R. 2005. “THE

OWL-S Editor – A Development Tool for Semantic Web Services”. Lecture Notes in Computer

Science, Vol. 3532/2005, 78-92. Springer Link.

Martin D., Paolucci M., McIlraith S., Burstein M., McDermott D., McGuinness D., Parsia B.,

Payne T., Sabou M., Solanki M., Srinivasan N., Sycara K. 2005. “Bringing Semantics to Web

Services: The OWL-S Approach”. SWSWPC 2004. LNCS 3387, pp. 26-42, 2005. Springer-

Verlag.

Battle S., Berstein A., Boley H., Grosof B., Gruniget M., Hull R., Kifer M., Martin D., Mcllraith S.,

McGuinness D., Su J., Tabet S. 2005. “Semantic Web Services Framework (SWSF)”.

http://www.w3.org/Submission/SWSF/

Akkiraju R., Farrell J., Miller J., Nagarajan M., Schmidt M., Sheth A., Verma K. 2005. “Web

Service Semantics – WSDL-S”.

http://www.w3.org/Submission/WSDL-S/#Terminology

Abián M. 2005. “El Futuro de la Web, XML, RDF/RDFS, ontologías y la Web Semántica”.

http://www.javahispano.org

Motik B., Sattler U., Studer R. 2005. ”Query Answering for OWL-DL with Rules”. Web

Semantics: Science, Services and Agents on the World Wide Web, Volume 3, Issue 1, Rule

Systems, July 2005, Pages 41-60.

Baader F., Lutz C., Milicic M., Sattler U., Wolter F. 2005. “Integrating Description Logics and

Action Formalisms for Reasoning about Web Services”. LTCS-Report 05-02, Chair for

Automata Theory, Institute for Theoretical Computer Science, Dresden University of

Technology, Germany, 2005.

Miller J., Verma K., Rajasekaran P. Sheth A., Aggarwal R., Sivashanmugam K. 2004. “WSDL-S

Adding Semantic to WSDL - White Paper”. LSDIS Lab, University of Georgia.

http://lsdis.cs.uga.edu/projects/meteor-s/wsdl-s/

Manola F, Miller E. 2004. “RDF Primer”. http://www.w3.org/TR/2004/REC-rdf-primer-

75.00 Tesis

131

20040210/#reification

Booth D., Haas H., McCabe F., Newcomer E., Campion M., Ferris C., Orchard D. 2004. “Web

Services Arquitecture”.

http://www.w3.org/TR/ws-arch/

Newcomer E.; Lomov G. 2004. “Understanding SOA with Web Services”. 480 Pags. Editorial

Addison Wesley Professional. ISBN 0-321-18086-0.

Sycara K., Paolucci M. 2004. “Ontologies in Agent Arquitectures” in Handbook on Ontologies

in Information Systems.

Aversano L., Canfora G., Ciampi A. 2004. “An algorithm for Web Service Discovery through

their composition”. Proceedings of the IEEE International Conference on Web Services

(ICWS’04).

Aversano L., Canfora G., Ciampi A. 2004. “An algorithm for Web Service Discovery through

their composition”. Proceedings of the IEEE International Conference on Web Services

(ICWS’04).

Rao J., Su X. 2004. “A Survey of Automated Web Service Composition Methods”. In Proceedings

of the First International Workshop on Semantic Web Services and Web Process

Composition, SWSWPC 2004.

Brickley D., Guha R.V. 2004. “RDF Vocabulary Description Language 1.0: RDF Schema”.

http://www.w3.org/TR/2004/REC-rdf-schema-20040210/

Paolucci M., Sycara K. 2003. “Autonomous Semantic Web Services”. In IEEE Internet

Computing, vol. 7, #5, Septiembre/Octubre 2003, pp 34-41.

Paolucci M., Kawamura T., Payne T., Sycara K. 2003. “Delivering Semantic Web Services”. In

Proceedings of the Twelves World Wide Web Conference (WWW2003).

Salazar Serrudo C. 2003. “Agentes en Comercio Electrónico”. Acta Nova. Vol. 2. Num.3,

Diciembre 2003.

Paolucci M., Kawamura T., Payne T., Sycara K. 2002. “Semantic Matching of Web Services

Capabilities”. In Proceedings of the 1st International Semantic Web Conference (ISWC2002).

Huhns M. 2002. “Agents as Web Services”. IEEE Internet Computing Vol. 6. Nro. 4. Pag. 93-95

ISSN: 1089-7801.

Sirin E., Hendler J., Parsia B. 2002. “Semi-Automatic Composition of Web Services using

Semantic Descriptions”.

Sycara K., Lu J., Klusch M. 1998. “Interoperability among Heterogeneous Software Agents on

the Internet”. Technical Report CMU-RI-TR-98-22, CMU Pittsburgh, USA.

Wooldridge M. 1998. “Intelligent Agents”. In Gehard Weiss, editor, Multiagent Systems: A

modern Approach to Distributed Artificial Intelligence, chapter 1, pages 27-77. The MIT

Press, 1999.

75.00 Tesis

132

Anexo I

El código desarrollado para la construcción del prototipo se encuentra disponible en el cd que

acompaña el presente trabajo. Se recomienda ver los reportes en html utilizando algún navegador

(IE, Mozilla).

75.00 Tesis

133

Anexo II Objetivos 1) Aportar al área de investigación de la composición dinámica de servicios una solución

eficiente y efectiva.

2) Proveer a un agente, que habitualmente actúa como un intermediario entre un usuario y

un proveedor, de información semántica acerca de los servicios que tiene registrados.

3) Utilizar ontologías apropiadas relacionadas a los servicios registrados para agregar

información semántica al agente.

4) Dotar al agente con la funcionalidad de establecer relaciones lógicas, realizar inferencias

a fin de poder vincular servicios de forma correcta para responder a un pedido que no puede

ser resuelto por un solo servicio sino por la combinación de varios servicios.

5) Determinar un escenario de aplicación representativo del problema a resolver.

6) Construir un prototipo para llevar a cabo los experimentos y elaborar las conclusiones

finales en relación a los resultados obtenidos.

7) Utilizar estándares de la industria en relación a la comunicación entre servicios como

WSDL y SOAP.

8) Investigar alternativas de composición semántica como OWL, Pellet, el algoritmo

backward-chaining.

9) Utilizar, preferentemente, herramientas open-source en la construcción de la solución.

10) Investigar razonadores alternativos que puedan ser incorporados en el agente.

11) Brindar una breve reseña acerca de los servicios Web y su creciente utilización, en

especial en una arquitectura orientada a servicios.