BIBLIOGRAPHY
JOURNAL REFERENCE
el término “Schema”. RDF crea simplemente una estructura en forma de grafo para representar los datos, mientras que RDFS proporciona el vocabulario que se utilizará en este grafo [Allemang & Hendler, 2008]. ¿Qué individuos se relacionan entre sí, y cómo? ¿Cómo están relacionadas las propiedades que se usan para definir a los individuos con otros conjuntos de individuos y entre sí? RDFS proporciona una forma de expresar las respuestas a este tipo de preguntas. Siguiendo con el ejemplo anterior, se dice que hay escritores que escriben determinados libros. Si sólo se quiere hablar sobre el escritor E o el libro L, se puede utilizar RDF. Pero RDF no tiene la capacidad suficiente para hablar sobre los libros, los libros de ficción, los escritores, etc., es decir, sobre los conjuntos (clases) que definen los tipos de recursos. Tampoco tiene RDF la capacidad de hablar sobre las relaciones entre estos conjuntos, es decir, las relaciones entre los escritores y los libros. Para definir un vocabulario mediante el cual se puedan definir los distintos conceptos (clases) y sus relaciones, es necesario hacer algunos agregados, los cuales se encapsulan en RDFS. La construcción básica para especificar un conjunto en RDFS es una clase, la cual se define en el espacio de nombres rfds (rdfs:Class). Como RDFS se expresa en RDF, la forma de expresar que algo es una clase es también mediante una terna, en la cual el predicado es rdf:type y el objeto rdfs:Class:
Sujeto Predicado Objeto
lit:Escritor rdf:type rdfs:Class
Tabla B.1 – Ejemplo de uso del identificador rdfs:Class
Al ver este ejemplo, la única manera de saber que se está hablando sobre el conjunto es el empleo de
rdfs:Class. En RDF, el concepto rdf:type se utiliza para especificar que algo es miembro de un conjunto. En RDFS se especifica que algo es un conjunto. En RDFS, al igual que en la mayoría de los lenguajes de programación, uno de los usos más importantes de las clases es imponer restricciones sobre qué se puede afirmar sobre un determinado concepto. Por ejemplo, en el ejemplo de los escritores, se quiere evitar declaraciones como las siguientes: • Libro X es escrito por Libro Y • El aula A es escrita por el Escritor B El primer caso no tiene sentido porque se quiere que los libros sean escritos sólo por escritores, lo cual impone una restricción a los valores de la propiedad “es escrito por” (se restringe el rango de la
propiedad).
El segundo caso no tiene sentido porque sólo se pueden escribir libros, lo cual impone una restricción a los objetos sobre los cuales se puede aplicar la propiedad (se restringe el dominio de la propiedad).
B.1 Subclases
Una vez definidas las clases, se deberán establecer las relaciones entre las mismas mediante una jerarquía de clase y subclase. Suponer que se define un vocabulario que dice que “todo Futbolista es un Deportista, y que X es un Futbolista”. Una persona puede inferir que X es un Deportista. Uno de los desafíos en el modelado del vocabulario en general (y en particular RDFS) es diferenciar los dos usos de “es un” en el ejemplo. Cuando se dice que “Futbolista es un Deportista”, se están relacionando 2 tipos entre sí, pero cuando se dice “X es un Futbolista”, se está dando información sobre el tipo de un individuo en particular, es decir, se relaciona un individuo a un tipo. En RDF se puede proporcionar información sobre el tipo de un individuo:Sujeto Predicado Objeto
bio:X rdf:type dep:Futbolista
Tabla B.1.1 – Ejemplo de uso del identificador rdf:type
RDFS proporciona un nuevo recurso, rdfs:subClassOf, para expresar la relación “es un” entre tipos:
Sujeto Predicado Objeto
dep:Futbolista rdfs:subClassOf dep:Deportista
Tabla B.1.2 – Ejemplo de uso del identificador rdfs:subClassOf
En RDFS no se requiere que las clases formen una jerarquía estricta, con lo cual una clase puede tener varias superclases.
B.2 Subpropiedades
RDFS proporciona un medio por el cual las clases se pueden relacionar entre sí por medio de la relación de subclase y las inferencias que definen el significado de esta construcción. Esto permite a quien modela en RDFS describir (utilizando la noción de conjuntos) las relaciones entre los
elementos que se describen en una colección de ternas RDF. Pero si se quiere dar un significado a los datos, se necesita algo más que hablar sobre los elementos: se tiene que hablar sobre las propiedades que los vinculan, es decir, los predicados de las ternas.
RDFS proporciona un mecanismo sencillo para esto, basado en el recurso
rdfs:subPropertyOf. Los conceptos de clases, subclases y propiedades tienen sus similitudes
y diferencias con los mismos conceptos de la programación orientada a objetos: en esta última, una clase define sus propiedades, y el agregado de nuevas propiedades implica la modificación de la clase. En el caso de RDFS, las propiedades se definen globalmente (no se encapsulan como atributos en las definiciones de las clases). Es posible definir nuevas propiedades que se apliquen a clases existentes sin modificar las mismas.
La intuición dice que esta construcción es análoga a rdfs:subClassOf, pero para las propiedades. Por ejemplo la relación “hermano” es más específica que la relación “pariente”: si alguien es mi hermano, entonces también es mi pariente.
B.3 Tipo y rango de las propiedades
Se puede decir que cuando se utiliza una propiedad, el sujeto de la terna viene de una cierta clase y el objeto proviene de otra. Esto se expresa en RDFS con los recursos rdfs:domain y
rdfs:range, respectivamente.
El dominio se refiere al sujeto de cualquier terna que utiliza P como su predicado, y el rango al objeto de cualquier terna que utiliza a P como predicado. Cuando se afirma que la propiedad P tiene dominio D (o rango R), se está diciendo que cada vez que se use la propiedad P, se puede inferir que el sujeto (o el objeto) de esa terna es un miembro de la clase D (o R).