Introduzione a RDFa

ottobre 30, 2008

RDFa fornisce un insieme di attributi XHTML per rappresentare in formato machine-readable dei dati human-readable come le pagine web, senza che sia necessario riscrivere e creare nuovi contenuti (eventualmente anche in altri formati e con altre sintassi), ma semplicemente aggiungendo informazioni a quelli già esistenti.
Quando un utente raggiunge una pagina web è in grado di capire che, molto probabilmente, il testo scritto con un carattere più grande rispetto resto del contenuto della pagina indica il titolo della pagina stessa, e che la foto a fianco della biografia dell’autore è presumibilmente la foto dell’autore stesso. Se un’applicazione (browser) raggiunge la stessa pagina, non è in grado di fare le stesse deduzioni dell’utente, si limita ad identificare una stringa nella testata ed una immagine affiancata a del testo.
Aggiungendo delle informazioni (attributi XHTML) che esprimono il significato degli elementi, è possibile far sì che i programmi possano “capire” le pagine web.

RDFa introduce dei nuovi attributi XHTML che accettano valori appartenenti ad vocabolario specifico.
Il vocabolario di riferimento (Dublin Core, FOAF, etc..) viene importato specificando una XML Namespace declaration che associa il prefisso alla URIref, ad esempio per il prefisso dc:

xmlns:dc="http://purl.org/dc/elements/1.1/"

In questo modo è possibile utilizzare gli elementi raccolti nel vocabolario (ad esempio dc:title) come valori per gli attributi XHTML di RDFa. RDFa permette anche l’utilizzo combinato di più vocabolari nella stessa pagina.

Le informazioni aggiuntive inserite agli elementi della pagina XHTML tramite RDFa, costruiscono delle relazioni tra gli elementi stessi e sono rappresentabili tramite grafi basati sulle triple RDF soggetto-predicato-oggetto, questo fatto chiarisce che RDFa non è altro che un’applicazione dell’idea di RDF applicata alle pagine XHTML. L’estensibilità e riusabilità che caratterizzano RDF si notano anche in RDFa, è infatti possibile costruire nuovi vocabolari creando e pubblicando documenti RDF in cui sono descritte le classi e le proprietà del vocabolario stesso.

Fonti:
http://www.w3.org/TR/xhtml-rdfa-primer/
http://www.w3.org/TR/rdfa-syntax/#rdfa-attributes


XFN – XHTML Friends Network

ottobre 25, 2008

XFN è un microformat che viene utilizzato per rappresentare le relazioni tra le persone (piuttosto che le persone in sè), definendole come valori dell’attributo rel di un hyperlink. In questo modo è possibile mostrare le relazioni che, ad esempio, l’autore di un blog ha con gli autori dei blog che sono presenti nel suo blogroll (ad esempio quali sono amici, quali ha fisicamente incontrato, quali sono colleghi o collaboratori, ecc…).

