13.06.2013 Views

laurea magistrale in ingegneria del cinema e dei mezzi di ...

laurea magistrale in ingegneria del cinema e dei mezzi di ...

laurea magistrale in ingegneria del cinema e dei mezzi di ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

LAUREA MAGISTRALE IN INGEGNERIA DEL<br />

CINEMA E DEI MEZZI DI COMUNICAZIONE<br />

INTEGRAZIONE DI CONTENUTI DI TIPO SEMANTICO<br />

NEL SISTEMA DOCUMENTALE DOQUI<br />

Laureando: Gabriele Manna<br />

Relatore: Fulvio Corno<br />

Tutor aziendale: Louis Bono


«Fear can hold you prisoner. Hope can set you free.»<br />

“The Shawshank Redemption” written and <strong>di</strong>rected by Frank Darabont, 1994.<br />

1


R<strong>in</strong>grazio la mia fidanzata, nonché compagna <strong>di</strong> vita, per essermi stata sempre<br />

vic<strong>in</strong>o supportandomi e “sopportandomi” <strong>in</strong> questi ultimi anni <strong>di</strong> stu<strong>di</strong>o.<br />

R<strong>in</strong>grazio la mia famiglia per avermi dato questa possibilità e per avermi<br />

assecondato <strong>in</strong> tutte le mie scelte.<br />

2


INDICE<br />

INTRODUZIONE .......................................................................................................................... 5<br />

CAPITOLO 1 - IL WEB .................................................................................................................. 8<br />

1.1 IL WORLD WIDE WEB ........................................................................................................ 9<br />

1.2 IL SUCCESSO DEL WEB .................................................................................................... 10<br />

1.3 FONDAMENTA DEL WEB ................................................................................................. 11<br />

1.4 IL WEB DI IERI .................................................................................................................. 12<br />

1.5 IL WEB DI OGGI ............................................................................................................... 12<br />

1.5.1 Primo elemento: XML .............................................................................................. 13<br />

1.5.2 Secondo elemento: Web Service ............................................................................. 14<br />

1.5.3 Terzo elemento: Ajax ............................................................................................... 16<br />

CAPITOLO 2 - LA LOGICA DEL SEMANTIC WEB ........................................................................ 17<br />

2.1 INTRODUZIONE AL SEMANTIC WEB ............................................................................... 18<br />

2.2 COS’È IL SEMANTIC WEB ................................................................................................. 18<br />

2.2.1 Approfon<strong>di</strong>mento sul Semantic Web secondo Tim Berners-Lee ............................. 20<br />

2.3 LA PILA DEL SEMANTIC WEB ........................................................................................... 22<br />

2.4 CHE COS’È UN’ONTOLOGIA ............................................................................................ 24<br />

2.5 LE METROPOLITANE DEL SEMANTIC WEB ...................................................................... 25<br />

CAPITOLO 3 - RDF E SPARQL .................................................................................................... 26<br />

3.1 IL LINGUAGGIO RDF ........................................................................................................ 27<br />

3.2 RDF DATA MODEL ........................................................................................................... 28<br />

3.3 LA SINTASSI N3 ................................................................................................................ 30<br />

3.4 LA SINTASSI RDF/XML ..................................................................................................... 31<br />

3.5 RDF SCHEMA ................................................................................................................... 32<br />

3.5.1 Esempio <strong>di</strong> un RDF Schema ...................................................................................... 34<br />

3.6 RDF OLTRE XML ............................................................................................................... 36<br />

3.7 SPARQL ............................................................................................................................ 37<br />

3.7.1 Le path expression ................................................................................................... 38<br />

3.7.2 Output <strong>di</strong> una query <strong>in</strong> formato XML ....................................................................... 41<br />

3.7.3 Framework SPARQL .................................................................................................. 43<br />

3


CAPITOLO 4 - DOQUI ................................................................................................................ 44<br />

4.1 CHE COS'È DOQUI ........................................................................................................... 45<br />

4.2 OBIETTIVI ......................................................................................................................... 45<br />

4.3 INNOVAZIONE ................................................................................................................. 46<br />

4.3.1 L’approccio alla gestione documentale ................................................................... 47<br />

4.3.2 Il mo<strong>del</strong>lo <strong>di</strong> sviluppo ............................................................................................... 48<br />

4.3.3 Le scelte tecnologiche .............................................................................................. 48<br />

4.4 COMPONENTI DEL SISTEMA ........................................................................................... 48<br />

4.5 STRUTTURA DOQUI ......................................................................................................... 50<br />

CAPITOLO 5 - DEFINIZIONE DEL PROBLEMA ........................................................................... 52<br />

5.1 OBIETTIVI GENERALI ....................................................................................................... 53<br />

5.2 CASO DI STUDIO .............................................................................................................. 54<br />

5.3 REALIZZAZIONE INTERFACCIA ......................................................................................... 55<br />

CAPITOLO 6 - VERSIONE BASATA SU RDF E SPARQL .............................................................. 58<br />

6.1 TIPOLOGIA DI INFORMAZIONI ........................................................................................ 59<br />

6.2 MODELLO ........................................................................................................................ 60<br />

6.3 TOOLKIT SPARQL ............................................................................................................. 63<br />

6.3.1 Impostazioni <strong>in</strong>iziali .................................................................................................. 63<br />

6.3.2 Requisiti <strong>del</strong> database .............................................................................................. 63<br />

6.3.3 Esempio <strong>di</strong> query utilizzate ...................................................................................... 64<br />

CAPITOLO 7 - VERSIONE BASATA SU INDEX ............................................................................ 67<br />

7.1 PRIMO APPROCCIO AD INDEX ........................................................................................ 68<br />

7.2 DUE POSSIBILI SOLUZIONI ............................................................................................... 70<br />

7.3 SOLUZIONE ADOTTATA ................................................................................................... 71<br />

7.4 CUSTOM CONTENT MODEL ............................................................................................ 74<br />

CAPITOLO 8 - VALUTAZIONI .................................................................................................... 78<br />

8.1 CONFRONTI ..................................................................................................................... 79<br />

CONCLUSIONI ........................................................................................................................... 84<br />

GLOSSARIO ............................................................................................................................... 87<br />

BIBLIOGRAFIA ........................................................................................................................... 93<br />

SITOGRAFIA .............................................................................................................................. 94<br />

4


INTRODUZIONE<br />

5


INTRODUZIONE<br />

L’esplosione <strong>del</strong> fenomeno <strong>del</strong> Web 2.0 ha da un lato portato alla luce una serie <strong>di</strong> nuove<br />

modalità <strong>di</strong> <strong>in</strong>terazione e <strong>di</strong> potenzialità abilitate dal Web, dall’altro ha mostrato come<br />

l’evoluzione <strong>del</strong> Web sia un cont<strong>in</strong>uo work <strong>in</strong> progress. Per fare <strong>in</strong> modo che il Web<br />

raggiunga le sue piene potenzialità è necessario puntare ad un ulteriore avanzamento<br />

tecnologico che porti il Web ad essere, da uno spazio <strong>di</strong> semplice con<strong>di</strong>visione <strong>di</strong> documenti<br />

pensati per la fruizione da parte <strong>del</strong>le persone, una piattaforma per la pubblicazione e il<br />

recupero <strong>di</strong> dati strutturati attraverso processi logici ed elaborazioni automatiche da parte<br />

<strong>del</strong>le macch<strong>in</strong>e.<br />

Questa parte <strong>del</strong>l’evoluzione <strong>del</strong> Web sta accadendo <strong>in</strong> questi anni e si concretizza nel<br />

Semantic Web. Riportando le parole pronunciate da Tim Berners-Lee, co-<strong>in</strong>ventore <strong>in</strong>sieme a<br />

Robert Cailliau <strong>del</strong> World Wide Web, <strong>in</strong> occasione <strong>del</strong> suo <strong>in</strong>tervento <strong>in</strong>titolato “The next<br />

Web of open, l<strong>in</strong>ked data” al TED 2009 1 , “la nostra vita è costellata <strong>di</strong> dati e <strong>in</strong>formazioni che<br />

<strong>in</strong> gran parte già mettiamo sul Web: perché non fare <strong>in</strong> modo che questi dati pubblicati sul<br />

Web siano ‘semanticamente’ connessi, così da abilitare nuove applicazioni e creare nuove<br />

opportunità?”.<br />

Questa tesi ha per oggetto proprio l’approfon<strong>di</strong>mento e la ricerca riguardo le logiche <strong>del</strong>la<br />

semantica ed ha previsto lo sviluppo <strong>di</strong> una componente prototipale CMS (Content<br />

Management System), vale a <strong>di</strong>re un’<strong>in</strong>terfaccia Web stu<strong>di</strong>ata per facilitare la gestione <strong>di</strong><br />

determ<strong>in</strong>ati contenuti da parte <strong>di</strong> eventuali amm<strong>in</strong>istratori, sv<strong>in</strong>colandoli da conoscenze<br />

tecniche <strong>di</strong> programmazione. Tale componente va ad <strong>in</strong>tegrarsi nell'architettura DoQui, un<br />

sistema <strong>di</strong> gestione <strong>di</strong> documenti pubblici <strong>in</strong> formato <strong>di</strong>gitale, nato dalla collaborazione fra<br />

Regione Piemonte, Comune e Prov<strong>in</strong>cia <strong>di</strong> Tor<strong>in</strong>o, a supporto <strong>dei</strong> proce<strong>di</strong>menti amm<strong>in</strong>istrativi<br />

degli Enti. L’<strong>in</strong>teresse pubblico de<strong>di</strong>cato alla piattaforma DoQui deriva dalla consapevolezza<br />

circa le potenzialità <strong>di</strong> gestione documentale ai f<strong>in</strong>i amm<strong>in</strong>istrativi tali da permettere<br />

l’ottimizzazione <strong>di</strong> tempi ed il miglioramento <strong>del</strong>le modalità <strong>di</strong> organizzazione, archiviazione<br />

e con<strong>di</strong>visione <strong>di</strong> documenti <strong>in</strong> formato <strong>di</strong>gitale a livello regionale.<br />

A tal f<strong>in</strong>e l’obiettivo pr<strong>in</strong>cipale <strong>del</strong> progetto <strong>di</strong> tesi è stato comprendere <strong>in</strong>nanzitutto se<br />

DoQui permetta <strong>di</strong> gestire e utilizzare i dati <strong>in</strong> modo semantico e successivamente<br />

<strong>in</strong><strong>di</strong>viduare il modo tecnologicamente migliore per poterlo effettuare.<br />

Il progetto è stato seguito e realizzato <strong>in</strong> collaborazione con TRIM s.r.l., una società tor<strong>in</strong>ese<br />

solida e d<strong>in</strong>amica, formata da un team <strong>di</strong> 15 <strong>in</strong>gegneri che, lavorando con una propria<br />

metodologia, progettano e realizzano applicazioni web e soluzioni <strong>di</strong> gestione documentale<br />

<strong>in</strong> maniera rapida ed efficace utilizzando pr<strong>in</strong>cipalmente tecnologie Java.<br />

TRIM s.r.l con questo progetto ha <strong>in</strong>teso approfon<strong>di</strong>re un aspetto tecnologico<br />

all’avanguar<strong>di</strong>a su cui un sempre maggior numero <strong>di</strong> applicazioni basa le sue tecniche vale a<br />

<strong>di</strong>re il Semantic Web. L’approccio semantico al World Wide Web <strong>in</strong>tende trasformare<br />

quest’ultimo <strong>in</strong> un ambiente <strong>in</strong> cui i documenti, come le pag<strong>in</strong>e html, le immag<strong>in</strong>i, i file, etc.,<br />

1 TED 2009, è un <strong>in</strong>sieme <strong>di</strong> eventi organizzati su scala mon<strong>di</strong>ale dove si <strong>in</strong>contrano i più gran<strong>di</strong> leader <strong>del</strong><br />

mondo nel campo <strong>del</strong>la technology, <strong>del</strong>l’enterta<strong>in</strong>ment e <strong>del</strong> design.<br />

6


INTRODUZIONE<br />

vengano associati a <strong>in</strong>formazioni e metadati <strong>in</strong> modo da renderne possibile l’<strong>in</strong>terrogazione<br />

e <strong>in</strong>terpretazione automatizzata attraverso logiche <strong>in</strong>ferenziali <strong>di</strong> tipo semantico.<br />

Con il Semantic Web saranno possibili ricerche più evolute e più ramificate grazie a relazioni<br />

e connessioni tra documenti basate su logiche più elaborate <strong>del</strong> semplice l<strong>in</strong>k ipertestuale. In<br />

tal contesto, per la descrizione <strong>del</strong>le <strong>in</strong>formazioni, negli ultimi anni, ha ricevuto sempre più<br />

attenzione e si è <strong>di</strong>ffuso notevolmente il mo<strong>del</strong>lo RDF (Resource Description Framework), e<br />

proprio per tale ragione la ricerca da me effettuata si è soffermata sullo stu<strong>di</strong>o <strong>di</strong> questo<br />

mo<strong>del</strong>lo e sulla possibilità <strong>di</strong> impiego <strong>del</strong> Semantic Web nella progettazione <strong>del</strong> componente<br />

CMS.<br />

Il presente lavoro è strutturato <strong>in</strong> due parti. La prima parte <strong>in</strong>izia illustrando i pr<strong>in</strong>cipi<br />

architetturali <strong>del</strong> Web che sono stati <strong>in</strong><strong>di</strong>spensabili per capire meglio sia l’evoluzione degli<br />

ultimi anni <strong>del</strong> Web, sia il ruolo che rivestono le sue tecnologie. Segue approfondendo le<br />

pr<strong>in</strong>cipali logiche <strong>del</strong> Semantic Web attraverso la presentazione <strong>del</strong>l’RDF, il mo<strong>del</strong>lo<br />

relazionale <strong>dei</strong> dati per il Web, con le sue s<strong>in</strong>tassi e le sue modalità <strong>di</strong> <strong>in</strong>terrogazione<br />

specifiche, presentando qu<strong>in</strong><strong>di</strong> il l<strong>in</strong>guaggio SPARQL. La prima parte, dunque, si propone <strong>di</strong><br />

gettare le fondamenta su cui proseguire il percorso <strong>di</strong> approfon<strong>di</strong>mento.<br />

La seconda parte presenta il progetto realizzato partendo dal problema <strong>in</strong>iziale, affrontando<br />

le possibili soluzioni e giungendo alle considerazioni f<strong>in</strong>ali. Il progetto nello specifico ha<br />

comportato la realizzazione <strong>di</strong> un’applicazione Web per gestire dati relativi ai menu per<br />

ristoranti, dati che a livello back-end dovevano essere trattati con le logiche <strong>del</strong>la semantica.<br />

Il problema da affrontare nasce da una domanda cruciale per lo sviluppo stesso <strong>del</strong> progetto:<br />

“È possibile utilizzare Index per rappresentare i dati <strong>in</strong> modo semantico?”<br />

Da qui la decisione <strong>di</strong> realizzare a livello back-end due versioni <strong>del</strong> progetto, una prima<br />

basata su un’applicazione Web che si <strong>in</strong>terfacci a DoQui e nella fattispecie ad Index, il<br />

motore <strong>di</strong> gestione <strong>dei</strong> contenuti <strong>di</strong>gitali <strong>di</strong> DoQui, cercando <strong>di</strong> rappresentare i dati <strong>in</strong> modo<br />

semantico; ed una seconda versione, utilizzata come mo<strong>del</strong>lo per il confronto, basata sulla<br />

stessa applicazione Web ma che <strong>in</strong> questo caso si <strong>in</strong>terfacci su un EndPoit SPARQL per<br />

effettuare <strong>in</strong>terrogazioni su dati <strong>di</strong> tipo semantico.<br />

Realizzare due versioni <strong>del</strong> progetto a livello beck-end ha permesso <strong>di</strong> giungere a <strong>del</strong>le<br />

valutazioni conclusive che chiudono la seconda parte e riassumono i pr<strong>in</strong>cipali risultati <strong>di</strong><br />

questo <strong>in</strong>teressate progetto <strong>di</strong> ricerca.<br />

7


CAPITOLO 1<br />

IL WEB<br />

8


CAPITOLO 1 – IL WEB<br />

1.1 IL WORLD WIDE WEB<br />

Le tecnologie <strong>del</strong> World Wide Web 2 sono cont<strong>in</strong>uamente <strong>in</strong> evoluzione, un’evoluzione<br />

<strong>di</strong>rettamente proporzionale alla nascita <strong>di</strong> nuovi bus<strong>in</strong>ess, <strong>di</strong>fatti nuove esigenze portano<br />

allo sviluppo <strong>di</strong> nuove soluzioni tecnologiche.<br />

La nascita <strong>del</strong> Web risale al 6 agosto 1991, giorno <strong>in</strong> cui Tim Berners-Lee 3 mise on-l<strong>in</strong>e il<br />

primo sito web che <strong>in</strong>izialmente venne utilizzato esclusivamente dalla comunità scientifica<br />

per usi personali. Il 30 aprile 1993 il CERN 4 decise <strong>di</strong> rendere pubblica tale tecnologia,<br />

decisione a cui seguì un imme<strong>di</strong>ato successo <strong>del</strong> Web che portò ad una crescita esponenziale<br />

<strong>di</strong> Internet 5 ancora oggi <strong>in</strong> atto e alla nascita <strong>del</strong>la cosiddetta "era <strong>del</strong> Web".<br />

La prima era <strong>del</strong> Web fu caratterizzata da un universo <strong>di</strong> <strong>in</strong>formazioni accessibili via rete<br />

fatto dalle persone per le persone, Internet era costituito dai cosiddetti “siti vetr<strong>in</strong>a”, siti<br />

statici, che rappresentavano la soluzione più semplice ed imme<strong>di</strong>ata per essere presenti su<br />

<strong>in</strong>ternet. Questi potevano essere considerati una sorta <strong>di</strong> biglietto da visita on-l<strong>in</strong>e per<br />

presentare le <strong>in</strong>formazioni <strong>di</strong> carattere generale <strong>di</strong> aziende ed organizzazioni: il loro profilo,<br />

la descrizione <strong>dei</strong> servizi offerti, l'ubicazione <strong>del</strong>la sede <strong>del</strong>l'attività e tutti i recapiti per i<br />

contatti.<br />

Il Web <strong>di</strong> oggi, la seconda era, è un Web fondato su siti d<strong>in</strong>amici, così chiamati perché<br />

presentano contenuti redatti d<strong>in</strong>amicamente. I siti Web d<strong>in</strong>amici sono caratterizzati <strong>in</strong>fatti<br />

da un'alta <strong>in</strong>terazione fra sito e utente; alcuni elementi che caratterizzano la d<strong>in</strong>amicità <strong>di</strong> un<br />

sito possono essere: l'<strong>in</strong>terazione con uno o più database, la presenza <strong>di</strong> moduli per l'<strong>in</strong>vio <strong>di</strong><br />

email o altre operazioni su cui operano sempre più le macch<strong>in</strong>e, pensiamo ai crawler 6 <strong>dei</strong><br />

motori <strong>di</strong> ricerca o agli RSS feed 7 generati da macch<strong>in</strong>e per altre macch<strong>in</strong>e, per le quali sono<br />

state standar<strong>di</strong>zzate tecnologie come XML e i Web Service, che saranno approfon<strong>di</strong>ti nei<br />

paragrafi successivi.<br />

2<br />

World Wide Web, traduzione letterale: “grande ragnatela mon<strong>di</strong>ale”. Il Web è uno spazio elettronico e<br />

<strong>di</strong>gitale <strong>di</strong> Internet dest<strong>in</strong>ato alla pubblicazione <strong>di</strong> contenuti multime<strong>di</strong>ali (testi, immag<strong>in</strong>i, au<strong>di</strong>o, video,<br />

ipertesti, iperme<strong>di</strong>a, ecc.) nonché uno strumento per implementare particolari servizi come ad esempio il<br />

download <strong>di</strong> software (programmi, dati, applicazioni, videogiochi, ecc.). Tale spazio elettronico e tali servizi<br />

sono resi <strong>di</strong>sponibili attraverso particolari computer <strong>di</strong> Internet chiamati server web.<br />

3<br />

Timothy John Berners-Lee (Londra, 8 giugno 1955) è un <strong>in</strong>formatico britannico, co-<strong>in</strong>ventore <strong>in</strong>sieme a<br />

Robert Cailliau <strong>del</strong> World Wide Web.<br />

4<br />

L'European Organization for Nuclear Research, più conosciuto come CERN (acronimo) , è il più grande<br />

laboratorio al mondo <strong>di</strong> fisica <strong>del</strong>le particelle. Si trova al conf<strong>in</strong>e tra Svizzera e Francia alla periferia ovest<br />

<strong>del</strong>la città <strong>di</strong> G<strong>in</strong>evra.<br />

5<br />

Internet è una rete <strong>di</strong> computer mon<strong>di</strong>ale ad accesso pubblico attualmente rappresentante anche uno <strong>dei</strong><br />

pr<strong>in</strong>cipali <strong>mezzi</strong> <strong>di</strong> comunicazione <strong>di</strong> massa.<br />

6<br />

Un crawler (detto anche spider o robot), è un software che analizza i contenuti <strong>di</strong> una rete (o <strong>di</strong> un database)<br />

<strong>in</strong> un modo meto<strong>di</strong>co e automatizzato, <strong>in</strong> genere per conto <strong>di</strong> un motore <strong>di</strong> ricerca. I crawler solitamente<br />

acquisiscono una copia testuale <strong>di</strong> tutti i documenti visitati e le <strong>in</strong>seriscono <strong>in</strong> un <strong>in</strong><strong>di</strong>ce.<br />

7<br />

Feed RSS (detti anche flussi RSS), sono <strong>in</strong>formazioni <strong>di</strong> qualunque tipo, relative ad un sito Internet, che un<br />

utente può vedere con l'aiuto <strong>di</strong> un lettore apposito, nella stessa pag<strong>in</strong>a, nella stessa f<strong>in</strong>estra, senza dover<br />

andare ogni volta nel sito pr<strong>in</strong>cipale.<br />

9


CAPITOLO 1 – IL WEB<br />

1.2 IL SUCCESSO DEL WEB<br />

Il Web è al centro <strong>di</strong> un mutamento sociale ed economico <strong>di</strong> proporzioni epocali che ha<br />

cambiato profondamente il nostro modo <strong>di</strong> <strong>in</strong>teragire con la realtà. Il pattern cercareconfrontare-scoprire-scegliere<br />

vale per un numero crescente <strong>di</strong> prodotti e servizi che<br />

<strong>in</strong>cludono libri, brani musicali, film, amicizie, rapporti <strong>di</strong> lavoro e pers<strong>in</strong>o prodotti che noi<br />

stessi possiamo desiderare <strong>di</strong> mettere <strong>in</strong> ven<strong>di</strong>ta sui siti come eBay 8 .<br />

La novità fondamentale è che ciascuno può avere un ruolo attivo nel Web: può non solo<br />

consumare ogni genere <strong>di</strong> servizio, ma anche crearne scrivendo il proprio blog, contribuendo<br />

a wikipe<strong>di</strong>a 9 , con<strong>di</strong>videndo le proprie foto e i video su Flickr 10 e YouTube 11 , pers<strong>in</strong>o<br />

comb<strong>in</strong>ando i vari servizi su Yahoo! 12 , Pipes 13 e Openkapow 14 .<br />

Per la prima volta dall’<strong>in</strong>venzione <strong>dei</strong> mass me<strong>di</strong>a, tutti noi, utenti comuni, possiamo far<br />

sentire la nostra voce e raccontare a nostro modo il mondo, questo è il fenomeno <strong>del</strong>l’User<br />

Generated Content (UGC). Si tratta <strong>di</strong> una nuova modalità <strong>di</strong> guardare al Web ed ai mass<br />

me<strong>di</strong>a <strong>in</strong> generale, grazie a tutta una serie <strong>di</strong> <strong>in</strong>novazioni tecnologiche è stato reso possibile<br />

un nuovo approccio esperienziale al Web: gli elementi chiave <strong>di</strong> questa nuova visione sono<br />

<strong>in</strong>fatti la <strong>di</strong>mensione sociale, la possibilità <strong>di</strong> con<strong>di</strong>visione, la possibilità per ciascuno <strong>di</strong><br />

essere autore <strong>di</strong> contenuti. Tali cambiamenti sono derivati non tanto da <strong>in</strong>novazioni<br />

meramente tecnologiche, molte <strong>del</strong>le quali preesistevano <strong>in</strong>fatti al Web 2.0 (il Web <strong>del</strong>la<br />

seconda era), quanto dalla modalità <strong>di</strong> utilizzo <strong>del</strong>le stesse e dall’uso che ne viene fatto da<br />

parte <strong>di</strong> utenti non esperti. Mentre durante la prima era <strong>del</strong> Web i contenuti venivano <strong>di</strong>ffusi<br />

e pubblicati on-l<strong>in</strong>e solo da parte <strong>di</strong> utenti esperti nella realizzazione <strong>di</strong> siti Web, con il web<br />

2.0 anche l’utente <strong>in</strong>esperto ha la possibilità <strong>di</strong> contribuire all’ampliamento <strong>dei</strong> contenuti sul<br />

Web. Da d<strong>in</strong>amiche <strong>di</strong> <strong>di</strong>alogo unicamente top-down, si è passati <strong>in</strong>fatti a d<strong>in</strong>amiche anche<br />

bottom-up attraverso cui i ruoli, prima statici, <strong>di</strong> produttore e consumatore <strong>di</strong> contenuti,<br />

vengono oggi cont<strong>in</strong>uamente scambiati e r<strong>in</strong>egoziati.<br />

Il Web 2.0 rappresenta la concretizzazione <strong>di</strong> gran parte <strong>del</strong>le aspettative <strong>dei</strong> creatori <strong>del</strong><br />

Web, poiché questo costituisce una realtà realmente accessibile a tutti gli utenti: la<br />

possibilità <strong>di</strong> <strong>di</strong>sporre <strong>di</strong> servizi a basso costo <strong>in</strong> grado <strong>di</strong> consentire l'e<strong>di</strong>t<strong>in</strong>g anche per<br />

8<br />

eBay è una piattaforma che offre ai propri utenti la possibilità <strong>di</strong> vendere e comprare oggetti sia nuovi che<br />

usati, <strong>in</strong> qualsiasi momento, da qualunque postazione Internet e con <strong>di</strong>verse modalità, <strong>in</strong>cluse le ven<strong>di</strong>te a<br />

prezzo fisso e a prezzo d<strong>in</strong>amico, comunemente def<strong>in</strong>ite come "aste onl<strong>in</strong>e".<br />

9<br />

Wikipe<strong>di</strong>a è una enciclope<strong>di</strong>a multil<strong>in</strong>gue collaborativa, onl<strong>in</strong>e e gratuita.<br />

10<br />

Flickr è un sito web multil<strong>in</strong>gua che permette agli iscritti <strong>di</strong> con<strong>di</strong>videre fotografie personali con chiunque<br />

abbia accesso a Internet.<br />

11<br />

YouTube è un sito web che consente la con<strong>di</strong>visione <strong>di</strong> video tra i suoi utenti.<br />

12<br />

Yahoo! è una società fornitrice <strong>di</strong> servizi <strong>in</strong>ternet rivolta al mondo bus<strong>in</strong>ess e consumer (motore <strong>di</strong> ricerca,<br />

mail, messenger e chat).<br />

13<br />

Pipes, un aggregatore e manipolatore <strong>in</strong>terattivo <strong>di</strong> feed.<br />

14<br />

Openkapow, permette appunto <strong>di</strong> “fondere” più servizi <strong>in</strong>sieme grazie alle API fornite dagli sviluppatori. Si<br />

basa sul pr<strong>in</strong>cipio <strong>del</strong>la fruizione <strong>di</strong> moduli già precompilati e la mo<strong>di</strong>fica collettiva <strong>di</strong> mash-up, ovvero<br />

applicazioni che usano contenuti <strong>di</strong> più sorgenti per crearne uno completamente nuovo.<br />

10


CAPITOLO 1 – IL WEB<br />

l'utente poco evoluto, rappresenta un importante passo verso un'autentica <strong>in</strong>terazione e<br />

con<strong>di</strong>visione <strong>in</strong> cui il ruolo <strong>del</strong>l'utente è centrale.<br />

1.3 FONDAMENTA DEL WEB<br />

Il Web, secondo Tim Berners-Lee, per <strong>di</strong>ventare un universo <strong>di</strong> <strong>in</strong>formazioni accessibile<br />

tramite la rete avrebbe dovuto rispondere ai due seguenti requisiti:<br />

1. Adattarsi alla natura frattale <strong>del</strong>la società;<br />

2. Favorire e supportare l’<strong>in</strong>venzione <strong>in</strong><strong>di</strong>pendente.<br />

Per natura frattale si <strong>in</strong>tende la caratteristica <strong>di</strong> molti fenomeni <strong>di</strong> ripetersi nella loro<br />

struttura allo stesso modo su scale <strong>di</strong>verse, mentre per natura frattale <strong>del</strong>la società si<br />

<strong>in</strong>tendono le reti <strong>di</strong> relazioni; pertanto il Web per adattarsi a tale natura deve permettere<br />

agli utenti <strong>di</strong> essere liberi <strong>di</strong> stabilire legami fra punti arbitrariamente <strong>di</strong>stanti nello spazio<br />

<strong>in</strong>formativo.<br />

Se si ammette la natura frattale <strong>del</strong>la società, allora è naturale anche ammettere che le<br />

stesse idee possano venire <strong>in</strong><strong>di</strong>pendentemente a <strong>di</strong>versi <strong>in</strong>novatori. Pertanto, nessuno può<br />

essere il più bravo, per ogni versione <strong>di</strong> una idea ne esisterà certamente almeno un’altra e<br />

prima o poi queste dovranno <strong>in</strong>teroperare.<br />

La natura <strong>del</strong> Web si compone <strong>di</strong> tre soli elementi:<br />

1. Un meccanismo per identificare ogni risorsa, comprese le risorse fisiche al <strong>di</strong> fuori<br />

<strong>del</strong>lo spazio <strong>in</strong>formativo, per esempio un co<strong>di</strong>ce ISBN 15 può essere usato per<br />

identificare un libro.<br />

2. Un protocollo per:<br />

a) deferenziare tali identificativi e ottenere una rappresentazione <strong>del</strong>la risorsa; si<br />

parla <strong>di</strong> rappresentazione perché l’operazione <strong>di</strong> deferenziazione non restituisce la<br />

risorsa ma una sua rappresentazione <strong>di</strong>gitale, ad esempio un’immag<strong>in</strong>e <strong>di</strong>gitale è<br />

una rappresentazione <strong>di</strong> una persona fisica.<br />

b) negoziare una specifica rappresentazione <strong>del</strong>la risorsa tra le rappresentazioni<br />

alternative <strong>di</strong>sponibili. Ciò consiste nell’<strong>in</strong>vio <strong>di</strong> un’<strong>in</strong>sieme <strong>di</strong> prefernze da parte<br />

<strong>del</strong> richiedente nel tentativo <strong>di</strong> fornire la rappresentazione che meglio sod<strong>di</strong>sfa tali<br />

richieste.<br />

3. Un l<strong>in</strong>guaggio iperme<strong>di</strong>ale per rappresentare le risorse, che consenta <strong>di</strong> mixare testo<br />

strutturato con rappresentazioni multime<strong>di</strong>ali, ma soprattutto <strong>di</strong> collegare le <strong>di</strong>verse<br />

risorse tramite iperl<strong>in</strong>k.<br />

15 L'ISBN (International Standard Book Number), è un numero che identifica a livello <strong>in</strong>ternazionale <strong>in</strong> modo<br />

univoco e duraturo un titolo o una e<strong>di</strong>zione <strong>di</strong> un titolo <strong>di</strong> un determ<strong>in</strong>ato e<strong>di</strong>tore. Oltre a identificare il<br />

libro, si attribuisce a tutti quei prodotti creati per essere utilizzati come libro.<br />

11


CAPITOLO 1 – IL WEB<br />

Questi sono gli elementi fondamenta <strong>del</strong> Web, nei successivi paragrafi analizzo questi tre<br />

elementi nel Web <strong>di</strong> ieri e <strong>in</strong>troduco le nuove tecnologie che si sono aggiunte nel Web <strong>di</strong><br />

oggi.<br />

1.4 IL WEB DI IERI<br />

La prima e più importante soluzione <strong>in</strong>trodotta nel Web è rappresentata dalle URI (Uniform<br />

Resourse Identifier), che sono str<strong>in</strong>ghe opache <strong>in</strong> grado <strong>di</strong> identificare qualsiasi risorsa sul<br />

Web. Queste sono dette opache poiché non <strong>in</strong>tendono assegnare nessun significato globale<br />

alla str<strong>in</strong>ga: questa deve essere trattata solo come sequenza <strong>di</strong> caratteri capaci <strong>di</strong><br />

identificare una risorsa.<br />

La seconda soluzione tecnologica <strong>in</strong>trodotta nel Web e che ha ancora un ruolo dom<strong>in</strong>ante, è<br />

il protocollo <strong>di</strong> deferenziazione e negoziazione HTTP (HyperText Transfer Protocol), un<br />

protocollo <strong>di</strong> tipo Request-Response per architetture Client-Server.<br />

Per implementare la terza soluzione tecnologica <strong>del</strong>l’architettura <strong>del</strong> Web (ovvero un<br />

l<strong>in</strong>guaggio iperme<strong>di</strong>ale per le risorse), Tim Berners-Lee propose nel 1989 il l<strong>in</strong>guaggio HTML<br />

(HyperText Markup Language) che <strong>in</strong>izialmente si evolse <strong>in</strong> molti <strong>di</strong>aletti proprietari <strong>di</strong><br />

<strong>di</strong>fferenti browser 16 scatenando quella che negli anni novanta venne chiamata la guerra <strong>dei</strong><br />

browser e che cessò solo quando questi si resero conto che i primi a perderci erano proprio<br />

loro <strong>in</strong> quanto imponevano ai programmatori <strong>di</strong> siti Web una scelta su quale <strong>di</strong>aletto<br />

utilizzare e limitavano gli utenti, che con un solo browser, non avevano la possibilità <strong>di</strong><br />

visualizzare qualsiasi pag<strong>in</strong>a.<br />

Le URI, l’HTTP e l’HTML hanno consentito a milioni <strong>di</strong> imprese, organizzazioni <strong>di</strong> pubblicare<br />

milioni <strong>di</strong> risorse tra loro connesse tramite l<strong>in</strong>k.<br />

