Buscar en el blog

Tamaño de letra: 10 12 14 16 18 20

lunes, 25 de agosto de 2014

Creación de ontologías con Protégé: conceptos básicos

Una ontología puede crearse utilizando diferentes programas. También varían dependiendo del lenguaje bajo el que se construye la ontología. Unos programas obligan a utilizar su propio lenguaje, otros son independientes y se basan en un lenguaje estandarizado como OWL.
Uno de los programas más utilizados para construir ontologías es Protégé. Como ya señalé en Mi primera ontología: de las pizzas a poleco, uno de los documentos básicos para entender este software es HORRIDGE, Guía Práctica para la Construcción de Ontologías OWL utilizando Protégé 4 y Herramientas CO-ODE Edición 1.3.
Aunque existen versiones posteriores, este manual sigue siendo útil para comprender algunos conceptos. A lo largo de este texto se utilizará su nombre coloquial, el "manual de pizzas". :)
Una ontología se compone de varios elementos: individuos, propiedades, clases y restricciones. Las posibilidades de desarrollo de cada uno dan lugar a distintas características y tipologías, que se detallan a continuación.
1) Individuos o instancias (individuals): representan objetos del mundo real, en el dominio en el que estamos trabajando. Habitualmente están vinculadas a una clase mediante una relación de tipo esUn (isA)
2) Propiedades (properties): indican relaciones entre individuos o entre un individuo y un dato, y se detallan habitualmente a nivel de clase. Pueden crearse subpropiedades y existen tanto para un conjunto de individuos (esto es, propiedad o atributo de clase) como para individuos concretos (propiedad o atributo de instancia). Una propiedad tiene un dominio (domain) y un rango (range). En el dominio es el conjunto de individuos de una clase que se relaciona con el conjunto de individuos de otra clase, el rango. Por ejemplo, en la propiedad estudiaEn el dominio podría estar compuesto por "Alumnos" y el rango por "Universidades". El manual de pizzas desaconseja definir dominio y rango. Existen tres tipos de propiedades:
  • Propiedades de anotación (annotation properties): utilizadas para añadir información a clases, individuos y propiedades de objeto o dato. Entre estas propiedades, destacan las labels y los comments
  • Propiedades tipo dato (datatype restrictions): vinculan individuos y valores (datos) definidos mediante un rdf literal o utilizando un esquema de datos XML. Para establecer estas relaciones se utilizan las restricciones tieneValor (hasValue restrictions), que se explican más adelante
  • Propiedades tipo objeto (object type restrictions): son relaciones binarias entre individuos. Características de estas propiedades son:
    • Propiedad inversa (inverse property): si una propiedad vincula A y B, su propiedad inversa relacionará B y A. Por ejemplo, esParteDe tiene como inversa tieneComoParte. En este caso, dominio y rango de la propiedad esParteDe serán rango y dominio, respectivamente, de tieneComoParte
    • Propiedad funcional (functional property): como máximo, un individuo sólo se relaciona con un individuo. Así, tieneComoTapa, que relaciona "Libro" y "Tapa" es funcional, ya que un "Libro" cualquiera no puede tener más que una "Tapa". Este tipo de propiedad también se denomina de un único valor (single valued property) o feature
    • Propiedad inversa funcional (inverse functional property): si una propiedad es inversa funcional, implica que su inversa también lo es. En el manual de pizzas, una "pizza" siempre tieneComoBase una "base" y una "base" siempre esPartede una "Pizza" por lo que existe relación inversa. Sin embargo, una "Pizza" siempre tieneComoBase una única "Base", pero una "Base" esParteDe más de un tipo de "Pizza". Esto implica que sólo "Pizza" -> "Base" es funcional. Por tanto, la primera relación es inversa Y funcional, pero no inversa funcional
    • Propiedad transitiva (transitive property): si A se relaciona con B y éste con C mediante una propiedad transitiva los individuos A y C están relacionados. Por ejemplo si "María" esHermanaDe "Laura" y "Laura" esHermanaDe "Paula", podemos inferir que "María" y "Paula" son hermanas. Si una propiedad es transitiva, no puede ser funcional
    • Propiedad simétrica (symmetric property): permite establecer relaciones de igualdad entre dos individuos. Si "María" esHermanaDe "Laura", "Laura" esHermanaDe "María"
    • Propiedad asimétrica (asymmetric property): es el caso contrario, si A se relaciona con B mediante una relación asimétrica no puede aplicarse la misma relación entre B y A
    • Propiedad reflexiva (reflexive property): se aplica en los casos en que un individuo se relaciona consigo mismo. Por ejemplo, una "Institución" puede investigarse a mi misma.
    • Propiedad irreflexiva (irreflexive property): incide en el caso contrario a la anterior. Por ejemplo, la relación "María" esHermanaDe "María" es irreflexiva (e imposible), una persona no puede ser hermana de sí misma
3) Clases (classes): son sets que contienen individuos. Se trata de representaciones concretas de conceptos, que se describen mediante declaraciones que indican los requerimientos para ser miembro de éstas. Tipos de clases:
  • Clases disjuntas (disjoint classes): son aquellas de las que un individuo no puede ser instancia simultáneamente. Por ejemplo, las clases "Brazo" y "Pierna" son disjuntas, ya que cualquier miembro que pertenezca a la clase "Brazo" no puede formar parte del conjunto de la clase "Pierna"
