RDFa o Resource Description Framework in Attributes [1] es una recomendación del W3C que añade un conjunto de extensiones a nivel de atributo a HTML , XHTML y varios tipos de documentos basados en XML para incorporar metadatos enriquecidos en documentos web. La asignación de modelos de datos de Resource Description Framework (RDF) permite su uso para incorporar expresiones RDF sujeto-predicado-objeto en documentos XHTML. También permite la extracción de triples de modelos RDF por parte de agentes de usuario compatibles .
La comunidad RDFa administra un sitio web wiki para alojar herramientas, ejemplos y tutoriales. [2]
RDFa fue propuesto por primera vez por Mark Birbeck en forma de una nota del W3C titulada XHTML y RDF [3] , que luego fue presentada al Grupo de Interés de Web Semántica [4] en la Plenaria Técnica del W3C de 2004. [5] Más tarde ese año, el trabajo se convirtió en parte del sexto Borrador de Trabajo público de XHTML 2.0. [6] [7] Aunque generalmente se asume que RDFa originalmente estaba destinado solo para XHTML 2, de hecho el propósito de RDFa siempre fue proporcionar una forma de agregar metadatos a cualquier lenguaje basado en XML. De hecho, uno de los primeros documentos que llevan el nombre de Sintaxis RDF/A tiene el subtítulo Una colección de atributos para superponer RDF en lenguajes XML . [8] El documento fue escrito por Mark Birbeck y Steven Pemberton , y se puso a disposición para su discusión el 11 de octubre de 2004.
En abril de 2007, el grupo de trabajo XHTML 2 produjo un módulo para soportar la anotación RDF dentro de la familia XHTML 1. [9] Como ejemplo, incluyó una versión extendida de XHTML 1.1 denominada XHTML+RDFa 1.0 . Aunque se describió como no representando una dirección prevista en términos de un lenguaje de marcado formal del W3C, posteriormente apareció un uso limitado de la DTD XHTML+RDFa 1.0 en la Web pública. [10]
En octubre de 2007 se publicó el primer borrador de trabajo público de un documento titulado RDFa en XHTML: sintaxis y procesamiento . [11] Este documento reemplazó y amplió el borrador de abril; contenía reglas para crear un analizador RDFa, así como pautas para organizaciones que deseen hacer un uso práctico de la tecnología.
En octubre de 2008, RDFa 1.0 alcanzó el estado de recomendación. [12]
RDFa 1.1 alcanzó el estado de recomendación en junio de 2012. [13] Se diferencia de RDFa 1.0 en que ya no depende del mecanismo de espacio de nombres específico de XML. Por lo tanto, es posible utilizar RDFa 1.1 con tipos de documentos que no sean XML, como HTML 4 o HTML 5. Se pueden encontrar detalles en un apéndice de HTML 5. [14]
El último documento adicional de introducción a RDFa 1.1 se actualizó el 17 de marzo de 2015. [1] (El primer borrador de trabajo público data del 10 de marzo de 2006. [15] )
Existen algunas variantes principales bien definidas de los conceptos básicos, que se utilizan como referencia y como abreviatura de los estándares del W3C.
RDFa se definió en 2008 con la recomendación "RDFa en XHTML: sintaxis y procesamiento". [16] Su primera aplicación fue ser un módulo de XHTML .
Las aplicaciones HTML que se mantuvieron, "una colección de atributos y reglas de procesamiento para extender XHTML para soportar RDF" ampliada a HTML5, ahora se expresan en un estándar especializado, el "HTML+RDFa" (el último es "HTML+RDFa 1.1 - Soporte para RDFa en HTML4 y HTML5" [17] ).
La sintaxis "HTML+RDFa" de 2008 también se denominó "RDFa 1.0" , por lo que no existe un estándar "RDFa Core 1.0". En general, el RDFa 1.0 de 2008 se utiliza con los antiguos estándares XHTML (siempre que se utilice RDFa 1.1 con XHTML5 y HTML5).
Es el primer estándar RDFa genérico (para HTML y XML); el "RDFa Core 1.1" está en la tercera edición, desde 2015. [18]
RDFa Lite es una Recomendación W3C (1.0 y 1.1) desde 2009, [19] donde se describe de la siguiente manera: [20]
RDFa Lite es un subconjunto mínimo de RDFa... que consta de unos pocos atributos que pueden utilizarse para expresar datos legibles por máquina en documentos web como HTML, SVG y XML. Si bien no es una solución completa para tareas avanzadas de marcado de datos, funciona para la mayoría de las necesidades cotidianas y la mayoría de los autores web pueden aprender a usarlo en un día.
RDFa Lite consta de cinco atributos: vocabulario, tipo de, propiedad, recurso y prefijo. [20] RDFa 1.1 Lite es compatible con RDFa 1.1. [20]
En 2009, el W3C se posicionó [21] para mantener RDFa Lite como alternativa estándar única y definitiva a los microdatos . [22] La posición se confirmó con la publicación de la Recomendación HTML5 en 2014.
La esencia de RDFa es proporcionar un conjunto de atributos que se pueden usar para transportar metadatos en un lenguaje XML (de ahí la "a" en RDFa).
Estos atributos son:
Hay cinco "principios de metadatos interoperables" que RDFa cumple. [23]
Además, RDFa puede beneficiar la accesibilidad web ya que hay más información disponible para la tecnología de asistencia . [24]
Existe un número creciente de herramientas para un mejor uso de los vocabularios y las anotaciones de RDFa.
Los estándares HTML+RDFa (lanzado en 2008) y los microformatos (desde ~2005) fomentaron en gran medida los enfoques simplificados para anotar semánticamente elementos de información en páginas web .
A partir de 2013, [actualizar]estos estándares codificaban eventos, información de contacto, productos, etc. A pesar del predominio de la semántica vCard (solo elementos básicos de anotaciones de personas y organizaciones ) [25] y cierta clonación de anotaciones a lo largo del mismo dominio , el recuento de páginas web (URL) y dominios con anotaciones es un indicador estadístico importante para el uso de información anotada semánticamente en la Web.
Las estadísticas de 2017 muestran que el uso [26] de HTML+RDFa es ahora menor que el de microformatos.
A continuación se muestra un ejemplo de cómo agregar metadatos Dublin Core a un elemento XML en un archivo XHTML. Los elementos de datos Dublin Core son datos que se agregan normalmente a un libro o artículo (título, autor, tema, etc.).
<div xmlns:dc= "http://purl.org/dc/elements/1.1/" about= "http://www.example.com/books/wikinomics" > <span property = "dc:title" > Wikinomics </span> <span property= "dc:creator" > Don Tapscott </span> <span property= "dc:date" > 2006-10-01 </span> </div>
Además, RDFa permite que los pasajes y palabras dentro de un texto se asocien con un marcado semántico:
<div xmlns:dc= "http://purl.org/dc/elements/1.1/" about= "http://www.example.com/books/wikinomics" > En su último libro <span property= "dc:title" > Wikinomics </span> , <span property= "dc:creator" > Don Tapscott </span> explica los profundos cambios en la tecnología, la demografía y los negocios. El libro se publicará en <span property= "dc:date" content= "2006-10-01 " > octubre de 2006 </span> . </div>
El siguiente es un ejemplo de un documento XHTML+RDFa 1.0 completo. Utiliza Dublin Core y FOAF , una ontología para describir personas y sus relaciones con otras personas y cosas:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd"> <html xmlns= "http://www.w3.org/1999/xhtml" xmlns:foaf= "http://xmlns.com/foaf/0.1/" xmlns:dc= "http://purl.org/dc/elements/1.1/" version= "XHTML+RDFa 1.0" xml:lang= "en" > <head> <title> Página de inicio de John </title> <base href= "http://example.org/john-d/" /> <meta property= "dc:creator" content= "Jonathan Doe" /> <link rel= "foaf:primaryTopic" href= "http://example.org/john-d/#me" /> </head> <body about= "http://example.org/john-d/#me" > <h1> Página de inicio de John </h1> <p> Mi nombre es <span property= "foaf:nick" > John D </span> y me gusta <a href= "http://www.neubauten.org/" rel= "foaf:interest" xml:lang= "de" > Einstürzende Neubauten </a> . </p> <p> Mi libro < span rel= "foaf:interest" resource= "urn:ISBN:0752820907" > favorito es el inspirador <span about= "urn:ISBN:0752820907" ><cite property= "dc:title" > Tejiendo la red </cite> de <span property= "dc:creator" > Tim Berners-Lee </span></span></span> . </p> </body> </html>
En el ejemplo anterior, la URI del documento puede verse como la representación de un documento HTML, pero la URI del documento más la cadena "#me" http://example.org/john-d/#me
representa a la persona real, a diferencia de un documento sobre ella. El foaf:primaryTopic en el encabezado nos indica la URI de la persona sobre la que trata el documento. La propiedad foaf:nick (en el primer span
elemento) contiene un apodo para esta persona, y la propiedad dc:creatormeta
(en el elemento) nos indica quién creó el documento. El hipervínculo al sitio web de Einstürzende Neubauten contiene rel="foaf:interest"
, lo que sugiere que John Doe está interesado en esta banda. La URI de su sitio web es un recurso.
El elemento foaf:interest dentro del segundo p
elemento hace referencia a un libro por ISBN. El resource
atributo define un recurso de manera similar al href
atributo, pero sin definir un hipervínculo. Más adelante en el párrafo, un span
elemento que contiene un about
atributo define el libro como otro recurso sobre el cual especificar metadatos. El título y el autor del libro se definen dentro del contenido de esta etiqueta utilizando las propiedades dc:title y dc:creator .
Aquí están los mismos triples cuando el documento anterior se convierte automáticamente a RDF/XML :
<?xml version="1.0" encoding="UTF-8"?> <rdf:RDF xmlns:rdf= "http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf= "http://xmlns.com/foaf/0.1/" xmlns:dc= "http://purl.org/dc/elements/1.1/" > <rdf:Descripción rdf:about= "http://example.org/john-d/" > <dc:creator xml:lang= "es" > Jonathan Doe </dc:creator> <foaf:primaryTopic> <rdf:Descripción rdf:about= "http://example.org/john-d/#me" > <foaf:nick xml:lang= "es" > John D </foaf:nick> <foaf:interest rdf:resource= "http://www.neubauten.org/" /> <foaf:interest> <rdf:Description rdf:about= "urn:ISBN:0752820907" > <dc:creator xml:lang= "en" > Tim Berners-Lee </dc:creator> <dc:title xml:lang= "en" > Tejiendo la red </dc:title> </rdf:Description> </foaf:interest> </rdf:Description> </foaf:primaryTopic> </rdf:Description> </rdf:RDF>
El ejemplo anterior se puede expresar sin espacios de nombres XML en HTML5 :
< html prefix = "dc: http://purl.org/dc/elements/1.1/" lang = "es" > < head > < title > Página de inicio de John </ title > < link rel = "profile" href = "http://www.w3.org/1999/xhtml/vocab" /> < base href = "http://example.org/john-d/" /> < meta property = "dc:creator" content = "Jonathan Doe" /> < link rel = "foaf:primaryTopic" href = "http://example.org/john-d/#me" /> </ head > < body about = "http://example.org/john-d/#me" > < h1 > Página de inicio de John </ h1 > < p > Mi nombre es < span property = "foaf:nick" > John D </ span > y me gusta < a href = "http://www.neubauten.org/" rel = "foaf:interest" lang = "de" > Einstürzende Neubauten </ a > . </ p > < p > Mi < span rel = "foaf:interest" recurso = "urn:ISBN:0752820907" > favorito El libro es el inspirador < span about = "urn:ISBN:0752820907" >< cite property = "dc:title" > Tejiendo la red </ cite > de < span property = "dc:creator" > Tim Berners-Lee </ span ></ span ></ span > . </ p > </ body > </ html >
Observe cómo el prefijo foaf todavía se utiliza sin declaración. RDFa 1.1 incluye automáticamente prefijos para vocabularios populares como FOAF. [30]
El documento mínimo [31] es:
< html lang = "es" > < head > < title > Documento de ejemplo </ title > </ head > < body vocab = "http://schema.org/" > < p typeof = "Blog" > Bienvenido a mi < a property = "url" href = "http://example.org/" > blog </ a > . </ p > </ body > </ html >
Es decir, se recomienda que se utilicen todos estos atributos: vocab
, typeof
, property
; no solo uno de ellos.
Ejemplo de datos estructurados RDFa
Esquema de persona en RDFa. [32]
< div vocab = "http://schema.org/" typeof = "Persona" > < a property = "image" href = "http://manu.sporny.org/images/manu.png" > < span propiedad = "nombre" > Manu Sporny </ span >> a > , < span property = "jobTitle" > Fundador/CEO </ span > <div> Teléfono: < span property = "telephone" > (540) 961-4469 </ span > </div> <div> Correo electrónico: < a property = "email" href = "mailto:(su dirección de correo electrónico)" > msporny@digitalbazaar(.)com </ a > </div> <div> Enlaces: < a property = "url" href = "http://manu.sporny.org/" > Página de inicio de Manu </ a > </div></div>