Como pro­pie­da­des del eti­que­ta­do con HTML5, los metadatos conforman una me­ta­si­n­ta­xis para el eti­que­ta­do de datos es­tru­c­tu­ra­dos, que permite a los de­sa­rro­lla­do­res web en­ri­que­cer sus co­n­te­ni­dos con me­tai­n­fo­r­ma­ción que los hace co­m­pre­n­si­ble a las máquinas. In­te­r­pre­ta­dos por crawlers o na­ve­ga­do­res, estos metadatos co­n­s­ti­tu­yen el fu­n­da­me­n­to de formas ampliadas de re­pre­se­n­ta­ción de los co­n­te­ni­dos de las páginas web o de su tra­ta­mie­n­to por parte de programas de in­te­r­pre­ta­ción como los lectores de pantalla. Los datos es­tru­c­tu­ra­dos son también re­le­va­n­tes para la op­ti­mi­za­ción en bu­s­ca­do­res, ya que la anotación semántica facilita la in­de­xa­ción de páginas web y permite en­ri­que­cer los re­su­l­ta­dos de las búsquedas con in­fo­r­ma­ción adicional. Para la es­tru­c­tu­ra­ción de datos, los mi­cro­da­tos se apoyan en un vo­ca­bu­la­rio es­ta­n­da­ri­za­do según schema.org.

Mi­cro­da­tos frente a otros formatos de marcado

Mientras que la comunidad online entiende de forma unánime que el lenguaje HTML ha de ser más semántico, aún no está claro cuál será el formato para el marcado de metadatos que lo hará posible. Los mi­cro­da­tos fueron in­tro­du­ci­dos como un módulo aislado de HTML5, como al­te­r­na­ti­va iniciada por el WHATWG (Web Hypertext Ap­pli­ca­tion Te­ch­no­lo­gy Working Group) al entonces estándar RDFa, re­co­me­n­da­do por W3C para la es­tru­c­tu­ra­ción de datos en HTML y XHTML. El objetivo era facilitar la sintaxis sin mermar la fu­n­cio­na­li­dad con la ventaja, además, de estar más cerca de la versión más actual de HTML. Los mi­cro­da­tos ganaron re­le­va­n­cia gracias al proyecto schema.org, ini­cia­ti­va común de los cuatro grandes bu­s­ca­do­res Google, Bing, Yahoo y Yandex que, partiendo del marcado con mi­cro­da­tos, propone un vo­ca­bu­la­rio estándar para el eti­que­ta­do semántico. Sin embargo, si durante mucho tiempo este formato fue el re­co­me­n­da­do por Google, hoy pierde le­n­ta­me­n­te su posición frente a otros formatos más actuales como JSON-LD, aunque sigue estando en uso. Además de mi­cro­da­tos, schema.org soporta RDFa y el me­n­cio­na­do JSON-LD, formato de marcado basado en Java que gana en im­po­r­ta­n­cia, a pesar de no ser soportado por Google para todos los tipos de datos.

Sintaxis de los mi­cro­da­tos

El principio fu­n­da­me­n­tal de la sintaxis de los mi­cro­da­tos se basa en los pares nombre-valor. Su fu­n­cio­na­mie­n­to es sencillo: en primer lugar se delimita un elemento. Este elemento se define mediante un tipo o esquema de­te­r­mi­na­do pro­ce­de­n­te del re­pe­r­to­rio de schema.org. Una vez definido el tipo, se le pro­po­r­cio­nan ca­ra­c­te­rí­s­ti­cas (pro­pe­r­ties) mediante atributos HTML5. Las etiquetas im­pli­ca­das en este proceso son los atributos HTML5 itemscope, itemtype e itemprop:

  • Itemscope: se usa dentro de una etiqueta div- para delimitar un fragmento de­te­r­mi­na­do como elemento, que será definido más de­ta­lla­da­me­n­te mediante itemtype e itemprop.

  • Itemtype: este atributo se aplica a todos los elementos marcados con el atributo itemscope. Sirve para hacer re­fe­re­n­cia a un esquema pre­via­me­n­te definido y así es como se pueden su­bo­r­di­nar elementos re­le­va­n­tes de una página web a tipos estándar de schema.org para que puedan ser pro­ce­sa­dos por los bu­s­ca­do­res más ha­bi­tua­les.

  • Itemprop: este atributo define una propiedad de un itemtype. Las pro­pie­da­des que pe­r­te­ne­cen a cada tipo están es­ta­n­da­ri­za­das y di­s­pue­s­tas en el vo­ca­bu­la­rio de schema.org en su página homónima.

