Clerezza – infrastruttura per le Semantic Web Applications

febbraio 22, 2010

Clerezza è un progetto Apache per lo sviluppo di una infrastruttura che permetta lo sviluppo di applicazioni realmente integrate con il Semantic Web, portando alle applicazioni web i vantaggi dell’aggregazione dei dati, allontanandosi dalla visione “desktop-application centric” delle web applications e per sfruttare la flessibilità del formato RDF:

– In RDF one can basically add any property to any resource, with RDBMS this typically requires a change of the database schema.
– With RDBMS there is no intrinsic mapping between database entities and URIs, i.e. the application has to provide this.

Reto Bachmann-Gmür – Clerezza committer

Link all’intervista di DZone a Reto Bachmann-Gmür.

Enhanced by Zemanta
Annunci

Linking Open Data e DBpedia

gennaio 25, 2009

W3C SWEO

Il Linking Open Data è un progetto del W3C SWEO che ha lo scopo di estendere il Web creando una rete di dati aperti e disponibili a tutti – offerti dall’ Open Data Movement – pubblicando in formato RDF insiemi di dati provenienti da diverse sorgenti e connettendone gli elementi definendo le relazioni che esistono tra questi, in modo da poter passare da un informazione ad un’altra a questa legata anche se appartengono a due sorgenti diverse; questa possibilità vale anche per i crawler dei motori di ricerca, facilitando il recupero delle informazioni. Questo progetto copre diversi dominii di riferimento delle risorse ed è un esempio di evoluzione verso il data-web globale, che può essere sfruttato dalle applicazioni semantiche.

Insiemi di dati del LOD

Insiemi di dati del LOD

Come possiamo vedere dal grafico sono diversi i progetti che supportano il LOD. Tra questi uno dei più rilevanti è DBpedia.

DBpedia è un progetto che recupera i dati presenti negli articoli di Wikipedia e li raccoglie strutturandoli e rendendoli disponibili sul web in formato RDF. La knowledge base di DBpedia attualmente comprende circa 274 milioni di triple RDF (fonte DBpedia.org, Novembre 2008) riferite ad elementi appartenenti a diversi dominii – persone, film, musica, luoghi, organizzazioni – e raccolte da 14 versioni localizzate di Wikipedia, che lo rendendono uno dei mattoni principali del “Web of Data”.
Gli elementi in DBpedia vengono definiti tramite gli URI nella forma

http://dbpedia.org/resource/Elemento_esempio

dove Elemento_esempio è il nome della risorsa recuperata dall’URL relativo a questa su en.wikipedia.org:

http://en.wikipedia.org/wiki/Elemento_esempio

In questo modo DBpedia può essere anche vista come un’ontologia multi-dominio (caratteristica che la differenzia notevolmente dalla maggior parte delle ontologie che trattano un dominio singolo) che definisce univocamente – tramite gli URI, appunto – diverse entità che possono essere riusate, ad esempio, in un profilo FOAF personale per descrivere un certo interesse che altrimenti non sarebbe identificabile, oppure per definire tag in maniera strutturata con Faviki.
Le risorse catalogate in DBpedia possiedono inoltre delle proprietà che le definiscono, come un abstract (nelle lingue per cui è disponibile) che le descrive, la categoria di appartenenza, le informazioni della relativa Infobox, collegamenti a pagine HTML con dbpedia:resource o foaf:homepage o a documenti RDF con owl:sameAs, coordinate geografiche.
Al di là dell’enorme quantità di dati che rende disponibile sul web, il progetto DBpedia è di grande importanza poichè permette il collegamento di queste risorse con altre provenienti da sorgenti diverse, come ad esempio gli 85000 link con il database geografico Geonames , e la pubblicazione dei dati in formato RDF ne rende possibile il riuso e fa sì che possano essere effettuate delle query SPARQL complesse sugli articoli di Wikipedia, che invece supporta solo la ricerca basata sulle keyword, utilizzando tools come SNORQL Query Explorer.

Reblog this post [with Zemanta]

OWL – Web Ontology Language

novembre 16, 2008
Layer-Cake Diagram

Layer-Cake Diagram

Il livello che si trova sopra a RDF nel Layer-Cake Diagram (rappresentazione dell’architettura del Semantic Web) è OWL: Web Ontology Language.
Prima di tutto: cos’è un’ontologia? Con questo termine si intende la descrizione delle entità presenti in un sistema e delle loro relazioni. Un’ontologia quindi non è un semplice vocabolario di termini, ma una rete di relazioni tra entità definite.
OWL è un linguaggio per definire Ontologie Web e lo scopo di queste ultime è quello di descrivere formalmente il significato dei termini utilizzati nei documenti Web.
Questo livello dell’architettura del Semantic Web è molto importante per il fatto che dà la possibilità di realizzare quel passo verso la “machine-readabilty” delle informazioni, che, come abbiamo già detto, è l’elemento chiave del Semantic Web. OWL è infatti progettato per essere usato dalle applicazioni che devono elaborare le informazioni web, piuttosto che per quelle che devono solo presentarle all’utente.
Da un punto di vista di sintassi OWL è un’estensione di RDF, ma si differenzia da quest’ultimo per il fatto che RDF è un modello per rappresentare le risorse Web e le loro relazioni tramite una sintassi definita, OWL invece fornisce un vocabolario per le classi e le proprietà delle risorse RDF e per le relazioni tra queste.
Altra caratteristica fondamentale del Semantic Web che è applicata in OWL, è il concetto di riusabilità e “open world“, nel senso che le ontologie devono poter essere riutilizzabili e combinabili, in modo da poter estendere, definendo nuove ontologie, le classi che sono già descritte in una certa ontologia preesistente.

