RDF Schema ( Resource Description Framework Schema , abreviado de diversas formas como RDFS , RDF(S) , RDF-S o RDF/S ) es un conjunto de clases con ciertas propiedades que utilizan el modelo de datos de representación de conocimiento extensible RDF , proporcionando elementos básicos para la descripción de ontologías . Utiliza varias formas de vocabularios RDF, destinadas a estructurar recursos RDF . RDF y RDFS se pueden guardar en un triplestore , luego se puede extraer algo de conocimiento de ellos utilizando un lenguaje de consulta, como SPARQL .
La primera versión [1] [4] fue publicada por el Consorcio World-Wide Web (W3C) en abril de 1998, y la recomendación final del W3C se publicó en febrero de 2014. [3] Muchos componentes RDFS están incluidos en el lenguaje de ontología web (OWL) más expresivo .
Las construcciones RDFS son las clases RDFS, las propiedades asociadas y las propiedades de utilidad creadas sobre el vocabulario de RDF . [5] [6] [7]
rdfs:Resource
rdfs:Class
Un ejemplo típico de una rdfs:Class se encuentra foaf:Person
en el vocabulario Friend of a Friend ( FOAF ). [8] Una instancia de foaf:Person
es un recurso que está vinculado a la clase foaf:Person
mediante la rdf:type
propiedad, como en la siguiente expresión formal de la oración en lenguaje natural : 'John es una persona'.
ex:Juan rdf:tipo foaf:Persona
La definición de rdfs:Class
es recursiva: rdfs:Class
es la clase de clases y, por lo tanto, es una instancia de sí misma.
rdfs:Clase rdf:tipo rdfs:Clase
Las otras clases descritas por las especificaciones RDF y RDFS son:
rdfs:Literal
rdfs:Datatype
rdfs:Datatype
es a la vez una instancia y una subclase de rdfs:Class
. Cada instancia de rdfs:Datatype
es una subclase de rdfs:Literal
.rdf:XMLLiteral
rdf:XMLLiteral
es una instancia de rdfs:Datatype
(y por lo tanto una subclase de rdfs:Literal
).rdf:Property
Las propiedades son instancias de la clase rdf:Property
y describen una relación entre los recursos del sujeto y los recursos del objeto. Cuando se utilizan como tales, una propiedad es un predicado (véase también RDF: reificación ).
rdfs:domain
rdf:Property
declara la clase del sujeto en un triple cuyo predicado es esa propiedad.rdfs:range
rdf:Property
declara la clase o tipo de datos del objeto en un triple cuyo predicado es esa propiedad.Por ejemplo, las siguientes declaraciones se utilizan para expresar que la propiedad ex:employer
relaciona un sujeto, que es de tipo foaf:Person
, con un objeto, que es de tipo foaf:Organization
:
ex:empleador rdfs:dominio foaf:Personaex: empleador rdfs: rango foaf: organización
Dadas las dos declaraciones anteriores, del triple:
ex:Juan ex:empleador ex:CompañíaX
se puede inferir (resp. sigue) que ex:John
es un foaf:Person
, y ex:CompanyX
es un foaf:Organization
.
rdf:type
rdfs:subClassOf
Por ejemplo, lo siguiente declara que 'Toda persona es un agente':
foaf:Persona rdfs:subClaseDe foaf:Agente
Las jerarquías de clases admiten la herencia de un dominio y rango de propiedades (consulte las definiciones en la siguiente sección) de una clase a sus subclases.
rdfs:subPropertyOf
rdf:Property
esto se utiliza para indicar que todos los recursos relacionados por una propiedad también están relacionados por otra.rdfs:label
rdf:Property
Se puede usar una instancia de esto para proporcionar una versión legible por humanos del nombre de un recurso.rdfs:comment
rdf:Property
esto puede usarse para proporcionar una descripción legible por humanos de un recurso.rdfs:seeAlso
rdf:Property
esto para indicar un recurso que podría proporcionar información adicional sobre el recurso en cuestión.rdfs:isDefinedBy
rdf:Property
esta propiedad para indicar un recurso que define el recurso en cuestión. Esta propiedad se puede utilizar para indicar un vocabulario RDF en el que se describe un recurso.Un régimen de implicación define si las tripletas en un grafo son lógicamente contradictorias o no. La implicación de RDFS [11] no es muy restrictiva, es decir, no contiene una gran cantidad de reglas (en comparación, por ejemplo, con OWL ) que limiten qué tipo de declaraciones son válidas en el grafo. Por otro lado, tampoco es muy expresiva, lo que significa que la semántica que se puede representar de una manera interpretable por máquina con el grafo es bastante limitada.
A continuación, en un ejemplo sencillo de las capacidades y límites de la implicación de RDFS, comenzamos con un gráfico que contiene los siguientes triples explícitos:
foo:UnaJirafa rdf:tipo bar:Animal.foo:UnElefante rdf:tipo bar:Elefante.foo:UnZoo rdf:tipo bar:Zoo.bar:livesInZoo rdfs:dominio bar:Animal.bar:livesInZoo rdfs:rango bar:Zoo.foo:UnElefante bar:viveEnElZoo foo:UnElefante.
Sin habilitar la inferencia con implicación RDFS, los datos que tenemos no nos indican si foo:SomeElephant
es un bar:Animal
. Cuando realizamos inferencias basadas en RDFS, obtendremos el siguiente triple adicional:
foo:UnElefante rdf:tipo bar:Animal.
La rdfs:domain
declaración dicta que cualquier sujeto en triples donde bar:livesInZoo
es el predicado es de tipo bar:Animal
. Lo que la implicación de RDFS no puede decirnos es la relación entre bar:Animal
y bar:Elephant
. Debido a la inferencia, ahora sabemos que foo:SomeElephant
es ambos bar:Animal
y, bar:Elephant
por lo tanto, estas clases se intersecan, pero no hay información para deducir si simplemente se intersecan, son iguales o tienen una relación de subclase.
En RDFS 1.1, las declaraciones de dominio y rango no tienen ningún significado formal y su interpretación queda en manos del implementador. Por otro lado, en el borrador de trabajo 1.2 se utilizan como reglas de implicación para inferir los tipos de individuos. Sin embargo, en ambas versiones, se indica muy claramente que la funcionalidad esperada de rango es "los valores de una propiedad son instancias de una o más clases" y dominio "cualquier recurso que tenga una propiedad dada es una instancia de una o más clases".
El ejemplo anterior demostró algunos de los límites y capacidades de la implicación de RDFS, pero no mostró un ejemplo de una inconsistencia lógica (que podría, en términos sencillos, interpretarse como un "error de validación"), lo que significa que las declaraciones que hacen los triples están en conflicto e intentan expresar estados de cosas contradictorios. Un ejemplo de esto en RDFS sería tener tipos de datos conflictivos para los objetos (por ejemplo, declarar que un recurso es de tipo xsd:integer
y también declararlo como tal xsd:boolean
cuando la inferencia está habilitada).
Los vocabularios RDF representados en RDFS incluyen: [10]
madsrdf:prominentFamilyMember
. [16]{{cite web}}
: Falta o está vacío |title=
( ayuda ){{cite web}}
: CS1 maint: URL no apta ( enlace )