Prefazione
di una specifica situazione. La specifica di una concettualizzazione deve essere formale
perché deve risultare leggibile e comprensibile ad una macchina, esplicita perché i
concetti e le relazioni che intercorrono fra essi devono essere definiti puntualmente ed
esplicitamente. Inoltre è importante che la concettualizzazione sia condivisa, cioè, deve
comprendere conoscenza accettata da un gruppo di individui che ne fanno uso.
Come si può intuire, il Semantic Web non è solo un progetto che coinvolge tecnici
e informatici; molti problemi riguardanti la formalizzazione di conoscenza condivisa
sono, soprattutto, di natura filosofica. Nasce dunque un filone di ricerca interdisciplinare
che, utilizzando i risultati della filosofia del linguaggio e della linguistica e gli strumenti
di analisi, messi a disposizione da queste discipline, si propone una caratterizzazione
logica rigorosa dei termini e delle categorie ontologiche utilizzate nei sistemi
informativi, con lo scopo di aumentare la trasparenza semantica e l’interoperabilità.
Data la natura dei compiti che il Semantic Web dovrebbe rendere più facili e
precisi, ad esempio la ricerca di informazioni, si nota come il Semantic Web si basi
fondamentalmente su un insieme di dati, le ontologie, da cui estarre nuove informazioni
tramite reasoning, ovvero tramite procedimenti di inferenza logica. I sistemi che si
occupano di reasoning sono i reasoner. Questo dimostra che il funzionamento del
Semantic Web dipende da sistemi diversi come tool per la gestione delle ontologie e
reasoner. Quindi l’interoperabilità tra sistemi differenti è una delle problematiche aperte
del Semantic Web.
L’obiettivo che ci siamo proposti in questo lavoro è quello di sviluppare uno
strato software che collega un tool per la gestione di ontologie e un reasoner che miri ad
effettuare un task di Levelwise Instance Retrieval e ad esportarne i risultati in file con
sintassi Datalog. Tale strato software di collegamento è chiamato middleware.
In altre parole, un middleware è uno strato software che collega due o più
applicazioni in modo tale da potersi scambiare i dati e produrre i risultati attesi.
Il middleware è un software di connessione che consiste di un insieme di servizi
e/o di ambienti di sviluppo di applicazioni distribuite che permettono a più entità
(processi, oggetti ecc.), residenti su uno o più elaboratori, di interagire attraverso una
rete di interconnessione a dispetto di differenze nei protocolli di comunicazione,
architetture dei sistemi locali e sistemi operativi.
5
Prefazione
L’applicazione, che in questo lavoro è stata sviluppata è detta LIRe (Levelwise
Instance Retrieval), e rappresenta uno strato middleware fra un tool per la creazione e la
gestione di ontologie, ovvero Protégé 3.1, e un reasoner che supporti l’interfaccia DIG
che permette di interfacciare tutti i reasoner che la supportano allo stesso modo. In
questo caso, in base ai reasoner esistenti, è stato scelto Pellet che è comunque
sostituibile proprio in virtù dei vantaggi offerti dall’interfaccia DIG. Lo scopo è
effettuare il task di Levelwise Instance Retrieval e rendere disponibili i risultati in file
con sintassi Datalog da poter utilizzare su altri sistemi.
Il task di Levelwise Instance Retrieval consiste nel ricavare tutte le istanze (gli
individui) inferite dalle classi appartenenti a ciascun livello della gerarchia dichiarata
nell’ontologia a partire da un nodo radice a scelta fino alle foglie.
Il Levelwise Instance Retrieval è un task di reasoning non standard per i reasoner.
Ad ogni modo, questo task si riduce all’applicazione combinata di alcuni task
comunemente offerti da alcuni reasoner, tra cui Pellet.
Questa tesi si struttura in quattro capitoli fondamentali. Il primo capitolo introduce
i concetti fondamenti del Semantic Web e delle ontologie. Il secondo capitolo descrive
gli aspetti architetturali e funzionali di Protégé 3.1 (editor di ontologie) e del plugin
OWL di Protégé 3.1 (editor di ontologie OWL). Il terzo capitolo presenta l’interfaccia
DIG e i reasoner focalizzando l’attenzione su Pellet, descrivendone in particolare
l’architettura e i task supportati. Il quarto capitolo documenta la progettazione e la
realizzazione del middleware LIRe. Infine, viene fornita, in appendice, la
documentazione riguardante la progettazione dell’architettura di LIRe.
6
1. Introduzione al Semantic Web
1. Introduzione al Semantic Web
1.1 Dal Web al Semantic Web
"The Semantic Web is an extension of the current web in which information is given
well-defined meaning, better enabling computers and people to work in cooperation"
1
(Il Semantic Web è un’estensione dell’attuale Web, nella quale all’informazione viene
dato un significato ben definito, permettendo così ai computer e alle persone di lavorare
meglio in cooperazione).
Questa è la definizione del Semantic Web fornita da Tim Berners-Lee ovvero colui
che ha inventato il World Wide Web e ne indica gli sviluppi futuri.
Per capire perché abbiamo bisogno del Semantic Web dobbiamo partire da una
analisi del Web attuale. Il Web attuale è ormai uno strumento usato quotidianamente da
milioni di persone per gli scopi più disparati come comunicare, fare acquisti, cercare
informazioni. Il Web contiene, quindi, una quantità incredibile di informazioni. Queste
informazioni non sono nè centralizzate, perché risiedono in “luoghi” diversi, né
collegate sistematicamente tra loro. Questa natura non strutturata porta inevitabilmente
a degli inconvenienti
2
:
• ricerca di documenti
Un’attività praticata molto spesso è la ricerca e il recupero di documenti dal
web. Quest’operazione avviene in due modi:
o seguendo link ipertestuali che da un documento portano ad altri;
Questo metodo è molto dispendioso dal punto di vista del tempo
impiegato; inoltre non garantisce il raggiungimento dell’obiettivo,
soprattutto quando non si sa da dove partire per iniziare la ricerca.
o utilizzando motori di ricerca
Questo metodo rappresenta, certamente, quello più usato in quanto
l’informazione richiesta da “dare in pasto” al motore di ricerca è solitamente
limitata. L’utilizzo dei motori di ricerca ha anche molti limiti. Infatti se da un
lato abbiamo un elevato numero di documenti che vengono estratti, spesso
non tutti strettamente attinenti alla ricerca fatta, dall’altro abbiamo un
8
1. Introduzione al Semantic Web
enorme numero di pagine non indicizzate che, quindi, non saranno mai
raggiunte dai motori di ricerca. Si stima
3
, a questo proposito, che ci sono
circa 800 milioni di documenti in rete e, di questi, solo il 16-20% è
indicizzato dai motori di ricerca.
Inoltre vi è il problema dell’elevato numero dei falsi positivi e dei falsi
negativi. I primi si riscontrano in presenza di polisemie, di parole, cioè che
assumono più significati (per esempio la parola “pesca” : frutto o sport?):
può capitare che il motore di ricerca estragga documenti che non hanno
alcuna attinenza con la ricerca impostata dall’utente. I secondi si riscontrano
in presenza di sinonimi, di parole diverse che assumono lo stesso significato.
Infine, i motori di ricerca non sono in grado di ricercare contenuti
multimediali in base alle loro caratteristiche ma solo in base al titolo o alla
categoria che è stata loro assegnata. Non c’è, ad esempio, modo di ricercare
immagini ad alta definizione o video di una certa durata massima. Questi
problemi si verificano perché il motore di ricerca fa una semplice ricerca
delle parole all’interno dei documenti del web. Se le parole non vengono
trovate (anche per errori ortografici), il documento non viene presentato
all’utente.
• ricerca di informazione
Un altro limite è che qualsiasi ricerca effettuata restituisce come risultato un
documento e non l’informazione cercata. Per cui tocca all’utente rintracciare
l’informazione all’interno dei documenti estratti.
• Integrazione di informazione
Spesso diverse parti dell’informazione che ci interessa sono contenute in diversi
documenti, magari disponibili su siti diversi. Ancora una volta è compito dell’utente
recuperare le diverse parti dell’informazione da documenti diversi e combinarle
insieme.
• Cooperazione
Il Web attuale non permette la cooperazione tra programmi e tra programmi e
8
1. Introduzione al Semantic Web
utenti umani per risolvere problemi complessi. La maggior parte dei siti web non
sono progettati per fornire servizi ad altri servizi, ma semplicemente come
contenitori di informazioni che possono essere estratte a richiesta.
L’obiettivo del Semantic Web è quello di porre rimedio a questi problemi.
Mentre il Web attuale contiene delle informazioni comprensibili ad un agente umano, il
Semantic Web si propone di rendere l’informazione “comprensibile” alle macchine,
introducendo una struttura semantica ai contenuti del Web; questo consentirebbe ad
agenti software di “comprendere” le informazioni e di manipolarle, integrarle e renderle
disponibili ad altre applicazioni. Degli agenti software si parlerà più diffusamente nel
paragrafo 1.3.
Già da alcuni anni il W3C, l’organismo che si occupa dello sviluppo del web, ha
attivato un gruppo di lavoro che si occupa del Semantic Web. Di questo gruppo di
lavoro fanno parte anche alcune aziende, tra cui Nokia, IBM, Hewlett-Packard, Sun e
Philips, evidentemente attratte dalle prospettive di guadagno delle applicazioni
commerciali del Semantic Web: sono proprio queste aziende che si occupano delle
attività di ricerca e sviluppo.
Il Semantic Web si pone come uno strato che sta al di sotto
4
del Web attuale
proprio perché il suo compito è fornire una rappresentazione semantica dei documenti
che sia comprensibile e utilizzabile dalle macchine. Perciò il Semantic Web dovrebbe
rimanere il più possibile “invisibile” agli utenti umani che, però, vedranno nettamente
migliorati i risultati dei compiti che svolgeranno mediante il Web.
Ovviamente la produzione della rappresentazione semantica non sarà a carico di
chi produrrà il documento per il Web. Questo aspetto è molto importante perché, se
osserviamo lo sviluppo del Web attuale, questo si è avuto con l’avvento di tool
automatici per la produzione del codice HTML usato per la formattazione dei
documenti. Questo ha reso la creazione di documenti per il Web una operazione molto
semplice e veloce. Analogamente ci saranno dei tool che estrarranno la rappresentazione
semantica per i documenti già esistenti, ovvero quelli del Web attuale, e altri tool che
produrranno queste rappresentazioni contestualmente alla creazione di nuovi documenti,
per i documenti a venire, ovvero quelli prodotti quando il Semantic Web sarà una realtà
affermata.
9
1. Introduzione al Semantic Web
1.2 Architettura a strati
Nel 1998, quando Tim Berners-Lee presentò la sua strategia per lo sviluppo del
Semantic Web, egli presentò anche una proposta di architettura
5
a livelli, evidenziando
le tecnologie necessarie (esistenti e da elaborare) per la sua realizzazione.
Un’infrastruttura come il Semantic Web, che ha bisogno di anni prima di essere definita
completamente, necessita di un’edificazione graduale, per strati. Ogni strato deve essere
costruito sull’altro il quale rappresenta una base solida e condivisa. E’ importante,
infatti, che ad ogni passo, venga raggiunto un accordo fra i vari gruppi di ricerca, che si
raggiunga uno standard, affinché tutti possano avere lo stesso punto di partenza nella
costruzione dei successivi strati. Nella figura 1 è illustrata la “pila” del Semantic Web, in
parte già realizzata, in parte in fase di studio e ricerca.
Figura 1 – Struttura a strati del Semantic Web
Ognuno di questi strati è caratterizzato da un proprio linguaggio.
Lo strato Unicode - URI
Strato che si trova alla base della pila del Semantic Web e come tale offre un
servizio che gli strati soprastanti estendono e completano.
E’ frequente nel linguaggio parlato che una parola assuma diversi significati a
seconda del contesto del discorso. Per un agente umano non è difficile individuare il
10
1. Introduzione al Semantic Web
significato che tale parola assume di volta in volta, ma per un elaboratore questa
situazione rappresenta un conflitto. Infatti, per un elaboratore è di importanza
fondamentale individuare univocamente oggetti, proprietà, stati, predicati per poter
costruire codici di comunicazione non ambigui, per descrivere la semantica delle risorse
disponibili escludendo ogni possibile ambiguità.
La soluzione a questo problema sono gli URI (Universal Resource Identifier),
meccanismo per l’identificazione di una specifica risorsa. L’utilizzo degli URI
sopperisce alla mancanza di URL (Uniform Resource Locator) sottoinsieme di URI che
oltre a identificare una risorsa, la localizzano.
Gli URI permettono di rintracciare documenti e risorse che potrebbero cambiare
locazione come avviene spesso sul Web attuale.
Un esempio di URI è riportato di seguito:
http://www.sitoveicoli.it/veicoli#automobile
Sono stati sviluppati numerosi “schemi” di URI (URI forms) tra i quali:
• http: (Hypertext Transfer Protocol, per le pagine Web)
• mailto: (indirizzi di posta elettronica), es. mailto:[email protected]
• ftp: (file tranfer protocol)
• urn: (Uniform Resource Names, progettati allo scopo di definire degli
identificatori che fossero persistenti e indipendenti dalla posizione della risorsa)
Nessuna persona o organizzazione controlla la creazione degli URI o il modo in
cui essi possono essere utilizzati. Anche se alcuni schemi, come quello degli URL http:
dipendono da un sistema centralizzato quale il DNS, molti altri, sono completamente
decentralizzati. Questo significa che nessuno ha bisogno di autorità o permessi speciali
per creare un URI. Inoltre, è possibile definire URI che si riferiscono ad oggetti di cui
non si è proprietari allo stesso modo in cui, nel linguaggio naturale, una persona può
chiamare come vuole qualcosa che non gli appartiene.
Esiste poi il problema degli “alfabeti”; esistono centinaia di sistemi di cifratura,
quindi è necessario definire uno standard. Lo standard è stato individuato
11
1. Introduzione al Semantic Web
nell’UNICODE che ad ogni carattere associa un numero univoco, con il risultato di
semplificare lo sviluppo di software che diventa facilmente traducibile e adattabile a
qualsiasi lingua del mondo.
Lo strato XML + NS + XML Schema
Un primo passo verso l’introduzione di semantica all’interno di pagine Web o
applicazioni è l’introduzione di XML (Extensible Markup Language) definito nel 1998.
Questo linguaggio nasce per far fronte alle carenze di HTML il cui unico compito è la
formattazione grafica delle informazioni e il cui limite deriva dal non dare alcun
supporto per l’inserimento di semantica.
XML consente, in primo luogo, la separazione del contenuto dalla presentazione,
fornendo dunque il supporto a visualizzazioni diverse e personalizzate degli stessi dati.
Inoltre consente un’ampia libertà nella definizione di tag, ai quali viene assegnata della
semantica. Per questo viene detto un metalinguaggio, un sistema linguistico per mezzo
del quale è possibile analizzare i simboli e le strutture del linguaggio ordinario.
Un frammento esemplificativo di XML è fornito qui di seguito:
<veicolo>
<automobile numeroRuote=”4”>
<nome>Fiesta</nome>
<produttore>Ford</produttore>
</automobile>
<scooter numeroRuote=”2”>
<modello>xxx</modello>
<produttore>Piaggio</produttore>
</scooter>
</veicolo>
La struttura di un documento XML è basata su un modello ad albero, ossia su una
gerarchia di concetti, di proprietà, di attributi. In questa gerarchia vi è un nodo padre
(nel nostro caso ‘<veicolo>’)che contiene tutti gli altri. Ogni tag di un documento deve
avere un tag di chiusura. Ogni campo informativo contenuto in un tag viene detto
‘element’ e può essere arricchito dalla presenza di coppie nome/valore
(‘numeroRuote=”2”’). Queste coppie vengono dette ‘attribute’ e il valore deve essere
12
1. Introduzione al Semantic Web
racchiuso tra doppi apici(“”).Ogni tag può contenere altri tag annidati inseriti
correttamente.
Un documento XML che rispetti le poche regole suddette viene detto well-formed;
viene detto validato quando è coerente con un struttura definita in un documento (DTD,
Document type Definition), che può essere diverso dal documento XML o può essere
integrato nel documento XML stesso. In un documento DTD si può restringere il
numero dei tag utilizzabili in un file XML, la cardinalità dei tag, si può definire se un
attributo è obbligatorio oppure no, se ne può definire il tipo.
La sintassi DTD presenta, però, dei limiti: non è possibile definire dei datatype;
inoltre ha una sintassi propria e quindi richiede editor e parser ad hoc.
Per colmare queste lacune è stato elaborato, dal W3C, XML Schema, per descrivere la
struttura dei documenti XML in modo più espressivo rispetto al DTD. La sua
particolarità è quella di essere descritto attraverso una sintassi XML: ciò non deve
stupire in quanto XML è un metalinguaggio e può quindi essere utilizzato per
rappresentare altri linguaggi di markup.
XML Schema consente la definizione di :
• elementi, attributi e relazioni (come le DTD);
• tipi di dati;
• vincoli (range, lunghezza stringa, precisione decimale, …).
I vantaggi di XML possono essere schematizzati come segue
• possibilità di descrivere i domini, attraverso la creazione di tag personalizzati;
• forte attitudine allo scambio di dati fra applicazioni e sul web in quanto,
indipendente dalla piattaforma;
• separazione fra contenuto e presentazione;
• possibililità di verifica della correttezza sintattica della struttura del documento
XML attraverso documenti DTD o XML Schema;
• possibilità che i dati, contenuti in esso, vengano facilmente elaborati (ordinati,
filtrati, riorganizzati);
• utilizzabile per la creazione di altri linguaggi di mark-up.
13