Aplicaciones y ejemplos de uso Ingenieria ontologica.

1. Introducción
En la literatura existen muchas definiciones de ontología. La más ampliamente citada es la dada por
Gruber en 1993: “una especificación formal, explícita de una conceptualización compartida”, donde
conceptualización se entiende como una visión abstracta y simple del mundo que se desea representar,
una representación del conocimiento basada en objetos, conceptos y entidades que “existen” en el área
de estudio, y las relaciones que existen entre ellas. Que sea explícita significa que los conceptos utilizados
y las restricciones para usarlos están explícitamente definidos. Es formal si puede ser comprensible
por una máquina. Por último, es compartida, si el conocimiento que captura tiene el consenso de la
comunidad. [7]
Dentro del campo de análisis de la Ingeniería del Software, una ontología puede verse como un vocabulario
de representación para un dominio específico, que representa elementos conceptuales y relaciones
entre ellos; sin embargo la ontología no es el vocabulario en sí mismo, sino lo que él representa ya
que, por ejemplo, si se traduce cada vocablo a otro idioma no significa que cambie la ontología. [2]
Algunos autores postulan la necesidad de que una ontología sea una “teoría”, es decir, un vocabulario
formal con un conjunto de axiomas definido para ese vocabulario, pues los axiomas expresan nuevas
relaciones entre conceptos y restringen las posibles interpretaciones [12] [16].
En cualquier caso, es evidente que disponer de una ontología del dominio de aplicación de un sistema
software, o de los procesos para su diseño y construcción, es una ayuda importante para evitar errores y
problemas en todas las fases del ciclo de vida del producto software: desde el análisis de requisitos
inicial (facilitando la interacción analista-cliente) hasta la etapa de mantenimiento (más fácil comprensión
de las peticiones de modificación, mejor comprensión del sistema mantenido, etc.).
En la sección 2 se presentan varias maneras de clasificar ontologías propuestas en la literatura, de la misma manera que en la sección 3 se presentan varias propuestas de uso de ontologías en Ingeniería del
Software. En la sección 4 se describen algunos ejemplos de ontologías aplicadas para mejorar los procesos
de desarrollo y mantenimiento de software, continuando, en la sección 5, con una comparativa de
las ontologías presentadas, de acuerdo a las clasificaciones de las secciones anteriores. Por último, la
sección 6 incluye las principales conclusiones obtenidas en este estudio.
2. Clases de Ontologías
En la literatura se encuentran diversas clasificaciones de ontologías de acuerdo a distintos enfoques:
De acuerdo al nivel de generalidad
Clasificación según Guarino [10]:
• Ontologías de Alto Nivel: Describen conceptos generales como espacio, tiempo, materia, objeto.
Son independientes de un dominio o problema particular. Su intención es unificar criterios entre
grandes comunidades de usuarios.
• Ontologías de Dominio: Describen el vocabulario relacionado a un dominio genérico (por ejemplo
medicina o automotores), por medio de la especialización de los conceptos introducidos en las ontologías
de alto nivel.
• Ontologías de Tareas: Describen el vocabulario relacionado a una tarea o actividad genérica (por
ejemplo de diagnóstico o de ventas), por medio de la especialización de los conceptos introducidos
en las ontologías de alto nivel.
• Ontologías de Aplicación: Describen conceptos que pertenecen a la vez a un dominio y a una tarea
particular, por medio de la especialización de los conceptos de las ontologías de dominio y de tareas.
Generalmente corresponden a roles que juegan las entidades del dominio cuando ejecutan una
actividad.
Clasificación según Fensel [5]:
• Ontologías Genéricas o de Sentido Común: Capturan conocimiento general acerca del mundo. Proveen
nociones básicas y conceptos para cosas tales como espacio, tiempo, estado, eventos. Son válidas
en varios dominios.
• Ontologías Representacionales: No se comprometen con ningún dominio en particular. Proveen
entidades sin establecer que deberían representar, por lo tanto definen conceptos para expresar conocimiento
de manera orientada a objetos o a marcos de trabajo.
• Ontologías de Dominio: Capturan el conocimiento válido para un tipo particular de dominio (ej:
electrónica, medicina, mecánica).
• Ontologías de Métodos y Ontologías de Tareas: Las primeras proveen términos específicos para
métodos particulares de resolución de problemas, mientras que las segundas proveen términos para
tareas específicas. Ambas proveen un punto de vista de razonamiento sobre conocimiento del dominio.
Las clasificaciones dadas por ambos autores pueden alinearse según se muestra en la figura 1. Podemos
destacar que el nivel de Ontologías de Tareas en la clasificación de Guarino y el de Ontologías Representacionales
en la clasificación de Fensel no encuentran contraparte en la otra clasificación. Aún
cuando ambas dicen representar tareas en forma genérica, las primeras las expresan para un dominio
específico, mientras que las segundas se menciona claramente que son independientes del dominio.