1.5 IL WEB DI OGGI<br />

Lo scoppio <strong>del</strong>la bolla 17 dot-com 18 nel 2001 ha segnato un vero e proprio punto <strong>di</strong> svolta<br />

nella storia <strong>del</strong> Web, si è trattato <strong>di</strong> una bolla speculativa che dal ’95 al 2001 ha visto i<br />

16 Un browser web (<strong>in</strong> italiano: navigatore) è un programma che consente agli utenti <strong>di</strong> visualizzare e <strong>in</strong>teragire<br />

con testi, immag<strong>in</strong>i e altre <strong>in</strong>formazioni, tipicamente contenute <strong>in</strong> una pag<strong>in</strong>a web <strong>di</strong> un sito (o all'<strong>in</strong>terno <strong>di</strong><br />

una rete locale). Il browser è <strong>in</strong> grado <strong>di</strong> <strong>in</strong>terpretare il co<strong>di</strong>ce HTML (e più recentemente XHTML) e<br />

visualizzarlo <strong>in</strong> forma <strong>di</strong> ipertesto. L'HTML è il co<strong>di</strong>ce col quale la maggioranza <strong>del</strong>le pag<strong>in</strong>e web nel mondo<br />

sono composte: il web browser consente perciò la navigazione nel web.<br />

17 Si def<strong>in</strong>isce bolla speculativa una particolare fase <strong>di</strong> un qualsiasi mercato caratterizzata da un aumento<br />

considerevole e <strong>in</strong>giustificato <strong>dei</strong> prezzi, dovuto ad una crescita <strong>del</strong>la domanda repent<strong>in</strong>a e limitata nel<br />

tempo. Quando il valore <strong>dei</strong> titoli scende repent<strong>in</strong>amente e si assiste a un cambiamento ra<strong>di</strong>cale <strong>del</strong>le<br />

prospettive economiche retrostanti, si parla <strong>di</strong> scoppio <strong>del</strong>la bolla speculativa.<br />

18 Con Dot-com si def<strong>in</strong>iscono quelle società <strong>di</strong> servizi che sviluppano la maggior parte <strong>del</strong> proprio bus<strong>in</strong>ess<br />

tramite un sito <strong>in</strong>ternet. Il nome deriva dal <strong>di</strong>ffuso utilizzo, da parte <strong>di</strong> queste, <strong>di</strong> siti appartenenti al<br />

12


CAPITOLO 1 – IL WEB<br />

mercati azionari occidentali, aumentare rapidamente la crescita <strong>di</strong> Internet. Il periodo è<br />

stato caratterizzato dalla fondazione, e spesso da un’altrettanto rapido fallimento, <strong>di</strong><br />

numerose società operanti nell’ambito <strong>del</strong> Web e per questo conosciute come ‘.com’ (che si<br />

legge ’dot-com’). Fattori quali rapida crescita <strong>del</strong>le quotazioni <strong>in</strong> borsa, speculazioni,<br />

immissioni <strong>di</strong> capitale a rischio e fragili strutture <strong>in</strong>dustriali e <strong>di</strong> market<strong>in</strong>g, portarono a una<br />

serie <strong>di</strong> ripetuti fallimenti.<br />

In molti hanno sperato che il Web fosse sopravalutato e che il vecchio modo <strong>di</strong> produrre<br />

pacchetti software non avrebbe cont<strong>in</strong>uato ad avere successo. Invece, le crisi sono una<br />

caratteristica comune <strong>del</strong>le <strong>in</strong>novazioni <strong>di</strong>rompenti poiché segnano il momento <strong>in</strong> cui le<br />

tecnologie nuove sono pronte a soppiantare quelle esistenti. Così il Web, dopo la bolla <strong>del</strong><br />

2001, cont<strong>in</strong>ua a evolversi, arricchendosi <strong>di</strong> nuove tecnologie.<br />

Le nuove tecnologie <strong>del</strong> Web <strong>di</strong> oggi che si sommano a quelle che sono le sue fondamenta,<br />

sono tre:<br />

o Il l<strong>in</strong>guaggio XML;<br />

o I Web Service;<br />

o Il l<strong>in</strong>guaggio AJAX.<br />

1.5.1 Primo elemento: XML<br />

Il W3C (World Wide Web Consortium) 19 , propone nel 1998 l’XML (eXtensible Markup<br />

Language) 20 , un mezzo per supportare lo scambio <strong>di</strong> dati strutturati attraverso il Web.<br />

L’aspetto più <strong>in</strong>teressante <strong>di</strong> questo standard è che non istituisce un nuovo l<strong>in</strong>guaggio, ma si<br />

limita a fornire un <strong>in</strong>sieme <strong>di</strong> specifiche per def<strong>in</strong>ire nuovi l<strong>in</strong>guaggi estensibili e per questo<br />

motivo si parla spesso <strong>di</strong> l<strong>in</strong>guaggi basati su XML piuttosto che <strong>di</strong> l<strong>in</strong>guaggio XML.<br />

dom<strong>in</strong>io <strong>di</strong> primo livello (.com). Le Dot-com impostarono un bus<strong>in</strong>ess improntato pr<strong>in</strong>cipalmente<br />

all'erogazione <strong>di</strong> servizi via web, queste aziende, eccessivamente fiduciose nelle potenzialità <strong>del</strong>la rete,<br />

durante la f<strong>in</strong>e <strong>del</strong> ventesimo secolo, s'illusero <strong>di</strong> potersi facilmente espandere, ma si trovarono, <strong>in</strong> molti<br />

casi, a dover fare i conti con la mancanza <strong>di</strong> idee <strong>in</strong>novative, <strong>di</strong> esperienza e <strong>di</strong> capacità gestionali. Proprio<br />

per questo le Dot-com furono le protagoniste, <strong>in</strong> negativo, <strong>del</strong>la bolla speculativa <strong>del</strong>la new-economy<br />

all'<strong>in</strong>izio degli anni 2000, quando, numerose <strong>di</strong> esse, fallirono generando una vera e propria recessione <strong>del</strong>la<br />

New Economy.<br />

19 W3C è un consorzio che sviluppa tecnologie (specifiche, l<strong>in</strong>ee guida, software, e strumenti) per portare il<br />

Web al massimo <strong>del</strong> suo potenziale, def<strong>in</strong>endo protocolli comuni che ne favoriscano l’evoluzione e<br />

assicur<strong>in</strong>o l’<strong>in</strong>teroperabilità.<br />

20 XML è un metal<strong>in</strong>guaggio <strong>di</strong> markup, ovvero un l<strong>in</strong>guaggio marcatore che def<strong>in</strong>isce un meccanismo s<strong>in</strong>tattico<br />

che consente <strong>di</strong> estendere o controllare il significato <strong>di</strong> altri l<strong>in</strong>guaggi marcatori. Rispetto all'HTML, l'XML ha<br />

uno scopo ben <strong>di</strong>verso: mentre il primo def<strong>in</strong>isce una grammatica per la descrizione e la formattazione <strong>di</strong><br />

pag<strong>in</strong>e web e, più <strong>in</strong> generale, <strong>di</strong> ipertesti, il secondo è un metal<strong>in</strong>guaggio utilizzato per creare nuovi<br />

l<strong>in</strong>guaggi, atti a descrivere documenti strutturati. Mentre l'HTML ha un <strong>in</strong>sieme ben def<strong>in</strong>ito e ristretto <strong>di</strong><br />

tag, con l'XML è <strong>in</strong>vece possibile def<strong>in</strong>irne <strong>di</strong> propri a seconda <strong>del</strong>le esigenze.<br />

13


CAPITOLO 1 – IL WEB<br />

Per def<strong>in</strong>ire un l<strong>in</strong>guaggio basato su XML si utilizza uno <strong>dei</strong> due l<strong>in</strong>guaggi <strong>di</strong> schema standard:<br />

DTD(Document Type Def<strong>in</strong>ition) o XSD (XML Schema). Entrambi permettono <strong>di</strong> def<strong>in</strong>ire:<br />

1. i nomi degli elementi;<br />

2. i nomi degli attributi;<br />

3. come questi possono essere comb<strong>in</strong>ati <strong>in</strong> strutture ad albero complesse;<br />

4. quali parti <strong>del</strong>la struttura sono opzionali;<br />

5. quali tipi <strong>di</strong> valori possono assumere gli attributi e gli elementi foglia, vale a <strong>di</strong>re<br />

quegli elementi che non contengono altri elementi.<br />

XSD <strong>in</strong> aggiunta permette anche <strong>di</strong> <strong>di</strong>st<strong>in</strong>guere tra il nome <strong>di</strong> un elemento e il suo tipo <strong>in</strong><br />

modo da realizzare gerarchie <strong>di</strong> tipi come nei l<strong>in</strong>guaggi <strong>di</strong> programmazione Object-Oriented e<br />

rendere ancora più estensibili i l<strong>in</strong>guaggi basati su Xml.<br />

Con XSD e XML è possibile def<strong>in</strong>ire un nuovo l<strong>in</strong>guaggio <strong>in</strong>tegrando l<strong>in</strong>guaggi già def<strong>in</strong>iti.<br />

Questa modularità solleva il rischio <strong>di</strong> conflitti tra l<strong>in</strong>guaggi <strong>di</strong>versi che utilizzano lo stesso<br />

nome per elementi o attributi <strong>di</strong>fferenti. Per ovviare a questo problema sono stati <strong>in</strong>trodotti<br />

i namespace che permettono <strong>di</strong> associare URI <strong>di</strong>verse a nomi identici def<strong>in</strong>iti <strong>in</strong> XSD<br />

<strong>di</strong>fferenti.<br />

Un esempio <strong>di</strong> utilizzo <strong>di</strong> XML è dato dagli RSS che rappresentano una <strong>del</strong>le estensioni più<br />

significative alle tecnologie base <strong>del</strong> Web e che consentono <strong>di</strong> collegarsi non solo ad una<br />

pag<strong>in</strong>a ma <strong>di</strong> “abbonarsi” ad essa ricevendo un avviso ogni volta che la pag<strong>in</strong>a viene<br />

aggiornata. Rich Skrenta 21 lo def<strong>in</strong>isce “Web <strong>in</strong>crementale”, altri lo chiamano “Live Web”.<br />

1.5.2 Secondo elemento: Web Service<br />

Il secondo elemento che abilita l’<strong>in</strong>terazione mach<strong>in</strong>e-to-mach<strong>in</strong>e sul Web è costituito dai<br />

Web Service; un Web Service è un <strong>in</strong>sieme <strong>di</strong> protocolli e standard utilizzati per lo scambio<br />

<strong>dei</strong> dati tra applicazioni e sistemi. Applicazioni scritte <strong>in</strong> vari l<strong>in</strong>guaggi <strong>di</strong> programmazione e<br />

che funzionano su <strong>di</strong>fferenti piattaforme possono utilizzare i Web Service per comunicare<br />

attraverso le reti, come Internet, <strong>in</strong> un modo simile alla comunicazione tra <strong>di</strong>versi processi<br />

che sono attivi su uno stesso computer.<br />

Caratteristica fondamentale <strong>di</strong> un Web Service è quella <strong>di</strong> offrire un'<strong>in</strong>terfaccia software<br />

utilizzando la quale altri sistemi possono <strong>in</strong>teragire con il Web Service stesso attivando le<br />

operazioni descritte nell'<strong>in</strong>terfaccia tramite appositi “messaggi” <strong>in</strong>clusi <strong>in</strong> una “busta” (la più<br />

famosa è SOAP): tali messaggi sono, solitamente, trasportati tramite il protocollo HTTP e<br />

formattati secondo lo standard XML.<br />

21 Rich Skrenta, noto <strong>in</strong>formatico statunitense, <strong>di</strong>venne famoso perché, a soli qu<strong>in</strong><strong>di</strong>ci anni, creò l'Elk Cloner,<br />

un virus <strong>in</strong>formatico (probabilmente il primo <strong>del</strong>la storia <strong>del</strong> computer) che <strong>in</strong>fettava il sistema Apple II<br />

tramite floppy <strong>di</strong>sk. Grazie a questo gesto, Richard Skrenta entrò <strong>di</strong> <strong>di</strong>ritto nella storia <strong>del</strong>l'<strong>in</strong>formatica, <strong>in</strong><br />

quanto fece capire <strong>in</strong>nanzitutto la vulnerabilità <strong>del</strong> sistema Apple, ed anche che i "virus" <strong>di</strong> cui tanto<br />

parlavano gli scrittori non erano solo fantascienza.<br />

14


CAPITOLO 1 – IL WEB<br />

Questa caratteristica <strong>dei</strong> Web Service è estremamente utile se si considera che possono<br />

essere trovati utilizzando l'UDDI (Universal Description, Discoverey and Integration), un<br />

servizio <strong>di</strong> <strong>di</strong>rectory <strong>di</strong>sponibile sul Web dove gli <strong>in</strong>teressati possono registrare e cercare<br />

servizi web. L'<strong>in</strong>terfaccia pubblica <strong>di</strong> un Web Service viene descritta tramite WSDL (Web<br />

Services Description Language) un l<strong>in</strong>guaggio basato su XML usato per la creazione <strong>di</strong><br />

“documenti” descrittivi <strong>del</strong>le modalità <strong>di</strong> <strong>in</strong>terfacciamento ed utilizzo <strong>del</strong> Web Service.<br />

Tutti i dati scambiati sono formattati me<strong>di</strong>ante “tag” XML <strong>in</strong> modo che gli stessi possano<br />

essere utilizzati ad entrambi i capi <strong>del</strong>le connessioni.<br />

Figura 1 - Pila protocollare <strong>dei</strong> Web Service.<br />

Un documento WSDL è caratterizzato da quattro elementi pr<strong>in</strong>cipali:<br />

o <br />

o <br />

o <br />

o <br />

Ecco un esempio <strong>del</strong>la sua architettura:<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />


CAPITOLO 1 – IL WEB<br />

dal web service. Def<strong>in</strong>isce <strong>in</strong>oltre i messaggi co<strong>in</strong>volti nelle<br />

operazioni elencate --><br />

<br />

<br />

<br />

<br />

<br />

1.5.3 Terzo elemento: Ajax<br />

La soluzione tecnologicamente più avanzata <strong>del</strong> Web <strong>di</strong> oggi, che <strong>in</strong>tegra HTML, DOM,<br />

JavaScript, XML e Web Service, è AJAX (Asynchronous JavaScript and XML) 22 tecnologia<br />

ampiamente impiegata <strong>in</strong> tutte le applicazioni Web 2.0 <strong>di</strong> successo ed <strong>in</strong> particolare nella<br />

realizzazione <strong>dei</strong> Mush-up 23 : servizi ottenuti comb<strong>in</strong>ando dati e script provenienti da più<br />

server <strong>in</strong> un’unica applicazione. I Mush-up più <strong>di</strong>ffusi comb<strong>in</strong>ano servizi <strong>di</strong> mappe con altri<br />

dati geografici.<br />

Nel Web <strong>di</strong> ieri ad ogni click <strong>del</strong>l’utente veniva ricaricata l’<strong>in</strong>tera pag<strong>in</strong>a, con AJAX i click<br />

<strong>del</strong>l’utente vengono <strong>in</strong>tercettati da script che <strong>in</strong>vocano il Web Service ottenendo nuovi dati e<br />

mo<strong>di</strong>ficando la pag<strong>in</strong>a via DOM per presentare i risultati all’utente.<br />

ELEMENTO WEB DI IERI WEB DI OGGI<br />

Identificare URI URI<br />

Dereferenziare HTTP 1.1 HTTP 1.1<br />

Rappresentare HTML + CSS + DOM + SCRIPT.<br />

Png, jpg,..<br />

Tabella 1 - Differenze <strong>del</strong> Web tra ieri e oggi.<br />

22 AJAX, è una tecnica <strong>di</strong> sviluppo per la realizzazione <strong>di</strong> applicazioni web <strong>in</strong>terattive (Rich Internet Application).<br />

Lo sviluppo <strong>di</strong> applicazioni HTML con AJAX si basa su uno scambio <strong>di</strong> dati <strong>in</strong> background fra web browser e<br />

server, che consente l'aggiornamento d<strong>in</strong>amico <strong>di</strong> una pag<strong>in</strong>a web senza esplicito ricaricamento da parte<br />

<strong>del</strong>l'utente. AJAX è as<strong>in</strong>crono nel senso che i dati extra sono richiesti al server e caricati <strong>in</strong> background senza<br />

<strong>in</strong>terferire con il comportamento <strong>del</strong>la pag<strong>in</strong>a esistente. Normalmente le funzioni richiamate sono scritte<br />

con il l<strong>in</strong>guaggio JavaScript. Tuttavia, e a <strong>di</strong>spetto <strong>del</strong> nome, l'uso <strong>di</strong> JavaScript e <strong>di</strong> XML non è obbligatorio,<br />

come non è necessario che le richieste <strong>di</strong> caricamento debbano essere necessariamente as<strong>in</strong>crone.<br />

23 Mash-up, applicazioni che usano contenuti <strong>di</strong> più sorgenti per crearne uno completamente nuovo.<br />

16<br />

XML, XHTML, RSS,…<br />

Png, jpg, mp3, mpeg,…<br />

WSDL, SOAP, REST


CAPITOLO 2<br />

LA LOGICA DEL SEMANTIC WEB<br />

17


CAPITOLO 2 – LA LOGICA DEL SEMANTIC WEB<br />

2.1 INTRODUZIONE AL SEMANTIC WEB<br />

Ad oggi il Web è il maggior contenitore <strong>di</strong> conoscenza ed è quello più frequentemente<br />

utilizzato da una larga varietà <strong>di</strong> persone per utilizzi e f<strong>in</strong>alità <strong>di</strong>verse. Ma nel Web spesso<br />

l’<strong>in</strong>formazione ricercata dall’utente è <strong>di</strong>spersa tra più fonti <strong>in</strong>formative, e sarebbe <strong>di</strong> grande<br />

ausilio la possibilità che le macch<strong>in</strong>e potessero autonomamente estrarre e dedurre<br />

conoscenza. Le tecnologie <strong>del</strong> Semantic Web mirano appunto a questo obiettivo, <strong>in</strong>fatti il<br />

Semantic Web rappresenta la volontà <strong>di</strong> estendere e dare valore aggiunto al Web <strong>di</strong> oggi<br />

attraverso la creazione <strong>di</strong> dati elaborabili e comprensibili <strong>di</strong>rettamente dalle macch<strong>in</strong>e<br />

attraverso l’uso <strong>del</strong>la logica e <strong>dei</strong> l<strong>in</strong>guaggi <strong>di</strong> rappresentazione <strong>del</strong>la conoscenza.<br />

Oggi la maggior parte <strong>dei</strong> contenuti <strong>del</strong> Web è pensata per essere letta e fruita dagli esseri<br />

umani, mentre moltissime attività e compiti potrebbero essere automatizzati se anche i<br />

computer potessero accedervi e manipolare tali contenuti <strong>in</strong> maniera significativa. Il<br />

Semantic Web ha l’obiettivo <strong>di</strong> dare una struttura ai contenuti <strong>del</strong>le pag<strong>in</strong>e web creando le<br />

con<strong>di</strong>zioni per cui agenti e programmi software port<strong>in</strong>o a term<strong>in</strong>e sofisticati compiti per gli<br />

utenti.<br />

Il Gartner Group 24 ha previsto un orizzonte per il Semantic Web <strong>di</strong> 20-25 anni il che proietta<br />

nel 2027 la sua maturità, tuttavia si tratta <strong>di</strong> una proiezione pessimistica poiché <strong>di</strong> sicuro la<br />

curva <strong>di</strong> adozione <strong>del</strong> Semantic Web da parte <strong>del</strong>l’<strong>in</strong>tero sistema sarà meno lunga e meno<br />

lenta <strong>del</strong> previsto.<br />

2.2 COS’È IL SEMANTIC WEB<br />

Ai suoi esor<strong>di</strong> Internet era costituito unicamente <strong>di</strong> testi e <strong>di</strong> <strong>in</strong><strong>di</strong>ci ipertestuali e<br />

caratterizzato dal fatto che la creazione <strong>del</strong>la conoscenza era una prerogativa unicamente<br />

<strong>dei</strong> produttori. Col passare <strong>del</strong> tempo le strutture <strong>dei</strong> siti si sono evolute, anche se per<br />

l’utente questo è rimasto un aspetto quasi <strong>del</strong> tutto nascosto, ed hanno raggiunto livelli <strong>di</strong><br />

complessità sempre maggiore, tale da permettere a tutti gli utenti <strong>di</strong> poter contribuire alla<br />

creazione <strong>del</strong>la conoscenza on-l<strong>in</strong>e. Allo scopo <strong>di</strong> rendere reperibili per l’utente le<br />

<strong>in</strong>formazioni desiderate sono stati sviluppati i motori <strong>di</strong> ricerca, ovvero sistemi automatici<br />

che, data una determ<strong>in</strong>ata chiave <strong>di</strong> ricerca, analizzano <strong>in</strong>siemi <strong>di</strong> dati e restituiscono un<br />

<strong>in</strong><strong>di</strong>ce <strong>dei</strong> contenuti <strong>di</strong>sponibili classificandoli <strong>in</strong> base al grado <strong>di</strong> rilevanza.<br />

In un motore <strong>di</strong> ricerca l’utente <strong>in</strong>serisce una o più parole che <strong>in</strong>tende cercare e avvia la<br />

ricerca. Il risultato è un <strong>in</strong>sieme <strong>di</strong> collegamenti a siti <strong>in</strong>ternet che presentano nei loro<br />

contenuti la o le parole cercate. L'efficacia <strong>del</strong>l'operazione <strong>di</strong>pende da due fattori, primo<br />

dagli algoritmi che il motore <strong>di</strong> ricerca utilizza per estrarre i contenuti e secondo da come<br />

sono stati <strong>in</strong><strong>di</strong>cizzati i contenuti <strong>del</strong> sito.<br />

24 Gartner Group è una società <strong>di</strong> ricerca e consulenza con sede pr<strong>in</strong>cipale a Stamford, nel Connecticut, con<br />

oltre 10.000 clienti nel mondo. L'attività pr<strong>in</strong>cipale consiste nel supportare le decisioni <strong>di</strong> <strong>in</strong>vestimento <strong>dei</strong><br />

suoi clienti attraverso ricerca, consulenza, benchmark<strong>in</strong>g, eventi e notizie.<br />

18


CAPITOLO 2 – LA LOGICA DEL SEMANTIC WEB<br />

Nel caso <strong>dei</strong> motore <strong>di</strong> ricerca <strong>del</strong> Web 2.0 qualsiasi query 25 attivata è sempre soggetta al<br />

rischio <strong>del</strong>l’ambiguità. Per esempio cercando la parola “albero” si possono ottenere risultati<br />

appartenenti a più svariati ambiti <strong>di</strong> <strong>in</strong>teresse, quali quelli <strong>del</strong>l'<strong>in</strong>formatica, <strong>del</strong>la botanica,<br />

<strong>del</strong>la nautica, etc. L’ambiguità a cui è soggetta una query è dovuta al fatto che Internet è un<br />

<strong>in</strong>sieme <strong>di</strong> testi collegati tra loro ma con collegamenti deboli, nel senso che sono troppo<br />

generici e vaghi. I collegamenti deboli non sono quelli s<strong>in</strong>tattici anzi questi sono piuttosto<br />

soli<strong>di</strong>, un l<strong>in</strong>k <strong>in</strong>fatti localizza una risorsa attraverso un URL univoco. I collegamenti deboli<br />

sono <strong>in</strong>vece quelli legati alla capacità <strong>di</strong> descrivere il significato <strong>di</strong> un collegamento. Oltre a<br />

“portare” <strong>in</strong> un determ<strong>in</strong>ato “luogo” un collegamento dovrebbe descrivere il “luogo verso<br />

cui porta”. Il term<strong>in</strong>e appropriato per parlare <strong>di</strong> questa funzione è appunto capacità<br />

semantica. Quando si parla <strong>di</strong> Semantic Web si <strong>in</strong>tende proporre un Web che possieda <strong>del</strong>le<br />

strutture <strong>di</strong> collegamenti più espressive <strong>di</strong> quelle attuali.<br />

Il term<strong>in</strong>e 'Semantic Web' è stato proposto per la prima volta nel 2001 da Tim Berners Lee.<br />

Da allora il term<strong>in</strong>e è stato associato all'idea <strong>di</strong> un Web nel quale agiscono agenti<br />

<strong>in</strong>telligenti: applicazioni <strong>in</strong> grado <strong>di</strong> comprendere il significato <strong>dei</strong> testi presenti sulla rete e<br />

perciò <strong>in</strong> grado <strong>di</strong> guidare l'utente <strong>di</strong>rettamente verso l'<strong>in</strong>formazione ricercata, oppure <strong>di</strong><br />

sostituirsi a lui nello svolgimento <strong>di</strong> alcune operazioni. Un agente <strong>in</strong>telligente dovrebbe<br />

essere una applicazione <strong>in</strong> grado <strong>di</strong> svolgere operazioni come la prenotazione <strong>di</strong> un aereo<br />

per Parigi con arrivo <strong>in</strong> centro città prima <strong>del</strong>le 13.00. Il tutto analizzando gli arrivi ai <strong>di</strong>versi<br />

aeroporti <strong>di</strong> Parigi (Paris, Charles de Gaule, Orly) e deducendo, senza che sia specificato nella<br />

query, che un arrivo per le 13.00 <strong>in</strong> centro implichi un arrivo <strong>in</strong> aeroporto <strong>di</strong>verso.<br />

Questa proposta ha affasc<strong>in</strong>ato molto la comunità <strong>in</strong>formatica. Il W3C ha attivato<br />

imme<strong>di</strong>atamente un gruppo <strong>di</strong> lavoro e le università hanno aperto numerosi programmi <strong>di</strong><br />

ricerca legati a questi temi. Si sono imposti subito degli standard, il più famoso <strong>dei</strong> quali è<br />

certamente RDF(S), un l<strong>in</strong>guaggio <strong>in</strong> s<strong>in</strong>tassi XML per def<strong>in</strong>ire e esprimere ontologie 26 .<br />

In def<strong>in</strong>itiva, la visione <strong>del</strong> Semantic Web è un’estensione <strong>dei</strong> pr<strong>in</strong>cipi <strong>del</strong> Web dai documenti<br />

ai dati: le persone rendono i loro dati <strong>di</strong>sponibili agli altri e aggiungono collegamenti ad altri<br />

dati per permetterne il ritrovamento. A questo proposito, è utile illustrare la <strong>di</strong>fferenza tra<br />

<strong>in</strong>formation retrieval e data retrieval. Mentre il primo ha come scopo il recupero <strong>dei</strong><br />

documenti rilevanti rispetto ad una richiesta, il secondo si prefigge <strong>di</strong> trovare la corretta<br />

risposta a una domanda. In questo senso, i dati hanno un valore e una rilevanza molto<br />

maggiore rispetto ai documenti e la possibilità <strong>di</strong> fare data retrieval <strong>in</strong>crementerebbe<br />

notevolmente il potenziale <strong>del</strong> Web. E proprio questo è l’obiettivo <strong>del</strong> Semantic Web:<br />

passare da un Web <strong>di</strong> documenti, fatto dalle persone per le persone, ad un Web <strong>dei</strong> dati cui<br />

possono accedere anche le macch<strong>in</strong>e.<br />

25<br />

Il term<strong>in</strong>e query <strong>in</strong> <strong>in</strong>formatica viene utilizzato per <strong>in</strong><strong>di</strong>care l’<strong>in</strong>terrogazione ad un database <strong>in</strong> modo da<br />

ottenere come risultato <strong>dei</strong> dati contenuti <strong>in</strong> uno o più database.<br />

26<br />

L’ontologia descrive il modo <strong>in</strong> cui <strong>di</strong>versi schemi vengono comb<strong>in</strong>ati <strong>in</strong> una struttura dati contenente tutte<br />

le entità rilevanti e le loro relazioni <strong>in</strong> un dom<strong>in</strong>io. I programmi <strong>in</strong>formatici usano l’ontologia per una varietà<br />

<strong>di</strong> scopi, tra cui il ragionamento <strong>in</strong>duttivo, la classificazione e svariate tecniche per la risoluzione <strong>di</strong><br />

problemi.<br />

19


CAPITOLO 2 – LA LOGICA DEL SEMANTIC WEB<br />

Figura 2 - Il Semantic Web.<br />

La figura mostra come nel Web 1.0 fossero solo i produttori artefici <strong>del</strong>la creazione <strong>del</strong>la<br />

conoscenza on-l<strong>in</strong>e, nel Web 2.0 <strong>in</strong>vece il consumatore assume lo stesso ruolo <strong>del</strong><br />

produttore, qu<strong>in</strong><strong>di</strong> nuovo generatore <strong>di</strong> conoscenza, <strong>in</strong>f<strong>in</strong>e nel Semantic Web gli agenti<br />

<strong>in</strong>telligenti, att<strong>in</strong>gendo alle <strong>di</strong>verse conoscenze create nel Web, ne generano <strong>di</strong> nuove.<br />

2.2.1 Approfon<strong>di</strong>mento sul Semantic Web secondo Tim Berners-Lee<br />

In un famosissimo articolo apparso sulla rivista Scientific American nel maggio <strong>del</strong> 2001, Tim<br />

Berners-Lee, <strong>in</strong>sieme a James Hendler e Ora Lassila, danno una def<strong>in</strong>izione <strong>del</strong> Semantic<br />

Web:<br />

“The Semantic Web is not a separate Web but an extension of the current one, <strong>in</strong> which<br />

<strong>in</strong>formation is given well-def<strong>in</strong>ed mean<strong>in</strong>g, better enabl<strong>in</strong>g computers and people to work <strong>in</strong><br />

cooperation.”<br />

Tre sono i punti chiave <strong>di</strong> questa def<strong>in</strong>izione: il Semantic Web è un’estensione <strong>del</strong> Web<br />

attuale, qu<strong>in</strong><strong>di</strong> può essere concretizzato partendo da quello che già esiste e che tutti<br />

conosciamo e utilizziamo quoti<strong>di</strong>anamente; lo scopo <strong>del</strong> Semantic Web è la cooperazione tra<br />

computer e persone, <strong>in</strong> modo che le macch<strong>in</strong>e possano essere maggiormente <strong>di</strong> supporto<br />

agli esseri umani nell’esecuzione e nell’automazione <strong>di</strong> compiti; la realizzazione <strong>del</strong> Semantic<br />

Web è possibile solo dando un significato ben def<strong>in</strong>ito all’<strong>in</strong>formazione, <strong>in</strong> modo che le<br />

macch<strong>in</strong>e possano raggiungere quel grado <strong>di</strong> “comprensione” che abilita funzionalità<br />

avanzate <strong>di</strong> ragionamento e capacità <strong>di</strong> rispondere a domande complesse.<br />

20


CAPITOLO 2 – LA LOGICA DEL SEMANTIC WEB<br />

Figura 3 - L'uso <strong>del</strong>le ontologie nello scenario <strong>del</strong>l'articolo <strong>del</strong> 2001.<br />

Per meglio illustrare cos’è il Semantic Web, l’articolo illustra uno scenario realistico, come<br />

mostra bene la figura, <strong>in</strong> cui Pete e Lucy, due figli premurosi <strong>di</strong> una donna che ha bisogno <strong>di</strong><br />

fisioterapia, si affidano ai loro agenti software <strong>in</strong>telligenti per trovare un opportuno<br />

terapista, adatto a effettuare il trattamento prescritto dal me<strong>di</strong>co alla madre. Per sod<strong>di</strong>sfare<br />

i loro bisogni questo terapista deve essere conosciuto per professionalità e affidabilità; il suo<br />

ambulatorio non deve essere troppo lontano dalla loro abitazione; le sue prestazioni devono<br />

rientrare tra quelle coperte dall’assicurazione me<strong>di</strong>ca. Gli agenti software che usano le<br />

tecnologie <strong>del</strong> Semantic Web sono <strong>in</strong> grado non solo <strong>di</strong> portare a term<strong>in</strong>e il compito <strong>di</strong><br />

trovare un fisioterapista adatto, ma anche <strong>di</strong> offrire la possibilità <strong>di</strong> raff<strong>in</strong>are la ricerca per<br />

avere più alternative, <strong>di</strong> confrontare l’appuntamento <strong>del</strong>lo specialista con gli appuntamenti<br />

nell’agenda <strong>di</strong> Pete (che deve accompagnare la madre alle sedute) e anche <strong>di</strong> spiegare<br />

all’utente il perché <strong>del</strong>la selezione <strong>di</strong> un certo risultato.<br />

Per raggiungere lo stesso risultato oggi, Pete e Lucy dovrebbero compiere manualmente un<br />

certo numero <strong>di</strong> ricerche, con il rischio <strong>di</strong> non riuscire a trovare tutte le possibili e migliori<br />

alternative e con la certezza <strong>di</strong> dover impiegare molto più tempo a <strong>di</strong>stricarsi tra sistemi e<br />

l<strong>in</strong>guaggi <strong>di</strong>versi. Il Web o<strong>di</strong>erno, <strong>in</strong>fatti, è una fenomenale e smisurata fonte <strong>di</strong> <strong>in</strong>formazioni<br />

la cui cernita, manuale o me<strong>di</strong>ata dai motori <strong>di</strong> ricerca, implica uno sforzo da parte<br />

<strong>del</strong>l’utente tale da scoraggiare anche il solo tentativo. Lo scenario che può sembrare molto<br />

21


CAPITOLO 2 – LA LOGICA DEL SEMANTIC WEB<br />

futuristico è un’efficace rappresentazione <strong>del</strong>le potenzialità <strong>del</strong> Semantic Web, ovvero <strong>di</strong><br />

quello che si può ottenere aggiungendo logica al Web.<br />

2.3 LA PILA DEL SEMANTIC WEB<br />

Il Semantic Web è un’estensione <strong>del</strong> Web attuale, qu<strong>in</strong><strong>di</strong> può essere concretizzato partendo<br />

da quello che già esiste e che tutti conosciamo ed utilizziamo quoti<strong>di</strong>anamente; lo scopo <strong>del</strong><br />

Semantic Web è la cooperazione tra computer e persone <strong>in</strong> modo che le macch<strong>in</strong>e possano<br />

essere maggiormente <strong>di</strong> supporto agli esseri umani nell’esecuzione ed automazione <strong>di</strong><br />

compiti; la sua realizzazione è <strong>in</strong>fatti possibile solo dando un significato ben def<strong>in</strong>ito<br />

