RDF Triple Store: Virtuoso - ingegneria-informatica.unina.it · 3.1 Cos' è Virtuoso ... e l'...
Transcript of RDF Triple Store: Virtuoso - ingegneria-informatica.unina.it · 3.1 Cos' è Virtuoso ... e l'...
Scuola Politecnica e delle Scienze di BaseCorso di Laurea in Ingegneria Informatica
Elaborato finale in Basi di Dati
RDF Triple Store: Virtuoso
Anno Accademico 2013/2014
Candidato:
Alessandro Losco
matr. N46/874
Indice
1 Introduzione 5
1.1 Web Semantico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 eXtensible Markup Language . . . . . . . . . . . . . . . . . . . . 8
1.3 RDF Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4 Web Ontology Language . . . . . . . . . . . . . . . . . . . . . . . 10
1.5 Triplestore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2 SPARQL 12
2.1 Perchè SPARQL? . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2 Linguaggio ARQ . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3 Condizioni Opzionali . . . . . . . . . . . . . . . . . . . . . . . . . 14
3 OpenLink Virtuoso 16
3.1 Cos' è Virtuoso . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2 Architettura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.3 Distributed Transaction Model . . . . . . . . . . . . . . . . . . . 18
3.4 Persistenza dei dati . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.5 Consistenza e integrità dei dati . . . . . . . . . . . . . . . . . . . 19
3.6 XML Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.7 Parser per XML DTD . . . . . . . . . . . . . . . . . . . . . . . . 20
3.8 Con�gurazione e dimensionamento . . . . . . . . . . . . . . . . . 22
3.9 Ottimizzazione I/O su disco . . . . . . . . . . . . . . . . . . . . . 22
3.10 Il futuro di Virtuoso . . . . . . . . . . . . . . . . . . . . . . . . . 23
1
Prefazione
Desta meraviglia pensare con quanta rapidità, in particolare negli ultimi decenni,
l' ingegno umano abbia saputo inventare. Dalla rivoluzione industriale ( 1770-
1830 ), passando per la di�usione della ferrovia ( 1840-1890 ), all' elettri�cazione
e l' industria chimica ( 1890-1930 ), �no ai motori, al fordismo, al consumismo,
alla produzione di massa ( 1930-1980 ), per giungere, ai giorni nostri, all' era
delle tecnologie di comunicazione di massa ( dal 1980 ), la crescita tecnologica
è aumentata esponenzialmente nel tempo. Nel ciclo economico in cui viviamo,
sono le sfere dell' informazione e della comunicazione a compiere i più grandi
passi, a partire dall' inizio del secolo con la radio del premio Nobel Guglielmo
Marconi, passando per le valvole termoioniche di John Amborse Fleming del
1904, la svolta dei transistor, equivalente a semiconduttore più economico, più
a�dabile e meno ingombrante. Tali fattori hanno permesso in breve tempo la
di�usione di logiche transistor-transistor in circuiti integrati prodotte, ad oggi,
�no a 16nm ( 1 nanometro è pari ad un milionesimo di millimetro ) dando vita
a ciò che è chiamato VLSI ( Very Large Scale Integration, ovvero Integrazione
in scala MOLTO grande ). Le macchine, però, evidenziavano il �problema� di
dover essere programmate: nasce così l' Informatica. Compaiono quelle che
diventeranno in seguito alcune delle più grandi aziende al mondo: Microsoft,
Apple, IBM, Samsung, Intel, Philips, solo per citarne alcune.
E' incredibile pensare quanti degli oggetti e delle tecnologie che oggi utiliz-
ziamo con naturalezza,�no a qualche anno fa non esistevano neanche. Prima
del 2010 Whatsapp non esisteva. S�do chiunque legga questa tesi ad a�ermare
di aver sentito parlare di Facebook prima del 2007, stesso anno in cui vennero
prodotti i primi smartphone. Prima del 2000 non sapevamo cosa signi�casse
2
INDICEla parola �Wi-Fi�, non esisteva MSN Messenger, fatto che sembra inin�uente
se pensiamo che Google era soltanto una parola signi�cante un numero inpro-
nunciabile composto da un 1 seguito da 100 zeri, e solo nel 1996 Hotmail aprì i
battenti dando vita ad uno dei mezzi di comunicazioni più utilizzati della storia:
la posta elettronica.
Ecco quindi che le più grandi invenzioni degli ultimi 20 anni ruotano attorno
ad un perno comune: Internet. Internet nasce come sistema di comunicazione
militare realizzato, nel 1969, dal Dipartimento della Difesa USA, con il nome di
ARPANET. E' solo nel 1991- però- che un ricercatore del CERN a Ginevra, Tim
Berners-Lee de�nì il protocollo HTTP ( Protocollo di trasferimento di ipertesti
), che permetteva ad un utente collegato da un computer di saltare da una
pagina all' altra con un click del mouse. Fu così che nacque il WWW, il World
Wide Web, reso pubblico nel 1993 ma di�usosi nelle case solo nel 1995.
Oggi internet è un territorio scon�nato. Chi legge ha sicuramente un idea
della vastità della rete vista come pagine web collegate tra loro, ma è incredibile
pensare che meno del 2% dei contenuti mondiali è raggiungibile tramite un
ipertesto. Gli attuali protocolli di indirizzamento sono talmente prevenuti e
lungimiranti da supportare - mi scuso per la di�coltà nel riuscire a comprendere
la grandezza del numero - 34 · 1038 macchine connesse contemporaneamente
( quanti�cando, per ogni metro quadrato di super�cie terrestre, potrebbero
essere presenti 655.571 miliardi di miliardi di macchine, e Internet potrebbe
ancora funzionare ). La rete è un ambiente talmente grande che è di�cile
persino dare statistiche sulle sue dimensioni, e nonostante ciò, quello che colpisce
maggiormente è il suo tasso di crescita. Nel 1998 veniva stimata la presenza di
circa 26 milioni di pagine web indicizzate, contro il miliardo del 2008, e 206
milioni di domini registrati, e nel 2010 le dimensioni sono aumentate del 20%, e
ad oggi la crescita è arrivata al 40%. Ogni pagina web oggi assume le dimensioni
relative di un puntino in un universo che cresce con velocità comparabili a quelle
cosmiche.
Internet oggi è sinonimo di globalizzazione. Tutto oggi orbita attorno alla
rete: il lavoro, gli amici, i parenti, il tempo libero, i viaggi, lo studio... Avere un
sito internet equivale a possedere una vetrina sul mondo. Sono pochi irriducibili
coloro che non hanno mai avuto a che fare con il Web, non hanno tratto informa-
zioni, o non le abbiano elargite, volente o nolente. Nonostante ciò il web è solo
il 45% di Internet: il resto sono email, P2P, streaming, VoIP, VPN, Gaming,
elettrodomestici e altro ancora. E' impressionante quanto Internet, che è a tutti
gli e�etti una macchina dall' architettura estremamente complessa, eterogenea,
3
INDICE
e che ricopre gran parte del pianeta, sia in grado di spostare una mole enorme
di dati e informazioni da un punto all' altro in una frazione di secondo.
Figura 1: Numero di computer connes-si alla rete dal 1993 ad oggi. Cifre inMilioni di Host
Anche nello sviluppo di questo la-
voro di tesi, è risultato complesso na-
vigare in questa incredibile mole di
informazioni: è come cercare un pic-
colissimo ago in un enorme pagliaio.
Oggi la più grande s�da che viene ri-
chiesta agli ingegneri del domani non
è indicizzare e fornire dati, non in-
formazioni, ma conoscenza, ed è pro-
prio questo l' obiettivo di ciò che oggi
viene chiamato Semantic Web.
Nelle pagine che seguono andrò
ad analizare l' insieme delle tecni-
che e delle tecnologie identi�cate con
il nome più a�ascinante di Semantic
Web.
4
Capitolo 1Introduzione
1.1 Web Semantico
Prima che Tim Berners-Lee ponesse le basi del World Wide Web erano dispo-
nibili più e più performanti sistemi ipertestuali. Fu però lui il primo a de�nire
quelle semplici speci�che che furono, poi, pubblicate quali standard pubblici.
Questo consentì agli sviluppatori di implementare il sistema del ricercatore in-
glese per proprio conto ( il che si concretizza nel progettare i propri standard, i
propri web server, browser, e sopratutto pagine web ). Berners-Lee ha fondato
il W3C per sovrintendere questi standard e il web semantico stesso è costruito al
di sopra degli standard del W3C: L' RDF Data Model, il linguaggio di interroga-
zione SPARQL, gli standard RDF Schema e OWL per lo storing di vocabolari e
ontologie. Un prodotto o un progetto potrebbe persino essere progettato facen-
do uso della semantica, ma se non utilizza tali standard, non può connettersi al
resto del mondo ed essere parte del web semantico, o almeno non più di quanto
possa un sistema a ipertesti del 1985 linkare una pagina sul WWW senza l' uso
di HTML o HTTP.
Il punto fondamentale della nuova tecnologia è che il web �primitivo� di
Berners-Lee fu progettato per fornire documenti human-readable. Ad esempio,
se si pensa di acquistare un biglietto aereo da un aereoporto ad un altro aereo-
porto, ci si può collegare al sito web della compagnia aerea preferita, immettere
i dati, e leggere i risultati.
Tuttavia sappiamo che esistano numerose compagnie aeree che - sulla stessa
tratta - forniscono tari�e anche notevolmente diverse. I siti di comparazione
5
1.1. WEB SEMANTICO
Figura 1.1: Lo stack del Semantic Web nelle sue due accezioni: astratta econcreta
delle compagnie aeree dispongono di sistemi che recuperano pagine web dai
siti delle diverse compagnie ed estraggono le informazioni di cui necessitano
con un processo noto come �screen scraping�. I dati raccolti vengono quindi
presentati aggregati sul sito del comparatore ed ordinati secondo vari �ltri (
prezzo, durata del volo, numero di scali, ecc. ). Prima di scrivere un software di
tal tipo, uno sviluppatore del sito di comparazione deve analizzare la struttura
HTML di ogni singola compagnia aerea per determinare dove il software di
screen scraping dovrebbe cercare le informazioni necessarie. Tutto ciò oltre
ad essere poco immediato, ine�ciente e dispendioso, è anche poco �essibile, in
quanto qualora una compagnia aerea decidesse di rinnovare il proprio portale,
il comparatore deve essere aggiornato per supportare il nuovo layout1.
L' idea di Linked Data di Berners-Lee consiste in un insieme di best-practices
�nalizzate a condividere i dati attraverso le infrastrutture web in modo che
le applicazioni, le macchine ( e non più solo gli esseri umani ) possano più
facilmente recuperare dati da siti pubblici senza necessità di screen scraping.
1Questo è probabilmente il motivo per cui i portali delle compagnie aeree sono inalteratida anni fornendo una user experience decisamente scadente
6
1.1. WEB SEMANTICO
Figura 1.3: L' evoluzione del web
Queste best practices raccomandano l' uso di URIs per identi�care cose e l' uso
di standard come RDF e SPARQL.
Figura 1.2:Skyscanner
Il termine �semantica� è spesso de�nito come �il signi�cato
delle parole�. I principi del Linked Data e gli standard correla-
ti rendono più semplice la condivisione dei dati e l' uso di URIs
può fornire un pò di semantica dando il contesto ad un ter-
mine. Ad esempio, se non conosco cosa signi�ca �W3C� posso
saperlo attraverso l' URI �http://www.w3.org/Consortium/�.
Conservare il signi�cato completo delle parole in modo che
le macchine possano �comprendere� questi signi�cati potreb-
be essere una richiesta troppo ambiziosa per gli attuali com-
puter, ma il W3C Web Ontology Language ( OWL ), come
vedremo, aiuta in questo fornendo la dinamica e le relazioni
necessarie ai termini dei vocabolari.
Il web semantico è quindi un evoluzione dell' attuale web
in cui è previsto che i singoli atomici dati siano legati tra di
loro con ciò che viene indicato con il termine �predicato�. Nel nuovo web, la
parola non acquista signi�cato in maniera autonoma, ma quest' ultimo dipende
dal contesto, ovvero dalle altre parole che la circondano.
7
1.2. EXTENSIBLE MARKUP LANGUAGE
1.2 eXtensible Markup Language
XML è un linguaggio di markup de�nito da W3C basato su una sintassi che
consente la de�nizione del signi�cato degli elementi contenuti in un documento.
Mentre l' HTML de�nisce una grammatica per la presentazione visiva di pagine
web e relativi ipertesti, XML è un linguaggio per la descrizione strutturata del
contenuto di documenti. In un documento XML sono presenti marcatori, o tag.
Gli elementi, che devono essere aperti o chiusi nel giusto ordine, possono conte-
nere degli attributi. Un documento XML può essere rappresentato visivamente
tramite una stuttura dati ad albero che rappresenta bene le relazioni padre-�glio
degli elementi che lo compongono. I nomi degli elementi possono essere scelti
liberamente a patto di fornire una grammatica che de�nisca l' insieme dei nomi
validi e le regole per la loro composizione.
XML è case sensitive. Tutti gli elementi devono appartenere allo stesso nodo
principale. Un documento XML si dice �ben formato� se non contiene errori
sintattici, mentre si dice invece �valido� se segue una precisa grammatica, detta
DTD ( Document Type De�nition ). In pratica questa grammatica de�nisce
l' insieme degli elementi validi e le regole di scrittura, ovvero viene speci�cata
di quanti e quali elementi è composta una classe. DTD non è l' unico modo
per speci�care una grammatica. Esiste uno standard più recente di nome XML
SCHEMA che utilizza lo stesso XML per de�nire una nuova grammatica XML.
I �le RSS sono, ad esempio, dei documenti scritti in XML per consentire la facile
consultazione da parte di applicazioni esterne
1.3 RDF Schema
Nel web semantico, un vocabolario è un insieme di termini registrati utilizzando
un formato standard. Un vocabolario ha tipicamente il suo proprio namespace
che gli permette di coesistere con altri vocabolari che possono essere preesisten-
ti. Questi possono essere gestiti utilizzando Resource Description Framework
Schema ( RDFS ) e OWL che vedremo in seguito. Dublin Core ( dc: ) è un
insieme standard di termini di metadati.
RDF è un linguaggio di descrizione per vocabolari, ovvero di metadati. Il
linguaggio di interrogazione de�nito sugli RDF Schema è SPARQL. Il modello
dati di RDFS può essere visto come un grafo composto da nodi e archi, a cui
corrispondono termini e relazioni.
8
1.3. RDF SCHEMA
(a) Una singola tripla (b) Un intero schema
Figura 1.5: Una singola tabella può portare a schemi molto complessi, mafacilmente navigabili
Trasformando un database Entità-Relazione in un database RDF, si compie
il passaggio da una rappresentazione dei dati in tuple ad una rappresentazione
in triple. Una tripla ( s, p, o ) composta da soggetto, predicato ( o proprietà
), oggetto ( o valore ) è ciò che individua una cella in un database relazionale
classico: ovvero l' intersezione tra colonna e riga. Ogni schema relazionale può
essere quindi rappresentato da triple.I dati in questo formato sono molto più
semplici da utilizzare: basti pensare ad una operazione di merge che nel caso
di tabelle con un numero grande di colonne e strutture diverse da loro è un
operazione molto complessa. Nel caso di triple ( ovvero di gra� ), la complessità
computazionale crolla drammaticamente.
Figura 1.4: Datupla a tripla
Analizzando uno schema RDF, potrebbe sembrare di uti-
lizzare una visione del mondo ad oggetti. Nelle basi di dati
object-oriented se dichiariamo che i membri di una classe x
hanno la proprietà y, vuol dire che un membro della classe
x deve avere un valore ben de�nito della proprietà y. L' ap-
proccio di RDFS e OWL è invece opposto: Se una qualche
entità dell' insieme possiede una proprietà y, allora fa parte
della classe x. La di�erenza è sottile ma evidente: inserendo
nuove proprietà possiamo cambiare il grafo rappresentante la
conoscenza dell' insieme in maniera bidirezionale, collegando
nodi ad altri nodi attraverso relazioni. Questo rende quindi il
web �essibile agli aggiornamenti dei dati.
L' abilità delle risorse RDF di diventare membri di classi basandosi sui valori
dei propri dati ha reso il web semantico una tecnologia popolare in aree come
9
1.4. WEB ONTOLOGY LANGUAGE
per esempio la ricerca medica2: i ricercatori possono accumulare dati senza un
apparente struttura iniziale che li lega tra loro. Sara' proprio lo schema ad
autocostruirsi e rivelare collegamenti tra i dati che di�cilmente potevano essere
notati a priori.
Questo particolare approccio allarga le possibilità di SPARQL come linguag-
gio di interrogazione, o in un certo senso, di information retrieval.
1.4 Web Ontology Language
W3C's Web Ontology Language, in breve OWL, si utilizza al di sopra di RDFS
per de�nire ontologie. Le ontologie sono de�nizioni formali di vocabolari che
permettono di de�nire strutture complesse come nuove relazioni tra i termini di
vocabolario e tra i membri della classe che si vuole de�nire. Le ontologie de�nite
in OWL sono a tutti gli e�etti collezioni di triple, esattamente come RDF: si
può dire anzi che OWL sia una vera e propria estensione del linguaggio RDF.
OWL permette di ricavare dinamicamente informazioni dal set di dati presente
negli RDFS.
Esempio Tramite RDF possiamo de�nire che id3536 è una persona di nome
Piero Rossi che è paziente di id9988. D' altro canto id9988 è de�nito come
una persona di nome Giulio Verdi. OWL stabilisce che il termine �paziente� è
l' opposto di �medico�, e quindi possiamo concludere che Giulio Verdi sia un
medico nonostante il dataset non lo abbia dichiarato esplicitamente.
Esempio Riprendendo il dataset dell' esempio precedente, se aggiungiamo
all' istanza id3536 l' informazione che questa stessa sia coniuge di id1122, dove
id1122 è una persona di nome Giulia Neri e �coniuge� è un termine apposita-
mente de�nito tramite OWL come bidirezionale, allora anche id1122 diventa
automaticamente coniuge di id 3536. Riunendo tutte le informazioni, potrem-
mo e�ettuare una query SPARQL che ci restituisce il risultato: �Il medico del
coniuge di Giulia Neri, Piero Rossi, è Giulio Verdi�.
2Pubmed ( http://www.ncbi.nlm.nih.gov/pubmed ) è un database bibliogra�co contenenteinformazioni sula letteratura scienti�ca biomedica dal 1949 ad oggi. La prima versione è onlinedal 1996
10
1.5. TRIPLESTORE
1.5 Triplestore
Il termine utilizzato per conservare in memoria secondaria RDF come una strin-
ga di byte è �serializzazione�. Un primo e primitivo metodo di serializzazione
può essere quello di sfruttare �le di testo con diverse sintassi. Questa soluzione
però è molto ine�ciente quando si parla di Big Data, che si concretizza in una
mole inenumerabile di triple. Un sistema che indicizza i dati e decide quali dati
caricare in memoria principale, come farlo e quando farlo, può essere sicuramen-
te una soluzione più adatta. Esistono metodi per importare RDF in database
relazionali come MySQL o Oracle DBMS. Il miglior metodo è però quello di
utilizzare appositi DBMS ottimizzati per triple RDF, i cosiddetti triplestore.
Ne sono disponibili diversi, sia con licenza commerciale che Open Source. In
questa tesi sarà analizzato in particolare OpenLink Virtuoso.
11
Capitolo 2SPARQL
2.1 Perchè SPARQL?
Il web semantico, come abbiamo visto, si propone di essere una estensione del
web ordinario, tale da supportare meccanismi di information retrieval da parte
delle macchine, in maniera molto più evoluta, e�cace ed e�ciente di quanto si
possa e�ettivamente con i normali strumenti come SQL e i database relazionali
classici.
Come abbiamo visto inoltre, l' RDF Data Model può essere ottenuto diret-
tamente dall' osservazione del modello Entità-Relazione e viceversa. Se ciò è
possibile, vuol dire che in un modo o nell' altro, anche i rispettivi linguaggi di
interrogazione godono di una proprietà isomor�ca, ovvero di una corrispondenza
1:1 l' uno con l' altro.
Tuttavia un database relazione è piato, tabellare, mentre uno schema RDF
può si essere visto come una struttura simile, ma è in realtà molto più orientato
ad una struttura a grafo, alla rete di oggetti, e OWL complica addirittura le cose
fornendo associazioni bidirezionali tra i nodi. Le Triple forniscono una miriade
di informazioni atomiche, e non più enormi tabelle.
Ecco quindi che, quando SQL fallisce nell' eseguire query complesse che
coinvolgono un numero troppo elevato di tabelle, sorge la necessità di un nuovo
linguaggio e protocollo, per l' appunto detto SPARQL Protocol And RDF Query
Language, progettato per l' interrogazione di intere collezioni di triple, e per
l' attraversamento trasparente delle relazioni tra i nodi di un RDFS, ma che
conserva la piena compatibilità con SQL, così come RDF con i database E-R.
12
2.2. LINGUAGGIO ARQ
Listato 2.1 una semplice query SPARQL
1 PREFIX : http :// scuo lapsb . unina . i t / i ng egne r i a / on t o l o g i e s / esempio#2 SELECT ?x3 WHERE { ?x : worksIn : v ia_claudio . }
Listato 2.2 Una query SPARQL con clausola FROM
1 PREFIX
2 stx : < http :// scuo lapsb . unina . i t / i ng egne r i a / on t o l o g i e s / esempio# >
3 SELECT ? person4 FROM < http :// scuo lapsb . unina . i t / i ng egne r i a / on t o l o g i e s / esempio# >
5 WHERE { ? person stx : name ?name . }
SPARQL è dunque non solo un linguaggio di interrogazione, ma anche un
protocollo di comunicazione costruito sopra HTTP ( o altri protocolli di co-
municazione ) che permette l' interrogazione di triple store e il recupero delle
informazioni inviati come risposta da questi ultimi.
Nei capitoli successivi esamineremo alcune semplici query SPARQL, antici-
pando che è impossibile in questa sede trattare in maniera completa ed esaustiva
l' intero linguaggio.
2.2 Linguaggio ARQ
Come vedremo SPARQL ha alcune similitudini con SQL, ma anche alcune no-
vità necessarie per adattarsi ad un contesto come RDFS. In SPARQL la query
comincia sempre con un pre�sso URI del dominio di interesse, utilizzato per
riferire le risorse del grafo da interrogare, e il nome di una variabile comincia
sempre con un punto interrogativo. Nella query del listato 2.1, per esempio,
vengono prelevate le informazioni di tutti i dipendenti memorizzati in un da-
tabase che lavorano a Via Claudio. In questa Query nella clausola WHERE è
speci�cata una tripla: il soggetto è ?x, il predicato è worksIn, e l' oggetto è
via_claudio.
Nella query del listato 2.1 è stato de�nito un namespace per riferire le risorse
del grafo. Questa è una maniera compatta per dire che ?name è un predicato
de�nita nell' ontologia speci�cata nel primo rigo. Mentre nella clausola PREFIX
l' indirizzo web è utilizzato come un URI, nella clausola FROM si tratta di un
vero e proprio URL che contiene il �le del database.
13
2.3. CONDIZIONI OPZIONALI
Listato 2.3 Notare come in questo formato di query, detto �Turtle�, ognitripla termina con un punto.
1 PREFIX ab : <http :// l e a r n i n g s p a r q l . com/ns/ addressbook#>2 SELECT ? f i r s t ? l a s t3 WHERE
4 {5 ? person ab : homeTel "081 2762934" .6 ? person ab : f i rstName ? f i r s t .7 ? person ab : lastName ? l a s t .8 }
�rst last
Richard Mutt
Tabella 2.1: il risultato della query
Se consideriamo uno schema come quello rappresentato nel listato 2.5, ef-
fettuando la query del listato 2.3 otteniamo il risultato espresso in tabella 2.1
ovvero, com'è facilmente intuibile, è la clausola SELECT a de�nire quali proprie-
tà ( �rst e last, ovvero colonne ) restituire, mentre nella clausola WHERE viene
speci�cato che i soggetti ( le persone, cioè le righe ) candidate ad essere stam-
pate sono quelle che hanno il numero di telefono indicato, e le indicazioni sulle
proprietà �rstName e lastName servono solo a de�nire quali valori stampare del-
la persona selezionata. Le tre triple indicate sono legate da loro implicitamente
da una AND logica.
2.3 Condizioni Opzionali
Consideriamo lo schema rappresentato nel listato 2.5 e la query del listato 2.4
contenente la clausola OPTIONAL. La clausola OPTIONAL permette di ag-
giungere, nell' esempio trattato, la condizione che il numero telefonico di lavoro
va inserito nei risultati ( come colonna ), ma sono comunque ammesse triple
che non presentano nello schema questo attributo. Il risultato di questa query
è presentato in tabella 2.2. Anche all' interno della OPTIONAL innestata è
possibile speci�care più tuple legate da una AND logica.
14
2.3. CONDIZIONI OPZIONALI
Listato 2.4 Notare che il soggetto ?s può essere omesso in tuple ripetute, previail capolinea preceduto da �;� e non dal semplice punto.
1 PREFIX ab : <http :// l e a r n i n g s p a r q l . com/ns/ addressbook#>23 SELECT ? f i r s t ? l a s t ?workTel4 WHERE
5 {6 ? s ab : f i rstName ? f i r s t ;7 ab : lastName ? l a s t .8 OPTIONAL
9 {10 ? s ab : workTel ?workTel .11 }12 }
Listato 2.5 Schema RDF considerato
1 @pref ix ab: <ht tp : // l e a r n i n g s p a r q l . com/ns/ addressbook#> .2 @pref ix d : <ht tp : // l e a r n i n g s p a r q l . com/ns/data#> .34 d : i 0432 ab : f i r s tName "Richard" .5 d : i 0432 ab:lastName "Mutt" .6 d : i 0432 ab:homeTel " (229) 276−5135" .7 d : i 0432 ab :n i ck "Dick" .8 d : i 0432 ab :emai l " r ichard49@hotmai l . com" .910 d : i 9771 ab : f i r s tName "Cindy" .11 d : i 9771 ab:lastName "Marshal l " .12 d : i 9771 ab:homeTel " (245) 646−5488" .13 d : i 9771 ab :emai l "cindym@gmail . com" .1415 d : i 8301 ab : f i r s tName "Craig " .16 d : i 8301 ab:lastName " E l l i s " .17 d : i 8301 ab:workTel " (245) 315−5486" .18 d : i 8301 ab :emai l " c r a i g e l l i s@yahoo . com" .19 d : i 8301 ab :emai l "c . e l l i s@usa i rwaysg roup . com" .
�rst last workTel
Craig Ellis (245) 315-5486Cindy MarshallRichard Mutt
Tabella 2.2: Il risultato della query 2.4
15
Capitolo 3OpenLink Virtuoso
3.1 Cos' è Virtuoso
Principalmente Virtuoso è un database SQL object-relational. Come database
fornisce il meccanismo delle transazioni, un interprete SQL, stored-procedure,
backup a caldo. E' dotato di tutte le interfacce più utilizzate come ODBC,
JDBC, ecc. E' inoltre dotato di un web-server che fornisce pagine web dina-
miche in PHP, ASP e molti altri, oltre che il linguaggio proprietario VSP. For-
nisce inoltre accesso SOAP e REST alle stored procedures. Virtuoso supporta
SPARQL per l' interrogazione dei dati RDF memorizzati nella base di dati. Le
interrogazioni SPARQL sono ottimizzate a basso livello per garantire migliori
performance nei benchmark e nell' utilizzo reale.
Una delle s�de più grandi dell' avvento di XML è la disponibilità degli stessi
Dati XML. Virtuoso sempli�ca il processo di creazione di dati XML da HTML
esistente, pubblicazioni RSS, e database SQL classici supportando la generazione
in tempo reale di documenti dinamici ( basati sia su DTD che XML Schema
). Virtuoso è detto �Universal Server� perchè implementa un vasto numero di
protocolli in un singolo server, riducendo i costi di aggregazione dei dati da fonti
eterogenee, ampliando i margini di produttività.
Con virtuoso è possibile sviluppare soluzioni che utilizzano XML come livel-
lo fondamente per l' accesso ai dati, mediante il quale viene fornito un accesso
trasparente a dati strutturati e non strutturati. In particolare i documenti XML
possono sia essere generati internamente, sia importanti dal Web e memorizzati
nell' ecosistema di Virtuoso. Possono essere generati on-the-�y in maniera e�-
16
3.2. ARCHITETTURA
Figura 3.1: Virtuoso Universal Server
cace ed e�ciente documenti XML dinamici trasformando query SQL in XML.
Supporta XPATH2.0, XQUERY Draft 1.0, XML Schema.
I documenti possono essere presentati persino all' interno di pagine HTML
collocate su un web server col supporto di PHP4, piuttosto che essere recapitati
via STMP, POP3, e IMAP4, o ancora via NNTP ai svariati servizi di newsgroup
E' disponibile in una versione commerciale ed una open source, a cui farò
riferimento in questo lavoro di tesi. In particolare sarà presa in esame la versione
7.1.0 risalente a Febbraio 2014.
3.2 Architettura
Virtuoso è progettato per avvantaggiarsi del supporto multithread e multipro-
cessore dei moderni sistemi operativi. Esso consiste di un singolo processo con
un numero variabile di thread condivisi tra i clients. Piu' thread possono coo-
17
3.3. DISTRIBUTED TRANSACTION MODEL
Figura 3.2: Commit a due fasi
perare sulla stessa struttura dati causando la minima interferenza l' uno con l'
altro. I thread condividono una cache delle pagine del database e le vecchie pa-
gine sono scritte su disco come processo in background a minima priorità. Tutte
le tabelle del database sono conservate in un singolo insieme di �le. Un insieme
separato è utilizzato per tutti i dati temporanei. La dimensione massima per il
database è di 32 Terabyte.
3.3 Distributed Transaction Model
Una transazione sul server Virtuoso potrebbe contenere operazioni da e�ettuare
su più fonti di dati remote. Come regola generale le connessioni remote sono
in modalità di commit manuale e Virtuoso e�ettua il commit o il rollback della
transazione su ogni connessione remota ogni volta che la transazione termina.
Una transazione tra tabelle locali e tabelle poste su una singola fonte di
dati remota si completerà sempre con successo dal momento che la fonte remota
e�ettua il commit prima di quella locale e la locale compie il rollback se fallisce
il commit remoto.
Virtuoso supporta 2PC ( 2 Phase Commit ). Questo è un protocollo che
prevede che il �usso di dati verso un database sia committato in due fasi, come
visualizzato in �gura 3.2.
Nella prima fase il transaction coordinator controlla che tutte le parti della
transazione possano essere committate.
18
3.4. PERSISTENZA DEI DATI
Nella seconda fase, tutte le parti della transazione vengono e�ettivamente
committate. Se qualsiasi parte della transazione non può essere committata, la
seconda fase non avviene. ODBC non supporta 2PC.
Le transazioni nei database SQL sono generalmente obbligate a rispettare
le proprietà ACIDe: Atomicità, Consistenza, Isolamento, Persistenza. 2PC è
necessario per garantire il soddisfacimento delle proprietà fondamentali quando
la transazione interessa l' I/O verso più di un database. Questo può essere il
caso di una transazione che interessa tabelle di database remoti. 2PC necessita
un Distributed Transaction Coordinator ( DTC ) di terze parti. Virtuoso in
particolare supporta Microsoft Transaction Server ( MTS DTC ).
3.4 Persistenza dei dati
Il database è in grado di e�ettuare backup a caldo ad un checkpoint sicuro, ed
è disponibile lo storico delle transazioni committate e non committate �no a
questo checkpoint. Per far ciò utilizza un log�le contenente tutte le transazio-
ni e�ettuate dall' ultimo checkpoint, che può essere conservato per un tempo
stabilito a priori.
Salvare un checkpoint consiste nello scrivere l' ultimo stato committato di
una pagina sullo stato pre-checkpoint, nel caso la pagina sia già esistente prima
del checkpoint. Se la pagina è stata creata dopo l' ultimo checkpoint, bisogna
semplicemente scriverla su disco. Ora se il numero di pagina modi�cata tra
un checkpoint e l' altro supera la quantità di RAM disponibile, il checkpoint
diventerà un processo �disk-to-disk� che proporzionalmente al numero di pagine
modi�cate può risultare lento ed ine�ciente. Virtuoso o�re un meccanismo
chiamato �Rimappatura di Checkpoint� che permette di rendere persistente uno
stato committato, ovvero sicuro, senza dover scrivere su disco tutte le di�erenze
collezionate nel quanto di tempo infra-checkpoint.
3.5 Consistenza e integrità dei dati
Virtuoso è dotato di un meccanismo di locking, a partire dalla singola riga �no
all' intera pagina, a cascata. La cascata accade quando nessun' altra transazione
detiene lock sulla stessa pagina, questo per assicurare l' impossibilità di ricadere
in deadlock.
19
3.6. XML TEMPLATES
Virtuoso, inoltre, supporta integrità di entità tramite vincoli UNIQUE e
PRIMARY KEY e l' integrità referenziale tramite i costraint necessari. Sup-
porta, inoltre, i vincoli NOT NULL che forzano un valore ad essere de�nito
obbligatoriamente per ogni tupla di un tabella.
Virtuoso supporta il meccanismo dei Trigger: un trigger è una procedura
associata ad una tabella ed un evento. Il trigger può essere scatenato prima,
dopo, o invece dell' evento sulla tabella scelta, tramite le parole chiave BEFORE,
AFTER, INSTEAD OF.
I trigger sono attivabili a cascata, ovvero un trigger può attivare un altro
trigger. Ciò potrebbe causare una ricorsione divergente: i trigger andrebbero
disattivati manualmente per sicurezza.
3.6 XML Templates
Un template XML è un �le XML contenente principalmente una query e para-
metri opzionali con valuri di default per la query stessa, oltre che una serie di
informazioni aggiuntive, come dei fogli di stile XLS ( excel ). I template posso-
no essere eseguiti dal linguaggio procedurale di Virtuoso utilizzando la funzione
xml_template(). I template forniscono un accesso ai risultati di una normale
query SQL, con la di�erenza la de�nizione della query può essere salvata su �le.
Questo viene fatto per produrre rapidamente report dinamici da presentare a
seconda delle necessità in maniera diversa secondo i vari fogli di stile XLS conte-
nuti nel �le del template. Questi report possono essere quindi ra�nati on-the-�y
fornendo parametri per le query di volta in volta di�erenti. L' output può essere
quindi visualizzato via HTTP digitando direttamente l' URL del template all'
interno del browser. La trasformazione XSLT è e�ettuata solo se desiderata,
ma è obbligatoria se la richiesta è un HTTP GET
3.7 Parser per XML DTD
Come abbiamo visto nel capitolo introduttivo, XML DTD è un insieme di diret-
tive per descrivere la struttura di un documento XML e lo mette in relazione con
altri documenti XML. Virtuoso è dotato di un pareser XML che può riconoscere
e processare la maggior parte delle direttive DTD, e veri�care che il documento
rispetti le direttive DTD e possa così essere ritenuto valido.
20
3.7. PARSER PER XML DTD
Figura 3.3: L' approccio di Virtuoso ad un XML Template
Se DTD descrive le relazioni con entità XML esterne, il parser può costrui-
re rappresentazioni interne dei dati, che possono essere �standalone� o �non
standalone�.
Per costruire una rappresentazione �standalone�, o statica, il parser recupera
tutte le risorse esterne e rimpiazzerà ogni occorrenza di relazione con una copia
dell' intero contenuto della risorsa.
Per costruire una rappresentazione �non standalone�, o dinamica, invece, il
parser ricorda solo le informazioni per la dereferenziazione dei contenuti e non
cerca di ottenere l' intera risorsa, che verrà invece recuperata su richiesta, se
necessario.
In un mondo ideale, i documenti matchano perfettamente gli standard XML
e tutte le URI dichiarate sono valide e accessibili, ma nella realtà, potrebbero
esserci delle URI non più valide. Virtuoso per questo motivo permette di con�-
gurare la reazione del parser ad ogni sorta di problema, per rendere possibile la
presentazione parziale dei dati, tralasciando gli errori che riguardano la porzio-
ne di dati non recuperabili. Inoltre un log dettagliato e humand-readable può
essere generato per permettere all' utente di veri�care i problemi sopraggiunti
ed eventualmente �xarli.
21
3.8. CONFIGURAZIONE E DIMENSIONAMENTO
Figura 3.4: Dimensionamento consigliato
3.8 Con�gurazione e dimensionamento
Per elevate performance nelle interrogazioni delle strutture RDF, un database
dev' essere con�gurato opportunamente per gestire insiemi di big data. Vediamo
ora come Virtuoso eccelle in questo.
Quando si ha a che fare con insiemi di dati molto grandi è consigliabile de-
dicare a Virtuoso dai 23 ai 3
5della memoria principale ed e�ettuare uno striping
su tutti i dischi disponibili. Queste con�gurazioni e molte altre sono disponibili
nel �le virtuoso.ini. In particolari i parametri �NumberOfBu�ers� e �MaxDirty-
Bu�ers� rappresentano il numero massimo di Bu�er ( di default 8KB ciascuno
) e il numero massimo di Bu�er sporchi, ovvero pagine modi�cate ma non an-
cora scritti su disco. Valori consigliati al variare della RAM disponibile sono
rappresentati in �gura. Il parametro �MaxCheckPointRemap� speci�ca quante
pagine Virtuoso è abilitato a rimappare, ed è consigliato mantenerlo ad 14 della
dimensione totale del database.
3.9 Ottimizzazione I/O su disco
Virtuoso permette di dividere un database in più �le che possono essere sparsi
su dischi di�erenti. Allocando un frammento di database in dischi indipendenti
le performance di I/O possono essere notevolmente aumentate sia in operazione
ad accesso casuale che sequenziale.
L' unità di misura di base del database è il segmento: consiste di un numero
intero di pagine da 8KB. Un segmento consiste di uno o più �le chiamati stri-
pes. Se un segmento ha più stripes, queste saranno della stessa lunghezza e la
dimensione dell' intero segmento sarà un multiplo intero della dimensione delle
stripes.
22
3.10. IL FUTURO DI VIRTUOSO
La dimensione limite del singolo �le di database dipende dalla piattaforma,
ma l' architettura a 64 bit è sfruttata dove possibile. Per database grandi, è
raccomandato l' uso di dischi multipli e di segmentazione per motivi legati allo
sfruttamento del parallelismo. Un database può arrivare �no a 32TB ( indirizzi
di pagina a 32 bit con 8KB per pagina ).
Quando viene e�ettuato lo striping di un segmento, ogni pagina logicamente
consecutiva risiede in �le diversi, perciò per un segmento da 2 stripes, la prima
conterrà tute le pagine pari, e la seconda le pagine dispari. Le stripes andrebbero
salvate in dischi diversi. Nel servire le richieste di client che prevedono accesso
casuale alle tabelle, Virtuoso può così e�ettuare più operazioni di I/O su disco
in parallelo sfruttando il vantaggio dei device indipendenti. Lo striping quindi
garantisce una frequenza d' accesso statisticamente uniforme tra i dischi.
Lo striping è utile anche per un singolo client che e�ettua operazioni di lun-
ghe letture sequenziali. Virtuoso può accorgersi della natura seriale della richie-
sta e può ottimizzare le operazioni: se la tabella è posizionata in un segmento
sottoposto a striping, il server leggerà tutti i dischi interessati in parallelo.
3.10 Il futuro di Virtuoso
Le ricerche dello sviluppatore OpenLink Software sono piuttosto intense e sono
divise in svariate aree attorno Virtuoso. Lo sviluppatore dichiara di voler esten-
dere le funzionalità attorno RDF e supportare un accesso trasparente ai dati
native-relational, con maggiori con�gurazioni e supporto inferenziale, oltre che
al supporto di XQUERY che è attualmente supportato ma la versione 1.0 è un
semplice draft di W3C.
23
Bibliogra�a
[1] Bob DuCharme, Learning SPARQL 2nd Edition, O' Really, 201
[2] 3Tim Berners-Lee, The Semantic Web , in �Scienti�c American�, maggio
2001
[3] A. Chianese,V. Moscato, A. Picariello, L. Sansone, Basi di dati per la
gestione dell'informazione 2/ed, McGraw-Hill, 2009
[4] Tim Berners-Lee, L'architettura del nuovo Web, Feltrinelli, Milano, 2002
[5] Elisabetta Curzel, Il web semantico il futuro, Il web semantico: il futuro
dei motori di ricerca, corriere.it, 3 novembre 2014
[6] Wikipedia l' enciclopedia libera, Storia di Internet
[7] Wikipedia l' enciclopedia libera, Internet
[8] Wikipedia l' enciclopedia libera, Web Semantico
[9] OpenLink Software, Virtuoso Documentation,
http://docs.openlinksw.com/
[10] Giorgio Fontana, Quanto è grande Internet?, wired.it, 2011
[11] Commissione di coordinamento SPC, Linee guida per l' interoperabilità
semantica attraverso i Linked Open Data, Agenzia per l' Italia digitale,
2012
[12] E. Prud'hommeaux, A. Seaborne, SPARQL Query Language for RDF,
W3C Reccomendation http://www.w3.org/TR/rdf-sparql-query/, 2008
24
BIBLIOGRAFIA
[13] N. Sadawi, Semantic Web Tutorial, youtu-
be.com/user/DrNoureddinSadawi
[14] O. Hassanzadeh, Introduction to Semantic Web, University of Toronto,
2011
25
Elenco delle �gure
1 Numero di computer connessi alla rete dal 1993 ad oggi. Cifre
in Milioni di Host . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1 Lo stack del Semantic Web nelle sue due accezioni: astratta
e concreta . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 L' evoluzione del web . . . . . . . . . . . . . . . . . . . . . 7
1.2 Skyscanner . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.5 Una singola tabella può portare a schemi molto complessi,
ma facilmente navigabili . . . . . . . . . . . . . . . . . . . . 9
1.4 Da tupla a tripla . . . . . . . . . . . . . . . . . . . . . . . . 9
3.1 Virtuoso Universal Server . . . . . . . . . . . . . . . . . . . 17
3.2 Commit a due fasi . . . . . . . . . . . . . . . . . . . . . . . 18
3.3 L' approccio di Virtuoso ad un XML Template . . . . . . . 21
3.4 Dimensionamento consigliato . . . . . . . . . . . . . . . . . 22
26
Elenco degli algoritmi
2.1 una semplice query SPARQL . . . . . . . . . . . . . . . . . . . . 13
2.2 Una query SPARQL con clausola FROM . . . . . . . . . . . . . . 13
2.3 Notare come in questo formato di query, detto �Turtle�, ogni
tripla termina con un punto. . . . . . . . . . . . . . . . . . . . . 14
2.4 Notare che il soggetto ?s può essere omesso in tuple ripetute,
previa il capolinea preceduto da �;� e non dal semplice punto. . . 15
2.5 Schema RDF considerato . . . . . . . . . . . . . . . . . . . . . . 15
27