RDFa (Resource De­scrip­tion Framework in At­tri­bu­tes) è un formato per l’in­se­ri­men­to di af­fer­ma­zio­ni RDF nei file HTML, XHTML o altre varianti XML, che il World Wide Web Con­sor­tium (W3C) consiglia di usare come standard. I pro­gram­ma­to­ri uti­liz­za­no il Resource De­scrip­tion Framework (RDF) per spe­ci­fi­ca­re meglio i contenuti delle pagine di un sito grazie ai metadati, in modo da per­met­te­re ai browser e ai crawler di com­pren­de­re le relazioni se­man­ti­che tra gli elementi. Ne consegue che il modello RDF è un com­po­nen­te im­por­tan­te del web semantico. Questo formato è stato svi­lup­pa­to nel 2004 per essere uti­liz­za­to nei documenti XHTML, a cui è seguita nel 2008 la proposta ufficiale del W3C di uti­liz­za­re RDFa 1.0 come standard. A partire dalla versione 1.1, in­tro­dot­ta nel 2012 insieme ad una variante ridotta per prin­ci­pian­ti, co­no­sciu­ta con il nome di RDFa Lite, RDFa è com­pa­ti­bi­le con il classico lin­guag­gio HTML e HTML5.

RDF nel lin­guag­gio HTML

RDFa rap­pre­sen­ta solo una delle tante pos­si­bi­li­tà che per­met­to­no di annotare le af­fer­ma­zio­ni RDF. Infatti, le espres­sio­ni RDF vengono inserite nel lin­guag­gio di markup HTML per rendere i contenuti scritti dagli uomini leggibili dai motori di ricerca tramite dati strut­tu­ra­ti. Questa in­te­gra­zio­ne è possibile grazie ad attributi espressi sotto forma di tag nel lin­guag­gio HTML, che av­vi­ci­na­no RDFa agli altri formati del lin­guag­gio semantico, come i mi­cro­for­ma­ti o i microdati. RDFa mette a di­spo­si­zio­ne la meta-sintassi per il markup semantico mentre, per de­scri­ve­re con i metadati le relazioni tra gli elementi, serve un vo­ca­bo­la­rio condiviso e per questo i pro­gram­ma­to­ri possono contare su diversi standard come FOAF, SKOS, Dublin Core o SIOC. Google, Bing, Yahoo e Yandex con­si­glia­no un markup basato su Schema.org, un vo­ca­bo­la­rio nato da un progetto comune dei prin­ci­pa­li motori di ricerca per uni­for­ma­re i dati strut­tu­ra­ti.

Ap­pli­ca­zio­ne del markup con RDFa

RDFa introduce una serie di nuovi attributi per l’in­se­ri­men­to dei metadati, che ampliano il vo­ca­bo­la­rio di base dei documenti scritti nei ri­spet­ti­vi linguaggi di markup (ad esempio HTML, XHTML o HTML5). Nella lista seguente sono indicati gli attributi di RDFa Lite:

Attributo De­scri­zio­ne
vocab L’attributo vocab definisce il vo­ca­bo­la­rio de­si­de­ra­to alla base del markup degli elementi con RDFa (ad esempio Schema.org).
typeof Con l’attributo typeof si assegnano agli elementi degli schemi precisi, chiamati “types”, secondo il vo­ca­bo­la­rio scelto.
property Con l’attributo property vengono assegnate delle proprietà agli elementi.
resource L’attributo resource consente ai pro­gram­ma­to­ri di assegnare delle in­di­ca­zio­ni agli elementi, chiamate “iden­ti­fier”.
prefix L’attributo prefix dà la pos­si­bi­li­tà ai pro­gram­ma­to­ri di scegliere più di un vo­ca­bo­la­rio, qualora non ba­stas­se­ro i termini del primo vo­ca­bo­la­rio per rea­liz­za­re il markup voluto.