La in­te­gra­ción de estos tres atributos en el código HTML se realiza según el siguiente esquema básico:

Esquema básico del marcado con mi­cro­da­tos para un elemento:

<div itemscope itemtype="http://schema.org/Typ">
    <span itemprop="Propiedad">Item</span>
</div>

El marcado con mi­cro­da­tos en la práctica

Como otros formatos para el eti­que­ta­do semántico de do­cu­me­n­tos HTML, este también se basa en una serie de etiquetas clásicas de HTML, aunque los atributos de mi­cro­da­tos son fu­n­da­me­n­ta­l­me­n­te in­de­pe­n­die­n­tes de las etiquetas HTML. Por eso, como elementos po­r­ta­do­res de atributos de mi­cro­da­tos, los más indicados son etiquetas como <div> o <span>, que no poseen ningún si­g­ni­fi­ca­do propio.

<div></div> El elemento div- define un fragmento de­te­r­mi­na­do en una nueva línea del texto. Por regla general, esta etiqueta delimita al principio y al final a un atributo itemscope.
<span></span> El elemento span- define un fragmento en la línea sin influir en su re­pre­se­n­ta­ción en el navegador. Se usa para el atributo itemprop.

En principio, es posible integrar metadatos mediante atributos de mi­cro­da­tos en todos los tags de HTML. Los si­guie­n­tes ejemplos muestran una in­co­r­po­ra­ción de metadatos en elementos div- y span-, hi­pe­r­ví­ncu­los, gráficas y elementos de listado.

Integrar gráficas con mi­cro­da­tos

Un ámbito muy típico de apli­ca­ción de la anotación semántica de co­n­te­ni­dos web es el de la in­te­gra­ción de logos co­r­po­ra­ti­vos. Ide­n­ti­fi­ca­dos como tal por los usuarios a primera vista, los crawlers dependen de los mi­cro­da­tos para co­m­pre­n­der el si­g­ni­fi­ca­do de este elemento:

Marcado de un logo co­r­po­ra­ti­vo:

<div itemscope itemtype="http://schema.org/Organization">
    <a itemprop="url" href="http://www.miempresa.es/">Paginaprincipal</a>
    <img itemprop="logo" src="http://www.miempresa.es/logo.png"/>
</div>

En la línea 01 se abre un nuevo elemento div- que abarca tanto el URL en la línea 02 como el código HTML de la imagen en la línea 03. Esta etiqueta div-, en sí tan poco es­pe­cí­fi­ca, es marcada mediante el atributo itemscope como elemento portador de in­fo­r­ma­ción. El atributo itemtype hace re­fe­re­n­cia al esquema “Or­ga­ni­za­tion” según el estándar schema.org, que define todo el fragmento. Es así como se informa al crawler de que todos los datos co­m­pre­n­di­dos en la etiqueta div- contienen in­fo­r­ma­ción sobre una empresa.

Por su parte, el itemtype se define con las pro­pie­da­des “url” y “logo” y sus co­rre­s­po­n­die­n­tes valores. Así, el robot del buscador ide­n­ti­fi­ca la imagen como logo de la empresa y establece una relación con la página principal de la misma. Algunos bu­s­ca­do­res, como Google, usan los elementos gráficos marcados de esta manera para la creación de, por ejemplo, knowledge graphs o gráficos de co­no­ci­mie­n­to (ge­ne­ra­l­me­n­te a la derecha de la lista de los re­su­l­ta­dos de una búsqueda).