all’<strong>in</strong>formazione <strong>in</strong> modo tale che le macch<strong>in</strong>e possano raggiungere quel grado <strong>di</strong><br />

“comprensione” che abilita funzionalità avanzate <strong>di</strong> ragionamento e capacità <strong>di</strong> rispondere a<br />

domande complesse.<br />

Per meglio illustrare cosa serve per la realizzazione <strong>del</strong> Semantic Web e per renderlo<br />

sistematico, Tim Berners-Lee ed i ricercatori <strong>del</strong> W3C hanno def<strong>in</strong>ito la cosiddetta pila <strong>del</strong><br />

Semantic Web. Come spesso accade <strong>in</strong> <strong>in</strong>formatica è sempre bene def<strong>in</strong>ire una pila <strong>di</strong><br />

protocolli che stabilisca i <strong>di</strong>versi livelli necessari a completare un’implementazione o un<br />

sistema <strong>di</strong> comunicazione <strong>in</strong> modo che il problema sia “modularizzato” a livelli, a ciascuno<br />

<strong>dei</strong> quali venga associato uno standard opportuno.<br />

Figura 4 - Pila <strong>del</strong> Semantic Web.<br />

Tale standar<strong>di</strong>zzazione col passare degli anni ha subito <strong>del</strong>le revisioni dovendo aggiornarsi<br />

rispetto alla crescente standar<strong>di</strong>zzazione <strong>dei</strong> l<strong>in</strong>guaggi <strong>di</strong> programmazione e <strong>del</strong>le contestuali<br />

<strong>in</strong>novazioni tecnologiche.<br />

L’immag<strong>in</strong>e riportata rappresenta la pila che ha riscosso i maggiori favori dalla comunità <strong>del</strong><br />

Semantic Web negli ultimi tempi.<br />

22


CAPITOLO 2 – LA LOGICA DEL SEMANTIC WEB<br />

Partendo dall’alto si ha un livello che non è parte <strong>in</strong>tegrante <strong>del</strong>la pila, si tratta <strong>del</strong>lo strato<br />

<strong>del</strong>le applicazioni e <strong>del</strong>le <strong>in</strong>terfacce utenti (1); queste possono essere costruite sulla base<br />

<strong>del</strong>l’<strong>in</strong>sieme <strong>del</strong>le tecnologie sottostanti. Il livello più alto <strong>di</strong> tali tecnologie è rappresentato<br />

da Trust (2) che ha il compito <strong>di</strong> <strong>di</strong>st<strong>in</strong>guere i dati affidabili da quelli non affidabili dato il<br />

grande quantitativo <strong>di</strong> <strong>in</strong>formazioni presenti <strong>in</strong> rete. L’affidabilità <strong>dei</strong> dati può essere<br />

“esplicita” oppure “<strong>in</strong>ferita” 27 a partire da dati esistenti da parte <strong>di</strong> agenti <strong>in</strong>telligenti che si<br />

basano sulla tecnologia <strong>del</strong> Semantic Web. Nel caso <strong>di</strong> “affidabilità derivata” è necessario<br />

poter risalire ai meccanismi che hanno portato a stabilirne la bontà. A tale necessità<br />

risponde il livello <strong>di</strong> Proof (3), vale a <strong>di</strong>re “la prova” che <strong>di</strong>mostra all’utente quale è stata la<br />

logica sottostante il ragionamento e le relative conclusioni. Questo genere <strong>di</strong> prova è<br />

raggiungibile solo sulla base solida <strong>del</strong>la logica e qu<strong>in</strong><strong>di</strong> il livello sottostante al Proof è<br />

rappresentato dalla cosiddetta logica unificante (4). Questa deve rispondere a due necessità:<br />

abilitare la prova e permettere <strong>di</strong> def<strong>in</strong>ire e descrivere l’<strong>in</strong>formazione stessa. Quali siano le<br />

caratteristiche <strong>di</strong> questo l<strong>in</strong>guaggio logico unificante non è stato ancora stabilito con<br />

precisione perché i processi sono <strong>in</strong> cont<strong>in</strong>ua e costante evoluzione: le logiche <strong>in</strong>fatti<br />

possono essere al contempo causali, temporali, descrittive e probabilistiche. Ciononostante<br />

questa “logica” costituisce il cuore pulsante <strong>del</strong>la pila.<br />

La parte <strong>in</strong>feriore <strong>del</strong>la pila è costituita da tutte le tecnologie atte ad esprimere<br />

l’<strong>in</strong>formazione ed a formalizzare la conoscenza su cui si <strong>in</strong>tende abilitare il ragionamento<br />

automatico. Partendo dal basso troviamo tecnologie e protocolli che sono il fondamento <strong>del</strong><br />

Web:<br />

o Le URI (5) sono il meccanismo usato per identificare le risorse. I mo<strong>del</strong>li per lo scambio<br />

<strong>di</strong> dati e i l<strong>in</strong>guaggi ontologici 28 usano proprio le URI per identificare term<strong>in</strong>i e concetti<br />

rilevanti per co<strong>di</strong>ficare le <strong>in</strong>formazioni. Queste <strong>in</strong>fatti assicurano che ciascun concetto<br />

non sia semplicemente una parola o una str<strong>in</strong>ga <strong>in</strong> un documento ma sia collegato a<br />

un’unica def<strong>in</strong>izione che chiunque possa trovare sul Web.<br />

o Unicode (6) è <strong>in</strong>vece lo standard che permette alle macch<strong>in</strong>e una rappresentazione<br />

consistente ed una manipolazione omogenea <strong>dei</strong> caratteri testuali, si tratta <strong>di</strong> un<br />

sistema <strong>di</strong> co<strong>di</strong>fica che rende i caratteri <strong>in</strong><strong>di</strong>pendenti dalla piattaforma software, dalla<br />

applicazione utilizzata e dalla l<strong>in</strong>gua.<br />

o XML (7) è un l<strong>in</strong>guaggio <strong>di</strong> marcatura che permette <strong>di</strong> creare, def<strong>in</strong>ire e rendere<br />

utilizzabili i propri Tag, rappresenta una sorta <strong>di</strong> meta-l<strong>in</strong>guaggio. XML è il mezzo<br />

migliore per l’<strong>in</strong>teroperabilità s<strong>in</strong>tattica ovvero la capacità <strong>dei</strong> sistemi <strong>di</strong> riuscire a<br />

27 “Ciò che tuttavia pare caratterizzare questa prima categoria <strong>di</strong> segni è il rapporto <strong>del</strong>lo “stare per” che si<br />

regge su un meccanismo <strong>in</strong>ferenziale: se rosso <strong>di</strong> sera, allora bel tempo si spera. È il meccanismo<br />

<strong>del</strong>l’implicazione filoniana: pq.” tratto da Umberto Eco “Segno ed Inferenza” 1984, E<strong>in</strong>au<strong>di</strong> e<strong>di</strong>tore, pg.4.<br />

28 I l<strong>in</strong>guaggi ontologici def<strong>in</strong>iscono formalmente le relazioni tra term<strong>in</strong>i, un’ontologia è il mezzo per descrivere<br />

e def<strong>in</strong>ire la rappresentazione computazionale <strong>di</strong> quella parte <strong>del</strong> mondo che <strong>in</strong>teressa mo<strong>del</strong>lare <strong>in</strong> un<br />

programma o <strong>in</strong> una applicazione.<br />

23


CAPITOLO 2 – LA LOGICA DEL SEMANTIC WEB<br />

<strong>in</strong>terpretare la s<strong>in</strong>tassi e la struttura <strong>dei</strong> documenti scambiati ed <strong>in</strong> parte<br />

l’<strong>in</strong>teroperabilità strutturale, ovvero la possibilità <strong>di</strong> <strong>in</strong>terpretare le strutture <strong>di</strong><br />

documenti <strong>di</strong> schemi logici <strong>di</strong>fferenti. XML non è sufficiente però a sod<strong>di</strong>sfare<br />

l’<strong>in</strong>teroperabilità semantica ovvero quella capacità <strong>di</strong> <strong>in</strong>terscambio <strong>di</strong> dati tra sistemi<br />

basata sul significato stesso <strong>del</strong>l’<strong>in</strong>formazione scambiata e non sul suo formato.<br />

o RDF (8) rappresenta la possibilità <strong>di</strong> sod<strong>di</strong>sfare anche l’<strong>in</strong>teroperabilità semantica. In<br />

questo mo<strong>del</strong>lo relazionale <strong>di</strong> dati, il significato <strong>del</strong>l’<strong>in</strong>formazione è co<strong>di</strong>ficato <strong>in</strong> <strong>in</strong>sieme<br />

<strong>di</strong> “triple” che corrispondono a frasi elementari costituite da tre elementi: soggetto,<br />

pre<strong>di</strong>cato ed oggetto; identificabili attraverso URI.<br />

o I l<strong>in</strong>guaggi ontologici ad oggi più largamente adottati dalle comunità <strong>del</strong> Semantic Web<br />

sono RDF Schema (9), che aggiunge un primo livello <strong>di</strong> logica al <strong>di</strong> sopra <strong>di</strong> RDF, ed OWL<br />

(10) che tra le altre cose fornisce la possibilità <strong>di</strong> asserire relazioni <strong>di</strong> equivalenza tra le<br />

risorse.<br />

o Accanto ai l<strong>in</strong>guaggi ontologici all’<strong>in</strong>terno <strong>del</strong>la pila, troviamo le regole che<br />

rappresentano un meccanismo atto ad aumentare l’espressività e le funzionalità <strong>di</strong><br />

ragionamento automatico <strong>del</strong>le ontologie stesse, Rules: RIF (11).<br />

o SPARQL (12) è un l<strong>in</strong>guaggio <strong>di</strong> <strong>in</strong>terrogazione su dati RDF ed allo stesso tempo un<br />

protocollo che permette <strong>di</strong> effettuare tali richieste <strong>in</strong> ambiente Web.<br />

o CRYPTO (13) <strong>in</strong><strong>di</strong>ca la crittografia e firma <strong>di</strong>gitale, rappresenta un tassello importante<br />

per il raggiungimento <strong>di</strong> buoni livelli <strong>di</strong> affidabilità nel mondo <strong>del</strong> Web.<br />

2.4 CHE COS’È UN’ONTOLOGIA<br />

Secondo Ru<strong>di</strong> Studer 29 , Richard Benjam<strong>in</strong>s e Dieter Fensel 30 “un’ontologia è una<br />

specificazione formale ed esplicita <strong>di</strong> una concettualizzazione con<strong>di</strong>visa” 31 .<br />

Qu<strong>in</strong><strong>di</strong> ogni sistema <strong>di</strong> rappresentazione o gestione <strong>del</strong>la conoscenza avrà sempre una<br />

qualche concettualizzazione esplicita o implicita <strong>del</strong> suo dom<strong>in</strong>io. Un’ontologia deve<br />

riflettere la conoscenza <strong>di</strong> un gruppo, non può fare riferimento al pensiero <strong>di</strong> un s<strong>in</strong>golo;<br />

<strong>in</strong>oltre deve essere anche con<strong>di</strong>visibile cioè pubblica ed utilizzabile da parte <strong>del</strong>la comunità.<br />

Una concettualizzazione viene espressa attraverso un’<strong>in</strong><strong>di</strong>cazione <strong>dei</strong> concetti e <strong>del</strong>le<br />

relazioni che tra essi sussistono, per esplicita si <strong>in</strong>tende che tali concetti e tali con<strong>di</strong>zioni<br />

29<br />

Ru<strong>di</strong> Studer, (nato nel 1951 <strong>in</strong> Stuttgart) è un <strong>in</strong>formatico tedesco e professore all’Università <strong>di</strong> Karlsruhe,<br />

Germania.<br />

30<br />

Dieter Fensel, (nato il 10 Ottobre 1960 <strong>in</strong> Nuremberg) è un ricercatore nel campo <strong>del</strong> l<strong>in</strong>guaggio formale e<br />

<strong>del</strong> semantic web.<br />

31<br />

Ru<strong>di</strong> Studer, Richard Benjam<strong>in</strong>s e Dieter Fensel “Data & Knowledge Eng<strong>in</strong>eer<strong>in</strong>g” Volume 25, numero 1-2<br />

(March 1998) - Pag<strong>in</strong>e: 161 – 197.<br />

24


CAPITOLO 2 – LA LOGICA DEL SEMANTIC WEB<br />

debbano essere esplicitamente def<strong>in</strong>iti, spiegati e chiariti <strong>in</strong> modo da non lasciare ambiguità.<br />

La specificazione <strong>in</strong>f<strong>in</strong>e, deve essere anche formale ovvero espressa <strong>in</strong> un formato<br />

elaborabile dai computer. Attraverso l’uso <strong>di</strong> ontologie le applicazioni riescono a mettere <strong>in</strong><br />

relazione l’<strong>in</strong>formazione contenuta <strong>in</strong> una pag<strong>in</strong>a con altre fonti <strong>di</strong> conoscenza, associandole<br />

<strong>di</strong>rettamente ed <strong>in</strong><strong>di</strong>rettamente attraverso l’utilizzo <strong>di</strong> d<strong>in</strong>amiche <strong>in</strong>ferenziali.<br />

2.5 LE METROPOLITANE DEL SEMANTIC WEB<br />

La visione <strong>di</strong> Tim Berners-Lee sul Semantic Web è efficacemente rappresentata da una vivida<br />

metafora presentata <strong>in</strong> figura.<br />

Figura 5 - La metafora <strong>del</strong>le metropolitane.<br />

Il Semantic Web è come una rete <strong>di</strong> metropolitane: le l<strong>in</strong>ee sono costituite da <strong>di</strong>verse<br />

ontologie che descrivono e specificano <strong>di</strong>verse parti <strong>del</strong>la realtà (nella figura: il tempo, i<br />

luoghi, le persone e così via), mentre le <strong>di</strong>verse stazioni corrispondono alle applicazioni che si<br />

possono creare sulla base <strong>di</strong> tali ontologie. Alcune <strong>di</strong> queste fermate <strong>del</strong>la metropolitana<br />

co<strong>in</strong>volgono solo una l<strong>in</strong>ea, ovvero hanno bisogno <strong>di</strong> una sola ontologia; altre stazioni<br />

rappresentano <strong>in</strong>vece punti <strong>di</strong> <strong>in</strong>terscambio <strong>del</strong>le varie l<strong>in</strong>ee, ovvero co<strong>in</strong>volgono più<br />

ontologie nel loro funzionamento. In questa visione i dati sul Web, o meglio i metadati<br />

descritti rispetto a tali ontologie, sono i “convogli” <strong>del</strong>la metropolitana che trasportano<br />

l’<strong>in</strong>formazione (i passeggeri) tra un’applicazione (una stazione) e l’altra. Da questa immag<strong>in</strong>e<br />

metaforica capiamo chiaramente la grande importanza che riveste la con<strong>di</strong>visione <strong>del</strong>le<br />

ontologie nel Semantic Web, le ontologie <strong>in</strong>fatti veicolano proprio il significato e la<br />

conoscenza contenuti nei dati sul Web.<br />

25


CAPITOLO 3<br />

RDF E SPARQL<br />

26


CAPITOLO 3 – RDF E SPARQL<br />

3.1 IL LINGUAGGIO RDF<br />

Secondo la proposta <strong>del</strong> W3C il set <strong>di</strong> l<strong>in</strong>guaggi su cui costruire il web semantico è RDF<br />

(Resource Description Framework), un set <strong>di</strong> l<strong>in</strong>guaggi <strong>di</strong>chiarativi basati su s<strong>in</strong>tassi XML.<br />

Il Semantic Web nasce come tentativo <strong>di</strong> controllare le <strong>in</strong>formazioni ancorandole ad uno<br />

schema. Questa idea funziona se si <strong>di</strong>vidono bene i compiti, da una parte si hanno i dati, da<br />

un’altra uno schema che def<strong>in</strong>isce come i dati si strutturano e relazionano fra loro.<br />

I settori nei quali RDF può essere utilizzato e portare vantaggi sono i più <strong>di</strong>sparati:<br />

o descrizione <strong>del</strong> contenuto <strong>di</strong> un sito Web, <strong>di</strong> una pag<strong>in</strong>a, <strong>di</strong> una biblioteca <strong>di</strong>gitale;<br />

o implementazione <strong>di</strong> <strong>in</strong>telligent software agent, per lo scambio <strong>di</strong> conoscenza e un<br />

utilizzo migliore <strong>del</strong>le risorse Web;<br />

o classificazione <strong>del</strong> contenuto, per applicare criteri <strong>di</strong> selezione;<br />

o descrizione <strong>di</strong> un <strong>in</strong>sieme <strong>di</strong> pag<strong>in</strong>e, che rappresentano un s<strong>in</strong>golo documento logico;<br />

o stabilire i criteri <strong>di</strong> proprietà <strong>in</strong>tellettuale <strong>del</strong>le s<strong>in</strong>gole pag<strong>in</strong>e;<br />

o esprimere criteri <strong>di</strong> privacy preference degli utenti e le privacy policies <strong>di</strong> un sito Web;<br />

o con il meccanismo <strong>del</strong>la <strong>di</strong>gital signature 32 , contribuire alla creazione <strong>del</strong> Web of<br />

Trust 33 , per le applicazioni nel commercio elettronico, la cooperazione;<br />

o e molti altri ancora.<br />

RDF è costituito da due componenti:<br />

o RDF Mo<strong>del</strong> and Syntax: def<strong>in</strong>isce il data mo<strong>del</strong> RDF e la sua co<strong>di</strong>fica XML;<br />

o RDF Schema: permette <strong>di</strong> def<strong>in</strong>ire specifici vocabolari per i metadati.<br />

I metadati sono “dati che accompagnano i dati” ovvero “dati sui dati”. Il mondo a cui fare<br />

riferimento per comprendere l’importanza <strong>dei</strong> metadati è quello <strong>dei</strong> sistemi per<br />

l’organizzazione <strong>del</strong>la conoscenza ( Knowledge Organization System o KOS ), che trovano<br />

applicazioni <strong>in</strong> molti ambiti, primo fra tutti l’ambito <strong>del</strong>le catalogazioni bibliotecarie. Il<br />

mondo <strong>del</strong>l’<strong>in</strong>formazione on-l<strong>in</strong>e ha sviluppato sistemi <strong>di</strong> catalogazione e categorizzazione,<br />

nonché sistemi <strong>di</strong> strutturazione e standar<strong>di</strong>zzazione <strong>del</strong>le descrizione bibliografiche. Sono<br />

così nate <strong>in</strong>iziative volte a proporre <strong>di</strong>versi sistemi (o KOS) per la catalogazione bibliografica;<br />

il più rilevante è il sistema ideato dalla Dubl<strong>in</strong>e Core Initiative 34 . Tale sistema prevede la<br />

def<strong>in</strong>izione <strong>di</strong> un <strong>in</strong>sieme <strong>di</strong> elementi che rappresentano i metadati necessari per descrivere<br />

opportunamente risorse <strong>in</strong> rete. L’<strong>in</strong>sieme base degli elementi essenziali ai f<strong>in</strong>i <strong>del</strong>la<br />

descrizione <strong>di</strong> materiale <strong>di</strong>gitale su cui è stato raggiunto il consenso era costituito<br />

32<br />

Digital signature, “firma <strong>di</strong>gitale” <strong>in</strong> italiano, è basata sulla tecnologia <strong>del</strong>la crittografia a chiave pubblica o<br />

PKI. Dal punto <strong>di</strong> vista <strong>in</strong>formatico rappresenta un sistema <strong>di</strong> autenticazione <strong>di</strong> documenti <strong>di</strong>gitali tale da<br />

garantire non ripu<strong>di</strong>o. La nozione <strong>di</strong> firma <strong>di</strong>gitale ha <strong>in</strong> Italia anche un'accezione giuri<strong>di</strong>ca, <strong>in</strong> quanto<br />

<strong>in</strong><strong>di</strong>vidua quel tipo <strong>di</strong> firma che può essere apposta ai documenti <strong>in</strong>formatici alla stessa stregua <strong>di</strong> come la<br />

firma autografa viene apposta ai documenti tra<strong>di</strong>zionali.<br />

33<br />

Web of Trust, “Web <strong>di</strong> fiducia” <strong>in</strong> italiano, è un concetto espresso da programmi che permettono <strong>di</strong> usare<br />

autenticazione e privacy crittografica, per stabilire l’autenticità <strong>del</strong>l’associazione chiave-utente.<br />

34<br />

Il Dubl<strong>in</strong> Core Initiative è un sistema <strong>di</strong> metadati costituito da un nucleo <strong>di</strong> elementi essenziali ai f<strong>in</strong>i <strong>del</strong>la<br />

descrizione <strong>di</strong> qualsiasi materiale <strong>di</strong>gitale accessibile via rete <strong>in</strong>formatica.<br />

27


CAPITOLO 3 – RDF E SPARQL<br />

<strong>in</strong>izialmente da qu<strong>in</strong><strong>di</strong>ci elementi, successivamente si è esteso, esempio <strong>di</strong> qualche<br />

elemento: Title, Creator, Subject, Description, Publisher, Contributor, Date, Type, Format.<br />

Ad ogni elemento è stato attribuito un identificativo unico sotto forma <strong>di</strong> URI 35 , ad esempio<br />

per denotare l’autore <strong>di</strong> una risorsa si utilizza l’elemento Creator, <strong>in</strong><strong>di</strong>cato dall’URI<br />

http://purl.org/dc/elements/1.1/creator/.<br />

3.2 RDF DATA MODEL<br />

Per capire pienamente il mo<strong>del</strong>lo RDF, prima <strong>di</strong> tutto pensiamo alla struttura <strong>del</strong>le risorse sul<br />

Web: le pag<strong>in</strong>e Web sono identificate dal loro <strong>in</strong><strong>di</strong>rizzo, l’URL 36 , e sono collegate tra loro<br />

tramite i collegamenti ipertestuali (i l<strong>in</strong>k, <strong>in</strong> HTML <strong>in</strong><strong>di</strong>cati dall’attributo href con l’<strong>in</strong><strong>di</strong>cazione<br />

<strong>del</strong>l’URL <strong>del</strong>la risorsa collegata).<br />

RDF ha l’obiettivo <strong>di</strong> def<strong>in</strong>ire un sistema per la descrizione <strong>del</strong>le risorse; come avviene per le<br />

pag<strong>in</strong>e Web: RDF prevede che ogni risorsa possa essere identificata univocamente e che a<br />

ogni risorsa possano essere associati <strong>dei</strong> metadati descrittivi. RDF è qu<strong>in</strong><strong>di</strong> un l<strong>in</strong>guaggio per<br />

rappresentare e mo<strong>del</strong>lare le risorse <strong>in</strong> rete.<br />

La struttura base <strong>di</strong> RDF è l’enunciato (<strong>in</strong> <strong>in</strong>glese statement), che esprime la struttura base<br />

<strong>del</strong>la descrizione <strong>di</strong> una risorsa. L’enunciato è formato da tre componenti:<br />

o il soggetto, ovvero l’identificativo <strong>del</strong>la risorsa;<br />

o il pre<strong>di</strong>cato, che <strong>in</strong><strong>di</strong>ca la proprietà o l’attributo <strong>del</strong> soggetto che si vuole descrivere;<br />

o l’oggetto, ovvero il “valore” che il pre<strong>di</strong>cato assume <strong>in</strong> riferimento al soggetto.<br />

Figura 6 - Rappresentazione grafica <strong>di</strong> un enunciato.<br />

Per la sua struttura soggetto-pre<strong>di</strong>cato-oggetto l’enunciato viene anche semplicemente<br />

chiamato tripla. Spesso RDF viene rappresentato mettendo <strong>in</strong> risalto il mo<strong>del</strong>lo a grafo<br />

orientato ed etichettato su cui si basa, <strong>in</strong> cui soggetto e oggetto sono i no<strong>di</strong> e il pre<strong>di</strong>cato è<br />

l’arco orientato.<br />

35<br />

URI (Uniform Resource Identifier), è il generico <strong>in</strong>sieme <strong>di</strong> tutti i nomi/<strong>in</strong><strong>di</strong>rizzi che costituiscono le brevi<br />

sequenze <strong>di</strong> caratteri che fanno riferimento ad una risorsa.<br />

36<br />

URL (Uniform Resource Locator), è una sequenza <strong>di</strong> caratteri che identifica univocamente l'<strong>in</strong><strong>di</strong>rizzo <strong>di</strong> una<br />

risorsa <strong>in</strong> Internet, come un documento o un'immag<strong>in</strong>e.<br />

28


CAPITOLO 3 – RDF E SPARQL<br />

Per poter rendere le descrizioni <strong>del</strong>le risorse elaborabili da parte <strong>del</strong>le macch<strong>in</strong>e, le tre<br />

componenti <strong>del</strong>l’enunciato non possono essere <strong>del</strong>le semplici str<strong>in</strong>ghe, pertanto il mo<strong>del</strong>lo<br />

RDF prevede che queste vengano identificate univocamente attraverso le URI.<br />

Ad esempio, l’enunciato “La pag<strong>in</strong>a Web http://www.example.org/home ha per autore il<br />

signor Rossi” nella rappresentazione RDF sarà così sud<strong>di</strong>viso:<br />

o il soggetto: “La pag<strong>in</strong>a Web”, identificabile univocamente dalla sua URL<br />

http://www.example.org/home;<br />

o il pre<strong>di</strong>cato: “ha per autore”, per la quale si può usare la def<strong>in</strong>izione <strong>di</strong> Creator <strong>del</strong><br />

Dubl<strong>in</strong> Core;<br />

o l’oggetto: l’autore <strong>del</strong>la pag<strong>in</strong>a, “il signor Rossi”.<br />

In questo caso soggetto e pre<strong>di</strong>cato hanno già un URI, mentre per identificare l’oggetto ci<br />

sono due soluzioni:<br />

o se l’oggetto <strong>del</strong>l’enunciato è a sua volta una risorsa, l’oggetto deve essere<br />

rappresentato attraverso un’URI. Per esempio si può identificare “il signor Rossi”<br />

attraverso l’URL http://staff.example.org/Rossi, così che possa poi essere utilizzata<br />

come soggetto <strong>di</strong> altri enunciati che descrivono la sua persona;<br />

o altrimenti se l’oggetto è solo un valore, ad esempio una str<strong>in</strong>ga, un numero o una<br />

data, si <strong>di</strong>ce che l’oggetto <strong>del</strong>la tripla è un letterale e dunque non sarà associato ad<br />

alcuna URI.<br />

Figura 7 - Fusione <strong>di</strong> enunciati RDF.<br />

La descrizione RDF <strong>di</strong> una risorsa è qu<strong>in</strong><strong>di</strong> costituita dall’<strong>in</strong>sieme degli enunciati che hanno<br />

per soggetto tale risorsa. Queste triple sono logicamente legate dall’univocità degli<br />

29


CAPITOLO 3 – RDF E SPARQL<br />

identificativi; ma nulla vieta che i <strong>di</strong>versi enunciati siano fisicamente <strong>di</strong>stribuiti su più<br />

sorgenti dati (ad esempio memorizzati su file <strong>di</strong>st<strong>in</strong>ti). Quando le <strong>in</strong>formazioni <strong>di</strong> una risorsa<br />

provengono da <strong>di</strong>verse fonti, i rispettivi enunciati possono facilmente essere raccolti<br />

<strong>in</strong>sieme, <strong>in</strong><strong>di</strong>pendentemente dalla loro orig<strong>in</strong>e e locazione. Dalla figura è possibile capire<br />

come due enunciati, riguardanti la stessa risorsa http://www.example.org/home, possano<br />

essere uniti e come questa unione non crei ridondanze.<br />

Il mo<strong>del</strong>lo a grafo alla base <strong>di</strong> RDF risulta essere molto flessibile ed efficiente quando si tratta<br />

<strong>di</strong> collezionare <strong>in</strong>formazioni, <strong>di</strong> <strong>in</strong>tegrare dati che provengono da <strong>di</strong>verse fonti, <strong>di</strong> prevedere<br />

<strong>di</strong>versi punti <strong>di</strong> vista sulla descrizione <strong>di</strong> una determ<strong>in</strong>ata risorsa. Gli enunciati (le triple<br />

soggetto- pre<strong>di</strong>cato-oggetto) si <strong>di</strong>mostrano così un mezzo potente e allo stesso tempo<br />

elementare.<br />

3.3 LA SINTASSI N3<br />

La rappresentazione più semplice degli enunciati è quella <strong>di</strong> scriverli per <strong>in</strong>tero, ogni tripla<br />

rappresentata come: URI <strong>del</strong> soggetto, spazio, URI <strong>del</strong> pre<strong>di</strong>cato, spazio, URI <strong>del</strong>l’oggetto o<br />

rispettivo letterale, punto. Questa rappresentazione si chiama Notation3, detta anche N3.<br />

La N3 <strong>in</strong>troduce abbreviazioni e scorciatoie per rendere l’RDF più leggibile. In N3, come <strong>in</strong><br />

XML, è prima <strong>di</strong> tutto possibile def<strong>in</strong>ire i namespace utilizzati dalle URI <strong>del</strong>l’RDF che segue e<br />

qu<strong>in</strong><strong>di</strong> def<strong>in</strong>ire <strong>dei</strong> prefissi che saranno utilizzati per abbreviare le URI. La s<strong>in</strong>tassi <strong>di</strong><br />

<strong>di</strong>chiarazione <strong>dei</strong> namespace è la seguente:<br />

@prefix rdf: .<br />

@prefix dc: .<br />

@prefix ex: .<br />

Dopo aver def<strong>in</strong>ito i prefissi è possibile sostituire, nei successivi enunciati, le URI con il<br />

rispettivo QName (rdf: o dc: o ex:). E’ anche possibile def<strong>in</strong>ire il namespace <strong>di</strong> base (senza<br />

bisogno <strong>di</strong> prefisso), che qu<strong>in</strong><strong>di</strong> è sott<strong>in</strong>teso ogni volta che una risorsa è def<strong>in</strong>ita senza usare<br />

alcun prefisso.<br />

@prefix : .<br />

Se volessimo rappresentare l’enunciato “La pag<strong>in</strong>a Web http://www.example.org/home ha<br />

per autore il signor Rossi” <strong>in</strong> N3, avremo:<br />

ex:home dc:creator “Rossi”.<br />

Quando si vuole tipizzare una risorsa, <strong>in</strong> RDF lo si può fare usando il pre<strong>di</strong>cato rdf:type. In N3<br />

il pre<strong>di</strong>cato rdf:type può essere abbreviato con a. Le due triple che seguono sono<br />

equivalenti:<br />

ex:staff rdf:type ex:Webmaster.<br />

ex:staff a ex:Webmaster.<br />

30


CAPITOLO 3 – RDF E SPARQL<br />

Quando si vuole “tipizzare” un letterale, attribuendogli un significato particolare, N3<br />

prevede l’<strong>in</strong>serimento <strong>del</strong>l’<strong>in</strong><strong>di</strong>cazione <strong>del</strong> tipo XSD(XML Schema Def<strong>in</strong>ition), attraverso la<br />

notazione grafica <strong>del</strong> doppio accento circonflesso (^^) seguito dal QName <strong>del</strong>l’XSD datatype<br />

a cui fa riferimento; <strong>in</strong>f<strong>in</strong>e, se si vuole specificare la l<strong>in</strong>gua <strong>in</strong> cui è espressa una str<strong>in</strong>ga,<br />

possiamo aggiungere al letterale l’<strong>in</strong><strong>di</strong>cazione <strong>del</strong>la l<strong>in</strong>gua attraverso il carattere ‘@’ seguito<br />

dal co<strong>di</strong>ce a due lettere <strong>del</strong>la l<strong>in</strong>gua.<br />

ex:home dc:date “2009-10-07”^^xsd:date.<br />

ex:home dc:title “Benvenuti nella homepage”@it.<br />

3.4 LA SINTASSI RDF/XML<br />

La s<strong>in</strong>tassi XML <strong>di</strong> RDF ha lo scopo <strong>di</strong> abilitare un meccanismo <strong>di</strong> <strong>in</strong>teroperabilità per coloro<br />

che vogliono esprimere i loro dati <strong>in</strong> RDF e, allo stesso tempo, usufruire degli strumenti e <strong>dei</strong><br />

parser creati e ampiamente <strong>di</strong>ffusi per l’elaborazione <strong>dei</strong> dati <strong>in</strong> XML. Per questo motivo<br />

l’RDF/XML è la s<strong>in</strong>tassi ufficiale <strong>di</strong> RDF.<br />

Un documento RDF/XML <strong>in</strong>izia con un elemento ra<strong>di</strong>ce che contiene la <strong>di</strong>chiarazione <strong>dei</strong><br />

namespace; il nodo ra<strong>di</strong>ce è sempre <strong>in</strong><strong>di</strong>cato come e i namespace sono def<strong>in</strong>iti<br />

esattamente come <strong>in</strong> XML.<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Benvenuti nella homepage<br />

<br />

<br />

<br />

La descrizione è composta da due enunciati, uno che lega la pag<strong>in</strong>a Web al suo autore e<br />

l’altro che la lega al letterale che <strong>in</strong><strong>di</strong>ca il suo titolo. Per <strong>in</strong><strong>di</strong>care la risorsa<br />

http://www.example.org/home, si usa l’elemento rdf:Description con l’attributo rdf:about;<br />

se l’oggetto <strong>del</strong> pre<strong>di</strong>cato è una risorsa, allora il nodo conterrà a sua volta un elemento<br />

rdf:Description con l’attributo rdf:about che contiene l’URI <strong>del</strong>la risorsa; se <strong>in</strong>vece l’oggetto è<br />

un letterale, allora il nodo <strong>del</strong> pre<strong>di</strong>cato conterrà il valore semplicemente come testo. Se il<br />

letterale dovesse essere tipizzato, allora il nodo pre<strong>di</strong>cato conterrà l’attributo rdf:datatype<br />

con il riferimento all’XSD datatype.<br />

31


CAPITOLO 3 – RDF E SPARQL<br />

Il W3C ha anche def<strong>in</strong>ito una s<strong>in</strong>tassi “abbreviata”. Ad esempio, quando l’enunciato ha una<br />

risorsa per oggetto, anziché def<strong>in</strong>ire un nodo rdf:Description annidato è possibile <strong>in</strong>serire<br />

l’URI <strong>del</strong>l’oggetto come valore <strong>di</strong> un attributo rdf:resource <strong>del</strong> nodo che <strong>in</strong><strong>di</strong>ca il pre<strong>di</strong>cato; il<br />

frammento:<br />

Diventa più semplicemente:<br />

