# Qué es RDFa y cómo se usa en los datos estructurados

> Qué es RDFa, cómo marca datos con vocab, typeof y property, en qué se diferencia de microdatos y JSON-LD, y por qué las etiquetas og: vienen de él.

URL: https://clione.ai/es/glosario/rdfa/
Lang: es

Abre el código fuente de una tienda y busca `property="og:title"` en la cabecera: esa forma de escribir metadatos viene de RDFa. RDFa es uno de los tres formatos en los que se pueden escribir los [datos estructurados](/es/glosario/datos-estructurados/) de una página, el menos conocido de los tres, y **sigue vivo en más sitios de los que parece**. Te importa por dos razones: Google lo lee como cualquier otro formato, y si tu tema o una aplicación antigua lo usa, convive con el marcado que añadas después.

## Cómo funciona

El W3C publicó la versión vigente, RDFa Core 1.1 en su tercera edición, como recomendación el 17 de marzo de 2015. La define como **una especificación de atributos para expresar datos estructurados en cualquier lenguaje de marcado**; el nombre viene de _RDF in Attributes_, el modelo de datos RDF escrito en atributos. Su idea es reutilizar lo que el documento ya contiene en lugar de repetirlo en otro sitio, y define trece atributos para hacerlo.[^rdfa-core]

En la práctica casi nadie necesita los trece. El mismo día, el W3C publicó RDFa Lite 1.1, un subconjunto mínimo para expresar datos legibles por máquinas en documentos como HTML, SVG o XML, con solo cinco atributos:[^rdfa-lite]

| Atributo   | Qué hace                                                                |
| ---------- | ----------------------------------------------------------------------- |
| `vocab`    | Dice qué vocabulario se usa para describir lo que hay en la página      |
| `typeof`   | Dice de qué tipo es la cosa que se describe                             |
| `property` | Nombra cada propiedad de esa cosa                                       |
| `resource` | Da un identificador único a cada cosa de la página                      |
| `prefix`   | Permite usar otros vocabularios cuando el principal no tiene el término |

El vocabulario más habitual es [Schema.org](/es/glosario/schema-org/). El propio ejemplo de RDFa Lite describe a una persona con `vocab="http://schema.org/"` en un párrafo y marca su nombre y su teléfono con `property` sobre el texto visible, de modo que **la frase que lee el visitante es la misma que lee el buscador**.[^rdfa-lite]

Google admite tres formatos de datos estructurados. Describe RDFa como una extensión de HTML5 que añade atributos a las etiquetas que corresponden al contenido visible, y recomienda [JSON-LD](/es/glosario/json-ld/) si la web lo permite, porque es la solución más fácil de implementar y de mantener a escala.[^google-sd-intro] Recomendar uno no es dejar de leer los otros: un marcado en RDFa bien hecho sirve para optar a los [resultados enriquecidos](/es/glosario/resultados-enriquecidos/), y la [Prueba de resultados enriquecidos](/es/glosario/prueba-de-resultados-enriquecidos/) **valida JSON-LD, RDFa y [microdatos](/es/glosario/microdatos/) por igual**.[^rich-results-test]

### La herencia que sí vas a ver: Open Graph

El protocolo Open Graph, el de las etiquetas `og:`, se basó en RDFa desde su primera versión, y por eso se escribe con etiquetas `meta` que usan el atributo `property` en la cabecera de la página. Pide cuatro propiedades básicas, `og:title`, `og:type`, `og:image` y `og:url`, y declara su vocabulario con el atributo `prefix`, el mismo que define RDFa Lite.[^ogp][^rdfa-lite] Su objetivo es convertir cualquier página en un objeto de un grafo social.[^ogp] Son metadatos de la página, no el marcado de producto que lee Google para sus resultados enriquecidos.

## En una tienda

La oferta de un trípode marcada con RDFa Lite y el vocabulario de Schema.org. **Ejemplo ficticio**: la tienda, el producto, la referencia y el precio son inventados.