De acuerdo al tipo de estructura de conceptualización [15]
• Ontologías terminológicas: Especifican términos a utilizarse para representar el conocimiento en el
dominio de estudio. Intentan obtener un lenguaje unificado sobre un tema específico, por ejemplo, el
Sistema de Lenguaje Médico Unificado (ULMS)
• Ontologías de información: Especifican la estructura de los registros de una base de datos, determinando
un marco para el almacenamiento estandarizado de información. Un ejemplo es un marco de
trabajo para modelar los registros médicos de pacientes.
• Ontologías de representación de conocimiento: Especifican conceptualizaciones del conocimiento.
Comparados con las ontologías de información, estas tienen una estructura interna más rica. Suelen
estar enfocadas a un uso particular del conocimiento que describen.
De acuerdo a los aspectos del mundo real que intentan modelar [11]
• Ontologías Estáticas: Describen las cosas que existen, sus atributos y las relaciones entre ellos. Esta
clasificación asume que el mundo está poblado de entidades que están dotadas de una identidad única
e inmutable.
Términos que utilizan: entidades, atributos, relaciones
• Ontologías Dinámicas: Describen los aspectos que pueden cambiar en el mundo que modelan. Para
modelarlas se pueden utilizar máquinas de estados finitos, redes de Petri, etc.
Términos que utilizan: procesos, estados, transición de estados.
• Ontologías Intencionales: Describen aspectos que tienen que se refieren al mundo de las motivaciones,
intenciones, metas, creencias, alternativas y elecciones de los agentes involucrados.
Términos que utilizan: aspecto, objetivo, soporte, agente
• Ontologías Sociales: Describen aspectos que se relacionan con lo social, estructuras organizacionales,
redes, interdependencias.
Términos que utilizan: actor, posición, rol, autoridad, compromiso.
De acuerdo a la riqueza de la estructura interna y del sujeto de conceptualización [7]
Esta es una clasificación más extensa que las anteriores, basada en dos enfoques distintos: (1) la riqueza
de la estructura interna, basada en una clasificación propuesta por Lassila y McGuinness; (2) el sujeto
de conceptualización, una extensión de la clasificación propuesta en [15] por van Heist et al y presentada
anteriormente
Los tipos de ontologías, de acuerdo a la riqueza de su estructura interna son:

• Vocabularios controlados: lista finita de términos, por ejemplo un catálogo.
• Glosarios: son listas de términos con sus significados expresados en lenguaje natural.
• Tesauros: proveen semánticas adicionales entre términos, como por ejemplo información referida a
sinónimos.
• Jerarquías Informales “Es-Un”: Son jerarquías de términos que no corresponden a una subclase
estricta, por ejemplo los términos “auto de alquiler” y “hotel” podrían ser modelados informalmente
bajo la jerarquía “viaje” ya que se considerarían partes clave de un viaje.
• Jerarquías Formales “Es-Un”: En este caso existe una relación estricta entre instancias de una
clase y de las superclases correspondientes. Su objetivo es explotar el concepto de herencia.
• Marcos: Son ontologías que incluyen tanto clases como sus propiedades, las cuales pueden ser heredadas
por otras clases en los niveles mas bajos de una taxonomía formal “es-un”.
• Ontologías que expresan restricciones de valor: por ejemplo expresan restricciones de acuerdo al
tipo de dato de una propiedad (por ejemplo, tipo fecha).
• Ontologías que expresan restricciones lógicas generales: Son las ontologías más expresivas. Especifican,
por medio de lógica de primer orden, restricciones entre los términos de la ontología.
De acuerdo al sujeto de conceptualización, los tipos de ontologías son:
• Ontologías de representación de conocimiento: capturan primitivas de representación utilizadas
para formalizar conocimiento bajo un paradigma de representación de conocimiento dado.
• Ontologías comunes o generales: representan conocimiento de sentido común y reutilizable en distintos
dominios, por ejemplo sobre vocabulario relacionado a cosas, eventos, tiempo, espacio, etc.
• Ontologías de alto nivel: son ontologías que describen conceptos y nociones generales bajo las cuales
pueden enlazarse los términos raíces de todas las ontologías. Un problema que existe es que hay
varias de estas ontologías de alto nivel que difieren en los criterios para clasificar la mayoría de los
conceptos generales de la taxonomía.
• Ontologías de dominio: son aquellas ontologías reutilizables en un dominio particular (medicina,
ingeniería, etc.). Proveen vocabularios sobre conceptos dentro del dominio y sus relaciones.
• Ontologías de tareas: describen vocabulario relacionado a actividades genéricas. Proveen un vocabulario
sistemático de términos utilizados para resolver problemas que pueden o no pertenecer a un
mismo dominio.
• Ontologías de tareas de dominios: a diferencia de las ontologías de tareas, estas ontologías son reutilizables
en un dominio dado, y no entre dominios diferentes.
• Ontologías de métodos: proveen definiciones de conceptos relevantes y relaciones aplicables a un
proceso de razonamiento específico a fin de cumplir una tarea particular.
• Ontologías de aplicaciones: son dependientes de las aplicaciones. A menudo extienden y especializan
vocabulario de una ontología de dominio o de tareas para una aplicación particular.
3. Usos en Ingeniería de Software
Entre los principales aspectos por los cuales es importante el uso de ontologías en cualquier campo de
actividad humana, se pueden destacar los siguientes:
• Clarifican la estructura de conocimiento: Durante el análisis ontológico se definen los conceptos

