laurea magistrale in ingegneria del cinema e dei mezzi di - e-Lite

Transcript

laurea magistrale in ingegneria del cinema e dei mezzi di - e-Lite
LAUREA MAGISTRALE IN INGEGNERIA DEL
CINEMA E DEI MEZZI DI COMUNICAZIONE
INTEGRAZIONE DI CONTENUTI DI TIPO SEMANTICO
NEL SISTEMA DOCUMENTALE DOQUI
Laureando: Gabriele Manna
Relatore: Fulvio Corno
Tutor aziendale: Louis Bono
«Fear can hold you prisoner. Hope can set you free.»
“The Shawshank Redemption” written and directed by Frank Darabont, 1994.
1
Ringrazio la mia fidanzata, nonché compagna di vita, per essermi stata sempre
vicino supportandomi e “sopportandomi” in questi ultimi anni di studio.
Ringrazio la mia famiglia per avermi dato questa possibilità e per avermi
assecondato in tutte le mie scelte.
2
INDICE
INTRODUZIONE .......................................................................................................................... 5
CAPITOLO 1 - IL WEB .................................................................................................................. 8
1.1 IL WORLD WIDE WEB ........................................................................................................ 9
1.2 IL SUCCESSO DEL WEB .................................................................................................... 10
1.3 FONDAMENTA DEL WEB ................................................................................................. 11
1.4 IL WEB DI IERI .................................................................................................................. 12
1.5 IL WEB DI OGGI ............................................................................................................... 12
1.5.1 Primo elemento: XML .............................................................................................. 13
1.5.2 Secondo elemento: Web Service ............................................................................. 14
1.5.3 Terzo elemento: Ajax ............................................................................................... 16
CAPITOLO 2 - LA LOGICA DEL SEMANTIC WEB........................................................................ 17
2.1 INTRODUZIONE AL SEMANTIC WEB ............................................................................... 18
2.2 COS’È IL SEMANTIC WEB ................................................................................................. 18
2.2.1 Approfondimento sul Semantic Web secondo Tim Berners-Lee ............................. 20
2.3 LA PILA DEL SEMANTIC WEB ........................................................................................... 22
2.4 CHE COS’È UN’ONTOLOGIA ............................................................................................ 24
2.5 LE METROPOLITANE DEL SEMANTIC WEB ...................................................................... 25
CAPITOLO 3 - RDF E SPARQL .................................................................................................... 26
3.1 IL LINGUAGGIO RDF ........................................................................................................ 27
3.2 RDF DATA MODEL ........................................................................................................... 28
3.3 LA SINTASSI N3 ................................................................................................................ 30
3.4 LA SINTASSI RDF/XML ..................................................................................................... 31
3.5 RDF SCHEMA ................................................................................................................... 32
3.5.1 Esempio di un RDF Schema ...................................................................................... 34
3.6 RDF OLTRE XML............................................................................................................... 36
3.7 SPARQL ............................................................................................................................ 37
3.7.1 Le path expression ................................................................................................... 38
3.7.2 Output di una query in formato XML ....................................................................... 41
3.7.3 Framework SPARQL .................................................................................................. 43
3
CAPITOLO 4 - DOQUI ................................................................................................................ 44
4.1 CHE COS'È DOQUI ........................................................................................................... 45
4.2 OBIETTIVI......................................................................................................................... 45
4.3 INNOVAZIONE ................................................................................................................. 46
4.3.1 L’approccio alla gestione documentale ................................................................... 47
4.3.2 Il modello di sviluppo ............................................................................................... 48
4.3.3 Le scelte tecnologiche .............................................................................................. 48
4.4 COMPONENTI DEL SISTEMA ........................................................................................... 48
4.5 STRUTTURA DOQUI ......................................................................................................... 50
CAPITOLO 5 - DEFINIZIONE DEL PROBLEMA ........................................................................... 52
5.1 OBIETTIVI GENERALI ....................................................................................................... 53
5.2 CASO DI STUDIO .............................................................................................................. 54
5.3 REALIZZAZIONE INTERFACCIA ......................................................................................... 55
CAPITOLO 6 - VERSIONE BASATA SU RDF E SPARQL .............................................................. 58
6.1 TIPOLOGIA DI INFORMAZIONI ........................................................................................ 59
6.2 MODELLO ........................................................................................................................ 60
6.3 TOOLKIT SPARQL ............................................................................................................. 63
6.3.1 Impostazioni iniziali .................................................................................................. 63
6.3.2 Requisiti del database .............................................................................................. 63
6.3.3 Esempio di query utilizzate ...................................................................................... 64
CAPITOLO 7 - VERSIONE BASATA SU INDEX............................................................................ 67
7.1 PRIMO APPROCCIO AD INDEX ........................................................................................ 68
7.2 DUE POSSIBILI SOLUZIONI............................................................................................... 70
7.3 SOLUZIONE ADOTTATA ................................................................................................... 71
7.4 CUSTOM CONTENT MODEL ............................................................................................ 74
CAPITOLO 8 - VALUTAZIONI .................................................................................................... 78
8.1 CONFRONTI ..................................................................................................................... 79
CONCLUSIONI ........................................................................................................................... 84
GLOSSARIO ............................................................................................................................... 87
BIBLIOGRAFIA........................................................................................................................... 93
SITOGRAFIA .............................................................................................................................. 94
4
INTRODUZIONE
5
INTRODUZIONE
L’esplosione del fenomeno del Web 2.0 ha da un lato portato alla luce una serie di nuove
modalità di interazione e di potenzialità abilitate dal Web, dall’altro ha mostrato come
l’evoluzione del Web sia un continuo work in progress. Per fare in modo che il Web
raggiunga le sue piene potenzialità è necessario puntare ad un ulteriore avanzamento
tecnologico che porti il Web ad essere, da uno spazio di semplice condivisione di documenti
pensati per la fruizione da parte delle persone, una piattaforma per la pubblicazione e il
recupero di dati strutturati attraverso processi logici ed elaborazioni automatiche da parte
delle macchine.
Questa parte dell’evoluzione del Web sta accadendo in questi anni e si concretizza nel
Semantic Web. Riportando le parole pronunciate da Tim Berners-Lee, co-inventore insieme a
Robert Cailliau del World Wide Web, in occasione del suo intervento intitolato “The next
Web of open, linked data” al TED 20091, “la nostra vita è costellata di dati e informazioni che
in gran parte già mettiamo sul Web: perché non fare in modo che questi dati pubblicati sul
Web siano ‘semanticamente’ connessi, così da abilitare nuove applicazioni e creare nuove
opportunità?”.
Questa tesi ha per oggetto proprio l’approfondimento e la ricerca riguardo le logiche della
semantica ed ha previsto lo sviluppo di una componente prototipale CMS (Content
Management System), vale a dire un’interfaccia Web studiata per facilitare la gestione di
determinati contenuti da parte di eventuali amministratori, svincolandoli da conoscenze
tecniche di programmazione. Tale componente va ad integrarsi nell'architettura DoQui, un
sistema di gestione di documenti pubblici in formato digitale, nato dalla collaborazione fra
Regione Piemonte, Comune e Provincia di Torino, a supporto dei procedimenti amministrativi
degli Enti. L’interesse pubblico dedicato alla piattaforma DoQui deriva dalla consapevolezza
circa le potenzialità di gestione documentale ai fini amministrativi tali da permettere
l’ottimizzazione di tempi ed il miglioramento delle modalità di organizzazione, archiviazione
e condivisione di documenti in formato digitale a livello regionale.
A tal fine l’obiettivo principale del progetto di tesi è stato comprendere innanzitutto se
DoQui permetta di gestire e utilizzare i dati in modo semantico e successivamente
individuare il modo tecnologicamente migliore per poterlo effettuare.
Il progetto è stato seguito e realizzato in collaborazione con TRIM s.r.l., una società torinese
solida e dinamica, formata da un team di 15 ingegneri che, lavorando con una propria
metodologia, progettano e realizzano applicazioni web e soluzioni di gestione documentale
in maniera rapida ed efficace utilizzando principalmente tecnologie Java.
TRIM s.r.l con questo progetto ha inteso approfondire un aspetto tecnologico
all’avanguardia su cui un sempre maggior numero di applicazioni basa le sue tecniche vale a
dire il Semantic Web. L’approccio semantico al World Wide Web intende trasformare
quest’ultimo in un ambiente in cui i documenti, come le pagine html, le immagini, i file, etc.,
1
TED 2009, è un insieme di eventi organizzati su scala mondiale dove si incontrano i più grandi leader del
mondo nel campo della technology, dell’entertainment e del design.
6
INTRODUZIONE
vengano associati a informazioni e metadati in modo da renderne possibile l’interrogazione
e interpretazione automatizzata attraverso logiche inferenziali di tipo semantico.
Con il Semantic Web saranno possibili ricerche più evolute e più ramificate grazie a relazioni
e connessioni tra documenti basate su logiche più elaborate del semplice link ipertestuale. In
tal contesto, per la descrizione delle informazioni, negli ultimi anni, ha ricevuto sempre più
attenzione e si è diffuso notevolmente il modello RDF (Resource Description Framework), e
proprio per tale ragione la ricerca da me effettuata si è soffermata sullo studio di questo
modello e sulla possibilità di impiego del Semantic Web nella progettazione del componente
CMS.
Il presente lavoro è strutturato in due parti. La prima parte inizia illustrando i principi
architetturali del Web che sono stati indispensabili per capire meglio sia l’evoluzione degli
ultimi anni del Web, sia il ruolo che rivestono le sue tecnologie. Segue approfondendo le
principali logiche del Semantic Web attraverso la presentazione dell’RDF, il modello
relazionale dei dati per il Web, con le sue sintassi e le sue modalità di interrogazione
specifiche, presentando quindi il linguaggio SPARQL. La prima parte, dunque, si propone di
gettare le fondamenta su cui proseguire il percorso di approfondimento.
La seconda parte presenta il progetto realizzato partendo dal problema iniziale, affrontando
le possibili soluzioni e giungendo alle considerazioni finali. Il progetto nello specifico ha
comportato la realizzazione di un’applicazione Web per gestire dati relativi ai menu per
ristoranti, dati che a livello back-end dovevano essere trattati con le logiche della semantica.
Il problema da affrontare nasce da una domanda cruciale per lo sviluppo stesso del progetto:
“È possibile utilizzare Index per rappresentare i dati in modo semantico?”
Da qui la decisione di realizzare a livello back-end due versioni del progetto, una prima
basata su un’applicazione Web che si interfacci a DoQui e nella fattispecie ad Index, il
motore di gestione dei contenuti digitali di DoQui, cercando di rappresentare i dati in modo
semantico; ed una seconda versione, utilizzata come modello per il confronto, basata sulla
stessa applicazione Web ma che in questo caso si interfacci su un EndPoit SPARQL per
effettuare interrogazioni su dati di tipo semantico.
Realizzare due versioni del progetto a livello beck-end ha permesso di giungere a delle
valutazioni conclusive che chiudono la seconda parte e riassumono i principali risultati di
questo interessate progetto di ricerca.
7
CAPITOLO 1
IL WEB
8
CAPITOLO 1 – IL WEB
1.1 IL WORLD WIDE WEB
Le tecnologie del World Wide Web2 sono continuamente in evoluzione, un’evoluzione
direttamente proporzionale alla nascita di nuovi business, difatti nuove esigenze portano
allo sviluppo di nuove soluzioni tecnologiche.
La nascita del Web risale al 6 agosto 1991, giorno in cui Tim Berners-Lee3 mise on-line il
primo sito web che inizialmente venne utilizzato esclusivamente dalla comunità scientifica
per usi personali. Il 30 aprile 1993 il CERN4 decise di rendere pubblica tale tecnologia,
decisione a cui seguì un immediato successo del Web che portò ad una crescita esponenziale
di Internet5 ancora oggi in atto e alla nascita della cosiddetta "era del Web".
La prima era del Web fu caratterizzata da un universo di informazioni accessibili via rete
fatto dalle persone per le persone, Internet era costituito dai cosiddetti “siti vetrina”, siti
statici, che rappresentavano la soluzione più semplice ed immediata per essere presenti su
internet. Questi potevano essere considerati una sorta di biglietto da visita on-line per
presentare le informazioni di carattere generale di aziende ed organizzazioni: il loro profilo,
la descrizione dei servizi offerti, l'ubicazione della sede dell'attività e tutti i recapiti per i
contatti.
Il Web di oggi, la seconda era, è un Web fondato su siti dinamici, così chiamati perché
presentano contenuti redatti dinamicamente. I siti Web dinamici sono caratterizzati infatti
da un'alta interazione fra sito e utente; alcuni elementi che caratterizzano la dinamicità di un
sito possono essere: l'interazione con uno o più database, la presenza di moduli per l'invio di
email o altre operazioni su cui operano sempre più le macchine, pensiamo ai crawler6 dei
motori di ricerca o agli RSS feed7 generati da macchine per altre macchine, per le quali sono
state standardizzate tecnologie come XML e i Web Service, che saranno approfonditi nei
paragrafi successivi.
2
3
4
5
6
7
World Wide Web, traduzione letterale: “grande ragnatela mondiale”. Il Web è uno spazio elettronico e
digitale di Internet destinato alla pubblicazione di contenuti multimediali (testi, immagini, audio, video,
ipertesti, ipermedia, ecc.) nonché uno strumento per implementare particolari servizi come ad esempio il
download di software (programmi, dati, applicazioni, videogiochi, ecc.). Tale spazio elettronico e tali servizi
sono resi disponibili attraverso particolari computer di Internet chiamati server web.
Timothy John Berners-Lee (Londra, 8 giugno 1955) è un informatico britannico, co-inventore insieme a
Robert Cailliau del World Wide Web.
L'European Organization for Nuclear Research, più conosciuto come CERN (acronimo) , è il più grande
laboratorio al mondo di fisica delle particelle. Si trova al confine tra Svizzera e Francia alla periferia ovest
della città di Ginevra.
Internet è una rete di computer mondiale ad accesso pubblico attualmente rappresentante anche uno dei
principali mezzi di comunicazione di massa.
Un crawler (detto anche spider o robot), è un software che analizza i contenuti di una rete (o di un database)
in un modo metodico e automatizzato, in genere per conto di un motore di ricerca. I crawler solitamente
acquisiscono una copia testuale di tutti i documenti visitati e le inseriscono in un indice.
Feed RSS (detti anche flussi RSS), sono informazioni di qualunque tipo, relative ad un sito Internet, che un
utente può vedere con l'aiuto di un lettore apposito, nella stessa pagina, nella stessa finestra, senza dover
andare ogni volta nel sito principale.
9
CAPITOLO 1 – IL WEB
1.2 IL SUCCESSO DEL WEB
Il Web è al centro di un mutamento sociale ed economico di proporzioni epocali che ha
cambiato profondamente il nostro modo di interagire con la realtà. Il pattern cercareconfrontare-scoprire-scegliere vale per un numero crescente di prodotti e servizi che
includono libri, brani musicali, film, amicizie, rapporti di lavoro e persino prodotti che noi
stessi possiamo desiderare di mettere in vendita sui siti come eBay8.
La novità fondamentale è che ciascuno può avere un ruolo attivo nel Web: può non solo
consumare ogni genere di servizio, ma anche crearne scrivendo il proprio blog, contribuendo
a wikipedia9, condividendo le proprie foto e i video su Flickr10 e YouTube11, persino
combinando i vari servizi su Yahoo!12, Pipes13 e Openkapow14.
Per la prima volta dall’invenzione dei mass media, tutti noi, utenti comuni, possiamo far
sentire la nostra voce e raccontare a nostro modo il mondo, questo è il fenomeno dell’User
Generated Content (UGC). Si tratta di una nuova modalità di guardare al Web ed ai mass
media in generale, grazie a tutta una serie di innovazioni tecnologiche è stato reso possibile
un nuovo approccio esperienziale al Web: gli elementi chiave di questa nuova visione sono
infatti la dimensione sociale, la possibilità di condivisione, la possibilità per ciascuno di
essere autore di contenuti. Tali cambiamenti sono derivati non tanto da innovazioni
meramente tecnologiche, molte delle quali preesistevano infatti al Web 2.0 (il Web della
seconda era), quanto dalla modalità di utilizzo delle stesse e dall’uso che ne viene fatto da
parte di utenti non esperti. Mentre durante la prima era del Web i contenuti venivano diffusi
e pubblicati on-line solo da parte di utenti esperti nella realizzazione di siti Web, con il web
2.0 anche l’utente inesperto ha la possibilità di contribuire all’ampliamento dei contenuti sul
Web. Da dinamiche di dialogo unicamente top-down, si è passati infatti a dinamiche anche
bottom-up attraverso cui i ruoli, prima statici, di produttore e consumatore di contenuti,
vengono oggi continuamente scambiati e rinegoziati.
Il Web 2.0 rappresenta la concretizzazione di gran parte delle aspettative dei creatori del
Web, poiché questo costituisce una realtà realmente accessibile a tutti gli utenti: la
possibilità di disporre di servizi a basso costo in grado di consentire l'editing anche per
8
9
10
11
12
13
14
eBay è una piattaforma che offre ai propri utenti la possibilità di vendere e comprare oggetti sia nuovi che
usati, in qualsiasi momento, da qualunque postazione Internet e con diverse modalità, incluse le vendite a
prezzo fisso e a prezzo dinamico, comunemente definite come "aste online".
Wikipedia è una enciclopedia multilingue collaborativa, online e gratuita.
Flickr è un sito web multilingua che permette agli iscritti di condividere fotografie personali con chiunque
abbia accesso a Internet.
YouTube è un sito web che consente la condivisione di video tra i suoi utenti.
Yahoo! è una società fornitrice di servizi internet rivolta al mondo business e consumer (motore di ricerca,
mail, messenger e chat).
Pipes, un aggregatore e manipolatore interattivo di feed.
Openkapow, permette appunto di “fondere” più servizi insieme grazie alle API fornite dagli sviluppatori. Si
basa sul principio della fruizione di moduli già precompilati e la modifica collettiva di mash-up, ovvero
applicazioni che usano contenuti di più sorgenti per crearne uno completamente nuovo.
10
CAPITOLO 1 – IL WEB
l'utente poco evoluto, rappresenta un importante passo verso un'autentica interazione e
condivisione in cui il ruolo dell'utente è centrale.
1.3 FONDAMENTA DEL WEB
Il Web, secondo Tim Berners-Lee, per diventare un universo di informazioni accessibile
tramite la rete avrebbe dovuto rispondere ai due seguenti requisiti:
1. Adattarsi alla natura frattale della società;
2. Favorire e supportare l’invenzione indipendente.
Per natura frattale si intende la caratteristica di molti fenomeni di ripetersi nella loro
struttura allo stesso modo su scale diverse, mentre per natura frattale della società si
intendono le reti di relazioni; pertanto il Web per adattarsi a tale natura deve permettere
agli utenti di essere liberi di stabilire legami fra punti arbitrariamente distanti nello spazio
informativo.
Se si ammette la natura frattale della società, allora è naturale anche ammettere che le
stesse idee possano venire indipendentemente a diversi innovatori. Pertanto, nessuno può
essere il più bravo, per ogni versione di una idea ne esisterà certamente almeno un’altra e
prima o poi queste dovranno interoperare.
La natura del Web si compone di tre soli elementi:
1. Un meccanismo per identificare ogni risorsa, comprese le risorse fisiche al di fuori
dello spazio informativo, per esempio un codice ISBN 15 può essere usato per
identificare un libro.
2. Un protocollo per:
a) deferenziare tali identificativi e ottenere una rappresentazione della risorsa; si
parla di rappresentazione perché l’operazione di deferenziazione non restituisce la
risorsa ma una sua rappresentazione digitale, ad esempio un’immagine digitale è
una rappresentazione di una persona fisica.
b) negoziare una specifica rappresentazione della risorsa tra le rappresentazioni
alternative disponibili. Ciò consiste nell’invio di un’insieme di prefernze da parte
del richiedente nel tentativo di fornire la rappresentazione che meglio soddisfa tali
richieste.
3. Un linguaggio ipermediale per rappresentare le risorse, che consenta di mixare testo
strutturato con rappresentazioni multimediali, ma soprattutto di collegare le diverse
risorse tramite iperlink.
15
L'ISBN (International Standard Book Number), è un numero che identifica a livello internazionale in modo
univoco e duraturo un titolo o una edizione di un titolo di un determinato editore. Oltre a identificare il
libro, si attribuisce a tutti quei prodotti creati per essere utilizzati come libro.
11
CAPITOLO 1 – IL WEB
Questi sono gli elementi fondamenta del Web, nei successivi paragrafi analizzo questi tre
elementi nel Web di ieri e introduco le nuove tecnologie che si sono aggiunte nel Web di
oggi.
1.4 IL WEB DI IERI
La prima e più importante soluzione introdotta nel Web è rappresentata dalle URI (Uniform
Resourse Identifier), che sono stringhe opache in grado di identificare qualsiasi risorsa sul
Web. Queste sono dette opache poiché non intendono assegnare nessun significato globale
alla stringa: questa deve essere trattata solo come sequenza di caratteri capaci di
identificare una risorsa.
La seconda soluzione tecnologica introdotta nel Web e che ha ancora un ruolo dominante, è
il protocollo di deferenziazione e negoziazione HTTP (HyperText Transfer Protocol), un
protocollo di tipo Request-Response per architetture Client-Server.
Per implementare la terza soluzione tecnologica dell’architettura del Web (ovvero un
linguaggio ipermediale per le risorse), Tim Berners-Lee propose nel 1989 il linguaggio HTML
(HyperText Markup Language) che inizialmente si evolse in molti dialetti proprietari di
differenti browser16 scatenando quella che negli anni novanta venne chiamata la guerra dei
browser e che cessò solo quando questi si resero conto che i primi a perderci erano proprio
loro in quanto imponevano ai programmatori di siti Web una scelta su quale dialetto
utilizzare e limitavano gli utenti, che con un solo browser, non avevano la possibilità di
visualizzare qualsiasi pagina.
Le URI, l’HTTP e l’HTML hanno consentito a milioni di imprese, organizzazioni di pubblicare
milioni di risorse tra loro connesse tramite link.
1.5 IL WEB DI OGGI
Lo scoppio della bolla17 dot-com18 nel 2001 ha segnato un vero e proprio punto di svolta
nella storia del Web, si è trattato di una bolla speculativa che dal ’95 al 2001 ha visto i
16
Un browser web (in italiano: navigatore) è un programma che consente agli utenti di visualizzare e interagire
con testi, immagini e altre informazioni, tipicamente contenute in una pagina web di un sito (o all'interno di
una rete locale). Il browser è in grado di interpretare il codice HTML (e più recentemente XHTML) e
visualizzarlo in forma di ipertesto. L'HTML è il codice col quale la maggioranza delle pagine web nel mondo
sono composte: il web browser consente perciò la navigazione nel web.
17
Si definisce bolla speculativa una particolare fase di un qualsiasi mercato caratterizzata da un aumento
considerevole e ingiustificato dei prezzi, dovuto ad una crescita della domanda repentina e limitata nel
tempo. Quando il valore dei titoli scende repentinamente e si assiste a un cambiamento radicale delle
prospettive economiche retrostanti, si parla di scoppio della bolla speculativa.
18
Con Dot-com si definiscono quelle società di servizi che sviluppano la maggior parte del proprio business
tramite un sito internet. Il nome deriva dal diffuso utilizzo, da parte di queste, di siti appartenenti al
12
CAPITOLO 1 – IL WEB
mercati azionari occidentali, aumentare rapidamente la crescita di Internet. Il periodo è
stato caratterizzato dalla fondazione, e spesso da un’altrettanto rapido fallimento, di
numerose società operanti nell’ambito del Web e per questo conosciute come ‘.com’ (che si
legge ’dot-com’). Fattori quali rapida crescita delle quotazioni in borsa, speculazioni,
immissioni di capitale a rischio e fragili strutture industriali e di marketing, portarono a una
serie di ripetuti fallimenti.
In molti hanno sperato che il Web fosse sopravalutato e che il vecchio modo di produrre
pacchetti software non avrebbe continuato ad avere successo. Invece, le crisi sono una
caratteristica comune delle innovazioni dirompenti poiché segnano il momento in cui le
tecnologie nuove sono pronte a soppiantare quelle esistenti. Così il Web, dopo la bolla del
2001, continua a evolversi, arricchendosi di nuove tecnologie.
Le nuove tecnologie del Web di oggi che si sommano a quelle che sono le sue fondamenta,
sono tre:
o Il linguaggio XML;
o I Web Service;
o Il linguaggio AJAX.
1.5.1 Primo elemento: XML
Il W3C (World Wide Web Consortium)19, propone nel 1998 l’XML (eXtensible Markup
Language)20, un mezzo per supportare lo scambio di dati strutturati attraverso il Web.
L’aspetto più interessante di questo standard è che non istituisce un nuovo linguaggio, ma si
limita a fornire un insieme di specifiche per definire nuovi linguaggi estensibili e per questo
motivo si parla spesso di linguaggi basati su XML piuttosto che di linguaggio XML.
dominio di primo livello (.com). Le Dot-com impostarono un business improntato principalmente
all'erogazione di servizi via web, queste aziende, eccessivamente fiduciose nelle potenzialità della rete,
durante la fine del ventesimo secolo, s'illusero di potersi facilmente espandere, ma si trovarono, in molti
casi, a dover fare i conti con la mancanza di idee innovative, di esperienza e di capacità gestionali. Proprio
per questo le Dot-com furono le protagoniste, in negativo, della bolla speculativa della new-economy
all'inizio degli anni 2000, quando, numerose di esse, fallirono generando una vera e propria recessione della
New Economy.
19
20
W3C è un consorzio che sviluppa tecnologie (specifiche, linee guida, software, e strumenti) per portare il
Web al massimo del suo potenziale, definendo protocolli comuni che ne favoriscano l’evoluzione e
assicurino l’interoperabilità.
XML è un metalinguaggio di markup, ovvero un linguaggio marcatore che definisce un meccanismo sintattico
che consente di estendere o controllare il significato di altri linguaggi marcatori. Rispetto all'HTML, l'XML ha
uno scopo ben diverso: mentre il primo definisce una grammatica per la descrizione e la formattazione di
pagine web e, più in generale, di ipertesti, il secondo è un metalinguaggio utilizzato per creare nuovi
linguaggi, atti a descrivere documenti strutturati. Mentre l'HTML ha un insieme ben definito e ristretto di
tag, con l'XML è invece possibile definirne di propri a seconda delle esigenze.
13
CAPITOLO 1 – IL WEB
Per definire un linguaggio basato su XML si utilizza uno dei due linguaggi di schema standard:
DTD(Document Type Definition) o XSD (XML Schema). Entrambi permettono di definire:
1.
2.
3.
4.
5.
i nomi degli elementi;
i nomi degli attributi;
come questi possono essere combinati in strutture ad albero complesse;
quali parti della struttura sono opzionali;
quali tipi di valori possono assumere gli attributi e gli elementi foglia, vale a dire
quegli elementi che non contengono altri elementi.
XSD in aggiunta permette anche di distinguere tra il nome di un elemento e il suo tipo in
modo da realizzare gerarchie di tipi come nei linguaggi di programmazione Object-Oriented e
rendere ancora più estensibili i linguaggi basati su Xml.
Con XSD e XML è possibile definire un nuovo linguaggio integrando linguaggi già definiti.
Questa modularità solleva il rischio di conflitti tra linguaggi diversi che utilizzano lo stesso
nome per elementi o attributi differenti. Per ovviare a questo problema sono stati introdotti
i namespace che permettono di associare URI diverse a nomi identici definiti in XSD
differenti.
Un esempio di utilizzo di XML è dato dagli RSS che rappresentano una delle estensioni più
significative alle tecnologie base del Web e che consentono di collegarsi non solo ad una
pagina ma di “abbonarsi” ad essa ricevendo un avviso ogni volta che la pagina viene
aggiornata. Rich Skrenta21 lo definisce “Web incrementale”, altri lo chiamano “Live Web”.
1.5.2 Secondo elemento: Web Service
Il secondo elemento che abilita l’interazione machine-to-machine sul Web è costituito dai
Web Service; un Web Service è un insieme di protocolli e standard utilizzati per lo scambio
dei dati tra applicazioni e sistemi. Applicazioni scritte in vari linguaggi di programmazione e
che funzionano su differenti piattaforme possono utilizzare i Web Service per comunicare
attraverso le reti, come Internet, in un modo simile alla comunicazione tra diversi processi
che sono attivi su uno stesso computer.
Caratteristica fondamentale di un Web Service è quella di offrire un'interfaccia software
utilizzando la quale altri sistemi possono interagire con il Web Service stesso attivando le
operazioni descritte nell'interfaccia tramite appositi “messaggi” inclusi in una “busta” (la più
famosa è SOAP): tali messaggi sono, solitamente, trasportati tramite il protocollo HTTP e
formattati secondo lo standard XML.
21
Rich Skrenta, noto informatico statunitense, divenne famoso perché, a soli quindici anni, creò l'Elk Cloner,
un virus informatico (probabilmente il primo della storia del computer) che infettava il sistema Apple II
tramite floppy disk. Grazie a questo gesto, Richard Skrenta entrò di diritto nella storia dell'informatica, in
quanto fece capire innanzitutto la vulnerabilità del sistema Apple, ed anche che i "virus" di cui tanto
parlavano gli scrittori non erano solo fantascienza.
14
CAPITOLO 1 – IL WEB
Questa caratteristica dei Web Service è estremamente utile se si considera che possono
essere trovati utilizzando l'UDDI (Universal Description, Discoverey and Integration), un
servizio di directory disponibile sul Web dove gli interessati possono registrare e cercare
servizi web. L'interfaccia pubblica di un Web Service viene descritta tramite WSDL (Web
Services Description Language) un linguaggio basato su XML usato per la creazione di
“documenti” descrittivi delle modalità di interfacciamento ed utilizzo del Web Service.
Tutti i dati scambiati sono formattati mediante “tag” XML in modo che gli stessi possano
essere utilizzati ad entrambi i capi delle connessioni.
Figura 1 - Pila protocollare dei Web Service.
Un documento WSDL è caratterizzato da quattro elementi principali:
o
o
o
o
<types>
<message>
<portType>
<binding>
Ecco un esempio della sua architettura:
<definitions>
<types>
<!-- definizione dei tipi di dato utilizzati -->
</types>
<message>
<!-- definizione di uno dei messaggi impiegati dal
web service per comunicare con l'applicazione client -->
</message>
<!-- naturalmente può esistere più di un elemento message
all'interno del documento -->
<portType>
<!-- definisce una “porta” e le operazioni che possono essere eseguite
15
CAPITOLO 1 – IL WEB
dal web service. Definisce inoltre i messaggi coinvolti nelle
operazioni elencate -->
</portType>
<binding>
<!-- definisce il formato del messaggio ed i
dettagli di protocollo per ogni porta -->
</binding>
</definitions>
1.5.3 Terzo elemento: Ajax
La soluzione tecnologicamente più avanzata del Web di oggi, che integra HTML, DOM,
JavaScript, XML e Web Service, è AJAX (Asynchronous JavaScript and XML)22 tecnologia
ampiamente impiegata in tutte le applicazioni Web 2.0 di successo ed in particolare nella
realizzazione dei Mush-up23: servizi ottenuti combinando dati e script provenienti da più
server in un’unica applicazione. I Mush-up più diffusi combinano servizi di mappe con altri
dati geografici.
Nel Web di ieri ad ogni click dell’utente veniva ricaricata l’intera pagina, con AJAX i click
dell’utente vengono intercettati da script che invocano il Web Service ottenendo nuovi dati e
modificando la pagina via DOM per presentare i risultati all’utente.
ELEMENTO
Identificare
Dereferenziare
WEB DI IERI
URI
HTTP 1.1
WEB DI OGGI
URI
HTTP 1.1
Rappresentare
HTML + CSS + DOM + SCRIPT.
Png, jpg,..
XML, XHTML, RSS,…
Png, jpg, mp3, mpeg,…
WSDL, SOAP, REST
Tabella 1 - Differenze del Web tra ieri e oggi.
22
23
AJAX, è una tecnica di sviluppo per la realizzazione di applicazioni web interattive (Rich Internet Application).
Lo sviluppo di applicazioni HTML con AJAX si basa su uno scambio di dati in background fra web browser e
server, che consente l'aggiornamento dinamico di una pagina web senza esplicito ricaricamento da parte
dell'utente. AJAX è asincrono nel senso che i dati extra sono richiesti al server e caricati in background senza
interferire con il comportamento della pagina esistente. Normalmente le funzioni richiamate sono scritte
con il linguaggio JavaScript. Tuttavia, e a dispetto del nome, l'uso di JavaScript e di XML non è obbligatorio,
come non è necessario che le richieste di caricamento debbano essere necessariamente asincrone.
Mash-up, applicazioni che usano contenuti di più sorgenti per crearne uno completamente nuovo.
16
CAPITOLO 2
LA LOGICA DEL SEMANTIC WEB
17
CAPITOLO 2 – LA LOGICA DEL SEMANTIC WEB
2.1 INTRODUZIONE AL SEMANTIC WEB
Ad oggi il Web è il maggior contenitore di conoscenza ed è quello più frequentemente
utilizzato da una larga varietà di persone per utilizzi e finalità diverse. Ma nel Web spesso
l’informazione ricercata dall’utente è dispersa tra più fonti informative, e sarebbe di grande
ausilio la possibilità che le macchine potessero autonomamente estrarre e dedurre
conoscenza. Le tecnologie del Semantic Web mirano appunto a questo obiettivo, infatti il
Semantic Web rappresenta la volontà di estendere e dare valore aggiunto al Web di oggi
attraverso la creazione di dati elaborabili e comprensibili direttamente dalle macchine
attraverso l’uso della logica e dei linguaggi di rappresentazione della conoscenza.
Oggi la maggior parte dei contenuti del Web è pensata per essere letta e fruita dagli esseri
umani, mentre moltissime attività e compiti potrebbero essere automatizzati se anche i
computer potessero accedervi e manipolare tali contenuti in maniera significativa. Il
Semantic Web ha l’obiettivo di dare una struttura ai contenuti delle pagine web creando le
condizioni per cui agenti e programmi software portino a termine sofisticati compiti per gli
utenti.
Il Gartner Group24 ha previsto un orizzonte per il Semantic Web di 20-25 anni il che proietta
nel 2027 la sua maturità, tuttavia si tratta di una proiezione pessimistica poiché di sicuro la
curva di adozione del Semantic Web da parte dell’intero sistema sarà meno lunga e meno
lenta del previsto.
2.2 COS’È IL SEMANTIC WEB
Ai suoi esordi Internet era costituito unicamente di testi e di indici ipertestuali e
caratterizzato dal fatto che la creazione della conoscenza era una prerogativa unicamente
dei produttori. Col passare del tempo le strutture dei siti si sono evolute, anche se per
l’utente questo è rimasto un aspetto quasi del tutto nascosto, ed hanno raggiunto livelli di
complessità sempre maggiore, tale da permettere a tutti gli utenti di poter contribuire alla
creazione della conoscenza on-line. Allo scopo di rendere reperibili per l’utente le
informazioni desiderate sono stati sviluppati i motori di ricerca, ovvero sistemi automatici
che, data una determinata chiave di ricerca, analizzano insiemi di dati e restituiscono un
indice dei contenuti disponibili classificandoli in base al grado di rilevanza.
In un motore di ricerca l’utente inserisce una o più parole che intende cercare e avvia la
ricerca. Il risultato è un insieme di collegamenti a siti internet che presentano nei loro
contenuti la o le parole cercate. L'efficacia dell'operazione dipende da due fattori, primo
dagli algoritmi che il motore di ricerca utilizza per estrarre i contenuti e secondo da come
sono stati indicizzati i contenuti del sito.
24
Gartner Group è una società di ricerca e consulenza con sede principale a Stamford, nel Connecticut, con
oltre 10.000 clienti nel mondo. L'attività principale consiste nel supportare le decisioni di investimento dei
suoi clienti attraverso ricerca, consulenza, benchmarking, eventi e notizie.
18
CAPITOLO 2 – LA LOGICA DEL SEMANTIC WEB
Nel caso dei motore di ricerca del Web 2.0 qualsiasi query25 attivata è sempre soggetta al
rischio dell’ambiguità. Per esempio cercando la parola “albero” si possono ottenere risultati
appartenenti a più svariati ambiti di interesse, quali quelli dell'informatica, della botanica,
della nautica, etc. L’ambiguità a cui è soggetta una query è dovuta al fatto che Internet è un
insieme di testi collegati tra loro ma con collegamenti deboli, nel senso che sono troppo
generici e vaghi. I collegamenti deboli non sono quelli sintattici anzi questi sono piuttosto
solidi, un link infatti localizza una risorsa attraverso un URL univoco. I collegamenti deboli
sono invece quelli legati alla capacità di descrivere il significato di un collegamento. Oltre a
“portare” in un determinato “luogo” un collegamento dovrebbe descrivere il “luogo verso
cui porta”. Il termine appropriato per parlare di questa funzione è appunto capacità
semantica. Quando si parla di Semantic Web si intende proporre un Web che possieda delle
strutture di collegamenti più espressive di quelle attuali.
Il termine 'Semantic Web' è stato proposto per la prima volta nel 2001 da Tim Berners Lee.
Da allora il termine è stato associato all'idea di un Web nel quale agiscono agenti
intelligenti: applicazioni in grado di comprendere il significato dei testi presenti sulla rete e
perciò in grado di guidare l'utente direttamente verso l'informazione ricercata, oppure di
sostituirsi a lui nello svolgimento di alcune operazioni. Un agente intelligente dovrebbe
essere una applicazione in grado di svolgere operazioni come la prenotazione di un aereo
per Parigi con arrivo in centro città prima delle 13.00. Il tutto analizzando gli arrivi ai diversi
aeroporti di Parigi (Paris, Charles de Gaule, Orly) e deducendo, senza che sia specificato nella
query, che un arrivo per le 13.00 in centro implichi un arrivo in aeroporto diverso.
Questa proposta ha affascinato molto la comunità informatica. Il W3C ha attivato
immediatamente un gruppo di lavoro e le università hanno aperto numerosi programmi di
ricerca legati a questi temi. Si sono imposti subito degli standard, il più famoso dei quali è
certamente RDF(S), un linguaggio in sintassi XML per definire e esprimere ontologie26.
In definitiva, la visione del Semantic Web è un’estensione dei principi del Web dai documenti
ai dati: le persone rendono i loro dati disponibili agli altri e aggiungono collegamenti ad altri
dati per permetterne il ritrovamento. A questo proposito, è utile illustrare la differenza tra
information retrieval e data retrieval. Mentre il primo ha come scopo il recupero dei
documenti rilevanti rispetto ad una richiesta, il secondo si prefigge di trovare la corretta
risposta a una domanda. In questo senso, i dati hanno un valore e una rilevanza molto
maggiore rispetto ai documenti e la possibilità di fare data retrieval incrementerebbe
notevolmente il potenziale del Web. E proprio questo è l’obiettivo del Semantic Web:
passare da un Web di documenti, fatto dalle persone per le persone, ad un Web dei dati cui
possono accedere anche le macchine.
25
26
Il termine query in informatica viene utilizzato per indicare l’interrogazione ad un database in modo da
ottenere come risultato dei dati contenuti in uno o più database.
L’ontologia descrive il modo in cui diversi schemi vengono combinati in una struttura dati contenente tutte
le entità rilevanti e le loro relazioni in un dominio. I programmi informatici usano l’ontologia per una varietà
di scopi, tra cui il ragionamento induttivo, la classificazione e svariate tecniche per la risoluzione di
problemi.
19
CAPITOLO 2 – LA LOGICA DEL SEMANTIC WEB
Figura 2 - Il Semantic Web.
La figura mostra come nel Web 1.0 fossero solo i produttori artefici della creazione della
conoscenza on-line, nel Web 2.0 invece il consumatore assume lo stesso ruolo del
produttore, quindi nuovo generatore di conoscenza, infine nel Semantic Web gli agenti
intelligenti, attingendo alle diverse conoscenze create nel Web, ne generano di nuove.
2.2.1 Approfondimento sul Semantic Web secondo Tim Berners-Lee
In un famosissimo articolo apparso sulla rivista Scientific American nel maggio del 2001, Tim
Berners-Lee, insieme a James Hendler e Ora Lassila, danno una definizione del Semantic
Web:
“The Semantic Web is not a separate Web but an extension of the current one, in which
information is given well-defined meaning, better enabling computers and people to work in
cooperation.”
Tre sono i punti chiave di questa definizione: il Semantic Web è un’estensione del Web
attuale, quindi può essere concretizzato partendo da quello che già esiste e che tutti
conosciamo e utilizziamo quotidianamente; lo scopo del Semantic Web è la cooperazione tra
computer e persone, in modo che le macchine possano essere maggiormente di supporto
agli esseri umani nell’esecuzione e nell’automazione di compiti; la realizzazione del Semantic
Web è possibile solo dando un significato ben definito all’informazione, in modo che le
macchine possano raggiungere quel grado di “comprensione” che abilita funzionalità
avanzate di ragionamento e capacità di rispondere a domande complesse.
20
CAPITOLO 2 – LA LOGICA DEL SEMANTIC WEB
Figura 3 - L'uso delle ontologie nello scenario dell'articolo del 2001.
Per meglio illustrare cos’è il Semantic Web, l’articolo illustra uno scenario realistico, come
mostra bene la figura, in cui Pete e Lucy, due figli premurosi di una donna che ha bisogno di
fisioterapia, si affidano ai loro agenti software intelligenti per trovare un opportuno
terapista, adatto a effettuare il trattamento prescritto dal medico alla madre. Per soddisfare
i loro bisogni questo terapista deve essere conosciuto per professionalità e affidabilità; il suo
ambulatorio non deve essere troppo lontano dalla loro abitazione; le sue prestazioni devono
rientrare tra quelle coperte dall’assicurazione medica. Gli agenti software che usano le
tecnologie del Semantic Web sono in grado non solo di portare a termine il compito di
trovare un fisioterapista adatto, ma anche di offrire la possibilità di raffinare la ricerca per
avere più alternative, di confrontare l’appuntamento dello specialista con gli appuntamenti
nell’agenda di Pete (che deve accompagnare la madre alle sedute) e anche di spiegare
all’utente il perché della selezione di un certo risultato.
Per raggiungere lo stesso risultato oggi, Pete e Lucy dovrebbero compiere manualmente un
certo numero di ricerche, con il rischio di non riuscire a trovare tutte le possibili e migliori
alternative e con la certezza di dover impiegare molto più tempo a districarsi tra sistemi e
linguaggi diversi. Il Web odierno, infatti, è una fenomenale e smisurata fonte di informazioni
la cui cernita, manuale o mediata dai motori di ricerca, implica uno sforzo da parte
dell’utente tale da scoraggiare anche il solo tentativo. Lo scenario che può sembrare molto
21
CAPITOLO 2 – LA LOGICA DEL SEMANTIC WEB
futuristico è un’efficace rappresentazione delle potenzialità del Semantic Web, ovvero di
quello che si può ottenere aggiungendo logica al Web.
2.3 LA PILA DEL SEMANTIC WEB
Il Semantic Web è un’estensione del Web attuale, quindi può essere concretizzato partendo
da quello che già esiste e che tutti conosciamo ed utilizziamo quotidianamente; lo scopo del
Semantic Web è la cooperazione tra computer e persone in modo che le macchine possano
essere maggiormente di supporto agli esseri umani nell’esecuzione ed automazione di
compiti; la sua realizzazione è infatti possibile solo dando un significato ben definito
all’informazione in modo tale che le macchine possano raggiungere quel grado di
“comprensione” che abilita funzionalità avanzate di ragionamento e capacità di rispondere a
domande complesse.
Per meglio illustrare cosa serve per la realizzazione del Semantic Web e per renderlo
sistematico, Tim Berners-Lee ed i ricercatori del W3C hanno definito la cosiddetta pila del
Semantic Web. Come spesso accade in informatica è sempre bene definire una pila di
protocolli che stabilisca i diversi livelli necessari a completare un’implementazione o un
sistema di comunicazione in modo che il problema sia “modularizzato” a livelli, a ciascuno
dei quali venga associato uno standard opportuno.
Figura 4 - Pila del Semantic Web.
Tale standardizzazione col passare degli anni ha subito delle revisioni dovendo aggiornarsi
rispetto alla crescente standardizzazione dei linguaggi di programmazione e delle contestuali
innovazioni tecnologiche.
L’immagine riportata rappresenta la pila che ha riscosso i maggiori favori dalla comunità del
Semantic Web negli ultimi tempi.
22
CAPITOLO 2 – LA LOGICA DEL SEMANTIC WEB
Partendo dall’alto si ha un livello che non è parte integrante della pila, si tratta dello strato
delle applicazioni e delle interfacce utenti (1); queste possono essere costruite sulla base
dell’insieme delle tecnologie sottostanti. Il livello più alto di tali tecnologie è rappresentato
da Trust (2) che ha il compito di distinguere i dati affidabili da quelli non affidabili dato il
grande quantitativo di informazioni presenti in rete. L’affidabilità dei dati può essere
“esplicita” oppure “inferita”27 a partire da dati esistenti da parte di agenti intelligenti che si
basano sulla tecnologia del Semantic Web. Nel caso di “affidabilità derivata” è necessario
poter risalire ai meccanismi che hanno portato a stabilirne la bontà. A tale necessità
risponde il livello di Proof (3), vale a dire “la prova” che dimostra all’utente quale è stata la
logica sottostante il ragionamento e le relative conclusioni. Questo genere di prova è
raggiungibile solo sulla base solida della logica e quindi il livello sottostante al Proof è
rappresentato dalla cosiddetta logica unificante (4). Questa deve rispondere a due necessità:
abilitare la prova e permettere di definire e descrivere l’informazione stessa. Quali siano le
caratteristiche di questo linguaggio logico unificante non è stato ancora stabilito con
precisione perché i processi sono in continua e costante evoluzione: le logiche infatti
possono essere al contempo causali, temporali, descrittive e probabilistiche. Ciononostante
questa “logica” costituisce il cuore pulsante della pila.
La parte inferiore della pila è costituita da tutte le tecnologie atte ad esprimere
l’informazione ed a formalizzare la conoscenza su cui si intende abilitare il ragionamento
automatico. Partendo dal basso troviamo tecnologie e protocolli che sono il fondamento del
Web:
o Le URI (5) sono il meccanismo usato per identificare le risorse. I modelli per lo scambio
di dati e i linguaggi ontologici28 usano proprio le URI per identificare termini e concetti
rilevanti per codificare le informazioni. Queste infatti assicurano che ciascun concetto
non sia semplicemente una parola o una stringa in un documento ma sia collegato a
un’unica definizione che chiunque possa trovare sul Web.
o Unicode (6) è invece lo standard che permette alle macchine una rappresentazione
consistente ed una manipolazione omogenea dei caratteri testuali, si tratta di un
sistema di codifica che rende i caratteri indipendenti dalla piattaforma software, dalla
applicazione utilizzata e dalla lingua.
o XML (7) è un linguaggio di marcatura che permette di creare, definire e rendere
utilizzabili i propri Tag, rappresenta una sorta di meta-linguaggio. XML è il mezzo
migliore per l’interoperabilità sintattica ovvero la capacità dei sistemi di riuscire a
27
28
“Ciò che tuttavia pare caratterizzare questa prima categoria di segni è il rapporto dello “stare per” che si
regge su un meccanismo inferenziale: se rosso di sera, allora bel tempo si spera. È il meccanismo
dell’implicazione filoniana: pq.” tratto da Umberto Eco “Segno ed Inferenza” 1984, Einaudi editore, pg.4.
I linguaggi ontologici definiscono formalmente le relazioni tra termini, un’ontologia è il mezzo per descrivere
e definire la rappresentazione computazionale di quella parte del mondo che interessa modellare in un
programma o in una applicazione.
23
CAPITOLO 2 – LA LOGICA DEL SEMANTIC WEB
interpretare la sintassi e la struttura dei documenti scambiati ed in parte
l’interoperabilità strutturale, ovvero la possibilità di interpretare le strutture di
documenti di schemi logici differenti. XML non è sufficiente però a soddisfare
l’interoperabilità semantica ovvero quella capacità di interscambio di dati tra sistemi
basata sul significato stesso dell’informazione scambiata e non sul suo formato.
o RDF (8) rappresenta la possibilità di soddisfare anche l’interoperabilità semantica. In
questo modello relazionale di dati, il significato dell’informazione è codificato in insieme
di “triple” che corrispondono a frasi elementari costituite da tre elementi: soggetto,
predicato ed oggetto; identificabili attraverso URI.
o I linguaggi ontologici ad oggi più largamente adottati dalle comunità del Semantic Web
sono RDF Schema (9), che aggiunge un primo livello di logica al di sopra di RDF, ed OWL
(10) che tra le altre cose fornisce la possibilità di asserire relazioni di equivalenza tra le
risorse.
o Accanto ai linguaggi ontologici all’interno della pila, troviamo le regole che
rappresentano un meccanismo atto ad aumentare l’espressività e le funzionalità di
ragionamento automatico delle ontologie stesse, Rules: RIF (11).
o SPARQL (12) è un linguaggio di interrogazione su dati RDF ed allo stesso tempo un
protocollo che permette di effettuare tali richieste in ambiente Web.
o CRYPTO (13) indica la crittografia e firma digitale, rappresenta un tassello importante
per il raggiungimento di buoni livelli di affidabilità nel mondo del Web.
2.4 CHE COS’È UN’ONTOLOGIA
Secondo Rudi Studer29, Richard Benjamins e Dieter Fensel30 “un’ontologia è una
specificazione formale ed esplicita di una concettualizzazione condivisa”31.
Quindi ogni sistema di rappresentazione o gestione della conoscenza avrà sempre una
qualche concettualizzazione esplicita o implicita del suo dominio. Un’ontologia deve
riflettere la conoscenza di un gruppo, non può fare riferimento al pensiero di un singolo;
inoltre deve essere anche condivisibile cioè pubblica ed utilizzabile da parte della comunità.
Una concettualizzazione viene espressa attraverso un’indicazione dei concetti e delle
relazioni che tra essi sussistono, per esplicita si intende che tali concetti e tali condizioni
29
30
31
Rudi Studer, (nato nel 1951 in Stuttgart) è un informatico tedesco e professore all’Università di Karlsruhe,
Germania.
Dieter Fensel, (nato il 10 Ottobre 1960 in Nuremberg) è un ricercatore nel campo del linguaggio formale e
del semantic web.
Rudi Studer, Richard Benjamins e Dieter Fensel “Data & Knowledge Engineering” Volume 25, numero 1-2
(March 1998) - Pagine: 161 – 197.
24
CAPITOLO 2 – LA LOGICA DEL SEMANTIC WEB
debbano essere esplicitamente definiti, spiegati e chiariti in modo da non lasciare ambiguità.
La specificazione infine, deve essere anche formale ovvero espressa in un formato
elaborabile dai computer. Attraverso l’uso di ontologie le applicazioni riescono a mettere in
relazione l’informazione contenuta in una pagina con altre fonti di conoscenza, associandole
direttamente ed indirettamente attraverso l’utilizzo di dinamiche inferenziali.
2.5 LE METROPOLITANE DEL SEMANTIC WEB
La visione di Tim Berners-Lee sul Semantic Web è efficacemente rappresentata da una vivida
metafora presentata in figura.
Figura 5 - La metafora delle metropolitane.
Il Semantic Web è come una rete di metropolitane: le linee sono costituite da diverse
ontologie che descrivono e specificano diverse parti della realtà (nella figura: il tempo, i
luoghi, le persone e così via), mentre le diverse stazioni corrispondono alle applicazioni che si
possono creare sulla base di tali ontologie. Alcune di queste fermate della metropolitana
coinvolgono solo una linea, ovvero hanno bisogno di una sola ontologia; altre stazioni
rappresentano invece punti di interscambio delle varie linee, ovvero coinvolgono più
ontologie nel loro funzionamento. In questa visione i dati sul Web, o meglio i metadati
descritti rispetto a tali ontologie, sono i “convogli” della metropolitana che trasportano
l’informazione (i passeggeri) tra un’applicazione (una stazione) e l’altra. Da questa immagine
metaforica capiamo chiaramente la grande importanza che riveste la condivisione delle
ontologie nel Semantic Web, le ontologie infatti veicolano proprio il significato e la
conoscenza contenuti nei dati sul Web.
25
CAPITOLO 3
RDF E SPARQL
26
CAPITOLO 3 – RDF E SPARQL
3.1 IL LINGUAGGIO RDF
Secondo la proposta del W3C il set di linguaggi su cui costruire il web semantico è RDF
(Resource Description Framework), un set di linguaggi dichiarativi basati su sintassi XML.
Il Semantic Web nasce come tentativo di controllare le informazioni ancorandole ad uno
schema. Questa idea funziona se si dividono bene i compiti, da una parte si hanno i dati, da
un’altra uno schema che definisce come i dati si strutturano e relazionano fra loro.
I settori nei quali RDF può essere utilizzato e portare vantaggi sono i più disparati:
o descrizione del contenuto di un sito Web, di una pagina, di una biblioteca digitale;
o implementazione di intelligent software agent, per lo scambio di conoscenza e un
utilizzo migliore delle risorse Web;
o classificazione del contenuto, per applicare criteri di selezione;
o descrizione di un insieme di pagine, che rappresentano un singolo documento logico;
o stabilire i criteri di proprietà intellettuale delle singole pagine;
o esprimere criteri di privacy preference degli utenti e le privacy policies di un sito Web;
o con il meccanismo della digital signature32, contribuire alla creazione del Web of
Trust33, per le applicazioni nel commercio elettronico, la cooperazione;
o e molti altri ancora.
RDF è costituito da due componenti:
o RDF Model and Syntax: definisce il data model RDF e la sua codifica XML;
o RDF Schema: permette di definire specifici vocabolari per i metadati.
I metadati sono “dati che accompagnano i dati” ovvero “dati sui dati”. Il mondo a cui fare
riferimento per comprendere l’importanza dei metadati è quello dei sistemi per
l’organizzazione della conoscenza ( Knowledge Organization System o KOS ), che trovano
applicazioni in molti ambiti, primo fra tutti l’ambito delle catalogazioni bibliotecarie. Il
mondo dell’informazione on-line ha sviluppato sistemi di catalogazione e categorizzazione,
nonché sistemi di strutturazione e standardizzazione delle descrizione bibliografiche. Sono
così nate iniziative volte a proporre diversi sistemi (o KOS) per la catalogazione bibliografica;
il più rilevante è il sistema ideato dalla Dubline Core Initiative34. Tale sistema prevede la
definizione di un insieme di elementi che rappresentano i metadati necessari per descrivere
opportunamente risorse in rete. L’insieme base degli elementi essenziali ai fini della
descrizione di materiale digitale su cui è stato raggiunto il consenso era costituito
32
33
34
Digital signature, “firma digitale” in italiano, è basata sulla tecnologia della crittografia a chiave pubblica o
PKI. Dal punto di vista informatico rappresenta un sistema di autenticazione di documenti digitali tale da
garantire non ripudio. La nozione di firma digitale ha in Italia anche un'accezione giuridica, in quanto
individua quel tipo di firma che può essere apposta ai documenti informatici alla stessa stregua di come la
firma autografa viene apposta ai documenti tradizionali.
Web of Trust, “Web di fiducia” in italiano, è un concetto espresso da programmi che permettono di usare
autenticazione e privacy crittografica, per stabilire l’autenticità dell’associazione chiave-utente.
Il Dublin Core Initiative è un sistema di metadati costituito da un nucleo di elementi essenziali ai fini della
descrizione di qualsiasi materiale digitale accessibile via rete informatica.
27
CAPITOLO 3 – RDF E SPARQL
inizialmente da quindici elementi, successivamente si è esteso, esempio di qualche
elemento: Title, Creator, Subject, Description, Publisher, Contributor, Date, Type, Format.
Ad ogni elemento è stato attribuito un identificativo unico sotto forma di URI 35, ad esempio
per denotare l’autore di una risorsa si utilizza l’elemento Creator, indicato dall’URI
http://purl.org/dc/elements/1.1/creator/.
3.2 RDF DATA MODEL
Per capire pienamente il modello RDF, prima di tutto pensiamo alla struttura delle risorse sul
Web: le pagine Web sono identificate dal loro indirizzo, l’URL36, e sono collegate tra loro
tramite i collegamenti ipertestuali (i link, in HTML indicati dall’attributo href con l’indicazione
dell’URL della risorsa collegata).
RDF ha l’obiettivo di definire un sistema per la descrizione delle risorse; come avviene per le
pagine Web: RDF prevede che ogni risorsa possa essere identificata univocamente e che a
ogni risorsa possano essere associati dei metadati descrittivi. RDF è quindi un linguaggio per
rappresentare e modellare le risorse in rete.
La struttura base di RDF è l’enunciato (in inglese statement), che esprime la struttura base
della descrizione di una risorsa. L’enunciato è formato da tre componenti:
o il soggetto, ovvero l’identificativo della risorsa;
o il predicato, che indica la proprietà o l’attributo del soggetto che si vuole descrivere;
o l’oggetto, ovvero il “valore” che il predicato assume in riferimento al soggetto.
Figura 6 - Rappresentazione grafica di un enunciato.
Per la sua struttura soggetto-predicato-oggetto l’enunciato viene anche semplicemente
chiamato tripla. Spesso RDF viene rappresentato mettendo in risalto il modello a grafo
orientato ed etichettato su cui si basa, in cui soggetto e oggetto sono i nodi e il predicato è
l’arco orientato.
35
36
URI (Uniform Resource Identifier), è il generico insieme di tutti i nomi/indirizzi che costituiscono le brevi
sequenze di caratteri che fanno riferimento ad una risorsa.
URL (Uniform Resource Locator), è una sequenza di caratteri che identifica univocamente l'indirizzo di una
risorsa in Internet, come un documento o un'immagine.
28
CAPITOLO 3 – RDF E SPARQL
Per poter rendere le descrizioni delle risorse elaborabili da parte delle macchine, le tre
componenti dell’enunciato non possono essere delle semplici stringhe, pertanto il modello
RDF prevede che queste vengano identificate univocamente attraverso le URI.
Ad esempio, l’enunciato “La pagina Web http://www.example.org/home ha per autore il
signor Rossi” nella rappresentazione RDF sarà così suddiviso:
o il soggetto: “La pagina Web”, identificabile univocamente dalla sua URL
http://www.example.org/home;
o il predicato: “ha per autore”, per la quale si può usare la definizione di Creator del
Dublin Core;
o l’oggetto: l’autore della pagina, “il signor Rossi”.
In questo caso soggetto e predicato hanno già un URI, mentre per identificare l’oggetto ci
sono due soluzioni:
o se l’oggetto dell’enunciato è a sua volta una risorsa, l’oggetto deve essere
rappresentato attraverso un’URI. Per esempio si può identificare “il signor Rossi”
attraverso l’URL http://staff.example.org/Rossi, così che possa poi essere utilizzata
come soggetto di altri enunciati che descrivono la sua persona;
o altrimenti se l’oggetto è solo un valore, ad esempio una stringa, un numero o una
data, si dice che l’oggetto della tripla è un letterale e dunque non sarà associato ad
alcuna URI.
Figura 7 - Fusione di enunciati RDF.
La descrizione RDF di una risorsa è quindi costituita dall’insieme degli enunciati che hanno
per soggetto tale risorsa. Queste triple sono logicamente legate dall’univocità degli
29
CAPITOLO 3 – RDF E SPARQL
identificativi; ma nulla vieta che i diversi enunciati siano fisicamente distribuiti su più
sorgenti dati (ad esempio memorizzati su file distinti). Quando le informazioni di una risorsa
provengono da diverse fonti, i rispettivi enunciati possono facilmente essere raccolti
insieme, indipendentemente dalla loro origine e locazione. Dalla figura è possibile capire
come due enunciati, riguardanti la stessa risorsa http://www.example.org/home, possano
essere uniti e come questa unione non crei ridondanze.
Il modello a grafo alla base di RDF risulta essere molto flessibile ed efficiente quando si tratta
di collezionare informazioni, di integrare dati che provengono da diverse fonti, di prevedere
diversi punti di vista sulla descrizione di una determinata risorsa. Gli enunciati (le triple
soggetto- predicato-oggetto) si dimostrano così un mezzo potente e allo stesso tempo
elementare.
3.3 LA SINTASSI N3
La rappresentazione più semplice degli enunciati è quella di scriverli per intero, ogni tripla
rappresentata come: URI del soggetto, spazio, URI del predicato, spazio, URI dell’oggetto o
rispettivo letterale, punto. Questa rappresentazione si chiama Notation3, detta anche N3.
La N3 introduce abbreviazioni e scorciatoie per rendere l’RDF più leggibile. In N3, come in
XML, è prima di tutto possibile definire i namespace utilizzati dalle URI dell’RDF che segue e
quindi definire dei prefissi che saranno utilizzati per abbreviare le URI. La sintassi di
dichiarazione dei namespace è la seguente:
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix dc: <http://purl.org/dc/elements/1.1/>.
@prefix ex: <http://www.example.org/>.
Dopo aver definito i prefissi è possibile sostituire, nei successivi enunciati, le URI con il
rispettivo QName (rdf: o dc: o ex:). E’ anche possibile definire il namespace di base (senza
bisogno di prefisso), che quindi è sottinteso ogni volta che una risorsa è definita senza usare
alcun prefisso.
@prefix : <http://www.example.org/>.
Se volessimo rappresentare l’enunciato “La pagina Web http://www.example.org/home ha
per autore il signor Rossi” in N3, avremo:
ex:home
dc:creator
“Rossi”.
Quando si vuole tipizzare una risorsa, in RDF lo si può fare usando il predicato rdf:type. In N3
il predicato rdf:type può essere abbreviato con a. Le due triple che seguono sono
equivalenti:
ex:staff
ex:staff
rdf:type
a
ex:Webmaster.
ex:Webmaster.
30
CAPITOLO 3 – RDF E SPARQL
Quando si vuole “tipizzare” un letterale, attribuendogli un significato particolare, N3
prevede l’inserimento dell’indicazione del tipo XSD(XML Schema Definition), attraverso la
notazione grafica del doppio accento circonflesso (^^) seguito dal QName dell’XSD datatype
a cui fa riferimento; infine, se si vuole specificare la lingua in cui è espressa una stringa,
possiamo aggiungere al letterale l’indicazione della lingua attraverso il carattere ‘@’ seguito
dal codice a due lettere della lingua.
ex:home dc:date “2009-10-07”^^xsd:date.
ex:home dc:title “Benvenuti nella homepage”@it.
3.4 LA SINTASSI RDF/XML
La sintassi XML di RDF ha lo scopo di abilitare un meccanismo di interoperabilità per coloro
che vogliono esprimere i loro dati in RDF e, allo stesso tempo, usufruire degli strumenti e dei
parser creati e ampiamente diffusi per l’elaborazione dei dati in XML. Per questo motivo
l’RDF/XML è la sintassi ufficiale di RDF.
Un documento RDF/XML inizia con un elemento radice che contiene la dichiarazione dei
namespace; il nodo radice è sempre indicato come <rdf:RDF> e i namespace sono definiti
esattamente come in XML.
<?xml version = ”1.0”?>
<rdf:RDF
xmlns:rdf = ”http://www.w3.org/1999/02/22-rdf-syntax-ns#”
xmlns:dc = “http://purl.org/dc/elements/1.1/”
xmlns:ex = “http://www.example.org/”
xmlns:staff = “http://staff.example.org/” >
<rdf:Description rdf:about = “http://www.example.org/home”>
<dc:creator>
<rdf:Description rdf:about = “http://staff.example.org/Rossi”/>
</dc:creator>
<dc:title>
Benvenuti nella homepage
</dc:title>
</rdf:Description>
</rdf:RDF>
La descrizione è composta da due enunciati, uno che lega la pagina Web al suo autore e
l’altro che la lega al letterale che indica il suo titolo. Per indicare la risorsa
http://www.example.org/home, si usa l’elemento rdf:Description con l’attributo rdf:about;
se l’oggetto del predicato è una risorsa, allora il nodo conterrà a sua volta un elemento
rdf:Description con l’attributo rdf:about che contiene l’URI della risorsa; se invece l’oggetto è
un letterale, allora il nodo del predicato conterrà il valore semplicemente come testo. Se il
letterale dovesse essere tipizzato, allora il nodo predicato conterrà l’attributo rdf:datatype
con il riferimento all’XSD datatype.
31
CAPITOLO 3 – RDF E SPARQL
Il W3C ha anche definito una sintassi “abbreviata”. Ad esempio, quando l’enunciato ha una
risorsa per oggetto, anziché definire un nodo rdf:Description annidato è possibile inserire
l’URI dell’oggetto come valore di un attributo rdf:resource del nodo che indica il predicato; il
frammento:
<dc:creator>
<rdf:Description rdf:about = “http://staff.example.org/Rossi”/>
</dc:creator>
Diventa più semplicemente:
<dc:creator rdf:resource = “http://staff.example.org/Rossi” />
Un’altra possibile contrazione della sintassi RDF/XML è relativa agli enunciati che hanno per
predicato la particolare proprietà rdf:type. Quando si vuole descrivere una risorsa dicendo a
quale categoria o famiglia appartiene, si può indicare il tipo proprio con rdf:type.
<rdf:Description rdf:about = “http://staff.example.org/Rossi”>
<rdf:type rdf:about = “http://www.example.org/Staff”/>
</rdf:Description>
Questa espressione può essere abbreviata “tipizzando” il nodo della risorsa:
<ex:Staff rdf:about = “http://staff.example.org/Rossi” />
La sintassi RDF/XML, pur avendo regole precise per l’ordine dei tag all’interno dello stesso
enunciato, non pone alcuna restrizione rispetto all’ordine tra le diverse triple, anzi viola
esplicitamente i vincoli posizionali di XML.
3.5 RDF SCHEMA
Il data model RDF permette di definire un modello semplice per descrivere le relazioni tra le
risorse, in termini di proprietà identificate da un nome e relativi valori. Tuttavia, RDF data
model non fornisce nessun meccanismo per dichiarare queste proprietà, né per definire le
relazioni tra queste proprietà ed altre risorse. Per questo è necessario utilizzare un
linguaggio di schema o ontologico come RDF Schema. Quest’ultimo rappresenta
un’estensione di RDF che comprende i costrutti per descrivere i vocabolari: meccanismi per
descrivere gruppi di risorse collegate e le proprietà che li legano tra loro.
RDF Schema ci offre la possibilità di descrivere i tipi di risorse definendone dei
raggruppamenti; in accordo con quanto accade nel mondo dell’object-orientation, la
tipizzazione si chiama classe e in RDFS è rappresentata dalla risorsa rdfs:Class37. Le risorse
che hanno per tipo una specifica classe si dicono istanze di quella classe. La descrizione delle
classi ci permette inoltre di descrivere la relazione esistente tra diverse classi sotto forma di
37
Il namespase di RDFS è http://www.w3.org/2000/01/rdf-schema#, abbreviato con rdfs.
32
CAPITOLO 3 – RDF E SPARQL
ereditarietà: il linguaggio offre anche la proprietà rdfs:subClassOf, che lega una classe ad
un’altra che rappresenta rispetto a questa un sotto-insieme.
RDFS non è solo una convenzione sull’uso di un certo numero di costrutti, ma veicola anche
una parte della “semantica” di tali espressioni. Questa semantica a sua volta può essere
utilizzata per inferire nuova conoscenza a partire da quella data, ad esempio quando si ha
una gerarchia di sotto-classi e un’istanza della classe più specifica di tale gerarchia, si può
automaticamente inferire che tale istanza appartiene anche a tutte le super-classi. Un
esempio è dato dalla figura, che rappresenta i seguenti enunciati:
ex:HistoricalNovel
ex:Fiction
ex:Fantasy
ex:LordOfTheRings
rdfs:subClassOf
rdfs:subClassOf
rdfs:subClassOf
rdf:type
ex:Book.
ex:Book.
ex:Fiction.
ex:Fantasy .
Figura 8 - Ereditarietà con rdfs:subClassOf.
In virtù della transitività di rdfs:subClassOf, si possono inferire i seguenti enunciati:
ex:Fantasy
ex:LordOfTheRings
rdfs:subClassOf
rdf:type
ex:Book.
ex:Fiction.
Infatti dato che i fantasy sono dei romanzi e che i romanzi sono dei libri, ne segue che anche
i fantasy sono dei libri (primo enunciato) e dato che “Il signore degli Anelli” è un fantasy e
che i fantasy sono un tipo di romanzo, ne deriva che “Il signore degli Anelli” è un romanzo
(secondo enunciato).
RDFS ci permette inoltre di definire per tutte le proprietà RDF il dominio e il codominio
rispettivamente con rdfs:domain e rdfs:range. Quando definiamo una proprietà si può
scrivere a quale rdfs:domain si può applicare e dichiarare qual è il suo rdfs:range, ovvero di
quale tipo devono essere i valori assunti da quella proprietà, come ad esempio:
33
CAPITOLO 3 – RDF E SPARQL
ex:hasWriter
ex:hasWriter
rdfs:domain
rdfs:range
ex:Book.
ex:Writer.
Questo significa che ogni qualvolta si usa la proprietà ex:hasWriter in un enunciato, un
sistema “intelligente” che conosce la semantica veicolata da RDFS potrà automaticamente
controllare o inferire che il soggetto di quegli enunciati è un libro e che l’oggetto è uno
scrittore.
Figura 9 - Definizione di domain e range della proprietà hasWriter.
RDFS offre molti costrutti per descrivere con ricchezza le proprietà RDF, ovvero le risorse che
hanno per tipo rdf:Property. Oltre a specificare dominio e codominio, si possono descrivere
gerarchie di proprietà. Per descrivere l’ereditarietà tra le proprietà RDFS ci offre il costrutto
rdfs:subPropertyOf.
Concludendo, RDF Schema permette di definire dei vocabolari, quindi l’insieme delle
proprietà semantiche individuate da una particolare comunità. RDF Schema permette di
definire significato, caratteristiche e relazioni di un insieme di proprietà, compresi eventuali
vincoli sul dominio e sui valori delle singole proprietà. Inoltre, implementando il concetto
(transitivo) di classe e sottoclasse, consente di definire gerarchie di classi, con il conseguente
vantaggio che agenti software intelligenti possono utilizzare queste relazioni per svolgere i
loro compiti.
3.5.1 Esempio di un RDF Schema
Per capire meglio come si struttura un file RDF Schema presento un esempio in cui i
contenuti da rappresentare sono relativi a dei corsi ed a delle lezioni online. Come
dichiarazione iniziale in un file RDF Schema si definiscono dei namespace (delle URI) che
identificano i costrutti RDF, RDFS e l'ontologia. Per il resto lo schema descrive le classi e
proprietà. Esempio del costrutto RDF:
<?xml version='1.0' encoding='ISO-8859-1'?>
<rdf:RDF
xmlns:rdf ="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs ="http://www.w3.org/2000/01/rdf-schema#"
xmlns:a="http://nomesito.it/data/nomeontologia#">
34
CAPITOLO 3 – RDF E SPARQL
<rdfs:Class rdf:ID="Corso">
<rdfs:subClassOf rdf:resource="#Resource"/>
</rdfs:Class>
<rdfs:Class rdf:ID="Argomento">
<rdfs:subClassOf rdf:resource="#Corso"/>
</rdfs:Class>
<rdfs:Class rdf:ID="Specializzazione">
<rdfs:subClassOf rdf:resource="#Resource"/>
</rdfs:Class>
<rdfs:Property rdf:ID="Titolo">
<rdfs:domain rdf:resource="#Corso"/>
<rdfs:range rdf:resource="#Literal"/>
</rdfs:Property>
<rdfs:Property rdf:ID="Livello_di_Specializzazione">
<rdfs:domain rdf:resource="#Corso"/>
<rdfs:range rdf:resource="#Specializzazione"/>
</rdfs:Property>
<rdfs:Property rdf:ID="Utenti">
<rdfs:domain rdf:resource="#Specializzazione"/>
<rdfs:range rdf:resource="#Utenti"/>
</rdfs:Property>
<rdfs:Property rdf:ID="Preparazione_Utenti">
<rdfs:domain rdf:resource="#Specializzazione"/>
<rdfs:range rdf:resource="#Literal"/>
</rdfs:Property>
</rdf:RDF>
Nell’esempio viene innanzi tutto definita una classe (rdfs:Class) che ha come nome
(rdf:about) la risorsa (rdf:resource=) http://www.nomesito.it/data/nomeontologia#Corso. I
nomi delle risorse si identificano utilizzando URI. La parte dell'URL che precede # indica una
precisa ontologia, indica il nome dello schema al quale è riferito un elemento, la parte
successiva al # indica il nome che si è voluto dare a quell'elemento. La classe Corso è
sottoclasse (rdfs.subClassof) di Resource. Resource rappresenta una risorsa, o una classe
generica. Riferire un elemento a Resource significa dire che quell'elemento è genericamente
una risorsa, significa collegarsi al livello radice del nostro dominio.
Considerando il livello radice come livello 0, la classe Corso appartiene al livello 1 del
dominio. La classe Argomento è a sua volta sottoclasse di Corso. La classe Corso ha una
proprietà, ossia un attributo, chiamato Titolo, di tipo stringa. Questo lo si capisce in quanto
l'elemento Titolo è stato definito come rdf:Property, con dominio (rdfs:domain) la classe
35
CAPITOLO 3 – RDF E SPARQL
Corso e con codominio (rdfs:range), Literal, ossia la risorsa standard che in RDF definisce i
dati di testo, siano essi stringhe o interi.
Una classe può essere definita specificando i suoi attributi. La classe Corso ha un titolo che
deve essere specificato tramite una stringa. La classe Argomento in quanto sottoclasse di
corso eredita la proprietà Titolo. Anche l'argomento pertanto può essere definito da un
titolo.
Sempre nell’esempio la classe Corso ha una proprietà che si chiama
Livello_di_Specializzazione. Questa proprietà ha il compito di tener traccia del livello di
specializzazione col quale è stato preparato un corso. Questa proprietà non è però semplice,
non è definibile semplicemente riempiendo una stringa, ma punta ad un'altra classe.
Nella classe Specializzazione ci sono a loro volta due attributi. Uno indica il tipo di utenti, e
punta ad un classe utenti non descritta nell'esempio, uno indica la preparazione di questi
utenti. In pratica la proprietà Livello_di_Specializzazione, per il fatto di puntare ad un'altra
classe, non è più una semplice proprietà ma diventa una relazione fra classi. SubClassof
possiede un significato molto chiaro e indica una parentela di ereditarietà: “gli attributi del
padre sono trasmessi ai figli”. Le relazioni definite tramite le property non hanno un
significato specifico, se non per il fatto di delimitare le proprietà di una classe attraverso
quelle di un'altra.
Con questo piccolo esempio si possono vedere le possibilità espressive di uno schema
ontologico. Il corso può avere un livello di specializzazione che dipende dal tipo di utenti a
cui si rivolge e dalla preparazione che si presume questi abbiano. Con una situazione di
questo tipo si sta descrivendo una proprietà, Livello_di_Specializzazione, che ha un grado,
con una sorta di restrizione a seconda dell'utente a cui di volta in volta la si attribuisce.
3.6 RDF OLTRE XML
La nascita delle tecnologie XML ha dato un’ulteriore spinta alla “globalizzazione” dello
scambio delle informazioni. Tuttavia, i successi ed i vantaggi portati da XML risultano limitati
quando si vuole andare oltre il semplice accordo strutturale e sintattico per prendere in
considerazione la “semantica”, ovvero il significato veicolato dell’informazione.
Il formato XML modella i dati secondo una struttura ad albero particolarmente adatta a
rappresentare un documento e a veicolare informazioni sotto forma di messaggio. Inoltre,
grazie ai namespace e all’espressività del linguaggio XSD (XML Schema Definition), tale
struttura ben si presta a essere estesa. E’ infatti possibile estendere uno schema
precedentemente definito aggiungendo un elemento, un attributo o una struttura più
complessa in un particolare punto di un documento XML senza impattare sul resto del
documento o su tutti gli altri documenti che utilizzano lo stesso schema. Purtroppo, tale
modello non è sufficientemente espressivo per rappresentare relazioni complesse tra i vari
elementi.
36
CAPITOLO 3 – RDF E SPARQL
Un altro modello per la rappresentazione dei dati è quello relazionale (utilizzato nella
maggioranza dei database); questo modello non soffre dei limiti del modello ad albero, ma
mal si adatta a definire schemi di messaggi flessibili ed estensibili. Infatti, se si volesse
aggiungere un attributo a una particolare tupla (oggetto base del modello relazionale),
sarebbe necessario aggiungere tale attributo in tutte le altre tuple della stessa relazione.
Un modello che racchiude i vantaggi del modello relazionale e del modello ad albero è il
modello a grafo orientato etichettato, il quale permette di definire un insieme di nodi e
collegarli tramite relazioni etichettate ed orientate. L’elemento minimo di tale modello è
rappresentato dalla tripla, che connette due nodi tramite un arco.
Nella figura si vede bene come il modello a grafo risulti essere più espressivo per
rappresentare i dati rispetto agli altri due, per questo risulta più adeguato a rappresentare i
dati sul Web. Lo standard RDF rappresenta i dati secondo il modello dei grafi orientati
etichettati.
Figura 10 - Struttura dei tre modelli di rappresentazione dei dati.
3.7 SPARQL
SPARQL (Simple Protocol And RDF Query Language), è il linguaggio di interrogazione
specifico per il recupero dei dati espressi in RDF dal Web. Accolto con entusiasmo come
l’ultimo tassello per l'edificazione del Semantic Web da W3C, è asceso dal 15 gennaio 2008
al rango di W3C Candidate Recommendation.
SPARQL è formato da:
o un linguaggio di interrogazione (SPARQL Query Language);
o il formato XML per i risultati delle query (SPARQL Query XML Results Format);
o il protocollo di accesso ai dati che definisce l’uso di semplici protocolli HTTP e SOAP
per l’interrogazione remota dei database RDF (SPARQL Protocol).
Lo SPARQL Protocol for RDF permette a un generico client di interrogare uno o più endpoint
SARQL inviando una richiesta espressa nel linguaggio di interrogazione e ricevendo come
37
CAPITOLO 3 – RDF E SPARQL
risposta il risultato in formato XML. Il protocollo SPARQL è basato su WSDL 2.0 (Web Services
Description Language ) e la sua specifica descrive sia l’interfaccia astratta, sia i legami di
questa verso gli standard attualmente utilizzati sul Web. Anche lo SPARQL Query Language è
un linguaggio di interrogazione pensato per il Web. Infatti oltre a prevedere la clausola
SELECT come in SQL38, SPARQL offre anche altri costrutti. E’ possibile infatti che non si
conosca a priori lo schema dei dati, per risolvere questo problema SPARQL ha la clausola
DESCRIBE, che permette di ottenere una descrizione della risorsa cercata; inoltre, qualora vi
siano più sorgenti potenzialmente in possesso di una certa informazione, è possibile che si
presenti la necessità di sapere se un certo enunciato o un certo pattern di dati sia presente
nella sorgente dati: per questo motivo SPARQL propone la clausola ASK.
Esistono notevoli somiglianze tra i Data Model su cui si basano i due linguaggi SPARQL e SQL.
L'RDF Data Model trova corrispondenza con il modello Entity-Relationship39, ad esempio una
rappresentazione dei dati con RDF, come quella che segue, è facilmente “traducibile” come
segmento di riga della tabella di un database relazionale nella forma “chiave - nome colonna
- valore colonna”:
SOGGETTO
PREDICATO
OGGETTO
id1234
anno
1994
Tabella 2 - Rappresentazione a tabella dei dati con RDF.
ID
ANNO
.....
1234
1994
.....
Tabella 3 - Rappresentazione a tabella dei dati con database relazionale.
Se è possibile trasporre un Data Model in un altro, è altresì possibile trasporre l'uno nell'altro
i rispettivi linguaggi di interrogazione, concludendo: gli scopi di SQL e di SPARQL sono
abbastanza diversi tra loro da giustificare la creazione di un linguaggio specifico per
l'interrogazione dell'RDF. Ciò nonostante è possibile tradurre espressioni SPARQL in
espressioni SQL, permettendo così a chi ne fa uso, di immagazzinare i propri dati RDF in
database relazionali e di scrivere le query, a seconda dei casi, in SQL oppure in SPARQL.
3.7.1 Le path expression
SPARQL adotta la sintassi Turtle, un'estensione di N-Triples, che si basa sul concetto di tripla
e sull’unione degli enunciati rappresentata dal grafo di triple. Per esprimere le
interrogazioni, SPARQL introduce il concetto di path expression: l’insieme delle triple
necessarie a rispondere all’interrogazione, in cui sostituiamo uno o più identificativi (sia
38
39
SQL (Structured Query Language), è un Linguaggio di programmazione per database progettato per leggere,
modificare e gestire dati memorizzati in un sistema basato sul modello relazionale, per creare e modificare
schemi di database, per creare e gestire strumenti di controllo ed accesso ai dati.
L’Entity Relationship Model è una rappresentazione astratta e concettuale dei dati, usato spesso per
produrre database relazionali.
38
CAPITOLO 3 – RDF E SPARQL
risorse che letterali) con una variabile, espressa da una parola arbitraria preceduta dal
simbolo “?”.
La path expression rappresenta quindi il pattern dei dati che vogliamo recuperare e i risultati
dell’interrogazione saranno tutte e sole le triple RDF che soddisfano la path expression
sostituendo alle variabili le risorse o i letterali corrispondenti.
Nell’esempio seguente ecco una tripla che costituisce una path expression:
?titolo
cd:autore
?autore.
Al posto del soggetto e dell'oggetto questo “triple pattern” prevede due variabili,
contrassegnate con “?”. Le variabili fungono in un certo senso da incognite
dell'interrogazione, cd:autore funge invece da costante: le triple RDF che trovano riscontro
nel modello associeranno i propri termini alle variabili corrispondenti. Ecco una semplice
query di selezione SPARQL:
PREFIX cd: <http://example.org/cd/>
SELECT ?titolo ?autore ?anno
FROM <http://cd.com/listacd.ttl>
WHERE {
?titolo cd:autore ?autore.
?titolo cd:anno ?anno.
}
Nella prima riga viene dichiarato il namespace utilizzato e a differenza della sintassi N3, la
parola chiave PREFIX è senza il simbolo ‘@’ ed alla fine della dichiarazione non c’è il punto.
Se si volesse dichiarare un namespace di default, si potrebbe usare la parola chiave BASE al
posto di PREFIX.
Nelle righe successive ci sono altre parole chiave del linguaggio SPARQL e l'analogia con il
linguaggio SQL è lampante:
o SELECT definisce le variabili di ricerca da prendere in considerazione nel risultato
(nell'esempio: titolo, autore e anno);
o FROM specifica il set di dati su cui dovrà operare la query (si suppone che le triple
siano immagazzinate presso l'indirizzo fittizio “http://cd.com/listacd.ttl”). È inoltre
possibile ricorrere a clausole FROM NAMED e alla parola chiave GRAPH per
specificare più set di dati;
o la clausola WHERE , infine, definisce il criterio di selezione specificando tra parentesi
graffe uno o più “triple patterns” separati da punto fermo.
La query precedente ha catturato esclusivamente le triple dotate di tutti e tre i termini
richiesti (titolo, autore, anno), escludendo le triple che ne possedevano due soltanto (titolo,
autore). È possibile riformulare la query in modo più elastico, prevedendo la possibilità di
inserimento di triple in cui vi sia l’assenza di alcuni termini come mostra l’esempio seguente:
39
CAPITOLO 3 – RDF E SPARQL
PREFIX cd: <http://example.org/cd/>
SELECT ?titolo ?autore ?anno
FROM <http://cd.com/listacd.ttl>
WHERE {
?titolo cd:autore ?autore.
OPTIONAL { ?titolo cd:anno ?anno }
}
Nell'esempio, il secondo pattern è dichiarato opzionale: l'informazione è aggiunta al risultato
solo se disponibile, altrimenti le variabili compariranno prive di valore. Le risorse sprovviste
della proprietà ‘anno’ sono mostrate ugualmente e le celle dei valori mancanti sono lasciate
vuote. Un altro modo per assicurare una certa elasticità nel reperimento dei dati è il
seguente:
PREFIX cd: <http://example.org/cd/>
SELECT ?titolo ?autore ?anno
FROM <http://cd.com/listacd.ttl>
WHERE {
{ ?titolo cd:autore ?autore. }
UNION { ?titolo cd:anno ?anno }
}
La parola chiave UNION esprime un OR logico: la query non si limita pertanto alle triple che
soddisfano entrambi i triple patterns, ma cattura sia quelle che soddisfano unicamente il
primo, sia quelle che soddisfano unicamente il secondo.
È possibile porre restrizioni sui valori da associare alle variabili. Ad esempio:
PREFIX cd: <http://example.org/cd/>
SELECT ?titolo ?anno
FROM <http://cd.com/listacd.ttl>
WHERE {
?titolo cd:autore ?autore.
FILTER ( ?anno > 2000 )
}
In questo caso, la restrizione è effettuata mediante l'operatore di confronto ‘>’, il filtro
esclude i termini che non soddisfano la condizione definita tra le parentesi tonde. Gli
operatori utilizzabili all’interno di una clausola FILTER sono costituiti da connettivi logici
(AND e OR, rappresentati da ‘&&’ e ‘||’), operazioni di comparazione (come ‘>’, ‘<’, ‘=’, ‘!=’,
ecc.), espressioni regolari ed una serie di operatori unari specifici di SPARQL.
Un esempio di operatore specifico di SPARQL è ‘regex’, corrispettivo di LIKE dell'SQL che
permette di adoperare espressioni regolari per il matching dei letterali. Nel seguente
esempio il filtro seleziona, senza riguardo per maiuscole o minuscole, solo gli autori che
iniziano per “au”:
40
CAPITOLO 3 – RDF E SPARQL
PREFIX cd: <http://example.org/cd/>
SELECT ?titolo ?autore
FROM <http://cd.com/listacd.ttl>
WHERE {
?titolo cd:autore ?autore.
FILTER regex (?autore, “^au”, “i”)
}
Come in SQL, è possibile escludere dal risultato i valori duplicati mediante la parola chiave
DISTINCT, ad esempio:
SELECT
DISTINCT ?titolo
?autore
Altri costrutti supportati da SPARQL per la manipolazione del risultato sono:
ORDER BY DESC ( ?autore )
LIMIT 10
OFFSET 10
o ORDER BY imposta l'ordine dei risultati della query: stando all'esempio, i risultati
verranno presentati in ordine decrescente (DESC) in base alla variabile ?autore.
o LIMIT pone restrizioni al numero dei risultati, limitandoli, secondo quanto indicato
nell'esempio, ai soli primi 10.
o OFFSET permette di “saltare” un certo numero di risultati, escludendo, stando
all'esempio, i primi 10.
Di particolare interesse sono le query CONSTRUCT, che permettono di restituire il risultato
dell’interrogazione sotto forma di grafo RDF, nell’esempio si vede come viene utilizzato:
PREFIX cd: <http://example.org/cd/>
CONSTRUCT { ?titolo ?autore }
FROM <http://cd.com/listacd.ttl>
WHERE {
?titolo cd:autore ?autore.
}
3.7.2 Output di una query in formato XML
Eseguendo la seguente query:
PREFIX
SELECT
FROM
WHERE
cd: <http://example.org/cd/>
?titolo ?autore
<http://cd.com/listacd.ttl>
{
?titolo cd:autore ?autore
}
41
CAPITOLO 3 – RDF E SPARQL
Il risultato in formato tabulare è:
TITOLO
AUTORE
“Permutation”
“Bricolage”
“Amber”
“Amon Tobin”
“Amon Tobin”
“Autechre”
Il risultato in formato XML è:
<?xml version=“1.0”?>
<sparql xmlns=http://www.w3.org/2005/sparql-results#>
<head>
<variable name=“titolo” />
<variable name=“autore” />
</head>
<results ordered=“false” distinct=“false”>
<result>
<binding name=“titolo”>
<literal>Permutation</literal>
</binding>
<binding name=“autore”>
<literal>Amon Tobin</literal>
</binding>
</result>
<result>
<binding name=“titolo”>
<literal>Bricolage</literal>
</binding>
<binding name=“autore”>
<literal>Amon Tobin</literal>
</binding>
</result>
<result>
<binding name=“titolo”>
<literal>Amber</literal>
</binding>
<binding name=“autore”>
<literal>Autechre</literal>
</binding>
</result>
</results>
</sparql>
La sintassi è intuitiva, leggibile e facile da gestire mediante fogli di stile. L'elemento radice è
‘sparql’, l'attributo ‘xmlns’ definisce, come di consueto, il namespace di riferimento.
Nella sottosezione ‘head’ sono elencate, nello stesso ordine in cui compaiono nella SELECT
della query, le variabili da prendere in considerazione nel risultato, indicate come valori
dell'attributo ‘name’ degli elementi vuoti ‘variable’.
42
CAPITOLO 3 – RDF E SPARQL
La seconda sottosezione, ‘results’, contiene una sequenza di elementi ‘result’ che
esprimono, per ciascun risultato della query, le variabili cercate, indicate come valore
dell'attributo ‘name’ dell'elemento ‘binding’, e i rispettivi valori (nell'esempio, letterali di
tipo stringa).
I valori booleani degli attributi ‘ordered’ e ‘distinct’ dell'elemento ‘results’ indicano se
prendere in considerazione o meno gli eventuali costrutti ORDER BY o SELECT DISTINCT della
query.
3.7.3 Framework SPARQL
Sono stati realizzati diversi framework (piattaforme) open source, quindi scaricabili
gratuitamente da Internet, che permettono di effettuare il parsing (l'analisi) di strutture RDF,
l'esecuzione di query, la manipolazione, il caricamento di triple su database (appoggiandosi
su database relazionali) e altri tipi di funzioni.
Attualmente i più diffusi framework sono Jena, Redland, Twinkle, Rap, Sesame, ARC2 e si
differenziano principalmente per il linguaggio di programmazione utilizzato (PHP40 o JSP41).
Nel progetto di questa tesi è stato scelto un framework fra questi e sarà approfondito nel
capitolo 6.
40
41
PHP (acronimo ricorsivo di "PHP: Hypertext Preprocessor", preprocessore di ipertesti) è un linguaggio di
scripting interpretato, con licenza open source e parzialmente libera, utilizzato principalmente per
sviluppare applicazioni web lato server.
JSP (JavaServer Pages), è una tecnologia Java per lo sviluppo di applicazioni Web che forniscono contenuti
dinamici in formato HTML o XML. Si basa su un insieme di speciali tag con cui possono essere invocate
funzioni predefinite o codice Java (JSTL).
43
CAPITOLO 4
DOQUI
44
CAPITOLO 4 – DOQUI
4.1 CHE COS'È DOQUI
DoQui è una piattaforma informatica di gestione documentale che permette di organizzare,
archiviare e condividere documenti in formato digitale. Realizzata nel 2008 da Regione
Piemonte, Città e Provincia di Torino con il coordinamento di CSI-Piemonte e il contributo
del Politecnico di Torino e dell’Università degli studi di Torino. La piattaforma promuove una
collaborazione fra Enti pubblici e mondo accademico per raggiungere la completa de
materializzazione dei processi amministrativi, per sostenere la crescita delle imprese ICT
(Information and Communication Technology) in Piemonte e diffondere l’utilizzo di soluzioni
e tecnologie open source. Il carattere innovativo dell’iniziativa sta anche nella creazione di
una comunità di soggetti, pubblici e privati, che potranno collaborare e condividere
materiali, temi e documenti del progetto.
I vantaggi:
o
o
o
o
o
o
ottimizza i processi;
assicura la tracciabilità delle azioni;
incrementa la (ri)trovabilità dei documenti;
garantisce sicurezza e riservatezza delle informazioni;
favorisce l'eco-sostenibilità grazie all'abbattimento dei consumi di carta;
consente di ridurre drasticamente gli spazi e i costi dedicati agli archivi cartacei.
Per chi:
o Enti della Pubblica Amministrazione che hanno necessità di assolvere agli obblighi di
legge in materia di amministrazione digitale;
o Aziende che hanno necessità di gestire con efficacia la documentazione digitale;
o Aziende che, in qualità di “fornitori” di servizi e soluzioni informatiche, possono
contribuire a migliorare la soluzione sviluppata e ampliare le prospettive di mercato.
Le caratteristiche:
o
o
o
o
basato su tecnologie open source;
flessibile: può essere adattato a contesti d'uso ed esigenze diversi;
orientato al riuso delle componenti;
gratuito.
4.2 OBIETTIVI
Il progetto, coordinato da CSI-Piemonte, attua una strategia di politica industriale pubblica
piemontese basata su:
o
o
o
o
collaborazione fra Enti pubblici e mondo accademico;
dematerializzazione e semplificazione dei processi amministrativi;
utilizzo di soluzioni e tecnologie open source;
sostegno alla crescita delle imprese ICT piemontesi.
45
CAPITOLO 4 – DOQUI
Gli obiettivi:
o offrire alla Pubblica Amministrazione piemontese un sistema informatico per la
gestione documentale per:
 assolvere agli obblighi di legge nella gestione quotidiana dei procedimenti
amministrativi;
 razionalizzare i processi organizzativi interni;
 ridefinire le modalità di interazione con i cittadini e le imprese, in vista di una
maggiore efficienza e trasparenza;
o determinare ricadute positive sul settore ICT piemontese grazie a:
 nuove competenze;
 nuovi modelli di business;
 logiche di mercato che privilegiano l’offerta di consulenze specialistiche e la
realizzazione di progetti e/o prodotti ICT finiti;
o sviluppare una linea strategica industriale basata sul software libero attraverso:
 una comunità che diffonda l’approccio industriale al modello open source e
costituisca un punto di eccellenza a livello nazionale;
 la collaborazione fra mondo accademico e Enti Pubblici;
o offrire alle aziende l’opportunità di:
 acquisire competenze tecnologiche elevate;
 proporre servizi aggiuntivi costruiti sulla piattaforma (consulenza,
personalizzazioni e verticalizzazioni, evoluzioni funzionali).
4.3 INNOVAZIONE
DoQui propone una soluzione:
o open source, per fornire un vantaggio competitivo al territorio e valorizzare le
competenze presenti;
o flessibile e orientata al riutilizzo delle componenti per assicurare la fruibilità del
sistema anche in filiere documentali diverse da quella di origine;
o aperta alle PMI del comparto ICT piemontese per stimolare il tessuto produttivo
locale e creare nuove opportunità di mercato;
o conforme alla direttiva nazionale (Codice Amministrazione Digitale42);
o partecipata grazie alla creazione della comunità di soggetti pubblici e privati chiamati
a collaborare alla progettazione, gestione e manutenzione della piattaforma.
Il progetto è fortemente innovativo per:
42
Il Codice dell’Amministrazione Digitale è entrato in vigore l’ 1 Gennaio 2006 ed ha lo scopo di assicurare e
regolare la disponibilità, la gestione, l’accesso, la trasmissione, la conversazione e la fruibilità
dell’informazione in modalità digitale utilizzando in modo appropriato le tecnologie dell’informazione e
della comunicazione all’interno della pubblica amministrazione, nei rapporti tra amministrazione e privati e
in alcuni casi limitati anche solo tra privati.
46
CAPITOLO 4 – DOQUI
o l’approccio alla gestione documentale;
o il modello di sviluppo;
o le scelte tecnologiche.
4.3.1 L’approccio alla gestione documentale
La soluzione DoQui rovescia la prospettiva tradizionale che considera l’archivio dell’Ente
come un derivato del sistema di protocollo, spostando il focus sui concetti di “documento”,
“fascicolo”, “archivio”. Questo consente di avviare un piano di convergenza
dell’organizzazione dell’Ente verso una gestione strutturata della propria documentazione, e
affrontare processi di dematerializzazione end to end43 prescindendo dal sistema di
protocollo.
In base a questo approccio, il modello di riferimento a lungo termine è delineato nello
schema:
Figura 11 - Gestione documentale di DoQui.
Si inquadra nell’ambito dei sistemi di gestione, archiviazione e condivisione di documenti
informatici, prodotti cartacei digitalizzati o digitali già in origine.
Il perimetro funzionale è stato definito a partire dall’analisi del ciclo di vita del documento,
(digitale o cartaceo, protocollato o non) all’interno dell’Ente o meglio di una sua Area
Organizzativa Omogenea (AOO):
43
Il principio end to end è uno dei principi centrali del protocollo IP (Internet Protocol), che fornisce le basi per
Internet. Secondo il principio dell’ end to end, le operazioni relative ai protocolli di comunicazione devono
avvenire nei punti finali di un sistema di comunicazione.
47
CAPITOLO 4 – DOQUI
o produzione/ricezione: produzione del documento che porta alla sua versione
definitiva oppure ricezione di un documento che verrà archiviato o trasmesso ad altri
soggetti;
o gestione: azioni effettuate sul documento nella sua versione definitiva (prodotta o
ricevuta dall’Ente) cioè archiviazione, trasmissione, ricerca, esibizione, etc.;
o conservazione: trasversale al ciclo di vita del documento a partire dall’inserimento in
archivio corrente e fino al suo versamento nell’archivio di deposito.
4.3.2 Il modello di sviluppo
Le attività di raccolta delle esigenze e di codifica dei requisiti funzionali sono state svolte da
un gruppo di lavoro multi-Ente e multi-disciplinare, con notevoli benefici:
o il modello open source garantisce bassi costi di adozione e lock-in44 inferiori rispetto
alle equivalenti soluzioni commerciali;
o le funzionalità rispondono alle esigenze funzionali, organizzative e operative di realtà
amministrative eterogenee rappresentate dal Gruppo di Lavoro;
o le imprese ICT, coinvolte fin dalle prime fasi del progetto, hanno l’opportunità di
acquisire conoscenze e contribuire a migliorare le scelte e i prodotti.
4.3.3 Le scelte tecnologiche
Il sistema progettato è conforme al paradigma di architettura basata sui servizi (SOA),
scomposta in moduli autoconsistenti e basata su standard di ambito ECM (Enterprise
Content Management), tipici di tutti i principali vendors.
Questa impostazione garantisce:
o una migliore suddivisione tra le funzioni di sistemi complessi di gestione documentale
(storage45, business logic di accesso allo storage, business logic di organizzazione dei
contenuti, interfacccia utente);
o l’accrescimento funzionale del sistema attraverso l’innesto nell’architettura
complessiva di altri moduli autoconsistenti, anche se sviluppati con tecnologie
diverse e da soggetti diversi.
4.4 COMPONENTI DEL SISTEMA
Il Sistema di Gestione Documentale ha come cuore operativo la gestione dell’archivio
tramite l’applicativo DoQui Acta e come piattaforma di Content Management DoQui Index.
44
45
Il fenomeno del lock-in si ha quando, individualmente o collettivamente, si è "catturati" da una scelta
tecnologica potenzialmente inferiore rispetto ad altre disponibili, è assai rilevante nell'ambito delle
tecnologie di Internet.
Storage, deposito dati.
48
CAPITOLO 4 – DOQUI
Le filiere di produzione/ricezione dei documenti così come i sistemi di gestione delle
strutture organizzative, autenticazione, autorizzazione e firma digitale sono integrati con la
gestione dell’archivio, mentre il servizio di conservazione viene reso disponibile alla gestione
dell’archivio dalla piattaforma.
DoQui Index gestisce anche l’archiviazione separata di documenti in archivio corrente,
sempre disponibili on line, diversamente da quelli in archivio di deposito che potranno
risiedere su supporti di memorizzazione anche non in linea. La componente di Content
Management (DoQui Index) consente di effettuare l’archiviazione dei documenti mettendo a
disposizione il software di base a garanzia dell’integrità e dell’immodificabilità dei
documenti, fornendo le seguenti principali funzionalità:
o
o
o
o
o
o
il check-in ed il check-out dei documenti;
l’esibizione dei documenti;
l’accesso ai documenti;
la gestione del versioning;
il supporto alla firma digitale e al time stamping;
la ricerca dei documenti.
L’applicativo DoQui Acta è un insieme integrato di moduli funzionali che definiscono, nella
loro completezza, la gestione documentale dell’Ente, cioè la modalità con cui le funzionalità
base della piattaforma sono utilizzate dall’Ente:
o back-office (BKO): modulo per la definizione della struttura dell’Ente, degli utenti, dei
profili, e del diritto di accesso ai documenti;
o gestione strutture archivio (GSA): modulo per la definizione della struttura
dell’archivio, del titolario di classificazione e delle strutture aggregative;
o gestione contenuti (GCO): modulo per la gestione delle strutture aggregative dei
documenti e per effettuare tutte le operazioni su di esse (ad esempio inserire e
prelevare documenti);
o gestione smistamento (SMS): modulo per consentire lo smistamento dei documenti,
inviare e ricevere gli avvisi di comunicazione agli utenti sulla presenza di documenti
nel sistema;
o gestione archivio (GAR): modulo per tutte le operazioni proprie della gestione
archivio;
o audit trail (AUD): modulo per la registrazione delle operazioni effettuate nel sistema
con le relative responsabilità e tempi;
o servizi applicativi (SER): modulo per la definizione dei servizi applicativi richiamabili
da procedure software esterne al sistema di gestione documentale.
49
CAPITOLO 4 – DOQUI
Figura 12 - Componenti del sistema DoQui.
4.5 STRUTTURA DOQUI
I componenti che costituiscono la struttura di DoQui si suddividono in applicazioni e
infrastrutture.
Infrastrutture:
o Index è il motore di gestione dei contenuti digitali, basato su un modello
infrastrutturale SOA che rende disponibili servizi di document management riferiti
alle più estese soluzioni industriali di ECM. Index è di classe enterprise, presenta
un'alta modularità, notevole capacità di carico, elevata scalabilità.
o Flux è un sistema per la gestione del ciclo di vita dei processi di business a supporto
delle attività necessarie per definire, ottimizzare, monitorare e integrare le prassi
lavorative di un’azienda. Fornisce strumenti per la configurazione e la realizzazione di
soluzioni applicative personalizzate per l'automazione di processi e gestisce processi
che trattano documenti in integrazione con le altre componenti presenti nell'offerta
DoQui.
Applicazioni:
o Acta è un sistema integrato per la gestione della documentazione elettronica degli
Enti pubblici.
o Acta light è un’implementazione ridotta di Acta. Per Enti pubblici e non solo.
o Cedolino elettronico è il sistema per la gestione di tutte le attività necessarie alla
pubblicazione del cedolino elettronico.
o Preserve è un’applicazione per la connessione ai servizi esterni di conservazione
sostitutiva secondo le norme previste dalla legge.
50
CAPITOLO 4 – DOQUI
o Share è il sistema per la gestione strutturata e la condivisione di documenti digitali in
contesti di carattere collaborativo.
Figura 13 - Struttura DoQui.
51
CAPITOLO 5
DEFINIZIONE DEL PROBLEMA
52
CAPITOLO 5 – DEFINIZIONE DEL PROBLEMA
5.1 OBIETTIVI GENERALI
“È possibile utilizzare Index per rappresentare i dati in modo semantico?”
Questo interrogativo è il cuore di codesta tesi, ovvero capire come portare le tecnologie del
Semantic Web all’interno di un sistema documentale quale DoQui e nel particolare
all’interno dell’infrastruttura Index, il motore di gestione di documenti in formato digitale
della Regione Piemonte.
Questo interrogativo nasce dalla consapevolezza delle potenzialità del Semantic Web, ad
oggi l’obiettivo delle nuove tecnologie del Web è quello di sfruttare sempre più le macchine
e per far questo è necessario organizzare meglio e in modo più flessibile l’archiviazione dei
dati per rendere più facile la ricerca e favorire un uso migliore delle risorse esistenti
(documenti, dati, funzionalità), che crescono sempre più.
Per non passare sempre attraverso manutenzioni applicative occorre trasferire alle
applicazioni più conoscenza e meglio organizzata, in modo tale che le informazioni siano
interpretabili dalle macchine.
La conoscenza si può organizzare sia utilizzando concetti definiti univocamente attraverso
URI, classificazioni e comportamenti, e sia utilizzando contesti definiti univocamente con
domini e campi di applicabilità dei concetti. Dunque, attraverso concetti e contesti univoci
diviene possibile per le macchine “ragionare”, creando nuovi collegamenti con altre
conoscenze, cosicché i dati evolvano e si creino dei veri e propri aggregati di conoscenza il
cui valore finale è potenzialmente maggiore. E affinché la conoscenza possa essere utilizzata
da applicazioni differenti deve essere organizzata fuori dalle applicazioni e deve essere
rappresentata in modo standard.
Per organizzare meglio la conoscenza i dati devono essere trattati in maniera che non siano
dei semplici file testuali ma che siano strutturati attraverso la logica della semantica tale da
permettere elaborazioni informative successive effettuate da “agenti intelligenti”, in modo
tale che questi non si limitino ai soli dati quantitativi ma che amplino la sfera conoscitiva
rendendo disponibili informazioni aggiuntive, di carattere qualitativo.
Nella figura è mostrato un esempio di come gli agenti intelligenti possano elaborare i dati
relativi agli ingredienti di un piatto e ricondurci alle case di produzione di tali ingredienti.
Questo grazie all’incremento della conoscenza degli stessi agenti intelligenti che attingono,
nelle loro ricerche, a più sorgenti precedentemente strutturate con la logica della semantica.
E dato l’incremento di questa logica nel Web, si possono creare numerosi collegamenti resi
disponibili direttamente dalle macchine senza che sia l’uomo a doverli cercare. Chiaramente
affinché il tutto funzioni è necessario che gli identificativi delle stesse risorse, tra le diverse
sorgenti, siano uguali.
53
CAPITOLO 5 – DEFINIZIONE DEL PROBLEMA
Figura 14 - Esempio di collegamenti creati da Agenti intelligenti.
Quindi l’interrogativo iniziale vuole porre l’attenzione sulle potenzialità di Index e sulla
possibilità di rappresentare e utilizzare i dati al suo interno in modo semantico; questo per
permettere una ricerca migliore internamente ed esternamente, condividendo la
conoscenza di Index con altri applicativi di ricerca. Fondamentalmente uno studio, quello di
questa tesi, volto a capire se Index per come è stato strutturato possa evolversi verso il Web
3.0 senza apportare modifiche alla sua struttura interna.
5.2 CASO DI STUDIO
Il progetto ha comportato la realizzazione di un’interfaccia Web che permetta a livello
amministrativo la gestione dei dati relativi ai menu dei ristoranti e quindi consenta ai gestori
di ristorante (o a chi ne fa le veci per loro) di creare un menu composto da tutte le sue parti,
quindi portate, bevande, coperto, tipi di piatti, i relativi prezzi ed eventuali descrizioni dei
piatti.
Dovendo giungere a delle conclusioni finali che rispondono al quesito principale su cui si
basa questa tesi è stato utile percorrere due strade differenti ma parallele per arrivare allo
stesso risultato e valutarle mediante confronto.
Il fine è rappresentare e utilizzare i dati in modo semantico, il punto di partenza è
l’interfaccia Web di un CMS per menu di ristoranti, le due strade differenti ma parallele da
percorrere sono:
54
CAPITOLO 5 – DEFINIZIONE DEL PROBLEMA
o rappresentare i dati su RDF e interrogandoli utilizzando un EndPoint SPARQL 46;
o rappresentare e utilizzare i dati semantici con Index.
Avere due versioni differenti dello stesso progetto permette di analizzare meglio i pro e i
contro di entrambi e ai fini della ricerca consente di trarre delle conclusioni migliori.
Queste due versioni sono presentate e analizzate rispettivamente nei capitoli 6 e 7, mentre il
capitolo 8 mostra tutte le valutazioni nate dal confronto.
5.3 REALIZZAZIONE INTERFACCIA
I due percorsi, seguiti per la realizzazione finale del progetto, partono dalla stessa interfaccia
Web, le funzionalità dell’interfaccia infatti non cambiano, ciò che cambia è il back-end,
ovvero il luogo dove i dati vengono allocati. Per cui il primo passo da compiere è stato la
realizzazione dell’interfaccia.
Per realizzare l’interfaccia Web di un CMS sui menu dei ristoranti e per capire meglio di quali
elementi quest’ultimi si possano comporre è stato opportuno iniziare con l’analisi di un vero
e proprio menu di un ristorante. La catalogazione, in un menu per ristoranti, avviene per
portate, quindi primi, secondi, frutta, etc. e queste a loro volta sono composte dai diversi
piatti con relativi prezzi ed eventuali descrizioni degli ingredienti del piatto, come mostrato
in figura.
Figura 15 – Suddivisione menu ristorante.
46
Endpoint SPARQL, è un servizio che consente agli utenti di interrogare una base di conoscenze RDF
attraverso il linguaggio SPARQL.
55
CAPITOLO 5 – DEFINIZIONE DEL PROBLEMA
È stato utile partire da questa suddivisione per decidere come organizzare nel miglior modo
l’interfaccia utente per l’inserimento dei dati di un menu. Infatti, osservando anche la figura,
è automatico pensare che sia necessario un primo box (riquadro) per l’inserimento delle
portate, un secondo box per l’inserimento dei piatti e relativi prezzi ed infine un terzo per
eventuali descrizioni del piatto, come gli ingredienti che compongono il piatto, l’origine di
tali ingredienti, etc.
La figura che segue mostra l’interfaccia nella sua realizzazione finale, tale interfaccia
consente ad un amministratore di creare le portate, gestirne la catalogazione, eliminarle e
modificarle utilizzando il riquadro a sinistra. Per ogni portata è poi possibile, utilizzando il
riquadro centrale, inserire i piatti che la compongono con i relativi prezzi, gestirne la
catalogazione, eliminarli e modificarli. Infine, nel riquadro a sinistra, per ciascun piatto è
possibile inserirne una descrizione.
Figura 16 – Interfaccia realizzata del CMS di un menu per ristorante.
Nella realizzazione di questa interfaccia è stato utilizzato jQuery47, un framework JavaScript
che modifica, il modo in cui si programma in JavaScript, infatti le principali funzioni di
quest’ultima (e i problemi ad esse associati) sono state sostituite da strutture più cross-
47
jQuery è un framework JavaScript, realizzato per supportare nel miglior modo possibile lo sviluppatore web
garantendogli, non solo un più rapido sviluppo delle applicazioni ma anche, e soprattutto, la sicurezza di
avere un'architettura compatibile con tutti i principali browser moderni.
56
CAPITOLO 5 – DEFINIZIONE DEL PROBLEMA
browser48 che facilitano non di poco il lavoro di un programmatore. Con jQuery sono state
realizzate le funzioni Drag&Drop sulle portate e sui piatti per gestire un loro ordinamento nei
rispettivi box, delle Dialog personalizzate con una grafica differente dalle classiche Alert dei
vari browser, una WordSuggestion nell’inserimento delle portate per consigliare le portate
più comuni.
Ultimata l’interfaccia si è passati ad un’analisi dei dati per decidere quale fosse la loro
migliore organizzazione semantica per poi operare sulla costruzione dei due differenti backend. Nei successivi capitoli vengono mostrate le due versioni realizzate successive proprio a
tale analisi.
48
Le pagine web si dicono talvolta multipiattaforma o cross-browser se possono essere utilizzate da qualunque
browser o da tutti i browser recenti.
57
CAPITOLO 6
VERSIONE BASATA SU RDF E SPARQL
58
CAPITOLO 6 – VERSIONE BASATA SU RDF E SPARQL
6.1 TIPOLOGIA DI INFORMAZIONI
Una volta completato l’aspetto front-end, ovvero sviluppata l’interfaccia Web, si è passati a
quello back-end. Prima di iniziare a creare la struttura back-end è buona norma soffermarsi
sui dati per capire come questi debbano essere suddivisi. Per questo per una prima loro
rappresentazione è stato utilizzato il formato XML, che permette di utilizzare tag
personalizzati e proprio per questo consente semplici rappresentazioni facilmente
interpretabili sia dall’uomo che dalla macchina.
Ecco come i dati sono stati suddivisi nel file XML:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE menu [
<!ELEMENT menu (portata*)>
<!ELEMENT portata ( (piatto*))>
<!ELEMENT piatto ( (nome, prezzo, descrizione))>
<!ELEMENT nome (#PCDATA)>
<!ELEMENT prezzo (#PCDATA)>
<!ELEMENT descrizione (#PCDATA)>
]>
<menu>
<portata id="Antipasti">
<piatto id="Bresaola">
<nome> Bresaola </nome>
<prezzo> 25.00 </prezzo>
<descrizione> <![CDATA[ <b>Bresaola</b> ]]> </descrizione>
</piatto>
<piatto id="Prosciutto_Crudo">
<nome> Prosciutto Crudo </nome>
<prezzo> 25.00 </prezzo>
<descrizione> <![CDATA[ Prosciutto Crudo ]]> </descrizione>
</piatto>
.
.
.
</portata>
<portata id="Primi">
<piatto id="Salsiccia_Toscana_al_forno">
<nome> Salsiccia Toscana al forno </nome>
<prezzo> 8.00 </prezzo>
<descrizione> <![CDATA[ Salsiccia Toscana ]]> </descrizione>
</piatto>
.
.
.
</portata>
.
.
.
</menu>
59
CAPITOLO 6 – VERSIONE BASATA SU RDF E SPARQL
Nella prima parte di questo file XML è stato definito il DOCTYPE, ovvero la grammatica
utilizzata nel restante codice. Con <!ELEMENT element-name CONTENT-DESCRIPTION> sono
definite le caratteristiche degli elementi e questi quali altri elementi possono contenere:




l’elemento menu è costituito da 0 o più elementi portata;
portata è costituita da 0 o più elementi piatto;
piatto è costituido dagli elementi nome, prezzo e descrizione;
nome, prezzo e descrizione sono di tipo ‘testuale’.
6.2 MODELLO
La realizzazione di un file XML, per gestire i dati, ha permesso di ragionare meglio sui dati
stessi e su come questi dovessero essere strutturati per una rappresentazione semantica. Il
Semantic Web prevede che ogni risorsa sia rappresentata da triple soggetto-predicatooggetto, per esempio l’espressione “il risotto ai funghi ha un prezzo di 6€” avrà una
rappresentazione semantica di questo tipo:
SOGGETTO
PREDICATO
OGGETTO
Risotto ai funghi
Ha prezzo
6
e nella rappresentazione Notation3 (o N3) dell’RDF sarà:
SOGGETTO
PREDICATO
OGGETTO
@prefix
tr:Risotto_ai_funghi
tr:
tr:has_prezzo
<http://www.trim.it/>.
“6”.
RDF prevede che ogni risorsa possa essere identificata univocamente mediante namespace
utilizzati dalle URI, e per evitare di riscriverli per ciascuna singola risorsa, che renderebbe la
lettura degli enunciati poco comprensibile, è possibile abbreviarli definendo dei prefissi. Il
primo enunciato, infatti, specifica che tr: è il prefisso che abbrevia il namespace dell’URI
http://www.trim.it/. Dopo aver definito il prefisso è possibile sostituire, nei successivi
enunciati, le URI con il rispettivo QName (in questo caso tr:).
Strutturare tutti i dati in questo modo comporta che a monte ci sia una organizzazione della
gestione della conoscenza, ovvero una struttura che definisca i tipi di risorse che
effettivamente saranno utilizzati e il tipo di relazioni che sussistono tra loro. Si tratta di
definire l’ontologia che riflette la conoscenza dei dati del menu per ristorante, così che possa
poi essere condivisa con altre fonti di conoscenza, associandole direttamente ed
indirettamente attraverso l’utilizzo di dinamiche inferenziali.
L’ontologia viene definita nell’RDF Schema che offre la possibilità di descrivere i tipi di risorse
definendone dei raggruppamenti; in accordo con quanto accade nel mondo dell’objectorientation, è infatti possibile specificare se una risorsa è di tipo classe o sotto-classe o di
tipo proprietà o sotto-proprietà, e così via.
60
CAPITOLO 6 – VERSIONE BASATA SU RDF E SPARQL
In questo progetto i dati da strutturare, ovvero quelli di un menu per ristorante, dovevano
innanzitutto riguardare un singolo menu, in quanto ovviamente ciascuno amministratore
gestisce i dati relativi al menu del proprio ristorante, ed essere perciò identificati come
appartenenti ad un determinato ristorante. Per questo sono stati strutturati nel seguente
modo: una classe Ristorante avente una sotto-proprietà chiamata has_Name_Ristorante che
specifica il name_Ristorante che è una sotto-classe di Literal, ovvero un letterale. La classe
Ristorante ha una proprietà che definisce quali portate offre il suo menu, per l’appunto
chiamata offre che ha come codominio la classe Portata, sotto-classe di Ristorante.
Portata a sua volta ha una sotto-proprietà che definisce il suo nome, chiamata
has_Name_Portata e codominio name_Portata, sotto-classe di Literal. Portata ha anche una
proprietà, per definire i piatti che la compongono, chiamata is_composed che ha come
codominio la classe Piatto.
Piatto è sotto-classe di Portata e ha tre sotto-proprietà che puntano a tre differenti sottoclassi di Literal, per specificare il nome del piatto, il prezzo e una sua descrizione. Queste tre
sotto-proprietà
sono
chiamate
has_Name_Piatto,
has_Prezzo_Piatto
e
has_Descrizione_Piatto ed hanno rispettivamente come codominio name_Piatto,
prezzo_Piatto e descrizione_Piatto.
I nomi delle classi, delle proprietà e dei letterali sono stati assegnati arbitrariamente con lo
scopo di rendere maggiormente comprensibile il tipo di informazione che rappresentano.
Questa è la rappresentazione dell’RDF Schema in N3 del menu ristorante:
SOGGETTO
PREDICATO
OGGETTO
@prefix
@prefix
@prefix
rdf:
rdfs:
tr:
<http://www.3w.org/1999/02/22-rdf-syntax-ns#>.
<http://www.w3.org/2000/01/rdf-schema#>.
<http://www.trim.it/>.
tr:Ristorantre
rdf: type
rdfs:Class.
tr:has_Name_Ristorante
tr:has_Name_Ristorante
tr:has_Name_Ristorante
tr:name_Ristorante
rdfs:subPropertyOf
rdf:domain
rdf:range
rdfs:subClassOf
rdfs:label.
tr:Ristorante.
tr:name_Ristorante.
rdfs:Literal.
tr:Portata
rdf:type
rdfs:Class.
tr:Portata
tr:offre
tr:offre
tr:offre
rdfs:subClassOf
rdf:type
rdf:domain
rdf:range
tr:Ristorante.
rdf:Property.
tr:Ristorante.
tr:Portata.
tr:has_Name_Portata
tr:has_Name_Portata
tr:has_Name_Portata
tr:name_Portata
rdfs:subPropertyOf
rdf:domain
rdf:range
rdfs:subClassOf
rdfs:label.
tr:Portata.
tr:name_Portata.
rdfs:Literal.
61
CAPITOLO 6 – VERSIONE BASATA SU RDF E SPARQL
tr:Piatto
rdf:type
rdfs:Class.
tr:Piatto
tr:is_composed
tr:is_composed
tr:is_composed
rdfs:subClassOf
rdf:type
rdf:domain
rdf:range
tr:Portata.
rdf:Property.
rdf:Portate.
rdf:Piatto.
tr:has_Name_Piatto
tr:has_Name_Piatto
tr:has_Name_Piatto
tr:name_Piatto
rdfs:subPropertyOf
rdf:domain
rdf:range
rdfs:subClassOf
rdfs:label.
tr:Piatto.
tr:name_Piatto.
rdfs:Literal.
tr:has_Prezzo_Piatto
tr:has_Prezzo_Piatto
tr:has_Prezzo_Piatto
tr:prezzo_Piatto
rdfs:subPropertyOf
rdf:domain
rdf:range
rdfs:subClassOf
rdfs:label.
tr:Piatto.
tr:prezzo_Piatto.
rdfs:Literal.
tr:has_Descrizione_Piatto
tr:has_Descrizione_Piatto
tr:has_Descrizione_Piatto
tr:descrizione_Piatto
rdfs:subPropertyOf
rdf:domain
rdf:range
rdfs:subClassOf
rdfs:label.
tr:Piatto.
tr:descrizione_Piatto.
rdfs:Literal.
Nella figura una rappresentazione dell’ontologia a grafo orientato ed etichettato:
Figura 17 - Ontologia del menu di un ristorante.
Definita l’ontologia è poi semplice descrivere tutte le risorse. Per esempio per rappresentare
un primo, come nel caso precedente ‘risotto ai funghi’, ed indicare a che tipo di portata
appartiene, quale è il suo nome, quale il suo prezzo e quale la sua descrizione vengono
utilizzate le seguenti triple:
62
CAPITOLO 6 – VERSIONE BASATA SU RDF E SPARQL
SOGGETTO
PREDICATO
OGGETTO
tr:Secondi
tr:Risotto_ai_funghi
tr:Risotto_ai_funghi
tr:Risotto_ai_funghi
tr:Risotto_ai_funghi
tr:is_composed
rdf:type
tr:has_Nome_Piatto
tr:has_Prezzo_Piatto
tr:has_Descrizione_Piatto
tr:Risotto_ai_funghi.
tr:Piatto.
"Risotto ai funghi".
"8.00".
"Con funghi porcini".
6.3 TOOLKIT SPARQL
Realizzati i file RDF e RDF Schema in formato N3, è necessario poter usare gli enunciati
presenti in questi files, quindi poter ottenere quelli desiderati e poterne salvare degli altri: il
linguaggio specifico per interrogare i file RDF è SPARQL.
Per la realizzazione del progetto, con la versione basata su RDF e SPARQL, è stata utilizzata la
libreria ARC2 per il motore di query SPARQL e per il caricamento e la gestione delle
ontologie. ARC2 è un framework realizzato in Php che traduce le espressioni SPARQL in
espressioni SQL, permettendo così di immagazzinare i propri dati RDF in database relazionali.
Essendo le parti del componente CMS realizzate con il linguaggio PHP, la scelta di utilizzare
questo framework anziché un altro è principalmente dovuta al fatto che anche ARC2 è
realizzato in PHP, quindi una scelta volta ad avere una coerenza di linguaggi di
programmazione.
6.3.1 Impostazioni iniziali
ARC2 introduce una classe statica che è tutto ciò che deve essere incluso. Qualsiasi altro
componente può essere caricato tramite ARC2, senza la necessità di conoscere l'esatto
percorso del file di classe.
include_once(“path/to/arc/ARC2.php”);
Una volta che la classe statica ARC2 è messa a disposizione, è possibile caricare i componenti
con le semplici chiamate di metodo e iniziare a utilizzarli:
$parser = ARC2::getRDFParser();
$parser->parse('http://example.com/foaf.ttl');
$triples = $parser->getTriples();
6.3.2 Requisiti del database
Alcuni componenti hanno bisogno di un database MySQL (per esempio l'archivio di RDF e il
motore SPARQL). Il database deve essere configurato in anticipo cosicché ARC2 possa creare
in automatico le tabelle necessarie. Un unico database è sufficiente per creare più negozi
ARC2 ed è possibile fornire un nome personalizzato per ogni negozio, che viene poi
utilizzato, come prefisso della tabella.
63
CAPITOLO 6 – VERSIONE BASATA SU RDF E SPARQL
Le opzioni di configurazione possono essere fornite con qualsiasi istanza della classe che
vengono caricate dinamicamente e specificate una volta per tutte:
$config = array(
/* db */
'db_host' => 'localhost', /* default: localhost */
'db_name' => 'my_db',
'db_user' => 'user',
'db_pwd' => 'secret',
/* store */
'store_name' => 'arc_tests',
);
$store = ARC2::getStore($config);
$store -> query ( 'LOAD <file:///mio_file_rdf.rdfxml>' );
Se un eventuale errore di trattamento si dovesse verificare, verrebbe registrato e trasmesso
al componente chiamante, in modo tale da esplicitare il tipo di errore verificatosi:
$rs = $store->query('...');
if ($errs = $store->getErrors()) {
/* $errs contiene errori di $store*/
...
}
Con la funzione $store->query('...') è possibile effettuare le diverse query, con linguaggio
SPARQL, al database. Con la chiamata $store -> query ( 'LOAD <file:///mio_file_rdf.rdfxml>' )
sono stati caricati tutti gli enunciati che descrivono le risorse di questo progetto, contenuti
nel file mio_file_rdf.rdfxml, all’interno del database, così da effettuare query direttamente al
database.
6.3.3 Esempio di query utilizzate
Ecco qualche esempio di query SPARQL realizzate utilizzando il framework ARC2:
public function get_piatti() {
$q = "PREFIX rdf: <http://www.3w.org/1999/02/22-rdf-syntax-ns#> ".
"PREFIX dc: <http://purl.org/dc/elements/1.1#> ".
"PREFIX tr: <http://www.trim.it/> ".
"SELECT ?id_piatto ?nome ?prezzo ?descrizione ?tipo_portata ".
"WHERE {
?id_piatto rdf:type tr:Piatto.
?id_piatto tr:has_Name_Piatto ?nome.
?id_piatto tr:has_Prezzo_Piatto ?prezzo.
?id_piatto tr:has_Descrizione_Piatto ?descrizione.
?tipo_portata tr:is_composed ?id_piatto.
}";
if ($rows = $this->store->query( $q, 'rows' ))
return $rows;
else
64
CAPITOLO 6 – VERSIONE BASATA SU RDF E SPARQL
return null;
}
Con questa funzione PHP vengono estrapolate dal database informazioni, già precaricate su
quest’ultimo, relative ai piatti. La query è molto semplice, con SELECT vengono passate le
incognite da trovare, che sono dei nomi arbitrari preceduti dal ‘?’, mentre con WHERE viene
specificato il path expression, ovvero l’insieme delle triple necessarie a rispondere
all’interrogazione. Da questa query viene restituito un’array associativo con key uguali ai
nomi delle incognite senza il ‘?’.
Il successivo è un esempio di INSERT INTO:
public function aggiungi_piatto($id_piatto, $id_portata, $nome_piatto, $prezzo){
$q = "PREFIX rdf: <http://www.3w.org/1999/02/22-rdf-syntax-ns#> ".
"PREFIX dc: <http://purl.org/dc/elements/1.1#> ".
"PREFIX tr: <http://www.trim.it/> ".
"INSERT INTO <http://www.trim.it/> { ".
"tr:".$id_portata." tr:is_composed tr:".$id_piatto.". ".
"tr:".$id_piatto." rdf:type tr:Piatto. ".
"tr:".$id_piatto." tr:has_Name_Piatto \"".$nome_piatto."\". ".
"tr:".$id_piatto." tr:has_Prezzo_Piatto \"".$prezzo."\". ".
"tr:".$id_piatto." tr:has_Descrizione_Piatto \"".$nome_piatto."\". ".
"}";
If ( $rs = $this->store->query( $q ) )
return $rs;
else
return null;
}
Con questa funzione PHP invece viene inserito un nuovo piatto nel database passando in
input quattro valori, che sono l’identificativo del piatto, l’identificativo della portata a cui
appartiene il piatto, il nome del piatto ed infine il prezzo. Questi valori integrano il path
expression della query per raffinare la ricerca.
Ultimo esempio a riguardo la funzione DELETE FROM:
public function elimina_piatto( $id_portata, $id_piatto ){
$q = "PREFIX rdf: <http://www.3w.org/1999/02/22-rdf-syntax-ns#> ".
"PREFIX dc: <http://purl.org/dc/elements/1.1#> ".
"PREFIX tr: <http://www.trim.it/> ".
"DELETE FROM <http://www.trim.it/> { ".
"tr:".$id_piatto." rdf:type tr:Piatto. ".
"tr:".$id_piatto." tr:has_Name_Piatto ?nome. ".
"tr:".$id_piatto." tr:has_Prezzo_Piatto ?prezzo. ".
"tr:".$id_piatto." tr:has_Descrizione_Piatto ?descrizione. ".
"tr:".$id_portata." tr:is_composed tr:".$id_piatto.
" }";
If ( $rs = $this->store->query($q) )
return $rs;
65
CAPITOLO 6 – VERSIONE BASATA SU RDF E SPARQL
else
return null;
}
In questo caso la funzione permette di eliminare un piatto specificandone in input il suo
identificativo e l’identificativo della portata a cui appartiene. Anche in questo caso il path
expression si compone con i valori passati in input.
Questi esempi completano la presentazione del progetto realizzato con la prima versione,
ovvero quella basata su RDF e SPARQL. Nel corso del capitolo è stato presentato come i dati
debbano essere strutturati con la logica della semantica partendo da una loro
rappresentazione ontologica. Ed infine come questi possano essere interrogati con SPARQL
mediante l’ausilio del framework ARC2. Nel prossimo capitolo sarà affrontata la seconda
versione partendo da considerazioni, fatte proprio in questo capitolo, sull’ontologia dei dati
di un menu per ristorante.
66
CAPITOLO 7
VERSIONE BASATA SU INDEX
67
CAPITOLO 7 – VERSIONE BASATA SU INDEX
Fin qui il progetto ha visto la realizzazione della prima versione, quella basata su RDF e
SPARQL: è stata pertanto realizzata un’interfaccia Web che permette la gestione di un menu
per ristorante e che, a livello back-end, strutturara i dati con la logica della semantica,
esprimendo tutte le risorse in triple soggetto-predicato-oggetto, e li interroga con query
SPARQL per caricare e salvare i dati in un database.
In questo capitolo viene invece proposta la versione basata su Index e, a fronte della sua
realizzazione, le analisi effettuate sulle possibili interpretazioni per la risoluzione del
problema principale:
“È possibile utilizzare Index per rappresentare i dati in modo semantico?”
7.1 PRIMO APPROCCIO AD INDEX
Per poter affrontare tematiche come “che tipo di interrogazioni è possibile effettuare ad
Index?” e “quali dati è possibile trattare?” è importante conoscere i Web Service di Index.
I servizi messi a disposizione da Index sono presenti su file WSDL (Web Services Description
Language) che contengono informazioni su cosa può essere utilizzato (le “operazioni” messe
a disposizione dal servizio), come utilizzarlo (il protocollo di comunicazione da utilizzare per
accedere al servizio, il formato dei messaggi accettati in input e restituiti in output dal
servizio ed i dati correlati, ovvero i “vincoli”, bindings in inglese, del servizio) e dove
utilizzarlo (il cosiddetto endpoint del servizio che solitamente corrisponde all'indirizzo, in
formato URI, che rende disponibile il Web Service). Pertanto lo studio si è focalizzato sui file
WSDL di Index, ed in particolare ecmengine-backoffice.wsdl e ecmengine-management.wsdl.
Il primo descrive il servizio di backoffice con operazioni appartenenti a 4 categorie principali:
o
o
o
o
gestione utenti e gruppi (creazione, modifica, cancellazione, ricerca);
access Control List (creazione, modifica, cancellazione);
gestione repository logici;
informazioni del sistema.
Il secondo file invece descrive il servizio di management e qui troviamo operazioni
appartenenti a 5 categorie principali:
o
o
o
o
o
o
gestione contenuti (creazione, modifica, cancellazione);
controllo del formato dei contenuti;
versioning;
check-in/check-out (con locking);
gestione di cicli semplici di approvazione;
auditing.
68
CAPITOLO 7 – VERSIONE BASATA SU INDEX
Quindi per capire meglio come utilizzarli sono state realizzate delle chiamate SOAP ad Index
in linguaggio Php per creare nuovi utenti, nuove cartelle, inserire file testuali, etc. Ecco un
esempio:
<?php
class MyFunction {
var $clientM;
public function __construct() {
$this->clientM = new SoapClient("ecmengine-management.wsdl",
array('location'=>"http://localhost:8080/ecmengine/services/EcmEngineManagement"));
}
public function crea_content() {
/* OperationContext - info per l'autenticazione */
$ctx = array('username'=>'admin', 'password'=>'admin', 'nomeFisico'=>'Ammin',
'fruitore'=>'Esempio');
/* Metadati del contenuto... */
$metadati = array('prefixedName'=>'cm:name', 'dataType'=>'d:text', 'values'=>array('mio.txt'),
'multivalue'=>false);
/* Contenuto */
$text="Nuovo file di testo";
$myFile = array('properties'=>array($metadati), 'prefixedName'=>'cm:mio.txt',
'typePrefixedName'=>'cm:content','parentAssocTypePrefixedName'=>'cm:contains',
'contentPropertyPrefixedName'=>'cm:content', 'mimeType'=>'txt',
'encoding'=>'UTF-8', 'content'=>$text);
/* Creazione del Node */
$xpath = array('XPathQuery'=>'/app:company_home', 'fullTextAllWords'=>false, 'limit'=>0,
'pageIndex'=>0, 'pageSize'=>0);
try {
$myNode = $this->clientM->getUid($xpath, $ctx);
}catch(Exception $e) {
echo $e;
}
/* Eseguo la creazione... */
$myNewNode = $this->clientM->createContent($myNode, $myFile, $ctx);
/* A questo punto la variabile myNewNode conterra' i riferimenti al contenuto appena creato sul
repository "primary". */
}
?>
In questo esempio ci sono due funzioni, la prima è il costruttore della classe MyFunction che
crea un’istanza ClientM della classe SoapClient passando in input ecmenginemanagement.wsdl, mentre la seconda funzione consente di creare un file testuale e inserirlo
in Index. Tutte le funzioni di management utilizzabili in Index e descritte nel file WSDL
69
CAPITOLO 7 – VERSIONE BASATA SU INDEX
possono essere chiamate come metodi dell’oggetto SoapClient, come ad esempio clientM>getUid(..) e clientM->ceateContent(..).
Già da questo piccolo esempio è possibile notare quanti parametri bisogna passare alle
funzioni di Index; e se questi non sono coerenti con le specifiche stesse di Index, le chiamate
creano solo delle eccezioni. Inoltre si nota come la creazione di un contenuto comporti
anche la creazione dei suoi metadati, questo è un elemento importante in Index, infatti ogni
nodo, cartella o file può avere informazioni aggiuntive sui metadati ed anche sulle
associazioni con altri nodi, cartelle o file. Questo elemento tornerà altresì utile nella
realizzazione finale progetto con questa soluzione e sarà oggetto di approfondimento nel
paragrafi successivi.
7.2 DUE POSSIBILI SOLUZIONI
Dopo un primo approccio ai servizi di Index resta da capire se con il Content Management di
DoQui, ovvero Index, sia possibile strutturare i dati in triple e se sia possibile interrogarli in
quel formato. In Index il servizio di “management” permette di creare, modificare e
eliminare cartelle, nodi, categorie, file e relativi metadati e DoQui è un sistema di gestione
documentale che permette, grazie a Index, di salvare documenti in qualsiasi formato e che
consente una ricerca testuale dei suoi documenti, pertanto questi documenti sono trattati
come semplici file di testo e non è possibile effettuare analisi sulla loro struttura interna, per
esempio in caso di file XML non è possibile fare il parsing dei tag presenti.
Da questa analisi ne deriva che sia inutile caricare su DoQui file RDF, in quanto non è
possibile gestirli internamente a meno che non si valutino due soluzioni:
o caricare file RDF all’interno di DoQui e permettere ai client esterni di prelevarli e di
gestirli con un EndPoint SPARQL esterno;
o caricare file RDF all’interno di DoQui e creare un EndPoint interno a DoQui così che i
client esterni possano direttamente interrogare i file RDF con Index stesso.
Analizzando i pro e i contro si evince che di entrambe le soluzioni il pro è che i dati sono
rappresentati con la logica della semantica e salvati in RDF e con Index allocati in DoQui, ma i
contro di queste soluzioni non permettono di soddisfare completamente l’esigenza iniziale:
o la prima soluzione comporta che Index, e di conseguenza anche DoQui, non abbia la
possibilità di trattare i file RDF, interrogandoli. Si ritrova quindi ad essere un mero
deposito per gli RDF e non sapere effettivamente cosa siano e cosa farne; si
potrebbero effettuare solo ricerche testuali su questi file ma niente di più. Quindi la
soluzione numero uno è bocciata, anche perché DoQui non semplificherebbe il lavoro
ai client che dovrebbero, successivamente alla richiesta del file RDF, analizzarlo con
un EndPoit SPARQL esterno ed eventualmente effettuare nuove chiamate a Index
qualora nell’RDF ci fossero collegamenti a dati multimediali contenuti in Index stesso;
70
CAPITOLO 7 – VERSIONE BASATA SU INDEX
o la seconda soluzione invece non rientra nelle logiche applicative di DoQui, inserire un
EndPoint SPARQL al suo interno sarebbe una forzatura alla sua stessa architettura.
Seguendo questa strada si dovrebbe effettuare una riprogettazione strutturale del
suo interno che comporterebbe un lavoro non indifferente e non è esattamente ciò
che si vuol fare. L’EndPoint SPARQL dovrebbe eventualmente essere considerato
come un bridge tra il repository e il fruitore dei contenuti e non parte interna di
DoQui.
Figura 18 – Prime due soluzioni per gestire i dati in modo semantico con DoQui.
La figura rappresenta le prime due soluzioni analizzate su come Index possa rappresentare i
dati in modo semantico, soluzioni mostratesi non ideali per poterne permettere un loro
utilizzo interno senza stravolgere l’architettura propria di Index.
7.3 SOLUZIONE ADOTTATA
La soluzione finale del progetto, in questa sua versione, è scaturita osservando proprio la
rappresentazione grafica dell’ontologia dei dati di un menu per ristorante (vedi figura 17).
La rappresentazione grafica di un ontologia altro non è che un grafo orientato ed
etichettato, ovvero nodi connessi tra loro attraverso archi orientati ed etichettati (con un
peso o valore) ed una rappresentazione a grafo in Index è possibile realizzarla difatti con
Index è possibile realizzare nodi e definirne il tipo di associazioni.
La soluzione finale è volta quindi a rappresentare gli enunciati, che esprimono le risorse,
mediate la creazione di nodi collegati tra loro all’interno del repository di Index, dove già
tutti i suoi contenuti hanno una rappresentazione a grafo. Consentendo così ad un client
71
CAPITOLO 7 – VERSIONE BASATA SU INDEX
esterno di interrogare Index mediante linguaggio XPath49 e ricevere come risposta
l’informazione desiderata, lasciando interamente ad Index la gestione dei dati.
La figura che segue mostra la logica della terza soluzione, ovvero quella finale:
Figura 19 - Terza soluzione (finale) per gestire i dati in modo semantico con DoQui.
Questa soluzione ha portato a tre tipi di interpretazioni differenti:
Figura 20 - Terza soluzione per gestire i dati in modo semantico con DoQui.
49
XPath è un linguaggio parte della famiglia XML che permette di individuare nodi all'interno di un documento
XML. Le espressioni XPath, a differenza delle espressioni XML, non servono a identificare la struttura di un
documento, bensì a localizzarne con precisione i nodi.
72
CAPITOLO 7 – VERSIONE BASATA SU INDEX
La prima idea è stata quella di rappresentare gli enunciati (soggetto-predicato-oggetto), nel
repository di Index, utilizzando un nodo per il soggetto, un altro nodo per l’oggetto e la
rispettiva associazione per il predicato, e più precisamente utilizzando un nodo chiamato con
lo stesso valore del soggetto, un altro chiamato con lo stesso nome dell’oggetto e la
rispettiva associazione chiamata con il valore del predicato. Un’interpretazione che presenta
un problema: in Index è necessario definire tutti i tipi di associazione che vogliamo tra i nodi
attraverso i custom content model50, ma questi devono essere creati e caricati in Index in
anticipo rispetto all’inserimento dei nostri dati. Il che comporta una mancanza di dinamicità,
infatti nel momento in cui si decide di utilizzare una nuova proprietà, per definire l’oggetto di
un soggetto, si deve modificare il custom content model e ricaricarlo in Index.
La seconda intuizione è stata quella di creare un nodo per ciascun elemento dell’enunciato,
tenendo presente di non inserirne di nuovi, nel momento in cui qualche elemento si fosse
ripetuto, in modo tale da non creare duplicati del soggetto, dell’oggetto o del predicato. Ma
anche questa interpretazione presenta un problema, un problema in fase di ricerca (come
mostrato nella figura che segue), infatti supponendo che due soggetti (nodi), S1 e S2,
abbiano un predicato P1 in comune e che questo definisca un oggetto O1 per S1 e un
secondo oggetto O2 per S2, in fase di ricerca, con Index, chiedendo quale oggetto definisce il
predicato P1 per S1, ci darà come risposta sia O1 che O2, il che è sbagliato.
Figura 21 - Problema della seconda interpretazione.
La risoluzione di questo problema giunge con la terza interpretazione, ovvero far sì che i nodi
che costituiscono l’enunciato abbiano una rappresentazione gerarchica, il che comporta che
il predicato sia annidato nel soggetto e che l’oggetto a sua volta nel predicato.
Nel momento in cui troviamo un enunciato con un soggetto già inserito, questo non deve
essere duplicato e quindi il predicato dell’enunciato deve essere annidato all’interno del
soggetto già esistente e l’oggetto annidato nel predicato dell’oggetto.
Nel caso in cui oltre al soggetto anche il predicato si ripete, si deve solo annidare l’oggetto
del nuovo enunciato nel predicato esistente già annidato nel soggetto anch’esso già
esistente.
50
I content model descrivono le caratteristiche dei nodi e delle associazioni dei contenuti che si trovano
all’interno del repository. In quanto i contenuti sono rappresentati come grafo composto da due elementi
base: il nodo e l’associazione. Quest’ultima può essere di tipo padre-figlio o semplice.
73
CAPITOLO 7 – VERSIONE BASATA SU INDEX
Questa soluzione quindi prevede che ci siano duplicati
del predicato e dell’oggetto, ma non del soggetto,
ciononostante, essendo organizzati in modo
gerarchico, questo non crea conflitti durante la fase di
ricerca.
In questo modo è possibile rappresentare con Index i
dati in modo semantico, rispondendo pertanto alla
domanda iniziale del mio progetto di tesi, ovvero “E’
possibile utilizzare Index per rappresentare i dati in
modo semantico?”. Partendo da questo punto è stata
realizzata la seconda versione del progetto, facendo sì
che l’interfaccia Web per la gestione di un menu per
ristorante, già realizzata, dialogasse direttamente con
Index e che quest’ultimo gestisse i dati strutturandoli
con la soluzione appena argomentata.
Figura 22 - Terza interpretazione.
7.4 CUSTOM CONTENT MODEL
La soluzione appena trovata comporta che i nodi da creare all’interno di Index abbiano
particolari specifiche. Il servizio di management di Index impone che ad ogni nodo, nel
momento della sua creazione, vengano definite determinate variabili, tra queste ce ne sono
due particolarmente utili: typePrefixedName e parentAssocTypePrefixedName, che servono
a specificare il tipo di nodo che si sta creando ed il tipo di associazione con il nodo padre.
Quindi dovendo creare nodi del tipo soggetto, predicato e oggetto, questi avranno
associazioni con il nodo padre rispettivamente del tipo repository-soggetto, soggettopredicato e predicato-oggetto.
Ma per poter utilizzare nuovi tipi di nodo personalizzati, come in questo caso, è necessario
definirli creando un nuovo custom content model e quest’ultimo inserito in Index. Nel
custom content model per ciascun nodo personalizzato si deve definire il nome del tipo e, a
differenza del serzvizio di management dove è necessario definire il tipo di associazione con
il nodo padre, il nome del tipo di associazione con un nodo figlio. Ecco il custom content
model realizzato per definire il tipo di nodi utilizzati:
<model name="rdf:rdfmodel" xmlns="http://www.alfresco.org/model/dictionary/1.0">
<description>TRIM RDF Model</description>
74
CAPITOLO 7 – VERSIONE BASATA SU INDEX
<author>TRIM S.r.l.</author>
<published>2009-09-20</published>
<version>1.0</version>
<imports>
<import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/>
<import uri="http://www.alfresco.org/model/system/1.0" prefix="sys"/>
</imports>
<namespaces>
<namespace uri="http://www.trim.it/model/rdf/1.0" prefix="rdf"/>
</namespaces>
<types>
<type name="rdf:oggetto">
<title>Oggeto RDF</title>
<parent>sys:base</parent>
<properties>
<property name="rdf:nomeOggetto">
<title>Nome</title>
<type>d:text</type>
<mandatory enforced="true">true</mandatory>
</property>
</properties>
<associations>
<child-association name="rdf:oggettoPredicato">
<source>
<mandatory>false</mandatory>
<many>false</many>
</source>
<target>
<class>rdf:predicato</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
</child-association>
</associations>
</type>
<type name="rdf:predicato">
<title>Predicato RDF</title>
<parent>sys:base</parent>
<properties>
<property name="rdf:nomePredicato">
<title>Name</title>
<type>d:text</type>
<mandatory enforced="true">true</mandatory>
</property>
</properties>
<associations>
75
CAPITOLO 7 – VERSIONE BASATA SU INDEX
<child-association name="rdf:predicatoOggetto">
<source>
<mandatory>false</mandatory>
<many>false</many>
</source>
<target>
<class>rdf:oggetto</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
</child-association>
</associations>
</type>
</types>
</model>
Con tale custom content model vengono definiti due nodi, il primo chiamato
rdf:nomeOggetto, per rappresentare i nodi “soggetto” e i nodi “oggetto” ed il secondo
rdf:nomePredicato, per rappresentare i nodi “predicato”, aventi come nomi dell’associazioni
con i propri nodi figli rispettivamente rdf:oggettoPredicato e rdf:predicatoOggetto. Tali
associazioni implicano che rdf:nomeOggetto possa avere solo figli predicato e che
rdf:nomePredicato solo figli oggetto.
Inoltre nei tag mandatory vengono inseriti valori booleani per specificare se i nodi possono
avere uno o più figli e se loro stessi hanno uno o più padri, così ho imposto che
rdf:nomeOggetto possa avere un solo padre e più figli di tipo predicato mentre
rdf:nomePredicato un solo padre e più figli di tipo oggetto.
Figura 23 - ECM Web Console di Index.
76
CAPITOLO 7 – VERSIONE BASATA SU INDEX
La figura 23 mostra l’interfaccia della
ECM (Enterprise Content Management)
Web Console di Index, attraverso cui è
possibile
constatare
l’effettiva
realizzazione dei contenuti effettuata
mediante
la
componente
CMS
appositamente progettata.
La figura 24 è un ingrandimento della
figura 23, in particolare della struttura
interna dei nodi.
Figura 24 - Struttura dei nodi all'interno della ECM Web
Console.
77
CAPITOLO 8
VALUTAZIONI
78
CAPITOLO 8 - VALUTAZIONI
La soluzione finale sviluppata nella seconda versione del progetto, ovvero quella basata su
Index, ha permesso di giungere alla realizzazione dell’obiettivo principale: realizzare un
componente CMS per la gestione a livello amministrativo di un menu per ristoranti che
possa dialogare con DoQui per immagazzinare e prelevare i dati e che questi possano essere
gestiti da quest’ultimo attraverso la logica della semantica. Obiettivo raggiunto dopo aver
effettuato diverse analisi in modo da capire quale fosse la strada migliore da percorrere. In
conclusione è stato fattibile rispondere alla quesito:
“E’ possibile utilizzare Index per rappresentare i dati in modo semantico?”
Sì è possibile utilizzare Index per rappresentare e utilizzare i dati in modo semantico,
convertendo le triple degli enunciati, che rappresentano le risorse, in nodi strutturati in
modo gerarchico all’interno del repository di Index. Per ogni tripla esisteranno tre nodi nel
repository che rappresenteranno il soggetto, il predicato e l’oggetto, e saranno nominati
rispettivamente con il valore del soggetto, del predicato e dell’oggetto. La struttura
gerarchica dunque, consentirà l’esistenza di duplicati del predicato e dell’oggetto ma non del
soggetto.
8.1 CONFRONTI
Le due versioni del progetto realizzate (vedi figura 25), la prima basata su RDF e SPARQL e la
seconda su Index, hanno permesso un confronto finale consentendo di analizzarne i pro e
contro.
Figura 25 - Le due versioni finali del progetto realizzato.
Di seguito un’analisi delle due versioni che per comodità saranno indicate con ‘A’ per
identificare la prima versione (RDF e SPARQL) e con ‘B’ per identificare la seconda (Index):
o Effettiva integrazione con DoQui:
chiaramente la versione A non interagisce con DoQui perché è stata realizzata
utilizzando RDF e SPARQL proprio per avere un modello ad hoc nel trattamento dei
dati semantici nel Web e quindi per poter fare un confronto con la versione B, che si
basa fondamentalmente sull’interazione con Index, quindi con DoQui.
79
CAPITOLO 8 - VALUTAZIONI
o Facilità di sviluppo a livello back-end:
sicuramente la realizzazione della versione A è stata meno complessa, inoltre
l’utilizzo del framework ARC2 ha reso più facile la gestione degli enunciati sia nel
caricamento su database che nelle interrogazioni. L’unica laboriosità è stata la
realizzazione delle query ad hoc in linguaggio SPARQL.
Invece la realizzazione della versione B è stata più complessa e più dispendiosa come
righe di codice scritto, infatti per ogni nodo creato all’interno del repository di Index
è necessario inserire i valori per quasi tutte le sue proprietà e per le proprietà dei
suoi metadati, inoltre è indispensabile specificare quale è il nodo padre a cui sarà
“agganciato”.
Prendendo come esempio le funzioni per la creazione di portate e piatti all’interno
del menu per ristorante, nella versione A avremo:
public function aggiungi_portata($id_portata, $nome_portata){
$q = "PREFIX rdf: <http://www.3w.org/1999/02/22-rdf-syntax-ns#> ".
"PREFIX dc: <http://purl.org/dc/elements/1.1#> ".
"PREFIX tr: <http://www.trim.com/> ".
"INSERT INTO <http://www.trim.com/> { ".
"tr:".$id_portata." rdf:type tr:Portata . " .
"tr:".$id_portata." tr:has_Name_Portata \"".$nome_portata."\". ".
"}";
$rs = $this->store->query($q);
if ($err = $this->store->getErrors()) {
var_dump( $err );
}
}
public function aggiungi_piatto($id_piatto, $id_portata, $nome_piatto, $prezzo){
$q = "PREFIX rdf: <http://www.3w.org/1999/02/22-rdf-syntax-ns#> ".
"PREFIX dc: <http://purl.org/dc/elements/1.1#> ".
"PREFIX tr: <http://www.trim.com/> ".
"INSERT INTO <http://www.trim.com/> { ".
"tr:".$id_portata." tr:is_composed tr:".$id_piatto.". ".
"tr:".$id_piatto." rdf:type tr:Piatto. ".
"tr:".$id_piatto." tr:has_Name_Piatto \"".$nome_piatto."\". ".
"tr:".$id_piatto." tr:has_Prezzo_Piatto \"".$prezzo."\". ".
"tr:".$id_piatto." tr:has_Descrizione_Piatto \"".$nome_piatto."\". ".
"}";
$rs = $this->store->query($q);
if ($err = $this->store->getErrors()) {
var_dump( $err );
}
}
Mentre nella versione B avremo:
/* VERIFICA ESISTENZA NODO */
public function exist_node($xpath,$ctx){
80
CAPITOLO 8 - VALUTAZIONI
$b;
try {
$this->clientM->nodeExists($xpath, $ctx);
$b = TRUE;
}catch(Exception $e) {
$b = FALSE;
}
return $b;
}
/* CREARE SOGGETTO PREDICATO OGGETTO */
public function crea_soggetto_predicato_oggetto($s, $p, $o) {
/* OperationContext - info per l'autenticazione */
$ctx = array('username'=>'admin', 'password'=>'admin', 'nomeFisico'=>'Amministratore',
'fruitore'=>'Esempio WIKI');
/* Metadati del contenuto... */
$metadati_sogg = array('prefixedName'=>'rdf:nomeOggetto', 'dataType'=>'d:text',
'values'=>array($s), 'multivalue'=>false);
$metadati_pred = array('prefixedName'=>'rdf:nomePredicato', 'dataType'=>'d:text',
'values'=>array($p), 'multivalue'=>false);
$metadati_ogg = array('prefixedName'=>'rdf:nomeOggetto', 'dataType'=>'d:text',
'values'=>array($o), 'multivalue'=>false);
/* Contenuto Soggetto*/
$mySogg = array('properties'=>array($metadati_sogg), 'prefixedName'=>'rdf:'.$s,
'typePrefixedName'=>'rdf:oggetto', 'parentAssocTypePrefixedName'=>'cm:contains');
/* Contenuto Preicato */
$myPred = array('properties'=>array($metadati_pred), 'prefixedName'=>'rdf:'.$p,
'typePrefixedName'=>'rdf:predicato', 'parentAssocTypePrefixedName'=>'rdf:soggettoPredicato');
/* Contenuto Oggetto */
$myOgg = array('properties'=>array($metadati_ogg), 'prefixedName'=>'rdf:'.$o,
'typePrefixedName'=>'rdf:oggetto', 'parentAssocTypePrefixedName'=>'rdf:predicatoOggetto');
/* Creazione del Node Sogg */
$xpath_s = array('XPathQuery'=>'/app:company_home/cm:ristorante', 'fullTextAllWords'=>false,
'limit'=>0, 'pageIndex'=>0, 'pageSize'=>0);
/* Creazione del Node Pred */
$xpath_p = array('XPathQuery'=>'/app:company_home/cm:ristorante/rdf:'.$s,
'fullTextAllWords'=>false, 'limit'=>0, 'pageIndex'=>0, 'pageSize'=>0);
/* Creazione del Node Ogg */
$xpath_o = array('XPathQuery'=>'/app:company_home/cm:ristorante/rdf:'.$s.'/rdf:'.$p,
'fullTextAllWords'=>false, 'limit'=>0, 'pageIndex'=>0, 'pageSize'=>0);
$xpath_full = array('XPathQuery'=>'/app:company_home/cm:ristorante/rdf:'.$s.'/rdf:'.$p.'/rdf:'.$o,
'fullTextAllWords'=>false, 'limit'=>0, 'pageIndex'=>0, 'pageSize'=>0);
if( $this->exist_node($xpath_p,$ctx) ){
if( $this->exist_node($xpath_o, $ctx) ){
if( !$this->exist_node($xpath_full, $ctx) ){
$Node_o = $this->clientM->getUid($xpath_o, $ctx);
$newNodeOgg = $this->clientM->createContent($Node_o, $myOgg, $ctx);
}
}else{
$Node_p = $this->clientM->getUid($xpath_p, $ctx);
$newNodePred = $this->clientM->createContent($Node_p, $myPred, $ctx);
81
CAPITOLO 8 - VALUTAZIONI
$Node_o = $this->clientM->getUid($xpath_o, $ctx);
$newNodeOgg = $this->clientM->createContent($Node_o, $myOgg, $ctx);
}
}else{
$Node_s = $this->clientM->getUid($xpath_s, $ctx);
$newNodeSogg = $this->clientM->createContent($Node_s, $mySogg, $ctx);
$Node_p = $this->clientM->getUid($xpath_p, $ctx);
$newNodePred = $this->clientM->createContent($Node_p, $myPred, $ctx);
$Node_o = $this->clientM->getUid($xpath_o, $ctx);
$newNodeOgg = $this->clientM->createContent($Node_o, $myOgg, $ctx);
}
}
È lampante la differenza in righe di codice e la complessità di ciascuna riga nella
versione B.
o Complessità delle query:
Nella versione A le query sono in linguaggio SPARQL, un linguaggio molto semplice e
soprattutto flessibile in quanto permette di effettuare qualsiasi tipo di
interrogazione. Altrettanto flessibile la risposta che restituisce una query SPARQL, di
default è un’array associativo contenete i valori cercati, altrimenti se specificato nella
query stessa, può restituire i dati in formato RDF o XML.
La versione B per le query a Index utilizza il linguaggio XPath, un linguaggio ad hoc
per localizzare precisamente i nodi, in questo caso, all’interno del repository. Le
risposte di tali query però sono più complesse da gestire, infatti una quey XPath
effettuata per cercare determinati nodi restituisce come risposta una lista di UID dei
nodi trovati. Questo comporta che sulla risposta ottenuta debbano essere effettuati
successivi adeguamenti per convertirla in un’array associativo contenente i valori
cercati.
Il progetto nelle sue due versioni non presenta delle query esageratamente
complesse, per questo è stato possibile realizzarle senza grandi problemi sia in
linguaggio SPARQL che XPath, ma nel momento in cui si dovessero effettuare delle
query più elaborate la realizzazione in linguaggio XPath e la successiva gestione della
risposta diverrebbero molto più difficili nelle loro logiche applicative.
o Prestazioni-velocità:
Nella gestione dei calcoli la versione A risulta essere più veloce rispetto alla versione
B, infatti testando le interfacce Web delle rispettive versioni si è evinto che sia
nell’inserimento di dati, sia nella loro eliminazione, sia nella loro modifica, la versione
A risulta eseguire tali operazioni in un arco di tempo leggermente ma comunque
inferiore rispetto alla seconda versione, indubbiamente perché la versione B in tutte
queste operazioni effettua più passaggi.
o Sviluppo successivo e manutenzione:
82
CAPITOLO 8 - VALUTAZIONI
Questa valutazione deriva da alcuni punti precedenti, innanzitutto dal numero di
righe di codice scritto, che nella versione B è di gran lunga maggiore, che dalla
complessità delle query e della loro gestione, che come abbiamo visto nella versione
B risultano più laboriose e questo comporta di conseguenza maggiore difficoltà sia in
fase di uno sviluppo successivo che di manutenzione.
In definitiva, avendo analizzato i pro e i contro delle due versioni, possiamo dire che sebbene
sia stato raggiunto l’obiettivo, ovvero la realizzazione di un componente CMS per la gestione
di un menu per ristoranti che si interfacci a Index e che tratti i dati in modo semantico, la
seconda versione del progetto realizzato presenta dei punti che sarebbe necessario
migliorare ulteriormente in modo da renderlo ottimale rispetto al suo scopo finale.
Per questo, a fronte di questa ricerca, è auspicabile individuare delle migliorie a tale versione
o valutare ulteriori soluzioni per poter utilizzare Index affinché tratti i dati secondo la logica
della semantica.
83
CONCLUSIONI
84
CONCLUSIONI
Il progetto realizzato, in conclusione, ha portato a comprendere maggiormente le
potenzialità di Index e di come questo possa avvicinarsi alle logiche della semantica.
È stata dunque realizzata una componente prototipale CMS per gestire dati relativi ai menu
per ristoranti, dati che a livello back-end sono stati strutturati con le logiche della semantica.
Ed a livello amministrativo per il back-end sono state realizzate due versioni, una prima
basata su un’applicazione Web che si interfaccia a DoQui e nella fattispecie ad Index ovvero
il motore di gestione dei contenuti digitali di DoQui, ed un’altra che si interfaccia ad un
EndPoit SPARQL, atto ad interrogazioni specifiche per il recupero dei dati espressi in RDF.
La realizzazione di due versioni del progetto a livello beck-end ha permesso di giungere a
delle valutazioni finali circa le ulteriori possibilità di approfondimento e di ricerca in questo
ambito oltre che del progetto specifico. Si è trattato di uno studio che ha inteso indicare
delle prospettive di ricerca più generali che possano costituire oltre che un punto di arrivo,
anche una buona base di partenza per futuri studi nell’ambito della semantica applicata a
Index.
Il progetto di questa tesi è stato molto interessante perché mi ha portato alla conoscenza di
un argomento importante ed affascinante quale è il Semantic Web, un Web non più
costituito da documenti, fatto dalle persone per le persone, ma da dati cui possono accedere
anche le macchine creando automaticamente collegamenti semantici. Inoltre le competenze
acquisite in questo periodo sono state tante grazie alla supervisione ed alla guida del
relatore, il Prof. Corno, ai suggerimenti operativi dei colleghi di TRIM oltre che grazie ai
diversi approfondimenti personali attraverso approfondite letture sulla sintassi e sulla
filosofia delle logiche della semantica che mi hanno portato ad una maggiore comprensione
di quanto queste siano indispensabili per l’evoluzione stessa del Web.
Conducendo un percorso duale, perché costituito sia da approfondimenti di natura teorica
che da tentativi pratici di natura operativa, ho potuto comprendere a fondo quanto oggi più
che mai, grazie a questi nuovi spunti di ricerca semantica, il Web si presenti ad un “addetto
ai lavori” come un laboratorio aperto che offra la possibilità, e allo stesso tempo mostri la
necessità, di continuare a condurre esperimenti, approfondimenti, in una sola parola ricerca,
in vista di continue innovazioni tecnologiche, non fini a sé stesse ma rilevanti sia socialmente
che in termini di business.
Vorrei concludere indicando quali saranno, a mio parere, le principali sfide future del
Semantic Web e che concernono la risoluzione di due principali questioni, vale a dire quello
relativo alla identità e quello che concerne il ragionamento automatico in ambito Web:
o Il problema dell’identità:
Il Semantic Web, essendo un affinamento del Web stesso, utilizza le URI per
identificare le risorse. Le URI, in accordo con i principi su cui si fonda il Web, sono
assegnate con un metodo che bilancia il principio di decentralizzazione e quello di
semplicità ma che non garantisce l’univocità: “come riconoscere che due URI
identificano la stessa risorsa?”.
85
CONCLUSIONI
La decentralizzazione è un problema da un punto di vista logico, ma ha enormi
vantaggi dal punto di vista della creazione di contenuti. Le persone, infatti, non
hanno problemi a gestire più di un identificativo per la stessa risorsa e non c’è
bisogno di imporre un identificativo univoco. Per le macchine, però il discorso è
diverso, ed avere a che fare con più identificativi sarebbe un problema di difficile
gestione. Ovviamente, a rendere ancora più complessa la questione, ci sono per
esempio gli errori di battitura. L’aspirazione del Semantic Web è quella di costruire
un Web di dati rendendo collegabili semanticamente i silos di informazioni delle
varie organizzazioni, tuttavia non è pensabile che, per rendere disponibile
l’informazione contenuta in questi, sia richiesta un’operazione manuale di verifica
dell’univocità degli identificativi. E’ assolutamente indispensabile fare in modo che
questi dati siano trattati in modo automatico attraverso processi logico-intuitivi.
Il problema sarà difficile da affrontare nella sua interezza e l’elaborazione delle
possibili risoluzioni molto lunga, perché il Web copre una vasta gamma di
informazioni resa disponibile per ragioni differenti e il cui significato cambia nel
tempo. Quindi, un’importante sfida per il Semantic Web è quella di mettere a punto
metodi e tecniche per affrontare il problema dell’identità e realizzare sistemi in
grado di gestirlo, se non per l’intero Web, almeno per una parte di esso.
o Il problema del ragionamento automatico in presenza di inconsistenze:
I tipi di ragionamento derivati dall’ingegneria della conoscenza sono numerosi, ma
pochi sono stati automatizzati, come ad esempio il calcolo della deduzione naturale
ed i vari tipi di inferenza statistica. Il Semantic Web, però, può abilitare altri tipi di
ragionamento, come il ragionamento associativo (sono messi a confronto i punti di
vista di attori differenti) e quello per analogia (se A è analogo a B ed A ha la
proprietà P, allora anche B avrà la proprietà P), ed ha quindi bisogno di nuove
tecniche in grado di abilitare il ragionamento automatico in presenza di
inconsistenza e di funzionare sull’intera scala del Web. Uno dei principali problemi
aperti nel Semantic Web è il ragionamento in presenza di inconsistenze. Il Web è un
medium democratico in cui ciascuno può esprimere il proprio punto di vista e, dal
momento che molti di questi punti di vista sono il risultato di culture differenti,
dobbiamo aspettarci molte inconsistenze e possibili contrapposizioni oltre che
studiare delle modalità di gestione delle stesse.
Dal momento che non è possibile vietare l’introduzione di enunciati contraddittori,
l’ingegneria della conoscenza volge alcuni dei suoi studi nell’individuare metodi per
ragionare in presenza di inconsistenze in modo tale da permettere di limitare gli
effetti degli enunciati contraddittori.
86
GLOSSARIO
87
GLOSSARIO
AJAX (Asynchronous JavaScript and XML), è una tecnica di sviluppo per la
realizzazione di applicazioni web interattive (Rich Internet Application). Lo sviluppo di
applicazioni HTML con AJAX si basa su uno scambio di dati in background fra web
browser e server, che consente l'aggiornamento dinamico di una pagina web senza
esplicito ricaricamento da parte dell'utente. AJAX è asincrono nel senso che i dati
extra sono richiesti al server e caricati in background senza interferire con il
comportamento della pagina esistente. Normalmente le funzioni richiamate sono
scritte con il linguaggio JavaScript. Tuttavia, e a dispetto del nome, l'uso di JavaScript
e di XML non è obbligatorio, come non è necessario che le richieste di caricamento
debbano essere necessariamente asincrone.
AOO (Area Organizzativa Omogenea), è una struttura amministrativa individuata da
settori che, per tipologia di mandato istituzionale, di funzione amministrativa
perseguita, di obiettivi e di attività svolta, presentano esigenze di gestione della
documentazione in modo unitario e coordinato.
CERN (European Organization for Nuclear Research), è il più grande laboratorio al
mondo di fisica delle particelle. Si trova al confine tra Svizzera e Francia alla periferia
ovest della città di Ginevra
CSI-Piemonte, è un consorzio di Enti pubblici che promuove l'innovazione nella
Pubblica Amministrazione attraverso le tecnologie ICT. Con più di 1.200 dipendenti,
sei sedi sul territorio e 82 Enti consorziati, oggi il CSI è una delle principali aziende ICT
in Italia. Con la propria attività permette alle Amministrazioni di offrire servizi più
efficienti a cittadini e imprese, promuove occasioni di collaborazione a livello
regionale, interregionale e internazionale, favorisce il riuso e la condivisione di best
practices.
CMS (Content Management System ), letteralmente sistema di gestione dei
contenuti, è uno strumento software installato su un server web studiato per
facilitare la gestione dei contenuti di siti web, svincolando l'amministratore da
conoscenze tecniche di programmazione.
Digital signature, “firma digitale” in italiano, è basata sulla tecnologia della
crittografia a chiave pubblica o PKI. Dal punto di vista informatico rappresenta un
sistema di autenticazione di documenti digitali tale da garantire non ripudio. La
nozione di firma digitale ha in Italia anche un'accezione giuridica, in quanto individua
quel tipo di firma che può essere apposta ai documenti informatici alla stessa stregua
di come la firma autografa viene apposta ai documenti tradizionali.
DTD (Document Type Definition - definizione del tipo di documento), ha lo scopo di
definire le componenti ammesse nella costruzione di un documento XML. Il termine
non è utilizzato soltanto per i documenti XML ma anche per tutti i documenti derivati
88
GLOSSARIO
dall'SGML (di cui peraltro XML vuole essere una semplificazione che ne mantiene la
potenza riducendone la complessità) tra cui famosissimo è l'HTML.
Dublin Core Initiative, è un sistema di metadati costituito da un nucleo di elementi
essenziali ai fini della descrizione di qualsiasi materiale digitale accessibile via rete
informatica, inizialmente composto da solo quindici elementi, successivamente si è
esteso (esempio di qualche elemento: Title, Creator, Subject, Description, Publisher,
Contributor, Date, Type, Format).
ECM (Enterprise Content Management), è l'insieme di strumenti che consentono la
gestione della documentazione prodotta e ricevuta all’interno di un’organizzazione,
indipendentemente dal suo formato.
HTML (HyperText Markup Language), è un linguaggio usato per descrivere la
struttura dei documenti ipertestuali disponibili nel World Wide Web ossia su
Internet. Tutti i siti web sono scritti in HTML, codice che viene letto ed elaborato dal
browser, il quale genera la pagina che viene visualizzata sullo schermo del computer.
HTTP (Hypertext Transfer Protocol), è il protocollo di trasferimento di un ipertesto.
Usato come principale sistema per la trasmissione di informazioni sul web. L'HTTP
funziona su un meccanismo richiesta/risposta (client/server): il client esegue una
richiesta ed il server restituisce la risposta. Nell'uso comune il client corrisponde al
browser ed il server al sito web. Vi sono quindi due tipi di messaggi HTTP: messaggi
richiesta e messaggi risposta.
JavaScript, è un linguaggio di scripting orientato agli oggetti comunemente usato nei
siti web. Fu originariamente sviluppato da Brendan Eich della Netscape
Communications con il nome di Mocha e successivamente di LiveScript, ma in seguito
è stato rinominato "JavaScript" ed è stato formalizzato con una sintassi più vicina a
quella del linguaggio Java di Sun Microsystems. JavaScript è stato standardizzato per
la prima volta tra il 1997 e il 1999 dalla ECMA con il nome ECMAScript.
JSP (JavaServer Pages), è una tecnologia Java per lo sviluppo di applicazioni Web che
forniscono contenuti dinamici in formato HTML o XML. Si basa su un insieme di
speciali tag con cui possono essere invocate funzioni predefinite o codice Java (JSTL).
In aggiunta, permette di creare librerie di nuovi tag che estendono l'insieme dei tag
standard (JSP Custom Tag Library). Le librerie di tag JSP si possono considerare
estensioni indipendenti dalla piattaforma delle funzionalità di un Web server.
jQuery (JavaScript Query), è un framework JavaScript, realizzato per supportare nel
miglior modo possibile lo sviluppatore web garantendogli, non solo un più rapido
sviluppo delle applicazioni ma anche, e soprattutto, la sicurezza di avere
un'architettura compatibile con tutti i principali browser moderni.
89
GLOSSARIO
Mash-up, applicazioni che usano contenuti di più sorgenti per crearne uno
completamente nuovo.
PHP (acronimo ricorsivo di "PHP: Hypertext Preprocessor", preprocessore di
ipertesti), è un linguaggio di scripting interpretato, con licenza open source e
parzialmente libera, originariamente concepito per la realizzazione di pagine web
dinamiche. Attualmente è utilizzato principalmente per sviluppare applicazioni web
lato server ma può essere usato anche per scrivere script a linea di comando o
applicazioni stand-alone con interfaccia grafica.
RDF (Resource Description Framework), è lo strumento base proposto da W3C per la
codifica, lo scambio e il riutilizzo di metadati strutturati con la logica della semantica
e consente l'interoperabilità tra applicazioni che si scambiano informazioni sul Web.
SGML (Standard Generalized Markup Language), è uno standard per la descrizione
logica dei documenti.
SOA (Service-Oriented Architecture), indica generalmente un'architettura software
adatta a supportare l'uso di servizi Web per garantire l'interoperabilità tra diversi
sistemi così da consentire l'utilizzo delle singole applicazioni come componenti del
processo di business e soddisfare le richieste degli utenti in modo integrato e
trasparente.
SOAP (Simple Object Access Protocol), è un protocollo leggero per lo scambio di
messaggi tra componenti software, tipicamente nella forma di componentistica
software. La parola object manifesta che l'uso del protocollo dovrebbe effettuarsi
secondo il paradigma della programmazione orientata agli oggetti. Si basa sul
metalinguaggio XML e la sua struttura segue la configurazione Head-Body,
analogamente ad HTML.
SPARQL (Simple Protocol And RDF Query Language), è il linguaggio di interrogazione
specifico per il recupero dei dati espressi in RDF dal Web, ed è asceso dal 15 gennaio
2008 al rango di W3C Candidate Recommendation.
SQL (Structured Query Language), è un Linguaggio di programmazione per database
progettato per leggere, modificare e gestire dati memorizzati in un sistema basato sul
modello relazionale, per creare e modificare schemi di database, per creare e gestire
strumenti di controllo ed accesso ai dati.
TRIM s.r.l. nasce nel 1999 ed è una delle prime aziende dell'Incubatore di Imprese
Innovative del Politecnico di Torino. Solida e dinamica, è formata da un team di 15
ingegneri che, lavorando con una propria metodologia, progettano e realizzano
90
GLOSSARIO
applicazioni web e soluzioni di gestione documentale in maniera rapida ed efficace
utilizzando tecnologie Java.
UDDI (Universal Description Discovery and Integration), è un registry (ovvero una
base dati ordinata ed indicizzata), basato su XML ed indipendente dalla piattaforma
hardware, che permette alle aziende la pubblicazione dei propri dati e dei servizi
offerti su internet.
URI (Uniform Resource Identifier), è il generico insieme di tutti i nomi/indirizzi che
costituiscono le brevi sequenze di caratteri che fanno riferimento ad una risorsa,
acronimo più generico rispetto ad URL.
URL (Uniform Resource Locator), è una sequenza di caratteri che identifica
univocamente l'indirizzo di una risorsa in Internet, come un documento o
un'immagine. E’ un termine informale, non più utilizzato nelle specifiche tecniche,
associato con gli schemi URI più noti e diffusi (http, ftp, mailto, etc.).
Web of Trust, “Web di fiducia” in italiano, è un concetto espresso da programmi che
permettono di usare autenticazione e privacy crittografica, per stabilire l’autenticità
dell’associazione chiave-utente.
Web Service (servizio web), è un sistema software progettato per supportare
l'interoperabilità tra diversi elaboratori su di una medesima rete.
Wiki, è un sito Web (o comunque una collezione di documenti ipertestuali) che viene
aggiornato dai suoi utilizzatori e i cui contenuti sono sviluppati in collaborazione da
tutti coloro che vi hanno accesso. La modifica dei contenuti è aperta, nel senso che il
testo può essere modificato da tutti gli utenti (a volte soltanto se registrati, altre
volte anche anonimi) procedendo non solo per aggiunte, ma anche cambiando e
cancellando ciò che hanno scritto gli autori precedenti. Ogni modifica è registrata in
una cronologia che permette in caso di necessità di riportare il testo alla versione
precedente; lo scopo è quello di condividere, scambiare, immagazzinare e ottimizzare
la conoscenza in modo collaborativo. Il termine wiki indica anche il software
collaborativo utilizzato per creare il sito web e il server.
WSDL (Web Services Description Language), è un linguaggio formale in formato XML
utilizzato per la creazione di “documenti” per la descrizione di Web Service.
Mediante WSDL può essere, infatti, descritta l'interfaccia pubblica di un Web Service
ovvero creata una descrizione, basata su XML, di come interagire con un determinato
servizio: un “documento” WSDL contiene infatti, relativamente al Web Service
descritto, informazioni su cosa può essere utilizzato (le “operazioni” messe a
disposizione dal servizio), come utilizzarlo (il protocollo di comunicazione da utilizzare
per accedere al servizio, il formato dei messaggi accettati in input e restituiti in
91
GLOSSARIO
output dal servizio ed i dati correlati) ovvero i “vincoli” (bindings in inglese) del
servizio e dove utilizzare il servizio (cosiddetto endpoint del servizio che solitamente
corrisponde all'indirizzo - in formato URI - che rende disponibile il Web Service).
W3C (World Wide Web Consortium), è un consorzio che sviluppa tecnologie
(specifiche, linee guida, software, e strumenti) per portare il Web al massimo del suo
potenziale, definendo protocolli comuni che ne favoriscano l’evoluzione e assicurino
l’ interoperabilità.
XML (eXtensible Markup Language), è un meta-linguaggio di markup, cioè un
linguaggio che permette di definire altri linguaggi di markup. A differenza di HTML,
XML non ha tag predefiniti e non serve per definire pagine Web né per programmare.
Esso serve esclusivamente per definire altri linguaggi. Rispetto all'HTML, l'XML ha uno
scopo ben diverso: mentre il primo definisce una grammatica per la descrizione e la
formattazione di pagine web e, più in generale, di ipertesti, il secondo è un
metalinguaggio utilizzato per creare nuovi linguaggi, atti a descrivere documenti
strutturati. Mentre l'HTML ha un insieme ben definito e ristretto di tag, con l'XML è
invece possibile definirne di propri a seconda delle esigenze.
XPath, è un linguaggio parte della famiglia XML che permette di individuare i nodi
all'interno di un documento XML. Le espressioni XPath, a differenza delle espressioni
XML, non servono a identificare la struttura di un documento, bensì a localizzarne
con precisione i nodi.
XSD (XML Schema Definition), è un esempio concreto di schema XML scritto in
linguaggio XML Schema. Una XSD definisce il tipo di un documento XML in termini di
vincoli: quali elementi ed attributi possono apparire, in quale relazione reciproca,
quale tipo di dati può contenere, ed altro. Può essere usata anche con un programma
di validazione, al fine di accertare a quale tipo appartiene un determinato documento
XML.
92
BIBLIOGRAFIA
Rudi Studer, Richard Benjamins e Dieter Fensel (marzo 1998), Data & Knowledge
Engineering, Amsterdam, Elsevier Science Publishers B. V., Volume 25, pagine 161 – 197.
David Sklar (2005), PHP 5 Elementi di programmazione, Milano, McGraw-Hill.
Della Valle Emanuele, Celino Irene, Cerizza Dario (giugno 2009), Semantic Web - Dai
fondamenti alla realizzazione di un'applicazione, 1a edizione, Italia, Pearson Education
Italia.
Tim Berners-Lee, James Hendler, Ora Lassila (maggio 2001), The Semantic Web, Scientific
American Magazine, Scientific American Inc.
Jeffrey T. Pollock (2009), The Semantic Web for Dummies, Indianapolis (Indiana), Wiley.
Michael C. Daconta, Leo J. Obrst, Kevin T. Smith (2003), The Semantic Web: A Guide to the
Future of XML, Web Services and Knowledge Management, Indianapolis (Indiana), Wiley.
93
SITOGRAFIA
Sito di DoQui:
http://www.doqui.it/
Wiki di DoQui:
http://www.doqui.it/wiki/doku.php
Laboratorio di Accessibilità e Usabilità - Interrogare l'RDF con SPARQL:
http://lau.csi.it/realizzare/accessibilita/linguaggi_programmazione/SPARQL/rdf.shtml
Documentazione ARC2 - Framework PHP per RDF e SPARQL:
http://arc.semsol.org/
“Web2.0 Innovazione applicata ai servizi di Rete” di Federico Moro (Novembre 2006):
http://www.openarea.net/Web2.0.pdf
“Web 2.0 Compact Definition: Trying Again” di O’Really Radar:
http://radar.oreilly.com/archives/2006/12/web-20-compact-definition-tryi.html
“The Web Semantic” di Tim Berners-Lee:
http://www.scientificamerican.com/article.cfm?id=the-semantic-web/
Materiale del corso universitario “Semantic Web: Technologies, Tools, Applications” del
prfessore Fulvio Corno e della professoressa Laura Farinetti:
http://elite.polito.it/teaching-mainmenu-69/master-a-phd-mainmenu-94/56-01lhviusemweb
Raccomandazioni del W3C sul RDF Primer di Frank Manola ed Eric Miller:
http://www.w3.org/TR/rdf-primer/
Raccomandazioni del W3C sul RDF Schema di Dan Brickley e R.V. Guha:
http://www.w3.org/TR/rdf-schema/
Raccomandazioni del W3C sulle query SPARQL di Eric Prud'hommeaux, Andy Seaborne,
Hewlett-Packard Laboratories e Bristol:
http://www.w3.org/TR/rdf-sparql-query/
Tutorial sull’RDF realizzato dal W3schools:
http://www.w3schools.com/RDF/default.asp
Validatore RDF del W3:
http://www.w3.org/RDF/Validator/
Validatore RDF realizzato da Joshua Tauberer:
http://www.rdfabout.com/demo/validator/
94
Il Web Semantico in Italiano:
http://esw.w3.org/topic/SemWebItaly/
“Architecture of the World Wide Web” di Ian Jacobs e Norman Walsh:
http://www.w3.org/TR/webarch/
“Best Practice Recipes for Publishing RDF Vocabularies” di Diego Berrueta e Jon Phipps:
http://www.w3.org/TR/swbp-vocab-pub/
Progetto Semantic Web Services DIP – Data, Information and Process Integration:
http://www.service-finder.eu/
95