Existen otros tipos de clases, definidas a partir de restricciones (restrictions), que describen el conjunto de individuos de dicha clase basándose en las relaciones en las que éstos participan.
  • Clases primitivas (primitive classes): hace referencia a aquellas condiciones necesarias que tienen que reunir los individuos para formar parte de una clase. Estas condiciones son denominadas superclases subclases, dependiendo de la versión de Protégé. En el manual de pizzas, se recurre al ejemplo de la "ChessyPizza". Esta clase tiene 2 condiciones necesarias para cualquier individuo: 1) esUna "Pizza" y 2) tieneTopping algún "Queso"
  • Clases equivalentes (equivalent classes): Ahora bien, el simple hecho de cumplir las condiciones no implica obligatoriamente que un individuo sea miembro de cierta clase. Para ello, estas condiciones necesarias deben definirse como suficientes. De esta forma, cualquier individuo que satisfaga estas condiciones, será considerado miembro de dicha clase. Así, cualquier individuo que esUna "Pizza" y tieneTopping algún "Queso", es una "ChessyPizza". Cuando una clase tiene, como mínimo una condición necesaria y suficiente, recibe el nombre de clase definida (defined class)
  • Clases enumeradas (enumerated classes): se crean definiendo previamente el conjunto de individuos que forman parte de dicha clase. En el manual de pizzas, se explica mediante el ejemplo "DiasDeLaSemana", cuyos individuos se especifican en la Vista de Descripción de la Clase, como "Clases Equivalentes", {Lunes, Martes, Miércoles, Jueves, Viernes, Sábado, Domingo}
4) Para entender estas clases, es recomendable conocer previamente los tipos de restricciones existentes, que se detallan a continuación.
  • Restricciones de cardinalidad (cardinality restrictions): limitan el número de relaciones entre individuos. Existen tres tipos de restricciones de cardinalidad: al menos (at least), como máximo (at most), exactamente (exactly). Por ejemplo, podríamos señalar que la relación tiene entre "Tronco" y "Brazo" se limite a 2
  • Restricciones tieneValor (hasValue restrictions): permiten especificar relaciones entre individuos de una clase y valores. Es posible utilizar elementos matemáticos que concreten esta relación. Por ejemplo, un "A4" debe cumplir la restricción de medir 297 x 210 mm. Para ello se establece que "A4" tiene dos propiedades, altura y anchura y las limitamos a 297 y 210 mm, respectivamente: "A4" hasAlturaValue some integer [=297] y "A4" hasAnchuraValue some integer [=210]
  • Restricciones de cuantificación (quantifier restrictions). Dentro de las mismas se contemplan:
    • Restricciones existenciales (existential restrictions ó some restrictions): denominadas en OWL someValuesFrom, indican que los individuos del dominio de una propiedad se relacionan con al menos un (at least one) individuo del rango. Este tipo de restricción no es excluyente, los individuos del dominio pueden relacionarse con individuos de otras clases. Así, la propiedad estudiaEn, con dominio "Universitario" y rango "Universidad" puede ser restringida con este tipo de restricción ya que un individuo de la clase "universitario" forzosamente estudiaEn algún (some) individuo de la clase "Universidad" Y, por ejemplo, en un "Instituto". Esta restricción es impositiva, ya que debe haber como mínimo, 1 relación
    • Restricciones universales (universal restrictions): definida en OWL como allValuesFrom, señalan que los individuos de cierta clase sólo se relacionan con los individuos de otra clase, por lo que excluye cualquier relación con individuos de otras clases. Así, si en el ejemplo anterior definimos estudiaEn con una restricción universal, "Universitario" sólo (only) puede relacionarse con "Universidad". Esta restricción no es impositiva, puede haber 0 ó más relaciones pero, si existen, serán sólo con los individuos del rango especificado
    • Se puede crear una restricción universal mediante un axioma de cierre (closure axiom) en una propiedad. Dicho axioma señala que una propiedad sólo puede ser satisfecha mediante la unión de dos o más restricciones existenciales definidas para esa propiedad. Por ejemplo, tenemos las clases "LibroDeTexto", "LibroDeMatemáticas", "LibroDeLengua" y "Literatura". Queremos especificar que sólo son "LibroDeTexto" los "LibroDeMatemáticas" y "LibroDeLengua". Para ello, definimos sendas restricciones existenciales "LibroDeTexto" tieneComoTipo "LibroDeMatemáticas" y "LibroDeTexto" tieneComoTipo "LibroDeLengua". Para convertir estas restricciones existenciales en una universal, debemos definir una restricción universal que las una: "LibroDeTexto" tieneComoTipo sólo ("LibroDeMatemáticas" o "LibroDeLengua")
Finalmente, en cuanto a las convenciones para nombrar elementos, en Protégé, el manual recomienda la notación CamelBack, según la cual todos los nombres de clases deben comenzar con una letra mayúscula y no debe contener espacios (PizzaTopping); los nombres de las propiedades comienzan en minúscula, sin espacios e inician las siguientes palabras con letra mayúscula (isIngredientOf).

(1) HORRIDGE, M. A Practical Guide to Building OWL Ontologies Using Protégé 4 and CO-ODE Tools Edition 1.3. Manchester: University of Manchester, 2011 (último acceso: 05/05/2016)

2 comentarios:

Unknown dijo...

Muy conciso y bien explicado, gracias por compartir.

Edu LR dijo...

Es una subpropiedad de una propiedad simetrica también necesariamente simetrica?