<br />

<br />

<br />

<br />

Un’altra possibile contrazione <strong>del</strong>la s<strong>in</strong>tassi RDF/XML è relativa agli enunciati che hanno per<br />

pre<strong>di</strong>cato la particolare proprietà rdf:type. Quando si vuole descrivere una risorsa <strong>di</strong>cendo a<br />

quale categoria o famiglia appartiene, si può <strong>in</strong><strong>di</strong>care il tipo proprio con rdf:type.<br />

<br />

<br />

<br />

Questa espressione può essere abbreviata “tipizzando” il nodo <strong>del</strong>la risorsa:<br />

<br />

La s<strong>in</strong>tassi RDF/XML, pur avendo regole precise per l’ord<strong>in</strong>e <strong>dei</strong> tag all’<strong>in</strong>terno <strong>del</strong>lo stesso<br />

enunciato, non pone alcuna restrizione rispetto all’ord<strong>in</strong>e tra le <strong>di</strong>verse triple, anzi viola<br />

esplicitamente i v<strong>in</strong>coli posizionali <strong>di</strong> XML.<br />

3.5 RDF SCHEMA<br />

Il data mo<strong>del</strong> RDF permette <strong>di</strong> def<strong>in</strong>ire un mo<strong>del</strong>lo semplice per descrivere le relazioni tra le<br />

risorse, <strong>in</strong> term<strong>in</strong>i <strong>di</strong> proprietà identificate da un nome e relativi valori. Tuttavia, RDF data<br />

mo<strong>del</strong> non fornisce nessun meccanismo per <strong>di</strong>chiarare queste proprietà, né per def<strong>in</strong>ire le<br />

relazioni tra queste proprietà ed altre risorse. Per questo è necessario utilizzare un<br />

l<strong>in</strong>guaggio <strong>di</strong> schema o ontologico come RDF Schema. Quest’ultimo rappresenta<br />

un’estensione <strong>di</strong> RDF che comprende i costrutti per descrivere i vocabolari: meccanismi per<br />

descrivere gruppi <strong>di</strong> risorse collegate e le proprietà che li legano tra loro.<br />

RDF Schema ci offre la possibilità <strong>di</strong> descrivere i tipi <strong>di</strong> risorse def<strong>in</strong>endone <strong>dei</strong><br />

raggruppamenti; <strong>in</strong> accordo con quanto accade nel mondo <strong>del</strong>l’object-orientation, la<br />

tipizzazione si chiama classe e <strong>in</strong> RDFS è rappresentata dalla risorsa rdfs:Class 37 . Le risorse<br />

che hanno per tipo una specifica classe si <strong>di</strong>cono istanze <strong>di</strong> quella classe. La descrizione <strong>del</strong>le<br />

classi ci permette <strong>in</strong>oltre <strong>di</strong> descrivere la relazione esistente tra <strong>di</strong>verse classi sotto forma <strong>di</strong><br />

37 Il namespase <strong>di</strong> RDFS è http://www.w3.org/2000/01/rdf-schema#, abbreviato con rdfs.<br />

32


CAPITOLO 3 – RDF E SPARQL<br />

ere<strong>di</strong>tarietà: il l<strong>in</strong>guaggio offre anche la proprietà rdfs:subClassOf, che lega una classe ad<br />

un’altra che rappresenta rispetto a questa un sotto-<strong>in</strong>sieme.<br />

RDFS non è solo una convenzione sull’uso <strong>di</strong> un certo numero <strong>di</strong> costrutti, ma veicola anche<br />

una parte <strong>del</strong>la “semantica” <strong>di</strong> tali espressioni. Questa semantica a sua volta può essere<br />

utilizzata per <strong>in</strong>ferire nuova conoscenza a partire da quella data, ad esempio quando si ha<br />

una gerarchia <strong>di</strong> sotto-classi e un’istanza <strong>del</strong>la classe più specifica <strong>di</strong> tale gerarchia, si può<br />

automaticamente <strong>in</strong>ferire che tale istanza appartiene anche a tutte le super-classi. Un<br />

esempio è dato dalla figura, che rappresenta i seguenti enunciati:<br />

ex:HistoricalNovel rdfs:subClassOf ex:Book.<br />

ex:Fiction rdfs:subClassOf ex:Book.<br />

ex:Fantasy rdfs:subClassOf ex:Fiction.<br />

ex:LordOfTheR<strong>in</strong>gs rdf:type ex:Fantasy .<br />

Figura 8 - Ere<strong>di</strong>tarietà con rdfs:subClassOf.<br />

In virtù <strong>del</strong>la transitività <strong>di</strong> rdfs:subClassOf, si possono <strong>in</strong>ferire i seguenti enunciati:<br />

ex:Fantasy rdfs:subClassOf ex:Book.<br />

ex:LordOfTheR<strong>in</strong>gs rdf:type ex:Fiction.<br />

Infatti dato che i fantasy sono <strong>dei</strong> romanzi e che i romanzi sono <strong>dei</strong> libri, ne segue che anche<br />

i fantasy sono <strong>dei</strong> libri (primo enunciato) e dato che “Il signore degli Anelli” è un fantasy e<br />

che i fantasy sono un tipo <strong>di</strong> romanzo, ne deriva che “Il signore degli Anelli” è un romanzo<br />

(secondo enunciato).<br />

RDFS ci permette <strong>in</strong>oltre <strong>di</strong> def<strong>in</strong>ire per tutte le proprietà RDF il dom<strong>in</strong>io e il codom<strong>in</strong>io<br />

rispettivamente con rdfs:doma<strong>in</strong> e rdfs:range. Quando def<strong>in</strong>iamo una proprietà si può<br />

scrivere a quale rdfs:doma<strong>in</strong> si può applicare e <strong>di</strong>chiarare qual è il suo rdfs:range, ovvero <strong>di</strong><br />

quale tipo devono essere i valori assunti da quella proprietà, come ad esempio:<br />

33


CAPITOLO 3 – RDF E SPARQL<br />

ex:hasWriter rdfs:doma<strong>in</strong> ex:Book.<br />

ex:hasWriter rdfs:range ex:Writer.<br />

Questo significa che ogni qualvolta si usa la proprietà ex:hasWriter <strong>in</strong> un enunciato, un<br />

sistema “<strong>in</strong>telligente” che conosce la semantica veicolata da RDFS potrà automaticamente<br />

controllare o <strong>in</strong>ferire che il soggetto <strong>di</strong> quegli enunciati è un libro e che l’oggetto è uno<br />

scrittore.<br />

Figura 9 - Def<strong>in</strong>izione <strong>di</strong> doma<strong>in</strong> e range <strong>del</strong>la proprietà hasWriter.<br />

RDFS offre molti costrutti per descrivere con ricchezza le proprietà RDF, ovvero le risorse che<br />

hanno per tipo rdf:Property. Oltre a specificare dom<strong>in</strong>io e codom<strong>in</strong>io, si possono descrivere<br />

gerarchie <strong>di</strong> proprietà. Per descrivere l’ere<strong>di</strong>tarietà tra le proprietà RDFS ci offre il costrutto<br />

rdfs:subPropertyOf.<br />

Concludendo, RDF Schema permette <strong>di</strong> def<strong>in</strong>ire <strong>dei</strong> vocabolari, qu<strong>in</strong><strong>di</strong> l’<strong>in</strong>sieme <strong>del</strong>le<br />

proprietà semantiche <strong>in</strong><strong>di</strong>viduate da una particolare comunità. RDF Schema permette <strong>di</strong><br />

def<strong>in</strong>ire significato, caratteristiche e relazioni <strong>di</strong> un <strong>in</strong>sieme <strong>di</strong> proprietà, compresi eventuali<br />

v<strong>in</strong>coli sul dom<strong>in</strong>io e sui valori <strong>del</strong>le s<strong>in</strong>gole proprietà. Inoltre, implementando il concetto<br />

(transitivo) <strong>di</strong> classe e sottoclasse, consente <strong>di</strong> def<strong>in</strong>ire gerarchie <strong>di</strong> classi, con il conseguente<br />

vantaggio che agenti software <strong>in</strong>telligenti possono utilizzare queste relazioni per svolgere i<br />

loro compiti.<br />

3.5.1 Esempio <strong>di</strong> un RDF Schema<br />

Per capire meglio come si struttura un file RDF Schema presento un esempio <strong>in</strong> cui i<br />

contenuti da rappresentare sono relativi a <strong>dei</strong> corsi ed a <strong>del</strong>le lezioni onl<strong>in</strong>e. Come<br />

<strong>di</strong>chiarazione <strong>in</strong>iziale <strong>in</strong> un file RDF Schema si def<strong>in</strong>iscono <strong>dei</strong> namespace (<strong>del</strong>le URI) che<br />

identificano i costrutti RDF, RDFS e l'ontologia. Per il resto lo schema descrive le classi e<br />

proprietà. Esempio <strong>del</strong> costrutto RDF:<br />

<br />

<br />

34


CAPITOLO 3 – RDF E SPARQL<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Nell’esempio viene <strong>in</strong>nanzi tutto def<strong>in</strong>ita una classe (rdfs:Class) che ha come nome<br />

(rdf:about) la risorsa (rdf:resource=) http://www.nomesito.it/data/nomeontologia#Corso. I<br />

nomi <strong>del</strong>le risorse si identificano utilizzando URI. La parte <strong>del</strong>l'URL che precede # <strong>in</strong><strong>di</strong>ca una<br />

precisa ontologia, <strong>in</strong><strong>di</strong>ca il nome <strong>del</strong>lo schema al quale è riferito un elemento, la parte<br />

successiva al # <strong>in</strong><strong>di</strong>ca il nome che si è voluto dare a quell'elemento. La classe Corso è<br />

sottoclasse (rdfs.subClassof) <strong>di</strong> Resource. Resource rappresenta una risorsa, o una classe<br />

generica. Riferire un elemento a Resource significa <strong>di</strong>re che quell'elemento è genericamente<br />

una risorsa, significa collegarsi al livello ra<strong>di</strong>ce <strong>del</strong> nostro dom<strong>in</strong>io.<br />

Considerando il livello ra<strong>di</strong>ce come livello 0, la classe Corso appartiene al livello 1 <strong>del</strong><br />

dom<strong>in</strong>io. La classe Argomento è a sua volta sottoclasse <strong>di</strong> Corso. La classe Corso ha una<br />

proprietà, ossia un attributo, chiamato Titolo, <strong>di</strong> tipo str<strong>in</strong>ga. Questo lo si capisce <strong>in</strong> quanto<br />

l'elemento Titolo è stato def<strong>in</strong>ito come rdf:Property, con dom<strong>in</strong>io (rdfs:doma<strong>in</strong>) la classe<br />

35


CAPITOLO 3 – RDF E SPARQL<br />

Corso e con codom<strong>in</strong>io (rdfs:range), Literal, ossia la risorsa standard che <strong>in</strong> RDF def<strong>in</strong>isce i<br />

dati <strong>di</strong> testo, siano essi str<strong>in</strong>ghe o <strong>in</strong>teri.<br />

Una classe può essere def<strong>in</strong>ita specificando i suoi attributi. La classe Corso ha un titolo che<br />

deve essere specificato tramite una str<strong>in</strong>ga. La classe Argomento <strong>in</strong> quanto sottoclasse <strong>di</strong><br />

corso ere<strong>di</strong>ta la proprietà Titolo. Anche l'argomento pertanto può essere def<strong>in</strong>ito da un<br />

titolo.<br />

Sempre nell’esempio la classe Corso ha una proprietà che si chiama<br />

Livello_<strong>di</strong>_Specializzazione. Questa proprietà ha il compito <strong>di</strong> tener traccia <strong>del</strong> livello <strong>di</strong><br />

specializzazione col quale è stato preparato un corso. Questa proprietà non è però semplice,<br />

non è def<strong>in</strong>ibile semplicemente riempiendo una str<strong>in</strong>ga, ma punta ad un'altra classe.<br />

Nella classe Specializzazione ci sono a loro volta due attributi. Uno <strong>in</strong><strong>di</strong>ca il tipo <strong>di</strong> utenti, e<br />

punta ad un classe utenti non descritta nell'esempio, uno <strong>in</strong><strong>di</strong>ca la preparazione <strong>di</strong> questi<br />

utenti. In pratica la proprietà Livello_<strong>di</strong>_Specializzazione, per il fatto <strong>di</strong> puntare ad un'altra<br />

classe, non è più una semplice proprietà ma <strong>di</strong>venta una relazione fra classi. SubClassof<br />

possiede un significato molto chiaro e <strong>in</strong><strong>di</strong>ca una parentela <strong>di</strong> ere<strong>di</strong>tarietà: “gli attributi <strong>del</strong><br />

padre sono trasmessi ai figli”. Le relazioni def<strong>in</strong>ite tramite le property non hanno un<br />

significato specifico, se non per il fatto <strong>di</strong> <strong>del</strong>imitare le proprietà <strong>di</strong> una classe attraverso<br />

quelle <strong>di</strong> un'altra.<br />

Con questo piccolo esempio si possono vedere le possibilità espressive <strong>di</strong> uno schema<br />

ontologico. Il corso può avere un livello <strong>di</strong> specializzazione che <strong>di</strong>pende dal tipo <strong>di</strong> utenti a<br />

cui si rivolge e dalla preparazione che si presume questi abbiano. Con una situazione <strong>di</strong><br />

questo tipo si sta descrivendo una proprietà, Livello_<strong>di</strong>_Specializzazione, che ha un grado,<br />

con una sorta <strong>di</strong> restrizione a seconda <strong>del</strong>l'utente a cui <strong>di</strong> volta <strong>in</strong> volta la si attribuisce.<br />

3.6 RDF OLTRE XML<br />

La nascita <strong>del</strong>le tecnologie XML ha dato un’ulteriore sp<strong>in</strong>ta alla “globalizzazione” <strong>del</strong>lo<br />

scambio <strong>del</strong>le <strong>in</strong>formazioni. Tuttavia, i successi ed i vantaggi portati da XML risultano limitati<br />

quando si vuole andare oltre il semplice accordo strutturale e s<strong>in</strong>tattico per prendere <strong>in</strong><br />

considerazione la “semantica”, ovvero il significato veicolato <strong>del</strong>l’<strong>in</strong>formazione.<br />

Il formato XML mo<strong>del</strong>la i dati secondo una struttura ad albero particolarmente adatta a<br />

rappresentare un documento e a veicolare <strong>in</strong>formazioni sotto forma <strong>di</strong> messaggio. Inoltre,<br />

grazie ai namespace e all’espressività <strong>del</strong> l<strong>in</strong>guaggio XSD (XML Schema Def<strong>in</strong>ition), tale<br />

struttura ben si presta a essere estesa. E’ <strong>in</strong>fatti possibile estendere uno schema<br />

precedentemente def<strong>in</strong>ito aggiungendo un elemento, un attributo o una struttura più<br />

complessa <strong>in</strong> un particolare punto <strong>di</strong> un documento XML senza impattare sul resto <strong>del</strong><br />

documento o su tutti gli altri documenti che utilizzano lo stesso schema. Purtroppo, tale<br />

mo<strong>del</strong>lo non è sufficientemente espressivo per rappresentare relazioni complesse tra i vari<br />

elementi.<br />

36


CAPITOLO 3 – RDF E SPARQL<br />

Un altro mo<strong>del</strong>lo per la rappresentazione <strong>dei</strong> dati è quello relazionale (utilizzato nella<br />

maggioranza <strong>dei</strong> database); questo mo<strong>del</strong>lo non soffre <strong>dei</strong> limiti <strong>del</strong> mo<strong>del</strong>lo ad albero, ma<br />

mal si adatta a def<strong>in</strong>ire schemi <strong>di</strong> messaggi flessibili ed estensibili. Infatti, se si volesse<br />

aggiungere un attributo a una particolare tupla (oggetto base <strong>del</strong> mo<strong>del</strong>lo relazionale),<br />

sarebbe necessario aggiungere tale attributo <strong>in</strong> tutte le altre tuple <strong>del</strong>la stessa relazione.<br />

Un mo<strong>del</strong>lo che racchiude i vantaggi <strong>del</strong> mo<strong>del</strong>lo relazionale e <strong>del</strong> mo<strong>del</strong>lo ad albero è il<br />

mo<strong>del</strong>lo a grafo orientato etichettato, il quale permette <strong>di</strong> def<strong>in</strong>ire un <strong>in</strong>sieme <strong>di</strong> no<strong>di</strong> e<br />

collegarli tramite relazioni etichettate ed orientate. L’elemento m<strong>in</strong>imo <strong>di</strong> tale mo<strong>del</strong>lo è<br />

rappresentato dalla tripla, che connette due no<strong>di</strong> tramite un arco.<br />

Nella figura si vede bene come il mo<strong>del</strong>lo a grafo risulti essere più espressivo per<br />

rappresentare i dati rispetto agli altri due, per questo risulta più adeguato a rappresentare i<br />

dati sul Web. Lo standard RDF rappresenta i dati secondo il mo<strong>del</strong>lo <strong>dei</strong> grafi orientati<br />

etichettati.<br />

Figura 10 - Struttura <strong>dei</strong> tre mo<strong>del</strong>li <strong>di</strong> rappresentazione <strong>dei</strong> dati.<br />

3.7 SPARQL<br />

SPARQL (Simple Protocol And RDF Query Language), è il l<strong>in</strong>guaggio <strong>di</strong> <strong>in</strong>terrogazione<br />

specifico per il recupero <strong>dei</strong> dati espressi <strong>in</strong> RDF dal Web. Accolto con entusiasmo come<br />

l’ultimo tassello per l'e<strong>di</strong>ficazione <strong>del</strong> Semantic Web da W3C, è asceso dal 15 gennaio 2008<br />

al rango <strong>di</strong> W3C Can<strong>di</strong>date Recommendation.<br />

SPARQL è formato da:<br />

o un l<strong>in</strong>guaggio <strong>di</strong> <strong>in</strong>terrogazione (SPARQL Query Language);<br />

o il formato XML per i risultati <strong>del</strong>le query (SPARQL Query XML Results Format);<br />

o il protocollo <strong>di</strong> accesso ai dati che def<strong>in</strong>isce l’uso <strong>di</strong> semplici protocolli HTTP e SOAP<br />

per l’<strong>in</strong>terrogazione remota <strong>dei</strong> database RDF (SPARQL Protocol).<br />

Lo SPARQL Protocol for RDF permette a un generico client <strong>di</strong> <strong>in</strong>terrogare uno o più endpo<strong>in</strong>t<br />

SARQL <strong>in</strong>viando una richiesta espressa nel l<strong>in</strong>guaggio <strong>di</strong> <strong>in</strong>terrogazione e ricevendo come<br />

37


CAPITOLO 3 – RDF E SPARQL<br />

risposta il risultato <strong>in</strong> formato XML. Il protocollo SPARQL è basato su WSDL 2.0 (Web Services<br />

Description Language ) e la sua specifica descrive sia l’<strong>in</strong>terfaccia astratta, sia i legami <strong>di</strong><br />

questa verso gli standard attualmente utilizzati sul Web. Anche lo SPARQL Query Language è<br />

un l<strong>in</strong>guaggio <strong>di</strong> <strong>in</strong>terrogazione pensato per il Web. Infatti oltre a prevedere la clausola<br />

SELECT come <strong>in</strong> SQL 38 , SPARQL offre anche altri costrutti. E’ possibile <strong>in</strong>fatti che non si<br />

conosca a priori lo schema <strong>dei</strong> dati, per risolvere questo problema SPARQL ha la clausola<br />

DESCRIBE, che permette <strong>di</strong> ottenere una descrizione <strong>del</strong>la risorsa cercata; <strong>in</strong>oltre, qualora vi<br />

siano più sorgenti potenzialmente <strong>in</strong> possesso <strong>di</strong> una certa <strong>in</strong>formazione, è possibile che si<br />

presenti la necessità <strong>di</strong> sapere se un certo enunciato o un certo pattern <strong>di</strong> dati sia presente<br />

nella sorgente dati: per questo motivo SPARQL propone la clausola ASK.<br />

Esistono notevoli somiglianze tra i Data Mo<strong>del</strong> su cui si basano i due l<strong>in</strong>guaggi SPARQL e SQL.<br />

L'RDF Data Mo<strong>del</strong> trova corrispondenza con il mo<strong>del</strong>lo Entity-Relationship 39 , ad esempio una<br />

rappresentazione <strong>dei</strong> dati con RDF, come quella che segue, è facilmente “traducibile” come<br />

segmento <strong>di</strong> riga <strong>del</strong>la tabella <strong>di</strong> un database relazionale nella forma “chiave - nome colonna<br />

- valore colonna”:<br />

SOGGETTO PREDICATO OGGETTO<br />

id1234 anno 1994<br />

Tabella 2 - Rappresentazione a tabella <strong>dei</strong> dati con RDF.<br />

ID ANNO .....<br />

1234 1994 .....<br />

Tabella 3 - Rappresentazione a tabella <strong>dei</strong> dati con database relazionale.<br />

Se è possibile trasporre un Data Mo<strong>del</strong> <strong>in</strong> un altro, è altresì possibile trasporre l'uno nell'altro<br />

i rispettivi l<strong>in</strong>guaggi <strong>di</strong> <strong>in</strong>terrogazione, concludendo: gli scopi <strong>di</strong> SQL e <strong>di</strong> SPARQL sono<br />

abbastanza <strong>di</strong>versi tra loro da giustificare la creazione <strong>di</strong> un l<strong>in</strong>guaggio specifico per<br />

l'<strong>in</strong>terrogazione <strong>del</strong>l'RDF. Ciò nonostante è possibile tradurre espressioni SPARQL <strong>in</strong><br />

espressioni SQL, permettendo così a chi ne fa uso, <strong>di</strong> immagazz<strong>in</strong>are i propri dati RDF <strong>in</strong><br />

database relazionali e <strong>di</strong> scrivere le query, a seconda <strong>dei</strong> casi, <strong>in</strong> SQL oppure <strong>in</strong> SPARQL.<br />

3.7.1 Le path expression<br />

SPARQL adotta la s<strong>in</strong>tassi Turtle, un'estensione <strong>di</strong> N-Triples, che si basa sul concetto <strong>di</strong> tripla<br />

e sull’unione degli enunciati rappresentata dal grafo <strong>di</strong> triple. Per esprimere le<br />

<strong>in</strong>terrogazioni, SPARQL <strong>in</strong>troduce il concetto <strong>di</strong> path expression: l’<strong>in</strong>sieme <strong>del</strong>le triple<br />

necessarie a rispondere all’<strong>in</strong>terrogazione, <strong>in</strong> cui sostituiamo uno o più identificativi (sia<br />

38 SQL (Structured Query Language), è un L<strong>in</strong>guaggio <strong>di</strong> programmazione per database progettato per leggere,<br />

mo<strong>di</strong>ficare e gestire dati memorizzati <strong>in</strong> un sistema basato sul mo<strong>del</strong>lo relazionale, per creare e mo<strong>di</strong>ficare<br />

schemi <strong>di</strong> database, per creare e gestire strumenti <strong>di</strong> controllo ed accesso ai dati.<br />

39 L’Entity Relationship Mo<strong>del</strong> è una rappresentazione astratta e concettuale <strong>dei</strong> dati, usato spesso per<br />

produrre database relazionali.<br />

38


CAPITOLO 3 – RDF E SPARQL<br />

risorse che letterali) con una variabile, espressa da una parola arbitraria preceduta dal<br />

simbolo “?”.<br />

La path expression rappresenta qu<strong>in</strong><strong>di</strong> il pattern <strong>dei</strong> dati che vogliamo recuperare e i risultati<br />

<strong>del</strong>l’<strong>in</strong>terrogazione saranno tutte e sole le triple RDF che sod<strong>di</strong>sfano la path expression<br />

sostituendo alle variabili le risorse o i letterali corrispondenti.<br />

Nell’esempio seguente ecco una tripla che costituisce una path expression:<br />

?titolo cd:autore ?autore.<br />

Al posto <strong>del</strong> soggetto e <strong>del</strong>l'oggetto questo “triple pattern” prevede due variabili,<br />

contrassegnate con “?”. Le variabili fungono <strong>in</strong> un certo senso da <strong>in</strong>cognite<br />

<strong>del</strong>l'<strong>in</strong>terrogazione, cd:autore funge <strong>in</strong>vece da costante: le triple RDF che trovano riscontro<br />

nel mo<strong>del</strong>lo associeranno i propri term<strong>in</strong>i alle variabili corrispondenti. Ecco una semplice<br />

query <strong>di</strong> selezione SPARQL:<br />

PREFIX cd: <br />

SELECT ?titolo ?autore ?anno<br />

FROM <br />

WHERE {<br />

?titolo cd:autore ?autore.<br />

?titolo cd:anno ?anno.<br />

}<br />

Nella prima riga viene <strong>di</strong>chiarato il namespace utilizzato e a <strong>di</strong>fferenza <strong>del</strong>la s<strong>in</strong>tassi N3, la<br />

parola chiave PREFIX è senza il simbolo ‘@’ ed alla f<strong>in</strong>e <strong>del</strong>la <strong>di</strong>chiarazione non c’è il punto.<br />

Se si volesse <strong>di</strong>chiarare un namespace <strong>di</strong> default, si potrebbe usare la parola chiave BASE al<br />

posto <strong>di</strong> PREFIX.<br />

Nelle righe successive ci sono altre parole chiave <strong>del</strong> l<strong>in</strong>guaggio SPARQL e l'analogia con il<br />

l<strong>in</strong>guaggio SQL è lampante:<br />

o SELECT def<strong>in</strong>isce le variabili <strong>di</strong> ricerca da prendere <strong>in</strong> considerazione nel risultato<br />