Este sería el eti­que­ta­do del logo de una marca según schema.org:

Marcado del logo de una marca:

<div itemscope itemtype="http://schema.org/Brand">
    <span itemprop="name">Nombre de la marca</span>
    <img itemprop="logo" src="http://www.mimarca.es/logo.png" />
</div>

En este ejemplo, el elemento dentro de itemscope está marcado como “Brand” según el vo­ca­bu­la­rio de schema.org. Como pro­pie­da­des, se pro­po­r­cio­nan el nombre de la marca y el logo, incluido el lugar de su al­ma­ce­na­mie­n­to.

Marcar datos de contacto con mi­cro­da­tos

Junto a las imágenes, la es­tru­c­tu­ra­ción de los datos de contacto con mi­cro­da­tos es de especial im­po­r­ta­n­cia para las empresas, ya que co­n­s­ti­tu­ye la base para una re­pre­se­n­ta­ción de snippets en­ri­que­ci­dos en la lista de re­su­l­ta­dos en la forma de sitelinks o knowledge graphs. Te mostramos, a co­n­ti­nua­ción, cómo es­tru­c­tu­rar la in­fo­r­ma­ción de contacto mediante mi­cro­da­tos con un ejemplo de schema.org:

Marcado de los datos de contacto de Google:

<div itemscope itemtype="http://schema.org/Organization">
    <span itemprop="name">Google.org (GOOG)</span>
    Contact Details:
    <div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
        Main address:
            <span itemprop="streetAddress">38 avenue de l'Opera</span>
            <span itemprop="postalCode">F-75002</span>
            <span itemprop="addressLocality">Paris, France</span>
    </div>
    Tel: <span itemprop="telephone">( 33 1) 42 68 53 00 </span>,
    Fax: <span itemprop="faxNumber">( 33 1) 42 68 53 01 </span>,
    E-mail: <span itemprop="email">secretariat(at)google.org</span>
</div>

En la línea de código 01 el atributo itemtype define el elemento incluido en la etiqueta div- desde la línea 01 hasta la 13 como “Or­ga­ni­za­tion” siguiendo a schema.org. Este esquema es definido mediante el atributo itemprop con las pro­pie­da­des “name” (nombre), “address” (dirección), “telephone” (número de teléfono), “faxNumber” (número de fax), “email” (correo ele­c­tró­ni­co) y  sus re­s­pe­c­ti­vos valores.

En la línea 04 sucede algo diferente. Según la sintaxis de mi­cro­da­tos, el valor de una propiedad también puede co­n­ve­r­ti­r­se en esquema. Según esto, los datos que siguen a “Main Address” (dirección principal) se derivan en un nuevo elemento div- con un itemscope propio y definido como un itemtype “Po­stalA­d­dre­ss” (dirección postal), según marca schema.org. Mediante las ca­ra­c­te­rí­s­ti­cas (itemprop) “stree­tA­d­dre­ss” (calle), “po­stal­Co­de” (código postal) y “ad­dre­s­s­Lo­ca­li­ty” (localidad) se define a este tipo en detalle.

Marcar co­n­te­ni­dos para su re­pre­se­n­ta­ción en rich snippets

El marcado semántico de los co­n­te­ni­dos de una web es de crucial im­po­r­ta­n­cia para que esta aparezca en la lista de re­su­l­ta­dos de los bu­s­ca­do­res ma­yo­ri­ta­rios como un rich snippet o snippet en­ri­que­ci­do. Para pro­po­r­cio­nar al usuario la mayor cantidad posible de in­fo­r­ma­ción ajustada a su búsqueda, los robots de Google y de los demás bu­s­ca­do­res tienen la capacidad de añadir datos adi­cio­na­les a los snippets, como in­fo­r­ma­ción sobre un producto, recetas, va­lo­ra­cio­nes y co­me­n­ta­rios de otros usuarios, eventos, apli­ca­cio­nes de software, vídeos o noticias si estos co­n­te­ni­dos fueron ade­cua­da­me­n­te op­ti­mi­za­dos. En el siguiente ejemplo usamos una oferta de hotel ficticia para exponer cómo se puede mostrar esta in­fo­r­ma­ción usando los mi­cro­da­tos de schema.org.