Leggi il seguito di questo post »


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


Introduzione al Resource Description Framework (RDF)

ottobre 8, 2008

Come detto precedentemente, il semantic web ha l’obiettivo di dare alle informazioni un significato, correlarle tra loro e rendere le informazioni machine-readable. Per mettere in pratica questo concetto è necessario un modello, una tecnologia che permetta di identificare le risorse, definirne il significato e le relazioni.
Lo standard W3C per la rappresentazione delle informazioni delle risorse sul web è il Resource Description Framework (RDF), il quale fornisce quindi un framework comune per esprimere i significati delle informazioni, ma anche per poterle renderle condivisibili tra le applicazioni, facendo sì che i dati possano essere disponibili anche per applicazioni diverse da quelle per cui erano stati originariamente creati.
Questo linguaggio, inteso per rappresentare metadati delle risorse sul web (ad esempio autore, titolo o data di creazione di una pagina web), può anche essere generalizzato per rappresentare informazioni riguardo entità che non sono necessariamente recuperabili o scaricabili dal web (pagine web, file, video, ecc…), ma anche entità che possono essere semplicemente identificate sul web (come ad esempio persone, eventi o informazioni riguardanti prezzi di prodotti su un negozio on-line), rendendo di fatto rappresentabile qualsiasi elemento.

L’RDF sfrutta gli identificatori Web URIs (Uniform Resource Identifiers) per identificare gli elementi e per descriverli fa uso di proprietà e relativi valori associati. Con questi principi di base, l’RDF può rappresentare definizioni delle risorse in forma di grafi, formati da nodi e archi che rappresentano le risorse, le loro proprietà e i rispettivi valori. Questo modello a grafi è codificato in un formato che utilizza una sintassi XML-based, chiamata RDF/XML, tramite la quale diventa possibile per le macchine elaborare il modello e comprendere il significato delle descrizioni delle risorse.
Per descrivere le risorse in RDF, vengono costruite delle frasi composte da:
soggetto, la parte della frase che identifica la cosa descritta
predicato, la parte che identifica la proprietà (della cosa) che viene specificata dalla frase
oggetto, la parte che identifica il valore della proprietà
Questo tipo di struttura è la stessa che si può immaginare per una semplice frase in linguaggio naturale come:

“Questo blog è scritto da Simone Dezaiacomo”

in cui troviamo un soggetto della frase (Questo blog), un predicato, ovvero la proprietà che viene specificata (è scritto da, cioè chi ne è l’autore) e l’oggetto, ovvero il valore della proprietà (Simone Dezaiacomo).
Le frasi che descrivono le risorse in RDF non sono quindi nient’altro che semplici frasi così strutturate. Una frase di questo tipo può però, come ci si può immaginare, dare dei problemi nel caso in cui a leggerla non sia una persona, ma sia una macchina. Come fare quindi per rendere la frase machine-readable?
Per farlo sono necessari due elementi:
1) un sistema di identificatori machine-readable per rendere soggetto, predicato e oggetto identificabili univocamente
2) un linguaggio machine-readable per rappresentare la frase e scambiarle tra le applicazioni.
Nella nostra frase d’esempio, identificare univocamente il soggetto (il blog) è possibile utilizzando semplicemente l’URL, ma come identificare predicato e oggetto, che non sono risorse web e non possiedono quindi un URL?
Per farlo si usa appunto un identificatore più generico fornito dal web: l’URI (di cui gli URL sono un sottoinsieme), che ha la proprietà di poter essere creato da utenti per identificare le risorse, sia accessibili dalla rete che non (come nel caso delle persone o di concetti astratti come il possesso). Più precisamente gli identificatori utilizzati da RDF sono le URI references (URIref), ovvero identificatori formati da un URI cui è aggiunto un suffisso con caratteri UNICODE, rendendo così possibile rappresentare e definire le relazioni tra qualsiasi cosa.
Per quanto riguarda il secondo elemento fondamentale per rendere le frasi RDF machine-readable, il linguaggio, come si è accennato precedentemente RDF utilizza l’XML/RDF che definisce dei tag specifici per rappresentare le triple rendendole interpretabili correttamente dalle applicazioni scritte per farlo.

Il modello fondamentale di rappresentazione per le frasi RDF si è detto che sono i grafi RDF, che sono così rappresentati:
– nodo per il soggetto
– nodo per l’oggetto
– arco per il predicato, che unisce soggetto a oggetto

Esempio grafo RDF

Grafo RDF per la frase: "Questo blog è scritto da Simone Dezaiacomo"

