Mostrando entradas con la etiqueta Protégé. Mostrar todas las entradas
Mostrando entradas con la etiqueta Protégé. Mostrar todas las entradas

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)

miércoles, 25 de junio de 2014

Mi primera ontología: de las pizzas a poleco

Esta semana he iniciado mi travesía ontológica. Ya había leído algunos artículos y manuales de creación y empleo de ontologías, llegando a la conclusión de que una ontología es un tesauro evolucionado. Quiero decir y, por favor, sin violencia por parte de los expertos, entiendo la ontología como un tesauro en el que se han incorporado muchísimos tipos de relaciones. Así, mantiene las jerárquicas y de equivalencia tradicionales de un tesauro, pero desarrolla enormemente las relaciones asociativas a través de innumerables posibilidades.

Para desarrollar ontologías, utilizaré Protégé, uno de los software más utilizados para la creación de estas herramientas propias de la web semántica. Varios de los compañeros (casi todos informáticos) me dijeron: "para aprender a usar Protégé, coge el manual de las pizzas". Y en esas estaba, acabo de terminar las 107 páginas de "A Practical Guide to Building OWL Ontologies Using Protégé 4 and CO-ODE Tools Edition 1.3" (1)

Horridge utiliza un ejemplo muy claro para enseñar a construir ontologías, las pizzas, y aquí está mi obra:


Entonces, ¿qué es una ontología? es una herramienta que permite capturar conocimiento de algún dominio de interés, describiendo los conceptos de ese dominio y las relaciones entre los mismos. Las ontologías se componen de:

a) Individuos: Representan objetos en el dominio de la ontología. También se llaman instancias o instancias de clase.

b) Propiedades: Son relaciones binarias que se establecen entre pares y pueden ser de tres tipos:
    • Propiedades objeto: Son las relaciones entre individuos, por ejemplo, las que se pueden establecer entre un país y su gentilicio;
    • Propiedades de datos: Son las relaciones que se establecen entre un individuo y un valor o literal. Típico es el ejemplo de relación entre una persona y su edad concreta;
    • Propiedades de anotación: Son piezas de información / metadatos que se utilizan para anotar clases, propiedades o individuos y pueden ser de varios tipos como "owl:versionInfo" o "rdfs:comment". También pueden crearse ad hoc para la ontología.
    c) Clases: Son una representación concreta de conceptos. Son sets que contienen individuos y su descripción identifica qué requerimientos deben cumplir esos individuos para ser miembros de dicha clase.

    Estos tres elementos coinciden, obviamente, con la lógica RDF, un lenguaje que define un modelo de datos para describir recursos mediante tripletas sujeto-predicado-objeto. OWL es un modelo de marcado construido sobre RDF y codificado en XML.

    En fin, una vez metida en el meollo, se trata de analizar toooooodos los titulares de artículos de periódicos que durante meses he almacenado para configurar una muestra representativa. A partir de la misma, veremos cómo construimos "Poleco" (nombre transitorio), una ontología especializada en política y economía. Esto, sólo es el inicio, here we go!

    (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: 24/06/2014)

    Derechos de autoría