En una oferta turística de una agencia de viajes online figuran, por regla general, el nombre del hotel, una breve de­s­cri­p­ción y una imagen. Si eti­que­ta­mos esta in­fo­r­ma­ción con mi­cro­da­tos siguiendo a schema.org, el código HTML de esta oferta tendría este aspecto:

Marcado de in­fo­r­ma­ción básica en una oferta turística:

<div itemscope itemtype="http://schema.org/Hotel">
    <span itemprop="name">Nombre del hotel</span>
    <span itemprop="description">Descripción del hotel</span>
    <img itemprop="image" src="http://Images/hotel.jpg" />
</div>

El atributo itemtype en la línea 01 se refiere al esquema “Hotel”, definido por las pro­pie­da­des (itemprop) “name”, “de­s­cri­p­tion” e “image”, con sus re­s­pe­c­ti­vos valores (líneas 02-04).

A esta es­tru­c­tu­ra básica se le puede añadir la in­fo­r­ma­ción que se desee mediante itemprops o ite­m­s­co­pes in­cru­s­ta­dos. Aquí hay que tener en cuenta que los elementos div- in­cru­s­ta­dos dentro de una etiqueta div- se han de colocar bajo los ite­m­s­co­pes a los cuales estén su­bo­r­di­na­dos. El siguiente ejemplo amplía la anotación semántica para esta oferta turística con in­fo­r­ma­ción sobre el precio:

Marcado de los precios:

<div itemprop="makesOffer" itemscope itemtype="http://schema.org/Offer"> 
    <span itemprop="price">400 euros</span>
</div>

La línea 01 introduce la ca­ra­c­te­rí­s­ti­ca “ma­ke­sO­f­fe­rs” (hace ofertas), definida como el esquema “Offer” (oferta). Propio de las ofertas es que tengan un precio: la línea 02 define esta propiedad con el itemprop “price” (precio) y le otorga el valor de “400 euros”.

De esta manera, es posible también añadir in­fo­r­ma­ción sobre las mo­da­li­da­des de pago (itemprop="pa­y­me­n­tA­c­ce­p­ted"), la lo­ca­li­za­ción geo­grá­fi­ca (itemprop="map") o los co­me­n­ta­rios de clientes (itemprop="reviews"). Integrado en la anterior es­tru­c­tu­ra básica, se obtiene el siguiente marcado:

Marcado completo de una oferta turística:

<div itemscope itemtype="http://schema.org/Hotel">
    <span itemprop="name">Nombre del hotel</span>
    <span itemprop="description">Descripción del hotel</span>
    <img itemprop="image" src="http://Images/hotel.jpg" />
    <div itemprop="makesOffer" itemscope itemtype="http://schema.org/Offer"> 
        <span itemprop="price">400 euros</span>
    </div>
    <span itemprop="paymentAccepted">Transferencia, tarjeta de crédito, etc.</span> 
    <span itemprop="map">URL del mapa</span> 
    <div itemprop="reviews" itemscope itemtype="http://schema.org/Review"> 
        <span itemprop="name">Título de la valoración</span>
        <span itemprop="author">Autor</span>
        <span itemprop="reviewBody">Texto de la valoración</span>
        <span itemprop="datePublished">Fecha de la valoración</span>
    </div>
</div>

En la línea 01 se define el esquema válido para todos los datos si­guie­n­tes, hasta la línea 15, como “Hotel”. A él le siguen las pro­pie­da­des del elemento hotel: nombre, de­s­cri­p­ción y foto (líneas 02-04). Entre las líneas 05 y 07 se marca el precio de la oferta mediante el atributo su­bo­r­di­na­do itemscope “Offer” (oferta). Le siguen (líneas 08 y 09) las pro­pie­da­des su­bo­r­di­na­das a “Hotel”, que definen los modos de pago y la lo­ca­li­za­ción. Entre las líneas 10 y 15 se define un tipo nuevo asignando pro­pie­da­des a “Review”: título, datos sobre el autor, texto y fecha de pu­bli­ca­ción.