A supporto degli attributi RDFa ci sono i tag HTML vuoti, cioè senza alcun valore semantico. I metadati si trovano perciò racchiusi tra gli elementi <div> e <span>. In genere tutte le af­fer­ma­zio­ni RDF possono essere inserite in tutti i tag HTML tramite RDFa, seguendo lo schema qui sotto:

Schema di base per la sintassi RDFa:
<div vocab="http://schema.org/" typeof="Schema">
    <span property="Proprietà">Testo</span>
<div>

Mettere in evidenza l’indirizzo postale con RDFa

Il seguente codice indica i dati di contatto in un documento HTML:

Codice HTML di un indirizzo postale:
<p>
    Google Inc.<br>
    P.O. Box 1234<br>
    Mountain View, CA<br>
    94043<br>
    United States<br>
</p>

Mentre un vi­si­ta­to­re in carne e ossa riconosce im­me­dia­ta­men­te che si tratta di un indirizzo in formato americano iden­ti­fi­ca­bi­le come testo di un paragrafo grazie al tag <p>, i programmi come browser e crawler hanno invece bisogno di metadati ag­giun­ti­vi per capire il si­gni­fi­ca­to delle in­for­ma­zio­ni:

RDFa markup of a mailing address:
<p vocab="http://schema.org/" typeof="PostalAddress"><br>
    <span property="name">Google Inc.</span><br>
    P.O. Box <span property="postOfficeBoxNumber">1234</span><br>
    <span property="addressLocality">Mountain View</span>,<br>
    <span property="addressRegion">CA</span><br>
    <span property="postalCode">94043</span><br>
    <span property="addressCountry">United States</span><br>
</p>

Nella riga 01 il tag HTML <p> svolge la funzione di elemento di supporto per gli attributi RDFa “vocab” e “typeof”. I programmi che leggono un codice evi­den­zia­to in questo modo com­pren­do­no così che per tutti gli elementi contenuti nei tag <p> è usato il vo­ca­bo­la­rio di Schema.org e che le in­for­ma­zio­ni sono ordinate secondo lo schema “Po­sta­lAd­dress” (indirizzo postale). Basandosi su Schema.org, ogni schema può essere dotato di proprietà spe­ci­fi­che, ad esempio è tipico che gli indirizzi postali con­ten­ga­no delle in­for­ma­zio­ni precise. Se devono essere messe in evidenza per essere scan­sio­na­te dai motori di ricerca, si utilizza l’attributo RDFa “property”. In questo esempio le in­for­ma­zio­ni “name”, “po­stOf­fi­ce­Bo­x­Num­ber”, “ad­dres­sLo­ca­li­ty”, “adres­sRe­gion”, “po­stal­Co­de” e “adres­sCoun­try” sono con­tras­se­gna­te con i valori cor­ri­spon­den­ti come proprietà di “Po­sta­lAd­dress”. Così anche un programma che legge il codice HTML comprende cosa si­gni­fi­chi­no in­for­ma­zio­ni quali “Google Inc.” e “94043”.

Mettere in evidenza i contenuti delle pagine con RDFa per generare rich snippet

I dati strut­tu­ra­ti sono utili so­prat­tut­to per le ricerche sul web. Se un sito utilizza il lin­guag­gio semantico, i motori di ricerca riescono ad estra­po­la­re le in­for­ma­zio­ni più im­por­tan­ti e ad uti­liz­zar­le per generare rich snippet, degli estratti dei contenuti di una pagina che ampliano i risultati di ricerca facendoli risaltare mag­gior­men­te nelle SERPs. In questo senso un’an­no­ta­zio­ne semantica con­tri­bui­sce all’ot­ti­miz­za­zio­ne di un sito per i motori di ricerca. Google supporta il markup in RDFa per generare rich snippet per i tipi di dati come prodotti, ricette, re­cen­sio­ni, software e articoli stampa. I rich snippet per i video sono sup­por­ta­ti solo per i formati più recenti, quali microdati e JSON-LD. Se devono essere generati rich snippet per degli eventi, bisogna uti­liz­za­re un lin­guag­gio di markup con JSON-LD. Vi pre­sen­tia­mo qui come strut­tu­ra­re i contenuti di una pagina per la creazione di rich snippet, prendendo come esempio l’an­no­ta­zio­ne semantica di una re­cen­sio­ne di un prodotto.