(nell'esempio: titolo, autore e anno);<br />

o FROM specifica il set <strong>di</strong> dati su cui dovrà operare la query (si suppone che le triple<br />

siano immagazz<strong>in</strong>ate presso l'<strong>in</strong><strong>di</strong>rizzo fittizio “http://cd.com/listacd.ttl”). È <strong>in</strong>oltre<br />

possibile ricorrere a clausole FROM NAMED e alla parola chiave GRAPH per<br />

specificare più set <strong>di</strong> dati;<br />

o la clausola WHERE , <strong>in</strong>f<strong>in</strong>e, def<strong>in</strong>isce il criterio <strong>di</strong> selezione specificando tra parentesi<br />

graffe uno o più “triple patterns” separati da punto fermo.<br />

La query precedente ha catturato esclusivamente le triple dotate <strong>di</strong> tutti e tre i term<strong>in</strong>i<br />

richiesti (titolo, autore, anno), escludendo le triple che ne possedevano due soltanto (titolo,<br />

autore). È possibile riformulare la query <strong>in</strong> modo più elastico, prevedendo la possibilità <strong>di</strong><br />

<strong>in</strong>serimento <strong>di</strong> triple <strong>in</strong> cui vi sia l’assenza <strong>di</strong> alcuni term<strong>in</strong>i come mostra l’esempio seguente:<br />

39


CAPITOLO 3 – RDF E SPARQL<br />

PREFIX cd: <br />

SELECT ?titolo ?autore ?anno<br />

FROM <br />

WHERE {<br />

?titolo cd:autore ?autore.<br />

OPTIONAL { ?titolo cd:anno ?anno }<br />

}<br />

Nell'esempio, il secondo pattern è <strong>di</strong>chiarato opzionale: l'<strong>in</strong>formazione è aggiunta al risultato<br />

solo se <strong>di</strong>sponibile, altrimenti le variabili compariranno prive <strong>di</strong> valore. Le risorse sprovviste<br />

<strong>del</strong>la proprietà ‘anno’ sono mostrate ugualmente e le celle <strong>dei</strong> valori mancanti sono lasciate<br />

vuote. Un altro modo per assicurare una certa elasticità nel reperimento <strong>dei</strong> dati è il<br />

seguente:<br />

PREFIX cd: <br />

SELECT ?titolo ?autore ?anno<br />

FROM <br />

WHERE {<br />

{ ?titolo cd:autore ?autore. }<br />

UNION { ?titolo cd:anno ?anno }<br />

}<br />

La parola chiave UNION esprime un OR logico: la query non si limita pertanto alle triple che<br />

sod<strong>di</strong>sfano entrambi i triple patterns, ma cattura sia quelle che sod<strong>di</strong>sfano unicamente il<br />

primo, sia quelle che sod<strong>di</strong>sfano unicamente il secondo.<br />

È possibile porre restrizioni sui valori da associare alle variabili. Ad esempio:<br />

PREFIX cd: <br />

SELECT ?titolo ?anno<br />

FROM <br />

WHERE {<br />

?titolo cd:autore ?autore.<br />

FILTER ( ?anno > 2000 )<br />

}<br />

In questo caso, la restrizione è effettuata me<strong>di</strong>ante l'operatore <strong>di</strong> confronto ‘>’, il filtro<br />

esclude i term<strong>in</strong>i che non sod<strong>di</strong>sfano la con<strong>di</strong>zione def<strong>in</strong>ita tra le parentesi tonde. Gli<br />

operatori utilizzabili all’<strong>in</strong>terno <strong>di</strong> una clausola FILTER sono costituiti da connettivi logici<br />

(AND e OR, rappresentati da ‘&&’ e ‘||’), operazioni <strong>di</strong> comparazione (come ‘>’, ‘


CAPITOLO 3 – RDF E SPARQL<br />

PREFIX cd: <br />

SELECT ?titolo ?autore<br />

FROM <br />

WHERE {<br />

?titolo cd:autore ?autore.<br />

FILTER regex (?autore, “^au”, “i”)<br />

}<br />

Come <strong>in</strong> SQL, è possibile escludere dal risultato i valori duplicati me<strong>di</strong>ante la parola chiave<br />

DISTINCT, ad esempio:<br />

SELECT DISTINCT ?titolo ?autore<br />

Altri costrutti supportati da SPARQL per la manipolazione <strong>del</strong> risultato sono:<br />

ORDER BY DESC ( ?autore )<br />

LIMIT 10<br />

OFFSET 10<br />

o ORDER BY imposta l'ord<strong>in</strong>e <strong>dei</strong> risultati <strong>del</strong>la query: stando all'esempio, i risultati<br />

verranno presentati <strong>in</strong> ord<strong>in</strong>e decrescente (DESC) <strong>in</strong> base alla variabile ?autore.<br />

o LIMIT pone restrizioni al numero <strong>dei</strong> risultati, limitandoli, secondo quanto <strong>in</strong><strong>di</strong>cato<br />

nell'esempio, ai soli primi 10.<br />

o OFFSET permette <strong>di</strong> “saltare” un certo numero <strong>di</strong> risultati, escludendo, stando<br />

all'esempio, i primi 10.<br />

Di particolare <strong>in</strong>teresse sono le query CONSTRUCT, che permettono <strong>di</strong> restituire il risultato<br />

<strong>del</strong>l’<strong>in</strong>terrogazione sotto forma <strong>di</strong> grafo RDF, nell’esempio si vede come viene utilizzato:<br />

PREFIX cd: <br />

CONSTRUCT { ?titolo ?autore }<br />

FROM <br />

WHERE {<br />

?titolo cd:autore ?autore.<br />

}<br />

3.7.2 Output <strong>di</strong> una query <strong>in</strong> formato XML<br />

Eseguendo la seguente query:<br />

PREFIX cd: <br />

SELECT ?titolo ?autore<br />

FROM <br />

WHERE {<br />

?titolo cd:autore ?autore<br />

}<br />

41


Il risultato <strong>in</strong> formato tabulare è:<br />

Il risultato <strong>in</strong> formato XML è:<br />

CAPITOLO 3 – RDF E SPARQL<br />

TITOLO AUTORE<br />

“Permutation” “Amon Tob<strong>in</strong>”<br />

“Bricolage” “Amon Tob<strong>in</strong>”<br />

“Amber” “Autechre”<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Permutation<br />

<br />

<br />

Amon Tob<strong>in</strong><br />

<br />

<br />

<br />

<br />

Bricolage<br />

<br />

<br />

Amon Tob<strong>in</strong><br />

<br />

<br />

<br />

<br />

Amber<br />

<br />

<br />

Autechre<br />

<br />

<br />

<br />

<br />

La s<strong>in</strong>tassi è <strong>in</strong>tuitiva, leggibile e facile da gestire me<strong>di</strong>ante fogli <strong>di</strong> stile. L'elemento ra<strong>di</strong>ce è<br />

‘sparql’, l'attributo ‘xmlns’ def<strong>in</strong>isce, come <strong>di</strong> consueto, il namespace <strong>di</strong> riferimento.<br />

Nella sottosezione ‘head’ sono elencate, nello stesso ord<strong>in</strong>e <strong>in</strong> cui compaiono nella SELECT<br />

<strong>del</strong>la query, le variabili da prendere <strong>in</strong> considerazione nel risultato, <strong>in</strong><strong>di</strong>cate come valori<br />

<strong>del</strong>l'attributo ‘name’ degli elementi vuoti ‘variable’.<br />

42


CAPITOLO 3 – RDF E SPARQL<br />

La seconda sottosezione, ‘results’, contiene una sequenza <strong>di</strong> elementi ‘result’ che<br />

esprimono, per ciascun risultato <strong>del</strong>la query, le variabili cercate, <strong>in</strong><strong>di</strong>cate come valore<br />

<strong>del</strong>l'attributo ‘name’ <strong>del</strong>l'elemento ‘b<strong>in</strong>d<strong>in</strong>g’, e i rispettivi valori (nell'esempio, letterali <strong>di</strong><br />

tipo str<strong>in</strong>ga).<br />

I valori booleani degli attributi ‘ordered’ e ‘<strong>di</strong>st<strong>in</strong>ct’ <strong>del</strong>l'elemento ‘results’ <strong>in</strong><strong>di</strong>cano se<br />

prendere <strong>in</strong> considerazione o meno gli eventuali costrutti ORDER BY o SELECT DISTINCT <strong>del</strong>la<br />

query.<br />

3.7.3 Framework SPARQL<br />

Sono stati realizzati <strong>di</strong>versi framework (piattaforme) open source, qu<strong>in</strong><strong>di</strong> scaricabili<br />

gratuitamente da Internet, che permettono <strong>di</strong> effettuare il pars<strong>in</strong>g (l'analisi) <strong>di</strong> strutture RDF,<br />

l'esecuzione <strong>di</strong> query, la manipolazione, il caricamento <strong>di</strong> triple su database (appoggiandosi<br />

su database relazionali) e altri tipi <strong>di</strong> funzioni.<br />

Attualmente i più <strong>di</strong>ffusi framework sono Jena, Redland, Tw<strong>in</strong>kle, Rap, Sesame, ARC2 e si<br />

<strong>di</strong>fferenziano pr<strong>in</strong>cipalmente per il l<strong>in</strong>guaggio <strong>di</strong> programmazione utilizzato (PHP 40 o JSP 41 ).<br />

Nel progetto <strong>di</strong> questa tesi è stato scelto un framework fra questi e sarà approfon<strong>di</strong>to nel<br />

capitolo 6.<br />

40 PHP (acronimo ricorsivo <strong>di</strong> "PHP: Hypertext Preprocessor", preprocessore <strong>di</strong> ipertesti) è un l<strong>in</strong>guaggio <strong>di</strong><br />

script<strong>in</strong>g <strong>in</strong>terpretato, con licenza open source e parzialmente libera, utilizzato pr<strong>in</strong>cipalmente per<br />

sviluppare applicazioni web lato server.<br />

41 JSP (JavaServer Pages), è una tecnologia Java per lo sviluppo <strong>di</strong> applicazioni Web che forniscono contenuti<br />

d<strong>in</strong>amici <strong>in</strong> formato HTML o XML. Si basa su un <strong>in</strong>sieme <strong>di</strong> speciali tag con cui possono essere <strong>in</strong>vocate<br />

funzioni predef<strong>in</strong>ite o co<strong>di</strong>ce Java (JSTL).<br />

43


CAPITOLO 4<br />

DOQUI<br />

44


CAPITOLO 4 – DOQUI<br />

4.1 CHE COS'È DOQUI<br />

DoQui è una piattaforma <strong>in</strong>formatica <strong>di</strong> gestione documentale che permette <strong>di</strong> organizzare,<br />

archiviare e con<strong>di</strong>videre documenti <strong>in</strong> formato <strong>di</strong>gitale. Realizzata nel 2008 da Regione<br />

Piemonte, Città e Prov<strong>in</strong>cia <strong>di</strong> Tor<strong>in</strong>o con il coord<strong>in</strong>amento <strong>di</strong> CSI-Piemonte e il contributo<br />

<strong>del</strong> Politecnico <strong>di</strong> Tor<strong>in</strong>o e <strong>del</strong>l’Università degli stu<strong>di</strong> <strong>di</strong> Tor<strong>in</strong>o. La piattaforma promuove una<br />

collaborazione fra Enti pubblici e mondo accademico per raggiungere la completa de<br />

materializzazione <strong>dei</strong> processi amm<strong>in</strong>istrativi, per sostenere la crescita <strong>del</strong>le imprese ICT<br />

(Information and Communication Technology) <strong>in</strong> Piemonte e <strong>di</strong>ffondere l’utilizzo <strong>di</strong> soluzioni<br />

e tecnologie open source. Il carattere <strong>in</strong>novativo <strong>del</strong>l’<strong>in</strong>iziativa sta anche nella creazione <strong>di</strong><br />

una comunità <strong>di</strong> soggetti, pubblici e privati, che potranno collaborare e con<strong>di</strong>videre<br />

materiali, temi e documenti <strong>del</strong> progetto.<br />

I vantaggi:<br />

o ottimizza i processi;<br />

o assicura la tracciabilità <strong>del</strong>le azioni;<br />

o <strong>in</strong>crementa la (ri)trovabilità <strong>dei</strong> documenti;<br />

o garantisce sicurezza e riservatezza <strong>del</strong>le <strong>in</strong>formazioni;<br />

o favorisce l'eco-sostenibilità grazie all'abbattimento <strong>dei</strong> consumi <strong>di</strong> carta;<br />

o consente <strong>di</strong> ridurre drasticamente gli spazi e i costi de<strong>di</strong>cati agli archivi cartacei.<br />

Per chi:<br />

o Enti <strong>del</strong>la Pubblica Amm<strong>in</strong>istrazione che hanno necessità <strong>di</strong> assolvere agli obblighi <strong>di</strong><br />

legge <strong>in</strong> materia <strong>di</strong> amm<strong>in</strong>istrazione <strong>di</strong>gitale;<br />

o Aziende che hanno necessità <strong>di</strong> gestire con efficacia la documentazione <strong>di</strong>gitale;<br />

o Aziende che, <strong>in</strong> qualità <strong>di</strong> “fornitori” <strong>di</strong> servizi e soluzioni <strong>in</strong>formatiche, possono<br />

contribuire a migliorare la soluzione sviluppata e ampliare le prospettive <strong>di</strong> mercato.<br />

Le caratteristiche:<br />

o basato su tecnologie open source;<br />

o flessibile: può essere adattato a contesti d'uso ed esigenze <strong>di</strong>versi;<br />

o orientato al riuso <strong>del</strong>le componenti;<br />

o gratuito.<br />

4.2 OBIETTIVI<br />

Il progetto, coord<strong>in</strong>ato da CSI-Piemonte, attua una strategia <strong>di</strong> politica <strong>in</strong>dustriale pubblica<br />

piemontese basata su:<br />

o collaborazione fra Enti pubblici e mondo accademico;<br />

o dematerializzazione e semplificazione <strong>dei</strong> processi amm<strong>in</strong>istrativi;<br />

o utilizzo <strong>di</strong> soluzioni e tecnologie open source;<br />

o sostegno alla crescita <strong>del</strong>le imprese ICT piemontesi.<br />

45


Gli obiettivi:<br />

CAPITOLO 4 – DOQUI<br />

o offrire alla Pubblica Amm<strong>in</strong>istrazione piemontese un sistema <strong>in</strong>formatico per la<br />

gestione documentale per:<br />

assolvere agli obblighi <strong>di</strong> legge nella gestione quoti<strong>di</strong>ana <strong>dei</strong> proce<strong>di</strong>menti<br />

amm<strong>in</strong>istrativi;<br />

razionalizzare i processi organizzativi <strong>in</strong>terni;<br />

ridef<strong>in</strong>ire le modalità <strong>di</strong> <strong>in</strong>terazione con i cittad<strong>in</strong>i e le imprese, <strong>in</strong> vista <strong>di</strong> una<br />

maggiore efficienza e trasparenza;<br />

o determ<strong>in</strong>are ricadute positive sul settore ICT piemontese grazie a:<br />

nuove competenze;<br />

nuovi mo<strong>del</strong>li <strong>di</strong> bus<strong>in</strong>ess;<br />

logiche <strong>di</strong> mercato che privilegiano l’offerta <strong>di</strong> consulenze specialistiche e la<br />

realizzazione <strong>di</strong> progetti e/o prodotti ICT f<strong>in</strong>iti;<br />

o sviluppare una l<strong>in</strong>ea strategica <strong>in</strong>dustriale basata sul software libero attraverso:<br />

una comunità che <strong>di</strong>ffonda l’approccio <strong>in</strong>dustriale al mo<strong>del</strong>lo open source e<br />

costituisca un punto <strong>di</strong> eccellenza a livello nazionale;<br />

la collaborazione fra mondo accademico e Enti Pubblici;<br />

o offrire alle aziende l’opportunità <strong>di</strong>:<br />

acquisire competenze tecnologiche elevate;<br />

proporre servizi aggiuntivi costruiti sulla piattaforma (consulenza,<br />

personalizzazioni e verticalizzazioni, evoluzioni funzionali).<br />

4.3 INNOVAZIONE<br />

DoQui propone una soluzione:<br />

o open source, per fornire un vantaggio competitivo al territorio e valorizzare le<br />

competenze presenti;<br />

o flessibile e orientata al riutilizzo <strong>del</strong>le componenti per assicurare la fruibilità <strong>del</strong><br />

sistema anche <strong>in</strong> filiere documentali <strong>di</strong>verse da quella <strong>di</strong> orig<strong>in</strong>e;<br />

o aperta alle PMI <strong>del</strong> comparto ICT piemontese per stimolare il tessuto produttivo<br />

locale e creare nuove opportunità <strong>di</strong> mercato;<br />

o conforme alla <strong>di</strong>rettiva nazionale (Co<strong>di</strong>ce Amm<strong>in</strong>istrazione Digitale 42 );<br />

o partecipata grazie alla creazione <strong>del</strong>la comunità <strong>di</strong> soggetti pubblici e privati chiamati<br />

a collaborare alla progettazione, gestione e manutenzione <strong>del</strong>la piattaforma.<br />

Il progetto è fortemente <strong>in</strong>novativo per:<br />

42 Il Co<strong>di</strong>ce <strong>del</strong>l’Amm<strong>in</strong>istrazione Digitale è entrato <strong>in</strong> vigore l’ 1 Gennaio 2006 ed ha lo scopo <strong>di</strong> assicurare e<br />

regolare la <strong>di</strong>sponibilità, la gestione, l’accesso, la trasmissione, la conversazione e la fruibilità<br />

<strong>del</strong>l’<strong>in</strong>formazione <strong>in</strong> modalità <strong>di</strong>gitale utilizzando <strong>in</strong> modo appropriato le tecnologie <strong>del</strong>l’<strong>in</strong>formazione e<br />

<strong>del</strong>la comunicazione all’<strong>in</strong>terno <strong>del</strong>la pubblica amm<strong>in</strong>istrazione, nei rapporti tra amm<strong>in</strong>istrazione e privati e<br />

<strong>in</strong> alcuni casi limitati anche solo tra privati.<br />

46


o l’approccio alla gestione documentale;<br />

o il mo<strong>del</strong>lo <strong>di</strong> sviluppo;<br />

o le scelte tecnologiche.<br />

CAPITOLO 4 – DOQUI<br />

4.3.1 L’approccio alla gestione documentale<br />

La soluzione DoQui rovescia la prospettiva tra<strong>di</strong>zionale che considera l’archivio <strong>del</strong>l’Ente<br />

come un derivato <strong>del</strong> sistema <strong>di</strong> protocollo, spostando il focus sui concetti <strong>di</strong> “documento”,<br />

“fascicolo”, “archivio”. Questo consente <strong>di</strong> avviare un piano <strong>di</strong> convergenza<br />

<strong>del</strong>l’organizzazione <strong>del</strong>l’Ente verso una gestione strutturata <strong>del</strong>la propria documentazione, e<br />

affrontare processi <strong>di</strong> dematerializzazione end to end 43 presc<strong>in</strong>dendo dal sistema <strong>di</strong><br />

protocollo.<br />

In base a questo approccio, il mo<strong>del</strong>lo <strong>di</strong> riferimento a lungo term<strong>in</strong>e è <strong>del</strong><strong>in</strong>eato nello<br />

schema:<br />

Figura 11 - Gestione documentale <strong>di</strong> DoQui.<br />

Si <strong>in</strong>quadra nell’ambito <strong>dei</strong> sistemi <strong>di</strong> gestione, archiviazione e con<strong>di</strong>visione <strong>di</strong> documenti<br />

<strong>in</strong>formatici, prodotti cartacei <strong>di</strong>gitalizzati o <strong>di</strong>gitali già <strong>in</strong> orig<strong>in</strong>e.<br />

Il perimetro funzionale è stato def<strong>in</strong>ito a partire dall’analisi <strong>del</strong> ciclo <strong>di</strong> vita <strong>del</strong> documento,<br />

(<strong>di</strong>gitale o cartaceo, protocollato o non) all’<strong>in</strong>terno <strong>del</strong>l’Ente o meglio <strong>di</strong> una sua Area<br />

Organizzativa Omogenea (AOO):<br />

43 Il pr<strong>in</strong>cipio end to end è uno <strong>dei</strong> pr<strong>in</strong>cipi centrali <strong>del</strong> protocollo IP (Internet Protocol), che fornisce le basi per<br />

Internet. Secondo il pr<strong>in</strong>cipio <strong>del</strong>l’ end to end, le operazioni relative ai protocolli <strong>di</strong> comunicazione devono<br />

avvenire nei punti f<strong>in</strong>ali <strong>di</strong> un sistema <strong>di</strong> comunicazione.<br />

47


CAPITOLO 4 – DOQUI<br />

o produzione/ricezione: produzione <strong>del</strong> documento che porta alla sua versione<br />

def<strong>in</strong>itiva oppure ricezione <strong>di</strong> un documento che verrà archiviato o trasmesso ad altri<br />

soggetti;<br />

o gestione: azioni effettuate sul documento nella sua versione def<strong>in</strong>itiva (prodotta o<br />

ricevuta dall’Ente) cioè archiviazione, trasmissione, ricerca, esibizione, etc.;<br />

o conservazione: trasversale al ciclo <strong>di</strong> vita <strong>del</strong> documento a partire dall’<strong>in</strong>serimento <strong>in</strong><br />

archivio corrente e f<strong>in</strong>o al suo versamento nell’archivio <strong>di</strong> deposito.<br />

4.3.2 Il mo<strong>del</strong>lo <strong>di</strong> sviluppo<br />

Le attività <strong>di</strong> raccolta <strong>del</strong>le esigenze e <strong>di</strong> co<strong>di</strong>fica <strong>dei</strong> requisiti funzionali sono state svolte da<br />

un gruppo <strong>di</strong> lavoro multi-Ente e multi-<strong>di</strong>scipl<strong>in</strong>are, con notevoli benefici:<br />

o il mo<strong>del</strong>lo open source garantisce bassi costi <strong>di</strong> adozione e lock-<strong>in</strong> 44 <strong>in</strong>feriori rispetto<br />

alle equivalenti soluzioni commerciali;<br />

o le funzionalità rispondono alle esigenze funzionali, organizzative e operative <strong>di</strong> realtà<br />

amm<strong>in</strong>istrative eterogenee rappresentate dal Gruppo <strong>di</strong> Lavoro;<br />

o le imprese ICT, co<strong>in</strong>volte f<strong>in</strong> dalle prime fasi <strong>del</strong> progetto, hanno l’opportunità <strong>di</strong><br />

acquisire conoscenze e contribuire a migliorare le scelte e i prodotti.<br />

4.3.3 Le scelte tecnologiche<br />

Il sistema progettato è conforme al para<strong>di</strong>gma <strong>di</strong> architettura basata sui servizi (SOA),<br />

scomposta <strong>in</strong> moduli autoconsistenti e basata su standard <strong>di</strong> ambito ECM (Enterprise<br />

Content Management), tipici <strong>di</strong> tutti i pr<strong>in</strong>cipali vendors.<br />

Questa impostazione garantisce:<br />

o una migliore sud<strong>di</strong>visione tra le funzioni <strong>di</strong> sistemi complessi <strong>di</strong> gestione documentale<br />

(storage 45 , bus<strong>in</strong>ess logic <strong>di</strong> accesso allo storage, bus<strong>in</strong>ess logic <strong>di</strong> organizzazione <strong>dei</strong><br />

contenuti, <strong>in</strong>terfacccia utente);<br />

o l’accrescimento funzionale <strong>del</strong> sistema attraverso l’<strong>in</strong>nesto nell’architettura<br />

complessiva <strong>di</strong> altri moduli autoconsistenti, anche se sviluppati con tecnologie<br />

<strong>di</strong>verse e da soggetti <strong>di</strong>versi.<br />

4.4 COMPONENTI DEL SISTEMA<br />

Il Sistema <strong>di</strong> Gestione Documentale ha come cuore operativo la gestione <strong>del</strong>l’archivio<br />

tramite l’applicativo DoQui Acta e come piattaforma <strong>di</strong> Content Management DoQui Index.<br />

44 Il fenomeno <strong>del</strong> lock-<strong>in</strong> si ha quando, <strong>in</strong><strong>di</strong>vidualmente o collettivamente, si è "catturati" da una scelta<br />

tecnologica potenzialmente <strong>in</strong>feriore rispetto ad altre <strong>di</strong>sponibili, è assai rilevante nell'ambito <strong>del</strong>le<br />

tecnologie <strong>di</strong> Internet.<br />

45 Storage, deposito dati.<br />

48


CAPITOLO 4 – DOQUI<br />

Le filiere <strong>di</strong> produzione/ricezione <strong>dei</strong> documenti così come i sistemi <strong>di</strong> gestione <strong>del</strong>le<br />

strutture organizzative, autenticazione, autorizzazione e firma <strong>di</strong>gitale sono <strong>in</strong>tegrati con la<br />

gestione <strong>del</strong>l’archivio, mentre il servizio <strong>di</strong> conservazione viene reso <strong>di</strong>sponibile alla gestione<br />

<strong>del</strong>l’archivio dalla piattaforma.<br />

DoQui Index gestisce anche l’archiviazione separata <strong>di</strong> documenti <strong>in</strong> archivio corrente,<br />

sempre <strong>di</strong>sponibili on l<strong>in</strong>e, <strong>di</strong>versamente da quelli <strong>in</strong> archivio <strong>di</strong> deposito che potranno<br />

risiedere su supporti <strong>di</strong> memorizzazione anche non <strong>in</strong> l<strong>in</strong>ea. La componente <strong>di</strong> Content<br />

Management (DoQui Index) consente <strong>di</strong> effettuare l’archiviazione <strong>dei</strong> documenti mettendo a<br />

<strong>di</strong>sposizione il software <strong>di</strong> base a garanzia <strong>del</strong>l’<strong>in</strong>tegrità e <strong>del</strong>l’immo<strong>di</strong>ficabilità <strong>dei</strong><br />

documenti, fornendo le seguenti pr<strong>in</strong>cipali funzionalità:<br />

o il check-<strong>in</strong> ed il check-out <strong>dei</strong> documenti;<br />

o l’esibizione <strong>dei</strong> documenti;<br />

o l’accesso ai documenti;<br />

o la gestione <strong>del</strong> version<strong>in</strong>g;<br />

o il supporto alla firma <strong>di</strong>gitale e al time stamp<strong>in</strong>g;<br />

o la ricerca <strong>dei</strong> documenti.<br />

L’applicativo DoQui Acta è un <strong>in</strong>sieme <strong>in</strong>tegrato <strong>di</strong> moduli funzionali che def<strong>in</strong>iscono, nella<br />

loro completezza, la gestione documentale <strong>del</strong>l’Ente, cioè la modalità con cui le funzionalità<br />

base <strong>del</strong>la piattaforma sono utilizzate dall’Ente:<br />

o back-office (BKO): modulo per la def<strong>in</strong>izione <strong>del</strong>la struttura <strong>del</strong>l’Ente, degli utenti, <strong>dei</strong><br />

profili, e <strong>del</strong> <strong>di</strong>ritto <strong>di</strong> accesso ai documenti;<br />

o gestione strutture archivio (GSA): modulo per la def<strong>in</strong>izione <strong>del</strong>la struttura<br />

<strong>del</strong>l’archivio, <strong>del</strong> titolario <strong>di</strong> classificazione e <strong>del</strong>le strutture aggregative;<br />

o gestione contenuti (GCO): modulo per la gestione <strong>del</strong>le strutture aggregative <strong>dei</strong><br />

documenti e per effettuare tutte le operazioni su <strong>di</strong> esse (ad esempio <strong>in</strong>serire e<br />

prelevare documenti);<br />

o gestione smistamento (SMS): modulo per consentire lo smistamento <strong>dei</strong> documenti,<br />

<strong>in</strong>viare e ricevere gli avvisi <strong>di</strong> comunicazione agli utenti sulla presenza <strong>di</strong> documenti<br />

nel sistema;<br />

o gestione archivio (GAR): modulo per tutte le operazioni proprie <strong>del</strong>la gestione<br />

archivio;<br />

o au<strong>di</strong>t trail (AUD): modulo per la registrazione <strong>del</strong>le operazioni effettuate nel sistema<br />

con le relative responsabilità e tempi;<br />

o servizi applicativi (SER): modulo per la def<strong>in</strong>izione <strong>dei</strong> servizi applicativi richiamabili<br />

da procedure software esterne al sistema <strong>di</strong> gestione documentale.<br />

49


CAPITOLO 4 – DOQUI<br />

Figura 12 - Componenti <strong>del</strong> sistema DoQui.<br />

4.5 STRUTTURA DOQUI<br />

I componenti che costituiscono la struttura <strong>di</strong> DoQui si sud<strong>di</strong>vidono <strong>in</strong> applicazioni e<br />

<strong>in</strong>frastrutture.<br />

Infrastrutture:<br />

o Index è il motore <strong>di</strong> gestione <strong>dei</strong> contenuti <strong>di</strong>gitali, basato su un mo<strong>del</strong>lo<br />

<strong>in</strong>frastrutturale SOA che rende <strong>di</strong>sponibili servizi <strong>di</strong> document management riferiti<br />

alle più estese soluzioni <strong>in</strong>dustriali <strong>di</strong> ECM. Index è <strong>di</strong> classe enterprise, presenta<br />

un'alta modularità, notevole capacità <strong>di</strong> carico, elevata scalabilità.<br />

o Flux è un sistema per la gestione <strong>del</strong> ciclo <strong>di</strong> vita <strong>dei</strong> processi <strong>di</strong> bus<strong>in</strong>ess a supporto<br />

<strong>del</strong>le attività necessarie per def<strong>in</strong>ire, ottimizzare, monitorare e <strong>in</strong>tegrare le prassi<br />

lavorative <strong>di</strong> un’azienda. Fornisce strumenti per la configurazione e la realizzazione <strong>di</strong><br />

soluzioni applicative personalizzate per l'automazione <strong>di</strong> processi e gestisce processi<br />

che trattano documenti <strong>in</strong> <strong>in</strong>tegrazione con le altre componenti presenti nell'offerta<br />

DoQui.<br />

Applicazioni:<br />

o Acta è un sistema <strong>in</strong>tegrato per la gestione <strong>del</strong>la documentazione elettronica degli<br />

Enti pubblici.<br />

o Acta light è un’implementazione ridotta <strong>di</strong> Acta. Per Enti pubblici e non solo.<br />

o Cedol<strong>in</strong>o elettronico è il sistema per la gestione <strong>di</strong> tutte le attività necessarie alla<br />

pubblicazione <strong>del</strong> cedol<strong>in</strong>o elettronico.<br />

o Preserve è un’applicazione per la connessione ai servizi esterni <strong>di</strong> conservazione<br />

sostitutiva secondo le norme previste dalla legge.<br />

50


CAPITOLO 4 – DOQUI<br />

o Share è il sistema per la gestione strutturata e la con<strong>di</strong>visione <strong>di</strong> documenti <strong>di</strong>gitali <strong>in</strong><br />

contesti <strong>di</strong> carattere collaborativo.<br />

Figura 13 - Struttura DoQui.<br />

51


CAPITOLO 5<br />

DEFINIZIONE DEL PROBLEMA<br />

52


5.1 OBIETTIVI GENERALI<br />

CAPITOLO 5 – DEFINIZIONE DEL PROBLEMA<br />

“È possibile utilizzare Index per rappresentare i dati <strong>in</strong> modo semantico?”<br />

Questo <strong>in</strong>terrogativo è il cuore <strong>di</strong> codesta tesi, ovvero capire come portare le tecnologie <strong>del</strong><br />

Semantic Web all’<strong>in</strong>terno <strong>di</strong> un sistema documentale quale DoQui e nel particolare<br />

all’<strong>in</strong>terno <strong>del</strong>l’<strong>in</strong>frastruttura Index, il motore <strong>di</strong> gestione <strong>di</strong> documenti <strong>in</strong> formato <strong>di</strong>gitale<br />

<strong>del</strong>la Regione Piemonte.<br />

Questo <strong>in</strong>terrogativo nasce dalla consapevolezza <strong>del</strong>le potenzialità <strong>del</strong> Semantic Web, ad<br />

oggi l’obiettivo <strong>del</strong>le nuove tecnologie <strong>del</strong> Web è quello <strong>di</strong> sfruttare sempre più le macch<strong>in</strong>e<br />

e per far questo è necessario organizzare meglio e <strong>in</strong> modo più flessibile l’archiviazione <strong>dei</strong><br />

dati per rendere più facile la ricerca e favorire un uso migliore <strong>del</strong>le risorse esistenti<br />

(documenti, dati, funzionalità), che crescono sempre più.<br />

Per non passare sempre attraverso manutenzioni applicative occorre trasferire alle<br />

applicazioni più conoscenza e meglio organizzata, <strong>in</strong> modo tale che le <strong>in</strong>formazioni siano<br />

<strong>in</strong>terpretabili dalle macch<strong>in</strong>e.<br />

La conoscenza si può organizzare sia utilizzando concetti def<strong>in</strong>iti univocamente attraverso<br />

URI, classificazioni e comportamenti, e sia utilizzando contesti def<strong>in</strong>iti univocamente con<br />

dom<strong>in</strong>i e campi <strong>di</strong> applicabilità <strong>dei</strong> concetti. Dunque, attraverso concetti e contesti univoci<br />

<strong>di</strong>viene possibile per le macch<strong>in</strong>e “ragionare”, creando nuovi collegamenti con altre<br />

conoscenze, cosicché i dati evolvano e si cre<strong>in</strong>o <strong>dei</strong> veri e propri aggregati <strong>di</strong> conoscenza il<br />

cui valore f<strong>in</strong>ale è potenzialmente maggiore. E aff<strong>in</strong>ché la conoscenza possa essere utilizzata<br />

da applicazioni <strong>di</strong>fferenti deve essere organizzata fuori dalle applicazioni e deve essere<br />

rappresentata <strong>in</strong> modo standard.<br />

Per organizzare meglio la conoscenza i dati devono essere trattati <strong>in</strong> maniera che non siano<br />

<strong>dei</strong> semplici file testuali ma che siano strutturati attraverso la logica <strong>del</strong>la semantica tale da<br />

permettere elaborazioni <strong>in</strong>formative successive effettuate da “agenti <strong>in</strong>telligenti”, <strong>in</strong> modo<br />

tale che questi non si limit<strong>in</strong>o ai soli dati quantitativi ma che ampl<strong>in</strong>o la sfera conoscitiva<br />

rendendo <strong>di</strong>sponibili <strong>in</strong>formazioni aggiuntive, <strong>di</strong> carattere qualitativo.<br />

Nella figura è mostrato un esempio <strong>di</strong> come gli agenti <strong>in</strong>telligenti possano elaborare i dati<br />

relativi agli <strong>in</strong>gre<strong>di</strong>enti <strong>di</strong> un piatto e ricondurci alle case <strong>di</strong> produzione <strong>di</strong> tali <strong>in</strong>gre<strong>di</strong>enti.<br />

Questo grazie all’<strong>in</strong>cremento <strong>del</strong>la conoscenza degli stessi agenti <strong>in</strong>telligenti che att<strong>in</strong>gono,<br />

nelle loro ricerche, a più sorgenti precedentemente strutturate con la logica <strong>del</strong>la semantica.<br />

E dato l’<strong>in</strong>cremento <strong>di</strong> questa logica nel Web, si possono creare numerosi collegamenti resi<br />

<strong>di</strong>sponibili <strong>di</strong>rettamente dalle macch<strong>in</strong>e senza che sia l’uomo a doverli cercare. Chiaramente<br />

aff<strong>in</strong>ché il tutto funzioni è necessario che gli identificativi <strong>del</strong>le stesse risorse, tra le <strong>di</strong>verse<br />

sorgenti, siano uguali.<br />

53


CAPITOLO 5 – DEFINIZIONE DEL PROBLEMA<br />

Figura 14 - Esempio <strong>di</strong> collegamenti creati da Agenti <strong>in</strong>telligenti.<br />

Qu<strong>in</strong><strong>di</strong> l’<strong>in</strong>terrogativo <strong>in</strong>iziale vuole porre l’attenzione sulle potenzialità <strong>di</strong> Index e sulla<br />

possibilità <strong>di</strong> rappresentare e utilizzare i dati al suo <strong>in</strong>terno <strong>in</strong> modo semantico; questo per<br />

permettere una ricerca migliore <strong>in</strong>ternamente ed esternamente, con<strong>di</strong>videndo la<br />

conoscenza <strong>di</strong> Index con altri applicativi <strong>di</strong> ricerca. Fondamentalmente uno stu<strong>di</strong>o, quello <strong>di</strong><br />

questa tesi, volto a capire se Index per come è stato strutturato possa evolversi verso il Web<br />

3.0 senza apportare mo<strong>di</strong>fiche alla sua struttura <strong>in</strong>terna.<br />

5.2 CASO DI STUDIO<br />

Il progetto ha comportato la realizzazione <strong>di</strong> un’<strong>in</strong>terfaccia Web che permetta a livello<br />

amm<strong>in</strong>istrativo la gestione <strong>dei</strong> dati relativi ai menu <strong>dei</strong> ristoranti e qu<strong>in</strong><strong>di</strong> consenta ai gestori<br />

<strong>di</strong> ristorante (o a chi ne fa le veci per loro) <strong>di</strong> creare un menu composto da tutte le sue parti,<br />

qu<strong>in</strong><strong>di</strong> portate, bevande, coperto, tipi <strong>di</strong> piatti, i relativi prezzi ed eventuali descrizioni <strong>dei</strong><br />

piatti.<br />

Dovendo giungere a <strong>del</strong>le conclusioni f<strong>in</strong>ali che rispondono al quesito pr<strong>in</strong>cipale su cui si<br />

basa questa tesi è stato utile percorrere due strade <strong>di</strong>fferenti ma parallele per arrivare allo<br />

stesso risultato e valutarle me<strong>di</strong>ante confronto.<br />

Il f<strong>in</strong>e è rappresentare e utilizzare i dati <strong>in</strong> modo semantico, il punto <strong>di</strong> partenza è<br />

l’<strong>in</strong>terfaccia Web <strong>di</strong> un CMS per menu <strong>di</strong> ristoranti, le due strade <strong>di</strong>fferenti ma parallele da<br />

percorrere sono:<br />

54


CAPITOLO 5 – DEFINIZIONE DEL PROBLEMA<br />

o rappresentare i dati su RDF e <strong>in</strong>terrogandoli utilizzando un EndPo<strong>in</strong>t SPARQL 46 ;<br />

o rappresentare e utilizzare i dati semantici con Index.<br />

Avere due versioni <strong>di</strong>fferenti <strong>del</strong>lo stesso progetto permette <strong>di</strong> analizzare meglio i pro e i<br />

contro <strong>di</strong> entrambi e ai f<strong>in</strong>i <strong>del</strong>la ricerca consente <strong>di</strong> trarre <strong>del</strong>le conclusioni migliori.<br />

Queste due versioni sono presentate e analizzate rispettivamente nei capitoli 6 e 7, mentre il<br />

capitolo 8 mostra tutte le valutazioni nate dal confronto.<br />

5.3 REALIZZAZIONE INTERFACCIA<br />

I due percorsi, seguiti per la realizzazione f<strong>in</strong>ale <strong>del</strong> progetto, partono dalla stessa <strong>in</strong>terfaccia<br />

Web, le funzionalità <strong>del</strong>l’<strong>in</strong>terfaccia <strong>in</strong>fatti non cambiano, ciò che cambia è il back-end,<br />

ovvero il luogo dove i dati vengono allocati. Per cui il primo passo da compiere è stato la<br />

realizzazione <strong>del</strong>l’<strong>in</strong>terfaccia.<br />

Per realizzare l’<strong>in</strong>terfaccia Web <strong>di</strong> un CMS sui menu <strong>dei</strong> ristoranti e per capire meglio <strong>di</strong> quali<br />

elementi quest’ultimi si possano comporre è stato opportuno <strong>in</strong>iziare con l’analisi <strong>di</strong> un vero<br />

e proprio menu <strong>di</strong> un ristorante. La catalogazione, <strong>in</strong> un menu per ristoranti, avviene per<br />

portate, qu<strong>in</strong><strong>di</strong> primi, secon<strong>di</strong>, frutta, etc. e queste a loro volta sono composte dai <strong>di</strong>versi<br />

piatti con relativi prezzi ed eventuali descrizioni degli <strong>in</strong>gre<strong>di</strong>enti <strong>del</strong> piatto, come mostrato<br />

<strong>in</strong> figura.<br />

Figura 15 – Sud<strong>di</strong>visione menu ristorante.<br />

46 Endpo<strong>in</strong>t SPARQL, è un servizio che consente agli utenti <strong>di</strong> <strong>in</strong>terrogare una base <strong>di</strong> conoscenze RDF<br />

attraverso il l<strong>in</strong>guaggio SPARQL.<br />

55


CAPITOLO 5 – DEFINIZIONE DEL PROBLEMA<br />

È stato utile partire da questa sud<strong>di</strong>visione per decidere come organizzare nel miglior modo<br />

l’<strong>in</strong>terfaccia utente per l’<strong>in</strong>serimento <strong>dei</strong> dati <strong>di</strong> un menu. Infatti, osservando anche la figura,<br />

è automatico pensare che sia necessario un primo box (riquadro) per l’<strong>in</strong>serimento <strong>del</strong>le<br />

portate, un secondo box per l’<strong>in</strong>serimento <strong>dei</strong> piatti e relativi prezzi ed <strong>in</strong>f<strong>in</strong>e un terzo per<br />

eventuali descrizioni <strong>del</strong> piatto, come gli <strong>in</strong>gre<strong>di</strong>enti che compongono il piatto, l’orig<strong>in</strong>e <strong>di</strong><br />

tali <strong>in</strong>gre<strong>di</strong>enti, etc.<br />

La figura che segue mostra l’<strong>in</strong>terfaccia nella sua realizzazione f<strong>in</strong>ale, tale <strong>in</strong>terfaccia<br />

consente ad un amm<strong>in</strong>istratore <strong>di</strong> creare le portate, gestirne la catalogazione, elim<strong>in</strong>arle e<br />

mo<strong>di</strong>ficarle utilizzando il riquadro a s<strong>in</strong>istra. Per ogni portata è poi possibile, utilizzando il<br />

riquadro centrale, <strong>in</strong>serire i piatti che la compongono con i relativi prezzi, gestirne la<br />

catalogazione, elim<strong>in</strong>arli e mo<strong>di</strong>ficarli. Inf<strong>in</strong>e, nel riquadro a s<strong>in</strong>istra, per ciascun piatto è<br />

possibile <strong>in</strong>serirne una descrizione.<br />

Figura 16 – Interfaccia realizzata <strong>del</strong> CMS <strong>di</strong> un menu per ristorante.<br />

Nella realizzazione <strong>di</strong> questa <strong>in</strong>terfaccia è stato utilizzato jQuery 47 , un framework JavaScript<br />

che mo<strong>di</strong>fica, il modo <strong>in</strong> cui si programma <strong>in</strong> JavaScript, <strong>in</strong>fatti le pr<strong>in</strong>cipali funzioni <strong>di</strong><br />

quest’ultima (e i problemi ad esse associati) sono state sostituite da strutture più cross-<br />

47 jQuery è un framework JavaScript, realizzato per supportare nel miglior modo possibile lo sviluppatore web<br />

garantendogli, non solo un più rapido sviluppo <strong>del</strong>le applicazioni ma anche, e soprattutto, la sicurezza <strong>di</strong><br />

avere un'architettura compatibile con tutti i pr<strong>in</strong>cipali browser moderni.<br />

56


CAPITOLO 5 – DEFINIZIONE DEL PROBLEMA<br />

browser 48 che facilitano non <strong>di</strong> poco il lavoro <strong>di</strong> un programmatore. Con jQuery sono state<br />

realizzate le funzioni Drag&Drop sulle portate e sui piatti per gestire un loro ord<strong>in</strong>amento nei<br />

rispettivi box, <strong>del</strong>le Dialog personalizzate con una grafica <strong>di</strong>fferente dalle classiche Alert <strong>dei</strong><br />

vari browser, una WordSuggestion nell’<strong>in</strong>serimento <strong>del</strong>le portate per consigliare le portate<br />

più comuni.<br />

Ultimata l’<strong>in</strong>terfaccia si è passati ad un’analisi <strong>dei</strong> dati per decidere quale fosse la loro<br />

migliore organizzazione semantica per poi operare sulla costruzione <strong>dei</strong> due <strong>di</strong>fferenti backend.<br />

Nei successivi capitoli vengono mostrate le due versioni realizzate successive proprio a<br />

tale analisi.<br />

48 Le pag<strong>in</strong>e web si <strong>di</strong>cono talvolta multipiattaforma o cross-browser se possono essere utilizzate da qualunque<br />

browser o da tutti i browser recenti.<br />

57


CAPITOLO 6<br />

VERSIONE BASATA SU RDF E SPARQL<br />

58


CAPITOLO 6 – VERSIONE BASATA SU RDF E SPARQL<br />

6.1 TIPOLOGIA DI INFORMAZIONI<br />

Una volta completato l’aspetto front-end, ovvero sviluppata l’<strong>in</strong>terfaccia Web, si è passati a<br />

quello back-end. Prima <strong>di</strong> <strong>in</strong>iziare a creare la struttura back-end è buona norma soffermarsi<br />

sui dati per capire come questi debbano essere sud<strong>di</strong>visi. Per questo per una prima loro<br />

rappresentazione è stato utilizzato il formato XML, che permette <strong>di</strong> utilizzare tag<br />

personalizzati e proprio per questo consente semplici rappresentazioni facilmente<br />

<strong>in</strong>terpretabili sia dall’uomo che dalla macch<strong>in</strong>a.<br />

Ecco come i dati sono stati sud<strong>di</strong>visi nel file XML:<br />

<br />

<br />

<br />

<br />

<br />

<br />

]><br />

<br />

<br />

<br />

Bresaola <br />

25.00 <br />

Bresaola ]]> <br />