Si se quiere añadir un sistema de estrellas a esta va­lo­ra­ción, lo que resulta muy visual y apropiado para los rich snippets, Google propone el siguiente marcado:

Marcado para una va­lo­ra­ción de cliente con pu­n­tua­ción:

<div itemscope itemtype="http://schema.org/Review">
    <div itemprop="itemReviewed" itemscope itemtype="http://schema.org/Hotel">
        <span itemprop="name">Nombre del hotel</span>
    </div>
    <span itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating">
        <span itemprop="ratingValue">4</span>
    </span> stars -
    <b>"<span itemprop="name">Título de la valoración</span>"</b>
    <span itemprop="author" itemscope itemtype="http://schema.org/Person">
        <span itemprop="name">Autor</span>
    </span>
    <span itemprop="reviewBody">Texto</span>
</div>

Brea­d­cru­m­bs con mi­cro­da­tos

Las de­no­mi­na­das “migas de pan” co­n­s­ti­tu­yen una modalidad más para aumentar el poder visual de un snippet. Esta de­no­mi­na­ción define la línea de na­ve­ga­ción de una página web, la cual pro­po­r­cio­na al usuario la po­si­bi­li­dad de situar el resultado en su posición exacta dentro de una página web, lo que facilita su posterior lo­ca­li­za­ción. El siguiente código muestra un ejemplo típico de in­te­gra­ción de un recorrido de migas de pan en HTML:

Marcado en HTML de un recorrido de migas de pan

<ol>
    <li>
        <a href="http://www.agencia.es/hoteles">Hoteles</a>
    </li>
    <li>
        <a href="http://www.agencia.es/hoteles/alemania/">Hoteles en Alemania</a>
    </li>
    <li>
        <a href="http://www.agencia.es/hoteles/alemania/berlin/">Hoteles en Berlín</a>
    </li>
<ol>

El ejemplo muestra un elemento de lista (<ol>, ordered list) que contiene los enlaces (<li>) a las di­fe­re­n­tes su­b­pá­gi­nas de una página web. Para que los crawlers puedan in­te­r­pre­tar esta es­tru­c­tu­ra de na­ve­ga­ción y mostrarla como recorrido de migas de pan en el buscador, puede usarse el siguiente marcado:

Marcado de migas de pan con mi­cro­da­tos según schema.org

<ol itemscope itemtype="http://schema.org/BreadcrumbList">
    <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
        <a itemprop="item" href="http://www. agencia.es/hoteles/">
            <span itemprop="name">Hoteles</span></a>
        <meta itemprop="position" content="1" />
    </li>
    <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
        <a itemprop="item" href="http://www.agencia.es/hoteles/alemania/">
            <span itemprop="name">Hoteles en Alemania</span></a>
        <meta itemprop="position" content="2" />
    </li>
    <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
        <a itemprop="item" href="http://www.agencia.es/hoteles/alemania/berlin/">
            <span itemprop="name">Hoteles en Berlín</span></a>
        <meta itemprop="position" content="3" />
    </li>
</ol>

El elemento de lista <ol> se define como esquema mediante el atributo itemscope y es definido vía itemtype como un esquema de “Brea­d­cru­m­bLi­st” (schema.org). Para cada “miga de pan” dentro de la línea de na­ve­ga­ción se genera un itemscope con el itemtype “ListItem”. A cada uno de estos se les otorgan las pro­pie­da­des “name”, “item” y “position”, los cuales contienen los valores para el nombre, el URL y la posición de una miga de pan dentro de la línea de na­ve­ga­ción de forma que las máquinas puedan in­te­r­pre­tar­lo.

Ir al menú principal