Resource Description Framework
ll web semantico vuole rendere disponibili tecnologie e protocolli per modellare e classificare le informazioni così che esse possano essere “comprese” da agenti software automatici. E’ un vero salto in avanti: da un web sintattico di documenti costruito dalle persone ad uso delle persone ad un web semantico costruito dalle macchine ad uso delle macchine. In questo post vi parlerò di RDF (Resource Description Framework), un modello basato sul concetto di grafo orientato etichettato. La tecnologia basata su XML è utile per scambiare dati ed integrare applicazioni che utilizzano il web come canale di comunicazione. Tuttavia XML non si presta bene ad essere utilizzato come modello generale per rappresentare sul web le relazioni tra i dati. In RDF le relazioni sono trattate come enunciati (statements) composti da soggetto, predicato ed oggetto. Ad esempio per esprimere il concetto che Mario Rossi è autore di una certa pagina web si potrebbe produrre la tripletta: Mario Rossi – Autore – URL della pagina web. Affinchè le relazioni possano essere elaborate in modo automatico è fondamentale che i singoli termini siano rappresentati ed individuati in modo univoco in tutto il web mediante un URI. In proposito può essere utile rileggere questo post.

Lo stack del Web Semantico – Fonte Wikipedia
Tra i vocabolari più diffusi ed utilizzati per rappresentare schemi concettuali ci sono:
Dublin Core (dal nome della città americana nell’Ohio) – Un sistema di metadati costituito da un nucleo di elementi essenziali ai fini della descrizione di qualsiasi materiale digitale accessibile in rete. Per esempio, tra gli elementi del vocabolario si trova http://purl.org/dc/elements/1.1/creator che si riferisce ad una persona, una organizzazione o un servizio responsabile della costruzione della risorsa.
FOAF – Un vocabolario nato per rappresentare le relazioni sociali. Qui c’è il sito di riferimento del progetto. Nella sezione docs potrete trovare documentazione ed anche il riferimento ad una utility (foaf-a-matic) che utilizzerò in seguito.
SIOC Semantically Interlinked Online Communities – Una iniziativa nata dalla volontà di integrare le informazioni della comunità online.
Non è complicato produrre manualmente un file in formato RDF a patto di conoscerne la sintassi. Per quanto riguarda FOAF esiste un servizio automatico che è possibile utilizzare per creare facilmente un file RDF attraverso il quale esprimere una relazione di conoscenza tra persone, ad esempio il fatto che Mario Rossi (di cui è possibile riportare anche informazioni personali) conosce Giorgio Bianchi. Per pubblicare dati RDF non si deve fare altro che memorizzarli all’interno di un file di testo contenuto nella document root del proprio web server. Analogamente a come gli utenti trattano le pagine web ordinarie, adeguati strumenti software possono seguire autonomamente i link ad altri file RDF e costruire così il grafo orientato etichettato che rappresenta le relazioni trovate. In alternativa è possibile navigare manualmente i documenti trovati mediante appositi browser come, per esempio Tabulator (disponibile come estensione di Firefox).

Fonte Progetto Linking Open Data
Uno degli strumenti software che ho esaminato è rdflib, una libreria python con cui si può costruire, leggere, manipolare e cambiare il contenuto ed anche il formato di un file RDF. Il suo utilizzo è abbastanza semplice: si crea un grafo, si fa il parsing dei file RDF leggendoli sia da disco che mediante protocollo HTTP e poi si applicano al grafo generato le operazioni desiderate. Un altro strumento utile è la libreria Triplify, scritta in PHP, con cui è possibile esporre dati RDF prendendoli da un database relazionale e che dispone di file di configurazione già predisposti per l’integrazione con i più diffusi strumenti come: OpenConf, Drupal, WackoWiki, WordPress, OpenJournalSystems, Joomla!, osCommerce, OMDB, phpBB, Gallery.
Sul web ci sono molti insiemi di dati interessanti e le connessioni RDF permettono di passare da un elemento all’interno di una fonte di dati agli elementi di altre fonti. Un esempio illuminante e molto avanzato che riprenderemo nel seguito è rappresentato dal sito della BBC. Il risultato della visita della sezione musica e della quick search sull’artista Sting è una normale pagina web. Tuttavia se si visualizza il codice sorgente della pagina web si troveranno i seguenti valori: type=”application/rdf+xml” href=”/music/artists/7944ed53-2a58-4035-9b93-140a71e41c34.rdf“. Cliccandoci sopra si otterrà il caricamento del file in formato RDF.
Se si aggiunge all’url nella barra degli indirizzi l’estensione .rdf e se è stata già installata l’estensione Tabulator, si potrà navigare lo stesso file come una normale pagina web. La chiave 7944ed53-2a58-4035-9b93-140a71e41c34 nella parte finale dell’url è l’identificatore URI della “risorsa” Sting. Navigando il contenuto del file RDF possiamo scoprire che, sempre mediante questo identificatore univoco, esistono connessioni ad altri siti tra Musicbrainz, Muscimoz, Myspace e Wikipedia.
Su Musicbrainz la scheda di dettaglio di Sting riporta tra gli altri dati il valore MBID = 7944ed53-2a58-4035-9b93-140a71e41c34. MBID è un identificatore univoco per l’intero database di Musicbrainz. Come riporta la documentazione tecnica reperibile sul wiki di Musicbrainz, conoscendo il valore MBID è possibile richiedere direttamente la risorsa sia utilizzando RDF che XML web service. Anche il sito Musicmoz riporta una pagina dedicata Sting in cui, visualizzandone il contenuto il XML, è possibile riscontrare un link con lo stesso ID <resource name=”musicbrainz” link=”http://musicbrainz.org/artist/7944ed53-2a58-4035-9b93-140a71e41c34.html“/>
Ecco allora che i nodi colorati in blu del grafo riportato prima assumono un significato nuovo.
Ai lettori interessati segnalo questo video di Tim Berners Lee. A quelli molto interessati segnalo anche la prima e la seconda parte di questo video tutorial. Molte organizzazioni generano i contenuti dei propri siti web attraverso pagine composte dinamicamente. E’ lecito quindi chiedersi se come si possano generare dinamicamente file RDF dai contenuti limitati senza dover pubblicare un grande unico file RDF che potrebbe portare ad inefficienze e problemi di elaborazione. Nel prossimo post vi parlerò di SPARQL, un linguaggio simile ad SQL per l’interrogazione di dati RDF.

