El Marco de descripción de recursos ( RDF ) es un estándar del World Wide Web Consortium (W3C) diseñado originalmente como modelo de datos para metadatos . Ha llegado a utilizarse como método general para la descripción y el intercambio de datos de gráficos. RDF proporciona una variedad de notaciones de sintaxis y formatos de serialización de datos , siendo Turtle (Terse RDF Triple Language) la notación más utilizada actualmente.
RDF es un gráfico dirigido compuesto por declaraciones triples. Una declaración de gráfico RDF está representada por: 1) un nodo para el sujeto, 2) un arco que va de un sujeto a un objeto para el predicado y 3) un nodo para el objeto. Cada una de las tres partes de la declaración puede identificarse 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, relaciones y otras cosas de interés complejas, y al mismo tiempo es apropiadamente abstracto.
RDF se adoptó 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. El esquema RDF (RDFS), el lenguaje de ontología web (OWL) y SHACL (lenguaje de restricción de formas) son lenguajes de ontología que se utilizan para describir datos RDF.
El modelo de datos RDF [1] es similar a los enfoques de modelado conceptual clásico (como los diagramas entidad-relación o clases ). Se basa en la idea de hacer declaraciones sobre recursos (en particular 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 el triple: 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 esencialmente formatos de archivos especializados ). Además, la codificación particular de recursos o tripletas 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áquina distribuida a través de la Web, lo que a su vez permite a los usuarios negociar. con la información con mayor eficiencia y certeza . El modelo de datos simple de RDF y su capacidad para modelar conceptos abstractos y dispares también han llevado a su uso cada vez mayor 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 se adapte mejor a ciertos tipos de representación del 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 sistema operativo y del proveedor", [2] derivó de la Plataforma para la Selección de Contenido de Internet (PICS) del W3C, uno de los primeros sistemas de etiquetado de contenido web, [3] pero El proyecto también fue moldeado por ideas de Dublin Core y del Meta Content Framework (MCF), [2] que había sido desarrollado 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] Esto describe el modelo de datos de RDF y una serialización XML . [8]
En este momento se desarrollaron dos malentendidos persistentes sobre RDF: en primer lugar, debido a la influencia de MCF y el inicialismo de "Descripción de recursos" de RDF, la idea de que RDF se usaba específicamente para representar metadatos; en segundo lugar, que RDF era un formato XML en lugar de un modelo de datos, y que sólo 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 , alrededor de 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 Specific (revisada)", [12 ] "Semántica RDF", [13] "Lenguaje de descripción de vocabulario RDF 1.0", [14] y "Casos de prueba RDF". [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 Semántica", [19] "RDF Schema 1.1", [20] y "Casos de prueba RDF 1.1". [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
utilizada 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 reificació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, que incluyen:
A RDF/XML a veces se le llama engañosamente simplemente RDF porque se introdujo entre las otras especificaciones del W3C que definen RDF e 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 RDF abstracto en sí. Aunque el formato RDF/XML todavía está en uso, muchos usuarios de RDF prefieren ahora otras serializaciones RDF, tanto porque son más amigables para los humanos [34] como porque algunos gráficos RDF no son representables en RDF/XML debido a restricciones en la sintaxis de XML QNames .
Con un poco de esfuerzo, prácticamente cualquier XML arbitrario también puede interpretarse como RDF usando GRDDL (pronunciado 'griddle'), recopilando descripciones de recursos de dialectos de idiomas.
Los tripletes RDF se pueden almacenar en un tipo de base de datos llamada triplestore .
El tema de una declaración RDF es un identificador uniforme de recursos (URI) o un nodo en blanco , los cuales denotan recursos . Los recursos indicados por nodos en blanco se denominan recursos anónimos. No son directamente identificables a partir de la declaración RDF. El predicado es un URI que también indica un recurso y 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); IRI son una generalización de URI. [35]
En las aplicaciones de Web Semántica, y en aplicaciones relativamente populares de RDF como RSS y FOAF (Friend of a Friend), los recursos tienden a estar representados por 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 utiliza como asunto 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 accesible a través de la red. un URI de este tipo podría representar absolutamente cualquier cosa. Sin embargo, existe un amplio acuerdo en que un URI simple (sin el símbolo #) que devuelve una respuesta codificada de 300 niveles cuando se utiliza en una solicitud HTTP GET debe tratarse como si denota 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. Dicho acuerdo no es inherente al RDF en sí, aunque existen algunos vocabularios controlados de uso común, como Dublin Core Metadata, que está parcialmente asignado 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, la URI:
http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#Merlot
sus propietarios pretenden referirse 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 solo viticultor), una definición que se expresa en la ontología OWL, en sí misma. un documento RDF, en el que ocurre. 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 declaraciones puede estar sujeto a reificación , en la que a cada declaración (es decir, a cada triple sujeto-predicado-objeto en conjunto) se le asigna un URI y se trata como un recurso sobre el cual se pueden hacer declaraciones adicionales, como en " Jane dice que John es el autor del documento X". A veces la cosificación es importante para deducir un nivel de confianza o grado de utilidad para cada afirmación.
En una base de datos RDF reificada, cada afirmación original, siendo en sí misma un recurso, probablemente tenga al menos tres afirmaciones adicionales sobre ella: 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 sujeto es algún recurso. 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 prestados 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 alcances , como se discutió. en artículos del coeditor de especificaciones de RDF, Graham Klyne. [36] [37] Por ejemplo, una declaración se puede asociar con un contexto, nombrado por un URI, para afirmar una relación "es verdadera en". Como otro ejemplo, a veces es conveniente agrupar declaraciones por su fuente, que puede identificarse mediante un URI, como el URI de un documento RDF/XML en particular. Luego, cuando se realizan actualizaciones en la fuente, las declaraciones correspondientes también se pueden cambiar en el modelo.
La implementación de alcances no necesariamente requiere declaraciones completamente reificadas. Algunas implementaciones permiten asociar un único identificador de alcance con una declaración a la que no se le ha asignado un URI. [38] [39] Los gráficos con nombres similares en los que un conjunto de triples son nombrados por un URI pueden representar el contexto sin la necesidad de cosificar los triples. [40]
El lenguaje de consulta predominante para gráficos RDF es SPARQL . SPARQL es un lenguaje similar a SQL y una recomendación del W3C del 15 de enero de 2008.
El siguiente es un ejemplo de una consulta SPARQL para mostrar las capitales de los países de África, utilizando una ontología ficticia:
PREFIJO ej : <http://example.com/exampleOntology#> SELECCIONAR ?capital ?país DONDE { ?x ej : nombre de la ciudad ?capital ; ej : isCapitalOf ?y . ?y ex : nombre del país ?país ; Ejemplo : isInContinent Ejemplo : Á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 W3C), cuya versión más reciente es mantenida por el grupo comunitario SHACL, define el soporte para reglas SHACL, utilizadas para transformaciones de datos, inferencias y asignaciones de RDF basadas en formas SHACL.
El lenguaje predominante para describir y validar gráficos RDF es SHACL (Shapes Constraint Language). [43] La especificación SHACL se divide en dos partes: SHACL Core y SHACL-SPARQL. SHACL Core consta de 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, cuyo correo electrónico La dirección es e.miller123(arroba)ejemplo (modificada por motivos de seguridad) y cuyo título es Dr."
El recurso "http://www.w3.org/People/EM/contact#me" es el tema.
Los objetos son:
El asunto es un URI.
Los predicados también tienen URI. Por ejemplo, el URI de cada predicado:
Además, el asunto 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 las siguientes tripletas RDF "sujeto, predicado, objeto":
En formato estándar N-Triples, 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(en )ejemplo> . <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 estándar Turtle (sintaxis) como:
@prefijo eric: <http://www.w3.org/People/EM/contact#> . Contacto @prefix : <http://www.w3.org/2000/10/swap/pim/contact#> . @prefijo rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . eric : mi contacto : nombre completo "Eric Miller" . eric : mi contacto : buzón <mailto:e.miller123(at)example> . eric : mi contacto : personalTítulo "Dr." . eric : me rdf : tipo contacto : Persona .
O puede escribirse en formato RDF/XML como:
<?xml versión="1.0" codificación="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:fullName> Eric Miller </contact:fullName> </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" > <contacto: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/contacto#Persona" /> </rdf:Descripción> </rdf:RDF>
Ciertos conceptos en RDF se toman de la lógica y la lingüística , donde las estructuras sujeto-predicado y sujeto-predicado-objeto tienen significados similares, aunque distintos, a los usos de esos términos en RDF. Este ejemplo demuestra:
En la declaración en inglés 'New York has the postal abbreviation NY' , 'New York' sería el sujeto, 'has the postal abbreviation' 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 indica 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 quienquiera que los lea conozca su significado.
De manera similar, dado que "http://en.wikipedia.org/wiki/Resource_Description_Framework/Tony_Benn" identifica un recurso en particular (independientemente de si ese URI podría atravesarse 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:
<http://en.wikipedia.org/wiki/Resource_Description_Framework/Tony_Benn> <http://purl.org/dc/elements/1.1/title> "Tony Benn" . <http://en.wikipedia.org/wiki/Resource_Description_Framework/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, publicado por 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 manera que un software en particular pueda entenderlos; en otras palabras, para que el software pueda acceder y utilizar información que de otro modo no podría utilizar.
Ambas versiones de las declaraciones anteriores son prolijas porque un requisito para un recurso RDF (como sujeto o predicado) es que sea único. El recurso en cuestión debe ser único en un intento de identificar 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 Dublin Core Metadata Initiative), también sabrá que este título es diferente de un terreno. título o un título honorífico o simplemente el título de las letras juntas.
El siguiente ejemplo, escrito en Turtle, muestra cómo se pueden desarrollar afirmaciones tan simples combinando múltiples 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/> . <http://en.wikipedia.org/wiki/Resource_Description_Framework/Tony_Benn> dc : editor "Wikipedia" ; dc : título "Tony Benn" ; foaf : tema primario [ a foaf : persona ; foaf : nombre "Tony Benn" ] .
Algunos usos de RDF incluyen la investigación de 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 útiles para la colocación de productos. [57] También ayudará a los científicos a comprender cómo las personas están conectadas entre sí.
RDF se está utilizando para comprender mejor los patrones del tráfico rodado. 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 era utilizar la búsqueda de palabras clave, pero este método es problemático porque no considera sinónimos. Por eso las ontologías son útiles en esta situación. Pero una de las cuestiones que surgen al intentar 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 se trata de conceptos humanos, requieren la adición de lógica difusa . Esto se debe a que los valores que son útiles al describir carreteras, como el grado de resbaladiza, no son conceptos precisos y no se pueden medir. Esto implicaría que la mejor solución incorporaría tanto lógica difusa como ontología. [58]