El Resource Description Framework ( RDF ) es un método para describir e intercambiar datos de gráficos . Fue diseñado originalmente como un modelo de datos para metadatos por el World Wide Web Consortium (W3C). Proporciona una variedad de notaciones de sintaxis y formatos de serialización de datos , de los cuales el más utilizado es Turtle (Terse RDF Triple Language).
RDF es un gráfico dirigido compuesto de tres declaraciones. Una declaración de gráfico RDF se representa mediante: (1) un nodo para el sujeto, (2) un arco desde el sujeto hasta el objeto, que representa un predicado, y (3) un nodo para el objeto. Cada una de estas partes se puede identificar mediante un Identificador uniforme de recursos (URI). Un objeto también puede ser un valor literal. Este modelo de datos simple y flexible tiene mucho poder expresivo para representar situaciones complejas, relaciones y otras cosas de interés, al mismo tiempo que es apropiadamente abstracto.
RDF fue adoptado como recomendación del W3C en 1999. La especificación RDF 1.0 se publicó en 2004 y la especificación RDF 1.1 en 2014. SPARQL es un lenguaje de consulta estándar para gráficos RDF. RDF Schema (RDFS), Web Ontology Language (OWL) y SHACL (Shapes Constraint Language) son lenguajes de ontología que se utilizan para describir datos RDF.
El modelo de datos RDF [1] es similar a los enfoques clásicos de modelado conceptual (como los diagramas de entidad-relación o de clases ). Se basa en la idea de realizar declaraciones sobre los recursos (en particular, los recursos web) en expresiones de la forma sujeto - predicado - objeto , conocidas como tripletas . El sujeto denota el recurso, y el predicado denota rasgos o aspectos del recurso, y expresa una relación entre el sujeto y el objeto .
Por ejemplo, una forma de representar la noción "El cielo tiene el color azul" en RDF es como la tripleta: un sujeto que denota "el cielo", un predicado que denota "tiene el color" y un objeto que denota "azul". Por lo tanto, RDF utiliza sujeto en lugar de objeto (o entidad ) en contraste con el enfoque típico de un modelo entidad-atributo-valor en el diseño orientado a objetos : entidad (cielo), atributo (color) y valor (azul).
RDF es un modelo abstracto con varios formatos de serialización (que son básicamente formatos de archivos especializados ). Además, la codificación particular de los recursos o triples puede variar de un formato a otro.
Este mecanismo para describir recursos es un componente importante en la actividad de la Web Semántica del W3C : una etapa evolutiva de la World Wide Web en la que el software automatizado puede almacenar, intercambiar y utilizar información legible por máquinas distribuida por toda la Web, lo que a su vez permite a los usuarios manejar la información con mayor eficiencia y certeza . El modelo de datos simple de RDF y su capacidad para modelar conceptos dispares y abstractos también ha llevado a su uso creciente en aplicaciones de gestión del conocimiento no relacionadas con la actividad de la Web Semántica.
Una colección de declaraciones RDF representa intrínsecamente un multigrafo dirigido y etiquetado . Esto hace que un modelo de datos RDF sea más adecuado para ciertos tipos de representación de conocimiento que otros modelos relacionales u ontológicos .
Como lo demuestran RDFS , OWL y SHACL , se pueden crear lenguajes de ontología adicionales sobre RDF.
El diseño inicial de RDF, destinado a "construir un sistema de metadatos independiente del proveedor y del sistema operativo", [2] derivó de la Plataforma para la Selección de Contenido de Internet (PICS) del W3C, un sistema temprano de etiquetado de contenido web, [3] pero el proyecto también estuvo influenciado por ideas de Dublin Core y del Meta Content Framework (MCF), [2] que habían sido desarrollados entre 1995 y 1997 por Ramanathan V. Guha en Apple y Tim Bray en Netscape . [4]
Un primer borrador público de RDF apareció en octubre de 1997, [5] [6] emitido por un grupo de trabajo del W3C que incluía representantes de IBM , Microsoft , Netscape , Nokia , Reuters , SoftQuad y la Universidad de Michigan . [3]
En 1999, el W3C publicó la primera especificación RDF recomendada, la Especificación de Modelo y Sintaxis ("RDF M&S"). [7] Esta describía el modelo de datos de RDF y una serialización XML . [8]
En esta época surgieron dos malentendidos persistentes sobre RDF: en primer lugar, debido a la influencia de MCF y a las siglas RDF "Resource Description", la idea de que RDF se utilizaba específicamente para representar metadatos; en segundo lugar, que RDF era un formato XML en lugar de un modelo de datos, y que solo la serialización RDF/XML estaba basada en XML. RDF tuvo poca aceptación en este período, pero se realizó un trabajo significativo en Bristol , en torno a ILRT en la Universidad de Bristol y HP Labs , y en Boston en el MIT . RSS 1.0 y FOAF se convirtieron en aplicaciones ejemplares para RDF en este período.
La recomendación de 1999 fue reemplazada en 2004 por un conjunto de seis especificaciones: [9] "The RDF Primer", [10] "RDF Concepts and Abstract", [11] "RDF/XML Syntax Specification (revised)", [12] "RDF Semantics", [13] "RDF Vocabulary Description Language 1.0", [14] y "The RDF Test Cases". [15]
Esta serie fue reemplazada en 2014 por los siguientes seis documentos "RDF 1.1": "RDF 1.1 Primer", [16] "RDF 1.1 Concepts and Abstract Syntax", [17] "RDF 1.1 XML Syntax", [18] "RDF 1.1 Semantics", [19] "RDF Schema 1.1", [20] y "RDF 1.1 Test Cases". [21]
El vocabulario definido por la especificación RDF es el siguiente: [22]
rdf:XMLLiteral
rdf:Property
rdf:Statement
rdf:Alt
, rdf:Bag
,rdf:Seq
rdfs:Container
es una superclase de los tres)rdf:List
rdf:nil
rdf:List
representación de la lista vacíardfs:Resource
rdfs:Literal
rdfs:Class
rdfs:Datatype
rdfs:Container
rdfs:ContainerMembershipProperty
rdf:_1
, rdf:_2
, ..., todas las cuales son subpropiedades derdfs:member
rdf:type
rdf:Property
se utiliza para indicar que un recurso es una instancia de una claserdf:first
rdf:rest
rdf:first
rdf:value
rdf:subject
rdf:predicate
rdf:object
rdf:Statement
, rdf:subject
, rdf:predicate
, rdf:object
se utilizan para la cosificación (ver más abajo).
rdfs:subClassOf
rdfs:subPropertyOf
rdfs:domain
rdfs:range
rdfs:label
rdfs:comment
rdfs:member
rdfs:seeAlso
rdfs:isDefinedBy
Este vocabulario se utiliza como base para el esquema RDF , donde se amplía.
Se utilizan varios formatos de serialización comunes, entre ellos:
A veces se denomina RDF/XML simplemente RDF de manera engañosa porque se introdujo entre las otras especificaciones del W3C que definían RDF y, históricamente, fue el primer formato de serialización RDF estándar del W3C. Sin embargo, es importante distinguir el formato RDF/XML del modelo abstracto RDF en sí. Aunque el formato RDF/XML todavía se usa, muchos usuarios de RDF prefieren otras serializaciones RDF, tanto porque son más amigables para los humanos [34] como porque algunos gráficos RDF no se pueden representar en RDF/XML debido a restricciones en la sintaxis de los QNames XML .
Con un poco de esfuerzo, prácticamente cualquier XML arbitrario también puede interpretarse como RDF utilizando GRDDL (pronunciado 'griddle'), Recopilación de descripciones de recursos de dialectos de idiomas.
Los triples RDF pueden almacenarse en un tipo de base de datos llamado triplestore .
El sujeto de una declaración RDF es un identificador uniforme de recursos (URI) o un nodo en blanco , ambos de los cuales denotan recursos . Los recursos indicados por nodos en blanco se denominan recursos anónimos. No son directamente identificables desde la declaración RDF. El predicado es un URI que también indica un recurso, lo que representa una relación. El objeto es un URI, un nodo en blanco o un literal de cadena Unicode . A partir de RDF 1.1, los recursos se identifican mediante identificadores de recursos internacionalizados (IRI); los IRI son una generalización de URI. [35]
En las aplicaciones de la Web semántica y en aplicaciones relativamente populares de RDF como RSS y FOAF (Friend of a Friend), los recursos tienden a representarse mediante URI que denotan intencionalmente datos reales en la World Wide Web y pueden usarse para acceder a ellos. Pero RDF, en general, no se limita a la descripción de recursos basados en Internet. De hecho, el URI que nombra un recurso no tiene por qué ser desreferenciable en absoluto. Por ejemplo, un URI que comienza con "http:" y se usa como sujeto de una declaración RDF no necesariamente tiene que representar un recurso al que se pueda acceder a través de HTTP , ni tampoco necesita representar un recurso tangible y accesible a través de la red; un URI de este tipo podría representar absolutamente cualquier cosa. Sin embargo, existe un amplio consenso en que un URI simple (sin un símbolo #) que devuelve una respuesta codificada de nivel 300 cuando se usa en una solicitud HTTP GET debe tratarse como si denotara el recurso de Internet al que logra acceder.
Por lo tanto, los productores y consumidores de declaraciones RDF deben ponerse de acuerdo sobre la semántica de los identificadores de recursos. Este acuerdo no es inherente al propio RDF, aunque existen algunos vocabularios controlados de uso común, como Dublin Core Metadata, que está parcialmente mapeado a un espacio URI para su uso en RDF. La intención de publicar ontologías basadas en RDF en la Web es a menudo establecer o circunscribir los significados previstos de los identificadores de recursos utilizados para expresar datos en RDF. Por ejemplo, el URI:
http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#Merlot
Sus propietarios pretenden hacer referencia a la clase de todos los vinos tintos Merlot por viticultor (es decir, las instancias del URI anterior representan cada una la clase de todos los vinos producidos por un único viticultor), una definición que se expresa mediante la ontología OWL (en sí misma un documento RDF) en la que aparece. Sin un análisis cuidadoso de la definición, se podría concluir erróneamente que una instancia del URI anterior era algo físico, en lugar de un tipo de vino.
Tenga en cuenta que este no es un identificador de recurso "simple", sino más bien una referencia URI , que contiene el carácter "#" y termina con un identificador de fragmento .
El cuerpo de conocimiento modelado por una colección de enunciados puede ser objeto de cosificación , en la que a cada enunciado (es decir, a cada triple sujeto-predicado-objeto en conjunto) se le asigna un URI y se lo trata como un recurso sobre el cual se pueden hacer enunciados adicionales, como en " Jane dice que John es el autor del documento X". La cosificación es a veces importante para deducir un nivel de confianza o grado de utilidad para cada enunciado.
En una base de datos RDF reificada, cada declaración original, al ser en sí misma un recurso, probablemente tenga al menos tres declaraciones adicionales: una para afirmar que su sujeto es algún recurso, otra para afirmar que su predicado es algún recurso y otra para afirmar que su objeto es algún recurso o literal. También pueden existir más declaraciones sobre la declaración original, según las necesidades de la aplicación.
Tomando prestado de conceptos disponibles en lógica (y como se ilustra en notaciones gráficas como gráficos conceptuales y mapas de temas ), algunas implementaciones de modelos RDF reconocen que a veces es útil agrupar declaraciones según diferentes criterios, llamados situaciones , contextos o ámbitos , como se analiza en los artículos del coeditor de especificaciones RDF Graham Klyne. [36] [37] Por ejemplo, una declaración puede asociarse con un contexto, nombrado por un URI, para afirmar una relación "es verdadero en". Como otro ejemplo, a veces es conveniente agrupar declaraciones por su fuente, que puede identificarse por un URI, como el URI de un documento RDF/XML particular. Luego, cuando se realizan actualizaciones a la fuente, las declaraciones correspondientes también se pueden cambiar en el modelo.
La implementación de ámbitos no requiere necesariamente declaraciones completamente cosificadas. Algunas implementaciones permiten que un único identificador de ámbito se asocie con una declaración a la que no se le ha asignado un URI. [38] [39] Del mismo modo, los grafos nombrados en los que un conjunto de tripletas se nombra mediante un URI pueden representar el contexto sin la necesidad de cosificar las tripletas. [40]
El lenguaje de consulta predominante para los gráficos RDF es SPARQL . SPARQL es un lenguaje similar a SQL y una recomendación del W3C a partir del 15 de enero de 2008.
El siguiente es un ejemplo de una consulta SPARQL para mostrar las capitales de países de África, utilizando una ontología ficticia:
PREFIJO ej : <http://example.com/exampleOntology#> SELECCIONAR ?capital ?país DONDE { ?x ej : nombredeciudad ?capital ; ej : isCapitalOf ?y . ?y ej : nombredepaís ?país ; ej : isInContinent ej : África . }
Otras formas no estándar de consultar gráficos RDF incluyen:
La especificación de características avanzadas de SHACL [42] (Nota del grupo de trabajo del W3C), cuya versión más reciente es mantenida por el grupo comunitario SHACL, define el soporte para las reglas SHACL, utilizadas para transformaciones de datos, inferencias y mapeos de RDF basados en formas SHACL.
El lenguaje predominante para describir y validar grafos RDF es SHACL (Shapes Constraint Language). [43] La especificación SHACL se divide en dos partes: SHACL Core y SHACL-SPARQL. SHACL Core consiste en una lista de restricciones integradas como cardinalidad, rango de valores y muchas otras. SHACL-SPARQL describe restricciones basadas en SPARQL y un mecanismo de extensión para declarar nuevos componentes de restricción.
Otras formas no estándar de describir y validar gráficos RDF incluyen:
El siguiente ejemplo está tomado del sitio web del W3C [47] que describe un recurso con declaraciones "hay una persona identificada por http://www.w3.org/People/EM/contact#me, cuyo nombre es Eric Miller, cuya dirección de correo electrónico es e.miller123(at)example (cambiada por motivos de seguridad) y cuyo título es Dr."
El recurso "http://www.w3.org/People/EM/contact#me" es el asunto.
Los objetos son:
El asunto es una URI.
Los predicados también tienen URI. Por ejemplo, el URI de cada predicado:
Además, el sujeto tiene un tipo (con URI http://www.w3.org/1999/02/22-rdf-syntax-ns#type), que es persona (con URI http://www.w3.org/2000/10/swap/pim/contact#Person).
Por lo tanto, se pueden expresar los siguientes triples RDF "sujeto, predicado, objeto":
En el formato N-Triples estándar, este RDF se puede escribir como:
<http://www.w3.org/People/EM/contact#me> <http://www.w3.org/2000/10/swap/pim/contact#fullName> "Eric Miller" . <http://www.w3.org/People/EM/contact#me> <http://www.w3.org/2000/10/swap/pim/contact#mailbox> <mailto:e.miller123(at)example> . <http://www.w3.org/People/EM/contact#me> <http://www.w3.org/2000/10/swap/pim/contact#personalTitle> "Dr." . <http://www.w3.org/People/EM/contact#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/10/swap/pim/contact#Person> .
De manera equivalente, se puede escribir en formato Turtle (sintaxis) estándar como:
@prefijo eric: <http://www.w3.org/People/EM/contact#> . @prefijo contacto: <http://www.w3.org/2000/10/swap/pim/contact#> . @prefijo rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . eric : yo contacto : nombre_completo "Eric Miller" . eric : yo contacto : buzón <mailto:e.miller123(at)example> . eric : yo contacto : título_personal "Dr." . eric : yo rdf : tipo contacto : Persona .
O bien, puede escribirse en formato RDF/XML como:
<?xml version="1.0" encoding="utf-8"?> <rdf:RDF xmlns:contact= "http://www.w3.org/2000/10/swap/pim/contact#" xmlns:eric= "http://www.w3.org/People/EM/contact#" xmlns:rdf= "http://www.w3.org/1999/02/22-rdf-syntax-ns#" > <rdf:Descripción rdf:about= "http://www.w3.org/People/EM/contact#me" > <contacto:nombrecompleto> Eric Miller </contacto:nombrecompleto> </rdf:Descripción> <rdf:Descripción rdf:about= "http://www.w3.org/People/EM/contact#me" > <contacto:mailbox rdf:resource= "mailto:e.miller123(at)example" /> </rdf:Descripción> <rdf:Descripción rdf:about= "http://www.w3.org/People/EM/contact#me" > <contact:personalTitle> Dr. </contact:personalTitle> </rdf:Descripción> <rdf:Descripción rdf:about= "http://www.w3.org/People/EM/contact#me" > <rdf:type rdf:resource= "http://www.w3.org/2000/10/swap/pim/contact#Person" /> </rdf:Descripción> </rdf:RDF>
Algunos conceptos de RDF se toman de la lógica y la lingüística , donde las estructuras sujeto-predicado y sujeto-predicado-objeto tienen significados similares, pero distintos, a los usos de esos términos en RDF. Este ejemplo demuestra:
En la declaración en idioma inglés 'Nueva York tiene la abreviatura postal NY' , 'Nueva York' sería el sujeto, 'tiene la abreviatura postal' el predicado y 'NY' el objeto.
Codificado como un triple RDF, el sujeto y el predicado tendrían que ser recursos nombrados por URI. El objeto podría ser un recurso o un elemento literal. Por ejemplo, en la forma N-Triples de RDF, la declaración podría verse así:
<urna:x-states:New%20York> <http://purl.org/dc/terms/alternative> "NY" .
En este ejemplo, "urn:x-states:New%20York" es el URI de un recurso que denota el estado estadounidense de Nueva York , "http://purl.org/dc/terms/alternative" es el URI de un predicado (cuya definición legible por humanos se puede encontrar aquí [48] ) y "NY" es una cadena literal. Tenga en cuenta que los URI elegidos aquí no son estándar y no es necesario que lo sean, siempre que su significado sea conocido por quien los lea.
De manera similar, dado que "https://en.wikipedia.org/wiki/RDF_feed/Tony_Benn" identifica un recurso en particular (sin importar si esa URI puede recorrerse como un hipervínculo o si el recurso es en realidad el artículo de Wikipedia sobre Tony Benn ), decir que el título de este recurso es "Tony Benn" y su editor es "Wikipedia" serían dos afirmaciones que podrían expresarse como declaraciones RDF válidas. En la forma N-Triples de RDF, estas declaraciones podrían verse como las siguientes:
<https://en.wikipedia.org/wiki/RDF_feed/Tony_Benn> <http://purl.org/dc/elements/1.1/title> "Tony Benn" . <https://en.wikipedia.org/wiki/RDF_feed/Tony_Benn> <http://purl.org/dc/elements/1.1/publisher> "Wikipedia" .
Para una persona de habla inglesa, la misma información podría representarse simplemente como:
El título de este recurso, que publica Wikipedia, es 'Tony Benn'
Sin embargo, RDF presenta la información de una manera formal que una máquina puede entender. El propósito de RDF es proporcionar un mecanismo de codificación e interpretación para que los recursos puedan describirse de una manera que un software en particular pueda entenderlos; en otras palabras, para que el software pueda acceder y utilizar información que de otra manera no podría utilizar.
Ambas versiones de las afirmaciones anteriores son extensas porque uno de los requisitos para un recurso RDF (como sujeto o predicado) es que sea único. El recurso sujeto debe ser único en un intento de identificar con precisión el recurso exacto que se describe. El predicado debe ser único para reducir la posibilidad de que la idea de Título o Editor sea ambigua para el software que trabaja con la descripción. Si el software reconoce http://purl.org/dc/elements/1.1/title (una definición específica para el concepto de título establecida por la Iniciativa de Metadatos Dublin Core), también sabrá que este título es diferente de un título de propiedad o un título honorario o simplemente la suma de las letras del título.
El siguiente ejemplo, escrito en Turtle, muestra cómo se pueden elaborar afirmaciones tan simples combinando varios vocabularios RDF. Aquí, observamos que el tema principal de la página de Wikipedia es una "Persona" cuyo nombre es "Tony Benn":
@prefijo rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefijo foaf: <http://xmlns.com/foaf/0.1/> . @prefijo dc: <http://purl.org/dc/elements/1.1/> . <https://en.wikipedia.org/wiki/RDF_feed/Tony_Benn> dc : editor "Wikipedia" ; dc : título "Tony Benn" ; foaf : primaryTopic [ a foaf : Persona ; foaf : nombre "Tony Benn" ] .
Algunos usos de RDF incluyen la investigación sobre redes sociales. También ayudará a las personas en el ámbito empresarial a comprender mejor sus relaciones con miembros de industrias que podrían ser de utilidad para la colocación de productos. [57] También ayudará a los científicos a comprender cómo se conectan las personas entre sí.
RDF se está utilizando para obtener una mejor comprensión de los patrones de tráfico vial. Esto se debe a que la información sobre los patrones de tráfico se encuentra en diferentes sitios web, y RDF se utiliza para integrar información de diferentes fuentes en la web. Antes, la metodología común utilizaba la búsqueda de palabras clave, pero este método es problemático porque no considera sinónimos. Es por eso que las ontologías son útiles en esta situación. Pero uno de los problemas que surgen cuando se intenta estudiar el tráfico de manera eficiente es que para comprenderlo completamente, se deben comprender bien los conceptos relacionados con las personas, las calles y las carreteras. Dado que estos son conceptos humanos, requieren la adición de lógica difusa . Esto se debe a que los valores que son útiles para describir las carreteras, como la resbaladiza, no son conceptos precisos y no se pueden medir. Esto implicaría que la mejor solución incorporaría tanto la lógica difusa como la ontología. [58]