Gli oggetti (che rappresentano i valori associati ai predicati) possono essere rappresentati sia tramite URIref, sia come stringhe di caratteri (dette literals, che a loro volta possono essere plain o typed). Potrebbe sembrare più intuitivo identificare gli oggetti come literals (come nell’esempio qui sopra), poichè questi rappresentano dei valori. Ma non sempre questo ragionamento è corretto, in quanto identificare gli oggetti (ma lo stesso discorso vale anche per i predicati) con le URIref è utile sia per permettere alle applicazioni di distinguere le proprietà che potrebbero essere identificate con lo stesso nome literal (es: il literal “Nome” come nome di persona o come nome di variabile) ed è utile anche per far sì che le proprietà possano essere trattate come risorse a loro volta, dando la possibilità di associare loro informazioni aggiuntive. L’utilizzo degli URIref per soggetti, predicati e oggetti è importante per lo sviluppo e l’uso di vocabolari condivisi e ad esempio per permettere la scrittura di applicazioni che si comportano in un certo modo in base al significato che viene ricavato dall’elaborazione di un certo URIref.
Per rappresentare i nodi di un grafo che sono identificati da URIref si usano delle ellissi, mentre per quelli identificati da literals si usano rettangoli.

Un altro modello di rappresentazione per le frasi RDF è quello delle triple, in cui ogni frase è scritta come una tripla ordinata formata dai 3 elementi base: soggetto, predicato e oggetto, precisamente nella forma:
<soggetto> <predicato> <oggetto>
oppure
<soggetto> <predicato> “oggetto”, se l’oggetto è literal
Per la nostra frase d’esempio, avremo quindi:

<https://semanticweb30.wordpress.com&gt; <http://purl.org/dc/elements/1.1/creator&gt; “Simone Dezaiacomo”

Per frasi multiple relative allo stesso soggetto, ogni tripla rappresenta un arco del corrispondente grafo. Quindi se ad esempio abbiamo 3 frasi RDF con lo stesso soggetto, nel grafo troveremo il nodo di partenza (soggetto) da cui si dipartono più rami che rappresentano predicati e oggetti, mentre nelle triple avremo la ripetizione del soggetto in ognuna delle 3 frasi.

Grafo RDF frasi multiple sullo stesso soggetto

Grafo RDF frasi multiple sullo stesso soggetto

Le equivalenti triple saranno:

<https://semanticweb30.wordpress.com&gt; <http://purl.org/dc/elements/1.1/creator&gt; “Simone Dezaiacomo”
<https://semanticweb30.wordpress.com&gt; <http://purl.org/dc/elements/1.1/language&gt; “IT”
<https://semanticweb30.wordpress.com&gt; <http://purl.org/dc/elements/1.1/contributor&gt; <http://www.example.org/exblogger/1123&gt;

La notazione delle triple può diventare scomoda a causa della lunghezza delle URIref utilizzate per identificare le risorse. Per abbreviarne la notazione, sono stati introdotti i QName, che sono formati da:
prefisso_assegnato_all’URI : local_name
potremmo quindi sostituire dc:creator al posto di <http://purl.org/dc/elements/1.1/creator&gt;
Quindi l’URIref completo si può ottenere dall’URI associato al QName + il local name.

Grafo RDF con QNames al posto delle URIref

Grafo RDF con QNames al posto delle URIref

Esempi di QName e URI associati:
rdf: –> URI: http://www.w3.org/1999/02/22-rdf-syntax-ns#
rdfs: –> URI: http://www.w3.org/2000/01/rdf-schema#
dc: –> URI: http://purl.org/dc/elements/1.1/
owl: –> URI: http://www.w3.org/2002/07/owl#

Utilizzando quindi URIref al posto di stringhe per identificare le risorse, RDF deve riferirsi ad un insieme di URIref come vocabolario. Spesso le URIref nel vocabolario sono organizzate in modo da essere rappresentate come insiemi di QNames con prefisso comune; cioè può essere scelta una URIref comune per tutti i termini nel vocabolario e a questa viene aggiunto il local name. In questo modo un’organizzazione può ad esempio definire un vocabolario di URIref che iniziano con un certo prefisso (http://www.example.org/terms/) per i termini che usa nelle sue attività aziendali (data-creazione, prodotto, nome-prodotto; che diventeranno local names) e un altro vocabolario che inizia con un altro prefisso (http://www.example.org/staffid) per identificare gli impiegati. RDF stesso definisce in questo modo modo il suo proprio vocabolario di termini che hanno un significato specifico in RDF, questi URIref iniziano con il prefisso http://www.w3.org/1999/02/22-rdf-syntax-ns# cui è associato il QName rdf:

RDF, trattato qui sono nei suoi aspetti base, è solo uno degli elementi dell’architettura del semantic web, che possono essere rappresentati dal “layer-cake” diagram qui di seguito.

Layer Cake Diagram - W3C

Layer Cake Diagram - W3C

Fonti:
http://www.w3.org/TR/2004/REC-rdf-primer-20040210/
http://www.w3.org/RDF/
http://www.w3.org/2001/sw/

http://www.w3.org/2001/11/IsaViz/
http://dublincore.org/documents/dces/