<br />

<br />

Prosciutto Crudo <br />

25.00 <br />

<br />

<br />

.<br />

.<br />

.<br />

<br />

<br />

<br />

Salsiccia Toscana al forno <br />

8.00 <br />

<br />

<br />

.<br />

.<br />

.<br />

<br />

.<br />

.<br />

.<br />

<br />

59


CAPITOLO 6 – VERSIONE BASATA SU RDF E SPARQL<br />

Nella prima parte <strong>di</strong> questo file XML è stato def<strong>in</strong>ito il DOCTYPE, ovvero la grammatica<br />

utilizzata nel restante co<strong>di</strong>ce. Con sono<br />

def<strong>in</strong>ite le caratteristiche degli elementi e questi quali altri elementi possono contenere:<br />

l’elemento menu è costituito da 0 o più elementi portata;<br />

portata è costituita da 0 o più elementi piatto;<br />

piatto è costituido dagli elementi nome, prezzo e descrizione;<br />

nome, prezzo e descrizione sono <strong>di</strong> tipo ‘testuale’.<br />

6.2 MODELLO<br />

La realizzazione <strong>di</strong> un file XML, per gestire i dati, ha permesso <strong>di</strong> ragionare meglio sui dati<br />

stessi e su come questi dovessero essere strutturati per una rappresentazione semantica. Il<br />

Semantic Web prevede che ogni risorsa sia rappresentata da triple soggetto-pre<strong>di</strong>catooggetto,<br />

per esempio l’espressione “il risotto ai funghi ha un prezzo <strong>di</strong> 6€” avrà una<br />

rappresentazione semantica <strong>di</strong> questo tipo:<br />

SOGGETTO PREDICATO OGGETTO<br />

Risotto ai funghi Ha prezzo 6<br />

e nella rappresentazione Notation3 (o N3) <strong>del</strong>l’RDF sarà:<br />

SOGGETTO PREDICATO OGGETTO<br />

@prefix<br />

tr:Risotto_ai_funghi<br />

tr:<br />

tr:has_prezzo<br />

60<br />

.<br />

“6”.<br />

RDF prevede che ogni risorsa possa essere identificata univocamente me<strong>di</strong>ante namespace<br />

utilizzati dalle URI, e per evitare <strong>di</strong> riscriverli per ciascuna s<strong>in</strong>gola risorsa, che renderebbe la<br />

lettura degli enunciati poco comprensibile, è possibile abbreviarli def<strong>in</strong>endo <strong>dei</strong> prefissi. Il<br />

primo enunciato, <strong>in</strong>fatti, specifica che tr: è il prefisso che abbrevia il namespace <strong>del</strong>l’URI<br />

http://www.trim.it/. Dopo aver def<strong>in</strong>ito il prefisso è possibile sostituire, nei successivi<br />

enunciati, le URI con il rispettivo QName (<strong>in</strong> questo caso tr:).<br />

Strutturare tutti i dati <strong>in</strong> questo modo comporta che a monte ci sia una organizzazione <strong>del</strong>la<br />

gestione <strong>del</strong>la conoscenza, ovvero una struttura che def<strong>in</strong>isca i tipi <strong>di</strong> risorse che<br />

effettivamente saranno utilizzati e il tipo <strong>di</strong> relazioni che sussistono tra loro. Si tratta <strong>di</strong><br />

def<strong>in</strong>ire l’ontologia che riflette la conoscenza <strong>dei</strong> dati <strong>del</strong> menu per ristorante, così che possa<br />

poi essere con<strong>di</strong>visa con altre fonti <strong>di</strong> conoscenza, associandole <strong>di</strong>rettamente ed<br />

<strong>in</strong><strong>di</strong>rettamente attraverso l’utilizzo <strong>di</strong> d<strong>in</strong>amiche <strong>in</strong>ferenziali.<br />

L’ontologia viene def<strong>in</strong>ita nell’RDF Schema che offre la possibilità <strong>di</strong> descrivere i tipi <strong>di</strong> risorse<br />

def<strong>in</strong>endone <strong>dei</strong> raggruppamenti; <strong>in</strong> accordo con quanto accade nel mondo <strong>del</strong>l’objectorientation,<br />

è <strong>in</strong>fatti possibile specificare se una risorsa è <strong>di</strong> tipo classe o sotto-classe o <strong>di</strong><br />

tipo proprietà o sotto-proprietà, e così via.


CAPITOLO 6 – VERSIONE BASATA SU RDF E SPARQL<br />

In questo progetto i dati da strutturare, ovvero quelli <strong>di</strong> un menu per ristorante, dovevano<br />

<strong>in</strong>nanzitutto riguardare un s<strong>in</strong>golo menu, <strong>in</strong> quanto ovviamente ciascuno amm<strong>in</strong>istratore<br />

gestisce i dati relativi al menu <strong>del</strong> proprio ristorante, ed essere perciò identificati come<br />

appartenenti ad un determ<strong>in</strong>ato ristorante. Per questo sono stati strutturati nel seguente<br />

modo: una classe Ristorante avente una sotto-proprietà chiamata has_Name_Ristorante che<br />

specifica il name_Ristorante che è una sotto-classe <strong>di</strong> Literal, ovvero un letterale. La classe<br />

Ristorante ha una proprietà che def<strong>in</strong>isce quali portate offre il suo menu, per l’appunto<br />

chiamata offre che ha come codom<strong>in</strong>io la classe Portata, sotto-classe <strong>di</strong> Ristorante.<br />

Portata a sua volta ha una sotto-proprietà che def<strong>in</strong>isce il suo nome, chiamata<br />

has_Name_Portata e codom<strong>in</strong>io name_Portata, sotto-classe <strong>di</strong> Literal. Portata ha anche una<br />

proprietà, per def<strong>in</strong>ire i piatti che la compongono, chiamata is_composed che ha come<br />

codom<strong>in</strong>io la classe Piatto.<br />

Piatto è sotto-classe <strong>di</strong> Portata e ha tre sotto-proprietà che puntano a tre <strong>di</strong>fferenti sottoclassi<br />

<strong>di</strong> Literal, per specificare il nome <strong>del</strong> piatto, il prezzo e una sua descrizione. Queste tre<br />

sotto-proprietà sono chiamate has_Name_Piatto, has_Prezzo_Piatto e<br />

has_Descrizione_Piatto ed hanno rispettivamente come codom<strong>in</strong>io name_Piatto,<br />

prezzo_Piatto e descrizione_Piatto.<br />

I nomi <strong>del</strong>le classi, <strong>del</strong>le proprietà e <strong>dei</strong> letterali sono stati assegnati arbitrariamente con lo<br />

scopo <strong>di</strong> rendere maggiormente comprensibile il tipo <strong>di</strong> <strong>in</strong>formazione che rappresentano.<br />

Questa è la rappresentazione <strong>del</strong>l’RDF Schema <strong>in</strong> N3 <strong>del</strong> menu ristorante:<br />

SOGGETTO PREDICATO OGGETTO<br />

@prefix<br />

@prefix<br />

@prefix<br />

tr:Ristorantre<br />

tr:has_Name_Ristorante<br />

tr:has_Name_Ristorante<br />

tr:has_Name_Ristorante<br />

tr:name_Ristorante<br />

tr:Portata<br />

tr:Portata<br />

tr:offre<br />

tr:offre<br />

tr:offre<br />

tr:has_Name_Portata<br />

tr:has_Name_Portata<br />

tr:has_Name_Portata<br />

tr:name_Portata<br />

rdf:<br />

rdfs:<br />

tr:<br />

rdf: type<br />

rdfs:subPropertyOf<br />

rdf:doma<strong>in</strong><br />

rdf:range<br />

rdfs:subClassOf<br />

rdf:type<br />

rdfs:subClassOf<br />

rdf:type<br />

rdf:doma<strong>in</strong><br />

rdf:range<br />

rdfs:subPropertyOf<br />

rdf:doma<strong>in</strong><br />

rdf:range<br />

rdfs:subClassOf<br />

61<br />

.<br />

.<br />

.<br />

rdfs:Class.<br />

rdfs:label.<br />

tr:Ristorante.<br />

tr:name_Ristorante.<br />

rdfs:Literal.<br />

rdfs:Class.<br />

tr:Ristorante.<br />

rdf:Property.<br />

tr:Ristorante.<br />

tr:Portata.<br />

rdfs:label.<br />

tr:Portata.<br />

tr:name_Portata.<br />

rdfs:Literal.


tr:Piatto<br />

tr:Piatto<br />

tr:is_composed<br />

tr:is_composed<br />

tr:is_composed<br />

tr:has_Name_Piatto<br />

tr:has_Name_Piatto<br />

tr:has_Name_Piatto<br />

tr:name_Piatto<br />

tr:has_Prezzo_Piatto<br />

tr:has_Prezzo_Piatto<br />

tr:has_Prezzo_Piatto<br />

tr:prezzo_Piatto<br />

tr:has_Descrizione_Piatto<br />

tr:has_Descrizione_Piatto<br />

tr:has_Descrizione_Piatto<br />

tr:descrizione_Piatto<br />

CAPITOLO 6 – VERSIONE BASATA SU RDF E SPARQL<br />

rdf:type<br />

rdfs:subClassOf<br />

rdf:type<br />

rdf:doma<strong>in</strong><br />

rdf:range<br />

rdfs:subPropertyOf<br />

rdf:doma<strong>in</strong><br />

rdf:range<br />

rdfs:subClassOf<br />

rdfs:subPropertyOf<br />

rdf:doma<strong>in</strong><br />

rdf:range<br />

rdfs:subClassOf<br />

rdfs:subPropertyOf<br />

rdf:doma<strong>in</strong><br />

rdf:range<br />

rdfs:subClassOf<br />

62<br />

rdfs:Class.<br />

tr:Portata.<br />

rdf:Property.<br />

rdf:Portate.<br />

rdf:Piatto.<br />

rdfs:label.<br />

tr:Piatto.<br />

tr:name_Piatto.<br />

rdfs:Literal.<br />

rdfs:label.<br />

tr:Piatto.<br />

tr:prezzo_Piatto.<br />

rdfs:Literal.<br />

rdfs:label.<br />

tr:Piatto.<br />

tr:descrizione_Piatto.<br />

rdfs:Literal.<br />

Nella figura una rappresentazione <strong>del</strong>l’ontologia a grafo orientato ed etichettato:<br />

Figura 17 - Ontologia <strong>del</strong> menu <strong>di</strong> un ristorante.<br />

Def<strong>in</strong>ita l’ontologia è poi semplice descrivere tutte le risorse. Per esempio per rappresentare<br />

un primo, come nel caso precedente ‘risotto ai funghi’, ed <strong>in</strong><strong>di</strong>care a che tipo <strong>di</strong> portata<br />

appartiene, quale è il suo nome, quale il suo prezzo e quale la sua descrizione vengono<br />

utilizzate le seguenti triple:


CAPITOLO 6 – VERSIONE BASATA SU RDF E SPARQL<br />

SOGGETTO PREDICATO OGGETTO<br />

tr:Secon<strong>di</strong><br />

tr:Risotto_ai_funghi<br />

tr:Risotto_ai_funghi<br />

tr:Risotto_ai_funghi<br />

tr:Risotto_ai_funghi<br />

tr:is_composed<br />

rdf:type<br />

tr:has_Nome_Piatto<br />

tr:has_Prezzo_Piatto<br />

tr:has_Descrizione_Piatto<br />

63<br />

tr:Risotto_ai_funghi.<br />

tr:Piatto.<br />

"Risotto ai funghi".<br />

"8.00".<br />

"Con funghi porc<strong>in</strong>i".<br />

6.3 TOOLKIT SPARQL<br />

Realizzati i file RDF e RDF Schema <strong>in</strong> formato N3, è necessario poter usare gli enunciati<br />

presenti <strong>in</strong> questi files, qu<strong>in</strong><strong>di</strong> poter ottenere quelli desiderati e poterne salvare degli altri: il<br />

l<strong>in</strong>guaggio specifico per <strong>in</strong>terrogare i file RDF è SPARQL.<br />

Per la realizzazione <strong>del</strong> progetto, con la versione basata su RDF e SPARQL, è stata utilizzata la<br />

libreria ARC2 per il motore <strong>di</strong> query SPARQL e per il caricamento e la gestione <strong>del</strong>le<br />

ontologie. ARC2 è un framework realizzato <strong>in</strong> Php che traduce le espressioni SPARQL <strong>in</strong><br />

espressioni SQL, permettendo così <strong>di</strong> immagazz<strong>in</strong>are i propri dati RDF <strong>in</strong> database relazionali.<br />

Essendo le parti <strong>del</strong> componente CMS realizzate con il l<strong>in</strong>guaggio PHP, la scelta <strong>di</strong> utilizzare<br />

questo framework anziché un altro è pr<strong>in</strong>cipalmente dovuta al fatto che anche ARC2 è<br />

realizzato <strong>in</strong> PHP, qu<strong>in</strong><strong>di</strong> una scelta volta ad avere una coerenza <strong>di</strong> l<strong>in</strong>guaggi <strong>di</strong><br />

programmazione.<br />

6.3.1 Impostazioni <strong>in</strong>iziali<br />

ARC2 <strong>in</strong>troduce una classe statica che è tutto ciò che deve essere <strong>in</strong>cluso. Qualsiasi altro<br />

componente può essere caricato tramite ARC2, senza la necessità <strong>di</strong> conoscere l'esatto<br />

percorso <strong>del</strong> file <strong>di</strong> classe.<br />

<strong>in</strong>clude_once(“path/to/arc/ARC2.php”);<br />

Una volta che la classe statica ARC2 è messa a <strong>di</strong>sposizione, è possibile caricare i componenti<br />

con le semplici chiamate <strong>di</strong> metodo e <strong>in</strong>iziare a utilizzarli:<br />

$parser = ARC2::getRDFParser();<br />

$parser->parse('http://example.com/foaf.ttl');<br />

$triples = $parser->getTriples();<br />

6.3.2 Requisiti <strong>del</strong> database<br />

Alcuni componenti hanno bisogno <strong>di</strong> un database MySQL (per esempio l'archivio <strong>di</strong> RDF e il<br />

motore SPARQL). Il database deve essere configurato <strong>in</strong> anticipo cosicché ARC2 possa creare<br />

<strong>in</strong> automatico le tabelle necessarie. Un unico database è sufficiente per creare più negozi<br />

ARC2 ed è possibile fornire un nome personalizzato per ogni negozio, che viene poi<br />

utilizzato, come prefisso <strong>del</strong>la tabella.


CAPITOLO 6 – VERSIONE BASATA SU RDF E SPARQL<br />

Le opzioni <strong>di</strong> configurazione possono essere fornite con qualsiasi istanza <strong>del</strong>la classe che<br />

vengono caricate d<strong>in</strong>amicamente e specificate una volta per tutte:<br />

$config = array(<br />

/* db */<br />

'db_host' => 'localhost', /* default: localhost */<br />

'db_name' => 'my_db',<br />

'db_user' => 'user',<br />

'db_pwd' => 'secret',<br />

/* store */<br />

'store_name' => 'arc_tests',<br />

);<br />

$store = ARC2::getStore($config);<br />

$store -> query ( 'LOAD ' );<br />

Se un eventuale errore <strong>di</strong> trattamento si dovesse verificare, verrebbe registrato e trasmesso<br />

al componente chiamante, <strong>in</strong> modo tale da esplicitare il tipo <strong>di</strong> errore verificatosi:<br />

$rs = $store->query('...');<br />

if ($errs = $store->getErrors()) {<br />

/* $errs contiene errori <strong>di</strong> $store*/<br />

...<br />

}<br />

Con la funzione $store->query('...') è possibile effettuare le <strong>di</strong>verse query, con l<strong>in</strong>guaggio<br />

SPARQL, al database. Con la chiamata $store -> query ( 'LOAD ' )<br />

sono stati caricati tutti gli enunciati che descrivono le risorse <strong>di</strong> questo progetto, contenuti<br />

nel file mio_file_rdf.rdfxml, all’<strong>in</strong>terno <strong>del</strong> database, così da effettuare query <strong>di</strong>rettamente al<br />

database.<br />

6.3.3 Esempio <strong>di</strong> query utilizzate<br />

Ecco qualche esempio <strong>di</strong> query SPARQL realizzate utilizzando il framework ARC2:<br />

public function get_piatti() {<br />

$q = "PREFIX rdf: ".<br />

"PREFIX dc: ".<br />

"PREFIX tr: ".<br />

"SELECT ?id_piatto ?nome ?prezzo ?descrizione ?tipo_portata ".<br />

"WHERE {<br />

?id_piatto rdf:type tr:Piatto.<br />

?id_piatto tr:has_Name_Piatto ?nome.<br />

?id_piatto tr:has_Prezzo_Piatto ?prezzo.<br />

?id_piatto tr:has_Descrizione_Piatto ?descrizione.<br />

?tipo_portata tr:is_composed ?id_piatto.<br />

}";<br />

if ($rows = $this->store->query( $q, 'rows' ))<br />

return $rows;<br />

else<br />

64


}<br />

CAPITOLO 6 – VERSIONE BASATA SU RDF E SPARQL<br />

return null;<br />

Con questa funzione PHP vengono estrapolate dal database <strong>in</strong>formazioni, già precaricate su<br />

quest’ultimo, relative ai piatti. La query è molto semplice, con SELECT vengono passate le<br />

<strong>in</strong>cognite da trovare, che sono <strong>dei</strong> nomi arbitrari preceduti dal ‘?’, mentre con WHERE viene<br />

specificato il path expression, ovvero l’<strong>in</strong>sieme <strong>del</strong>le triple necessarie a rispondere<br />

all’<strong>in</strong>terrogazione. Da questa query viene restituito un’array associativo con key uguali ai<br />

nomi <strong>del</strong>le <strong>in</strong>cognite senza il ‘?’.<br />

Il successivo è un esempio <strong>di</strong> INSERT INTO:<br />

public function aggiungi_piatto($id_piatto, $id_portata, $nome_piatto, $prezzo){<br />

$q = "PREFIX rdf: ".<br />

"PREFIX dc: ".<br />

"PREFIX tr: ".<br />

"INSERT INTO { ".<br />

"tr:".$id_portata." tr:is_composed tr:".$id_piatto.". ".<br />

"tr:".$id_piatto." rdf:type tr:Piatto. ".<br />

"tr:".$id_piatto." tr:has_Name_Piatto \"".$nome_piatto."\". ".<br />

"tr:".$id_piatto." tr:has_Prezzo_Piatto \"".$prezzo."\". ".<br />

"tr:".$id_piatto." tr:has_Descrizione_Piatto \"".$nome_piatto."\". ".<br />

"}";<br />

If ( $rs = $this->store->query( $q ) )<br />

return $rs;<br />

else<br />

return null;<br />

}<br />

Con questa funzione PHP <strong>in</strong>vece viene <strong>in</strong>serito un nuovo piatto nel database passando <strong>in</strong><br />

<strong>in</strong>put quattro valori, che sono l’identificativo <strong>del</strong> piatto, l’identificativo <strong>del</strong>la portata a cui<br />

appartiene il piatto, il nome <strong>del</strong> piatto ed <strong>in</strong>f<strong>in</strong>e il prezzo. Questi valori <strong>in</strong>tegrano il path<br />

expression <strong>del</strong>la query per raff<strong>in</strong>are la ricerca.<br />

Ultimo esempio a riguardo la funzione DELETE FROM:<br />

public function elim<strong>in</strong>a_piatto( $id_portata, $id_piatto ){<br />

$q = "PREFIX rdf: ".<br />

"PREFIX dc: ".<br />

"PREFIX tr: ".<br />

"DELETE FROM { ".<br />

"tr:".$id_piatto." rdf:type tr:Piatto. ".<br />

"tr:".$id_piatto." tr:has_Name_Piatto ?nome. ".<br />

"tr:".$id_piatto." tr:has_Prezzo_Piatto ?prezzo. ".<br />

"tr:".$id_piatto." tr:has_Descrizione_Piatto ?descrizione. ".<br />

"tr:".$id_portata." tr:is_composed tr:".$id_piatto.<br />

" }";<br />

If ( $rs = $this->store->query($q) )<br />

return $rs;<br />

65


}<br />

CAPITOLO 6 – VERSIONE BASATA SU RDF E SPARQL<br />

else<br />

return null;<br />

In questo caso la funzione permette <strong>di</strong> elim<strong>in</strong>are un piatto specificandone <strong>in</strong> <strong>in</strong>put il suo<br />

identificativo e l’identificativo <strong>del</strong>la portata a cui appartiene. Anche <strong>in</strong> questo caso il path<br />

expression si compone con i valori passati <strong>in</strong> <strong>in</strong>put.<br />

Questi esempi completano la presentazione <strong>del</strong> progetto realizzato con la prima versione,<br />

ovvero quella basata su RDF e SPARQL. Nel corso <strong>del</strong> capitolo è stato presentato come i dati<br />

debbano essere strutturati con la logica <strong>del</strong>la semantica partendo da una loro<br />

rappresentazione ontologica. Ed <strong>in</strong>f<strong>in</strong>e come questi possano essere <strong>in</strong>terrogati con SPARQL<br />

me<strong>di</strong>ante l’ausilio <strong>del</strong> framework ARC2. Nel prossimo capitolo sarà affrontata la seconda<br />

versione partendo da considerazioni, fatte proprio <strong>in</strong> questo capitolo, sull’ontologia <strong>dei</strong> dati<br />

<strong>di</strong> un menu per ristorante.<br />

66


CAPITOLO 7<br />

VERSIONE BASATA SU INDEX<br />

67


CAPITOLO 7 – VERSIONE BASATA SU INDEX<br />

F<strong>in</strong> qui il progetto ha visto la realizzazione <strong>del</strong>la prima versione, quella basata su RDF e<br />

SPARQL: è stata pertanto realizzata un’<strong>in</strong>terfaccia Web che permette la gestione <strong>di</strong> un menu<br />

per ristorante e che, a livello back-end, strutturara i dati con la logica <strong>del</strong>la semantica,<br />

esprimendo tutte le risorse <strong>in</strong> triple soggetto-pre<strong>di</strong>cato-oggetto, e li <strong>in</strong>terroga con query<br />

SPARQL per caricare e salvare i dati <strong>in</strong> un database.<br />

In questo capitolo viene <strong>in</strong>vece proposta la versione basata su Index e, a fronte <strong>del</strong>la sua<br />

realizzazione, le analisi effettuate sulle possibili <strong>in</strong>terpretazioni per la risoluzione <strong>del</strong><br />

problema pr<strong>in</strong>cipale:<br />

“È possibile utilizzare Index per rappresentare i dati <strong>in</strong> modo semantico?”<br />

7.1 PRIMO APPROCCIO AD INDEX<br />

Per poter affrontare tematiche come “che tipo <strong>di</strong> <strong>in</strong>terrogazioni è possibile effettuare ad<br />

Index?” e “quali dati è possibile trattare?” è importante conoscere i Web Service <strong>di</strong> Index.<br />

I servizi messi a <strong>di</strong>sposizione da Index sono presenti su file WSDL (Web Services Description<br />

Language) che contengono <strong>in</strong>formazioni su cosa può essere utilizzato (le “operazioni” messe<br />

a <strong>di</strong>sposizione dal servizio), come utilizzarlo (il protocollo <strong>di</strong> comunicazione da utilizzare per<br />

accedere al servizio, il formato <strong>dei</strong> messaggi accettati <strong>in</strong> <strong>in</strong>put e restituiti <strong>in</strong> output dal<br />

servizio ed i dati correlati, ovvero i “v<strong>in</strong>coli”, b<strong>in</strong>d<strong>in</strong>gs <strong>in</strong> <strong>in</strong>glese, <strong>del</strong> servizio) e dove<br />

utilizzarlo (il cosiddetto endpo<strong>in</strong>t <strong>del</strong> servizio che solitamente corrisponde all'<strong>in</strong><strong>di</strong>rizzo, <strong>in</strong><br />

formato URI, che rende <strong>di</strong>sponibile il Web Service). Pertanto lo stu<strong>di</strong>o si è focalizzato sui file<br />

WSDL <strong>di</strong> Index, ed <strong>in</strong> particolare ecmeng<strong>in</strong>e-backoffice.wsdl e ecmeng<strong>in</strong>e-management.wsdl.<br />

Il primo descrive il servizio <strong>di</strong> backoffice con operazioni appartenenti a 4 categorie pr<strong>in</strong>cipali:<br />

o gestione utenti e gruppi (creazione, mo<strong>di</strong>fica, cancellazione, ricerca);<br />

o access Control List (creazione, mo<strong>di</strong>fica, cancellazione);<br />

o gestione repository logici;<br />

o <strong>in</strong>formazioni <strong>del</strong> sistema.<br />

Il secondo file <strong>in</strong>vece descrive il servizio <strong>di</strong> management e qui troviamo operazioni<br />

appartenenti a 5 categorie pr<strong>in</strong>cipali:<br />

o gestione contenuti (creazione, mo<strong>di</strong>fica, cancellazione);<br />

o controllo <strong>del</strong> formato <strong>dei</strong> contenuti;<br />

o version<strong>in</strong>g;<br />

o check-<strong>in</strong>/check-out (con lock<strong>in</strong>g);<br />

o gestione <strong>di</strong> cicli semplici <strong>di</strong> approvazione;<br />

o au<strong>di</strong>t<strong>in</strong>g.<br />

68


CAPITOLO 7 – VERSIONE BASATA SU INDEX<br />

Qu<strong>in</strong><strong>di</strong> per capire meglio come utilizzarli sono state realizzate <strong>del</strong>le chiamate SOAP ad Index<br />

<strong>in</strong> l<strong>in</strong>guaggio Php per creare nuovi utenti, nuove cartelle, <strong>in</strong>serire file testuali, etc. Ecco un<br />

esempio:<br />

<br />

