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