del dominio así como las relaciones entre ellos, de manera que este paso, ejecutado en forma adecuada,
permite una clara especificación de la naturaleza de los conceptos y de los términos utilizados
para representarlos, respecto del cuerpo de conocimiento que se quiere construir. [1]
• Reducen la ambigüedad conceptual y terminológica: El análisis ontológico provee un marco de
unificación aún entre personas con necesidades y/o puntos de vista que dependen de sus contextos
particulares. [14]
• Permiten compartir conocimiento: Mediante un apropiado análisis ontológico se consigue un conjunto
de conceptualizaciones de un dominio específico, y un conjunto de términos que las soportan.
Mediante una sintaxis adecuada, esas conceptualizaciones y las relaciones entre ellas, serán expresadas
y codificadas en una ontología, la cual podrá ser compartida con cualquiera que tenga
necesidades similares en el mismo dominio. [1]
Los usos posibles de las ontologías en Ingeniería del Software han sido analizados por distintos autores
y se han determinado las siguientes utilidades:
Según Uschold-Gruninger [14]
• Comunicación: Las ontologías reducen la ambigüedad conceptual y terminológica puesto que proveen
un marco de unificación. Por ello permiten compartir el conocimiento y facilitan la comunicación
entre personas aún con distintas necesidades y/o puntos de vista de acuerdo a su contexto en
particular.
En una organización hay aspectos implícitos que pueden explicitarse por medio de ontologías, por
ejemplo los modelos normativos y las redes de relaciones entre personas; mientras que por otro lado
permiten conseguir consistencia, falta de ambigüedad e integración entre distintas perspectivas de
los usuarios.
• Interoperabilidad: Cuando usuarios diferentes necesitan intercambiar datos o bien cuando un usuario
utiliza diferentes herramientas de software el concepto de interoperabilidad no es menor.
Desde un primer punto de vista las ontologías pueden actuar como “Inter-lengua”, es decir, que pueden
utilizarse para soportar la traducción entre diferentes lenguajes y representaciones; puesto que
es más eficiente tener un traductor por cada parte involucrada con una ontología “de intercambio”
que diseñar un traductor para cada par de partes (lenguajes o representaciones) involucradas.
• Ingeniería de sistemas: La aplicación de ontologías para soportar el diseño y desarrollo de sistemas
de software puede darse con varios propósitos:
Especificación: El rol que las ontologías juegan en la especificación depende del grado de formalidad
y automatización dentro de la metodología de diseño del sistema. Desde un enfoque informal,
las ontologías facilitan el proceso de identificación de requerimientos y la comprensión de las relaciones
entre componentes. Esto es particularmente importante cuando existen conjuntos de diseñadores
distribuidos trabajando sobre diferentes dominios.
Desde un enfoque formal, una ontología provee una especificación declarativa de un sistema, la cual
permite a los diseñadores razonar sobre “para qué” se está diseñando el sistema en lugar de “cómo”
soportar la funcionalidad.
Confiabilidad : Las ontologías informales pueden mejorar la confiabilidad del sistema sirviendo
como base para el chequeo manual del diseño contra la especificación, mientras que las ontologías
formales permiten el chequeo de consistencia (semi)automatizado del sistema de software con respecto
a la especificación declarativa.
Reusabilidad: Para ser eficiente, una ontología debe soportar que se puedan importar y exportar mó