Esquema RDF (RDFS)
RDF Schema (RDFS) amplía el vocabulario RDF para permitir describir taxonomías de clases y propiedades. También amplía las definiciones de algunos de los elementos de RDF; por ejemplo, establece el dominio y el rango de las propiedades y relaciona las clases y propiedades RDF dentro de taxonomías usando el vocabulario RDFS.
Primero ilustremos el uso del vocabulario RDFS con un ejemplo que muestra una taxonomía de clases y propiedades y el uso del rango y del dominio de las propiedades:
@prefix : <http://www.example.org/sample.rdfs#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
:Dog rdfs:subClassOf :Animal.
:Person rdfs:subClassOf :Animal.
:hasChild rdfs:range :Animal;
rdfs:domain :Animal.
:hasSon rdfs:subPropertyOf :hasChild.
:Max a :Dog.
:Abel a :Person.
:Adam a :Person;
:hasSon :Abel.
La lista de clases definidas por RDFS se muestra en la tabla siguiente.
Todos los recursos pueden dividirse en grupos llamados clases. Las clases también son
recursos, por lo que se identifican mediante URI y pueden describirse usando
propiedades. Los miembros de una clase son instancias de clases, lo que se afirma
usando la propiedad rdf:type. Nótese que una clase y un conjunto de instancias no
tienen por qué ser lo mismo. El conjunto de instancias es la extensión de la clase,
y dos clases diferentes pueden contener el mismo conjunto de instancias. Por
ejemplo, observando el grafo RDF de ejemplo, la clase de las personas que tienen buzón
mailto:joe.smith@example.org es diferente de la clase de las personas que tienen
la página personal http://www.example.org/~joe/, pero la extensión (es decir, el conjunto
de instancias) de estas clases es la misma: el recurso
http://www.example.org/~joe/contact.rdf#joesmith.
| Elemento | Clase de | rdfs:subClassOf | rdf:type |
| rdfs:Resource | todos los recursos | rdfs:Resource | rdfs:Class |
| rdfs:Class | todas las clases | rdfs:Resource | rdfs:Class |
| rdfs:Literal | valores literales | rdfs:Resource | rdfs:Class |
| rdfs:Datatype | tipos de datos | rdfs:Class | rdfs:Class |
| rdf:XMLLiteral | valores literales XML | rdfs:Literal | rdfs:Datatype |
| rdf:Property | propiedades | rdfs:Resource | rdfs:Class |
| rdf:Statement | declaraciones | rdfs:Resource | rdfs:Class |
| rdf:List | listas | rdfs:Resource | rdfs:Class |
| rdfs:Container | contenedores | rdfs:Resource | rdfs:Class |
| rdf:Bag | contenedores no ordenados | rdfs:Container | rdfs:Class |
| rdf:Seq | contenedores ordenados | rdfs:Container | rdfs:Class |
| rdf:Alt | contenedores de alternativas | rdfs:Container | rdfs:Class |
| rdfs:Container MembershipProperty | propiedades rdf:_1... que expresan pertenencia | rdf:Property | rdfs:Class |
Clases RDFS
En RDFS una clase puede ser instancia de una clase. Todos los recursos son instancias
de la clase rdfs:Resource. Todas las clases son instancias de rdfs:Class
y subclases de rdfs:Resource. Todos los literales son instancias de
rdfs:Literal. Todas las propiedades son instancias de
rdf:Property. La relación rdfs:subClassOf (subclase-de) y
rdf:type (instancia-de) para todas las clases RDFS se muestran en la tabla anterior.
| Elemento | Relaciona | rdfs:domain | rdfs:range |
| rdfs:range | restringe sujetos | rdf:Property | rdfs:Class |
| rdfs:domain | restringe objetos | rdf:Property | rdfs:Class |
| rdf:type | instancia de | rdfs:Resource | rdfs:Class |
| rdfs:subClassOf | subclase de | rdfs:Class | rdfs:Class |
| rdfs:subPropertyOf | subpropiedad de | rdf:Property | rdf:Property |
| rdfs:label | etiqueta legible por humanos | rdfs:Resource | rdfs:Literal |
| rdfs:comment | comentario legible por humanos | rdfs:Resource | rdfs:Literal |
| rdfs:member | pertenencia a contenedor | rdfs:Resource | rdfs:Resource |
| rdf:first | primer elemento | rdf:List | rdfs:Resource |
| rdf:rest | resto de la lista | rdf:List | rdf:List |
| rdf:_1, rdf:_2, ... | pertenencia a contenedor | rdfs:Container | rdfs:Resource |
| rdfs:seeAlso | información adicional | rdfs:Resource | rdfs:Resource |
| rdfs:isDefinedBy | definición | rdfs:Resource | rdfs:Resource |
| rdf:value | para valores estructurados | rdfs:Resource | rdfs:Resource |
| rdf:object | objeto de la declaración | rdf:Statement | rdfs:Resource |
| rdf:predicate | predicado de la declaración | rdf:Statement | rdfs:Resource |
| rdf:subject | sujeto de la declaración | rdf:Statement | rdfs:Resource |
Propiedades RDFS (todas son instancias de rdf:Property)
Las propiedades en RDFS son relaciones entre sujetos y objetos en tripletas RDF,
es decir, predicados. Las propiedades definidas por RDFS se enumeran en la
tabla con propiedades RDFS. Todas las propiedades pueden tener dominio y rango definidos. El
dominio de una propiedad establece que cualquier recurso que tenga una propiedad dada es una
instancia de la clase. El rango de una propiedad establece que los valores de una propiedad
son instancias de la clase. Si se definen varias clases como dominio y
rango, entonces se utiliza la intersección de estas clases. Los rangos y dominios de las
propiedades RDFS se resumen en la tabla anterior. Un ejemplo que
afirma que el dominio de la propiedad hasSon es Person y que el
rango de la misma propiedad es Man es el siguiente:
@prefix : <http://www.example.org/sample.rdfs#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
:hasSon rdfs:domain :Person;
rdfs:range :Man.
La taxonomía de clases está formada por la propiedad rdfs:subClassOf; la
taxonomía de propiedades está formada por la propiedad rdfs:subPropertyOf.
RDFS también define una instancia que no es ni clase ni propiedad. Esta
instancia denota la lista vacía: rdfs:nil; véase la tabla con la instancia RDFS.
| Elemento | Significado | rdfs:type |
| rdfs:nil | lista vacía | rdf:List |
Instancia RDFS