Los lenguajes de metadatos

Cristian Vasquez (Dic 2002)

Sugerencias a:
cvasquez@dcc.uchile.cl

 

Para que los metadatos se materialicen es necesaria la existencia de lenguajes que permitan especificar las sintaxis en la que se definen las estructuras, además de proveer medios para las especificaciones semánticas necesarias (que nos digan lo que las expresiones sintácticas significan en términos de un modelo). Estos modelos y sintaxis son las que permiten representar las expresiones, hechos, reglas y consultas sobre las descripciones.

 

Cada uno de estos distintos lenguajes son derivaciones o instancias de los lenguajes (o esquemas) que los preceden. Como puede observarse en el siguiente diagrama (basado en el esquema del libro Modern Information Retrieval Baeza-Neto, Pág. 174):

 


 

Resource Description Framework (RDF)

Introducción

 

RDF fue desarrollado gracias a los auspicios de la W3C (World Wide Consortium) y fue diseñado como fundamento para el procesamiento de los metadatos y permitir el intercambio de éstos. Se trata de un modelo que permite definir relaciones semánticas entre distintas URIs asociándoles un conjunto de propiedades y valores.

 

RDF y el lenguaje de Esquema RDF (RDFSchema) se basó en investigaciones sobre metadatos realizadas por comunidades de Bibliotecas digitales, pudiendo considerarse RDF como una implementación del WF (Warwick Framework) donde RDF es una evolución de este último, que permite que cada vocabulario de metadatos posea una sintaxis distinta.

Cabe hacer notar que el lenguaje RDF mismo no es independiente de la sintaxis, ya que esta implementado sobre XML[1] (eXtensible Markup Language).

 

A diferencia de las Definiciones del Tipo de Documentos (DTDs) de XML y los Esquemas XML (XMLSCHEMA), Un Esquema RDF entrega información sobre la interpretación de las sentencias del modelo de datos RDF y especifica restricciones que deben seguirse por éstos.

Principio:

 

RDF esta basado en la idea de que los objetos a describir poseen propiedades que a su vez tienen valores. Estos objetos pueden ser descritos formulando ‘declaraciones’ que especifican estas propiedades y valores.

 

 

 

 


Un ejemplo de declaración puede ser la siguiente:

 

http://www.example.org/index.html posee un ‘Autor’ cuyo valor es ‘Pedro’

 

Dentro de la terminología de RDF se utilizan los términos ‘sujeto’, ‘predicado’ y ‘objeto’ para determinar cada una de las partes de las declaraciones. La parte que identifica sobre que cosa es la declaración es llamada ‘sujeto’ (Ej. la página Web), la parte que identifica la característica o propiedad que la declaración especifica es llamada ‘predicado’ (Ej. Autor) y la parte que identifica el valor de aquella propiedad es llamada ‘objeto’ (Ej. Pedro).

 

En los ejemplos anteriores el ‘objeto’ Pedro puede ser un ‘sujeto’ en alguna otra declaración, con su respectivo ‘predicado’ y ‘objeto’. Al ir agregando declaraciones lo que obtenemos es un extenso diagrama de nodos y arcos o ‘grafo’.

 

 

 

 

 

Grafos

 

Para describir los grafos RDF se definen los elementos que actúan como nodos y arcos.

Existen tres tipos de nodos Urirefs, Literals y Blank nodes. Un Uriref esta definido como una referencia a una URI (Uniform Resource Identifier) y un Literal es el tipo de valor más primitivo representado en RDF, típicamente un String. Por último los nodos Blank son los utilizados para representar todas las entidades que son anónimas por no poseer etiqueta alguna (estos nodos son siempre únicos en el grafo).

 

Los arcos presentes en los grafos pueden etiquetarse con algún Uriref, donde un mismo Uriref puede repetirse en múltiples arcos.


 

El elemento base de un modelo RDF es un triple, en el cual un recurso (el sujeto S) es enlazado a otro recurso (el objeto O) mediante un arco etiquetado con otro recurso (el predicado P). Luego, con un conjunto de triples sujeto, predicado, objeto podemos definir completamente un grafo RDF, donde S es un Uriref o un blank node, P es un Uriref y O es un Uriref, un blank node o un literal. Los grafos RDF son el resultado de la unión de todos los grafos que son referenciados[2].

 