public function crea_content() {<br />

/* OperationContext - <strong>in</strong>fo per l'autenticazione */<br />

$ctx = array('username'=>'adm<strong>in</strong>', 'password'=>'adm<strong>in</strong>', 'nomeFisico'=>'Amm<strong>in</strong>',<br />

'fruitore'=>'Esempio');<br />

/* Metadati <strong>del</strong> contenuto... */<br />

$metadati = array('prefixedName'=>'cm:name', 'dataType'=>'d:text', 'values'=>array('mio.txt'),<br />

'multivalue'=>false);<br />

/* Contenuto */<br />

$text="Nuovo file <strong>di</strong> testo";<br />

$myFile = array('properties'=>array($metadati), 'prefixedName'=>'cm:mio.txt',<br />

'typePrefixedName'=>'cm:content','parentAssocTypePrefixedName'=>'cm:conta<strong>in</strong>s',<br />

'contentPropertyPrefixedName'=>'cm:content', 'mimeType'=>'txt',<br />

'encod<strong>in</strong>g'=>'UTF-8', 'content'=>$text);<br />

/* Creazione <strong>del</strong> Node */<br />

$xpath = array('XPathQuery'=>'/app:company_home', 'fullTextAllWords'=>false, 'limit'=>0,<br />

'pageIndex'=>0, 'pageSize'=>0);<br />

try {<br />

$myNode = $this->clientM->getUid($xpath, $ctx);<br />

}catch(Exception $e) {<br />

echo $e;<br />

}<br />

/* Eseguo la creazione... */<br />

$myNewNode = $this->clientM->createContent($myNode, $myFile, $ctx);<br />

/* A questo punto la variabile myNewNode conterra' i riferimenti al contenuto appena creato sul<br />

repository "primary". */<br />

In questo esempio ci sono due funzioni, la prima è il costruttore <strong>del</strong>la classe MyFunction che<br />

crea un’istanza ClientM <strong>del</strong>la classe SoapClient passando <strong>in</strong> <strong>in</strong>put ecmeng<strong>in</strong>emanagement.wsdl,<br />

mentre la seconda funzione consente <strong>di</strong> creare un file testuale e <strong>in</strong>serirlo<br />

<strong>in</strong> Index. Tutte le funzioni <strong>di</strong> management utilizzabili <strong>in</strong> Index e descritte nel file WSDL<br />

69


CAPITOLO 7 – VERSIONE BASATA SU INDEX<br />

possono essere chiamate come meto<strong>di</strong> <strong>del</strong>l’oggetto SoapClient, come ad esempio clientM-<br />

>getUid(..) e clientM->ceateContent(..).<br />

Già da questo piccolo esempio è possibile notare quanti parametri bisogna passare alle<br />

funzioni <strong>di</strong> Index; e se questi non sono coerenti con le specifiche stesse <strong>di</strong> Index, le chiamate<br />

creano solo <strong>del</strong>le eccezioni. Inoltre si nota come la creazione <strong>di</strong> un contenuto comporti<br />

anche la creazione <strong>dei</strong> suoi metadati, questo è un elemento importante <strong>in</strong> Index, <strong>in</strong>fatti ogni<br />

nodo, cartella o file può avere <strong>in</strong>formazioni aggiuntive sui metadati ed anche sulle<br />

associazioni con altri no<strong>di</strong>, cartelle o file. Questo elemento tornerà altresì utile nella<br />

realizzazione f<strong>in</strong>ale progetto con questa soluzione e sarà oggetto <strong>di</strong> approfon<strong>di</strong>mento nel<br />

paragrafi successivi.<br />

7.2 DUE POSSIBILI SOLUZIONI<br />

Dopo un primo approccio ai servizi <strong>di</strong> Index resta da capire se con il Content Management <strong>di</strong><br />

DoQui, ovvero Index, sia possibile strutturare i dati <strong>in</strong> triple e se sia possibile <strong>in</strong>terrogarli <strong>in</strong><br />

quel formato. In Index il servizio <strong>di</strong> “management” permette <strong>di</strong> creare, mo<strong>di</strong>ficare e<br />

elim<strong>in</strong>are cartelle, no<strong>di</strong>, categorie, file e relativi metadati e DoQui è un sistema <strong>di</strong> gestione<br />

documentale che permette, grazie a Index, <strong>di</strong> salvare documenti <strong>in</strong> qualsiasi formato e che<br />

consente una ricerca testuale <strong>dei</strong> suoi documenti, pertanto questi documenti sono trattati<br />

come semplici file <strong>di</strong> testo e non è possibile effettuare analisi sulla loro struttura <strong>in</strong>terna, per<br />

esempio <strong>in</strong> caso <strong>di</strong> file XML non è possibile fare il pars<strong>in</strong>g <strong>dei</strong> tag presenti.<br />

Da questa analisi ne deriva che sia <strong>in</strong>utile caricare su DoQui file RDF, <strong>in</strong> quanto non è<br />

possibile gestirli <strong>in</strong>ternamente a meno che non si valut<strong>in</strong>o due soluzioni:<br />

o caricare file RDF all’<strong>in</strong>terno <strong>di</strong> DoQui e permettere ai client esterni <strong>di</strong> prelevarli e <strong>di</strong><br />

gestirli con un EndPo<strong>in</strong>t SPARQL esterno;<br />

o caricare file RDF all’<strong>in</strong>terno <strong>di</strong> DoQui e creare un EndPo<strong>in</strong>t <strong>in</strong>terno a DoQui così che i<br />

client esterni possano <strong>di</strong>rettamente <strong>in</strong>terrogare i file RDF con Index stesso.<br />

Analizzando i pro e i contro si ev<strong>in</strong>ce che <strong>di</strong> entrambe le soluzioni il pro è che i dati sono<br />

rappresentati con la logica <strong>del</strong>la semantica e salvati <strong>in</strong> RDF e con Index allocati <strong>in</strong> DoQui, ma i<br />

contro <strong>di</strong> queste soluzioni non permettono <strong>di</strong> sod<strong>di</strong>sfare completamente l’esigenza <strong>in</strong>iziale:<br />

o la prima soluzione comporta che Index, e <strong>di</strong> conseguenza anche DoQui, non abbia la<br />

possibilità <strong>di</strong> trattare i file RDF, <strong>in</strong>terrogandoli. Si ritrova qu<strong>in</strong><strong>di</strong> ad essere un mero<br />

deposito per gli RDF e non sapere effettivamente cosa siano e cosa farne; si<br />

potrebbero effettuare solo ricerche testuali su questi file ma niente <strong>di</strong> più. Qu<strong>in</strong><strong>di</strong> la<br />

soluzione numero uno è bocciata, anche perché DoQui non semplificherebbe il lavoro<br />

ai client che dovrebbero, successivamente alla richiesta <strong>del</strong> file RDF, analizzarlo con<br />

un EndPoit SPARQL esterno ed eventualmente effettuare nuove chiamate a Index<br />

qualora nell’RDF ci fossero collegamenti a dati multime<strong>di</strong>ali contenuti <strong>in</strong> Index stesso;<br />

70


CAPITOLO 7 – VERSIONE BASATA SU INDEX<br />

o la seconda soluzione <strong>in</strong>vece non rientra nelle logiche applicative <strong>di</strong> DoQui, <strong>in</strong>serire un<br />

EndPo<strong>in</strong>t SPARQL al suo <strong>in</strong>terno sarebbe una forzatura alla sua stessa architettura.<br />

Seguendo questa strada si dovrebbe effettuare una riprogettazione strutturale <strong>del</strong><br />

suo <strong>in</strong>terno che comporterebbe un lavoro non <strong>in</strong><strong>di</strong>fferente e non è esattamente ciò<br />

che si vuol fare. L’EndPo<strong>in</strong>t SPARQL dovrebbe eventualmente essere considerato<br />

come un bridge tra il repository e il fruitore <strong>dei</strong> contenuti e non parte <strong>in</strong>terna <strong>di</strong><br />

DoQui.<br />

Figura 18 – Prime due soluzioni per gestire i dati <strong>in</strong> modo semantico con DoQui.<br />

La figura rappresenta le prime due soluzioni analizzate su come Index possa rappresentare i<br />

dati <strong>in</strong> modo semantico, soluzioni mostratesi non ideali per poterne permettere un loro<br />

utilizzo <strong>in</strong>terno senza stravolgere l’architettura propria <strong>di</strong> Index.<br />

7.3 SOLUZIONE ADOTTATA<br />

La soluzione f<strong>in</strong>ale <strong>del</strong> progetto, <strong>in</strong> questa sua versione, è scaturita osservando proprio la<br />

rappresentazione grafica <strong>del</strong>l’ontologia <strong>dei</strong> dati <strong>di</strong> un menu per ristorante (ve<strong>di</strong> figura 17).<br />

La rappresentazione grafica <strong>di</strong> un ontologia altro non è che un grafo orientato ed<br />

etichettato, ovvero no<strong>di</strong> connessi tra loro attraverso archi orientati ed etichettati (con un<br />

peso o valore) ed una rappresentazione a grafo <strong>in</strong> Index è possibile realizzarla <strong>di</strong>fatti con<br />

Index è possibile realizzare no<strong>di</strong> e def<strong>in</strong>irne il tipo <strong>di</strong> associazioni.<br />

La soluzione f<strong>in</strong>ale è volta qu<strong>in</strong><strong>di</strong> a rappresentare gli enunciati, che esprimono le risorse,<br />

me<strong>di</strong>ate la creazione <strong>di</strong> no<strong>di</strong> collegati tra loro all’<strong>in</strong>terno <strong>del</strong> repository <strong>di</strong> Index, dove già<br />

tutti i suoi contenuti hanno una rappresentazione a grafo. Consentendo così ad un client<br />

71


CAPITOLO 7 – VERSIONE BASATA SU INDEX<br />

esterno <strong>di</strong> <strong>in</strong>terrogare Index me<strong>di</strong>ante l<strong>in</strong>guaggio XPath 49 e ricevere come risposta<br />

l’<strong>in</strong>formazione desiderata, lasciando <strong>in</strong>teramente ad Index la gestione <strong>dei</strong> dati.<br />

La figura che segue mostra la logica <strong>del</strong>la terza soluzione, ovvero quella f<strong>in</strong>ale:<br />

Figura 19 - Terza soluzione (f<strong>in</strong>ale) per gestire i dati <strong>in</strong> modo semantico con DoQui.<br />

Questa soluzione ha portato a tre tipi <strong>di</strong> <strong>in</strong>terpretazioni <strong>di</strong>fferenti:<br />

Figura 20 - Terza soluzione per gestire i dati <strong>in</strong> modo semantico con DoQui.<br />

49 XPath è un l<strong>in</strong>guaggio parte <strong>del</strong>la famiglia XML che permette <strong>di</strong> <strong>in</strong><strong>di</strong>viduare no<strong>di</strong> all'<strong>in</strong>terno <strong>di</strong> un documento<br />

XML. Le espressioni XPath, a <strong>di</strong>fferenza <strong>del</strong>le espressioni XML, non servono a identificare la struttura <strong>di</strong> un<br />

documento, bensì a localizzarne con precisione i no<strong>di</strong>.<br />

72


CAPITOLO 7 – VERSIONE BASATA SU INDEX<br />

La prima idea è stata quella <strong>di</strong> rappresentare gli enunciati (soggetto-pre<strong>di</strong>cato-oggetto), nel<br />

repository <strong>di</strong> Index, utilizzando un nodo per il soggetto, un altro nodo per l’oggetto e la<br />

rispettiva associazione per il pre<strong>di</strong>cato, e più precisamente utilizzando un nodo chiamato con<br />

lo stesso valore <strong>del</strong> soggetto, un altro chiamato con lo stesso nome <strong>del</strong>l’oggetto e la<br />

rispettiva associazione chiamata con il valore <strong>del</strong> pre<strong>di</strong>cato. Un’<strong>in</strong>terpretazione che presenta<br />

un problema: <strong>in</strong> Index è necessario def<strong>in</strong>ire tutti i tipi <strong>di</strong> associazione che vogliamo tra i no<strong>di</strong><br />

attraverso i custom content mo<strong>del</strong> 50 , ma questi devono essere creati e caricati <strong>in</strong> Index <strong>in</strong><br />

anticipo rispetto all’<strong>in</strong>serimento <strong>dei</strong> nostri dati. Il che comporta una mancanza <strong>di</strong> d<strong>in</strong>amicità,<br />

<strong>in</strong>fatti nel momento <strong>in</strong> cui si decide <strong>di</strong> utilizzare una nuova proprietà, per def<strong>in</strong>ire l’oggetto <strong>di</strong><br />

un soggetto, si deve mo<strong>di</strong>ficare il custom content mo<strong>del</strong> e ricaricarlo <strong>in</strong> Index.<br />

La seconda <strong>in</strong>tuizione è stata quella <strong>di</strong> creare un nodo per ciascun elemento <strong>del</strong>l’enunciato,<br />

tenendo presente <strong>di</strong> non <strong>in</strong>serirne <strong>di</strong> nuovi, nel momento <strong>in</strong> cui qualche elemento si fosse<br />

ripetuto, <strong>in</strong> modo tale da non creare duplicati <strong>del</strong> soggetto, <strong>del</strong>l’oggetto o <strong>del</strong> pre<strong>di</strong>cato. Ma<br />

anche questa <strong>in</strong>terpretazione presenta un problema, un problema <strong>in</strong> fase <strong>di</strong> ricerca (come<br />

mostrato nella figura che segue), <strong>in</strong>fatti supponendo che due soggetti (no<strong>di</strong>), S1 e S2,<br />

abbiano un pre<strong>di</strong>cato P1 <strong>in</strong> comune e che questo def<strong>in</strong>isca un oggetto O1 per S1 e un<br />

secondo oggetto O2 per S2, <strong>in</strong> fase <strong>di</strong> ricerca, con Index, chiedendo quale oggetto def<strong>in</strong>isce il<br />

pre<strong>di</strong>cato P1 per S1, ci darà come risposta sia O1 che O2, il che è sbagliato.<br />

Figura 21 - Problema <strong>del</strong>la seconda <strong>in</strong>terpretazione.<br />

La risoluzione <strong>di</strong> questo problema giunge con la terza <strong>in</strong>terpretazione, ovvero far sì che i no<strong>di</strong><br />

che costituiscono l’enunciato abbiano una rappresentazione gerarchica, il che comporta che<br />

il pre<strong>di</strong>cato sia annidato nel soggetto e che l’oggetto a sua volta nel pre<strong>di</strong>cato.<br />

Nel momento <strong>in</strong> cui troviamo un enunciato con un soggetto già <strong>in</strong>serito, questo non deve<br />

essere duplicato e qu<strong>in</strong><strong>di</strong> il pre<strong>di</strong>cato <strong>del</strong>l’enunciato deve essere annidato all’<strong>in</strong>terno <strong>del</strong><br />

soggetto già esistente e l’oggetto annidato nel pre<strong>di</strong>cato <strong>del</strong>l’oggetto.<br />

Nel caso <strong>in</strong> cui oltre al soggetto anche il pre<strong>di</strong>cato si ripete, si deve solo annidare l’oggetto<br />

<strong>del</strong> nuovo enunciato nel pre<strong>di</strong>cato esistente già annidato nel soggetto anch’esso già<br />

esistente.<br />

50 I content mo<strong>del</strong> descrivono le caratteristiche <strong>dei</strong> no<strong>di</strong> e <strong>del</strong>le associazioni <strong>dei</strong> contenuti che si trovano<br />

all’<strong>in</strong>terno <strong>del</strong> repository. In quanto i contenuti sono rappresentati come grafo composto da due elementi<br />

base: il nodo e l’associazione. Quest’ultima può essere <strong>di</strong> tipo padre-figlio o semplice.<br />

73


CAPITOLO 7 – VERSIONE BASATA SU INDEX<br />

Questa soluzione qu<strong>in</strong><strong>di</strong> prevede che ci siano duplicati<br />

<strong>del</strong> pre<strong>di</strong>cato e <strong>del</strong>l’oggetto, ma non <strong>del</strong> soggetto,<br />

ciononostante, essendo organizzati <strong>in</strong> modo<br />

gerarchico, questo non crea conflitti durante la fase <strong>di</strong><br />

ricerca.<br />

In questo modo è possibile rappresentare con Index i<br />

dati <strong>in</strong> modo semantico, rispondendo pertanto alla<br />

domanda <strong>in</strong>iziale <strong>del</strong> mio progetto <strong>di</strong> tesi, ovvero “E’<br />

possibile utilizzare Index per rappresentare i dati <strong>in</strong><br />

modo semantico?”. Partendo da questo punto è stata<br />

realizzata la seconda versione <strong>del</strong> progetto, facendo sì<br />

che l’<strong>in</strong>terfaccia Web per la gestione <strong>di</strong> un menu per<br />

ristorante, già realizzata, <strong>di</strong>alogasse <strong>di</strong>rettamente con<br />

Index e che quest’ultimo gestisse i dati strutturandoli<br />

con la soluzione appena argomentata.<br />

7.4 CUSTOM CONTENT MODEL<br />

La soluzione appena trovata comporta che i no<strong>di</strong> da creare all’<strong>in</strong>terno <strong>di</strong> Index abbiano<br />

particolari specifiche. Il servizio <strong>di</strong> management <strong>di</strong> Index impone che ad ogni nodo, nel<br />

momento <strong>del</strong>la sua creazione, vengano def<strong>in</strong>ite determ<strong>in</strong>ate variabili, tra queste ce ne sono<br />

due particolarmente utili: typePrefixedName e parentAssocTypePrefixedName, che servono<br />

a specificare il tipo <strong>di</strong> nodo che si sta creando ed il tipo <strong>di</strong> associazione con il nodo padre.<br />

Qu<strong>in</strong><strong>di</strong> dovendo creare no<strong>di</strong> <strong>del</strong> tipo soggetto, pre<strong>di</strong>cato e oggetto, questi avranno<br />

associazioni con il nodo padre rispettivamente <strong>del</strong> tipo repository-soggetto, soggettopre<strong>di</strong>cato<br />

e pre<strong>di</strong>cato-oggetto.<br />

Ma per poter utilizzare nuovi tipi <strong>di</strong> nodo personalizzati, come <strong>in</strong> questo caso, è necessario<br />

def<strong>in</strong>irli creando un nuovo custom content mo<strong>del</strong> e quest’ultimo <strong>in</strong>serito <strong>in</strong> Index. Nel<br />

custom content mo<strong>del</strong> per ciascun nodo personalizzato si deve def<strong>in</strong>ire il nome <strong>del</strong> tipo e, a<br />

<strong>di</strong>fferenza <strong>del</strong> serzvizio <strong>di</strong> management dove è necessario def<strong>in</strong>ire il tipo <strong>di</strong> associazione con<br />

il nodo padre, il nome <strong>del</strong> tipo <strong>di</strong> associazione con un nodo figlio. Ecco il custom content<br />

mo<strong>del</strong> realizzato per def<strong>in</strong>ire il tipo <strong>di</strong> no<strong>di</strong> utilizzati:<br />

<br />

TRIM RDF Mo<strong>del</strong><br />

74<br />

Figura 22 - Terza <strong>in</strong>terpretazione.


CAPITOLO 7 – VERSIONE BASATA SU INDEX<br />

TRIM S.r.l.<br />

2009-09-20<br />

1.0<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Oggeto RDF<br />

sys:base<br />

<br />

<br />

Nome<br />

d:text<br />

true<br />

<br />

<br />

<br />

<br />

<br />

false<br />

false<br />

<br />

<br />

rdf:pre<strong>di</strong>cato<br />

false<br />

true<br />

<br />

<br />

<br />

<br />

<br />

Pre<strong>di</strong>cato RDF<br />

sys:base<br />

<br />

<br />

Name<br />

d:text<br />

true<br />

<br />

<br />

<br />

75


CAPITOLO 7 – VERSIONE BASATA SU INDEX<br />

<br />

<br />

false<br />

false<br />

<br />

<br />

rdf:oggetto<br />

false<br />

true<br />

<br />

<br />

<br />

<br />

<br />

<br />

Con tale custom content mo<strong>del</strong> vengono def<strong>in</strong>iti due no<strong>di</strong>, il primo chiamato<br />

rdf:nomeOggetto, per rappresentare i no<strong>di</strong> “soggetto” e i no<strong>di</strong> “oggetto” ed il secondo<br />

rdf:nomePre<strong>di</strong>cato, per rappresentare i no<strong>di</strong> “pre<strong>di</strong>cato”, aventi come nomi <strong>del</strong>l’associazioni<br />

con i propri no<strong>di</strong> figli rispettivamente rdf:oggettoPre<strong>di</strong>cato e rdf:pre<strong>di</strong>catoOggetto. Tali<br />

associazioni implicano che rdf:nomeOggetto possa avere solo figli pre<strong>di</strong>cato e che<br />

rdf:nomePre<strong>di</strong>cato solo figli oggetto.<br />

Inoltre nei tag mandatory vengono <strong>in</strong>seriti valori booleani per specificare se i no<strong>di</strong> possono<br />

avere uno o più figli e se loro stessi hanno uno o più padri, così ho imposto che<br />

rdf:nomeOggetto possa avere un solo padre e più figli <strong>di</strong> tipo pre<strong>di</strong>cato mentre<br />

rdf:nomePre<strong>di</strong>cato un solo padre e più figli <strong>di</strong> tipo oggetto.<br />

Figura 23 - ECM Web Console <strong>di</strong> Index.<br />

76


La figura 23 mostra l’<strong>in</strong>terfaccia <strong>del</strong>la<br />

ECM (Enterprise Content Management)<br />

Web Console <strong>di</strong> Index, attraverso cui è<br />

possibile constatare l’effettiva<br />

realizzazione <strong>dei</strong> contenuti effettuata<br />

me<strong>di</strong>ante la componente CMS<br />

appositamente progettata.<br />

La figura 24 è un <strong>in</strong>gran<strong>di</strong>mento <strong>del</strong>la<br />

figura 23, <strong>in</strong> particolare <strong>del</strong>la struttura<br />

<strong>in</strong>terna <strong>dei</strong> no<strong>di</strong>.<br />

CAPITOLO 7 – VERSIONE BASATA SU INDEX<br />

77<br />

Figura 24 - Struttura <strong>dei</strong> no<strong>di</strong> all'<strong>in</strong>terno <strong>del</strong>la ECM Web<br />

Console.


CAPITOLO 8<br />

VALUTAZIONI<br />

78


CAPITOLO 8 - VALUTAZIONI<br />

La soluzione f<strong>in</strong>ale sviluppata nella seconda versione <strong>del</strong> progetto, ovvero quella basata su<br />

Index, ha permesso <strong>di</strong> giungere alla realizzazione <strong>del</strong>l’obiettivo pr<strong>in</strong>cipale: realizzare un<br />

componente CMS per la gestione a livello amm<strong>in</strong>istrativo <strong>di</strong> un menu per ristoranti che<br />

possa <strong>di</strong>alogare con DoQui per immagazz<strong>in</strong>are e prelevare i dati e che questi possano essere<br />

gestiti da quest’ultimo attraverso la logica <strong>del</strong>la semantica. Obiettivo raggiunto dopo aver<br />

effettuato <strong>di</strong>verse analisi <strong>in</strong> modo da capire quale fosse la strada migliore da percorrere. In<br />

conclusione è stato fattibile rispondere alla quesito:<br />

“E’ possibile utilizzare Index per rappresentare i dati <strong>in</strong> modo semantico?”<br />

Sì è possibile utilizzare Index per rappresentare e utilizzare i dati <strong>in</strong> modo semantico,<br />

convertendo le triple degli enunciati, che rappresentano le risorse, <strong>in</strong> no<strong>di</strong> strutturati <strong>in</strong><br />

modo gerarchico all’<strong>in</strong>terno <strong>del</strong> repository <strong>di</strong> Index. Per ogni tripla esisteranno tre no<strong>di</strong> nel<br />

repository che rappresenteranno il soggetto, il pre<strong>di</strong>cato e l’oggetto, e saranno nom<strong>in</strong>ati<br />

rispettivamente con il valore <strong>del</strong> soggetto, <strong>del</strong> pre<strong>di</strong>cato e <strong>del</strong>l’oggetto. La struttura<br />

gerarchica dunque, consentirà l’esistenza <strong>di</strong> duplicati <strong>del</strong> pre<strong>di</strong>cato e <strong>del</strong>l’oggetto ma non <strong>del</strong><br />

soggetto.<br />

8.1 CONFRONTI<br />

Le due versioni <strong>del</strong> progetto realizzate (ve<strong>di</strong> figura 25), la prima basata su RDF e SPARQL e la<br />

seconda su Index, hanno permesso un confronto f<strong>in</strong>ale consentendo <strong>di</strong> analizzarne i pro e<br />

contro.<br />

Figura 25 - Le due versioni f<strong>in</strong>ali <strong>del</strong> progetto realizzato.<br />

Di seguito un’analisi <strong>del</strong>le due versioni che per como<strong>di</strong>tà saranno <strong>in</strong><strong>di</strong>cate con ‘A’ per<br />

identificare la prima versione (RDF e SPARQL) e con ‘B’ per identificare la seconda (Index):<br />

o Effettiva <strong>in</strong>tegrazione con DoQui:<br />

chiaramente la versione A non <strong>in</strong>teragisce con DoQui perché è stata realizzata<br />

utilizzando RDF e SPARQL proprio per avere un mo<strong>del</strong>lo ad hoc nel trattamento <strong>dei</strong><br />

dati semantici nel Web e qu<strong>in</strong><strong>di</strong> per poter fare un confronto con la versione B, che si<br />

basa fondamentalmente sull’<strong>in</strong>terazione con Index, qu<strong>in</strong><strong>di</strong> con DoQui.<br />

79


CAPITOLO 8 - VALUTAZIONI<br />

o Facilità <strong>di</strong> sviluppo a livello back-end:<br />

sicuramente la realizzazione <strong>del</strong>la versione A è stata meno complessa, <strong>in</strong>oltre<br />

l’utilizzo <strong>del</strong> framework ARC2 ha reso più facile la gestione degli enunciati sia nel<br />

caricamento su database che nelle <strong>in</strong>terrogazioni. L’unica laboriosità è stata la<br />

realizzazione <strong>del</strong>le query ad hoc <strong>in</strong> l<strong>in</strong>guaggio SPARQL.<br />

Invece la realizzazione <strong>del</strong>la versione B è stata più complessa e più <strong>di</strong>spen<strong>di</strong>osa come<br />

righe <strong>di</strong> co<strong>di</strong>ce scritto, <strong>in</strong>fatti per ogni nodo creato all’<strong>in</strong>terno <strong>del</strong> repository <strong>di</strong> Index<br />

è necessario <strong>in</strong>serire i valori per quasi tutte le sue proprietà e per le proprietà <strong>dei</strong><br />

suoi metadati, <strong>in</strong>oltre è <strong>in</strong><strong>di</strong>spensabile specificare quale è il nodo padre a cui sarà<br />

“agganciato”.<br />

Prendendo come esempio le funzioni per la creazione <strong>di</strong> portate e piatti all’<strong>in</strong>terno<br />

<strong>del</strong> menu per ristorante, nella versione A avremo:<br />

public function aggiungi_portata($id_portata, $nome_portata){<br />

$q = "PREFIX rdf: ".<br />

"PREFIX dc: ".<br />

"PREFIX tr: ".<br />

"INSERT INTO { ".<br />

"tr:".$id_portata." rdf:type tr:Portata . " .<br />

"tr:".$id_portata." tr:has_Name_Portata \"".$nome_portata."\". ".<br />

"}";<br />

$rs = $this->store->query($q);<br />

if ($err = $this->store->getErrors()) {<br />

var_dump( $err );<br />

}<br />

}<br />

public function aggiungi_piatto($id_piatto, $id_portata, $nome_piatto, $prezzo){<br />

$q = "PREFIX rdf: ".<br />

"PREFIX dc: ".<br />

"PREFIX tr: ".<br />

"INSERT INTO { ".<br />

"tr:".$id_portata." tr:is_composed tr:".$id_piatto.". ".<br />

"tr:".$id_piatto." rdf:type tr:Piatto. ".<br />

"tr:".$id_piatto." tr:has_Name_Piatto \"".$nome_piatto."\". ".<br />

"tr:".$id_piatto." tr:has_Prezzo_Piatto \"".$prezzo."\". ".<br />

"tr:".$id_piatto." tr:has_Descrizione_Piatto \"".$nome_piatto."\". ".<br />

"}";<br />

$rs = $this->store->query($q);<br />

if ($err = $this->store->getErrors()) {<br />

var_dump( $err );<br />

}<br />

}<br />

Mentre nella versione B avremo:<br />

/* VERIFICA ESISTENZA NODO */<br />

public function exist_node($xpath,$ctx){<br />

80


CAPITOLO 8 - VALUTAZIONI<br />

$b;<br />

try {<br />

$this->clientM->nodeExists($xpath, $ctx);<br />

$b = TRUE;<br />

}catch(Exception $e) {<br />

$b = FALSE;<br />

}<br />

return $b;<br />

}<br />

/* CREARE SOGGETTO PREDICATO OGGETTO */<br />

public function crea_soggetto_pre<strong>di</strong>cato_oggetto($s, $p, $o) {<br />

/* OperationContext - <strong>in</strong>fo per l'autenticazione */<br />

$ctx = array('username'=>'adm<strong>in</strong>', 'password'=>'adm<strong>in</strong>', 'nomeFisico'=>'Amm<strong>in</strong>istratore',<br />

'fruitore'=>'Esempio WIKI');<br />

/* Metadati <strong>del</strong> contenuto... */<br />

$metadati_sogg = array('prefixedName'=>'rdf:nomeOggetto', 'dataType'=>'d:text',<br />

'values'=>array($s), 'multivalue'=>false);<br />

$metadati_pred = array('prefixedName'=>'rdf:nomePre<strong>di</strong>cato', 'dataType'=>'d:text',<br />

'values'=>array($p), 'multivalue'=>false);<br />

$metadati_ogg = array('prefixedName'=>'rdf:nomeOggetto', 'dataType'=>'d:text',<br />

'values'=>array($o), 'multivalue'=>false);<br />

/* Contenuto Soggetto*/<br />

$mySogg = array('properties'=>array($metadati_sogg), 'prefixedName'=>'rdf:'.$s,<br />

'typePrefixedName'=>'rdf:oggetto', 'parentAssocTypePrefixedName'=>'cm:conta<strong>in</strong>s');<br />

/* Contenuto Preicato */<br />

$myPred = array('properties'=>array($metadati_pred), 'prefixedName'=>'rdf:'.$p,<br />

'typePrefixedName'=>'rdf:pre<strong>di</strong>cato', 'parentAssocTypePrefixedName'=>'rdf:soggettoPre<strong>di</strong>cato');<br />

/* Contenuto Oggetto */<br />

$myOgg = array('properties'=>array($metadati_ogg), 'prefixedName'=>'rdf:'.$o,<br />

'typePrefixedName'=>'rdf:oggetto', 'parentAssocTypePrefixedName'=>'rdf:pre<strong>di</strong>catoOggetto');<br />

/* Creazione <strong>del</strong> Node Sogg */<br />

$xpath_s = array('XPathQuery'=>'/app:company_home/cm:ristorante', 'fullTextAllWords'=>false,<br />

'limit'=>0, 'pageIndex'=>0, 'pageSize'=>0);<br />

/* Creazione <strong>del</strong> Node Pred */<br />

$xpath_p = array('XPathQuery'=>'/app:company_home/cm:ristorante/rdf:'.$s,<br />

'fullTextAllWords'=>false, 'limit'=>0, 'pageIndex'=>0, 'pageSize'=>0);<br />

/* Creazione <strong>del</strong> Node Ogg */<br />

$xpath_o = array('XPathQuery'=>'/app:company_home/cm:ristorante/rdf:'.$s.'/rdf:'.$p,<br />

'fullTextAllWords'=>false, 'limit'=>0, 'pageIndex'=>0, 'pageSize'=>0);<br />

$xpath_full = array('XPathQuery'=>'/app:company_home/cm:ristorante/rdf:'.$s.'/rdf:'.$p.'/rdf:'.$o,<br />

'fullTextAllWords'=>false, 'limit'=>0, 'pageIndex'=>0, 'pageSize'=>0);<br />

if( $this->exist_node($xpath_p,$ctx) ){<br />

if( $this->exist_node($xpath_o, $ctx) ){<br />

if( !$this->exist_node($xpath_full, $ctx) ){<br />

$Node_o = $this->clientM->getUid($xpath_o, $ctx);<br />

$newNodeOgg = $this->clientM->createContent($Node_o, $myOgg, $ctx);<br />

}<br />

}else{<br />

$Node_p = $this->clientM->getUid($xpath_p, $ctx);<br />

$newNodePred = $this->clientM->createContent($Node_p, $myPred, $ctx);<br />

81


}<br />

}<br />

}else{<br />

}<br />

CAPITOLO 8 - VALUTAZIONI<br />

$Node_o = $this->clientM->getUid($xpath_o, $ctx);<br />

$newNodeOgg = $this->clientM->createContent($Node_o, $myOgg, $ctx);<br />

$Node_s = $this->clientM->getUid($xpath_s, $ctx);<br />

$newNodeSogg = $this->clientM->createContent($Node_s, $mySogg, $ctx);<br />

$Node_p = $this->clientM->getUid($xpath_p, $ctx);<br />

$newNodePred = $this->clientM->createContent($Node_p, $myPred, $ctx);<br />

$Node_o = $this->clientM->getUid($xpath_o, $ctx);<br />

$newNodeOgg = $this->clientM->createContent($Node_o, $myOgg, $ctx);<br />

È lampante la <strong>di</strong>fferenza <strong>in</strong> righe <strong>di</strong> co<strong>di</strong>ce e la complessità <strong>di</strong> ciascuna riga nella<br />

versione B.<br />

o Complessità <strong>del</strong>le query:<br />

Nella versione A le query sono <strong>in</strong> l<strong>in</strong>guaggio SPARQL, un l<strong>in</strong>guaggio molto semplice e<br />

soprattutto flessibile <strong>in</strong> quanto permette <strong>di</strong> effettuare qualsiasi tipo <strong>di</strong><br />

<strong>in</strong>terrogazione. Altrettanto flessibile la risposta che restituisce una query SPARQL, <strong>di</strong><br />

default è un’array associativo contenete i valori cercati, altrimenti se specificato nella<br />

query stessa, può restituire i dati <strong>in</strong> formato RDF o XML.<br />

La versione B per le query a Index utilizza il l<strong>in</strong>guaggio XPath, un l<strong>in</strong>guaggio ad hoc<br />

per localizzare precisamente i no<strong>di</strong>, <strong>in</strong> questo caso, all’<strong>in</strong>terno <strong>del</strong> repository. Le<br />

risposte <strong>di</strong> tali query però sono più complesse da gestire, <strong>in</strong>fatti una quey XPath<br />

effettuata per cercare determ<strong>in</strong>ati no<strong>di</strong> restituisce come risposta una lista <strong>di</strong> UID <strong>dei</strong><br />

no<strong>di</strong> trovati. Questo comporta che sulla risposta ottenuta debbano essere effettuati<br />

successivi adeguamenti per convertirla <strong>in</strong> un’array associativo contenente i valori<br />

cercati.<br />

Il progetto nelle sue due versioni non presenta <strong>del</strong>le query esageratamente<br />

complesse, per questo è stato possibile realizzarle senza gran<strong>di</strong> problemi sia <strong>in</strong><br />

l<strong>in</strong>guaggio SPARQL che XPath, ma nel momento <strong>in</strong> cui si dovessero effettuare <strong>del</strong>le<br />

query più elaborate la realizzazione <strong>in</strong> l<strong>in</strong>guaggio XPath e la successiva gestione <strong>del</strong>la<br />

risposta <strong>di</strong>verrebbero molto più <strong>di</strong>fficili nelle loro logiche applicative.<br />

o Prestazioni-velocità:<br />

Nella gestione <strong>dei</strong> calcoli la versione A risulta essere più veloce rispetto alla versione<br />

B, <strong>in</strong>fatti testando le <strong>in</strong>terfacce Web <strong>del</strong>le rispettive versioni si è ev<strong>in</strong>to che sia<br />

nell’<strong>in</strong>serimento <strong>di</strong> dati, sia nella loro elim<strong>in</strong>azione, sia nella loro mo<strong>di</strong>fica, la versione<br />

A risulta eseguire tali operazioni <strong>in</strong> un arco <strong>di</strong> tempo leggermente ma comunque<br />

<strong>in</strong>feriore rispetto alla seconda versione, <strong>in</strong>dubbiamente perché la versione B <strong>in</strong> tutte<br />

queste operazioni effettua più passaggi.<br />

o Sviluppo successivo e manutenzione:<br />

82


CAPITOLO 8 - VALUTAZIONI<br />

Questa valutazione deriva da alcuni punti precedenti, <strong>in</strong>nanzitutto dal numero <strong>di</strong><br />

righe <strong>di</strong> co<strong>di</strong>ce scritto, che nella versione B è <strong>di</strong> gran lunga maggiore, che dalla<br />

complessità <strong>del</strong>le query e <strong>del</strong>la loro gestione, che come abbiamo visto nella versione<br />

B risultano più laboriose e questo comporta <strong>di</strong> conseguenza maggiore <strong>di</strong>fficoltà sia <strong>in</strong><br />

fase <strong>di</strong> uno sviluppo successivo che <strong>di</strong> manutenzione.<br />

In def<strong>in</strong>itiva, avendo analizzato i pro e i contro <strong>del</strong>le due versioni, possiamo <strong>di</strong>re che sebbene<br />

sia stato raggiunto l’obiettivo, ovvero la realizzazione <strong>di</strong> un componente CMS per la gestione<br />

<strong>di</strong> un menu per ristoranti che si <strong>in</strong>terfacci a Index e che tratti i dati <strong>in</strong> modo semantico, la<br />

seconda versione <strong>del</strong> progetto realizzato presenta <strong>dei</strong> punti che sarebbe necessario<br />

migliorare ulteriormente <strong>in</strong> modo da renderlo ottimale rispetto al suo scopo f<strong>in</strong>ale.<br />

Per questo, a fronte <strong>di</strong> questa ricerca, è auspicabile <strong>in</strong><strong>di</strong>viduare <strong>del</strong>le migliorie a tale versione<br />

o valutare ulteriori soluzioni per poter utilizzare Index aff<strong>in</strong>ché tratti i dati secondo la logica<br />

<strong>del</strong>la semantica.<br />

83


CONCLUSIONI<br />

84


CONCLUSIONI<br />

Il progetto realizzato, <strong>in</strong> conclusione, ha portato a comprendere maggiormente le<br />

potenzialità <strong>di</strong> Index e <strong>di</strong> come questo possa avvic<strong>in</strong>arsi alle logiche <strong>del</strong>la semantica.<br />

È stata dunque realizzata una componente prototipale CMS per gestire dati relativi ai menu<br />

per ristoranti, dati che a livello back-end sono stati strutturati con le logiche <strong>del</strong>la semantica.<br />

Ed a livello amm<strong>in</strong>istrativo per il back-end sono state realizzate due versioni, una prima<br />

basata su un’applicazione Web che si <strong>in</strong>terfaccia a DoQui e nella fattispecie ad Index ovvero<br />

il motore <strong>di</strong> gestione <strong>dei</strong> contenuti <strong>di</strong>gitali <strong>di</strong> DoQui, ed un’altra che si <strong>in</strong>terfaccia ad un<br />

EndPoit SPARQL, atto ad <strong>in</strong>terrogazioni specifiche per il recupero <strong>dei</strong> dati espressi <strong>in</strong> RDF.<br />

La realizzazione <strong>di</strong> due versioni <strong>del</strong> progetto a livello beck-end ha permesso <strong>di</strong> giungere a<br />

<strong>del</strong>le valutazioni f<strong>in</strong>ali circa le ulteriori possibilità <strong>di</strong> approfon<strong>di</strong>mento e <strong>di</strong> ricerca <strong>in</strong> questo<br />

ambito oltre che <strong>del</strong> progetto specifico. Si è trattato <strong>di</strong> uno stu<strong>di</strong>o che ha <strong>in</strong>teso <strong>in</strong><strong>di</strong>care<br />

<strong>del</strong>le prospettive <strong>di</strong> ricerca più generali che possano costituire oltre che un punto <strong>di</strong> arrivo,<br />

anche una buona base <strong>di</strong> partenza per futuri stu<strong>di</strong> nell’ambito <strong>del</strong>la semantica applicata a<br />

Index.<br />

Il progetto <strong>di</strong> questa tesi è stato molto <strong>in</strong>teressante perché mi ha portato alla conoscenza <strong>di</strong><br />

un argomento importante ed affasc<strong>in</strong>ante quale è il Semantic Web, un Web non più<br />

costituito da documenti, fatto dalle persone per le persone, ma da dati cui possono accedere<br />

anche le macch<strong>in</strong>e creando automaticamente collegamenti semantici. Inoltre le competenze<br />

acquisite <strong>in</strong> questo periodo sono state tante grazie alla supervisione ed alla guida <strong>del</strong><br />

relatore, il Prof. Corno, ai suggerimenti operativi <strong>dei</strong> colleghi <strong>di</strong> TRIM oltre che grazie ai<br />

<strong>di</strong>versi approfon<strong>di</strong>menti personali attraverso approfon<strong>di</strong>te letture sulla s<strong>in</strong>tassi e sulla<br />

filosofia <strong>del</strong>le logiche <strong>del</strong>la semantica che mi hanno portato ad una maggiore comprensione<br />

<strong>di</strong> quanto queste siano <strong>in</strong><strong>di</strong>spensabili per l’evoluzione stessa <strong>del</strong> Web.<br />

Conducendo un percorso duale, perché costituito sia da approfon<strong>di</strong>menti <strong>di</strong> natura teorica<br />

che da tentativi pratici <strong>di</strong> natura operativa, ho potuto comprendere a fondo quanto oggi più<br />

che mai, grazie a questi nuovi spunti <strong>di</strong> ricerca semantica, il Web si presenti ad un “addetto<br />

ai lavori” come un laboratorio aperto che offra la possibilità, e allo stesso tempo mostri la<br />

necessità, <strong>di</strong> cont<strong>in</strong>uare a condurre esperimenti, approfon<strong>di</strong>menti, <strong>in</strong> una sola parola ricerca,<br />

<strong>in</strong> vista <strong>di</strong> cont<strong>in</strong>ue <strong>in</strong>novazioni tecnologiche, non f<strong>in</strong>i a sé stesse ma rilevanti sia socialmente<br />

che <strong>in</strong> term<strong>in</strong>i <strong>di</strong> bus<strong>in</strong>ess.<br />

Vorrei concludere <strong>in</strong><strong>di</strong>cando quali saranno, a mio parere, le pr<strong>in</strong>cipali sfide future <strong>del</strong><br />

Semantic Web e che concernono la risoluzione <strong>di</strong> due pr<strong>in</strong>cipali questioni, vale a <strong>di</strong>re quello<br />

relativo alla identità e quello che concerne il ragionamento automatico <strong>in</strong> ambito Web:<br />

o Il problema <strong>del</strong>l’identità:<br />

Il Semantic Web, essendo un aff<strong>in</strong>amento <strong>del</strong> Web stesso, utilizza le URI per<br />

identificare le risorse. Le URI, <strong>in</strong> accordo con i pr<strong>in</strong>cipi su cui si fonda il Web, sono<br />

assegnate con un metodo che bilancia il pr<strong>in</strong>cipio <strong>di</strong> decentralizzazione e quello <strong>di</strong><br />

semplicità ma che non garantisce l’univocità: “come riconoscere che due URI<br />

identificano la stessa risorsa?”.<br />

85


CONCLUSIONI<br />

La decentralizzazione è un problema da un punto <strong>di</strong> vista logico, ma ha enormi<br />

vantaggi dal punto <strong>di</strong> vista <strong>del</strong>la creazione <strong>di</strong> contenuti. Le persone, <strong>in</strong>fatti, non<br />

hanno problemi a gestire più <strong>di</strong> un identificativo per la stessa risorsa e non c’è<br />

bisogno <strong>di</strong> imporre un identificativo univoco. Per le macch<strong>in</strong>e, però il <strong>di</strong>scorso è<br />

<strong>di</strong>verso, ed avere a che fare con più identificativi sarebbe un problema <strong>di</strong> <strong>di</strong>fficile<br />

gestione. Ovviamente, a rendere ancora più complessa la questione, ci sono per<br />

esempio gli errori <strong>di</strong> battitura. L’aspirazione <strong>del</strong> Semantic Web è quella <strong>di</strong> costruire<br />

un Web <strong>di</strong> dati rendendo collegabili semanticamente i silos <strong>di</strong> <strong>in</strong>formazioni <strong>del</strong>le<br />

varie organizzazioni, tuttavia non è pensabile che, per rendere <strong>di</strong>sponibile<br />

l’<strong>in</strong>formazione contenuta <strong>in</strong> questi, sia richiesta un’operazione manuale <strong>di</strong> verifica<br />

<strong>del</strong>l’univocità degli identificativi. E’ assolutamente <strong>in</strong><strong>di</strong>spensabile fare <strong>in</strong> modo che<br />

questi dati siano trattati <strong>in</strong> modo automatico attraverso processi logico-<strong>in</strong>tuitivi.<br />

Il problema sarà <strong>di</strong>fficile da affrontare nella sua <strong>in</strong>terezza e l’elaborazione <strong>del</strong>le<br />

possibili risoluzioni molto lunga, perché il Web copre una vasta gamma <strong>di</strong><br />

<strong>in</strong>formazioni resa <strong>di</strong>sponibile per ragioni <strong>di</strong>fferenti e il cui significato cambia nel<br />

tempo. Qu<strong>in</strong><strong>di</strong>, un’importante sfida per il Semantic Web è quella <strong>di</strong> mettere a punto<br />

meto<strong>di</strong> e tecniche per affrontare il problema <strong>del</strong>l’identità e realizzare sistemi <strong>in</strong><br />

grado <strong>di</strong> gestirlo, se non per l’<strong>in</strong>tero Web, almeno per una parte <strong>di</strong> esso.<br />

o Il problema <strong>del</strong> ragionamento automatico <strong>in</strong> presenza <strong>di</strong> <strong>in</strong>consistenze:<br />

I tipi <strong>di</strong> ragionamento derivati dall’<strong>in</strong>gegneria <strong>del</strong>la conoscenza sono numerosi, ma<br />

pochi sono stati automatizzati, come ad esempio il calcolo <strong>del</strong>la deduzione naturale<br />

ed i vari tipi <strong>di</strong> <strong>in</strong>ferenza statistica. Il Semantic Web, però, può abilitare altri tipi <strong>di</strong><br />

ragionamento, come il ragionamento associativo (sono messi a confronto i punti <strong>di</strong><br />

vista <strong>di</strong> attori <strong>di</strong>fferenti) e quello per analogia (se A è analogo a B ed A ha la<br />

proprietà P, allora anche B avrà la proprietà P), ed ha qu<strong>in</strong><strong>di</strong> bisogno <strong>di</strong> nuove<br />

tecniche <strong>in</strong> grado <strong>di</strong> abilitare il ragionamento automatico <strong>in</strong> presenza <strong>di</strong><br />

<strong>in</strong>consistenza e <strong>di</strong> funzionare sull’<strong>in</strong>tera scala <strong>del</strong> Web. Uno <strong>dei</strong> pr<strong>in</strong>cipali problemi<br />

aperti nel Semantic Web è il ragionamento <strong>in</strong> presenza <strong>di</strong> <strong>in</strong>consistenze. Il Web è un<br />

me<strong>di</strong>um democratico <strong>in</strong> cui ciascuno può esprimere il proprio punto <strong>di</strong> vista e, dal<br />

momento che molti <strong>di</strong> questi punti <strong>di</strong> vista sono il risultato <strong>di</strong> culture <strong>di</strong>fferenti,<br />

dobbiamo aspettarci molte <strong>in</strong>consistenze e possibili contrapposizioni oltre che<br />

stu<strong>di</strong>are <strong>del</strong>le modalità <strong>di</strong> gestione <strong>del</strong>le stesse.<br />

Dal momento che non è possibile vietare l’<strong>in</strong>troduzione <strong>di</strong> enunciati contrad<strong>di</strong>ttori,<br />

l’<strong>in</strong>gegneria <strong>del</strong>la conoscenza volge alcuni <strong>dei</strong> suoi stu<strong>di</strong> nell’<strong>in</strong><strong>di</strong>viduare meto<strong>di</strong> per<br />

ragionare <strong>in</strong> presenza <strong>di</strong> <strong>in</strong>consistenze <strong>in</strong> modo tale da permettere <strong>di</strong> limitare gli<br />

effetti degli enunciati contrad<strong>di</strong>ttori.<br />

86


GLOSSARIO<br />

87


GLOSSARIO<br />

AJAX (Asynchronous JavaScript and XML), è una tecnica <strong>di</strong> sviluppo per la<br />

realizzazione <strong>di</strong> applicazioni web <strong>in</strong>terattive (Rich Internet Application). Lo sviluppo <strong>di</strong><br />

applicazioni HTML con AJAX si basa su uno scambio <strong>di</strong> dati <strong>in</strong> background fra web<br />

browser e server, che consente l'aggiornamento d<strong>in</strong>amico <strong>di</strong> una pag<strong>in</strong>a web senza<br />

esplicito ricaricamento da parte <strong>del</strong>l'utente. AJAX è as<strong>in</strong>crono nel senso che i dati<br />

extra sono richiesti al server e caricati <strong>in</strong> background senza <strong>in</strong>terferire con il<br />

comportamento <strong>del</strong>la pag<strong>in</strong>a esistente. Normalmente le funzioni richiamate sono<br />

scritte con il l<strong>in</strong>guaggio JavaScript. Tuttavia, e a <strong>di</strong>spetto <strong>del</strong> nome, l'uso <strong>di</strong> JavaScript<br />

e <strong>di</strong> XML non è obbligatorio, come non è necessario che le richieste <strong>di</strong> caricamento<br />

debbano essere necessariamente as<strong>in</strong>crone.<br />

AOO (Area Organizzativa Omogenea), è una struttura amm<strong>in</strong>istrativa <strong>in</strong><strong>di</strong>viduata da<br />

settori che, per tipologia <strong>di</strong> mandato istituzionale, <strong>di</strong> funzione amm<strong>in</strong>istrativa<br />

perseguita, <strong>di</strong> obiettivi e <strong>di</strong> attività svolta, presentano esigenze <strong>di</strong> gestione <strong>del</strong>la<br />

documentazione <strong>in</strong> modo unitario e coord<strong>in</strong>ato.<br />

CERN (European Organization for Nuclear Research), è il più grande laboratorio al<br />

mondo <strong>di</strong> fisica <strong>del</strong>le particelle. Si trova al conf<strong>in</strong>e tra Svizzera e Francia alla periferia<br />

ovest <strong>del</strong>la città <strong>di</strong> G<strong>in</strong>evra<br />

CSI-Piemonte, è un consorzio <strong>di</strong> Enti pubblici che promuove l'<strong>in</strong>novazione nella<br />

Pubblica Amm<strong>in</strong>istrazione attraverso le tecnologie ICT. Con più <strong>di</strong> 1.200 <strong>di</strong>pendenti,<br />

sei se<strong>di</strong> sul territorio e 82 Enti consorziati, oggi il CSI è una <strong>del</strong>le pr<strong>in</strong>cipali aziende ICT<br />

<strong>in</strong> Italia. Con la propria attività permette alle Amm<strong>in</strong>istrazioni <strong>di</strong> offrire servizi più<br />

efficienti a cittad<strong>in</strong>i e imprese, promuove occasioni <strong>di</strong> collaborazione a livello<br />

regionale, <strong>in</strong>terregionale e <strong>in</strong>ternazionale, favorisce il riuso e la con<strong>di</strong>visione <strong>di</strong> best<br />

practices.<br />

CMS (Content Management System ), letteralmente sistema <strong>di</strong> gestione <strong>dei</strong><br />

contenuti, è uno strumento software <strong>in</strong>stallato su un server web stu<strong>di</strong>ato per<br />

facilitare la gestione <strong>dei</strong> contenuti <strong>di</strong> siti web, sv<strong>in</strong>colando l'amm<strong>in</strong>istratore da<br />

conoscenze tecniche <strong>di</strong> programmazione.<br />

Digital signature, “firma <strong>di</strong>gitale” <strong>in</strong> italiano, è basata sulla tecnologia <strong>del</strong>la<br />

crittografia a chiave pubblica o PKI. Dal punto <strong>di</strong> vista <strong>in</strong>formatico rappresenta un<br />

sistema <strong>di</strong> autenticazione <strong>di</strong> documenti <strong>di</strong>gitali tale da garantire non ripu<strong>di</strong>o. La<br />

nozione <strong>di</strong> firma <strong>di</strong>gitale ha <strong>in</strong> Italia anche un'accezione giuri<strong>di</strong>ca, <strong>in</strong> quanto <strong>in</strong><strong>di</strong>vidua<br />

quel tipo <strong>di</strong> firma che può essere apposta ai documenti <strong>in</strong>formatici alla stessa stregua<br />

<strong>di</strong> come la firma autografa viene apposta ai documenti tra<strong>di</strong>zionali.<br />

DTD (Document Type Def<strong>in</strong>ition - def<strong>in</strong>izione <strong>del</strong> tipo <strong>di</strong> documento), ha lo scopo <strong>di</strong><br />

def<strong>in</strong>ire le componenti ammesse nella costruzione <strong>di</strong> un documento XML. Il term<strong>in</strong>e<br />

non è utilizzato soltanto per i documenti XML ma anche per tutti i documenti derivati<br />

88


GLOSSARIO<br />

dall'SGML (<strong>di</strong> cui peraltro XML vuole essere una semplificazione che ne mantiene la<br />

potenza riducendone la complessità) tra cui famosissimo è l'HTML.<br />

