RDFa o Marco de descripción de recursos en atributos [1] es una recomendación del W3C que agrega un conjunto de extensiones a nivel de atributo a HTML , XHTML y varios tipos de documentos basados en XML para incrustar metadatos enriquecidos en documentos web. El mapeo del modelo de datos del Marco de descripción de recursos (RDF) permite su uso para incrustar expresiones sujeto-predicado-objeto RDF dentro de documentos XHTML. También permite la extracción de tripletas de modelos RDF mediante agentes de usuario compatibles .
La comunidad RDFa ejecuta 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 sobre Web Semántica [4] en la Plenaria Técnica del W3C de 2004. [5] Más tarde ese año, el trabajo pasó a formar parte del sexto borrador de trabajo público de XHTML 2.0. [6] [7] Aunque generalmente se asume que RDFa fue originalmente pensado sólo para XHTML 2, de hecho el propósito de RDFa siempre fue proporcionar una manera de agregar metadatos a cualquier lenguaje basado en XML. De hecho, uno de los primeros documentos que lleva 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 estuvo disponible 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, incluía una versión extendida de XHTML 1.1 denominada XHTML+RDFa 1.0 . Aunque se describe que no representa una dirección prevista en términos de un lenguaje de marcado formal del W3C, el uso limitado de XHTML+RDFa 1.0 DTD apareció posteriormente 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] Esto reemplazó y amplió el borrador de abril; contenía reglas para crear un analizador RDFa, así como pautas para las organizaciones que desearan 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. Los detalles se pueden encontrar en un apéndice de HTML 5. [14]
Un documento básico adicional de RDFa 1.1 se actualizó por última vez el 17 de marzo de 2015. [1] (El primer borrador de trabajo público se remonta al 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 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 se mantuvieron, "una colección de atributos y reglas de procesamiento para extender XHTML para soportar RDF" expandidas 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 , RDFa 1.0 de este 2008 se usa con los antiguos estándares XHTML (siempre que RDFa 1.1 se use con XHTML5 y HTML5).
Es el primer estándar RDFa genérico (para HTML y XML); el "RDFa Core 1.1" se encuentra en la Tercera Edición, desde 2015. [18]
RDFa Lite es una Recomendación del W3C (1.0 y 1.1) desde 2009, [19] donde se describe a continuación: [20]
RDFa Lite es un subconjunto mínimo de RDFa... que consta de algunos atributos que pueden usarse 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 diarias y la mayoría de los autores web pueden aprenderlo 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 conservar RDFa Lite como alternativa estándar única y definitiva a los microdatos . [22] La posición fue confirmada con la publicación de la Recomendación HTML5 en 2014.
La esencia de RDFa es proporcionar un conjunto de atributos que pueden usarse para transportar metadatos en un lenguaje XML (de ahí la 'a' en RDFa).
Estos atributos son:
Hay cinco "principios de metadatos interoperables" que cumple RDFa. [23]
Además, RDFa puede beneficiar la accesibilidad web a medida que haya más información disponible sobre tecnología de asistencia . [24]
Existe un número creciente de herramientas para un mejor uso de los vocabularios RDFa y la anotación RDFa.
Los estándares HTML+RDFa (lanzados en 2008) y microformatos (desde ~2005) fomentaron enormemente 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 en el mismo dominio , el recuento de páginas web (URL) y dominios con anotaciones es un indicador estadístico importante para el uso de anotaciones semánticas. información en la Web.
Las estadísticas de 2017 muestran que el uso [26] de HTML+RDFa es ahora menor que el de los microformatos.
El siguiente es 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 normalmente se agregan 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 asociar los pasajes y palabras de un texto 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 versión="1.0" codificación="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 favorito <span rel= "foaf:interest" Resource= "urn:ISBN:0752820907" > es el inspirador <span about= "urn:ISBN:0752820907" ><cite property= "dc :title" > Tejiendo la Web </cite> por <span property= "dc:creator" > Tim Berners-Lee </span></span></span> . </p> </cuerpo> </html>
En el ejemplo anterior, se puede considerar que el URI del documento representa un documento HTML, pero el 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 un 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:creator (en el meta
elemento) nos dice 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. El URI de su sitio web es un recurso.
El foaf:interés dentro del segundo p
elemento se refiere a un libro por ISBN. El resource
atributo define un recurso de forma 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 que especificar metadatos. El título del libro y el autor se definen dentro del contenido de esta etiqueta utilizando las propiedades dc:title y dc:creator .
Aquí están los mismos tripletes cuando el documento anterior se convierte automáticamente a RDF/XML :
<?xml versión="1.0" codificación="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= "en" > Jonathan Doe </dc:creator> <foaf:primaryTopic> <rdf:Descripción rdf:about= "http://ejemplo .org/john-d/#me" > <foaf:nick xml:lang= "en" > John D </foaf:nick> <foaf:interest rdf:resource= "http://www.neubauten.org/ " /> <foaf:interest> <rdf:Descripción rdf:about= "urn:ISBN:0752820907" > <dc:creator xml:lang= "en" > Tim Berners-Lee </dc:creator> <dc:title xml:lang= "es" > Tejiendo la Web </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 = "en" > < 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 propiedad = "dc:creator" contenido = "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" > Weaving the Web </ cite > de < span property = "dc:creator" > Tim Berners-Lee </ lapso </span> </span> . </p> </body> </html>
Observe cómo el prefijo foaf todavía se usa sin declaración. RDFa 1.1 incluye automáticamente prefijos para vocabularios populares como FOAF. [30]
El documento mínimo [31] es:
< html lang = "en" > < 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 utilizar todos estos atributos: vocab
, typeof
, property
; no sólo uno de ellos.
Ejemplo de datos estructurados RDFa
Esquema de persona en RDFa. [32]
< div vocab = "http://schema.org/" typeof = "Persona" > < una propiedad = "imagen" href = "http://manu.sporny.org/images/manu.png" > < span propiedad = "nombre" > Manu Sporny </ span >> a > , < span propiedad = "jobTitle" > Fundador/CEO </ span > <div> Teléfono: < span property = "teléfono" > (540) 961-4469 </ span > </div> <div> Correo electrónico: < a property = "email" href = "mailto:(su ID 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>