Facciamo un esempio (fonte http://www.gmpg.org/xfn/intro):
Prendiamo 5 persone (Ingrid, Josh, Kat, Mary  e Nick) con delle relazioni specifiche tra di loro. Focalizziamoci sul punto di vista di Ingrid:

  • Ingrid
    • lavora con Mary
    • è amica di Mary e Josh
    • conoscente di Kat
    • ha incontrato fisicamente tutti tranne Nick

In un caso di questo tipo, il i link di Ingrid (cioè le relazioni rappresentate dal suo punto di vista) sarebbero:

<a href="http://josh.example.com/" rel="friend met">Josh</a>
<a href="http://kat.example.com/" rel="met acquaintance">Kat</a>
<a href="http://mary.example.com/" rel="co-worker friend met">Mary</a>
<a href="http://nick.example.com/">Nick</a>

Vengono quindi usati un insieme di valori specifici (nel nostro caso friend, met, acquaintance, co-worker) come valori dell’attributo rel del link; questi valori sono riconosciuti dai crawler XFN che analizzano i link presenti nelle pagine e ricavano reti di relazioni tra i soggetti interessati.

Per rendere la propria lista di link o il proprio blogroll XFN-friendly:

  • modificare i link inserendo (come abbiamo visto nell’esempio precedente) l’attributo rel e specificarne i valori facendo riferimento alla tabella che segue
XFN quick reference
relationship category XFN values
friendship (at most one): friend acquaintance contact
physical: met
professional: co-worker colleague
geographical (at most one): co-resident neighbor
family (at most one): child parent sibling spouse kin
romantic: muse crush date sweetheart
identity: me

[Per dettagli sui significati dei valori XFN fare riferimento a http://www.gmpg.org/xfn/1]

  • Inserire nella head della pagina l’attributo profile, in questo modo

<head profile="http://gmpg.org/xfn/11">

  • Inserire il badge XFN-Friendly con il codice:

<a href="http://gmpg.org/xfn"> <img src="xfn-btn.gif" alt="XFN Friendly" /> </a>

  • Aggiungere il proprio sito al motore di ricerca XFN rubhub

Le caratteristiche chiave di XFN, come abbiamo avuto modo di vedere, sono:

  • semplicità, si basa anche su un insieme di valori molto ridotto ma che permette comunque di esprimere una grande quantità di relazioni interpersonali.
  • funzionamento decentralizzato, in quanto sono gli autori stessi a definire e creare i link
  • riutilizzo dell’infrastruttura web già esistente, non è stata creata una nuova sintassi XML-based (vedi RDF), bensì ci si basa sull’XHTML, riutilizzando l’attributo rel estendendolo alle relazioni tra le persone (era nato per rappresentare le relazioni tra i documenti)
  • machine-readable (basandosi su un una struttura ed un insieme di valori standard) ma anche human-readable (associando stili CSS ai link è possibile dare anche un aspetto visivo diverso per i vari link, ad esempio scrivendo in grassetto i link agli amici, in sottolineato i link ai colleghi)

Il tool XFN Dumper permette di visualizzare i link XFN presenti nella pagina web che si sta visitando. Per utilizzarlo basta semplicemente inserire tra i preferiti lo script JavaScript che trovate in fondo a questa pagina e farvi click una volta raggiunta la pagina web di cui si vuole visualizzare la lista dei valori XFN.

WordPress supporta XFN. Nell’inserimento dei link che si riferiscono a persone, si ha la possibilità di specificare i valori XFN per l’attributo rel del link in modo da definire la propria relazione con la persona in questione.

Fonti:
http://www.gmpg.org/xfn/
http://rubhub.com/main/add


Operator – plugin per rilevare i microformats

ottobre 23, 2008

Il plugin Operator per Firefox, permette di rilevare i microformats presenti in una determinata pagina web.

Il plugin installa una toolbar che evidenzia la presenza, all’interno della pagina web che stiamo visualizzando, di elementi formattati con microformat, come Contatti, Eventi, ecc…

Apriamo ad esempio la pagina del mio Full Profile su LinkedIn:

Dallo screenshot possiamo notare la toolbar di Operator (indicata dal rettangolo rosso). Dalla barra viene evidenziata la presenza di un elemento Contatto.

Selezionando il contatto dalla toolbar, notiamo che l’elemento presente sulla pagina viene circondato da una cornice nera. Operator permette inoltre di effettuare delle operazioni (come esportare) l’elemento rintracciato sulla pagina. In questo caso verrebbe esportata la vCard corrispondente al profilo su LinkedIn.

Dalla voce “Rilevazione errori”, è anche possibile visualizzare il codice semantic XHTML dell’elemento e il codice vCard o iCalendar.


hResume microformat

ottobre 23, 2008

Il microformat hResume viene utilizzato per rappresentare Curriculum Vitae e sintesi di esperienze professionali. Come gli altri microformats segue i design principles del semantic XHTML e permette di incorporare nelle pagine web dati riguardanti le esperienze lavorative delle persone e rendere queste informazioni formattate in maniera standard.

Diversamente da hCard e hCalendar, non segue uno schema di elementi standard (come vCard per hCard o iCalendar per hCalendar) ma si basa su un insieme di elementi che comunemente vengono usati nelle definizioni dei CVs pubblicati sul web. I class names della struttura hResume sono:

  • hresume: elemento radice del hResume
  • summary: identifica una brevissima sintesi delle esperienze
  • contact: informazioni della persona in formato hCard
  • education: il class name education viene associato ad uno o più eventi hCalendar cui è connessa una hCard che rappresenta la scuola (nome, indirizzo, ecc…)
  • experience:  il class name experience viene associato ad uno o più eventi hCalendar cui è connessa una hCard che rappresenta il lavoro e le informazioni dell’azienda
  • skill: frasi o parole chiave rappresentate con il microformat rel-tag
  • affiliation: corrisponde alla hCard dell’organizzazione
  • publications: citazioni, rappresentate con il tag <cite> o il microformat citation

Come possiamo vedere, quindi, hResume nella sua struttura comprende informazioni rappresentate con altri microformats (hCard, hCalendar).

Questo microformat è stato utilizzato da LinkedIn per riformulare i profili registrati; è evidente la corrispondenza tra gli elementi della Full View di un profilo LinkedIn e gli elementi della struttura hResume: Summary, Contact info, Education, Experience, Affiliation.
Rendere semantico questo tipo di informazioni permette una nuova concezione della ricerca del lavoro sul web: iscriversi ai diversi siti che raccolgono offerte di lavoro (vedi Monster) implica dover aggiornare e gestire (evitando inconsistenza dei dati) i propri “CV” sulle varie piattaforme cui si è iscritti; con il proprio hResume su LinkedIn, invece, si aggiorna una sola volta il CV e si è allo stesso modo rintracciabili (la questione si riduce a rendere noto agli altri – ping – che il CV/profilo è stato aggiornato).
I vantaggi di questa “semanticità” dei dati professionali vanno evidentemente anche incontro a chi ricerca persone con determinate esperienze, caratteristiche e interessi lavorativi (vedi cacciatori di teste).

Da queste nuove opportunità si stanno sviluppando nuovi standard e microformat, come job-listing

Fonti:
http://microformats.org/wiki/hresume
http://hresume.weblogswork.com/hresumecreator/
http://it.toolbox.com/blogs/recruitment-technology/linkedin-does-hresume-can-hjobs-be-next-14196
http://steve.ganz.name/blog/2007/01/linkedin-launches-hresume.html
http://factoryjoe.com/blog/2007/01/26/hresume-is-live-on-linkedin/
http://it.toolbox.com/blogs/recruitment-technology/linkedin-does-hresume-can-hjobs-be-next-14196


Microformats

ottobre 20, 2008

Dalla pagina “What are microformats?” del wiki di microformats.org, si trovano molte possibili definizioni di microformats.
Per citarne alcune:

“Designed for humans first and machines second, microformats are a set of simple, open data formats built upon existing and widely adopted standards.”

Definizione corrente di microformats, Dan Cederholm

“Microformats are simple codes that you can use to identify specific kinds of data, like people or events, in your webpages.”

Chris Messina

“Microformats are a way of adding simple markup to human-readable data items such as events, contact details or locations, on web pages, so that the information in them can be extracted by software and indexed, searched for, saved, cross-referenced or combined.

Andy Mabbett

“Microformats are the way to publish and share information on the web with higher fidelity.”

“[…]microformats are carefully designed (X)HTML class names that extend the semantics of (X)HTML and enable authors to publish higher semantic fidelity content such as people, events, reviews, etc.”

“A microformat is way of adding more meaning to web pages beyond normal HTML headings and paragraphs, so you can indicate mentions of people, companies, events, reviews, tags, etc.

Tantek Çelik

Microformats are a way of attaching extra meaning to the information published on a web page. This extra semantic richness works alongside the information already presented, and can be used for the benefit of people and computers. This is mostly done through adding special pre-defined names to the class attribute of existing XHTML markup.

Drew McLellan

Prendendo spunto da queste definizioni, possiamo quindi dire che i microformats sono dei particolari formati che vengono utilizzati per dare un significato (semantico) ai dati “human-oriented” che si trovano sulle pagine web (eventi, persone, links, etc…), in modo tale da renderli “machine-readable“, riusabili e facilmente condivisibili. Questo processo è ottenuto tramite l’uso di specifici class names XHTML.
Esempi di microformats sono hCard, hCalendar, hResume, XFN.
Il microformat hCard, ad esempio, è un formato standard per rappresentare informazioni riguardanti persone, organizzazioni o aziende, che sfrutta elementi del semantic HTML in modo da poter incorporare i dati delle vCard nelle pagine web. hCard parte proprio dagli elementi dello standard vCard e li utilizza come class names per inserire in pagine (X)HTML i valori degli oggetti vCard. Le proprietà di una hCard sono rappresentate dagli elementi identificati con certi class names, che sono quelli definiti dallo standard, ovvero:

  • vcard (identifica l’inizio di una hCard, è l’elemento root)
  • fn (formatted name)
  • n
  • nickname, sort-string
  • url, email, tel
  • adr, label
  • geo (latitude, longitude), tz
  • photo, logo, sound, bday
  • title, role, org
  • category, note
  • class, key, mailer, uid, rev

La mia hCard (creata in questo caso con hCard Creator) con alcune delle mie informazioni personali (Nome, Cognome, Città, Stato, Telefono, email, foto, url) potrebbe essere:

1. <div id="hcard-Simone-Dezaiacomo" class="vcard">
2.   <img style="float:left; margin-right:4px"
        src="http://www.esempio.com/miafoto.jpg" alt="photo of "
        class="photo"/>
3.   <a class="url fn" href="https://semanticweb30.wordpress.com">
                       Simone Dezaiacomo</a>
4.   <a class="email" href="mailto:indirizzoemail@gmail.com">
                       indirizzoemail@gmail.com</a>
5.   <div class="adr">
6.    <span class="locality">Bologna</span>
      ,
7.    <span class="region">Italy</span>
8.   </div>
9.   <div class="tel">+39 0512020202020</div>
10. </div>
(in rosso sono evidenziati i class names)

Questo codice, inserito nella propria pagina web, fa sì che le informazioni personali siano “semantiche” e formattate con il microformat hCard, rendendo i dati “machine-readable”, riusabili e facilmente condivisibili poichè sono identificati da class names standardizzati.

I Design Principles del semantic XHTML sono:

  • riutilizzare le strutture (nomi, oggetti, proprietà, valori, tipi, ecc…) già standardizzate nelle RFC (nel caso delle hCard, viene riutilizzato lo standard delle vCard)
  • usare class names basati sui nomi delle strutture originali dello standard (ad esempio quello che nelle vCard è BEGIN:VCARD, nelle hCard è class=”vcard”, così come FN diventa class=”fn”, ecc…)
  • Alcuni elementi possiedono sotto-proprietà (locality è una sotto-proprietà di adr). Queste sotto-proprietà devono essere annidate rispetto agli principali cui sono riferiti (vedi righe 5-8 dell’esempio sopra)
  • Se il formato dell’elemento corrispondente alla struttura standard originale è troppo lungo o scomodo, è possibile usare <abbr> e inserire il contenuto dell’elemento come valore dell’attributo title invece che come contenuto dell’elemento. (Per rappresentare la sotto-proprietà region – riga 7 – in formato abbreviato, avremmo potuto usare <abbr class=”region” title=”Italy”>IT</abbr>)

Per quanto riguarda il microformat hCalendar, il concetto e i design principles sono gli stessi di hCard, ma permette, seguendo la struttura definita dallo standard iCalendar, di rappresentare eventi e calendari incorporabili in pagine web e presentanti contenuto semantico riusabile e “machine-readable”.

Fonti:
http://microformats.org/
http://microformats.org/wiki/what-are-microformats
http://microformats.org/wiki/hcard
http://microformats.org/wiki/hcalendar
http://microformats.org/wiki/hresume
http://www.gmpg.org/xfn/


poshformats e microformats

ottobre 19, 2008

POSH è l’acronimo per Plain Old Semantic HTML.
Il semantic HTML è un sottoinsieme di elementi ed attributi XHTML che vengono utilizzati per scopi semantici piuttosto che per scopi presentazionali; il concetto di POSH comprende l’utilizzo del semantic HTML nella creazione di pagine web, cioè un documento (es: pagina web) è POSH se è sviluppato utilizzando certi criteri e processi che si basano sull’applicazione del semantic HTML.

I poshformats sono dei formati sviluppati in modo informale dall’autore di un documento POSH, che decide di creare un proprio vocabolario personale per i class names utilizzati. I microformats, invece, possono essere visti come un sottoinsieme dei poshformat, e sono dei formati che vengono generati seguendo “processi” e “principi” specifici. In linea di massima il concetto che sta alla base di entrambi è lo stesso, ed è quello di utilizzare un vocabolario per i class names utilizzati nelle pagine, la differenza sostanziale è che nei poshformat questo vocabolario è ad-hoc e personale, nei microformats invece il vocabolario è riusabile e formale, da questo si può comprendere l’importanza dei microformat per il semantic web.

Fonti:
http://microformats.org/wiki/posh


Sintassi per RDF: RDF/XML

ottobre 13, 2008

La sintassi utilizzata da RDF per codificare il modello a grafi è basata su XML ed è chiamata RDF/XML.
Vediamone subito un esempio. La sintassi RDF corrispondente al grafo

Esempio grafo RDF

Esempio grafo RDF per la frase "Questo blog è scritto da Simone Dezaiacomo"

è la seguente:

1. <?xml version="1.0"?>
2. <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
3.             xmlns:dc="http://purl.org/dc/elements/1.1/">
4.   <rdf:Description rdf:about="https://semanticweb30.wordpress.com">
5.       <dc:creator>Simone Dezaiacomo</dc:creator>
6.   </rdf:Description>
7. </rdf:RDF>

Vediamone il significato riga per riga.

Riga 1:
è l’XML declaration, indica che il contenuto che segue è in formato XML e in quale versione.
Riga 2:
rdf:RDF, inidica che il contenuto XML che segue rappresenta RDF.

xmlns:rdf=”http://www.w3.org/1999/02/22-rdf-syntax-ns#&#8221; , è una XML Namespace (xmlns) declaration, che specifica che tutti i tag con prefisso rdf: sono parte del namespace identificato dalla URIref riportata di seguito all’uguale.
Riga 3:
xmlns:dc=”http://purl.org/dc/elements/1.1/&#8221;, rappresenta un’altra XML Namespace declaration, questa volta per il prefisso dc:.

Queste prime 3 righe sono quindi necessarie per indicare che il contenuto è RDF/XML e per identificare i namespace che vengono usati.

Riga 4:
rdf:Description indica che da qui inizia appunto la descrizione della risorsa, che serve per identificare il soggetto della frase usando l’attributo rdf:about per specificare l’URIref del soggetto.

Riga 5:
Il tag <dc:creator></dc:creator> (in ci dc:creator è un QName) rappresenta il predicato della frase, al cui interno si trova l’oggetto (il valore literal “Simone Dezaiacomo“) che rappresenta il valore della proprietà creator.
Questo elemento è annidato all’elemento di descrizione della risorsa (riga 4), quindi indica che la proprietà descritta in <dc:creator>…</dc:creator> deve esere applicata alla risorsa identificata nell’attributo rdf:about della descrizione.

Righe 6 e 7:
Sono le chiusure dei rispettivi tag.

Per frasi multiple relative allo stesso soggetto il ragionamento sarà lo stesso, inserendo un blocco <rdf:Description>…</rdf:Description> per ogni frase da rappresentare.
E’ anche possibile rappresentare le frasi multiple in maniera abbreviata, annidandole allo stesso elemento rdf:Description; questo è corretto in quanto si riferiscono allo stesso soggetto identificato dal valore di rdf:about.
In questo modo il grafo seguente

Grafo RDF frasi multiple sullo stesso soggetto

Grafo RDF con frasi multiple

verrebbe scritto come:

1. <?xml version="1.0"?>
2. <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
3.             xmlns:dc="http://purl.org/dc/elements/1.1/">
4.   <rdf:Description rdf:about="https://semanticweb30.wordpress.com">
5.       <dc:creator>Simone Dezaiacomo</dc:creator>
6.       <dc:language>IT</dc:language>
7.       <dc:contributor rdf:resource="http://www.example.org/exblogger/
               1123"/>
8.   </rdf:Description>
9. </rdf:RDF>
 Leggi il seguito di questo post »