RDF Triple Store: Sesame - Corso di Laurea in Ingegneria Informatica

Scuola Politecnica e delle Scienze di Base
Corso di Laurea in Ingegneria Informatica
Elaborato finale in Basi di Dati
RDF Triple Store: Sesame
Anno Accademico 2014/2015
Candidato:
Ciro Guida
matr. N46/000744
Ai miei genitori per avermi costantemente sostenuto Indice
Introduzione
1
Capitolo 1: Il Web Semantico
1.1 Introduzione
3
1.2 Architettura del Web Semantico
4
1.3 XML
9
1.4 RDF
11
1.4.1 RDF Data Model
12
1.4.2 RDF Schema
14
1.5 OWL
14
Capitolo 2: Panoramica sui database Triple Store
2.1 Introduzione
16
2.2 Database Triple Store
16
2.3 SPARQL
18
Capitolo 3: Sesame
3.1 Introduzione
21
3.2 Architettura
21
3.3 Il Repository Abstraction Layer
23
3.3.1 Stacking RAL
23
3.4 Il Repository
25
3.5 RQL Query Module
26
3.6 RDF Administration Module
27
3.7 RDF Export Module
27
3.8 On-To-Knowledge
28
Conclusioni
29
Bibliografia
31
Introduzione
Al giorno d'oggi Internet è uno strumento di cui le persone non possono farne più a meno
(o quasi), basti pensare alle ore trascorse davanti ad un pc o con uno smartphone tra le
mani ad eseguire ricerche, scambiare messaggi, usufruire di servizi in streaming, ecc.
Eppure Internet, così come lo conosciamo, è nato “quasi” per puro caso: nel 1964 un
progetto militare ad opera di ricercatori della N.A.S.A dà vita ad una primordiale forma di
Internet, che in origine venne chiamata ARPANET. L'obiettivo era quello che in caso di un
conflitto mondiale (si era in piena guerra fredda tra Unione Sovietica e Stati Uniti), di
salvaguardare la comunicazione tra varie postazioni dislocate sul pianeta
anche in
mancanza di una parte della rete telefonica internazionale. Il criterio fondamentale era
quindi quello di "bypassare" un tratto della rete telefonica anche circumnavigando l’intero
pianeta per connettere tra loro due punti di comunicazione. Successivamente il progetto
militare fu abbandonato dal Pentagono a causa dell'intrusione di un tecnico molto esperto
che si impossessò di documenti “top secret” che inconsapevolmente lì divulgò. Nel 1985 il
progetto militare fu privato del segreto di Stato e lasciato a libero utilizzo.
Attualmente Internet è un mondo sconfinato e basti pensare che solo una piccolissima
parte è raggiungibile mediante un ipertesto. E' utilizzato specialmente come strumento di
ricerca e condivisione di informazioni. Dato il numero elevato (quasi incommensurabile)
di informazioni reperibili in Rete, è importante sapere dell'esistenza di strumenti, quali
browser e motori di ricerca, capaci di effettuare ricerche attraverso semplici parole chiavi.
E' interessante notare come, data la mole straordinaria di dati che circolano sul Web, una
buona percentuale di utenti durante le proprie ricerche, non superi le primissime pagine
suggerite. Questo perché i motori di ricerca (come Google o Yahoo!), non sono in grado di
poter percepire il significato di una parola chiave all'interno del contesto in cui si trovano,
visto che gli algoritmi di ricerca utilizzati sono basati, ad esempio, sulla popolarità della
pagina e non sull'aspetto sintattico delle informazioni.
1
A tutto ciò si è voluto porre rimedio, cercando di riorganizzare la Rete in chiave
semantica. Negli ultimi anni molte aziende proprietarie di motori di ricerca stanno
investendo i loro sforzi cercando di creare sistemi in grado di poter effettuare ricerche
sempre più raffinate e precise. Tutto ciò è alla base del cosiddetto Web Semantico.
In questo elaborato tratteremo i principali concetti alla base del Web Semantico, dandone
una visione sintetica(data la vastità dell'argomento) ma allo stesso esauriente.
Successivamente vedremo quali tecnologie possono essere utilizzate affinché la Rete
diventi un “mondo semantico”.
2
Capitolo 1: Il Web Semantico
1.1 Introduzione
Il World Wide Web, o semplicemente Web, fu progettato come una enorme libreria
costituita da elementi che in qualche modo possono essere collegati tra loro attraverso link
ipertestuali, senza i quali gran parte delle funzionalità e della praticità offerta da Internet
verrebbero a mancare allontanando l'utente meno esperto.
Poiché la maggior parte delle informazioni contenute in Rete è adatta alla semplice
consultazione, l'ostacolo più grande all'espansione del Web è dato dalla difficoltà di agenti
software come browser e motori di ricerca, di poter interpretare i dati nella maniera più
corretta possibile. Ad esempio quando un motore di ricerca salva una pagina, non distingue
se la parola mobile si riferisce ad un oggetto di arredamento o ad un'apparecchiatura
tecnologica come un telefono cellulare, oppure se con programma ci si riferisce ad una
trasmissione televisiva o ad un certo software (a maggior ragione se il contenuto della
pagina Web è rappresentato da un documento multimediale contenete ad esempio audio e
video), quindi non sarebbe in grado di accettare domande complesse e fornire risposte
esaustive all'utente finale. A tale scopo è nata la necessità di introdurre una struttura
semantica nei contenuti del Web che espliciti il significato dei dati, in modo tale che le
macchine siano in grado di elaborare i dati e non solo di visualizzarli.
Il Web Semantico non è una sostituzione del Web così come concepito negli Anni '80, ma
un' evoluzione della sua prima forma, di cui T. Berners-Lee afferma [3] sostanzialmente
che: “le macchine diventano capaci di analizzare tutti i dati sul Web, il contenuto, i link e
le transazioni tra persone e computer. [...] I meccanismi quotidiani di commercio,
burocrazia e vita saranno gestiti da macchine che parleranno a macchine, lasciando che
gli uomini pensino soltanto a fornire l'ispirazione e l'intuito[...]. Il Web sarà un luogo in
cui l'improvvisazione dell'essere umano e il ragionamento della macchina coesisteranno in
una miscela ideale e potente”
3
Nei prima anni dalla sua invenzione il Web (chiamato anche Web 1.0) è stato un medium di
sola lettura dove gli utenti erano semplicemente spettatori in grado di accedere ad una
grande libreria di informazioni. Tra la fine del vecchio e l'inizio del nuovo secolo, con la
nascita di Blog e Social Network i navigatori hanno acquisito la possibilità di divenire
parte attiva di questo mondo con la possibilità di pubblicare informazioni ed opinioni: il
cosiddetto Web 2.0. Infine negli ultimi anni, le informazioni presenti sul Web stanno
diventando comprensibili ai calcolatori in modo tale da poter essere collegate tra loro e
riutilizzate sotto altre forme (dando vita a nuove informazioni) tramite strumenti
automatici [9].
Dunque un Web così come concepito, e come chiarito in precedenza, è ad uso e consumo
dei soli agenti umani che tramite la loro esperienza e alla capacità di evocazione delle
parole chiavi si orientano su di esso. La capacità di avere a disposizione macchine (dicasi
agenti intelligenti) in grado di comprendere il significato delle informazioni presenti in
Rete e dunque di guidare l'utente verso l'informazione ricercata oppure di sostituirsi a lui in
alcune operazioni (create senza ricorrere all'intelligenza artificiale ad alti livelli) è alla base
del concetto di Web Semantico.
Un agente intelligente [21], per definirsi tale, dovrebbe avere le seguenti caratteristiche:
•
comprendere i testi presenti in Rete;
•
creare dei percorsi in base alle informazioni fornite dall'utente;
•
spostarsi di sito in sito collegando logicamente elementi diversi
dell'informazione richiesta;
•
verificare l'attendibilità delle informazioni attraverso ricerche incrociate o in
dipendenza del contesto.
Le possibilità offerte dal Web Semantico sono tante e tali che al giorno d'oggi sono ancora
in fase di approfondimento, per questo motivo più che di tecnologia si parla di visione del
Web Semantico.
1.2 Architettura del Web Semantico
Berners-Lee ipotizza, in un esempio divenuto un classico della letteratura sul Web
4
Semantico, un possibile scenario di collaborazione uomo-macchina sul Web [3]: Lucy ha
la necessità di prenotare una visita specialistica per sua madre. Dopo aver istruito il suo
agente (che possiamo definire in modo semplicistico un programma capace di eseguire
compiti definiti da un utente in modo autonomo, ovvero senza il controllo dell'utente
stesso ) circa le proprie esigenze (tipo di visita specialistica, massima tariffa consentita,
distanza dalla casa della madre, date disponibili, etc...) delega ad esso il compito di
ricercare sul Web in modo del tutto autonomo quali soluzioni sono disponibili. Una volta
che l'agente avrà individuato le possibili alternative, Lucy avrà l'unico compito di
scegliere la più adatta e darà il comando al suo agente di prenotare in sua vece.
La possibilità di avere computer in grado di accedere a collezioni strutturate di
informazioni e di portare a termine operazioni di ragionamento e “comprensione”
automatici attraverso l'utilizzo di regole di inferenza logica (si trae una conclusione da un
insieme di fatti) e semantica è alla base della sfida lanciata dal Web Semantico.
Affinché le macchine possano avere un approccio semantico è necessario che le
informazioni presenti sul Web siano corredate di una struttura dati composta da:
•
metadati (HTML) o annotazioni (XML, RDF) per indicare i collegamenti
semantici;
•
schema (o ontologia) del dominio per ragionare su tali collegamenti, estraendo le
informazioni di interesse e/o trovando nuovi collegamenti .
Lo scenario futuro previsto dal Web Semantico vuole riprendere in parte quello già
previsto per le basi di dati: quando si interroga una base dati è possibile effettuare delle
ricerche molto raffinate, come ad esempio “quali autori hanno pubblicato almeno due
studi sul Web Semantico”. Questo perché esiste uno schema della base dati in grado di
consentire all'utente di imporre precise relazioni (almeno due studi sul Web Semantico) e
tali relazioni sono stabilite fra concetti (autore e studio) e non tra le parole chiavi (la
stringa autore e la stringa studio), cioè esiste un modello ed un insieme di regole che
stabiliscono come debbano essere organizzati i dati.
Il Web Semantico è un ambiente dichiarativo, e in particolare la semantica dei dati
consiste nel fornire alla macchina informazioni in modo tale che i dati possano essere
5
interpretati correttamente, eventualmente convertiti.[1]
Vista la necessità di garantire una visione sintetica ma allo stesso tempo “modulare” del
problema, la struttura del Web Semantico può essere vista come un diagramma piramidale,
dove ciascun livello racchiude in sé le metodologie e i linguaggi che caratterizzano quel
particolare standard. Tale schema può essere suddiviso in 3 livelli:
•
dati gestiti tramite XML;
•
metadati che rappresentano le “informazioni sui dati” tramite RDF;
•
ontologie per la semantica di dati e metadati tramite specifici linguaggi.
Fig. 1: Architettura Web Semantico
Analizziamo ora il diagramma più nel dettaglio, con una visione su di esso dal basso verso
l'alto:
•
Unicode [14], come sistema di codifica delle informazioni che assegna un numero
univoco sotto forma di stringa binaria ad ogni carattere, indipendentemente dalla
piattaforma informatica, dal programma e dalla lingua utilizzata nonché simboli
(matematici, chimici, ideogrammi, alfabeto Braille, etc...), ed URI [10](Uniform
6
Resource Identifier) che garantisce l'identificazione univoca della risorsa, tramite
una stringa, di una risorsa ad esempio Web;
•
XML [12], (eXtensible Markup Language) meta-linguaggio di markup che fornisce
un insieme di regole sintattiche per modellare la struttura di documenti e dati
quindi la possibilità di crearsi un proprio linguaggio di markup (ampia
interoperabilità dei dati), XML Schema, che fornisce la possibilità di creare
vocabolari XML ovvero definire la grammatica e la struttura soggiacenti ad un
documento XML, e Namespace, insieme di attributi e/o nomi identificati da un
codice univoco in modo tale da poter essere distinti da altri attributi e/o nomi di
altri namespaces [20];
•
poiché XML non fornisce una corretta interpretazione dell'informazione semantica,
occorre risalire al livello RDF [1] (Resource Description Framework) che fornisce
un insieme di regole per la codifica, lo scambio e il riutilizzo di metadati strutturati
e consente l'interoperabilità tra applicazioni attraverso lo scambio di informazioni
“machine-understadble”. Tramite il linguaggio RDF è possibile definire qualsiasi
oggetto, identificato univocamente mediante un URI, come risorsa RDF. L'unità
base per la rappresentazione della informazione è lo statement, una tripla costituita
da Soggetto – Predicato – Oggetto, dove il soggetto è una risorsa, il predicato è una
proprietà e l'oggetto è un valore.
Tali descrizioni vengono combinate in un
vocabolario definito dal RDF Schema;
•
per la mancanza di una semantica formale da parte di RDF, ragion per cui non è
possibile descrivere le risorse in maniera dettagliata, bisogna salire ulteriormente
per arrivare al livello delle ontologie (denominazione [22] formale di tipi , proprietà
e di interrelazioni tra le varie entità di un particolare dominio del discorso), che si
occupa di conciliare le “infinite visioni del mondo” cioè della condivisione e della
conciliazione dei diversi punti di vista. Poiché un' ontologia formale è utopistica,
nell'ambito del Web Semantico, si stanno sviluppando ontologie provenienti dal
basso ovvero emergenti dal senso comune e dalla negoziazione dei significati.
Poiché ciascuna ontologia si riferisce ad un certo dominio di interesse, è necessario
7
una certa interoperabilità dei vari sistemi ontologici generati, garantita solo
mediante una standardizzazione dei linguaggi descrittivi che governano tali
processi . Per quanto riguarda
il Web Semantico, il W3C (World Wide Web
Consortium) ha messo a disposizione un linguaggio per la definizione di ontologie
strutturate e basate sul Web chiamato OWL (Web Ontology Language).
In seguito, in questa trattazione, daremo un breve approfondimento per quanto riguarda
XML, RDF ed OWL, ma prima una piccola panoramica sugli ultimi livelli
dell'architettura, di cui si stava parlando prima, ancora in fase di sviluppo che potrebbero
fornire la via per una rappresentazione ordinata ed efficiente della conoscenza on-line:
•
Unifying Logic, Proof e Trust sono i nomi degli strati non ancora sviluppati e sui
quali si hanno ancora idee abbastanza incerte. A questi livelli dovrebbe risiedere
l’intelligenza automatica (o se vogliamo artificiale) e l’attendibilità del Web
Semantico. Il livello più alto tra i tre strati è rappresentato da Trust (Fiducia) che,
dato il grande quantitativo di informazioni presenti in Rete, ha il compito di
dividere i dati in affidabili o non affidabili. L’affidabilità dei dati può essere palese
oppure potrebbe essere dedotta da parte di agenti intelligenti, a partire dai dati
presenti. Nel caso di affidabilità inferita ,cioè dedotta a partire da una o più
premesse e per via logica arrivare ad una conclusione, è necessario poter risalire ai
meccanismi che hanno portato a stabilirne la validità. A tale necessità risponde il
livello Proof (Prova) che dimostra quale sia stata la logica sottostante a un dato
ragionamento e le relative conclusioni. Per essere in grado di fare questo, la Prova
si serve della logica; quest'ultima, infatti, si pone al livello sottostante, chiamato
Unifying Logic o Logica Unificante. Questa deve rispondere a due necessità:
validare la prova e permettere di definire e descrivere l’informazione stessa. Le
caratteristiche di questo linguaggio logico non sono ancora state definite con
precisione. Entro il progetto del Web Semantico, nonostante questa vaghezza, la
Logica ne costituisce il cuore pulsante. In particolare, a questo livello dovrebbe
essere possibile derivare la conoscenza elaborata e prodotta (quindi dedotta) da
8
affermazioni esistenti;
•
ancora più incerto risulta essere lo strato delle applicazioni e delle interfacce utenti
(User Interface & Applications) e quello della crittografia (Crypto); il primo, User
Interface & Applications, dovrebbe essere costruito sulla base dell’insieme delle
tecnologie sottostanti. Il secondo, includerebbe la crittografia e la firma digitale.
Crypto rappresenterebbe un tassello importante per il raggiungimento di buoni
livelli di affidabilità nel mondo del Web. Il livello di firma digitale potrebbe essere
utilizzato, per esempio, per certificare la provenienza delle ontologie oltre che dei
dati (strutturati).[16]
1.3 XML
Attualmente il Web è un enorme contenitore di informazioni e l'utilizzo di un linguaggio
come HTML (HyperText Markup Language), che assieme ad HTTP (HyperText Transfer
Protocol) usato per la trasmissione delle informazioni basata sul modello client-server, ne
ha sicuramente favorito lo sviluppo. Poiché si tratta di un linguaggio per la semplice
formattazione grafica dei documenti (nel gergo si parla di informazioni “human-readble” e
“machine-readble”) che non permette un approccio semantico, è nata la necessità di
sviluppare linguaggi che consentano il recupero intelligente dei dati e di organizzarli in
maniera efficiente dal punto di vista logico e semantico. A tale scopo si pone un
linguaggio derivante da SGML (Standard Generalized Markup Language), chiamato XML
– eXtensible Markup Language – che esplicita la struttura di un documento, dal punto di
vista sintattico, attraverso marcatori (detti anche tag) che rendono le informazioni
contenute in esse comprensibili anche alle macchine.
A differenza di HTML, il quale possiede un certo insieme predefinito di etichette
utilizzabili (standardizzate peraltro da un organismo internazionale, il Web Consortium),
in XML l'autore ha la libertà di creare dei nuovi marcatori in base alle esigenze dei dati da
descrivere: per tale motivo si parla di metalinguaggio. Per autore si intende un insieme di
soggetti interessati alla distribuzione di documenti XML che descrivono una certa
tipologia semantica e che concordano insieme una struttura comune da adottare(vedasi
9
XML Schema).
Un documento XML può essere visto come una struttura logica ad albero dove,
necessariamente, esiste un elemento definito root element (nodo radice) che a sua volta
può contenere altri elementi, i nodi foglia. Ad ogni elemento dell'albero possono essere
associati degli attributi, informazioni che ne descrivono le proprietà (potenzialmente in
numero illimitato). Di seguito si riporta un esempio di struttura logica di un documento
XML
Fig.2: Diagramma documento XML
La rappresentazione fisica del documento XML visto prima può essere la seguente (ogni
elemento è caratterizzato da un tag di apertura ed uno di chiusura ):
<?xml version="1.0"?>
<books>
<book>
<author>Carson</author>
<price format="dollar">31.95</price>
<pubdate>05/01/2001</pubdate>
</book>
<pubinfo>
<publisher>MSPress</publisher>
<state>WA</state>
</pubinfo>
</books>
La sintassi di un documento XML passa anche attraverso la definizione dei suoi due
10
componenti principali:
•
XML Schema che permette di definire la struttura, il contenuto e la semantica di
documenti XML. Consente una tipizzazione dei dati sistematica, ovvero permette di
definire un vocabolario XML che può essere utilizzato per descrivere documenti
XML facendo ricorso sempre alla stessa sintassi. Documenti conformi allo standard
possono essere convalidati come schemi validi;
•
Namespace XML cioè una raccolta di nomi identificati da un URI, utilizzata nel
documento XML, nel momento in cui ci si riferisce ad un certo elemento,
eliminando il rischio di ambiguità.
Non andremo oltre nella descrizione di XML, ma una piccola panoramica su di esso era
necessaria poiché RDF ed OWL , cuore dell'architettura del Web Semantico, sono
linguaggi di markup derivanti proprio da esso. Per approfondimenti si può far riferimento
a [12] .
1.4 RDF
La necessità di utilizzare metadati affinché il Web sia uno strumento di “automazione dei
dati”, ha portato a definire, per questi, convenzioni per la semantica, la sintassi e la
struttura. La semantica dei metadati viene definita dalle singole comunità interessate alla
descrizione delle loro specifiche risorse. La sintassi facilita l'utilizzo e lo scambio di
metadati tra applicazioni diverse. La struttura, invece, può essere definita come un vincolo
formale sulla sintassi cioè per dare una rappresentazione consistente della semantica.
A tale scopo si pone RDF [17] – Resouce Description Framework – come base per la
codifica, lo scambio e il riutilizzo di metadati strutturati, consentendo, inoltre,
interoperabilità tra applicazioni che si scambiano sul Web informazioni “machineunderstadble”. Figlio del formalismo XML, è stato proposto dal W3C alla fine degli anni
'90 e nel 2014 è stata pubblicata una nuova specifica (RDF 1.1).
Con RDF è possibile ad esempio descrivere il contenuto di una pagina Web, implementare
agenti intelligenti per lo scambio di conoscenza, stabilire proprietà intellettuali delle
11
singole pagine , contribuire alla creazione di un Web of Trust per il commercio elettronico,
ecc.
Dunque RDF non descrive la semantica, ma mette a disposizione una base comune per
poterla esprimere, permettendo di definire la semantica dei tag XML (infatti XML
definisce solo l'organizzazione dei dati all'interno di una risorsa web).
RDF è costituito da due componenti:
• RDF Model and Syntax che definisce il modello di dati RDF e la sua codifica
XML, senza definire alcun livello di gerarchia o di relazione
• RDF Schema che permette di definire specifici vocabolari per i metadati e creare
nessi tra oggetti
Quindi da una parte avremo i dati, dall'altra uno schema che definisce come i dati si
strutturano e come sono in relazione fra loro; c'è bisogno anche di un livello intermedio in
cui tenere traccia di come un dato specifico (istanza) può essere espresso a partire dallo
schema.
Per concludere la panoramica su RDF daremo uno sguardo generale al Data Model e allo
Schema definito. Per ulteriori approfondimenti il lettore è invitato a consultare [17].
1.4.1 RDF Data Model
RDF si serve di un preciso modello – RDF Data Model – per la descrizione di un qualsiasi
oggetto; per ogni oggetto vengono specificati 3 componenti:
•
risorsa, identificabile (univocamente) mediante un URI o un anchor identifier,
descritta attraverso un'espressione RDF. Ogni risorsa RDF può essere inquadrata ad
esempio in una pagina Web, in un'intera collezione di pagine Web o addirittura in
un oggetto non direttamente accessibile via Web (libro, dipinto,...);
•
proprietà per definire una specifica caratteristica o attributo di una risorsa; una
proprietà può anche descrivere relazioni con altre risorse. Ogni proprietà possiede
un proprio significato, definisce i valori ammissibili, il tipo di risorse che può
descrivere e le relazioni che possono instaurarsi con altre proprietà;
•
asserzione costituita dall'insieme di una risorsa, una proprietà e uno specifico
12
valore per quella proprietà e descrive le caratteristiche di una risorsa e le relazioni
con altre risorse. Costituisce, dunque, una tripla composta da un soggetto (risorsa),
un predicato (proprietà) ed un oggetto (valore). L'oggetto di un' asserzione può
essere un qualsiasi tipo primitivo definito da XML oppure un'altra risorsa.
Graficamente, ognuna delle triple costituenti la struttura di base di ogni espressione RDF
viene rappresentata mediante grafo etichettato e orientato, in cui le risorse vengono
identificate come nodi (graficamente delle ellissi), le proprietà come archi orientati
etichettati, e i valori corrispondenti a sequenze di caratteri come rettangoli.
Fig.3: Grafo triple RDF
Poiché un grafo RDF non è comprensibile alle macchine, è necessario un processo di
serializzazione che converta un oggetto in un form in grado di essere trasportato (es.
HTTP). Le principali serializzazioni[2] per un grafo RDF sono le seguenti:
•
XML: il grafo RDF è serializzato mediante sintassi XML;
•
N-Triple: ogni espressione RDF viene serializzata in forma soggetto-predicatooggetto;
•
N3: si serializza il grafo, descrivendo una per volta, le risorse e tutte le sue
proprietà.
13
1.4.2 RDF Schema
Affinché si possa provvedere allo scambio di metadati, RDF necessita di una sintassi. A
tale scopo il W3C ha messo a disposizione XML come sintassi di scambio RDF e
permettere attraverso XML Namespace l’associazione delle proprietà con lo schema RDF
che le definisce.
A differenza di XML Schema, che vincola la struttura del documento stesso, RDF Schema
fornisce informazioni utili alla sua interpretazione. In particolare permette di costruire
vocabolari specifici per la descrizione di un insieme di proprietà, eventualmente vincoli
sul dominio e sui singoli valori.
In RDF Schema è definito il concetto di classe, ma a differenza dei linguaggi di
programmazione orientati agli oggetti (come Java e C#), una classe viene descritta in
termini delle risorse a cui si applicano.
Una particolarità offerta da RDF Schema è la possibilità di estendere una versione
precedente di un certo vocabolario senza ridefinire una gran mole di concetti. Per evitare
problemi di ambiguità, ogni RDF Schema deve essere identificato attraverso un certo URI
pur trattandosi dell'estensione di un altro Schema.
1.5 OWL
Le specifiche fino ad ora trattate, XML ed RDF, hanno assicurato senz'altro un passo
fondamentale nello sviluppo del Web Semantico. XML ha contribuito ad una maggiore
interoperabilità sintattica, assicurando dunque una sintassi di superficie per la
rappresentazione di dati anche molto diversi tra loro, mentre RDF una maggiore
interoperabilità semantica che possa permettere alle macchine di interpretare al meglio il
significato di un oggetto all'interno di una risorsa web. Inoltre abbiamo visto come con
RDF Schema sia possibile costruire dei vocabolari, utili alla descrizione di un insieme di
proprietà di una particolare risorsa.
Poiché con RDF Schema non è possibile esprimere relazioni più complesse, quali unione,
14
cardinalità, uguaglianza, ecc., è necessario aggiungere più vocabolari per esprimere classi
e proprietà. Per esprimere tutto ciò bisogna risalire al livello delle ontologie e servirsi del
linguaggio OWL [7] – Web Ontology Language – diviso in tre sottolinguaggi differenti
usabili a seconda delle esigenze:
•
OWL Lite: supporta quegli utenti che necessitano in primo luogo di una gerarchia di
classificazione e di vincoli semplici ,ad esempio esso consente solo valori di
cardinalità 0 o 1 e non permette di utilizzare contemporaneamente la sintassi OWL
e la sintassi RDF. Una nuova classe può essere definita da zero oppure partendo da
altre due classi, ma solamente con il costrutto IntersectionOf;
•
OWL DL: supporta quegli utenti che vogliono la massima espressività, pur
mantenendo la completezza e la decidibilità. OWL DL comprende tutti i costrutti
del linguaggio OWL, ma può essere utilizzato solo in determinate restrizioni (per
esempio, mentre una classe può essere una sottoclasse di molte classi, una classe
non può essere un'istanza di un'altra classe). OWL DL permette di definire le classi
in maniera più complessa utilizzando i costrutti quali UnionOf, ComplementOf,
IntersectionOf e inoltre non esistono limiti sulla cardinalità delle proprietà.
L’aggettivo “DL” è dovuto alla corrispondenza del linguaggio con la “Description
Logic” (logica descrittiva) che è un campo della ricerca che studia le logiche che
formano la base formale dell’OWL;
•
OWL Full: è pensato per gli utenti che vogliono la massima espressività e la libertà
sintattica di RDF senza le garanzie computazionali. Per esempio, in OWL Full una
classe può essere trattata contemporaneamente come un insieme di individui e
come un individuo a sé stante. OWL Full permette un'ontologia di aumentare il
significato del vocabolario predefinito (RDF o OWL). E 'improbabile che qualsiasi
software di ragionamento sarà in grado di sostenere un ragionamento completo per
ogni caratteristica di OWL Full.
15
Capitolo 2: Panoramica sui database Triple Store
2.1 Introduzione
Come da titolo ci dobbiamo occupare di Sesame, che anticipiamo subito, è un framework
open-source per lo stoccaggio di dati RDF. Prima di parlare di tutto ciò è necessario un
passaggio intermedio, cioè introdurre i concetti essenziali sui database Triple Store e
SPARQL.
2.2 Database Triple Store
Un Triplestore [8] è un framework usato per lo stoccaggio e l'interrogazione di dati RDF, e
fornisce i meccanismi essenziali all'interrogazione e memorizzazione di grafi RDF.
Ricordiamo ancora che un dato RDF è una tripla del tipo soggetto-predicato-oggetto.
Lo sviluppo di framework per il trattamento di dati RDF ha avuto inizio nei primi anni
2000 con il rilascio di Jena e Sesame, fino ai nostri giorni di cui ne ricordiamo alcuni,
quali: Garlik JXT (proprietario e non distribuito), AllegroGraph e BigOWLIM (distribuiti
commercialmente), Mulgara, Sesame Native, Kowari, Jena SDB(gratuiti ed opensource),ecc.
In base alla loro implementazione i database triplestore si classificano in:
•
in-memory: poiché lo stoccaggio dei grafi RDF avviene in memoria centrale, tali
triplestore sono dotati di un'elevata velocità di elaborazione . Di contro, come per
un qualsiasi calcolatore, a causa delle ridotte capacità di tali memorie (visti gli
elevati costi per una sua produzione) non è possibile immagazzinare una gran mole
di dati, ma triplestore del genere possono risultare utili ad esempio per il caching
dati da siti remoti, oppure ottimizzati ad eseguire inferenze su database RDF
persistenti. A titolo esemplificativo di triple store in-memory, possiamo citare
TripleRush[4] progettato in modo tale da avere grafi efficienti, e che estrapoli i dati
il più velocemente possibile anche se essi risiedono su grafi molto estesi.
16
•
native: triplestore che offrono la memorizzazione di grafi RDF direttamente su una
propria implementazione del database (le informazioni risiedono sul file system).
Grazie ad un'ottima velocità di caricamento dei dati dalla memoria secondaria e alla
capacità di trattare in maniera efficiente dati RDF, negli ultimi anni stanno
riscuotendo un notevole successo;
•
non-native, non-memory: triplestore che essendo eseguiti su database relazionali,
usufruiscono dei loro meccanismi di archiviazione e recupero dati. Si ricordi ad
esempio Jena SDB che può essere accoppiato a database relazionali come MySql,
Oracle, PostgreSQL.
Su quest'ultima categoria di triplestore bisogna chiarire un aspetto. Poiché la
memorizzazione di dati RDF viene fatta in tabelle relazionali, è necessario l'utilizzo di uno
dei seguenti schemi [2]:
•
generic Schemas: il database è composto da un'unica tabella di campi soggetto,
predicato e oggetto, che rispecchia in pieno la natura della tripla RDF. Inoltre vi è il
vantaggio che l'aggiunta di nuove classi e proprietà all'ontologia, può essere
effettuata semplicemente inserendo nuove righe nella tabella. Di contro vi è il fatto
che inserire tutta l'ontologia in un'unica tabella, non dà la possibilità di avere una
visione gerarchica delle varie classi. Inoltre eseguire query molto complesse
richiede un elevato numero di self-join, specie se il database è estremamente
popolato;
•
ontology-specific Schemas: i dati non risiedono più in una sola tabella, come sopra,
ma lo schema del database riflette le proprietà stesse dell'ontologia. In particolare si
può far in modo che per ogni classe dell'ontologia esista una tabella(one-table-forclass schema), oppure una tabella per ogni proprietà dell'ontologia (one-table-forproperty schema). Nel primo caso ogni tabella sarà costituita dai seguenti campi: id
dell'istanza, nome della classe ed una o più colonne per le varie proprietà. Lo
svantaggio di tale approccio è che se cambiasse l'ontologia bisognerebbe rivedere
tutte le tabelle. Nel secondo caso, invece, ogni tabella contiene i campi soggetto e
17
oggetto. Lo svantaggio di tale approccio è che per query molto complesse vengono
effettuati un numero elevato di join tra le tabelle proprietà;
•
hybrid Schemas: combina i vantaggi delle prime due soluzioni.
2.3 SPARQL
Assodato che uno statement RDF è una tripla del tipo soggetto-predicato-oggetto, il
classico linguaggio di interrogazione SQL – Structured Query Language – risulta poco
adatto ad ispezionare intere collezioni di dati RDF (coinvolgerebbe un numero enorme di
tabelle). A tale scopo è stato proposto SPARQL – Simple Protocol And RDF Query
Language – dallo SPARQL Working Group del W3C.
Il linguaggio di query SPARQL è strettamente legato alle seguenti specifiche:
•
SPARQL Protocol for RDF che definisce le modalità di interrogazione e ricezione
dati da remoto;
•
SPARQL Query Result XML Format che definisce il formato di un documento XML
contenente i risultati di query quali SELECT ed ASK.
Di seguito daremo solo un breve assaggio di ciò che concerne SPARQL; se il lettore è
interessato ad approfondimenti può consultare [18].
Pur essendo progettati per scopi diversi, SPARQL e SQL hanno una notevole somiglianza.
Se pensassimo ad un'asserzione RDF del tipo
Soggetto
Predicato
Oggetto
id744
facoltà
N46
è facilmente traducibile come segmento di riga della tabella relazionale di tipo “chiave–
nome colonna– valore colonna”
Codice
Facoltà
...
744
N46
...
18
dunque è possibile tradurre espressioni SPARQL in espressioni SQL [11], permettendo
così a chi ne fa uso di immagazzinare i propri dati RDF in database relazionali e di
scrivere le query, a seconda dei casi, in SQL oppure in SPARQL.
Vediamo ora alcune caratteristiche sintattiche tipiche del linguaggio in questione.
SPARQL adotta la sintassi Turtle, un'estensione di N-Triples, alternativa estremamente
sintetica e intuitiva al tradizionale RDF/XML.
Si considerino le seguenti triple RDF, che saranno usate per mostrare degli esempi
successivamente:
@prefix exp: <http://example.org/exp/>
@prefix: <http://example.org/esempio/>
:A_Multimedia_Recommender_System exp:autore “Vincenzo Moscato”.
:A_Multimedia_Recommender_System exp:anno 2013.
:The_Semantic_Web exp:autore “Tim Berners-Lee”.
:Elaborato_Sesame exp:autore "Ciro Guida".
Le asserzioni rispecchiano in pieno la natura di una tripla RDF, in particolare SPARQL le
organizza secondo il costrutto “triple pattern” nella forma:
?subject ?predicate ?object
dove le variabili contrassegnate da “?” denotano l'incognita dell'interrogazione (in
particolare “?predicate” funge da costante nel nostro esempio).
Prefissi e namespace denotati dalla clausola “@prefix”.
Ecco un esempio di query SPARQL:
PREFIX exp: <http://example.org/exp/>
SELECT ?titolo ?autore ?anno
FROM <http://exp.com/listaexp.ttl>
WHERE {?titolo exp:autore ?autore.
?titolo exp:anno ?anno.
}
Possiamo notare molte affinità con una query SQL, in particolare la clausola FROM indica
il dataset da cui prelevare le informazioni. Il risultato sarà il seguente:
19
Titolo
Autore
Anno
A_Multimedia_Recommender_System
Vincenzo Moscato
2013
Nell'esempio precedente sono state restituite tutte le triple dotate dei termini richiesti (titolo, autore,
anno). È possibile riformulare la query in modo più elastico, prevedendo l'eventuale assenza di
alcuni termini:
PREFIX exp: <http://example.org/exp/>
SELECT ?titolo ?autore ?anno
FROM <http://exp.com/listaexp.ttl>
WHERE {?titolo exp:autore ?autore.
OPTIONAL{?titolo exp:anno ?anno.}
}
Il secondo pattern è dichiarato opzionale: l'informazione è aggiunta al risultato solo se disponibile,
altrimenti le variabili compariranno prive di valore (unbound). Risultato della query:
Titolo
Autore
Anno
A_Multimedia_Recommender_System
Vincenzo Moscato
2013
The_Semantic_Web
Tim Berners-Lee
Elaborato_Sesame
Ciro Guida
20
Capitolo 3: Sesame
3.1 Introduzione
Dopo aver introdotto i principali concetti alla base del Web Semantico e dei database
triplestore, possiamo passare all'argomento principale di questo elaborato: Sesame.
Sesame[13] è un framework scritto in Java per l'elaborazione e la gestione dei dati RDF .
Ciò include la creazione , l'analisi , la conservazione ,l'inferenza e l'interrogazione su tali
dati. Offre una API (Application Program Interface) facile da usare che può essere
collegata a tutte le principali soluzioni di storage RDF.
Il progetto e l'implementazione di Sesame sono indipendenti dal particolare dispositivo di
archiviazione. In questo modo può essere installato al di sopra di molte periferiche di
stoccaggio, quali database relazionali, triplestore e database object-oriented, senza
modificare il query engine (motore di interrogazione) ed altri moduli funzionali.
3.2 Architettura
Diamo uno sguardo ai principali componenti dell'architettura di Sesame [5].
Fig.4: Architettura Sesame
21
L'architettura su cui poggia Sesame è di tipo Web-based: per tale motivo lo stoccaggio
permanente di dati e schemi RDF avviene nei cosiddetti repository (archivi web in cui
sono raggruppati i dati).
La gestione del repository potrebbe essere affidata ad un particolare DBMS, ma affinché
sia mantenuta l'indipendenza dal dispositivo di memoria, il codice del gestore del database
viene racchiuso all'interno del Repository Abstraction Layer (RAL).
Il RAL offre metodi per il trattamento di dati RDF ai suoi client, e traduce tali metodi in
chiamate specifiche al particolare DBMS su cui poggia Sesame (in questo modo si rende
Sesame indipendente dal DBMS). I client di RAL sono dei moduli funzionali e di questi
ne sono previsti 3:
•
RDF Query Module, per la valutazione di query RQL poste dagli utenti. L'RDF
Query Language è un linguaggio dichiarativo per dati e schemi RDF (querying a
livello semantico); l'output di una query su un RDF Schema è ancora un RDF
Schema, dove quest'ultimo è in grado di funzionare da input per le query
successive;
•
RDF Administration Module, che consente l'uploading incrementale di dati e
schemi RDF, così come la cancellazione delle informazioni;
•
RDF Export Module, che consente l'estrazione di schemi e/o dati in formato RDF.
A seconda dell'ambiente in cui viene distribuito, Sesame prevede diversi modi di
comunicare coi vari moduli, ad esempio in ambiente web è preferibile usare HTTP oppure
via RMI (Remote Method Invocation) se la comunicazione avviene tra processi java
distribuiti. Per consentire la massima flessibilità, la gestione di tali protocolli viene
effettuata all'esterno dei moduli funzionali, mentre la comunicazione tra questi ultimi e i
client avviene tramite degli handler (intermediari), con la possibilità di aggiungerne dei
nuovi in base alle necessità. Nella figura 4, si suppone l'esistenza di tre client interessati ad
accedere/modificare/interrogare il repository di cui: due client comunicano via HTTP, il
terzo via SOAP (Simple Object Access Protocol) che permette lo scambio di messaggi tra
componenti software secondo la sintassi XML. Nei prossimi paragrafi daremo una visione
22
più completa delle varie componenti architetturali di Sesame.
3.3 Il Repository Abstraction Layer
Nel paragrafo precedente abbiamo visto come il RAL offre un'interfaccia ad alto livello
(API) di gestione dei dati all'interno del repository. In particolare il RAL traduce le
chiamate al API in metodi appositi al repository sottostante.
Quando un client ad esempio richiede dei dati dal repository, l'API li organizza in vari
flussi di dati e ne restituisce uno per volta; questo fa si che Sesame sia in grado di adattarsi
a grandi volumi di dati senza richiedere un hardware estremamente costoso. Infatti Sesame
richiede una piccolissima quantità di memoria dati ed un'altra, anch'essa minima, dove far
girare il programma. Queste caratteristiche, unitamente alla possibilità di utilizzare un
archivio dati remoto, rendono Sesame molto apprezzato in ambienti “portatili”.
Di contro la possibilità di poter memorizzare solo piccole quantità di dati provenienti dal
repository risulta essere degradante in termini di prestazioni: se ad esempio gli stessi dati
vengono richiesti spesso, ci sarà un numero elevato di letture dal repository con
conseguente aumento dei tempi di attesa. Questo problema può essere risolto ricorrendo ad
un caching, totale se si tratta di flussi dati di dimensioni ridotte (in tal caso il repository
funge da memoria permanente), altrimenti selettivo.
Un ulteriore compito affidato al RAL è la gestione della concorrenza: poiché il query
module divide le query in tante sottoquery è necessario mantenere la coerenza del
repository durante l'esecuzione delle sottoquery.
3.3.1 Stacking RAL
Un'importante caratteristica prevista a questo livello è la possibilità di impilare una serie di
RAL uno sopra l'altro.
Quando uno dei moduli funzionali di Sesame (query, export, administration) interagisce
col RAL, vede solo quello più in alto allo stack e se questo non è grado di soddisfare la
richiesta pervenuta, viene girata lungo la pila dall'alto verso il basso fino al RAL in grado
di poterla processare.
23
Tutto ciò ha senso poiché il RAL deve essere in grado di poter ospitare nuove funzionalità
che potranno essere sviluppate in futuro.
Fig.5: Organizzazione a stack del RAL
Un altro vantaggio dato dallo stratificare il RAL è quello di poter essere collegati a più di
un repository. A titolo di esempio si osservi la seguente figura:
Fig.6: Collegamenti a più repository
Si hanno a disposizione due repository, uno locale e l'altro in remoto. Un modulo
funzionale chiede di poter accedere al repository sottostante: se la richiesta non può essere
24
soddisfatta dal RAL locale, questa viene girata al RAL in remoto. Il tutto avviene in
maniera trasparente rispetto al richiedente che non avrà bisogno di adattarsi alla situazione
sopra rappresentata. Inoltre un ulteriore vantaggio di tale approccio, è che i risultati trovati
localmente possono essere presentati subito all'utente, mentre la query è ancora in
esecuzione sul RAL in remoto.
3.4 Il Repository
Poiché il RAL offre una API generica, Sesame può essere installato sopra ad un qualsiasi
repository in grado di memorizzare RDF.
I possibili repository potrebbero essere i seguenti:
•
DBMS: qualsiasi Database Managment System, da quelli relazionali (RDBMS) a
quelli orientati agli oggetti (O-RDBMS);
•
RDF-store nativi: Sesame può essere installato sopra di essi, a patto che il RAL sia
implementato in modo tale da potersi interfacciare con lo specifico RDF store;
•
RDF file: è possibile memorizzare RDF anche all'interno di file. Sebbene l'utilizzo
di flat file, dove tutte le informazioni sono contenute all'interno di una singola
tabella, sia deprecabile, è possibile utilizzarli se Sesame dovrà interagire con
repository di piccole dimensioni e in tal caso il RAL dovrà provvedere alle
operazioni di caching dati;
•
RDF-network service: Sesame può usufruire di un servizio di rete per memorizzare
RDF. In questo modo Sesame può essere utilizzato come sistema distribuito che
non necessita, per forza, di un repository locale. Un esempio di tale servizio è stato
mostrato nel paragrafo precedente.
Un repository su cui Sesame può essere installato è PostgreSQL, un DBMS orientato agli
oggetti, gratuito ed open-source, che supporta molte caratteristiche in dotazione ad
implementazioni commerciali (es. Oracle). In tal caso il RAL dovrà supportare un
database schema dinamico: nuove tabelle sono aggiunte al database ogni volta che una
classe o proprietà è aggiunta al repository. Se la classe che si vuole inserire è una
25
sottoclasse di altre classi, la tabella che si andrà a creare sarà una sottotabella delle tabelle
per la superclasse. Similmente accade per le proprietà.
3.5 RQL Query Module
Come già accennato in precedenza, in Sesame è previsto un RDF Query Module che
permette di interrogare dati e schemi RDF e di ottenere ancora una volta dati in forma
RDF. A differenza del linguaggio di interrogazione RQL proposto dallo European
IST(Information Sociey Technologies) nell'ambito del progetto C-Web, la versione
utilizzata da Sesame, OTK-RQL (On To Knwoledge-RQL), presenta delle differenze
rispetto al linguaggio originario. Poiché non è nostro interesse approfondire questi aspetti,
per maggiori informazioni si invita a consultare [6].
Il Query Module, una volta interpellato, esegue una serie di operazioni come mostrato
nella seguente figura:
Fig.7: Componenti con relativo output del layer RQL
La query viene analizzata e rappresentata secondo un grafo ad albero. L'output del parser
sarà inviato ad un query optimizer che costruirà un nuovo grafo ad albero più efficiente del
primo. Successivamente il modello ottimizzato viene valutato a flussi seguendo la struttura
ad albero in cui la query è rappresentata. In particolare ogni elemento del grafo
rappresenta un'unità base della query originaria e la valutazione di ogni elemento serve ad
interpellare, eventualmente, il RAL affinché recuperi il necessario dal repository. In questo
modo i dati possono essere restituiti direttamente a flussi, invece di costruire prima l'intero
set di informazioni in memoria centrale.
In Sesame, una query RQL viene tradotta in una serie di chiamate al RAL, attraverso il
26
modello ad oggetti. Questo significa che la maggior parte della valutazione della query
viene fatta stesso nel query engine. In questo modo, ad esempio, quando una query
contiene un'operazione di join su due sottotabelle, il RAL preleva separatamente i risultati
delle due sottoquery e il join dei risultati viene effettuato dal query engine. Anche se molti
DBMS offrono buone performance di ottimizzazione di query, questo compito è stato
delegato al RDF Query Module in modo tale che Sesame non dipenda da un particolare
DBMS. Il prezzo da pagare è una maggiore complessità del query module.
Un approccio alternativo potrebbe essere quello di tradurre direttamente query RQL in
query per il repository sottostante. Il vantaggio di tale approccio è la possibilità di poter
utilizzare senza troppi sforzi, i complessi meccanismi di valutazione ed ottimizzazione
offerti dal DBMS. Lo svantaggio sarebbe che l'architettura di Sesame non possa passare
facilmente da un repository all'altro.
3.6 RDF Administration Module
Questo modulo provvede alla gestione dei metadati RDF, in particolare ai metodi di
inserimento e cancellazione dal repository.
I metadati da inserire nel repository vengono recuperati da un'altra fonte RDF, inseriti in
un documento XML serializzato RDF ed analizzato da una componente del modulo
amministrazione. Le informazioni fornite al modulo sono nella forma di statement RDF i
quali, sono controllati per verificare la coerenza con gli statement già presenti nel
repository: se il controllo va a buon fine i metadati sono aggiunti, altrimenti segnalati ed
ignorati. Anche gli statement duplicati vengono ignorati.
Infine per la cancellazione, Sesame in origine prevedeva solo una pulizia dell'intero
repository, ma con le ultime versioni è possibile anche cancellare statement singoli.
3.7 RDF Export Module
Il modulo di esportazione è un componente molto semplice dell'architettura di Sesame:
provvede all'esportazione del contenuto del repository in modo tale da poter utilizzare gli
27
stessi dati con un altro tool capace di trattare RDF. In particolare con l'Export Module è
possibile esportare i dati, lo schema o entrambi a seconda del tool che si vorrebbe
utilizzare. Ad esempio un editor di ontologie ha bisogno solo dello schema RDF, altri, che
non supportano la semantica di uno schema RDF, dei dati.
3.8 On-To-Knowledge
Un esempio, famoso, di applicazione basata su Sesame è On-To-Knowledge, uno
strumento per la gestione delle ontologie sviluppato allo European IST. La seguente figura
ci mostra come Sesame faccia da centro-stella per un insieme di tool:
Fig.8: OTK
OntoExtract, sviluppata dal CognIT, provvede ad estrarre le strutture ontologiche da
documenti scritti in linguaggio naturale. Tali ontologie vengono caricate in un repository
tramite Sesame. Le ontologie presenti possono essere scaricate ed editate mediante
OntoEdit, editor sviluppato dall' AIFB Institute della University of Karlsruhe, e
successivamente ricaricate in Sesame. Infine con RDF Ferret, un'applicazione utente
sviluppata dal BT Adastral Park Research Labs, è possibile scaricare le ontologie per poter
effettuare ricerche ed interrogazioni su di esse.
Poichè Sesame è un server web-based è possibile effettuare collegamenti coi vari tool
(oltre a quelli citati nell'esempio precedente), semplicemente usando il protocollo HTTP.
28
Conclusioni
Lo scopo di questa trattazione è stato quello di analizzare i principali concetti che stanno
alla base del Web Semantico e le principali tecnologie messe a disposizione. Siamo partiti
dal concetto di Web come enorme libreria, espressione degli utenti che costantemente
condividono informazioni (non intesi solo come documenti testuali, ma basti pensare al
mondo dei Social Network dove si condividono spesso pensieri personali, foto che
ritraggono attimi di vita quotidiana,... ). La difficoltà incontrata da tutti noi, durante una
ricerca sul Web, è quella di trovare “ciò che si vuole”: qui entrano in gioco i motori di
ricerca. Poiché la Rete è in continua crescita, usufruire di semplici strumenti in grado di
ricercare una o più parole chiavi non basta, ed è per questo motivo che si è avvertita la
necessità di riorganizzare l'intero “sistema” in maniera semantica, cioè assegnare un
significato alle informazioni a nostra disposizione. Questo è l'obiettivo principale del
W3C.
L'idea alla base del Web Semantico è quello di fornire agenti intelligenti in grado di
svolgere compiti molto gravosi, lasciando all'utente l'onere di istruire tali entità.
E' stato ritenuto opportuno trattare i principali strumenti messi a disposizione dal W3C
(XML,RDF,OWL,...), oltre al come il Web Semantico possa rispettare e rappresentare gli
infiniti domini della conoscenza. In definitiva, possiamo affermare con certezza che si è
riusciti a rappresentare solo degli ambiti molto precisi della conoscenza, ma non ad
automatizzarli del tutto. Nei prossimi anni, ed è inevitabile, ci si aspetta un incremento
vertiginoso di metadati che possano specificare quantità di dati sempre più vaste e
dell'utilizzo di ontologie in grado di poter illustrare i legami tra i vari dati.
Successivamente abbiamo affrontato brevemente il concetto di database triplestore, in
grado di memorizzare statement RDF, e di SPARQL, linguaggio per l'interrogazione di
intere collezioni di dati RDF. Abbiamo notato come un triplestore è più un middleware che
un database in grado di poter immagazzinare RDF, e di fornire un supporto al
29
ragionamento ontologico. Non a caso, spesso un triplestore è una tecnologia (che abbiamo
definito come framework) in grado di poter girare su database ad esempio relazionali o
object-oriented.
Abbiamo illustrato nel dettaglio Sesame, un framework per la trattazione e l'interrogazione
di dati e schemi RDF. La sua caratteristica fondamentale è l'astrazione dai particolari di
un qualsiasi repository utilizzato per l'immagazzinamento. Ciò consente a Sesame di
adattarsi ad una gran varietà di repository come database relazionali, triplestore nativi e
perfino a servizi di immagazzinamento remoti. Inoltre abbiamo visto come Sesame sia
indipendente dal particolare protocollo di comunicazione (HTTP, SOAP, WML,...), il che
rende molto semplice collegarsi a differenti client che usufruiscono di diversi protocolli di
comunicazione.
30
Bibliografia
[1] Alongheu A., Linguaggi – Corso di Laurea in Ingegneria delle telecomunicazioni,
Università di Catania,
http://www.diit.unict.it/users/alongheu/lingtlc/aa1011/lezione22_semantic_web.pdf,
17-04-2015
[2] Basciano D., tesi di laurea triennale in “RDF (Triple Store) Database”, AA 2012-2013
[3] Berners-Lee T., Hendler J., Lassila O., “The Semantic Web”, Scientific American, May
2001
[4] Bernstein A., Fisher L., Stutz P., Verman M., “Triple Rush: A Fast and Scalable Triple
Store”
[5] Boekstra J., Kampman A., “Sesame: An Architecture for Storing and Querying RDF
Data and Schema Information”
[6] Boekstra J., Kampman A., “On-To-Knowledge RQL”,
http://www.callisto.nsu.ru/documentation/CSIR/qmeta/del9.pdf,04-05-2015
[7] Buongiorno D., Tesi di laurea specialistica in “Web Semantico: lo stato dell'arte”, AA
2008-2009
[8] Comparison of Triple Stores,
http://www.bioontology.org/wiki/images/6/6a/Triple_Stores.pdf , 28-04-2015
[9] Fiacco N., tesi di laurea specialistica in “Applicazioni e tecnologie semantiche:
prospettive per lo sviluppo di una rete intelligente”, AA 2008-2009
[10] Internet Engineering Task Force, “URI”, http://www.ietf.org/rfc/rfc2396.txt,
19-04-2015
[11] Melton J., “SQL, XQuery and SPARQL. What's wrong with this picture?”,
http://www.w3.org/2006/Talks/0301-melton-query-langs.pdf, 30-04-2015
[12] Quin L., “eXtensible Markup Language”, http://www.w3.org/XML, 28-04-2015
[13] Sesame project web site, http://www.rdf4j.org, 03-05-2015
31
[14] Unicode, http://www.unicode.org/standard/translation/italian.html, 19-04-2015
[15] Vitali F., Dipartimento di Informatica – Scienza e Ingegneria, Università di Bologna,
http://www.cs.unibo.it/~fabio/corsi/ltw01/slides/19-RDF/19-RDF.pdf, 17-04-2015
[16] W3C, “Semantic Web Architecture”, http://www.w3.org/DesignIssues/Semantic.html,
23-04-2015
[17] W3C, “RDF” http://www.w3c.it/papers/RDF.pdf, 23-04-2015
[18] W3C, “RDF SPARQL Query”, http://www.w3.org/TR/rdf-sparql-query/, 01-05-2015
[19] W3C, “RDF syntax”, http://www.w3.org/TR/REC_rdf_syntax, 23-04-2015
[20] W3schools, “RDF schema”, http://www.w3schools.com/schema, 21-04-2015
[21] Websemantico.org: il Web semantico, il futuro del Web, “il Web Semantico”
http://www.websemantico.org/articoli/approcciwebsemantico.php#otto,21-04-2015
[22] Wikipedia the free enciclopedy, “Ontology (information science)”,
http://en.wikipedia.org/wiki/Ontology_(information_science), 21-04-2015
32