Dubl<strong>in</strong> Core Initiative, è un sistema <strong>di</strong> metadati costituito da un nucleo <strong>di</strong> elementi<br />

essenziali ai f<strong>in</strong>i <strong>del</strong>la descrizione <strong>di</strong> qualsiasi materiale <strong>di</strong>gitale accessibile via rete<br />

<strong>in</strong>formatica, <strong>in</strong>izialmente composto da solo qu<strong>in</strong><strong>di</strong>ci elementi, successivamente si è<br />

esteso (esempio <strong>di</strong> qualche elemento: Title, Creator, Subject, Description, Publisher,<br />

Contributor, Date, Type, Format).<br />

ECM (Enterprise Content Management), è l'<strong>in</strong>sieme <strong>di</strong> strumenti che consentono la<br />

gestione <strong>del</strong>la documentazione prodotta e ricevuta all’<strong>in</strong>terno <strong>di</strong> un’organizzazione,<br />

<strong>in</strong><strong>di</strong>pendentemente dal suo formato.<br />

HTML (HyperText Markup Language), è un l<strong>in</strong>guaggio usato per descrivere la<br />

struttura <strong>dei</strong> documenti ipertestuali <strong>di</strong>sponibili nel World Wide Web ossia su<br />

Internet. Tutti i siti web sono scritti <strong>in</strong> HTML, co<strong>di</strong>ce che viene letto ed elaborato dal<br />

browser, il quale genera la pag<strong>in</strong>a che viene visualizzata sullo schermo <strong>del</strong> computer.<br />

HTTP (Hypertext Transfer Protocol), è il protocollo <strong>di</strong> trasferimento <strong>di</strong> un ipertesto.<br />

Usato come pr<strong>in</strong>cipale sistema per la trasmissione <strong>di</strong> <strong>in</strong>formazioni sul web. L'HTTP<br />

funziona su un meccanismo richiesta/risposta (client/server): il client esegue una<br />

richiesta ed il server restituisce la risposta. Nell'uso comune il client corrisponde al<br />

browser ed il server al sito web. Vi sono qu<strong>in</strong><strong>di</strong> due tipi <strong>di</strong> messaggi HTTP: messaggi<br />

richiesta e messaggi risposta.<br />

JavaScript, è un l<strong>in</strong>guaggio <strong>di</strong> script<strong>in</strong>g orientato agli oggetti comunemente usato nei<br />

siti web. Fu orig<strong>in</strong>ariamente sviluppato da Brendan Eich <strong>del</strong>la Netscape<br />

Communications con il nome <strong>di</strong> Mocha e successivamente <strong>di</strong> LiveScript, ma <strong>in</strong> seguito<br />

è stato r<strong>in</strong>om<strong>in</strong>ato "JavaScript" ed è stato formalizzato con una s<strong>in</strong>tassi più vic<strong>in</strong>a a<br />

quella <strong>del</strong> l<strong>in</strong>guaggio Java <strong>di</strong> Sun Microsystems. JavaScript è stato standar<strong>di</strong>zzato per<br />

la prima volta tra il 1997 e il 1999 dalla ECMA con il nome ECMAScript.<br />

JSP (JavaServer Pages), è una tecnologia Java per lo sviluppo <strong>di</strong> applicazioni Web che<br />

forniscono contenuti d<strong>in</strong>amici <strong>in</strong> formato HTML o XML. Si basa su un <strong>in</strong>sieme <strong>di</strong><br />

speciali tag con cui possono essere <strong>in</strong>vocate funzioni predef<strong>in</strong>ite o co<strong>di</strong>ce Java (JSTL).<br />

In aggiunta, permette <strong>di</strong> creare librerie <strong>di</strong> nuovi tag che estendono l'<strong>in</strong>sieme <strong>dei</strong> tag<br />

standard (JSP Custom Tag Library). Le librerie <strong>di</strong> tag JSP si possono considerare<br />

estensioni <strong>in</strong><strong>di</strong>pendenti dalla piattaforma <strong>del</strong>le funzionalità <strong>di</strong> un Web server.<br />

jQuery (JavaScript Query), è un framework JavaScript, realizzato per supportare nel<br />

miglior modo possibile lo sviluppatore web garantendogli, non solo un più rapido<br />

sviluppo <strong>del</strong>le applicazioni ma anche, e soprattutto, la sicurezza <strong>di</strong> avere<br />

un'architettura compatibile con tutti i pr<strong>in</strong>cipali browser moderni.<br />

89


GLOSSARIO<br />

Mash-up, applicazioni che usano contenuti <strong>di</strong> più sorgenti per crearne uno<br />

completamente nuovo.<br />

PHP (acronimo ricorsivo <strong>di</strong> "PHP: Hypertext Preprocessor", preprocessore <strong>di</strong><br />

ipertesti), è un l<strong>in</strong>guaggio <strong>di</strong> script<strong>in</strong>g <strong>in</strong>terpretato, con licenza open source e<br />

parzialmente libera, orig<strong>in</strong>ariamente concepito per la realizzazione <strong>di</strong> pag<strong>in</strong>e web<br />

d<strong>in</strong>amiche. Attualmente è utilizzato pr<strong>in</strong>cipalmente per sviluppare applicazioni web<br />

lato server ma può essere usato anche per scrivere script a l<strong>in</strong>ea <strong>di</strong> comando o<br />

applicazioni stand-alone con <strong>in</strong>terfaccia grafica.<br />

RDF (Resource Description Framework), è lo strumento base proposto da W3C per la<br />

co<strong>di</strong>fica, lo scambio e il riutilizzo <strong>di</strong> metadati strutturati con la logica <strong>del</strong>la semantica<br />

e consente l'<strong>in</strong>teroperabilità tra applicazioni che si scambiano <strong>in</strong>formazioni sul Web.<br />

SGML (Standard Generalized Markup Language), è uno standard per la descrizione<br />

logica <strong>dei</strong> documenti.<br />

SOA (Service-Oriented Architecture), <strong>in</strong><strong>di</strong>ca generalmente un'architettura software<br />

adatta a supportare l'uso <strong>di</strong> servizi Web per garantire l'<strong>in</strong>teroperabilità tra <strong>di</strong>versi<br />

sistemi così da consentire l'utilizzo <strong>del</strong>le s<strong>in</strong>gole applicazioni come componenti <strong>del</strong><br />

processo <strong>di</strong> bus<strong>in</strong>ess e sod<strong>di</strong>sfare le richieste degli utenti <strong>in</strong> modo <strong>in</strong>tegrato e<br />

trasparente.<br />

SOAP (Simple Object Access Protocol), è un protocollo leggero per lo scambio <strong>di</strong><br />

messaggi tra componenti software, tipicamente nella forma <strong>di</strong> componentistica<br />

software. La parola object manifesta che l'uso <strong>del</strong> protocollo dovrebbe effettuarsi<br />

secondo il para<strong>di</strong>gma <strong>del</strong>la programmazione orientata agli oggetti. Si basa sul<br />

metal<strong>in</strong>guaggio XML e la sua struttura segue la configurazione Head-Body,<br />

analogamente ad HTML.<br />

SPARQL (Simple Protocol And RDF Query Language), è il l<strong>in</strong>guaggio <strong>di</strong> <strong>in</strong>terrogazione<br />

specifico per il recupero <strong>dei</strong> dati espressi <strong>in</strong> RDF dal Web, ed è asceso dal 15 gennaio<br />

2008 al rango <strong>di</strong> W3C Can<strong>di</strong>date Recommendation.<br />

SQL (Structured Query Language), è un L<strong>in</strong>guaggio <strong>di</strong> programmazione per database<br />

progettato per leggere, mo<strong>di</strong>ficare e gestire dati memorizzati <strong>in</strong> un sistema basato sul<br />

mo<strong>del</strong>lo relazionale, per creare e mo<strong>di</strong>ficare schemi <strong>di</strong> database, per creare e gestire<br />

strumenti <strong>di</strong> controllo ed accesso ai dati.<br />

TRIM s.r.l. nasce nel 1999 ed è una <strong>del</strong>le prime aziende <strong>del</strong>l'Incubatore <strong>di</strong> Imprese<br />

Innovative <strong>del</strong> Politecnico <strong>di</strong> Tor<strong>in</strong>o. Solida e d<strong>in</strong>amica, è formata da un team <strong>di</strong> 15<br />

<strong>in</strong>gegneri che, lavorando con una propria metodologia, progettano e realizzano<br />

90


GLOSSARIO<br />

applicazioni web e soluzioni <strong>di</strong> gestione documentale <strong>in</strong> maniera rapida ed efficace<br />

utilizzando tecnologie Java.<br />

UDDI (Universal Description Discovery and Integration), è un registry (ovvero una<br />

base dati ord<strong>in</strong>ata ed <strong>in</strong><strong>di</strong>cizzata), basato su XML ed <strong>in</strong><strong>di</strong>pendente dalla piattaforma<br />

hardware, che permette alle aziende la pubblicazione <strong>dei</strong> propri dati e <strong>dei</strong> servizi<br />

offerti su <strong>in</strong>ternet.<br />

URI (Uniform Resource Identifier), è il generico <strong>in</strong>sieme <strong>di</strong> tutti i nomi/<strong>in</strong><strong>di</strong>rizzi che<br />

costituiscono le brevi sequenze <strong>di</strong> caratteri che fanno riferimento ad una risorsa,<br />

acronimo più generico rispetto ad URL.<br />

URL (Uniform Resource Locator), è una sequenza <strong>di</strong> caratteri che identifica<br />

univocamente l'<strong>in</strong><strong>di</strong>rizzo <strong>di</strong> una risorsa <strong>in</strong> Internet, come un documento o<br />

un'immag<strong>in</strong>e. E’ un term<strong>in</strong>e <strong>in</strong>formale, non più utilizzato nelle specifiche tecniche,<br />

associato con gli schemi URI più noti e <strong>di</strong>ffusi (http, ftp, mailto, etc.).<br />

Web of Trust, “Web <strong>di</strong> fiducia” <strong>in</strong> italiano, è un concetto espresso da programmi che<br />

permettono <strong>di</strong> usare autenticazione e privacy crittografica, per stabilire l’autenticità<br />

<strong>del</strong>l’associazione chiave-utente.<br />

Web Service (servizio web), è un sistema software progettato per supportare<br />

l'<strong>in</strong>teroperabilità tra <strong>di</strong>versi elaboratori su <strong>di</strong> una medesima rete.<br />

Wiki, è un sito Web (o comunque una collezione <strong>di</strong> documenti ipertestuali) che viene<br />

aggiornato dai suoi utilizzatori e i cui contenuti sono sviluppati <strong>in</strong> collaborazione da<br />

tutti coloro che vi hanno accesso. La mo<strong>di</strong>fica <strong>dei</strong> contenuti è aperta, nel senso che il<br />

testo può essere mo<strong>di</strong>ficato da tutti gli utenti (a volte soltanto se registrati, altre<br />

volte anche anonimi) procedendo non solo per aggiunte, ma anche cambiando e<br />

cancellando ciò che hanno scritto gli autori precedenti. Ogni mo<strong>di</strong>fica è registrata <strong>in</strong><br />

una cronologia che permette <strong>in</strong> caso <strong>di</strong> necessità <strong>di</strong> riportare il testo alla versione<br />

precedente; lo scopo è quello <strong>di</strong> con<strong>di</strong>videre, scambiare, immagazz<strong>in</strong>are e ottimizzare<br />

la conoscenza <strong>in</strong> modo collaborativo. Il term<strong>in</strong>e wiki <strong>in</strong><strong>di</strong>ca anche il software<br />

collaborativo utilizzato per creare il sito web e il server.<br />

WSDL (Web Services Description Language), è un l<strong>in</strong>guaggio formale <strong>in</strong> formato XML<br />

utilizzato per la creazione <strong>di</strong> “documenti” per la descrizione <strong>di</strong> Web Service.<br />

Me<strong>di</strong>ante WSDL può essere, <strong>in</strong>fatti, descritta l'<strong>in</strong>terfaccia pubblica <strong>di</strong> un Web Service<br />

ovvero creata una descrizione, basata su XML, <strong>di</strong> come <strong>in</strong>teragire con un determ<strong>in</strong>ato<br />

servizio: un “documento” WSDL contiene <strong>in</strong>fatti, relativamente al Web Service<br />

descritto, <strong>in</strong>formazioni su cosa può essere utilizzato (le “operazioni” messe a<br />

<strong>di</strong>sposizione dal servizio), come utilizzarlo (il protocollo <strong>di</strong> comunicazione da utilizzare<br />

per accedere al servizio, il formato <strong>dei</strong> messaggi accettati <strong>in</strong> <strong>in</strong>put e restituiti <strong>in</strong><br />

91


GLOSSARIO<br />

output dal servizio ed i dati correlati) ovvero i “v<strong>in</strong>coli” (b<strong>in</strong>d<strong>in</strong>gs <strong>in</strong> <strong>in</strong>glese) <strong>del</strong><br />

servizio e dove utilizzare il servizio (cosiddetto endpo<strong>in</strong>t <strong>del</strong> servizio che solitamente<br />

corrisponde all'<strong>in</strong><strong>di</strong>rizzo - <strong>in</strong> formato URI - che rende <strong>di</strong>sponibile il Web Service).<br />

W3C (World Wide Web Consortium), è un consorzio che sviluppa tecnologie<br />

(specifiche, l<strong>in</strong>ee guida, software, e strumenti) per portare il Web al massimo <strong>del</strong> suo<br />

potenziale, def<strong>in</strong>endo protocolli comuni che ne favoriscano l’evoluzione e assicur<strong>in</strong>o<br />

l’ <strong>in</strong>teroperabilità.<br />

XML (eXtensible Markup Language), è un meta-l<strong>in</strong>guaggio <strong>di</strong> markup, cioè un<br />

l<strong>in</strong>guaggio che permette <strong>di</strong> def<strong>in</strong>ire altri l<strong>in</strong>guaggi <strong>di</strong> markup. A <strong>di</strong>fferenza <strong>di</strong> HTML,<br />

XML non ha tag predef<strong>in</strong>iti e non serve per def<strong>in</strong>ire pag<strong>in</strong>e Web né per programmare.<br />

Esso serve esclusivamente per def<strong>in</strong>ire altri l<strong>in</strong>guaggi. Rispetto all'HTML, l'XML ha uno<br />

scopo ben <strong>di</strong>verso: mentre il primo def<strong>in</strong>isce una grammatica per la descrizione e la<br />

formattazione <strong>di</strong> pag<strong>in</strong>e web e, più <strong>in</strong> generale, <strong>di</strong> ipertesti, il secondo è un<br />

metal<strong>in</strong>guaggio utilizzato per creare nuovi l<strong>in</strong>guaggi, atti a descrivere documenti<br />

strutturati. Mentre l'HTML ha un <strong>in</strong>sieme ben def<strong>in</strong>ito e ristretto <strong>di</strong> tag, con l'XML è<br />

<strong>in</strong>vece possibile def<strong>in</strong>irne <strong>di</strong> propri a seconda <strong>del</strong>le esigenze.<br />

XPath, è un l<strong>in</strong>guaggio parte <strong>del</strong>la famiglia XML che permette <strong>di</strong> <strong>in</strong><strong>di</strong>viduare i no<strong>di</strong><br />

all'<strong>in</strong>terno <strong>di</strong> un documento XML. Le espressioni XPath, a <strong>di</strong>fferenza <strong>del</strong>le espressioni<br />

XML, non servono a identificare la struttura <strong>di</strong> un documento, bensì a localizzarne<br />

con precisione i no<strong>di</strong>.<br />

XSD (XML Schema Def<strong>in</strong>ition), è un esempio concreto <strong>di</strong> schema XML scritto <strong>in</strong><br />

l<strong>in</strong>guaggio XML Schema. Una XSD def<strong>in</strong>isce il tipo <strong>di</strong> un documento XML <strong>in</strong> term<strong>in</strong>i <strong>di</strong><br />

v<strong>in</strong>coli: quali elementi ed attributi possono apparire, <strong>in</strong> quale relazione reciproca,<br />

quale tipo <strong>di</strong> dati può contenere, ed altro. Può essere usata anche con un programma<br />

<strong>di</strong> validazione, al f<strong>in</strong>e <strong>di</strong> accertare a quale tipo appartiene un determ<strong>in</strong>ato documento<br />

XML.<br />

92


BIBLIOGRAFIA<br />

Ru<strong>di</strong> Studer, Richard Benjam<strong>in</strong>s e Dieter Fensel (marzo 1998), Data & Knowledge<br />

Eng<strong>in</strong>eer<strong>in</strong>g, Amsterdam, Elsevier Science Publishers B. V., Volume 25, pag<strong>in</strong>e 161 – 197.<br />

David Sklar (2005), PHP 5 Elementi <strong>di</strong> programmazione, Milano, McGraw-Hill.<br />

Della Valle Emanuele, Cel<strong>in</strong>o Irene, Cerizza Dario (giugno 2009), Semantic Web - Dai<br />

fondamenti alla realizzazione <strong>di</strong> un'applicazione, 1 a e<strong>di</strong>zione, Italia, Pearson Education<br />

Italia.<br />

Tim Berners-Lee, James Hendler, Ora Lassila (maggio 2001), The Semantic Web, Scientific<br />

American Magaz<strong>in</strong>e, Scientific American Inc.<br />

Jeffrey T. Pollock (2009), The Semantic Web for Dummies, In<strong>di</strong>anapolis (In<strong>di</strong>ana), Wiley.<br />

Michael C. Daconta, Leo J. Obrst, Kev<strong>in</strong> T. Smith (2003), The Semantic Web: A Guide to the<br />

Future of XML, Web Services and Knowledge Management, In<strong>di</strong>anapolis (In<strong>di</strong>ana), Wiley.<br />

93


Sito <strong>di</strong> DoQui:<br />

http://www.doqui.it/<br />

Wiki <strong>di</strong> DoQui:<br />

http://www.doqui.it/wiki/doku.php<br />

SITOGRAFIA<br />

Laboratorio <strong>di</strong> Accessibilità e Usabilità - Interrogare l'RDF con SPARQL:<br />

http://lau.csi.it/realizzare/accessibilita/l<strong>in</strong>guaggi_programmazione/SPARQL/rdf.shtml<br />

Documentazione ARC2 - Framework PHP per RDF e SPARQL:<br />

http://arc.semsol.org/<br />

“Web2.0 Innovazione applicata ai servizi <strong>di</strong> Rete” <strong>di</strong> Federico Moro (Novembre 2006):<br />

http://www.openarea.net/Web2.0.pdf<br />

“Web 2.0 Compact Def<strong>in</strong>ition: Try<strong>in</strong>g Aga<strong>in</strong>” <strong>di</strong> O’Really Radar:<br />

http://radar.oreilly.com/archives/2006/12/web-20-compact-def<strong>in</strong>ition-tryi.html<br />

“The Web Semantic” <strong>di</strong> Tim Berners-Lee:<br />

http://www.scientificamerican.com/article.cfm?id=the-semantic-web/<br />

Materiale <strong>del</strong> corso universitario “Semantic Web: Technologies, Tools, Applications” <strong>del</strong><br />

prfessore Fulvio Corno e <strong>del</strong>la professoressa Laura Far<strong>in</strong>etti:<br />

http://elite.polito.it/teach<strong>in</strong>g-ma<strong>in</strong>menu-69/master-a-phd-ma<strong>in</strong>menu-94/56-01lhviusemweb<br />

Raccomandazioni <strong>del</strong> W3C sul RDF Primer <strong>di</strong> Frank Manola ed Eric Miller:<br />

http://www.w3.org/TR/rdf-primer/<br />

Raccomandazioni <strong>del</strong> W3C sul RDF Schema <strong>di</strong> Dan Brickley e R.V. Guha:<br />

http://www.w3.org/TR/rdf-schema/<br />

Raccomandazioni <strong>del</strong> W3C sulle query SPARQL <strong>di</strong> Eric Prud'hommeaux, Andy Seaborne,<br />

Hewlett-Packard Laboratories e Bristol:<br />

http://www.w3.org/TR/rdf-sparql-query/<br />

Tutorial sull’RDF realizzato dal W3schools:<br />

http://www.w3schools.com/RDF/default.asp<br />

Validatore RDF <strong>del</strong> W3:<br />

http://www.w3.org/RDF/Validator/<br />

Validatore RDF realizzato da Joshua Tauberer:<br />

http://www.rdfabout.com/demo/validator/<br />

94


Il Web Semantico <strong>in</strong> Italiano:<br />

http://esw.w3.org/topic/SemWebItaly/<br />

“Architecture of the World Wide Web” <strong>di</strong> Ian Jacobs e Norman Walsh:<br />

http://www.w3.org/TR/webarch/<br />

“Best Practice Recipes for Publish<strong>in</strong>g RDF Vocabularies” <strong>di</strong> Diego Berrueta e Jon Phipps:<br />

http://www.w3.org/TR/swbp-vocab-pub/<br />

Progetto Semantic Web Services DIP – Data, Information and Process Integration:<br />

http://www.service-f<strong>in</strong>der.eu/<br />

95

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!