RDF Triple Store: Virtuoso - ingegneria-informatica.unina.it · 3.1 Cos' è Virtuoso ... e l'...

30
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

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

Ai miei genitori

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

ELENCO DEGLI ALGORITMI

RDF Triple Store: Virtuoso di Alessandro Losco è distribuito con LicenzaCreative Commons

Attribuzione - Non commerciale - Condividi allo stesso modo 4.0Internazionale.

28