Dos de los elementos de vocabulario[3] que se utilizan en este lenguaje son las que definen las propiedades básicas de un modelo RDF.

 

El Uriref http://www.w3.org/2000/01/rdf-schema# que es el núcleo del vocabulario del esquema RDF denominado informalmente ‘rdfs’.

 

El Uriref http://www.w3.org/1999/02/22-rdf-syntax-ns# que es el espacio de nombres principal de RDF, denominado informalmente como ‘rdf’.

 

Existen múltiples espacios de nombres que se utilizan en la actualidad, entre ellos:

 

‘dc’, el espacio de nombres de Dublin Core, con Uriref http://purl.org/dc/elements/1.1/     

‘daml’, el espacio de nombres de DAML+OIL, con Uriref http://www.daml.org/2001/03/daml+oil#

 

Las propiedades básicas de RDF (‘rdfs’ y ‘rdf’) pueden dividirse en distintas categorías: fundamentales, para la definición de esquemas y utilitarios (que en rigor no son absolutamente necesarios, pero son utilizados ampliamente en un gran dominio de aplicaciones).

 

Propiedades fundamentales:

 

rdf:Resource: 

 

 En RDF se denomina ‘recurso’, al igual que en la mayoría de sistemas de metadatos, a cualquier cosa que pueda poseer una URI, por lo que el potencial descriptivo de RDF está sujeto entre otros, a los objetos que puedan poseer una. 


 

rdf:Property

 

Son utilizados como predicados de los triples, la semántica de un triple depende de la ‘property’ utilizada como predicado. RDF considera las propiedades como clases de primer orden (a diferencia de la mayoría de los lenguajes de modelación donde las propiedades son atributos de una clase).

 

rdf:Value

 

Es una propiedad que provee RDF para denotar valores primordiales.

 

rdf:Statement

 

Si se necesita declarar quien es el autor de una declaración en particular, es necesario que la declaración sea un recurso. rdf:Statement sirve para tornar una declaración formulada anteriormente en un recurso. Estos recursos debe tener por lo menos 3 propiedades: rdf:subject, rdf:object, rdf:Predicate.

 

Propiedades para la definición de esquemas:

 

Éstas permiten la definición de esquemas, esto es, vocabularios de recursos para utilizar con RDF. En los esquemas, nuevos recursos pueden definirse como una ‘especialización’ de los anteriores. Esta es una poderosa característica de ‘rdfs’ dado que en ella radica la extensibilidad en cuanto a elaboración de nuevos esquemas. 

 

rdfs:subPropertyOf

 

Se aplica a las propiedades que pueden ser interpretadas como un subconjunto de otras propiedades

 

Esta propiedad es importante en los esquemas para efectos de inferencia, por ejemplo si ‘violín’ es una sub-propiedad de ‘instrumento musical’ y algún triple que tenga ‘violín’ como predicado también debe ser considerado el hecho de tener ‘instrumento musical’ como predicado. Esta regla denota una relación de subconjunto[4], por lo que se aplica transitividad.

 

rdfs:Class

 

Las Clases son recursos que denotan conjuntos de recursos.


 

rdf:type

 

Denota las instancias que tienen una propiedad valorada por una clase. Las clases son estructuradas al igual que las propiedades, en un subconjunto jerárquico denotado por la propiedad

 

rdfs:subClassOf.

 

Se aplica a las instancias que tienen una propiedad valorada por la una clase.

Las clases poseen una clase-universal llamada rdf:Resource a la que se aplican las mismas reglas que rdfs:subPropertyOf.

 

rdfs:domain y rdfs:range

 

Estas se aplican a propiedades que son valoradas por clases. Ellas son utilizadas para restringir el conjunto de recursos que pueden tener una determinada propiedad (el dominio de la propiedad) y un conjunto de valores válidos para la propiedad (el rango de la propiedad). Una propiedad no puede tener mas de un valor para rdfs:range, no así para

