RDF Triple Store: Virtuoso - 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: Virtuoso
Anno Accademico 2013/2014
Candidato:
Alessandro Losco
matr. N46/874
Ai miei genitori
Indice
1
2
3
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
SPARQL
12
2.1
Perchè SPARQL? . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
2.2
Linguaggio ARQ
. . . . . . . . . . . . . . . . . . . . . . . . . . .
13
2.3
Condizioni Opzionali . . . . . . . . . . . . . . . . . . . . . . . . .
14
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
3.8
Congurazione e dimensionamento
. . . . . . . . . . . . . . . . .
22
3.9
Ottimizzazione I/O su disco . . . . . . . . . . . . . . . . . . . . .
22
3.10 Il futuro di Virtuoso
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
1
20
23
Prefazione
Desta meraviglia pensare con quanta rapidità, in particolare negli ultimi decenni,
l' ingegno umano abbia saputo inventare. Dalla rivoluzione industriale ( 17701830 ), passando per la diusione della ferrovia ( 1840-1890 ), all' elettricazione
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ù
adabile e meno ingombrante. Tali fattori hanno permesso in breve tempo la
diusione 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 utilizziamo con naturalezza,no a qualche anno fa non esistevano neanche.
Prima
del 2010 Whatsapp non esisteva. Sdo chiunque legga questa tesi ad aermare
di aver sentito parlare di Facebook prima del 2007, stesso anno in cui vennero
prodotti i primi smartphone.
Prima del 2000 non sapevamo cosa signicasse
2
INDICE
la parola Wi-Fi, non esisteva MSN Messenger, fatto che sembra ininuente
se pensiamo che Google era soltanto una parola signicante un numero inpronunciabile 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 denì 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 diusosi nelle case solo nel 1995.
Oggi internet è un territorio sconnato. 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 dicoltà nel riuscire a comprendere
la grandezza del numero -
34 · 1038
macchine connesse contemporaneamente
( quanticando, per ogni metro quadrato di supercie terrestre, potrebbero
essere presenti 655.571 miliardi di miliardi di macchine, e Internet potrebbe
ancora funzionare ).
La rete è un ambiente talmente grande che è dicile
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 informazioni, 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 eetti 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.
Anche nello sviluppo di questo lavoro di tesi, è risultato complesso navigare in questa incredibile mole di
informazioni: è come cercare un piccolissimo ago in un enorme pagliaio.
Oggi la più grande sda che viene richiesta agli ingegneri del domani non
è indicizzare e fornire dati, non informazioni, ma conoscenza, ed è proprio questo l' obiettivo di ciò che oggi
viene chiamato Semantic Web.
Nelle pagine che seguono andrò
ad analizare l' insieme delle tecniche e delle tecnologie identicate con
Figura 1: Numero di computer connessi alla rete dal 1993 ad oggi.
Milioni di Host
il nome più aascinante di Semantic
Web.
4
Cifre in
Capitolo
1
Introduzione
1.1 Web Semantico
Prima che Tim Berners-Lee ponesse le basi del World Wide Web erano disponibili più e più performanti sistemi ipertestuali. Fu però lui il primo a denire
quelle semplici speciche che furono, poi, pubblicate quali standard pubblici.
Questo consentì agli sviluppatori di implementare il sistema del ricercatore inglese 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 interrogazione SPARQL, gli standard RDF Schema e OWL per lo storing di vocabolari e
ontologie. Un prodotto o un progetto potrebbe persino essere progettato facendo 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 aereoporto, 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 tarie anche notevolmente diverse.
5
I siti di comparazione
1.1.
WEB SEMANTICO
Figura 1.1:
Lo stack del Semantic Web nelle sue due accezioni:
astratta e
concreta
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, ineciente e dispendioso, è anche poco essibile, in
quanto qualora una compagnia aerea decidesse di rinnovare il proprio portale,
1
il comparatore deve essere aggiornato per supportare il nuovo layout .
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.
1 Questo è probabilmente il motivo per cui i portali delle compagnie aeree sono inalterati
da 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 identicare cose e l' uso
di standard come RDF e SPARQL.
Il termine semantica è spesso denito come il signicato
delle parole. I principi del Linked Data e gli standard correlati rendono più semplice la condivisione dei dati e l' uso di URIs
può fornire un pò di semantica dando il contesto ad un termine. Ad esempio, se non conosco cosa signica W3C posso
saperlo attraverso l' URI http://www.w3.org/Consortium/.
Conservare il signicato completo delle parole in modo che
le macchine possano comprendere questi signicati potrebbe essere una richiesta troppo ambiziosa per gli attuali computer, ma il W3C Web Ontology Language ( OWL ), come
vedremo, aiuta in questo fornendo la dinamica e le relazioni
necessarie ai termini dei vocabolari.
Figura
Il web semantico è quindi un evoluzione dell' attuale web
1.2:
Skyscanner
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 signicato 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 denito da W3C basato su una sintassi che
consente la denizione del signicato degli elementi contenuti in un documento.
Mentre l' HTML denisce 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 contenere 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 denisca 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 Denition ).
In pratica questa grammatica denisce
l' insieme degli elementi validi e le regole di scrittura, ovvero viene specicata
di quanti e quali elementi è composta una classe.
DTD non è l' unico modo
per specicare una grammatica. Esiste uno standard più recente di nome XML
SCHEMA che utilizza lo stesso XML per denire 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 preesistenti.
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 denito 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
Figura 1.5:
(b) Un intero schema
Una singola tabella può portare a schemi molto complessi, ma
facilmente 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.
Analizzando uno schema RDF, potrebbe sembrare di utilizzare 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 denito della proprietà y. L' approccio di RDFS e OWL è invece opposto: Se una qualche
entità dell' insieme possiede una proprietà y, allora fa parte
della classe x. La dierenza è sottile ma evidente: inserendo
nuove proprietà possiamo cambiare il grafo rappresentante la
conoscenza dell' insieme in maniera bidirezionale, collegando
Figura 1.4:
Da
tupla a tripla
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
2
per esempio la ricerca medica : 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 dicilmente potevano essere
notati a priori.
Questo particolare approccio allarga le possibilità di SPARQL come linguaggio 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 denire ontologie.
Le ontologie sono denizioni formali di vocabolari che
permettono di denire strutture complesse come nuove relazioni tra i termini di
vocabolario e tra i membri della classe che si vuole denire. Le ontologie denite
in OWL sono a tutti gli eetti 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 denire che id3536 è una persona di nome
Piero Rossi che è paziente di id9988.
D' altro canto id9988 è denito 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 appositamente denito tramite OWL come bidirezionale, allora anche id1122 diventa
automaticamente coniuge di id 3536. Riunendo tutte le informazioni, potremmo eettuare una query SPARQL che ci restituisce il risultato: Il medico del
coniuge di Giulia Neri, Piero Rossi, è Giulio Verdi.
2 Pubmed ( http://www.ncbi.nlm.nih.gov/pubmed ) è un database bibliograco contenente
informazioni sula letteratura scientica biomedica dal 1949 ad oggi. La prima versione è online
dal 1996
10
1.5.
TRIPLESTORE
1.5 Triplestore
Il termine utilizzato per conservare in memoria secondaria RDF come una stringa 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 ineciente 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 sicuramente 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.
questa tesi sarà analizzato in particolare OpenLink Virtuoso.
11
In
Capitolo
2
SPARQL
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, ecace ed eciente di quanto si
possa eettivamente con i normali strumenti come SQL e i database relazionali
classici.
Come abbiamo visto inoltre, l' RDF Data Model può essere ottenuto direttamente 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à isomorca, 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
2
SELECT ? x
:
3
WHERE {
#
http : / / s c u o l a p s b . unina . i t / i n g e g n e r i a / o n t o l o g i e s / esempio
?x
: worksIn
: via_claudio
.
}
Listato 2.2 Una query SPARQL con clausola FROM
1
2
3
PREFIX
#>
h t t p : / / s c u o l a p s b . u n i n a . i t / i n g e g n e r i a / o n t o l o g i e s / e s e m p i o# >
s t x : < http : / / s c u o l a p s b . unina . i t / i n g e g n e r i a / o n t o l o g i e s / esempio
SELECT ? p e r s o n
4
FROM <
5
WHERE {
? person
s t x : name
? name .
}
SPARQL è dunque non solo un linguaggio di interrogazione, ma anche un
protocollo di comunicazione costruito sopra HTTP ( o altri protocolli di comunicazione ) 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, anticipando 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 novità necessarie per adattarsi ad un contesto come RDFS. In SPARQL la query
comincia sempre con un presso 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 database che lavorano a Via Claudio. In questa Query nella clausola WHERE è
specicata una tripla: il soggetto è ?x, il predicato è worksIn, e l' oggetto è
via_claudio.
Nella query del listato 2.1 è stato denito un namespace per riferire le risorse
del grafo. Questa è una maniera compatta per dire che ?name è un predicato
denita nell' ontologia specicata 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, ogni
tripla termina con un punto.
1
PREFIX ab :
2
SELECT ? f i r s t
3
WHERE
4
#>
<h t t p : / / l e a r n i n g s p a r q l . com/ n s / a d d r e s s b o o k
? last
{
5
? person
ab : homeTel
6
? person
ab : f i r s t N a m e
? person
ab : l a s t N a m e
7
8
" 081
2762934 " .
? first .
? last .
}
rst
last
Richard
Mutt
Tabella 2.1: il risultato della query
Se consideriamo uno schema come quello rappresentato nel listato 2.5, effettuando la query del listato 2.3 otteniamo il risultato espresso in tabella 2.1
ovvero, com'è facilmente intuibile, è la clausola SELECT a denire quali proprietà ( rst e last, ovvero colonne ) restituire, mentre nella clausola WHERE viene
specicato che i soggetti ( le persone, cioè le righe ) candidate ad essere stampate sono quelle che hanno il numero di telefono indicato, e le indicazioni sulle
proprietà rstName e lastName servono solo a denire quali valori stampare della 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 aggiungere, 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 specicare 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, previa
il capolinea preceduto da ; e non dal semplice punto.
1
PREFIX ab :
#>
<h t t p : / / l e a r n i n g s p a r q l . com/ n s / a d d r e s s b o o k
2
3
SELECT ? f i r s t
4
WHERE
5
? last
{
6
?s
ab : f i r s t N a m e
7
? first
ab : l a s t N a m e
8
;
? last
.
OPTIONAL
9
{
10
?s
11
12
? workTel
ab : w o r k T e l
? workTel
.
}
}
Listato 2.5 Schema RDF considerato
1
@prefix
a b : < h t t p : // l e a r n i n g s p a r q l . com/ n s / a d d r e s s b o o k#>
2
@prefix
d:
< h t t p : // l e a r n i n g s p a r q l . com/ n s / d a t a#>
.
3
4
d:i0432
ab:firstName
" Richard "
5
d:i0432
ab:lastName
" Mutt "
.
.
6
d:i0432
ab:homeTel
" (229)
276 − 5135 "
7
d:i0432
ab:nick
" Dick "
.
8
d:i0432
ab:email
" r i c h a r d 4 9 @ h o t m a i l . com"
.
.
9
10
d:i9771
ab:firstName
" Cindy "
11
d:i9771
ab:lastName
" Marshall "
.
12
d:i9771
ab:homeTel
" (245)
13
d:i9771
ab:email
" cindym@gmail . com"
.
646 − 5488 "
.
.
14
15
d:i8301
ab:firstName
" Craig "
16
d:i8301
ab:lastName
"Ellis"
.
17
d:i8301
ab:workTel
" (245)
18
d:i8301
ab:email
" c r a i g e l l i s @ y a h o o . com"
19
d:i8301
ab:email
" c . e l l i s @ u s a i r w a y s g r o u p . com"
.
315 − 5486 "
.
rst
last
workTel
Craig
Ellis
(245) 315-5486
Cindy
Marshall
Richard
Mutt
Tabella 2.2: Il risultato della query 2.4
15
.
.
.
Capitolo
3
OpenLink 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.
JDBC, ecc.
E' dotato di tutte le interfacce più utilizzate come ODBC,
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. Fornisce 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 sde più grandi dell' avvento di XML è la disponibilità degli stessi
Dati XML. Virtuoso semplica 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 livello 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 eciente 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 multiprocessore 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 pagine 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 eettuare
su più fonti di dati remote. Come regola generale le connessioni remote sono
in modalità di commit manuale e Virtuoso eettua 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
eettua 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 eettivamente
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 eettuare 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 logle contenente tutte le transazioni eettuate 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 modicata 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
modicate può risultare lento ed ineciente.
Virtuoso ore un meccanismo
chiamato Rimappatura di Checkpoint che permette di rendere persistente uno
stato committato, ovvero sicuro, senza dover scrivere su disco tutte le dierenze
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 denito
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 parametri 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 possono 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 dierenza la denizione 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 contenuti nel le del template. Questi report possono essere quindi ranati on-the-y
fornendo parametri per le query di volta in volta dierenti. L' output può essere
quindi visualizzato via HTTP digitando direttamente l' URL del template all'
interno del browser.
La trasformazione XSLT è eettuata 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 direttive 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 vericare 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ò costruire 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 congurare la reazione del parser ad ogni sorta di problema, per rendere possibile la
presentazione parziale dei dati, tralasciando gli errori che riguardano la porzione di dati non recuperabili. Inoltre un log dettagliato e humand-readable può
essere generato per permettere all' utente di vericare i problemi sopraggiunti
ed eventualmente xarli.
21
3.8.
CONFIGURAZIONE E DIMENSIONAMENTO
Figura 3.4: Dimensionamento consigliato
3.8 Congurazione e dimensionamento
Per elevate performance nelle interrogazioni delle strutture RDF, un database
dev' essere congurato 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 dedicare a Virtuoso dai
3
2
3 ai 5 della memoria principale ed eettuare uno striping
su tutti i dischi disponibili. Queste congurazioni e molte altre sono disponibili
nel le virtuoso.ini. In particolari i parametri NumberOfBuers e MaxDirtyBuers rappresentano il numero massimo di Buer ( di default 8KB ciascuno
) e il numero massimo di Buer sporchi, ovvero pagine modicate ma non ancora scritti su disco.
Valori consigliati al variare della RAM disponibile sono
rappresentati in gura. Il parametro MaxCheckPointRemap specica quante
pagine Virtuoso è abilitato a rimappare, ed è consigliato mantenerlo ad
1
4 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 dierenti. 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 stripes. 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 eettuato 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ì eettuare 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 eettua operazioni di lunghe letture sequenziali. Virtuoso può accorgersi della natura seriale della richiesta 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 estendere le funzionalità attorno RDF e supportare un accesso trasparente ai dati
native-relational, con maggiori congurazioni e supporto inferenziale, oltre che
al supporto di XQUERY che è attualmente supportato ma la versione 1.0 è un
semplice draft di W3C.
23
Bibliograa
[1] Bob DuCharme, Learning SPARQL 2nd Edition, O' Really, 201
[2] 3Tim Berners-Lee, The Semantic Web , in Scientic 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 . . . . . . . . . . . . . . . . . . . . . . . .
1.1
4
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
3.2
Commit a due fasi
3.3
L' approccio di Virtuoso ad un XML Template
3.4
Dimensionamento consigliato
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
17
. . . . . . . . . . . . . . . . . . . . . . .
18
26
. . . . . . .
21
. . . . . . . . . . . . . . . . .
22
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.
2.4
2.5
. . . . . . . . . . . . . . . . . . . .
14
Notare che il soggetto ?s può essere omesso in tuple ripetute,
previa il capolinea preceduto da ; e non dal semplice punto. . .
15
Schema RDF considerato
15
. . . . . . . . . . . . . . . . . . . . . .
27
ELENCO DEGLI ALGORITMI
RDF Triple Store: Virtuoso di Alessandro Losco è distribuito con Licenza
Creative Commons
Attribuzione - Non commerciale - Condividi allo stesso modo 4.0
Internazionale.
28