Scuola Politecnica e delle Scienze di Base Corso di Laurea in Ingegneria Informatica Elaborato finale in BASI DI DATI VIRTUOSO DB:CARATTERISTICHE Anno Accademico 2013/2014 Candidato: MINOCCHI MARIO matr. N46000420 A mio Padre …Un esempio di Vita Indice Indice .................................................................................................................................................. III Introduzione ........................................................................................................................................ 4 Capitolo 1: Introduzione al Web Semantico ........................................................................................ 6 1.1 L'architettura del Web Semantico ................................................................................. 7 1.2 URI ovvero Uniform Resource Identifiers ..................................................................... 8 1.3 RDF ovvero Resource Description Framework ............................................................ 9 1.4 L'RDF Data Model ...................................................................................................... 10 1.5 RDF Schema ................................................................................................................ 12 1.6 I metadati...................................................................................................................... 13 1.7 RDF ed XML ............................................................................................................... 14 1.8 Ontologie ...................................................................................................................... 15 Capitolo 2: I Triple Store ................................................................................................................... 17 2.1 Triple Store benchmark ................................................................................................ 17 Capitolo 3: Virtuoso ........................................................................................................................... 20 3.1 Architettura .................................................................................................................. 22 3.2 Blocco .......................................................................................................................... 22 3.3 Le operazioni................................................................................................................ 22 3.4 L'integrità dei dati ........................................................................................................ 22 3.5 Componenti e file ......................................................................................................... 23 3.6 Protocolli implementati ................................................................................................ 23 3.7 API di supporto ............................................................................................................ 23 3.8 Virtuoso RDF Triple Store ........................................................................................... 23 Conclusioni ........................................................................................................................................ 25 Bibliografia ........................................................................................................................................ 26 Introduzione Al giorno d'oggi grazie all'enorme sviluppo avuto dall'informatica, dell'elettronica e al costo, fondamentalmente, contenuto di apparecchi capaci di collegarsi a internet, l'espressione "lo cerco sul web" è diventata abituale. Ciò ci fa riflettere anche su cosa sia diventato il web negli anni: un serbatoio di conoscenza. Attraverso la rete, infatti, è possibile fare svariate cose, come consultare un libro , chattare, fare acquisti online, e tutto ciò è in continua e rapida evoluzione. Basta pensare che negli anni '90 il web era composto da poche pagine testuali, con il tempo al testo si sono aggiunti contenuti multimediali che hanno dato alle pagine una grafica più ricca. Il contenuto, memorizzato su poche migliaia di macchine e sviluppato da pochi "specialisti", ha iniziato a crescere in quantità smisurata. Se ciò da un lato ha ampliato le possibilità del web rendendolo una sorta di enciclopedia universale multimediale, un gestore di servizi da remoto e un centro di comunicazione mondiale, dall'altro ha reso le ricerche più complesse all'utente finale che è sempre più obbligato a terminare la ricerca "manualmente" scegliendo il risultato desiderato tra tutti quelli restituiti da un motore di ricerca. Ciò avviene perché i tradizionali motori di ricerca effettuano ricerche di tipo sintattico restituendo, infatti, le pagine che contengono le keywords presenti nelle query degli utenti, indipendentemente dal contesto in cui esse sono utilizzate oppure restituiscono pagine secondo algoritmi differenti, ad esempio basati sulla popolarità. Per venire incontro a tale problema, negli ultimi anni, le aziende proprietarie dei motori di ricerca stanno investendo nello sviluppo di nuove tecnologie che permettano alle macchine di interpretare il senso delle parole in maniera simile a come succede tra essere umani. Il loro obiettivo è quello di creare sistemi d'information retrieval capaci di estrarre e indicizzare i concetti più significativi dei testi in modo da rendere le ricerche effettuate tramite i loro portali sempre più precise. Di fronte a questa moltitudine di informazioni, l’importanza dei motori di ricerca assume un ruolo significativo. Per qualsiasi utente di Internet, utilizzare un motore di ricerca e non trovare ciò che si sta cercando, può essere frustrante. È interessante, infatti, notare come, di fronte alla notevole quantità di risultati pervenuti, un’altissima percentuale di utenti (il 30%) non superi mai la seconda/terza pagina di risultati. Questa schematizzazione dei risultati è dovuta agli attuali algoritmi di ricerca basati sull’aspetto sintattico dell’informazione, essi restituiscono le pagine contenenti le keywords presenti nelle query degli utenti, indipendentemente dal contesto in cui esse sono utilizzate oppure restituiscono pagine secondo algoritmi differenti, ad esempio basati sulla popolarità. La fiducia dell’utente verso la qualità di ricerca del motore è, e deve essere dunque, totale, e affinché esso soddisfi le sue aspettative è fondamentale assicurare la bontà degli algoritmi di analisi. Negli ultimi anni le aziende proprietarie dei motori di ricerca stanno investendo nello sviluppo di nuove tecnologie che permettano alle macchine di interpretare il senso delle parole similmente agli esseri umani. La loro aspirazione è quella di creare sistemi di information retrieval capaci di estrarre ed indicizzare semanticamente i concetti più significativi dei testi affinché le ricerche effettuate attraverso i loro portali risultino sempre più precise. Nella prima parte di questo elaborato di tesi focalizzeremo l’attenzione sullo studio degli elementi chiave del Semantic Web, estensione del Web attuale che punta, attraverso la creazione di dati elaborabili e comprensibili direttamente dalle macchine e attraverso l’uso della logica e dei linguaggi di rappresentazione della conoscenza ,a massimizzare l’efficienza degli algoritmi di ricerca. Grazie al Semantic Web, infatti, la ricerca di documenti non sarà più incentrata sul significato lessicale della singola parola chiave come avveniva nella ricerca sintattica ma sul significato che assumono più concetti legati tra loro (ricerca semantica). A tal proposito verrà quindi introdotto un linguaggio di codifica RDF, Resource Description Framework, per raggiungere la cosiddetta interoperabilità semantica. Al di sopra di questo strato si pone il livello ontologico. Recentemente il termine "ontologia" (formale) è entrato in uso nel campo dell'intelligenza artificiale e della rappresentazione della conoscenza, per descrivere il modo in cui diversi schemi vengono combinati in una struttura dati gerarchica che contiene tutte le entità rilevanti, le relazioni esistenti 4 fra di esse, le regole, gli assiomi ed i vincoli specifici del dominio. Nel prosieguo del lavoro effettueremo una panoramica sulle principali applicazioni sviluppate in grado di memorizzare triple RDF, i cosiddetti triplestore e, tramite la scelta di opportuni parametri prestazionali ,verrà fornita poi una classificazione degli stessi. A seguire una descrizione di Virtuoso con tutte le sue principali caratteristiche. 5 Capitolo 1: Introduzione al Web Semantico Lo scenario attuale del World Wide Web è quello di un enorme insieme di testi collegati in qualche modo tra loro. Una peculiarità essenziale del WWW è la sua universalità; il potere di un link ipertestuale deriva dal fatto che "qualunque cosa può essere collegata a qualunque altra cosa da chiunque". I testi sono creati ad uso e consumo dei soli utenti umani, gli unici allo stato attuale in grado di comprendere i contenuti delle pagine che stanno visitando. Possiamo distinguere i collegamenti tra le pagine in due classi: collegamenti sintattici: sono legati al funzionamento di un qualche codice di programmazione. Sono piuttosto solidi (un link localizza una risorsa attraverso un URL univoco, anche se si pone un problema di updating) collegamenti descrivono il significato di un collegamento. Questi ultimi sono invece piuttosto deboli (i.e. generici e vaghi), cioè oltre a portare in un determinato luogo un collegamento dovrebbe descrivere il luogo verso cui porta (capacità semantica) Gli utenti umani si orientano nel Web grazie alla loro esperienza di navigazione e alla capacità di evocazione che possono avere parole o espressioni chiave. L'esperienza è un aspetto molto importante di cui tutti ci serviamo: impariamo che determinati contenuti si possono reperire sotto determinati portali, che l'aspetto di un sito può dirci qualche cosa sul genere (formale o informale) delle informazioni. Essa si costruisce nel tempo ma non è molto legata ad aspetti tecnici, al codice e alle applicazioni che costituiscono un sito. L'altro aspetto, quello delle parole chiave, è più legato al codice. Queste caratteristiche non appartengono invece a nessuna applicazione, che in definitiva non è in grado (tranne qualche eccezione limitata e molto complessa, quindi non significativa) di interpretare il contenuto delle pagine . Il termine Web Semantico è stato proposto per la prima volta nel 2001 da Tim Berners-Lee. Da allora il termine è stato associato all'idea di un Web nel quale agiscano agenti intelligenti (creati senza ricorrere all'intelligenza artificiale ad alti livelli), applicazioni in grado di comprendere il significato dei testi presenti sulla rete e perciò in grado di guidare l'utente direttamente verso l'informazione ricercata, oppure di sostituirsi a lui nello svolgimento di alcune operazioni. Un agente dovrebbe essere in grado di: comprendere il significato dei testi presenti sulla rete creare percorsi in base alle informazioni richieste dall'utente, guidandolo poi verso di esse (in alcuni casi si può anche sostituire all'utente) spostarsi di sito in sito collegando logicamente elementi diversi dell'informazione richiesta Come caratteristica ulteriore, dovrebbe verificare l'attendibilità di una informazione (tramite ricerche incrociate o in dipendenza dal contesto) utilizzando un meccanismo che potremmo assimilare alle famigerate catene di S. Antonio. Utilizzando questa tecnologia si può automatizzare la ricerca delle pagine, poiché all'atto della creazione del contenuto delle pagine le informazioni sono definite ed inserite secondo precise regole semantiche (per questo è stato coniato il termine Web Semantico). Il Web Semantico è quindi un nuovo modo di concepire i documenti per il World Wide Web . 6 Secondo la definizione di Tim Berners-Lee. Le possibilità offerte dal Web Semantico sono tante e tali che non si sono ancora approfondite le sue potenzialità. Per questo, più che di tecnologia, si parla divisione del Web Semantico. < 1.1 L’architettura del Web Semantico Scrivere del codice in grado di compiere operazioni semantiche dipende dallo schema utilizzato per archiviare le informazioni. Lo schema (ad esempio uno schema XML) è un insieme di regole sull'organizzazione dei dati. Può definire relazioni fra i dati e può anche esprimere vincoli tra classi di dati. L'idea del Web Semantico nasce estendendo l'idea di utilizzare schemi per descrivere domini di informazione. Dei metadati (sono le informazioni comprensibili da una macchina e relativi ad una risorsa Web o qualche altra cosa, che possono essere estratti da una risorsa o possono essere trasferiti con il documento) devono mappare i dati rispetto a classi, o concetti, di questo schema di dominio. In questo modo si hanno strutture in grado di descrivere e automatizzare i collegamenti esistenti fra i dati. . Il Web Semantico è, come l'XML, un ambiente dichiarativo, in cui si specifica il significato dei dati, e non il modo in cui si intende utilizzarli. La semantica dei dati consiste nel dare alla macchina delle informazioni utili in modo che essa possa utilizzare i dati nel modo corretto, convertendoli eventualmente. Riassumendo, il Web Semantico si compone di tre livelli fondamentali: 1. i dati 2. i metadati riportano questi dati ai concetti di uno schema 3. nello schema si esprimono le relazioni fra concetti, che diventano classi di dati Il Web Semantico ha quindi una architettura a livelli, che però non è stata ancora sviluppata completamente. Ciò avverrà nei prossimi anni. Vediamo ora il diagramma più in dettaglio: 1. il Web Semantico si basa sullo standard [11] URI (Uniform Resource Identifiers), per la definizione univoca di indirizzi Internet 7 2. al livello superiore si trova XML (eXtensible Markup Language), che gioca un ruolo di base con i namespace e gli XML Schema. Con XML è possibile modellare secondo le proprie esigenze, e senza troppi vincoli, la realtà che si considera: per questo è un linguaggio che porta con sé alcune informazioni sulla semantica degli oggetti. Questa libertà lo rende poco adatto, però, a definire completamente la struttura e l'interscambio di informazioni tra diverse realtà, quindi è stata favorita la creazione di un nuovo linguaggio 3. RDF (Resource Description Framework) e RDF Schema, che costituiscono il linguaggio per descrivere le risorse e i loro tipi. Derivano da XML 4. al livello superiore si pone il livello ontologico. Una ontologia permette di descrivere le relazioni tra i tipi di elementi (per es. "questa è una proprietà transitiva") senza però fornire informazioni su come utilizzare queste relazioni dal punto di vista computazionale 5. la firma digitale è di significativa importanza in diversi strati nel modello astratto del Web Semantico. La crittografia a chiave pubblica è una tecnica nota da qualche anno, ma non ancora diffusa su larga scala, forse perché impone una scelta binaria tra fiducia o non fiducia, mentre sarebbe necessaria una infrastruttura in cui le parti possano essere riconosciute e accettate in specifici domini. Con questo accorgimento, la firma digitale potrebbe essere utilizzata per stabilire la provenienza delle ontologie e delle deduzioni, oltre che dei dati 6. il livello logico è il livello immediatamente superiore. A questo livello le asserzioni esistenti sul Web possono essere utilizzate per derivare nuova conoscenza. Tuttavia, i sistemi deduttivi non sono normalmente interoperabili, per cui invece di progettare un unico sistema onnicomprensivo per supportare il ragionamento, si potrebbe pensare di definire un linguaggio universale per rappresentare le dimostrazioni. I sistemi potrebbero quindi autenticare con la firma digitale queste dimostrazioni ed esportarle ad altri sistemi che le potrebbero incorporare nel Web Semantico 1.2 URI ovvero Uniform Resource Identifiers Se vogliamo intraprendere una conversazione, o vogliamo scrivere un testo qualsiasi, dobbiamo prima identificare in maniera univoca l'argomento che vogliamo trattare, altrimenti non potremo riferirci ad esso. Nel Web Semantico è stato definito un sistema di identificatori unificato: sono gli Uniform Resource Identifiers (URI). Il nome deriva dal fatto che ogni elemento identificato viene considerato una risorsa. Gli URI sono utilizzati da RDF per codificare l'informazione in un documento, ed assicurano che i concetti non sono solo parole in un documento, ma sono vincolanti. Gli URI costituiscono la tecnologia di base ideale con la quale costruire un Web globale. Possiamo definire un URI per un qualsiasi oggetto, e qualsiasi cosa che ha un URI può essere condiderato sul Web. Gli URI sono il fondamento del Web : mentre ogni parte del Web stesso può essere rimpiazzata, gli URI no. Anche per identificare le pagine sul Web utilizziamo identificatori: sono i tipi più comuni di URI, gli indirizzi URL (Uniform Resource Locator). Guardando più in profondità si può notare che un URL comunica al computer dove trovare una risorsa specifica. Diversamente da altre forme di URI, un URL allo stesso tempo identifica e localizza. Poiché il Web è troppo 8 esteso per essere essere controllato da una qualsiasi organizzazione, gli URI in massima parte sono decentralizzati. Nessuna persona o organizzazione controlla chi li produce o cosa ne fa. Questa flessibilità rende gli URI potenti, ma porta alcuni problemi. Ad esempio, poiché chiunque può creare un URI, inevitabilmente avremo più URI che rappresentano la stessa cosa; e non c'è modo per determinare se due URI puntano alla stessa risorsa. Perciò non siamo in grado di dire con esattezza cosa significa un URI. Una pratica comune per creare URI è quella di iniziare da una pagina Web. La pagina descrive l'oggetto che deve essere identificato e spiega che l'URL della pagina è l'URI per tale oggetto. Il punto d'arrivo sarà che qualsiasi istanza rappresenterà sia la risorsa fisica, sia la pagina Web che la descrive. Ciò è noto come problema dell'identificazione delle pagine Web. Questo è un fatto importante da comprendere. Un URI non è un insieme di direttive che indicano al computer dove trovare un file specifico nel Web (sebbene lo faccia anche), ma è un nome per una risorsa (una cosa), accessibile o meno attraverso Internet. L'URI può o no fornire un modo per ottenere più informazioni su una risorsa. Altri metodi per fornire informazioni sugli URI e le risorse che essi identificano sono in via di sviluppo. è anche vero che l'abilità di dire cose su di un URI è una parte importante del Web Semantico. Ma non dobbiamo assumere che un URI fa qualcosa di più che fornire un identificatore per una risorsa. David Connelly del W3C ha realizzato una pagina in cui ha raccolto gli schemi URI che sono stati definiti. 1.3 RDF ovvero Resource Description Framework RDF (Resource Description Framework) è uno standard proposto dal W3C come set di linguaggi dichiarativi basato su sintassi XML ed adatto a descrivere la struttura di una parte della realtà. Per realtà intendiamo qualsiasi risorsa sia possibile identificare sulla rete con un indirizzo univoco, mentre per descrizione indichiamo l'insieme delle proprietà, degli attributi e delle relazioni con altre realtà. RDF è lo strumento base per la codifica, lo scambio e il riutilizzo di metadati strutturati, e consente l'interoperabilità tra applicazioni che si scambiano sul Web informazioni machine-understandable. I settori nei quali RDF può essere utilizzato o portare vantaggi sono i più disparati: descrizione del contenuto di un sito Web , o di una pagina, o di una biblioteca digitale implementazione di agenti software intelligenti, per lo scambio di conoscenza e un utilizzo migliore delle risorse Web classificazione del contenuto, per applicare criteri di selezione descrizione di un insieme di pagine, che rappresentano un singolo documento logico stabilire i criteri di proprietà intellettuale delle singole pagine esprimere criteri di privacy preference degli utenti e le privacy policies di un sito Web con il meccanismo della firma digitale, contribuire alla creazione del Web of Trust, per le applicazioni nel commercio elettronico, la cooperazione, etc.. 9 RDF, quindi, non descrive la semantica, ma fornisce una base comune per poterla esprimere, permettendo di definire la semantica dei tag XML. RDF è costituito da due componenti: RDF Model and Syntax: definisce il modello di dati RDF e la sua codifica XML, senza definire alcun livello di gerarchia o di relazione RDF Schema: permette di definire specifici vocabolari per i metadati e creare nessi tra oggetti Quindi da una parte avremo i dati, dall'altra uno schema che definisce come i dati si strutturano e come sono in relazione fra loro; c'è bisogno anche di un livello intermedio in cui tenere traccia di come un dato specifico (istanza) può essere espresso a partire dallo schema. 1.4 L'RDF Data Model RDF fornisce un modello per descrivere le risorse che possono avere delle proprietà (o anche attributi o caratteristiche). Per RDF una risorsa è un qualsiasi oggetto che sia identificabile univocamente mediante un URI. L'RDF Data Model è quindi basato su tre tipi di oggetti: Risorse: una risorsa può essere rappresentata da una pagina, un gruppo di pagine, un'immagine, un server o una qualsiasi altro elemento che abbia un URI Proprietà: una proprietà è una specifica caratteristica o attributo di una risorsa; una proprietà può anche descrivere relazioni con altre risorse Asserzioni: una asserzione è costituita dall'insieme di una risorsa, una proprietà e uno specifico valore per quella proprietà e descrive le caratteristiche di una risorsa e le relazioni con altre risorse Talvolta, è necessario far riferimento a più di una risorsa (un documento può essere composto da una serie di componenti). Per questo scopo RDF definisce tre tipi di container: Bag: è una lista non ordinata di risorse o costanti. Viene utilizzato per dichiarare che una proprietà ha valori multipli, senza alcun significato particolare attribuito al loro ordine (per esempio, i componenti di una commissione). Sono ammessi valori duplicati. Sequence: è una lista ordinata di risorse o costanti. Viene utilizzato per dichiarare che una proprietà ha valori multipli, e che il loro ordine è significativo (per esempio un insieme di nomi di cui si voglia preservare l'ordine alfabetico). Sono ammessi valori duplicati. Alternative: è una lista di risorse o costanti che rappresentano una alternativa per il valore (singolo) di una proprietà. Può essere utilizzato, per esempio, per fornire titoli alternativi in varie lingue. È possibile definire proprietà sia dell'intero container che dei singoli elementi. Non bisogna confondere i container e le proprietà multiple: una risorsa può essere soggetto in più 10 asserzioni, sempre con lo stesso predicato (per esempio, Calvino è autore di "Se una notte d'inverno un viaggiatore", "Le fiabe italiane", "Il barone rampante",...). Si noti che è semanticamente diverso il caso in cui si ha una singola asserzione il cui oggetto è un container contenente vari esemplari. Per esempio, l'asserzione: "La commissione composta da X, Y e Z ha adottato una decisione", non implica che ogni membro della commissione abbia espresso lo stesso parere, come invece sarebbe nel caso di un'asserzione multipla. In alcuni casi, può essere utile poter certificare la credibilità di una particolare asserzione, cioè formulare delle asserzioni relative ad altre asserzioni. Per esempio prendendo la risorsa: http://www.nomesito.it/Dorati/Tesina.html has Author Antonella Dorati viene vista da RDF come un fatto. Invece, l'asserzione: Alessio Crisologo dice che la risorsa http://www.nomesito.it/Dorati/Tesina.html has Author Antonella Dorati non afferma un fatto relativo alla risorsa http://www.nomesito.it/Dorati/Tesina.html ma un fatto relativo all'affermazione di Alessio Crisologo. Per esprimere questo fatto in RDF, dobbiamo modellare l'asserzione come una risorsa con quattro proprietà: soggetto: identifica la risorsa che viene descritta dall'asserzione modellata, quindi il soggetto è la risorsa relativamente alla quale era stato formulato l'asserzione originale (http://www.nomesito.it/Dorati/Tesina.html, nell'esempio) predicato: identifica la proprietà originale nell'asserzione modellata. Il valore del predicato è una risorsa che rappresenta la specifica proprietà nell'asserzione originale (nel nostro esempio, Author) oggetto: identifica il valore della proprietà nell'asserzione modellata. Il valore dell'oggetto è l'oggetto nell'asserzione originale (nel nostro esempio:"Antonella Dorati") tipo descrive il tipo della nuova risorsa Una nuova risorsa con queste quattro proprietà rappresenta l'asserzione originale, e può essere utilizzata come oggetto di altre asserzioni e avere ulteriori asserzioni che lo riguardano. Nell'ambito della comunità che si interessa di Knowledge Representation, questo processo prende il nome di reificazione, e il modello di asserzione reified statement. 11 1.5 RDF Schema I namespace XML forniscono un metodo per identificare in maniera non ambigua la semantica e le convenzioni che regolano l'utilizzo delle proprietà identificando l'authority che gestisce il vocabolario. Uno degli esempi più noti di queste autority è la Dublin Core Initiative che definisce, ad esempio, il campo Subject and Keywords nel seguente modo: Name: Subject and Keywords Identifier: Subject Definition: The topic of the content of the resource. Comment: Typically, a Subject will be expressed as keywords, key phrases or classification codes that describe a topic of the resource. Recommended best practice is to select a value from a controlled vocabulary or formal classification scheme. Si può quindi utilizzare un namespace XML per identificare in maniera non ambigua lo schema per il vocabolario Dublin Core puntando alla risorsa Dublin Core che ne definisce la semantica. L'RDF Data Model permette di definire un modello semplice per descrivere le relazioni tra le risorse. Tuttavia non fornisce alcun meccanismo per dichiarare queste proprietà, né per definire le relazioni tra queste proprietà ed altre risorse. RDF Schema permette di definire dei vocabolari, quindi l'insieme delle proprietà semantiche individuato da una particolare comunità. RDF Schema permette definire significato, caratteristiche e relazioni di un insieme di proprietà, compresi eventuali vincoli sul dominio e sui valori delle singole proprietà. Inoltre, implementando il concetto (transitivo) di classe e sottoclasse, consente di definire gerarchie di classi, con il conseguente vantaggio che gli agenti software possono utilizzare queste relazioni per svolgere i loro compiti. 12 1.6 I metadati Adesso abbiamo uno schema, costruito per la risorsa localizzabile all'URL http://www.nomesito.it/nomecorso/nomecorso.html. Descriviamo ora qualche metadato e cerchiamo di capire come questa risorsa si relaziona al nostro schema. La dichiarazione iniziale non necessita del namespace rdfs. <?xml version='1.0' encoding='ISO-8859-1'?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:a=" http://www.nomesito.it/data/nomeontologia#"> <a:Corso rdf:about="http://www.nomesito.it/nomecorso/nomecorso.html"> <a:Titolo="nomecorso"/> </a:Corso> <a:Argomento rdf:about="http://www.nomesito.it/nomecorso/nomecorso.html" a:Titolo="nomeargomento1"/> </a:Argomento> <a:Argomento rdf:about="http://www.nomesito.it/nomecorso/nomecorso.html" a:Titolo="nomeargomento2"/> </a:Argomento> </rdf:RDF> Per il momento abbiamo prodotto dei metadati molto semplici. Abbiamo detto che la prima risorsa è un corso dal titolo nomecorso. Poi abbiamo detto che questa stessa risorsa è legata a due argomenti diversi. I metadati sono costituiti tutti da asserzioni. Ogni asserzione è costituita, da un punto di vista logico, da una tripla in cui sono presenti tre elementi fondamentali: soggetto predicato oggetto Il soggetto sarà generalmente la classe di uno schema ma potrà anche essere la classe di uno schema diverso (usando l'URI per identificarla), il predicato sarà sempre una proprietà della classe (che può però puntare ad un'altra classe), l'oggetto un dato: può essere o una stringa, oppure un'altra classe dello schema, o ancora una classe di schemi differenti (per collegare due schemi fra di loro). Queste triple possono essere scritte utilizzando tag XML. In RDF, in un documento si fanno asserzioni che determinati oggetti hanno proprietà con certi valori. Questa struttura è un modo naturale per descrivere la maggior parte dei dati processati dalle macchine. Soggetto e oggetto sono identificati da un URI, come si usa nei link alle pagine Web. I predicati sono ugualmente identificati da URI; ciò permette a chiunque di definire nuovi concetti solo definendo un URI ad essi da 13 qualche parte nel Web. Le triple di RDF formano ragnatele di informazioni su cose che sono in relazione. Poiché RDF utilizza queste informazioni per codificare queste informazioni in un documento, l'URI assicura che questi concetti non sono solo parole in un documento ma sono legati ad una definizione unica che chiunque può trovare sul Web. Per ottenere maggiore espressività questa regola può essere espansa. In realtà le classi dello schema possono essere espresse come URL. Ogni schema è identificabile da un namespace e attraverso il namespace di uno schema si può identificare la classe. La nostra classe #Argomento, sostituendo il cancelletto con lo schema dichiarato in cima al documento, potrebbe essere espansa come http://miosito/rdfs/nomeschema/Argomento In questo modo si può notevolmente ampliare la capacità espressiva delle asserzioni RDF. La struttura a tripla delle asserzioni è molto flessibile e abbastanza potente. La potenza può essere ampliata se si collegano fra loro più asserzioni. Le asserzioni si possono collegare facilmente tramite degli ID. <a:Corso rdf:about="http://www.nomesito.it/nomecorso/nomecorso.html"> <a: Livello_di_Spec= "http://www.nomesito.it/data/nomeontologia/model.rdf#ID_13"/> </a:Corso> <a:Specializzazione rdf:about="http://www.nomesito.it/data/nomeontologia/model.rdf#ID_13" a:Preparazione_Utenti="alta"/> </a:Specializzazione> <a:Specializzazione rdf:about="http://www.nomesito.it/data/nomeontologia/model.rdf#ID_13" a:Utenti="http://www.nomesito.it/data/nomeontologia/model.rdf#ID_14"/> </a:Specializzazione> <a:Utenti rdf:about="http://www.nomesito.it/data/nomeontologia/model.rdf#ID_14" a:nome="nomeutenti"/> </a:Specializzazione> 1.7 RDF ed XML Rispetto a XML, di cui è un figlio, RDF ha alcuni vantaggi, come per esempio la possibilità di definire agevolmente il tipo e le proprietà degli oggetti (si tratta sempre di un insieme definito di risorse, proprietà e valori). RDF limita e focalizza alcune caratteristiche di XML per renderlo un linguaggio rivolto alla descrizione di un oggetto, delle sue proprietà, e delle relazioni con gli altri oggetti. Le differenze tra RDF e XML sono fondamentalmente due: RDF è stato pensato espressamente per esprimere metadati. XML fa molte cose, e può anche essere usato per descrivere metadati, ma generalmente ha un rapporto molto più stretto con i 14 dati, contiene già in sé dei dati che possono essere richiamati. RDF esprime metadati, nel senso più proprio: descrive contenuti di un documento che in esso non sono presenti XML è centrato su una struttura a inclusione, riesce perciò ad esprimere senza difficoltà le relazioni di parentela o di essere parte di, ma per le altre relazioni dimostra dei limiti. Se volessi esprimere una relazione associativa fra due classi, cioè dire che esse hanno una relazione ma non sono incluse una nell'altra, con XML devo ricorrere agli ID e agli IDREF 1.8 Ontologie Gli RDF Schema hanno però alcune limitazioni. Non è ad esempio possibile definire due classi come equivalenti, magari perché realizzate da autori diversi (che quindi possono avere utilizzato diversi identificatori per definire il medesimo concetto). Non è neppure possibile limitare puntualmente il numero di proprietà da usare (per esempio: ogni corso ha uno e un solo argomento). Per colmare queste lacune sono allora state introdotte le ontologie o OWL (Web Ontology Language), collezioni di informazioni. Il più comune tipo di ontologia per il Web ha una tassonomia e un insieme di regole di inferenza. La tassonomia definisce classi di oggetti e relazioni tra di essi. Classi, sottoclassi, e relazioni tra entità sono un tool potente per l'uso per il Web. Possiamo esprimere un largo numero di relazioni tra le entità assegnando proprietà alle classi e permettendo che le sottoclassi ereditino tali proprietà. L'OWL è un vocabolario XML che consente di definire, come gli RDF Schema, classi, proprietà e relazioni. A differenza degli RDF Schema, che estende, OWLaumenta le inferenze che un software è in grado di compiere. Utilizzando OWL è possibile riconoscere che due parti di un documento stanno descrivendo la stessa realtà, utilizzando però una terminologia diversa. Riprendiamo l'esempio precedente, e supponiamo che il corso sia stato espresso in termini di <NomeCorso> invece di < Corso >. Le ontologie sono utilizzate per definire dei metadati che descrivano dei testi. Il loro utilizzo permette di recuperare documenti esprimendo query complesse. Si parte da concetti semplici, ma si può raffinare la ricerca esprimendo vere e proprie asserzioni composte da un soggetto un predicato ed un oggetto. Si può insomma fare una richiesta del tipo: aziende (soggetto) che hanno come servizio (predicato) la fornitura di scarpe (oggetto). Questa query è radicalmente diversa da quella che si potrebbe fare ad un motore di ricerca. In questo caso si potrebbero proporre tutti e tre i concetti di azienda di servizio e di scarpe, ma non potremmo mai esprimere il legame fra di essi. Da qui derivano appunto le imprecisioni dei motori di ricerca . L'uso di ontologie nella navigazione di basi di dati è certamente interessante ma molto riduttivo. Le ontologie sono innanzi tutto degli schemi e come tali hanno lo scopo di organizzare un dominio. Questo può essere molto utile nei processi produttivi di una comunità ristretta. Una informazione solitamente non ha valore solo in una fase del processo produttivo, la stessa informazione può essere utile in situazioni diverse. Più spesso non è l'intera unità informativa ad essere recuperabile ma una parte di essa. Questo richiede uno schema di organizzazione dei dati in grado di suddividere il dominio in tutte le classi di oggetti che hanno un ruolo nei suoi processi. Le ontologie diventeranno probabilmente lo strumento più potente a disposizione di queste politiche; e se queste ultime intendono servirsi di Internet come infrastruttura, i linguaggi del Web Semantico diventano una risorsa applicativa indispensabile. Anche se i livelli più alti dell'architettura potranno richiedere diversi anni prima di poter raggiungere uno stadio in cui siano effettivamente implementati e affidabili, già esiste una quantità 15 significativa di lavoro nel settore delle ontologie. Le soluzioni pratiche includono l'uso di XSLT per derivare RDF da documenti XML, la comparsa di database e motori di ricerca RDF di tipo generalizzato, interfacce grafiche generalizzate e specifiche per RDF. La prima cosa che dobbiamo perciò chiederci quando modelliamo un ontologia è questa: cosa vogliamo dire o fare dei nostri oggetti, come li chiamiamo in causa. In alcuni casi potremmo voler descrivere documenti che trattano di quegli oggetti. In altri casi possiamo aver bisogno di tenere traccia di un processo produttivo. In altri ancora tenere traccia delle scelte e delle attività operate da un utente. Il processo nel quale dovrà essere inserito lo schema, diventa il punto focale della modellazione. Se siamo in grado di metterlo in luce con chiarezza sapremo quali oggetti descrivere. Solitamente si definiscono ontologie di scopo (task ontology) quelle che rappresentano la struttura dei processi. Le ontologie che forniscono gli oggetti specifici della nostra applicazione vengono invece dette ontologie di dominio (domain ontology). 16 Capitolo 2 : I Triplestore I triplestore sono dei database realizzati appositamente per la memorizzazione ed il recupero di triple RDF. Proprio come un database relazionale, è possibile memorizzare le informazioni in un triplestore e poi le recuperarle attraverso un linguaggio di query, in questo caso SPARQL. Si distinguono i seguenti triplestore in base alla loro architettura: In-memory: essi memorizzano il grafo RDF nella memoria principale. Native: una seconda categoria ora dominante è quella dei triplestore nativi. Essi implementano un database engine completo, ottimizzato per l’elaborazione di dati RDF ed opera indipendentemente da ogni altro Database Management System (DBMS). I dati sono memorizzati direttamente sul file system. Non-native non-memory: tali triplestore sono impostati per essere eseguiti su database di terze parti, usufruiscono delle funzionalità di archiviazione e recupero dei DBMS esistenti. È possibile dividere questo modello in: Generic Schemas in cui i dati RDF vengono memorizzati a prescindere da qualsiasi ontologia in una tabella simile alla struttura tripla di un RDF, ossia in una tabella a tre colonne (soggetto-predicato-oggetto). Il vantaggio di tale approccio è chiaramente la flessibilità ottenuta dalla rappresentazione dei dati, il principale svantaggio è l’elevato numero di selfjoins che sono necessari per rispondere alle query non banali. Ontology-specific Schemas in cui i dati RDF non vengono memorizzati in una singola tabella ma viene creato uno schema che rifletta le proprietà strutturali delle ontologie in atto. Si possono distinguere tre sottomodelli: 1) “Horizontal representation” oppure “one-table-per-class schema”: ogni classe dell’ontologia si riflette in una tabella del database che contiene tutte le istanze di tale classe. Lo svantaggio principale di tale approccio è quello di ristrutturare le tabelle del database ogni volta che cambia l’ontologia e, inoltre, manca il sostegno per valori multipli della proprietà. 2) ”Decomposition storage model” oppure “one-table-per-property schema”: ogni proprietà si riflette in una tabella composta da due colonne (soggetto e oggetto). Lo svantaggio di questo modello è l’inefficienza delle query quando si tratta di query complesse perché genera molti join tra le tabelle proprietà. 3) “Hybrid Schemas”: sono più comuni e combinano i vantaggi di entrambi i modelli. 2.1 Triplestore benchmark Oltre allo sviluppo dei database RDF e di linguaggi di interrogazione adeguati ai triplestore, sono state realizzate anche appropriate tecniche di valutazione (benchmark). I benchmark principali messi a disposizione e quelli più usati sono: SPARQL (Simple Protocol And RDF Query Language): è un linguaggio per l'interrogazione e il recupero dei dati espressi in RDF nonché un protocollo di accesso ai dati per il Web Semantico, e il 15 gennaio 2008 è stato standardizzato dallo SPARQL Working Group del W3C. SPARQL consiste di tre specifiche: - SPARQL Query Language specification che costituisce il nucleo. - SPARQL Query Results Format specification che descrive un formato XML per serializzare il risultato di una query. -SPARQL Protocol for RDF specification che definisce protocolli semplici HTTP e SOAP per fare le query in remoto su basi di dati RDF: permette a un generico cliente di interrogare uno o più 17 endpoint SPARQL (interfaccia per gli utenti nella forma di un’applicazione stand-alone oppure web-based) inviando una richiesta espresa nel linguaggio di interrogazione e ricevendo come risposta il risultato in un formato XML. Di fronte ad una grande quantità di documenti RDF pubblicata in rete, inizia a prendere forma un Web leggibile per le macchine. In questo contesto è necessario disporre di un meccanismo per individuare informazioni specifiche nel Web di Dati. È in questo contesto che si colloca SPARQL. I vantaggi principali di avere un linguaggio come SPARQL sono: - fare le query a dei grafici RDF per ricevere informazioni specifiche. - fare le query ad un server remoto RDF e ricevere indietro i risultati in streaming. - eseguire delle query in automatico verso insiemi di dati RDF per generare resoconti. Entrando più nell’aspetto sintattico,consideriamo a titolo di esempio, una semplice query SPARQL: PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?c WHERE { ?c rdf:type rdfs:Class . } RDF (Triplestore) Database 30 Questa query recupera tutti i modelli di triple in cui la proprietà è rdf: type e l'oggetto è rdfs: Class. In altre parole, questa query, una volta eseguita, recupera tutte le classi. Si noti che, come abbiamo visto in precedenza il meccanismo dei namespace per scrivere RDF in XML, SPARQL ci permette di definire dei prefissi per i namespace e utilizzare questi nel modello di query, per rendere le query più breve e più leggibile. SPARQL non assume alcun impegno esplicito per supportare la semantica RDFS. Pertanto, il risultato di una query dipende dall’opportunità o meno che il sistema che sta rispondendo alla query supporti la semantica RDFS. Le query SPARQL hanno una struttura del tipo SELECT-FROM-WHERE: - SELECT specifica la proiezione: il numero e l'ordine dei dati recuperati. - FROM viene utilizzata per specificare la risorsa interrogata, questa clausola è facoltativa, quando non specificata possiamo semplicemente assumere che stiamo interrogando la base di conoscenza di un particolare sistema. - WHERE impone limitazioni sulle possibili soluzioni nella forma di template grafici e vincoli booleani (in SPARQL usando una condizione di filtro). Oltre a prevedere la clausola SELECT come in SQL, offre anche altri costrutti. E’ possibile infatti prevedere che: - non si conosce a priori lo schema dei dati. Per risolvere questo problema SPARQL ha la clausola DESCRIBE, che permette di ottenere una descrizione della risorsa cercata. - si presenti la necessità di sapere se un certo enunciato o un certo pattern di dati sia presente nella sorgente dati. Per questo motivo SPARQL propone la clausola ASK. • Lehigh University Benchmark (LUBM): è stato sviluppato per facilitare la valutazione dei repository del Semantic Web in modo standard e sistematico. Il benchmark ha lo scopo di valutare le prestazioni di tali archivi su un set di dati di grandi dimensioni. L’ontologia utilizzata dal benchmark è chiamata Univ-Bench, descrive le università e i dipartimenti e le attività che si verificano in esse. Il benchmark è formato da 14 query, scritte in SPARQL, scelte affinché fossero più realistiche possibili e tenessero conto di fattori come la dimensione dell’input, la selettività, la complessità ecc. • Berlin SPARQL Benchmark (BSBM): fornisce un benchmark sulle prestazioni delle query utilizzando SPARQL. Il BSBM è composto da 12 query che vengono eseguite a frequenze diverse, nel contesto di un caso d'uso e-commerce. Il caso d’uso di e-commerce è realizzato eseguendo più volte variazioni delle 12 query in un “mix query” composto da 25 query che simulano una ricerca di prodotti da parte di un singolo consumatore. Questo benchmark include un generatore di dati e un 18 test suit. Il generatore di dati è in grado di costruire una quantità scalabile di dati in formato RDF/XML basati su un caso d’uso di e-commerce. Il funzionamento del test suite, invece, si basa su un caso d’uso preso dalla vita reale, l’esecuzione delle varie query imitano il comportamento degli operatori umani. Nella sua ultima versione sono stati aggiunti altri due casi d’uso uno ‘Explore and Update’, in cui si simulano operazioni di scrittura/lettura con l’aggiunta di update query, e l’altro ‘Intelligence Business’, in cui si simula l’escuzione di domande analitiche sui dataset. 19 Capitolo 3 : Virtuoso Openlink Virtuoso è un innovativo data server multi-modello, esso offre una soluzione, indipendente dalla piattaforma, per la gestione dei dati, l'accesso e l’integrazione. L’architettura ibrida del server Virtuoso consente di offrire le funzionalità del server tradizionale all’interno di un offerta unica che copre le seguenti aree: Relational Data Management ; RDF Data Management ; XML Data Management ; Free Text Content Management & Full Text Indexing ; Document Web Server ; Linked Data Server ; Web Application Server ; Web Services Deployment (SOAP or REST) ; Virtuoso è quindi un database ibrido che combina in un unico sistema le funzionalità di un tradizionale RDBMS, ORDBMS, virtual database, RDF, XML, web application server e file server. Piuttosto che avere server dedicati per ogni funzionalità sopra elencate Virtuoso fornisce un accesso trasparente alle fonti di dati esistenti, che sono in genere banche dati di fornitori di database diversi. Come DBMS relazionale offre un po' tutte le caratteristiche che offrono gli RDBMS tipici come MySQL e simili. Ovviamente supporta il linguaggio SQL, inoltre mette a disposizione molte funzioni utili. Per quanto riguarda invece le sue funzionalità come Triple Store, il modello di dati utilizzato è il modello a grafo, che è quello utilizzato dalla maggior parte dei Triple Store che non si basano su database relazionali. E' possibile interrogarlo tramite il linguaggio SPARQL , eseguire update tramite SPARUL ed è possibile importare ed esportare dati in formato RDF. I formati di serializzazione RDF supportati sono HTML+RDFa, RDF-JSON, N3, Turtle, TriG, TriX e RDF/XML. Virtuoso ha guadagnato un notevole interesse in quanto è utilizzato per ospitare molti importanti Linked open Date (ad esempio, DBpedia). Virtuoso viene offerto sia in una versione open-source che in una commerciale. 20 Un'altra caratteristica molto interessante è che è molto semplice esporre le funzionalità di Virtuoso come web services. Infatti supporta può essere interrogato sia utilizzando SOAP che REST. Si possono scrivere delle stored procedures e pubblicarle direttamente come servizi, con tanto di generazione automatica del WSDL. Inoltre è possibile in qualche modo riutilizzare anche i web service scritti in Java, modificando un po il codice per eseguire una sorta di wrap. E' possibile riutilizzare anche i servizi scritti in linguaggi della piattaforma .NET. Infine è disponibile un'estensione per poter utilizzare Virtuoso come motore BPEL4WS. Grazie a questa è possibile organizzare le orchestrazioni dei servizi facendone il deploy direttamente nel DBMS. Inoltre poter gestire i dati, i servizi e magari anche le orchestrazioni da un unico punto semplifica parecchio la gestione. La versione open source ovviamente ha qualche limitazione, non supporta infatti la replicazione dei dati e quello che chiamano "Virtual Database Engine", che permette di eseguire query SQL su database multipli remoti. Su sistemi come Ubuntu, per esempio, sono disponibili già i binari installabili dal gestore di pacchetti. Su Windows invece per poterlo compilare c'è bisogno di strumenti come Visual Studio ecc. 21 3.1 Architettura Virtuoso è stato progettato per sfruttare il supporto threading del sistema operativo e più CPU. .Più thread possono funzionare la minima interferenza con l'altro. La base di dati ha in ogni momento uno stato checkpoint pulito e un insieme di cambiamenti impegnati o non impegnati a questo stato checkpoint. In questo modo è possibile fare una copia di backup dello stato checkpoint mentre le operazioni procedono sullo stato commit. Un file di registro delle transazioni registra tutte le transazioni dall'ultimo checkpoint. File di log delle transazioni possono essere conservati e archiviati per un tempo indefinito, fornendo una completa, storia recuperabile del database. Un singolo set di file è utilizzata per memorizzare tutte le tabelle. Un insieme separato di file viene utilizzato per tutti i dati temporanei. La dimensione massima di un set di file è di 32 terabyte, per 4G × 8K pagine. 3.2 Blocco Virtuoso fornisce blocco dinamico, iniziando con i blocchi a livello di riga e l'escalation di blocchi a livello di pagina quando un cursore in possesso di una grande percentuale di righe di una pagina o quando si ha una storia di bloccaggio intere pagine. Virtuoso SQL fornisce i mezzi per la lettura esclusiva e per l'impostazione di isolamento delle transazioni. 3.3 Le operazioni Tutti e quattro i livelli di isolamento sono supportati: lettura dirty, leggere commesso, lettura ripetibile e serializzabile. Il livello di isolamento può essere specificata operazione per operazione all'interno di una singola transazione. Virtuoso può anche agire come un gestore di risorse e / o coordinatore di transazione sotto Distributed Transaction Coordinator di Microsoft ( MS DTC ) 3.4 L'integrità dei dati Virtuoso ORDBMS database supporta l'integrità di entità e integrità referenziale . Virtuoso assicura che le relazioni tra i record nelle tabelle correlate siano valide applicando l'integrità referenziale . Vincoli di integrità sono: NOT NULL - Entro la definizione di una tabella, Virtuoso consente ai dati di contenere un valore NULL. Questo valore NULL non è davvero un valore a tutti ed è considerata l'assenza di valore. Il vincolo di NOT NULL forza un valore da dare a una colonna. Unique Key - Unicità per una colonna o un insieme di colonne significa che i valori in quella colonna o insieme di colonne devono essere diversa da tutte le altre colonne o un insieme di colonne in tale tabella. Una chiave univoca può contenere valori NULL in quanto sono per definizione un valore non-valore unico. Chiave primaria - chiave primaria sono molto simile chiavi univoche, tranne che essi sono progettati per identificare in modo univoco una riga in una tabella. Essi possono essere costituiti da una singola colonna o più colonne. La chiave primaria non può contenere un valore NULL. 22 Vincolo CHECK - Virtuoso fornisce su una colonna di un vincolo di integrità che richiede determinate condizioni che devono essere soddisfatte prima che i dati viene inserito o modificato. Se i controlli non sono soddisfatti, allora l'operazione non può essere completata. 3.5 Componenti e file Virtuoso è costituito da componenti client e server. Questi componenti tipicamente comunicano con un server Virtuoso locale o remoto, che comprendono: Driver Virtuoso per ODBC , JDBC , ADO.NET e OLE DB una interfaccia utente di amministrazione di database web-based ISQL (Interactive SQL) e ISQO Utilities Documentazione ed esercitazioni Esempi Le installazioni sono dotati di due database: uno di default e un database demo. 3.6 Protocolli implementati Virtuoso supporta una vasta gamma di protocolli Web & Internet standard di settore che includes: HTTP , WebDAV , CalDAV , CardDAV , SOAP , UDDI , WSDL , WS-Policy , WS-Security , WSReliableMessaging , WS-Routing , WS-Referral , WS-Attachment , WSBPEL , SyncML , GData , SPARQL , SPARUL , NNTP 3.7 API di supporto Per lo sviluppatore e sistemi di applicazione di database integratore, Virtuoso implementa una serie di API di accesso ai dati standard del settore (client e server) che include: ODBC , JDBC , OLE DB , ADO.NET , ADO.NET Entity Framework , XMLA Content syndication e il supporto per il formato di interscambio Per lo sviluppatore di applicazioni Web e sindacato contenuti (s) editori e consumatori, Virtuoso supporta standard quali: Atom , RSS 2.0 , RSS 1.0 , OPML , XBEL , FOAF , SIOC 3.8 Virtuoso RDF Triple Store Molti database relazionali sono stati utilizzati per la memorizzazione di triple RDF . Sono presenti anche approcci non-relazionali, come l'utilizzo di indici bitmap come supporto di memorizzazione primario per triple sono state attuate. Virtuoso offre l'IRI come un tipo di dati incorporato, distinto da qualsiasi altro dato. Questo consente una rappresentazione a colonna singola di un oggetto di un triple. Dal momento che un qualsiasi valore è una parte chiave valida con un ordine ben definito di confronto tra i tipi di dati non comparabili, gli indici possono essere costruiti utilizzando l'oggetto di un triple. In casi selezionati, l'indicizzazione di testo può essere desiderata per gli oggetti di alcuni triple. Questo non è direttamente supportato in SPARQL. Le regole del cast typing di SPARQL e SQL differiscono. Con queste caratteristiche in luogo, SPARQL può essere efficacemente tradotto in SQL senza 23 introdurre comandi supplementari inutili o altro disordine. Inoltre Virtuoso può fornire un mix di tutte queste opzioni di archiviazione. 24 Conclusioni Nonostante il web sia uno strumento utile per il recupero, l'elaborazione e la trasmissione delle informazioni e della conoscenza, rimane, ancora e soprattutto, una gigantesca biblioteca di pagine HTML (statiche e dinamiche) online. I motori di ricerca attuali sono in grado, secondo ben precise istruzioni, di disporre e visualizzare le informazioni in una certa maniera, ma non hanno capacità di riconoscerle o attribuire loro un particolare significato per elaborarle, questo poiché effettuano solo ricerche di tipo sintattico basate su insieme di parole chiave. Il linguaggio, proposto dal W3C, per la rappresentazione delle informazioni riguardo le risorse del Web è RDF (Resource Description Framework). L’RDF ci permette di effettuare semplici affermazioni sulle risorse, tali affermazioni sono costituite da una tripla soggetto-predicato-oggetto in cui il soggetto è la parte che identifica ciò che l'affermazione descrive, il predicato è la parte che identifica la proprietà o le caratteristiche del soggetto e l’oggetto è la parte che identifica il valore della proprietà. Nascono così i primi database realizzati appositamente per la memorizzazione ed il recupero di triple RDF, i cosiddetti triplestore. L’obiettivo principale di elaborato di tesi è stato quello di introdurre i concetti relativi al Web semantico e approfondire le tematiche riguardanti i triple store. Abbiamo introdotto un tipo di triple store come Virtuoso analizzandone le caratteristiche principali, gli ambiti applicativi, i pregi e i difetti. 25 Bibliografia [1]T. Berners-Lee, J. Hendler, O. Lassila, May 2001 “The Semantic Web”, Scientific American [2]http://aprogrammerblog.blogspot.it/2012/06/virtuoso-universal-server-un-dbms-per.html17/09/2014 [3] http://www.websemantico.org/articoli/approcciwebsemantico.php- 18/09/2014 [4] Ontologia, http://it.wikipedia.org/wiki/Ontologia_(informatica) [5] Triplestore, http://en.wikipedia.org/wiki/Triplestore [6] http://en.wikipedia.org/wiki/Virtuoso_Universal_Server - 23/09/2014 [7] http://docs.openlinksw.com/virtuoso/ - 23/09/2014 [8] http://virtuoso.openlinksw.com/dataspace/doc/dav/wiki/Main/VOSTriple - 29/09/2014 26 27