rdfs:domain. Estas propiedades son utilizadas entre otras cosas para efectuar chequeos (automáticos) de verificación[5].

 

Propiedades utilitarias:

 

Estos podrían ser definidas en esquemas externos, pero como son de uso muy común se definen en el esquema núcleo. Un ejemplo de estas propiedades son rdfs:label y rdfs:comment que son útiles a la hora de describir un recurso mediante un texto en lenguaje natural. El primero es para dar un nombre y el segundo es para proveer de una descripción más larga.

 

Se provee de propiedades que materializan las funcionalidades de Warwick framework, tales como las colecciones de recursos, obtenidas mediante rdfs:Container, propiedad modelada por alguna instancia de estas tres subclases:

 

rdfs:Bag          colección desordenada

rdfs:Seq          colección ordenada

rdfs:Alt           un alternativo

 

Se encuentra fuera del alcance del documento el describir todas las propiedades definidas en ‘rdfs’, notando que a la fecha de elaboración de este documento (2002) las definiciones todavía se encontraban en modificación.

 

Características principales

 

RDF posee un modelo de datos simple para su procesamiento por parte de las aplicaciones.

 

El modelo RDF extendido con el RDF Schema es poderoso, dado que puede utilizarse como un modelo general para expresar metadatos sobre recursos Web. RDF puede ser expresado en una sintaxis XML que permite utilizarlo en muchos ambientes y plataformas.

 

Es posible conjugar múltiples grafos RDF en uno solo y utilizar los vocabularios definidos en múltiples esquemas.

 

RDF posee semánticas que generan una base para razonar sobre el significado de una expresión RDF.

 

RDF posee un vocabulario extensible, basado en URIs.

 

RDF provee un marco en el cual cualquier persona puede realizar declaraciones simples sobre cualquier cosa, inevitablemente se realizarán declaraciones inconsistentes[6] o sin sentido, dado que todas las personas ven el mundo en forma distinta.

 

 

DAML+OIL

 

Introducción

 

 

Una ontología es (en computación) alguna especificación de una conceptualización, una descripción de los conceptos y relaciones que existen para su interpretación por parte de agentes y permitir así el intercambio y la reutilización del conocimiento. Como es natural, son múltiples los enfoques utilizados en la creación de una ontología y es común que en un dominio particular estas difieran.

 

 

DAML+OIL sirve para modelar ontologías.

Este lenguaje fue desarrollado por parte del gobierno de Estados Unidos, mediante auspicios en Agosto del 2000 a DAML (DARPA Agent MArkup Language). Producto de estos auspicios se desarrolla DAML-ONT, un lenguaje simple para expresar definiciones de clases RDF más sofisticadas que las permitidas por ‘rdfs’. Posteriormente se genera OIL (Ontology Inference Layer), un esfuerzo para proveer una clasificación más sofisticada, utilizando ‘constructs from frame-based AI’. El resultado de estos esfuerzos es DAML+OIL cuya mas reciente versión data de Marzo de 2001.

 

DAML+OIL esta basado en RDF, utilizando su modelo y sintaxis, este lenguaje extiende el RDF Schema ‘rdfs’ permitiendo describir tipos de objetos y relaciones entre ellos de manera mas completa.

 

Las potencialidades de DAML se describirán por medio de un ejemplo de modelación con DAML+OIL, el de las relaciones de parentesco, ejemplo muy recurrente en su documentación[7].

 Ejemplo

 

Supongamos que queremos generar un pequeño modelo (ontología) que nos sirva para describir árboles genealógicos con el fin de poder realizar inferencias sobre ellos.

 

Para esto debemos definir que los padres y madres son personas, que pueden tener descendencia, que son personas que poseen un sexo y por cierto tienen sólo un padre y una madre. Debemos saber también que un abuelo es pariente de sus nietos y también inferir que lo es de sus propios primos.

 

Primero definimos lo que es un animal, para esto hacemos uso de los namespaces ‘rdf’ y ‘rdfs’

 