Mettere in evidenza una re­cen­sio­ne di un prodotto con RDFa

In genere le va­lu­ta­zio­ni dei prodotti che compaiono nei rich snippet delle SERPs pre­sen­ta­no il nome del prodotto, l’immagine, una va­lu­ta­zio­ne con stelle e una re­cen­sio­ne con il nome dell’autore, il titolo e la data di pub­bli­ca­zio­ne. Il codice seguente mostra come mettere in evidenza queste in­for­ma­zio­ni tramite il formato RDFa, in modo che vengano scan­sio­na­te fa­cil­men­te dai motori di ricerca:

Markup in RDFa di una va­lu­ta­zio­ne di un prodotto:
<div vocab="http://schema.org/" typeof="Product">
    <img property="image" src="www.servizio.it/immagine.jpg" alt="Descrizioneimmagine"/>
    <span property="name">Nome del prodotto</span>
    <div property="review" typeof="Review"> Review:
        <span property="reviewRating" typeof="Rating">
            <span property="ratingValue">5</span> -
        </span>
        <b>"<span property="name">Titolo della valutazione</span>"</b> von
        <span property="author" typeof="Person">
            <span property="name">Nome dell’autore</span>
        </span>, pubblicato il
        <meta property="datePublished" content="2006-05-04">4 maggio 2006
        <div property="reviewBody">Testo della valutazione</div>
        <span property="publisher" typeof="Organization">
            <meta property="name" content="Nome dell‘editore">
        </span>
    </div>
</div>

Nella riga 01 viene indicato come markup il vo­ca­bo­la­rio di Schema.org. L’attributo typeof definisce le in­for­ma­zio­ni dalle righe 01 a 17 come ap­par­te­nen­ti allo schema standard “Product”. I prodotti, basandosi su Schema.org, possono avere una serie di proprietà (pro­per­ties): in questo esempio al prodotto vengono assegnati e messi in evidenza se­man­ti­ca­men­te un nome (property="name"), un’immagine (property=“image“) e una re­cen­sio­ne (property="review"). La sintassi di RDFa prevede che anche le proprietà possano essere descritte come schemi, dotati a loro volta di proprietà. In altre parole la proprietà “review” nella riga 04 può essere definita e meglio spe­ci­fi­ca­ta come schema “review”.

Estratto:
<div property="review" typeof="Review"> Review:

Molte re­cen­sio­ni hanno delle va­lu­ta­zio­ni con stelle. Per renderle leggibili dai motori di ricerca, allo schema “Review” viene assegnata la proprietà “re­view­Ra­ting”, che si può de­scri­ve­re in qualità di schema “Rating” con la proprietà “ra­ting­Va­lue” e indicando un valore concreto (righe 05-06).

Estratto:
<div property="review" typeof="Review"> Review:
        <span property="reviewRating" typeof="Rating">
            <span property="ratingValue">5</span> -

Altre proprietà dello schema "review” sono il titolo (property="name"), l’autore (property="author"), la data di pub­bli­ca­zio­ne (property="da­te­Pu­bli­shed"), il testo della va­lu­ta­zio­ne (property="re­view­Bo­dy") e altre in­for­ma­zio­ni sull’editore (property="publisher"). L’autore e l’editore possono essere definiti con uno schema specifico (persona o or­ga­niz­za­zio­ne) tramite l’attributo typeof e dotate di proprietà (come “name”). È da tenere presente che in ogni attributo typeof su­bor­di­na­to può essere annidato tra tag HTML un attributo typeof so­vraor­di­na­to.

Questi esempi mostrano quanto sia complesso il markup con RDFa, che seppure consenta un’an­no­ta­zio­ne semantica molto det­ta­glia­ta, risulta più difficile da applicare rispetto a formati più moderni, come quello JSON-LD.

Vai al menu prin­ci­pa­le