```html
<div vocab="https://schema.org/" typeof="Product">
  <h1 property="name">Trípode de viaje TV-200</h1>
  <p>Referencia: <span property="sku">TIENDA-0457</span></p>
  <div property="offers" typeof="Offer">
    <span>129,00 €</span>
    <meta property="price" content="129.00" />
    <meta property="priceCurrency" content="EUR" />
    <link property="availability" href="https://schema.org/InStock" />En stock
  </div>
</div>
```

Si has leído la entrada de [microdatos](/es/glosario/microdatos/), el parecido salta a la vista. Donde los microdatos usan `itemscope` e `itemtype`, RDFa usa `vocab` una vez y `typeof` en cada elemento; donde los microdatos usan `itemprop`, RDFa usa `property`.[^rdfa-lite] El producto es un [Product](/es/glosario/schema-product/) y lleva dentro su oferta, un [Offer](/es/glosario/schema-offer/), declarada con `property` y `typeof` a la vez: así se anidan los tipos en este formato. El nombre y el [SKU](/es/glosario/sku/) salen del texto visible; el precio para las máquinas va en un `meta`, porque el visitante ve «129,00 €» y el vocabulario pide el número y la moneda por separado.

Lo que RDFa hace y los microdatos no es **mezclar vocabularios en la misma página**: con `prefix` puedes declarar, por ejemplo, el de Open Graph en la etiqueta `html` y seguir usando Schema.org en el cuerpo.[^rdfa-lite][^ogp] El coste es el mismo que en los microdatos: el marcado vive dentro de la plantilla, y **cambiar de tema puede llevárselo por delante** sin que nadie lo decida.


Que RDFa es un formato abandonado que Google ya no lee, y que hay que quitarlo o rehacerlo solo por eso. Google lo sigue nombrando entre los tres formatos que admite, aunque recomiende JSON-LD,[^google-sd-intro] y su Prueba de resultados enriquecidos lo valida igual que los otros dos.[^rich-results-test] **El problema no es el formato, sino que diga algo distinto** de lo que dice la página o de lo que dice otro marcado del mismo producto.


## Cómo comprobarlo

1. **Abre el código fuente de una ficha y busca `vocab=` y `typeof=`.** Si aparecen en el cuerpo de la página, tu tema o una aplicación escribe datos estructurados en RDFa.[^rdfa-lite]
2. **Separa lo que es Open Graph.** Las etiquetas `meta` con `property="og:` de la cabecera son metadatos de Open Graph, no el marcado de producto.[^ogp]
3. **Pasa la URL por la Prueba de resultados enriquecidos.** Lee los tres formatos, te dice qué detecta y con qué errores, y acepta también un fragmento de código pegado.[^rich-results-test]
4. **Si la página lleva RDFa y JSON-LD a la vez, compáralos**: el mismo nombre, el mismo precio, la misma disponibilidad.
5. **Si vas a rehacer el marcado, decide el formato una vez.** Google recomienda JSON-LD porque es el más fácil de mantener cuando tienes muchas páginas.[^google-sd-intro]

## Concepto cercano: microdatos

Los [microdatos](/es/glosario/microdatos/) y RDFa son primos: Google describe los primeros como una forma de anidar datos estructurados dentro del contenido HTML, y el segundo como atributos de las etiquetas que corresponden al contenido visible.[^google-sd-intro] La diferencia práctica es de alcance. RDFa es una especificación del W3C pensada para cualquier lenguaje de marcado, no solo HTML,[^rdfa-core] y **con `prefix` admite varios vocabularios a la vez** en la misma página.[^rdfa-lite] Para una [ficha de producto](/es/glosario/ficha-de-producto/) con Schema.org, los dos dicen lo mismo; la pregunta útil no es cuál es mejor, sino si el que tiene tu tienda coincide con lo que muestra.

Para seguir, la [ruta de lectura de datos estructurados](/es/aprender/datos-estructurados/) ordena el resto de términos, y la entrada de [JSON-LD](/es/glosario/json-ld/) explica el formato que Google recomienda.