<daml:Class rdf:ID="Animal">

 <rdfs:label>Animal</rdfs:label>

  <rdfs:comment>

    Este es la clase animal

  </rdfs:comment>

</daml:Class>

 

Los animales en general poseen un sexo que puede ser masculino o femenino (el hermafroditismo no está contemplado, ese sería un enfoque distinto a esta mini ontología).


 

Los animales de sexo masculino pueden definirse así:

 

<daml:Class rdf:ID="Masculino">

  <rdfs:subClassOf rdf:resource="#Animal"/>

</daml:Class>

 

Los entes ‘Masculinos’ son subclases de los ‘Animal’, definidos anteriormente. (Mediante # se hace una referencia al recurso ‘Animal’ presente en el mismo documento, y se sabe de esa forma que no se trata de un recurso externo).

 

<daml:Class rdf:ID="Femenino">

  <rdfs:subClassOf rdf:resource="#Animal"/>

  <daml:disjointWith rdf:resource="#Masculino"/>

</daml:Class>

 

Los entes ‘Femeninos’ no pueden ser a la vez masculinos, es decir que la intersección entre el grupo de entes ‘Femeninos’ y ‘Masculinos’ es nula (daml:disjointWith es la propiedad utilizada en este caso).

 

<daml:Class rdf:ID="Hombre">

  <rdfs:subClassOf rdf:resource="#Persona"/>

  <rdfs:subClassOf rdf:resource="#Masculino"/>

</daml:Class>

 

<daml:Class rdf:ID="Mujer">

  <rdfs:subClassOf rdf:resource="#Persona"/>

  <rdfs:subClassOf rdf:resource="#Femenino"/>

</daml:Class>

 

Hombres y mujeres son subclases de ‘Persona’ y a la vez son subclases de ‘Masculino’ y ‘Femenino’ respectivamente (la pertenencia a múltiples clases es admisible).

 

Ahora deseamos establecer las propiedades, que son las relaciones binarias que interconectarán las entidades.

 

Definimos la propiedad ‘Tiene_padres’

 

<daml:ObjectProperty rdf:ID="Tiene_padres">

  <rdfs:domain rdf:resource="#Animal"/>

  <rdfs:range rdf:resource="#Animal"/>

</daml:ObjectProperty>

 

El uso de rdfs:domain determina el dominio de ‘Tiene_padres’, es decir ‘Tiene_padres’ es una propiedad que se aplica a los animales. Por otro lado, el uso de rdfs:range determina el rango de ‘Tiene_padres’ para poder determinar que ‘Tiene_padres’ es una propiedad cuyo valor sólo puede ser un animal.

 

<daml:ObjectProperty rdf:ID="Tiene_padre">

  <rdfs:subPropertyOf rdf:resource="#Tiene_padres"/>

  <rdfs:range rdf:resource="#Masculino"/>

</daml:ObjectProperty>

 

La propiedad ‘Tiene_padre’ es una propiedad que es sub-propiedad de ‘Tiene_padre’, además los padres son animales ‘Masculinos’.

 

Para esta pequeña ontología es necesario definir más restricciones.

 

Después de definir una persona como una subclase de ‘Animal’, también es necesario definir que los padres de las personas son también personas.

 

<daml:Class rdf:ID="Persona">

  <rdfs:subClassOf rdf:resource="#Animal"/>

</daml:Class>

 

  <rdfs:subClassOf>

    <daml:Restriction>

      <daml:onProperty rdf:resource="#Tiene_padres"/>

      <daml:toClass rdf:resource="#Persona"/>

    </daml:Restriction>

  </rdfs:subClassOf>

 

 

Esta es una restricción sobre las entidades ‘Persona’ que determina que las personas sólo pueden tener personas como sus padres. En vez de utilizar rdfs:range para determinar el valor de la propiedad ‘Tiene_padres’,  en el ejemplo se utiliza ‘daml:toClass’ pues su alcance es local, los padres de una persona debe ser personas, pero los padres de un

ornitorrico no deben porque ser personas. rdfs:range tiene un alcance global y mas restrictivo (si se utiliza en el ejemplo anterior, el ornitorrinco padre terminaría siendo una persona).

 

  <rdfs:subClassOf>

    <daml:Restriction daml:cardinality="1">

      <daml:onProperty rdf:resource="#Tiene_padre"/>

    </daml:Restriction>

  </rdfs:subClassOf>


     

El lenguaje contempla restricciones de cardinalidad, puede utilizarse daml:cardinality para determinar que sólo puede haber una propiedad ‘Tiene_padre’ entre dos entidades en particular

 

<daml:Class rdf:about="#Animal">

  <rdfs:subClassOf>

    <daml:Restriction daml:cardinality="2">

      <daml:onProperty rdf:resource="#Tiene_padres"/>

    </daml:Restriction>

  </rdfs:subClassOf>

</daml:Class>

 

Los ‘Animal’ tienen exactamente dos padres

 

Existen propiedades utilitarias en DAML+OIL, como daml:UniqueProperty que permiten definir propidades con cardinalidad uno, pero con de alcance global.

 

<daml:UniqueProperty rdf:ID="Tiene_madre">

  <rdfs:subPropertyOf rdf:resource="#Tiene_padres"/>

  <rdfs:range rdf:resource="#Femenino"/>

</daml:UniqueProperty>

 

Pueden describirse relaciones inversas, si una persona tiene un padre entonces éste es el hijo de ese padre.

 

<daml:ObjectProperty rdf:ID="Tiene_hijo">

  <daml:inverseOf rdf:resource="#Tiene_padres"/>

</daml:ObjectProperty>

 

y propiedades transitivas

 

<daml:TransitiveProperty rdf:ID="tiene_antecesores"> </daml:TransitiveProperty>

 

 

DAML+OIL dispone de múltiples elementos[8] para describir modelos ontológicos, que proporcionan una ventaja substancial sobre RDF.

1.1.1    Puntos importantes:

 

 

DAML+OIL provee de herramientas adicionales a RDF entre las que destacan:

 

En RDF la cardinalidad de los elementos y propiedades no se especifican o incluyen en el esquema núcleo, en DAML pueden ser especificadas globalmente y localmente. Así como también la enumeración de los valores de las propiedades es posible sólo en DAML.

 

En RDF las propiedades y rangos pueden especificarse sólo globalmente, en DAML se permite además realizar esta especificación en forma local.

 

Los tipos de datos básicos de DAML+OIL pueden ser especificados desde el XMLSchema, RDF sólo hace uso de literales. Por ejemplo en DAML pueden hacerse uso de Listas enlazadas.

 

La negación no está presente en RDF. En DAML es explícita daml:complementOf .

 

Desde noviembre del 2002 se dispone de la especificación formal de OWL (Web Ontology language) considerado una evolución que deriva de DAML+OIL.

Este esquema de Namespace http://www.w3.org/2002/07/owl  incluye modificaciones de DAML+OIL que permiten la existencia de subclases cíclicas, propiedades simétricas, relaciones disjuntas y otras diferencias menores.

 


2         Sobre la creación de este documento

 

La forma en que se presentaron los dos lenguajes de metadatos en el capítulo 9 ‘Los lenguajes de metadatos’ apunta a describir los aspectos más importantes de éstos, y no intenta de ninguna manera explicar su funcionamiento de manera más profunda.

 

El enfoque adoptado para presentar RDF es el utilizado por Pierre-Antoine Champin en ‘RDF Tutorial’ disponible en:

http://www710.univ-lyon1.fr/~champin/rdf-tutorial/rdf-tutorial.html

 

Se optó por mostrar las potencialidades de DAML+OIL mediante un ejemplo que ilustrara la implementación de una mini-ontología. El ejemplo utilizado como base es

‘daml+oil-walkthru - an annotated version of the example ontology’ disponible en: http://www.daml.org/2001/03/daml+oil-walkthru

 

 

 


3         Bibliografía

 

RDF

 

RDF Model Theory

W3C Working Draft 29 April 2002

http://www.w3.org/TR/rdf-mt/#graphsyntax

 

Resource Description Framework

(RDF) Model and Syntax Specification

W3C Recommendation 22 February 1999

http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/

 

Using Protégé-2000 to Edit RDF

30 January 2001

Copyright © 2000, 2001  Stanford University

http://protege.stanford.edu/protege-rdf/protege-rdf.html

 

RDF Primer

W3C Working Draft 11 November 2002

http://www.w3.org/TR/rdf-pr

 

RDF Tutorial

Pierre-Antoine Champin

http://www710.univ-lyon1.fr/~champin/rdf-tutorial/rdf-tutorial.html

 

Resource Description Framework (RDF):

Concepts and Abstract Syntax

W3C Working Draft 08 November 2002

http://www.w3.org/TR/2002/WD-rdf-concepts-20021108/

 

DAML+OIL

 

Introduction to DAML: Part I

Roxane Ouellet, Uche Ogbuji

http://www.xml.com/pub/a/2002/01/30/daml1.html

 

Introduction to DAML: Part II

Roxane Ouellet, Uche Ogbuji

http://www.xml.com/pub/a/2002/03/13/daml.html


 

DAML reference

Roxane Ouellet, Uche Ogbuji

http://www.xml.com/pub/a/2002/05/01/damlref.html

 

Annotated DAML+OIL Ontology Markup

Lynn Andrea Stein, Frank van Harmelen

http://www.daml.org/2001/03/daml+oil-walkthru

 

A Model-Theoretic Semantics for DAML+OIL

http://www.daml.org/2001/03/model-theoretic-semantics

 

 

OWL

 

Web Ontology Language (OWL)

Reference Version 1.0

W3C Working Draft 12 November 2002

http://www.w3.org/TR/owl-ref/

 

Web Ontology Language (OWL) Abstract Syntax and Semantics

W3C Working Draft 8 November 2002

http://www.w3.org/TR/owl-absyn/

 



[1] Dado que RDF esta implementado sobre XML, Los esquemas XML pueden utilizarse para validar las sintáxis de las expresiones RDF/XML.

 

[2] Dos grafos RDF que difieren sólo por renombrar sus identificadores de nodos, son tomados como grafos RDF idénticos. El resultado de unir dos conjuntos de triples (grafos RDF) es un nuevo grafo en el cual dos ocurrencias de ‘urirefs’ se convierten en un mismo nodo del grafo resultante.

 

[3] El ‘vocabulario’ de un grafo RDF será el conjunto de todos los Urirefs presentes en el grafo, que pueden utilizarse para describir las propiedades de otros recursos RDF.

 

[4] En RDF existen salvedades en las relaciones de conjunto como la que no existe un 'uriref' para la propiedad universal (super-propiedad de cualquier propiedad).

 

[5] Para que un triple sea válido, el objeto debe coincidir con el rango del predicado (esto es, debe tener un rdf:type valorado por la clase correspondiente o una de sus subclases) y el sujeto debe coincidir con al menos uno de los dominios (si hay alguno) del predicado.

 

[6] Una razón mas fuerte es que en un ámbito Web, la información es incompleta y distribuida, por lo que imposible obtener a información necesaria para determinar que una conclusión es totalmente verdadera o falsa. Esto conlleva a inconsistencias inevitables.

[7] Se presentará una versión sintetizada del ejemplo presentado en 'daml+oil-walkthru - an annotated version of the example ontology' disponible en http://www.daml.org/2001/03/daml+oil-walkthru

[8] La lista completa de elementos es la siguiente: cardinality, cardinalityQ, Class, complementOf, Datatype, DatatypeProperty, DatatypeRestriction, Datatype value, differentIndividualFrom, Disjoint, disjointUnionOf', disjointWith, domain, equivalentTo, hasClass, hasClassQ, hasValue, imports, intersectionOf, inverseOf, maxCardinality, maxCardinalityQ, minCardinality, minCardinalityQ, ObjectClass, ObjectProperty, ObjectRestriction, oneOf, onProperty, Ontology, Property, range, Restriction, sameClassAs, sameIndividualAs, samePropertyAs, subClassOf,  subPropertyOf, toClass, TransitiveProperty, UnambigousProperty, unionOf, UniqueProperty, versionInfo