download tesi - MobiLab - Università degli Studi di Napoli Federico II
download tesi - MobiLab - Università degli Studi di Napoli Federico II
download tesi - MobiLab - Università degli Studi di Napoli Federico II
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
UNIVERSITÀ DEGLI STUDI DI NAPOLI FEDERICO <strong>II</strong><br />
Facoltà <strong>di</strong> Ingegneria<br />
Corso <strong>di</strong> Laurea in Ingegneria Informatica<br />
TESI DI LAUREA<br />
Un approccio basato su ontologie per l’integrazione <strong>di</strong> sistemi<br />
per la gestione del traffico aereo<br />
RELATORE<br />
Ch.mo Prof. Domenico Cotroneo<br />
CORRELATORE<br />
Ing. Giancarlo Cinque<br />
ANNO ACCADEMICO 2007-08<br />
CANDIDATO<br />
Adalberto Scognamiglio<br />
matr. 41/2855
…a mia nonna<br />
…alla mia famiglia<br />
…ed a tutte le persone che mi vogliono bene<br />
ii
« È la mancanza <strong>di</strong> fede che rende le persone paurose <strong>di</strong> accettare una<br />
sfida, e io ho sempre avuto fede: infatti, credo in me »<br />
(Muhammad Ali)<br />
iii
Ringraziamenti<br />
...meglio tar<strong>di</strong> che mai……e si!! anche io finalmente sono giunto dopo tanti<br />
anni e tanta fatica al momento dei ringraziamenti,...e <strong>di</strong> persone che devo<br />
ringraziare, ah no che mi devono ringraziare, ah no…sono un po’<br />
confuso…c'è ne son tante……lo so, non vi sembra vero, ma anche a me non<br />
sembra vero quante persone ho dovuto sopportare!!<br />
adesso però devo iniziare, ed allora iniziamo dagli addetti ai lavori…<br />
La prima che devo ringraziare è la se<strong>di</strong>a della mia scrivania, poverina,<br />
nessuno può negarle lo sforzo prodotto in tutti questi anni!! Abbiamo legato<br />
molto, come si <strong>di</strong>ce…sedere e camicia…<br />
per non parlare del mio libretto che ha visto la luce un paio <strong>di</strong> volte<br />
l'anno……sapete com'è…per non fargli prendere freddo…<br />
ma <strong>di</strong>ventiamo seri come siamo sempre stati!!!<br />
…il primo che mi deve ringraziare è giancarlo, il guru, gli ho fatto capire<br />
cosa sono le ontologie, che SWIM è nu 'mbrogliooo ma soprattutto gli ho<br />
fatto capire che significa lavorare in una certa maniera…'a pariààààà!!<br />
grazie gianky…<br />
…il secondo che mi deve ringraziare è domenico. gli ho fatto capire come si<br />
gioca a tennis ma soprattutto gli ho fatto capire che il suo colpo più potente<br />
è il dritto dritto negli spogliatoi…vabè non prendertela almeno sei forte a<br />
tavola panzarò…!! grazie dome…tvb!!<br />
poi c'è quel chiattone <strong>di</strong> christian…che da quando mi ha conosciuto capisce<br />
solo i makkeroni…magna, però è nu brav uaglion…<br />
…un grosso ringraziamento me lo deve il mio "strano" zio meglio<br />
conosciuto come antonio nazionale, uno che in questo periodo invece <strong>di</strong> una<br />
mano è sempre pronto a dare un <strong>di</strong>to, a fare un colloquio a tutti od a<br />
chiedere un passaggio…e vabè se lo merita anche lui…<br />
…un ringraziamento me lo deve dario <strong>di</strong> crescenzo, almeno ha avuto un<br />
altro portatile con cui giocare…<br />
…non posso <strong>di</strong>menticare nutella, grazie a lui mi sono sentito zeus in<br />
persona…<br />
…e poi c'è il pecchione, il super pecchione sempre pronto a scappare da<br />
un’altra parte quando gli devi kiedere qualcosa…solo le femmine sanno<br />
come immobilizzarlo!!!grazie per le cofecchie su google talk…<br />
…passiamo adesso agli addetti alla per<strong>di</strong>ta <strong>di</strong> tempo, perchè <strong>di</strong> stu<strong>di</strong>are<br />
veramente non se n'è mai parlato…mi piace partire da lontano…<br />
c'era una volta tanto tempo fà un ragazzo con tanti capelli…per gli amici<br />
alfredo per me fofò…è bene si, è tutta colpa sua, se non mi avesse mai fatto<br />
copiare quella prova <strong>di</strong> inglese…io adesso sarei qualcuno ed invece…<br />
stamm nguaiat!! …pantani o eiffel65…mi hai insegnato che con la volontà<br />
si può arrivare ovunque e prima <strong>degli</strong> altri!!! forza fofò…sei il più forte!!!<br />
…poi vennero rino, mimmo e felice…mi hanno sperduto…chissà adesso<br />
dove stanno… ci fu poi stanislao ed il mio primo trenta…e si…non ci<br />
crederete ma ho trenta trenta!! ma non li ho fatti registrare sul<br />
libretto…anzi non li ho fatti registrare proprio!!<br />
e fin qui son stato uno studente…poi è iniziato il lavoro e le cattive<br />
amicizie…<br />
iv
…un nome su tutti…caccavale…il mio super eroe…quante risate…l'unico a<br />
cui ho permesso sempre <strong>di</strong> copiare…o lo ami o lo o<strong>di</strong>…per me un amiko<br />
sincero…ed ankora rocco, emanuele, clau<strong>di</strong>o, mauro………<br />
…arriviamo ai giorni nostri....<br />
…tutto iniziò quando un tipo con capelli strani, un pò bruttino, ma che<br />
sembrava simpatico mi telefonò chiedendomi se volevo fare il doppio con<br />
lu…io risposi guarda che già sono doppio da solo, ma insieme possiamo<br />
vincere…e per me veramente fu una grande conquista…non giocava male<br />
anche se dovevo spiegargli cosa fare in campo in ogni momento, ma la sua<br />
grande qualità fu quella <strong>di</strong> farmi conoscere tante persone con cui adesso<br />
passo gran parte dei miei giorni…….e allora fu Michele…ed io finalmente,<br />
qualcuno peggio <strong>di</strong> me!! da quel giorno non mi ha lasciato più, ho provato<br />
ad abbandonarlo per strada, in un canile, in una <strong>di</strong>scarica ma niente…son<br />
costretto a portarlo con me anche in vacanza!! ma adesso mi sono fatto<br />
furbo, gli ho regalato il giocattolino…la farfallina rossa che gli ha<br />
muzzicato o muss…adesso deve stare attento a quello che fa…grazie<br />
carmen………e gabriellina…sport4life…se non ci fosse lei ad organizzare<br />
le partire ed a sbucciarmi le mele…sei forte gabry!!!<br />
…un grazie al rosso, conosciuto da poko ma con cui ho subito legato…ed<br />
un grazie a peppe trincia…almeno non sarò l'ultimo del vecchio<br />
or<strong>di</strong>namento!!! ……… e mo il <strong>di</strong>fficile…<br />
padre gigi…il mio bombolo preferito…mi ha insegnato il poker ma<br />
soprattutto mi ha insegnato che vuol <strong>di</strong>re aiutare gli altri…tvb!!…e donna<br />
mena…come farei senza <strong>di</strong> lei e le sue crepes…il sikkazzo…pronto sempre<br />
ad offrirmi una pizza… hhhhuuuuulllllldddddd…grosso grasso e<br />
bambinone…troppo buono!!!<br />
ed ankora…nino,salvatore,rosalia,la signora anna, luca, antonio pirozzi,<br />
maria, marcoragno, peppone, mimmo, debora, picar<strong>di</strong>, danilo, angelo,<br />
luigi, alessandro, iole, attilio, marilena, paola, ivan, enrico, luca, elda,<br />
fabio, viola, gianmaria, stefania, valentina la pinguina, silvio, nazzareno,<br />
enzo pirone, giovanna, marinella, nello, antonio, alessandro e filippo,<br />
salvatore, marianna, valeria, nicola, marianna...<br />
un ringraziamento particolare al sig. dott. Eugenio Esposito, che con la sua<br />
stima e i suoi consigli non mi ha mai fatto perdere <strong>di</strong> vista il mio vero<br />
obiettivo……<br />
ed ora è il momento delle persone a me più care…non scriverò tante parole<br />
perchè spero <strong>di</strong> riuscire, ogni giorno, a far capire loro quanto sono<br />
importanti per me....<br />
Ringrazio ogni giorno mia nonna Ersilia, che è stata e continuerà ad essere<br />
il mio spirito…<br />
Ringrazio mio padre, per me esempio <strong>di</strong> onestà e <strong>di</strong>gnità…<br />
Ringrazio mia madre… la mia guida e più cara consigliera…<br />
Ringrazio i miei fratelli, i miei complici più fedeli…<br />
Ringrazio sara, che è la mia forza <strong>di</strong> ogni giorno…<br />
Ringrazio tutti gli zii ed i cugini che giorno dopo giorno mi hanno incitato a<br />
non mollare...<br />
Ringrazio i genitori e le zie <strong>di</strong> sara per la stima che hanno in me…<br />
ma passiamo sul serio alle persone serie!!!<br />
Ringrazio il DIS ed il Mobilab nelle persone del prof Russo, marcello,<br />
generoso e lelio.<br />
v
Ringrazio il Cini che mi ha coccolato per lungo tempo, grazie ad imma,<br />
pietrantuono, carlo sanghez, stanislao, nicola, massimo ficco e salvatore<br />
d'antonio.<br />
Ringrazio il Sesm nelle persone <strong>di</strong> massimo, sara, alfonso ed i tanti amici<br />
che ho conosciuto li...frank&frank,ivano&ivana,ezio,peppe,enzo e daniele..<br />
Spero <strong>di</strong> non aver <strong>di</strong>menticato nessuno, ma qualora fosse successo, sarò<br />
contento <strong>di</strong> ringraziarlo <strong>di</strong> persona perchè il solo fatto che abbia letto<br />
queste righe significa che a lui non sono uno sconosciuto.<br />
vi
In<strong>di</strong>ce<br />
INTRODUZIONE 1<br />
CAPITOLO 1 4<br />
INTEGRAZIONE DI SISTEMI GEOGRAFICAMENTE 4<br />
ESTESI PER L’AIR TRAFFIC MANAGEMENT 4<br />
1.1 – Introduzione 4<br />
1.2 – Ultra Large Scale System 6<br />
1.3 – Air Traffic Management 11<br />
1.3.1 – Contesto 11<br />
1.3.2 – Gestione <strong>di</strong> un volo 11<br />
1.3.3 – Limiti attuali della gestione del traffico aereo 14<br />
1.3.4 – Il futuro Sistema ATM Europeo: SESAR 16<br />
1.4 – SWIM - System Wide Information Management 18<br />
1.4.1 – Overview 18<br />
1.4.2 – Definizione 20<br />
1.4.3 – SWIM-SUIT 21<br />
1.4.3.1 – Architettura stratificata 22<br />
1.4.3.2 – SWIM ATM Information Model 24<br />
1.4.3.3 – Caratteristiche Generali e Sfide Aperte 26<br />
CAPITOLO 2 35<br />
GESTIONE SEMANTICA DEI DATI: LE ONTOLOGIE. 35<br />
2.1 – Introduzione 35<br />
2.2 – Definizioni 36<br />
2.3 – Esigenze che spingono a modellare semanticamente un dato dominio 39<br />
2.4 – Vantaggi nell’uso <strong>di</strong> Ontologie 41<br />
2.5 – Tipi <strong>di</strong> ontologie 43<br />
2.6 – Costruzione <strong>di</strong> un’ontologia 44<br />
2.7 – Web Semantico come esempio <strong>di</strong> impiego <strong>di</strong> ontologie 50<br />
2.7.1 – Contesto 50<br />
2.7.2 – Architettura del Web Semantico 53<br />
2.8 – Linguaggi per la definizione <strong>di</strong> ontologie 56<br />
2.8.1 – URI : Uniform Resource Identifiers 56<br />
2.8.2 – XML : Extensible Markup Language 58<br />
2.8.3 – RDF : Resource Description Framework 64<br />
2.8.3.1 – RDF Data Model 65<br />
2.8.3.2 – RDF Schema 69<br />
2.8.4 – OWL : Ontology Web Language 73<br />
2.8.4.1 – I tre linguaggi <strong>di</strong> OWL 76<br />
2.8.4.2 – I costrutti principali <strong>di</strong> OWL 78<br />
2.9 – Reasoning 80<br />
2.10 – Tools per la definizione e l’utilizzo <strong>di</strong> Ontologie 84<br />
2.10.1 – PROTÉGÉ : E<strong>di</strong>tor per Ontologie 85<br />
2.10.2 – SPARQL : Query Language 86<br />
2.10.3 – PELLET : Un Reasoner per OWL 88<br />
2.10.4 – JENA 90<br />
vii
CAPITOLO 3 94<br />
DEFINIZIONE DI UN SEMANTIC MESSAGE ORIENTED MIDDLEWARE A SUPPORTO<br />
DEI SISTEMI ATM 94<br />
3.1 – Introduzione 94<br />
3.2 – Pattern Cooperativi per l’ATM 95<br />
3.3 – Java Message Service 101<br />
3.3.1 – MOM : Modello Orientato ai Messaggi 101<br />
3.3.2 – JMS 105<br />
3.4 – Definizione <strong>di</strong> un Information Model per l’ATM 112<br />
CAPITOLO 4 121<br />
DEFINIZIONE DI UN INFORMATION MODEL BASATO SU ONTOLOGIA PER IL<br />
SISTEMA SWIM 121<br />
4.1 – Introduzione 121<br />
4.2 – Scenari Considerati 122<br />
4.2.1 – Calcolo della lista <strong>di</strong> <strong>di</strong>stribuzione dei dati <strong>di</strong> volo 122<br />
4.2.2 – Definizione dei Ruoli a partire dai dati 128<br />
4.2.3 – Correlazioni tra i cluster dei dati <strong>di</strong> volo 130<br />
4.3 – Information Model 132<br />
4.3 – Applicazione 141<br />
4.3.1 – Architettura 141<br />
4.3.2 – Presentazione dei Risultati 143<br />
CONCLUSIONI E SVILUPPI FUTURI 148<br />
RIFERIMENTI 150<br />
viii
In<strong>di</strong>ce delle figure<br />
FIGURA 1.1 - MIDDLEWARE .....................................................................................10<br />
FIGURA 1.2 - FASI DI UN VOLO.................................................................................12<br />
FIGURA 1.3 - EATMS (VISIONE GENERALE) ............................................................19<br />
FIGURA 1.4 - ARCHITETTURA STRATIFICATA DI SWIM............................................22<br />
FIGURA 1.5 - CONNESSIONE SISTEMA ATM-SWIM .................................................23<br />
FIGURA 1.6 - SESAR ATM INFORMATION MODEL..................................................25<br />
FIGURA 1.7 - ESTENSIONE GEOGRAFICA ..................................................................27<br />
FIGURA 1.8 - GLOBAL DATA SPACE.........................................................................30<br />
FIGURA 1.9 - DECENTRALIZZAZIONE........................................................................31<br />
FIGURA 1.10 - ETEROGENEITÀ DEI DATI...................................................................32<br />
__________________________________________________________________<br />
FIGURA 2.1 - INDIPENDENZA DAL VOCABOLARIO ....................................................37<br />
FIGURA 2.2 - ESEMPIO SCHEMA ONTOLOGIA ...........................................................38<br />
FIGURA 2.3 - ARCHITETTURA DEL WEB SEMANTICO ...............................................55<br />
FIGURA 2.4 - ESEMPIO DI COSTRUZIONE DI UNA RICETTA IN XML ..........................59<br />
FIGURA 2.5 - ESEMPIO DI BIBLIOGRAFIA..................................................................60<br />
FIGURA 2.6 - ESEMPIO DI RICETTA CON BIBLIOGRAFIA............................................60<br />
FIGURA 2.7 - ESEMPIO DI DEFINIZIONE DI UN NAMESPACE........................................61<br />
FIGURA 2.8 - SOLUZIONE DELL’AMBIGUITÀ CON I NAMESPACE................................62<br />
FIGURA 2.9 - IDENTIFICATORE (URI) PER NAMESPACE.............................................63<br />
FIGURA 2.10 - PREFISSI E NAMESPACE......................................................................63<br />
FIGURA 2.11 - XML STRUTTURA AD ALBERO...........................................................64<br />
FIGURA 2.12 - DATA MODEL RDF, SOGGETTO, PREDICATO E OGGETTO.................66<br />
FIGURA 2.13 – RDF - STRUTTURA A GRAFO.............................................................67<br />
FIGURA 2.14 - SERIALIZZAZIONE RDF DOCUMENT .................................................68<br />
FIGURA 2.15 - GLI STRATI RDF E RDFS .................................................................72<br />
FIGURA 2.16 - GENESI DI OWL................................................................................74<br />
FIGURA 2.17 - OWL VS RDF/RDFS ........................................................................75<br />
FIGURA 2.18 - STACK OWL ONTOLOGY..................................................................76<br />
FIGURA 2.19 - LIVELLI LINGUAGGI OWL.................................................................77<br />
FIGURA 2.20 - ESEMPIO OWL HEADER ...................................................................78<br />
FIGURA 2.21 - COSTRUTTI OWL PER LA DEFINIZIONE DI CLASSI..............................79<br />
FIGURA 2.22 - COSTRUTTI OWL PER LA DEFINIZIONE DI PROPRIETÀ .......................79<br />
FIGURA 2.23 - FINESTRA PROTÈGÈ...........................................................................85<br />
FIGURA 2.24 - SEMPLICE ESEMPIO DI QUERY SPARQL...........................................88<br />
FIGURA 2.25 - PELLET SYSTEM ARCHITECTURE[23]................................................90<br />
FIGURA 2.26 - LINGUAGGI PER ONTOLOGIE E RELATIVE URI ..................................92<br />
__________________________________________________________________<br />
FIGURA 3.1 - DEFINIZIONE DEI RUOLI ......................................................................96<br />
FIGURA 3.3 - COMUNICAZIONE DI TIPO REQUEST-RESPONSE ....................................98<br />
FIGURA 3.4 - SCHEMA GENERALE D’INTERAZIONE ..................................................99<br />
FIGURA 3.5 - GLOBAL DATA SPACE.......................................................................100<br />
FIGURA 3.6 - MOM COMUNICAZIONE TRAMITE CODE DI MESSAGGI ......................102<br />
FIGURA 3.7 - PUBLISH-SUBSCRIBE MESSAGING.....................................................104<br />
FIGURA 3.8 - POINT-TO-POINT MESSAGING.............................................................108<br />
ix
FIGURA 3.9 - PUBLISH-SUBSCRIBE MESSAGING .......................................................109<br />
FIGURA 3.10 - JMS API PROGRAMMING MODEL ....................................................112<br />
FIGURA 3.11 - ICOG : DISTRIBUTION CLUSTER.......................................................113<br />
FIGURA 3.12 - SCRIPT CLASS DIAGRAM...................................................................114<br />
FIGURA 3.13 - FLIGHTIDENTIFICATION CLASS DIAGRAM.........................................115<br />
FIGURA 3.14 - TRAJECTORY CLASS DIAGRAM .........................................................116<br />
FIGURA 3.15 - FLIGHTKEY CLASS DIAGRAM ...........................................................117<br />
FIGURA 3.16 - FLIGHTPLANDATA CLASS DIAGRAM................................................118<br />
__________________________________________________________________<br />
FIGURA 4.1 - TRAJECTORY.....................................................................................123<br />
FIGURA 4.2 - AREE ASSOCIATE AI SISTEMI .............................................................123<br />
FIGURA 4.3 - ILLUSTRAZIONE DELLE AREE ............................................................124<br />
FIGURA 4.4 - CORRISPONDENZA SISTEMI - AREE ...................................................126<br />
FIGURA 4.5 - TRAJECTORY BOUNDARY POINT ..........................................................126<br />
FIGURA 4.6 - ESTRATTO ONTOLOGIA OWL ...........................................................133<br />
FIGURA 4.7 - TASSONOMIA INFORMATION MODEL..................................................134<br />
FIGURA 4.8 - TASSONOMIA DATATYPE PROPERTIES................................................137<br />
FIGURA 4.9 - DIZIONARIO DATATYPE PROPERTIES..................................................138<br />
FIGURA 4.10 - TASSONOMIA OBJECT PROPERTIES..................................................138<br />
FIGURA 4.11 - DIZIONARIO OBJECT PROPERTIES....................................................140<br />
FIGURA 4.12 - COMPONENT AND DEPLOYMENT VIEW ..............................................141<br />
FIGURA 4.13 - ARCHITETTURA A LIVELLI DELL’APPLICAZIONE..............................142<br />
FIGURA 4.11 - SCENARIO OPERATIVO 2 .................................................................144<br />
FIGURA 4.12 - OUTPUT SCENARIO 1.......................................................................145<br />
FIGURA 4.13 - SCENARIO OPERATIVO 2 .................................................................146<br />
FIGURA 4.14 - OUTPUT SCENARIO 2.......................................................................147<br />
x
Introduzione<br />
Negli ultimi anni, l’attenzione della comunità informatica si è rivolta verso i<br />
cosiddetti “Enterprise Architecture Systems”. Con questo termine s’intende<br />
un ampia classe <strong>di</strong> sistemi eterogenei, con proprietari <strong>di</strong>versi, che svolgono<br />
funzioni <strong>di</strong>verse, messi insieme al fine <strong>di</strong> realizzare processi complessi in<br />
maniera interoperabile. Nonostante decenni <strong>di</strong> sviluppo delle tecnologie<br />
informatiche, i requisiti imposti da questi sistemi moderni rendono<br />
<strong>di</strong>fficoltoso se non impossibile la realizzazione ex-novo <strong>di</strong> una soluzione<br />
software con tali caratteristiche. In tempi recenti, l’ingegneria del software<br />
ha quin<strong>di</strong> puntato l’attenzione su approcci <strong>di</strong> sviluppo, processi e strumenti<br />
che appoggiano l’idea <strong>di</strong> estendere la vita <strong>di</strong> soluzioni esistenti realizzando<br />
soluzioni che supportano la visione secondo cui grossi sistemi software<br />
possono essere assemblati a partire da altri sistemi o applicazioni<br />
in<strong>di</strong>pendenti, riusabili ma soprattutto eterogenee.<br />
In un contesto così esteso, al quale normalmente ci si riferisce parlando <strong>di</strong><br />
“System of Systems”, l’esigenza che emerge fortemente è quella <strong>di</strong> realizzare<br />
l’interoperabilità tra piattaforme hardware e software fortemente eterogenee,<br />
spesso incompatibili tra <strong>di</strong> loro che prevedono l’integrazione <strong>di</strong> sistemi <strong>di</strong><br />
1
tipo legacy o comunque realizzati in perio<strong>di</strong> in cui requisiti come<br />
l’interoperabilità non erano sentiti come invece lo sono adesso.<br />
Ed allora un modo <strong>di</strong> concepire sistemi <strong>di</strong> tipo Enterprise è quello <strong>di</strong><br />
considerarli come composti da un insieme <strong>di</strong> tanti sistemi in<strong>di</strong>pendenti che<br />
si integrano e collaborano realizzando funzionalità complesse attraverso la<br />
composizione dei servizi offerti da ciascuno <strong>di</strong> essi ma soprattutto attraverso<br />
un efficiente meccanismo <strong>di</strong> con<strong>di</strong>visione delle informazioni.<br />
Un esempio <strong>di</strong> “system of systems” sarà il sistema <strong>di</strong> nuova generazione per<br />
la gestione delle informazioni del traffico aereo. Fino ad oggi i sistemi per<br />
l’ATM, per lo più sistemi <strong>di</strong> tipo legacy, sono stati sviluppati<br />
in<strong>di</strong>pendentemente l’uno dall’altro con la conseguenza che risultano poco<br />
integrabili fino al punto da non consentire la <strong>di</strong>sponibilità nel modo e nel<br />
momento giusto delle informazioni pertinenti. In questo contesto si cala il<br />
progetto SWIM, un progetto della Comunità Europea, che intende, definire<br />
l’infrastruttura <strong>di</strong> un sistema che favorendo l’interoperabilità nel mondo<br />
ATM costruisca me<strong>di</strong>ante l’utilizzo <strong>di</strong> tecnologie moderne, affidabili e<br />
sicure un ‘Global European System’ basato su un modello delle<br />
informazioni con<strong>di</strong>viso. Pertanto, in un sistema con queste caratteristiche e<br />
questi propositi tanto ambiziosi, devono essere presenti meccanismi<br />
flessibili per la gestione dei vari sistemi, che permettano l’integrazione ed il<br />
coor<strong>di</strong>namento <strong>di</strong> questi ma che contemporaneamente minimizzino le<br />
relative inter<strong>di</strong>pendenze e non ne compromettano le prestazioni .<br />
Centrando, quin<strong>di</strong>, l’attenzione sull’interoperabilità dei sistemi soprattutto<br />
per quanto riguarda i dati, questa proprietà può essere ottenuta rilassando le<br />
<strong>di</strong>pendenze tra i vari sistemi che devono comunicare, in particolare,<br />
minimizzando le connessioni <strong>di</strong> tipo end-to-end che necessitano che i<br />
2
sistemi coinvolti si siano preventivamente accordati su formati e protocolli e<br />
rilasciando nuove funzionalità che forniscano valore aggiunto al patrimonio<br />
dei dati, in tempi rapi<strong>di</strong> ed a costi contenuti. La realizzazione <strong>di</strong> un Global<br />
Data Space, è un requisito fondamentale per un sistema con tali<br />
caratteristiche.<br />
In tempi moderni, elemento centrale per l’interconnessione e l’integrazione<br />
dei sistemi è l’utilizzo <strong>di</strong> un’infrastruttura middleware per l’accesso ai dati<br />
(Data Access Middleware) in modalità asincrona.<br />
Nell’ottica sempre <strong>di</strong> facilitare l’interoperabilità tra sistemi ed applicazioni<br />
<strong>di</strong>stribuite in rete, particolare interesse rivestono allora anche gli aspetti <strong>di</strong><br />
modellazione delle informazioni. Come auspicato dall’inventore del Web,<br />
Tim Berners Lee, problemi <strong>di</strong> interoperabilità tra i sistemi e <strong>di</strong> gestione delle<br />
relative risorse, saranno risolti nel momento in cui i dati non avranno<br />
soltanto una struttura (sintassi) chiaramente definita ma anche un significato<br />
(semantica) con<strong>di</strong>viso dalla comunità che li utilizza. In questo contesto non<br />
è più sufficiente unicamente strutturare i dati, ma si necessita <strong>di</strong> un ulteriore<br />
livello <strong>di</strong> modellazione delle informazioni che attraverso l’utilizzo <strong>di</strong><br />
linguaggi formali permetta <strong>di</strong> ottenere una conoscenza sempre più machine-<br />
processable dei dati che si vanno a trattare a supporto <strong>di</strong> tutte le possibili<br />
attività decisionali e governative che si devono intraprendere.<br />
3
1.1 – Introduzione<br />
Capitolo 1<br />
Integrazione <strong>di</strong> sistemi geograficamente<br />
es<strong>tesi</strong> per l’Air Traffic Management<br />
Alla fine <strong>degli</strong> anni ’80, la <strong>di</strong>ffusione delle reti <strong>di</strong> calcolatori e dei sistemi<br />
<strong>di</strong>stribuiti ha fatto emergere una nuova <strong>di</strong>mensione nell’industria del<br />
software: la prospettiva dello sviluppo <strong>di</strong> sistemi su larga scala attraverso<br />
l’integrazione <strong>di</strong> sistemi. Con il termine Enterprise Architecture Systems si<br />
intendono proprio sistemi eterogenei, con proprietari <strong>di</strong>versi, che svolgono<br />
funzioni <strong>di</strong>verse, messi insieme al fine <strong>di</strong> realizzare processi complessi in<br />
maniera interoperabile.<br />
Lo sviluppo delle reti ha fatto crescere per aziende ed organizzazioni<br />
complesse l’esigenza <strong>di</strong> un nuovo approccio allo sviluppo dei propri sistemi,<br />
per adeguarsi alla <strong>di</strong>versità ed ai cambiamenti delle tecnologie hardware,<br />
software e <strong>di</strong> rete. Un approccio basato non più soltanto sulla progettazione<br />
ex-novo dei sistemi, ma che estende la vita <strong>di</strong> soluzioni già esistenti<br />
definendo nuove funzionalità nei sistemi pre-esistenti ed integrando sistemi<br />
legacy che non devono essere esclusi.<br />
4
Nell’era delle reti <strong>di</strong> telecomunicazione, l’eterogeneità delle tecnologie<br />
hardware e software e la <strong>di</strong>stribuzione geografica sono da considerarsi la<br />
norma, non più l’eccezione, e ciò anche all’interno <strong>di</strong> una stessa<br />
organizzazione, pubblica o privata che sia. Di conseguenza, in uno scenario<br />
simile, non si può prescindere da requisiti quali in<strong>di</strong>pendenza tecnologica ed<br />
interoperabilità sia a livello <strong>di</strong> dati che a livello applicativo. In Particolare<br />
nel contesto della gestione del traffico aereo, in cui i sistemi legacy ed i<br />
sistemi <strong>di</strong> nuova generazione devono continuamente collaborare, requisiti<br />
come quelli sopra elencati, richiedono meccanismi sempre più evoluti per la<br />
con<strong>di</strong>visione delle informazioni. Il focus <strong>di</strong>venta, quin<strong>di</strong>, quello <strong>di</strong> realizzare<br />
sistemi ed applicazioni fortemente orientate ai dati, in cui ogni informazione<br />
abbia un significato preciso e con<strong>di</strong>viso tra i vari attori che quin<strong>di</strong> sanno<br />
come gestirla e manipolarla.<br />
Il capitolo inizia con un ampia panoramica su cosa s’intende per sistemi su<br />
larga scala, quali sono le caratteristiche e le sfide che presentano.<br />
Si procede poi con un’introduzione al mondo ATM, si definiscono gli<br />
attori, le procedure che tali attori devono espletare e soprattutto i vincoli<br />
istituzionali e tecnologici che tali sistemi devo affrontare e che<br />
inevitabilmente ne influenzano i comportamenti nonché le prestazioni.<br />
In tale contesto interviene SESAR, un progetto della Comunità Europea per<br />
la realizzazione <strong>di</strong> un sistema su larga scala, <strong>di</strong> nuova generazione, per la<br />
gestione del traffico aereo in grado <strong>di</strong> superare le limitazioni attuali. Ed in<br />
tale ambito vanno inseriti a loro volta i progetti SWIM e SWIM-SUIT. Il<br />
primo ha come obiettivo la realizzazione <strong>di</strong> un infrastruttura per<br />
l’integrazione dei sistemi ATM legacy andando a costruire un pool virtuale<br />
per la con<strong>di</strong>visione delle informazioni tra tali sistemi; il secondo, invece,<br />
5
cerca <strong>di</strong> realizzare un prototipo come risultato <strong>di</strong> uno stu<strong>di</strong>o <strong>di</strong> fattibilità del<br />
più ampio SWIM.<br />
1.2 – Ultra Large Scale System<br />
Oggi giorno, vista la crescente complessità dei sistemi, l’ingegneria del<br />
software pone attenzione su approcci <strong>di</strong> sviluppo, processi e strumenti alla<br />
cui base c’è l’idea che i sistemi software <strong>di</strong> gran<strong>di</strong> <strong>di</strong>mensioni possano<br />
essere assemblati a partire da collezioni <strong>di</strong> sistemi e funzionalità<br />
in<strong>di</strong>pendenti e riusabili. Alcuni <strong>di</strong> questi elementi possono essere già<br />
esistenti o acquisiti da terze parti o possono essere sviluppati ex-novo. In<br />
ogni caso l’intero sistema deve essere progettato in modo da far coesistere<br />
tutti questi elementi in un unico e coerente ambiente. Con l’avvento delle<br />
reti <strong>di</strong> calcolatori e dei sistemi <strong>di</strong>stribuiti, lo scenario <strong>di</strong> cui sopra si estende<br />
allo sviluppo <strong>di</strong> sistemi su larga scala. I sistemi software caratterizzati da<br />
un’ ampia estensione geografica, in inglese Ultra-Large-Scale systems,<br />
rappresentano quin<strong>di</strong> la nuova frontiera dei sistemi <strong>di</strong>stribuiti complessi[1].<br />
In un ambiente fortemente <strong>di</strong>stribuito, <strong>di</strong>versi fattori legati alla <strong>di</strong>stribuzione<br />
e all’eterogeneità rendono complessa l’attività <strong>di</strong> sviluppo <strong>di</strong> software <strong>di</strong><br />
qualità. La componente software <strong>di</strong> un sistema ULS che in genere è<br />
complessa e caratterizzata da co<strong>di</strong>ce <strong>di</strong> gran<strong>di</strong> <strong>di</strong>mensioni, realizza attività <strong>di</strong><br />
business articolate, che coinvolgono sistemi ed utenti <strong>di</strong> natura eterogenea.<br />
Suddetti sistemi avranno certamente caratteristiche <strong>di</strong>fferenti quali hardware<br />
e sistemi operativi <strong>di</strong>versi e spesso non interoperanti. Ed ancora sistemi ed<br />
utenti richiedono <strong>di</strong> con<strong>di</strong>videre una grande quantità <strong>di</strong> dati che saranno<br />
<strong>di</strong>stribuiti su più no<strong>di</strong> <strong>di</strong> elaborazione, memorizzati in archivi e con sistemi<br />
<strong>di</strong> gestione <strong>di</strong> basi <strong>di</strong> dati (DBMS) <strong>di</strong>versi. L’ estensione geografica, insieme<br />
6
agli aspetti <strong>di</strong> cui sopra, sono alcune delle principali caratteristiche dei<br />
sistemi ULS, ma per comprendere bene la loro natura è necessario<br />
approfon<strong>di</strong>re alcuni <strong>degli</strong> aspetti che sono invece trascurabili per i sistemi <strong>di</strong><br />
me<strong>di</strong>e e piccole <strong>di</strong>mensioni. Pertanto le caratteristiche principali <strong>di</strong> un<br />
sistema ULS sono:<br />
• In<strong>di</strong>pendenza funzionale dei sottosistemi: ogni sistema<br />
componente è in<strong>di</strong>pendentemente utilizzabile.<br />
• In<strong>di</strong>pendenza gestionale <strong>degli</strong> elementi: ciascun sottosistema può<br />
essere gestito in maniera in<strong>di</strong>pendente rispetto agli altri e all’intero<br />
sistema ULS.<br />
• Sviluppo Evolutivo: sistemi complessi funzionanti non vengono<br />
sviluppati integralmente ex-novo. Tipicamente essi evolvono a<br />
partire da sistemi già esistenti e funzionanti in maniera graduale ed<br />
incrementale anche durante il loro funzionamento.<br />
• Distribuzione Geografica: i vari componenti sono <strong>di</strong>slocati<br />
geograficamente e pertanto la loro interazione richiede un massiccio<br />
scambio <strong>di</strong> informazioni.<br />
• Decentralizzazione: data la loro estensione geografica, la gestione<br />
gerarchica o centralizzata dei dati, dello sviluppo, dell’evoluzione e<br />
del controllo funzionale è praticamente impossibile.<br />
• Evoluzione continuativa: gli ULS systems avendo un lungo ciclo <strong>di</strong><br />
vita, necessitano dell’integrazione continua <strong>di</strong> nuove funzionalità e<br />
della rimozione <strong>di</strong> quelle obsolete non più utilizzate, senza<br />
compromettere la funzionalità complessiva del sistema.<br />
• Eterogeneità: dei suoi componenti hardware, software e delle<br />
procedure. Tale eterogeneità è dovuta allo sviluppo <strong>di</strong> parti del<br />
7
sistema con linguaggi <strong>di</strong> programmazione e tecniche <strong>di</strong>fferenti, su<br />
<strong>di</strong>verse piattaforme hardware/software, secondo <strong>di</strong>fferenti para<strong>di</strong>gmi<br />
e metodologie <strong>di</strong> progettazione. Inoltre in molti casi, parte <strong>degli</strong><br />
elementi sono legacy systems realizzati precedentemente.<br />
• Inconsistenza: dato il vasto numero <strong>di</strong> teams che creano e<br />
mo<strong>di</strong>ficano le sue <strong>di</strong>fferenti parti, un ULS system presenta<br />
necessariamente <strong>di</strong>fferenti versioni dello stesso sottosistema,<br />
generando quin<strong>di</strong> possibili inconsistenze sia nella fase <strong>di</strong><br />
progettazione, sia nella fase <strong>di</strong> implementazione che <strong>di</strong> messa in<br />
esercizio.<br />
• Separazione utenti-sistemi: definire i confini si un sistema ULS è<br />
<strong>di</strong>fficile. Gli utenti spesso sono un vero e proprio elemento del<br />
sistema e contribuiscono al complessivo processo <strong>di</strong> business.<br />
• Regolarità dei fallimenti: i fallimenti hardware e software sono la<br />
normalità e non delle eccezioni[1].<br />
Tali caratteristiche determinano l’inadeguatezza delle attuali metodologie <strong>di</strong><br />
sviluppo dei sistemi software e pongono le basi per la definizione <strong>di</strong> nuove<br />
metodologie che tengano fortemente conto <strong>di</strong> taluni aspetti che <strong>di</strong> seguito<br />
saranno analizzati.<br />
L’interoperabilità tra sistemi informativi sviluppati in tempi <strong>di</strong>versi, con<br />
linguaggi e tecniche <strong>di</strong>fferenti, ed operanti su piattaforme eterogenee è<br />
<strong>di</strong>ventata un problema centrale. L’interoperabilità riguarda vari aspetti: dalla<br />
possibilità <strong>di</strong> scambiare dati tra i sistemi alla cooperazione applicativa, che<br />
prevede l’integrazione delle funzionalità delle <strong>di</strong>verse tipologie <strong>di</strong><br />
applicazioni. In tale scenario, l’obiettivo comunemente riconosciuto è quello<br />
<strong>di</strong> facilitare l’interazione tra sistemi <strong>di</strong>fferenti e non omogenei.<br />
8
Considerando che progetti su grande scala richiedono tempi, oltre che costi<br />
elevati, che si misurano in mesi e più <strong>di</strong> frequente in anni e considerando la<br />
rapi<strong>di</strong>tà con cui evolvono, in tali lassi <strong>di</strong> tempo, le piattaforme hardware, i<br />
sistemi operativi, il software <strong>di</strong> base, i linguaggi, assume grande importanza<br />
la capacità <strong>di</strong> essere pre<strong>di</strong>sposti ai cambiamenti e <strong>di</strong> gestire, se non<br />
ad<strong>di</strong>rittura anticipare, l’evoluzione delle tecnologie.<br />
Data la natura in<strong>di</strong>pendente <strong>di</strong> ogni sottosistema <strong>di</strong> un ULS system, ciascuno<br />
<strong>di</strong> essi lavora cercando <strong>di</strong> massimizzare i risultati delle sua elaborazione<br />
locale. Pertanto, controllare ed orchestrare le attività <strong>di</strong> ciascun sistema al<br />
fine <strong>di</strong> realizzare un’armoniosa collaborazione che garantisca il<br />
sod<strong>di</strong>sfacimento <strong>degli</strong> obiettivi, sia locali, sia globali, è un esigenza dei<br />
sistemi ULS.<br />
Le attività <strong>di</strong> progettazione, sviluppo evolutivo e orchestrazione vanno poi<br />
monitorate e valutate al fine <strong>di</strong> apportare le giuste mo<strong>di</strong>fiche correttive e<br />
migliorative. Dunque, la definizione <strong>di</strong> appropriati in<strong>di</strong>catori, probabilmente<br />
<strong>di</strong> tipo statistico, permetterebbe <strong>di</strong> produrre report sullo stato complessivo<br />
delle attività, nonché una visione sintetica del sistema ULS nel suo<br />
complesso. Infine, in letteratura si utilizzano espressioni come Enterprise<br />
Architecture ed System of Systems, e pertanto un “sistema <strong>di</strong> sistemi” è una<br />
“enterprise” piuttosto che una tra<strong>di</strong>zionale struttura gerarchica, ossia si<br />
passa da un sistema <strong>di</strong> comando e controllo rigidamente gerarchico ad<br />
un’organizzazione dove il processo <strong>di</strong> decisione e responsabilizzazione è<br />
fortemente decentralizzato. Uno dei principali obiettivi è <strong>di</strong> consentire il<br />
rilascio <strong>di</strong> nuove funzionalità, o <strong>di</strong> fornire valore aggiunto al patrimonio dei<br />
dati e delle applicazioni, in tempi rapi<strong>di</strong>, a costi contenuti ed in maniera<br />
9
affidabile, attraverso l’opportuna interconnessione <strong>di</strong> sistemi eterogenei in<br />
ambiente <strong>di</strong>stribuito. Elemento centrale delle moderne tecnologie per<br />
l’integrazione è la presenza <strong>di</strong> un infrastruttura software <strong>di</strong> interconnessione,<br />
ormai comunemente in<strong>di</strong>cata con il termine middleware, termine inglese<br />
con il quale si vuole evidenziare la sua caratteristica <strong>di</strong> trovarsi sopra il<br />
livello delle apparecchiature hardware e dei sistemi operativi, e <strong>di</strong> fornire<br />
servizi <strong>di</strong> cooperazione applicativa o per trasferimento <strong>di</strong> dati tra le varie<br />
tipologie <strong>di</strong> applicazioni.<br />
Figura 1.1 - Middleware<br />
In questa prospettiva, la realizzazione <strong>di</strong> moduli software è, ancor meno che<br />
in passato, una fase critica in termini <strong>di</strong> risorse e competenze tecnologiche<br />
richieste. Assume invece maggiore importanza la capacità <strong>di</strong> integrare ed<br />
adattare sistemi esistenti e non originariamente pensati per interoperare [2].<br />
10
1.3 – Air Traffic Management<br />
1.3.1 – Contesto<br />
Va riconosciuto che la politica dell’Unione Europea nel settore<br />
dell’aviazione è una “success story”. Le mutate esigenze della nostra<br />
società in termini <strong>di</strong> mezzi <strong>di</strong> trasporto sicuri a prezzi accessibili, l’aumento<br />
della domanda <strong>di</strong> traffico in cielo, la crescente sensibilizzazione della<br />
comunità verso le politiche ambientali, hanno posto l’aviazione nella<br />
con<strong>di</strong>zione <strong>di</strong> dover migliorare ulteriormente la qualità del servizio offerto.<br />
In questo contesto, un’industria dei trasporti competitiva e sostenibile esige<br />
un sistema <strong>di</strong> gestione del traffico aereo <strong>di</strong> efficienza elevata.<br />
La gestione del traffico aereo ( ATM – Air Traffic Management nella<br />
terminologia anglosassone ), costituisce, insieme agli aeroporti,<br />
l’infrastruttura fondamentale della navigazione aerea. In base alle previsioni<br />
e all’analisi dell’Unione Europea, l’ATM Europeo dovrà essere capace <strong>di</strong><br />
affrontare un incremento del flusso aereo, a partire da oggi fino al 2020, pari<br />
a tre volte quello attuale. L’obsolescenza dei sistemi costituisce un vincolo<br />
forte alla crescita del flusso aereo e rappresenta inevitabilmente, un supporto<br />
inadeguato a tale sviluppo.<br />
Pertanto, l’ATM Europeo necessita <strong>di</strong> aggiornare le tecnologie <strong>degli</strong> attuali<br />
sistemi nonché <strong>di</strong> compiere un decisivo salto tecnologico per lo sviluppo <strong>di</strong><br />
un’infrastruttura a supporto dei sistemi <strong>di</strong> prossima generazione[3].<br />
1.3.2 – Gestione <strong>di</strong> un volo<br />
Chiunque voglia attraversare lo spazio aereo, si tratti <strong>di</strong> compagnie aeree o<br />
<strong>di</strong> privati, deve sottoporre in anticipo all'attenzione <strong>di</strong> ENAV il proprio<br />
11
piano <strong>di</strong> volo, che raccoglie tutte le informazioni essenziali (dati<br />
identificativi del velivolo e del pilota, orario e data <strong>di</strong> decollo, aeroporto <strong>di</strong><br />
partenza e <strong>di</strong> destinazione, traiettoria etc….).<br />
Una volta approvato, il volo è autorizzato a partire.<br />
Figura 1.2 - Fasi <strong>di</strong> un Volo<br />
Il pilota entra quin<strong>di</strong> nella fase del volo detta <strong>di</strong> Controllo <strong>di</strong> Aeroporto: è<br />
in contatto con la Torre <strong>di</strong> Controllo (TWR) che lo autorizza a mettere in<br />
moto il velivolo e a spostarsi dal parcheggio verso le piste <strong>di</strong> rullaggio.<br />
Finita questa fase <strong>di</strong> movimenti al suolo, il pilota viene autorizzato dalla<br />
Torre <strong>di</strong> Controllo al decollo solo quando sarà garantita la <strong>di</strong>stanza <strong>di</strong><br />
sicurezza da tutti gli altri aeromobili. Una volta decollato, il velivolo,<br />
sempre in contatto con la Torre <strong>di</strong> Controllo, passa attraverso la fase <strong>di</strong><br />
Controllo <strong>di</strong> Avvicinamento che ne garantisce un sicuro instradamento<br />
verso la fase <strong>di</strong> rotta per l'inserimento nell'aerovia che gli è stata assegnata.<br />
12
Una volta inserito nell'aerovia, l'aeromobile viene preso in consegna dal<br />
Centro <strong>di</strong> Controllo d'Area (ACC) che ne gestirà il Controllo <strong>di</strong> Rotta. Al<br />
velivolo viene assegnato un livello <strong>di</strong> volo e in<strong>di</strong>cata la traiettoria da<br />
seguire, in modo che rimanga sempre alla <strong>di</strong>stanza <strong>di</strong> sicurezza (detta<br />
"separazione") sia verticale che orizzontale, dagli altri velivoli. Una volta in<br />
prossimità dell'aeroporto <strong>di</strong> destinazione, il velivolo viene inserito<br />
nuovamente nella fase <strong>di</strong> Controllo <strong>di</strong> Avvicinamento, che stabilisce la<br />
corretta sequenza <strong>degli</strong> aeromobili quando lasciano le aerovie, per guidarlo<br />
nella <strong>di</strong>scesa fino all'allineamento con la pista.<br />
Quando il velivolo e' stabilizzato sul sentiero <strong>di</strong> atterraggio ed in vista<br />
dell'aeroporto, la gestione viene affidata <strong>di</strong> nuovo alla Torre <strong>di</strong> Controllo<br />
dell'aeroporto <strong>di</strong> destinazione, che guida l'aereo fino al parcheggio. Quando<br />
gli aeromobili entrano o escono dallo spazio aereo italiano, i Controllori del<br />
Traffico Aereo, e i sistemi informatici <strong>di</strong> cui questi si servono, <strong>di</strong>alogano<br />
costantemente con gli enti omologhi stranieri dei paesi limitrofi inviando e<br />
ricevendo notizie sui voli.<br />
Pertanto, le fasi del Controllo del Traffico Aereo sono:<br />
• Controllo <strong>di</strong> Aeroporto (TWR - Aerodrome Control Service) E'<br />
gestito dalle Torri <strong>di</strong> Controllo e consiste nella gestione del traffico<br />
aereo generato dagli aeromobili nella fase <strong>di</strong> movimentazione al<br />
suolo <strong>degli</strong> aeromobili nell'area <strong>di</strong> parcheggio, sulle piste e nella fase<br />
<strong>di</strong> decollo e atterraggio.<br />
• Controllo <strong>di</strong> Avvicinamento (APP - Approach Control) Tale<br />
servizio può essere reso <strong>di</strong>rettamente dalle Torri <strong>di</strong> Controllo o<br />
anche dai Centri <strong>di</strong> Controllo d'Area (ACC); consiste nella gestione<br />
del traffico aereo nella fase del volo subito precedente l'atterraggio e<br />
13
subito precedente l'ingresso nella fase <strong>di</strong> rotta (<strong>di</strong> norma entro un<br />
raggio <strong>di</strong> 20 miglia dall'aerodromo).<br />
• Controllo <strong>di</strong> rotta (ACC - Area Control Center) E' gestito dai Centri<br />
<strong>di</strong> Controllo d'Area e consiste nella gestione del traffico aereo nella<br />
fase della rotta. Ovviamente usufruiscono <strong>di</strong> questo servizio anche i<br />
voli interessati al solo sorvolo dello spazio aereo nazionale, quin<strong>di</strong><br />
che originano e terminano fuori dall'Italia.<br />
Per garantire ai velivoli <strong>di</strong> decollare, attraversare lo spazio aereo e atterrare<br />
in sicurezza, i Controllori del Traffico Aereo, dalle Torri <strong>di</strong> Controllo e dai<br />
Centri <strong>di</strong> Controllo d'Area curano la gestione <strong>di</strong> un volo nelle <strong>di</strong>verse fasi<br />
secondo procedure complesse e utilizzando sistemi tecnologici<br />
all'avanguar<strong>di</strong>a[4].<br />
1.3.3 – Limiti attuali della gestione del traffico aereo<br />
Già oggi assistiamo a ritar<strong>di</strong> dei voli, inconvenienti che, alla luce <strong>di</strong> quanto<br />
detto nel paragrafo precedente, creano perturbazioni a catena in tutto il<br />
sistema del trasporto aereo in Europa mettendo in luce le strettissime<br />
connessioni tra le <strong>di</strong>namiche <strong>di</strong> tutti i voli in un lasso <strong>di</strong> tempo me<strong>di</strong>o-lungo.<br />
È chiaro che solo la gestione del traffico aereo può garantire, in qualsiasi<br />
momento, la separazione sicura tra le traiettorie <strong>di</strong> aeromobili che<br />
attraversano lo spazio a grande velocità. Il controllore aereo conosce le<br />
strozzature e gli incroci pericolosi dello spazio aereo come pure le<br />
procedure necessarie per <strong>di</strong>minuire i rischi inerenti ad una rete <strong>di</strong><br />
collegamenti così complessa. Il settore ATM rappresenta, proprio per<br />
questo, un monopolio naturale.<br />
14
Il trasporto aereo si è sviluppato impetuosamente intorno agli anni ’50 e ’60<br />
in un ambiente controllato esclusivamente dagli Stati nazionali. A partire<br />
dagli anni ’70 gli Stati hanno cominciato a trasferire funzioni non<br />
governative agli operatori privati del settore, mantenendo però le strutture<br />
normative della gestione del traffico aereo soggette ad accor<strong>di</strong><br />
intergovernativi. Con una dotazione finanziaria equivalente a quella dell'UE<br />
il sistema americano <strong>di</strong> controllo del traffico aereo riesce a gestire un<br />
volume <strong>di</strong> traffico doppio rispetto a quello europeo a partire da soli 20 centri<br />
<strong>di</strong> controllo[5]. Invece la frammentazione del sistema europeo è il risultato<br />
<strong>di</strong> una particolare situazione storica nella quale il controllo del traffico aereo<br />
era inteso come attributo della sovranità e, <strong>di</strong> conseguenza, circoscritto ai<br />
soli confini nazionali. Anche la ripartizione delle responsabilità fra gli Stati,<br />
le singole autorità, le compagnie aeree e i prestatori <strong>di</strong> servizi <strong>di</strong> navigazione<br />
aerea era molto frammentata e non è affatto chiara.[3].<br />
La gestione del traffico aereo in Europa è quin<strong>di</strong> caratterizzata da un elevata<br />
frammentazione che si traduce in notevoli conseguenze tra cui una <strong>di</strong> quelle<br />
più importanti riguarda la mancanza <strong>di</strong> sincronia nell'adeguamento al<br />
progresso tecnologico. Senza troppo sforzo, si comprende che nel sistema<br />
continuano a sussistere inutili duplicazioni <strong>di</strong> sistemi non standar<strong>di</strong>zzati che<br />
svolgono funzioni simili ma che sono realizzati in maniera<br />
tecnologicamente <strong>di</strong>versa, o ancora sistemi che svolgono funzioni <strong>di</strong>verse,<br />
che magari devono cooperare strettamente, ma che non sono interoperabili,<br />
ed ancora sistemi che devono continuamente comunicare e quin<strong>di</strong> la<br />
necessità <strong>di</strong> stabilire un numero corposo <strong>di</strong> collegamenti end-to-end. Tutto<br />
questo si traduce in notevoli costi supplementari per gli utenti dello spazio<br />
aereo, in un allungamento inutile dei tempi <strong>di</strong> volo, in una più lenta<br />
15
introduzione <strong>di</strong> nuove tecnologie e <strong>di</strong> nuove procedure ed in un limitato<br />
ricorso a sistemi più efficienti. L’attuale organizzazione impe<strong>di</strong>sce inoltre al<br />
settore della gestione del traffico aereo <strong>di</strong> realizzare economie <strong>di</strong> scala e ciò<br />
comporta inutili costi <strong>di</strong> gestione e manutenzione.<br />
Dunque, nonostante il generale progresso tecnologico del settore<br />
dell’aviazione, il controllo del traffico aereo continua ad essere, in sostanza,<br />
un lavoro con caratteristiche artigianali. Mentre le cabine <strong>di</strong> pilotaggio si<br />
sono automatizzate, i sistemi ATC non sono cambiati ed i meto<strong>di</strong> <strong>di</strong> lavoro<br />
dei controllori <strong>di</strong> volo rimangono fondamentalmente gli stessi.<br />
1.3.4 – Il futuro Sistema ATM Europeo: SESAR<br />
Dall’analisi svolta nei precedenti paragrafi emerge che l’industria del<br />
trasporto aereo deve prepararsi a far fronte alla crescita <strong>di</strong> traffico che si<br />
prevede possa ad<strong>di</strong>rittura triplicare entro il 2020. La frammentazione attuale<br />
del sistema ATM , le attuali infrastrutture, la lentezza e l’inefficienza <strong>di</strong> un<br />
processo decisionale intergovernativo non possono rispondere a questo forte<br />
aumento del traffico. Il previsto sviluppo del traffico impone, quin<strong>di</strong>, una<br />
modernizzazione strutturale e tecnologica. Di qui nasce la necessità per la<br />
Comunità Europea <strong>di</strong> intervenire con decisione con il lancio <strong>di</strong> stu<strong>di</strong> e<br />
progetti che intendono ridefinire lo scenario futuro dell’ATM.<br />
In questo scenario si inserisce SESAR ( Single European Sky ATM<br />
Research), un progetto fortemente voluto dalla Commissione Europea per la<br />
realizzazione <strong>di</strong> un nuovo sistema <strong>di</strong> gestione del traffico aereo<br />
interoperabile, che nel 2020 garantirà all’Europa <strong>di</strong> far fronte ai livelli <strong>di</strong><br />
traffico previsti in sicurezza ed economicità. L'intera comunità aeronautica<br />
ha riconosciuto infatti in questo progetto le potenzialità politiche,<br />
16
istituzionali ed operative per poter convogliare tutti gli investimenti del<br />
settore ed ottenere i risultati at<strong>tesi</strong> in campo operativo dall'implementazione<br />
della normativa del “Cielo Unico Europeo”. É un progetto congiunto a cui<br />
hanno aderito gli operatori più importanti del settore del trasporto aereo:<br />
scopo delle attività sarà quello <strong>di</strong> realizzare un sistema ATM <strong>di</strong> nuova<br />
generazione in grado <strong>di</strong> rispondere efficientemente all'evoluzione della<br />
Gestione del Traffico Aereo prevista in Europa. Permetterà <strong>di</strong> uniformare il<br />
livello <strong>degli</strong> impianti esistenti nei <strong>di</strong>versi paesi dell'Unione, e al tempo<br />
stesso realizzerà una nuova infrastruttura aeronautica con il sostegno ed il<br />
consenso <strong>di</strong> tutti gli attori della catena ATM. Il progetto SESAR<br />
costituisce quin<strong>di</strong> la componente tecnologica del cielo unico europeo.<br />
Grazie a SESAR la gestione del traffico non è più definita in funzione delle<br />
frontiere ma delle esigenze effettive[4].<br />
Per concludere, la realizzazione <strong>di</strong> SESAR richiede il completamento <strong>di</strong><br />
<strong>di</strong>verse fasi.<br />
• una fase <strong>di</strong> definizione (2005-2007), che permette <strong>di</strong> realizzare il<br />
piano <strong>di</strong> modernizzazione della gestione del traffico.<br />
• una fase <strong>di</strong> sviluppo (2008-2013), che permetterà <strong>di</strong> sviluppare le<br />
tecnologie <strong>di</strong> base che costituiranno le fondamenta della nuova<br />
generazione <strong>di</strong> sistemi;<br />
• una fase <strong>di</strong> spiegamento (2014-2020), in cui avverrà l'installazione<br />
su grande scala dei nuovi sistemi e l'attuazione generalizzata delle<br />
funzionalità connesse.<br />
17
1.4 – SWIM - System Wide Information Management<br />
1.4.1 – Overview<br />
Fino ad oggi, i <strong>di</strong>versi sistemi per la gestione delle informazioni del traffico<br />
aereo europeo sono stati sviluppati in<strong>di</strong>pendentemente l’uno dall’altro con la<br />
conseguenza che gli attuali organismi per l’ATM sono <strong>di</strong>fficilmente<br />
integrabili e presentano barriere anche organizzative ed istituzionali oltre<br />
che strutturali da non consentire la <strong>di</strong>sponibilità nel modo e nel momento<br />
giusto delle informazioni pertinenti. L’ATM necessita del cambiamento<br />
dell’attuale rete <strong>di</strong> sistemi <strong>di</strong>stribuiti e in<strong>di</strong>pendenti in una rete efficiente <strong>di</strong><br />
sistemi cooperanti ed integrati, capaci <strong>di</strong> accrescere l’efficienza e<br />
l’operatività del traffico aereo.<br />
In questo contesto si pone il progetto SWIM che intende, invece, definire<br />
l’infrastruttura <strong>di</strong> un sistema che favorendo l’interoperabilità nel mondo<br />
ATM costruisca me<strong>di</strong>ante l’utilizzo <strong>di</strong> tecnologie moderne, affidabili e<br />
sicure un ‘Global European System’ basato su un modello delle<br />
informazioni con<strong>di</strong>viso. Tale infrastruttura dovrà prevedere la <strong>di</strong>stribuzione<br />
dei dati in modo rapido e sicuro, favorendo il cosiddetto processo <strong>di</strong><br />
‘Collaborative Decision Making’ il cui output sarà la decisione che<br />
scaturisce da un accordo tra più attori-processi.<br />
In particolare attraverso il sistema SWIM <strong>di</strong>venterà possibile:<br />
• Elaborare <strong>di</strong>namicamente i piani <strong>di</strong> volo;<br />
• Utilizzare in modo flessibile e <strong>di</strong>namico lo spazio aereo;<br />
• Integrare l’Air Traffic Control nella gestione del flusso aereo;<br />
18
Figura 1.3 - EATMS (visione generale)<br />
Il sistema mostrato in figura 1.3 può essere definito come un sistema<br />
composto a sua volta da altri sistemi ( System of Systems nel dominio<br />
dell’ATM ) e richiede che lo scambio <strong>di</strong> messaggi non avvenga attraverso<br />
connessioni punto-punto, ma attraverso la con<strong>di</strong>visione delle informazioni<br />
in uno spazio globale dei dati. Al <strong>di</strong> sopra <strong>di</strong> questo buffer virtuale e<br />
con<strong>di</strong>viso, vi saranno le applicazioni che permetteranno il Collaborative<br />
Decision Making – CDM..<br />
I sistemi che verranno interconnessi sono i seguenti:<br />
• Sistemi ATC civili e militari;<br />
• Sistemi utenti dello spazio aereo civili e militari;<br />
• Aeroporti;<br />
• Aeromobili.<br />
• Etc…<br />
19
Le informazioni che saranno con<strong>di</strong>vise all’interno della rete SWIM sono le<br />
seguenti :<br />
• Dati <strong>di</strong> volo;<br />
• Dati <strong>di</strong> sorveglianza;<br />
• Dati aeronautici;<br />
• Dati meteo;<br />
• Etc…<br />
1.4.2 – Definizione<br />
SWIM è l’acronimo <strong>di</strong> System Wide Information Management e viene così<br />
definito dall’International Civil Aviation Organisation, ICAO:<br />
“ SWIM rappresenta un sistema ULS per la gestione dei dati e prevede <strong>di</strong><br />
definire un infrastruttura <strong>di</strong> rete che permetta l’integrazione <strong>di</strong> <strong>di</strong>versi<br />
sistemi per l’ATM geograficamente <strong>di</strong>spersi su ampia scala. È previsto che<br />
tale processo debba intendersi non solo come semplice integrazione <strong>di</strong><br />
sistemi ma come capacità <strong>di</strong> detti sistemi <strong>di</strong> con<strong>di</strong>videre le informazioni loro<br />
necessarie”[6].<br />
Per tale scopo <strong>di</strong>venta quin<strong>di</strong> necessario migrare dall’attuale para<strong>di</strong>gma <strong>di</strong><br />
<strong>di</strong>stribuzione dei dati basato su connessioni <strong>di</strong> tipo “punto-punto” verso un<br />
modello <strong>di</strong> rete globale per la con<strong>di</strong>visione dei dati tra tutti i protagonisti<br />
della gestione del traffico aereo basato su connessioni <strong>di</strong> tipo “molti-a-<br />
molti”.<br />
Anche il Dipartimento per la Difesa <strong>degli</strong> USA, in accordo con la visione <strong>di</strong><br />
ICAO, chiarisce che l’utilizzo <strong>di</strong> tecnologie d’avanguar<strong>di</strong>a permetterà <strong>di</strong><br />
progettare sistemi, non più secondo para<strong>di</strong>gmi <strong>di</strong> tipo application-centric<br />
ma <strong>di</strong> tipo data-centric, che permettendo agli utenti l’abilità <strong>di</strong> accedere a<br />
20
dati e servizi me<strong>di</strong>ante il web, realizza un ambiente interoperabile <strong>di</strong><br />
elaborazione e comunicazione dei dati.<br />
Secondo SESAR in SWIM l’attenzione è sulle informazioni e sull’accesso<br />
alle stesse piuttosto che su chi le produce. Nella rete ATM ogni partecipante<br />
è produttore e consumatore <strong>di</strong> dati allo stesso tempo. Sapere chi avrà<br />
bisogno <strong>di</strong> cosa, da chi e quando non è un aspetto rilevante. Secondo questa<br />
visione <strong>di</strong>venta importante il <strong>di</strong>saccoppiamento tra produttori e consumatori<br />
dei dati, rendendo così possibile il cambiamento in numero e tipologia <strong>di</strong> chi<br />
consuma e <strong>di</strong> chi produce dati[6].<br />
Per il raggiungimento <strong>di</strong> tale scopo, i partecipanti, nel contesto <strong>degli</strong> scenari<br />
definiti da SWIM, devono con<strong>di</strong>videre:<br />
• Un modello <strong>di</strong> riferimento <strong>di</strong> dati e servizi;<br />
• Una serie <strong>di</strong> patterns <strong>di</strong> collaborazione ( regole, ruoli e<br />
responsabilità );<br />
• Una classe <strong>di</strong> servizi <strong>di</strong> supporto all’interazione tra i sistemi;<br />
• L’accesso alla rete fisica <strong>di</strong> SWIM.<br />
In breve, SWIM deve fornire meccanismi per la gestione <strong>di</strong> Regole, Ruoli e<br />
Responsabilità (3R’s) per la con<strong>di</strong>visione delle informazioni. Ciò determina<br />
quali tipi <strong>di</strong> informazioni sono con<strong>di</strong>vise da chi, con chi, dove, quando,<br />
perché, come, quanto spesso, a che livello <strong>di</strong> qualità, etc…<br />
1.4.3 – SWIM-SUIT<br />
Il progetto SWIM-SUIT ( System Wide Information Management Supported<br />
by Innovative Technologies ) ha lo scopo <strong>di</strong> effettuare uno stu<strong>di</strong>o <strong>di</strong><br />
fattibilità dello sviluppo <strong>di</strong> una piattaforma middleware in grado <strong>di</strong> gestire,<br />
in ambito europeo, una rete globale per la con<strong>di</strong>visione dei dati fra tutti i<br />
21
protagonisti della gestione del traffico aereo, come enti <strong>di</strong> assistenza al volo,<br />
compagnie aeree, centri meteorologici e strutture aeroportuali. Il nuovo<br />
sistema permetterà <strong>di</strong> superare le attuali barriere fra gli operatori del settore,<br />
creando le necessarie infrastrutture per l’integrazione <strong>di</strong> tutte le<br />
informazioni. Lo sviluppo <strong>di</strong> un prototipo è alla base della valutazione delle<br />
tecnologie adottate. Per il raggiungimento <strong>di</strong> tale obiettivo, si separeranno le<br />
parti applicative specifiche <strong>di</strong> ognuno dei <strong>di</strong>versi domini ATM<br />
dall’infrastruttura del middleware, definendo a <strong>di</strong>versi livelli sia i servizi<br />
generici sia l’accesso ai dati; per quest’ultimo aspetto ci sarà il<br />
<strong>di</strong>saccoppiamento tra chi fornisce e tra chi richiede servizi e dati[6].<br />
1.4.3.1 – Architettura stratificata<br />
SWIM ATM Added-value Services<br />
SWIM ATM Data Access Services<br />
SWIM Technical Services<br />
SWIM Network<br />
Figura 1.4 - Architettura stratificata <strong>di</strong> SWIM<br />
La figura sopra mostra una visione concettuale dell’architettura del<br />
prototipo. Al livello più basso vi è l’infrastruttura <strong>di</strong> rete ( SWIM Network )<br />
che SWIM impiegherà per le interconnessioni tra sistemi. Imme<strong>di</strong>atamente<br />
sopra il livello “rete”, vanno collocati i servizi core ( SWIM Technical<br />
Services ) che saranno resi <strong>di</strong>sponibili a tutti i sistemi connessi. Tali servizi<br />
22
dovranno utilizzare il più possibile tecnologie standard. Lo strato SWIM<br />
ATM Data Access è in pratica la virtualizzazione dello spazio globale dei<br />
dati; esso permette l’accesso al modello standard dei dati me<strong>di</strong>ante<br />
opportuni servizi che sono definiti in ciascun dominio (accesso per i dati<br />
meteo, accesso ai dati <strong>di</strong> volo…). Infine, al livello più alto c’è lo strato<br />
SWIM ATM Added-value services che fornisce ulteriori servizi che sono<br />
specifici del dominio e che favoriscono la cooperazione tra sistemi ATM per<br />
il raggiungimento <strong>di</strong> una decisione comune tra i <strong>di</strong>versi stakeholders<br />
coinvolti. In generale i livelli arancioni rappresentano l’infrastruttura SWIM<br />
comune a tutti i domini ATM mentre al <strong>di</strong> sopra <strong>di</strong> essi vi sono i layers che<br />
permettono l’implementazione delle funzionalità specifiche <strong>di</strong> un dominio.<br />
L’infrastruttura potrà essere <strong>di</strong>stribuita sui <strong>di</strong>versi sistemi ATM legacy che<br />
compongono l’EATMS. Ciascun sistema ATM è tipicamente composto da<br />
<strong>di</strong>versi sottosistemi che implementano le funzionalità specifiche del<br />
dominio e da un sottosistema SWIM ( sottosistema SWIM / IOP<br />
Management ) che contiene parte dell’infrastruttura SWIM, connette i<br />
sistemi fornitori <strong>di</strong> servizi, traduce le strutture dati standard <strong>di</strong> SWIM nel<br />
formato specifico del sistema legacy.<br />
(Legacy) ATM System A (Legacy) ATM System B<br />
SWIM /<br />
IOP Mgt<br />
SWIM /<br />
IOP Mgt<br />
SWIM Network<br />
Figura 1.5 - connessione sistema ATM-SWIM<br />
23
Tale visione dell’EATMS richiede ovviamente <strong>di</strong> chiarire il confine tra<br />
l’infrastruttura del middleware ed i domini ATM.<br />
1.4.3.2 – SWIM ATM Information Model<br />
Come già accennato uno dei temi cal<strong>di</strong> <strong>di</strong> SWIM riguarda la gestione delle<br />
informazioni e l’accessibilità alle stesse da parte dei vari stakeholders del<br />
Sistema definiti precedentemente.<br />
Tipicamente l’ambiente SWIM può essere visto come sud<strong>di</strong>viso in <strong>di</strong>fferenti<br />
domini interconnessi logicamente tra <strong>di</strong> loro. Ciascun dominio è<br />
caratterizzato dalle informazioni che lo riguardano. Tra i principali domini<br />
ci sono:<br />
• Aeronautical Data Domain che include dati relativi ad aerodromi,<br />
eliporti, spazio aereo, suolo, eventuali ostacoli <strong>di</strong> ogni tipo, e velivoli<br />
<strong>di</strong> ogni tipo.<br />
• Surveillance Data Domain che include dati come la posizione <strong>di</strong> un<br />
velivolo in un certo istante, informazioni storiche, velocità ed<br />
identificativo del velivolo, dati relativi a sensori e radar ed<br />
informazioni riguardo la loro posizione.<br />
• Flight Data Domain è uno dei domini più importanti, in particolare<br />
quello a cui siamo interessati. In esso sono contenuti dati relativi ai<br />
piani <strong>di</strong> volo come la traiettoria, data e orario <strong>di</strong> partenza e arrivo,<br />
aeroporto <strong>di</strong> partenza e <strong>di</strong> arrivo, identificativo e tipo del velivolo ed<br />
altri ancora.<br />
• Meteo Data Domain include dati che riguardano le con<strong>di</strong>zioni<br />
atmosferiche <strong>di</strong> zone delicate come quelle che nelle quali risiedono<br />
24
gli aeroporti. Tali dati provengono da svariate sorgenti radar al<br />
suolo, satelliti ma anche gli stessi velivoli.<br />
Figura 1.6 - SESAR ATM Information Model<br />
Dividere l’ intero dominio ATM in sotto domini ha il vantaggio <strong>di</strong> rendere<br />
più gestibile in problema in termini <strong>di</strong> grandezza e complessità, permettendo<br />
a requisiti quali performance e integrità <strong>di</strong> raggiungere i livelli richiesti. La<br />
suddetta <strong>di</strong>visione in domini nasce proprio per la natura estesa e complessa<br />
dell’Air Traffic Management, che ha causato nel corso <strong>degli</strong> anni la nascita<br />
<strong>di</strong> sistemi <strong>di</strong> natura <strong>di</strong>versa in ciascuno dei domini ATM, che pur svolgendo<br />
funzionalità <strong>di</strong>verse, necessitano <strong>di</strong> con<strong>di</strong>videre parte dei dati dell’intero<br />
dominio. In uno scenario così eterogeneo, ciascun dominio potrebbe essere<br />
descritto da uno o più modelli che definiscono sia la struttura sia la<br />
semantica dei dati. Alcuni progetti <strong>di</strong> ricerca stanno già cercando <strong>di</strong> definire<br />
uno standard per la struttura dei dati <strong>di</strong> alcuni dei domini sopra elencati,<br />
come ad esempio ICOG[7] per il Flight Data Domain. Tuttavia definire uno<br />
standard per la struttura dei dati risolve solo parte dei problemi relativi<br />
all’interoperabilità quali evitare formati <strong>di</strong>versi per dati dello stesso tipo,<br />
modelli dei dati <strong>di</strong>fferenti per lo stesso dominio. Per favorire l’<br />
interoperabilità tra i sistemi coinvolti nell’ ATM è necessario definire la<br />
25
semantica dei dati ed evidenziarne i legami con le informazioni appartenenti<br />
a domini <strong>di</strong>versi.<br />
Per i problemi sopra elencati, per ogni dominio si rende necessario definire<br />
sia la struttura delle informazioni sia le relazioni tra i dati; l’unione <strong>di</strong> questi<br />
due aspetti permette <strong>di</strong> definire i concetti e le relazioni dell’ intero dominio<br />
che <strong>di</strong>ventano necessari per la definizione modellare <strong>degli</strong> scenari previsti<br />
dall’ ATM. In pratica occorre definire dal punto <strong>di</strong> vista semantico l’ intero<br />
dominio dell’ ATM. In questo contesto viene ad assumere un ruolo<br />
rilevante la realizzazione <strong>di</strong> un più generale ATM Information Reference<br />
Model che definisce la semantica delle informazioni che vengono scambiate<br />
attraverso l’infrastruttura definita da SWIM-SUIT. Questo modello, che<br />
possiamo porre ad un livello <strong>di</strong> astrazione superiore, sarà <strong>di</strong> riferimento per<br />
tutti i modelli strutturali <strong>di</strong> più basso livello, come ad esempio quello<br />
definito da ICOG per i dati <strong>di</strong> volo, a supporto dell’interoperabilità e della<br />
con<strong>di</strong>visione <strong>di</strong> dati tra sistemi sia all’interno <strong>di</strong> uno stesso dominio sia tra<br />
domini <strong>di</strong>versi.<br />
Essendo un modello in<strong>di</strong>pendente dalle varie piattaforme, è un elemento<br />
chiave nella progettazione dei sistemi ATM in quanto è da esso che gli<br />
specifici formati <strong>di</strong> scambio delle informazioni possono essere definiti.<br />
1.4.3.3 – Caratteristiche Generali e Sfide Aperte<br />
Dalla panoramica fatta sinora è chiaro che il sistema SWIM può essere<br />
definito come un sistema <strong>di</strong> sistemi. Tipicamente, i sistemi <strong>di</strong> sistemi<br />
mostrano caratteristiche <strong>di</strong> sistemi complessi come quelle già viste in un<br />
paragrafo precedente, quali estensione e <strong>di</strong>stribuzione geografica, continuità<br />
del servizio a lungo termine, <strong>di</strong>stribuzione dei dati, decentralizzazione ed<br />
26
eterogeneità dei dati. Ognuno <strong>di</strong> questi aspetti introduce delle problematiche<br />
che richiedono l’ausilio <strong>di</strong> nuovi approcci al fine <strong>di</strong> rispettare i requisiti<br />
richiesti da un sistema complesso come SWIM. Di seguito verranno<br />
enfatizzate, per ognuno <strong>di</strong> tali aspetti, le problematiche imposte dal dominio<br />
ed alcuni dei requisiti che l’infrastruttura intende rispettare.<br />
Estensione e Distribuzione Geografica<br />
L’infrastruttura che SWIM intende definire, rappresenta un sistema software<br />
complesso caratterizzato dall’interconnessione <strong>di</strong> un numero molto elevato<br />
<strong>di</strong> sistemi ATM attraverso una rete <strong>di</strong> <strong>di</strong>mensioni geografiche senza forti<br />
garanzie del servizio.<br />
In uno scenario simile è evidente che a SWIM sono richiesti requisiti quali<br />
Scalabilità e Fault-Tolerance.<br />
Figura 1.7 - Estensione Geografica<br />
27
Fault-Tolerance è la capacità <strong>di</strong> un sistema sotto stress <strong>di</strong> svolgere<br />
ugualmente le proprie funzionalità anche in presenza <strong>di</strong> situazioni anomale<br />
o guasti generati o dalla struttura interna o dell’ambiente esterno al sistema<br />
stesso[6]. Nella fattispecie al sistema SWIM è richiesto che la consegna dei<br />
dati e la funzionalità dei sistemi non deve essere compromessa da fault <strong>di</strong><br />
rete da cui l’adozione <strong>di</strong> politiche <strong>di</strong> Qualità del Servizio (QoS) nella<br />
<strong>di</strong>stribuzione dei dati.<br />
La Scalabilità è una proprietà secondo cui le prestazioni <strong>di</strong> un sistema non<br />
devono essere compromesse al crescere o al decrescere della quantità <strong>di</strong><br />
carico <strong>di</strong> lavoro[6]. In particolare al sistema SWIM è richiesto che le sue<br />
prestazioni non devono essere compromesse dal numero crescente <strong>di</strong> entità<br />
coinvolte nella comunicazione. In altri termini l’introduzione <strong>di</strong> nuovi attori<br />
deve avere un impatto veramente limitato sul sistema; La Scalabilità può<br />
essere ottenuta me<strong>di</strong>ante <strong>di</strong>saccoppiamento tra le entità coinvolte riuscendo<br />
quin<strong>di</strong> a limitare al minimo le inter<strong>di</strong>pendenze tra moduli e/o componenti.<br />
Continuità del Servizio a lungo termine<br />
SWIM è concepito per essere in esercizio per un lungo periodo e necessita<br />
pertanto dell’integrazione <strong>di</strong> nuove funzionalità senza che la continuità<br />
funzionale del sistema complessivo sia compromessa. Il sistema nella sua<br />
totalità deve essere quin<strong>di</strong> esten<strong>di</strong>bile, evolutivo e flessibile.<br />
L’ Esten<strong>di</strong>bilità è la proprietà che permette ad un sistema <strong>di</strong> subire future<br />
estensioni sia per quanto riguarda i servizi sia per quanto riguarda i dati col<br />
minimo sforzo e senza interromperne il normale funzionamento[6].<br />
28
Evolutività è la proprietà del sistema secondo cui la messa a punto dello<br />
stesso avviene in maniera incrementale durante il suo funzionamento[6].<br />
Flessibilità è l’abilità del sistema <strong>di</strong> adattarsi, mentre è in esercizio, ad<br />
eventuali cambiamenti che occorrono nell’ambiente esterno, in particolare<br />
in termini <strong>di</strong> gestione ed accesso a nuove informazioni e servizi[6].<br />
Nel presente lavoro <strong>di</strong> <strong>tesi</strong>, tali proprietà saranno trattate soprattutto dal<br />
punto <strong>di</strong> vista della gestione dei dati, mentre gli aspetti legati ai servizi<br />
saranno tralasciati a sviluppi futuri.<br />
Per garantire l’esten<strong>di</strong>bilità, l’evolutività e la flessibilità dei dati <strong>di</strong>venta<br />
necessario definire una struttura standard e una semantica delle<br />
informazioni.<br />
Distribuzione dei Dati<br />
Come è già stato detto in precedenza, i vari stakeholders definiti nel<br />
contesto del sistema SWIM, si scambieranno informazioni attraverso la<br />
realizzazione <strong>di</strong> un Global Data Space, che ne permette il<br />
<strong>di</strong>saccoppiamento. In particolare al sistema SWIM è richiesto <strong>di</strong> supportare<br />
più pattern <strong>di</strong> comunicazione non solo tipo tra<strong>di</strong>zionale ma anche evoluti.<br />
Per meccanismi tra<strong>di</strong>zionali si fa riferimento a semplici connessioni <strong>di</strong> tipo<br />
punto-punto o multi-punto.<br />
Per meccanismi più evoluti s’intende la possibilità <strong>di</strong> inviare o ricevere<br />
informazioni esprimendo la tipologia <strong>di</strong> informazioni che si sta<br />
considerando. Più in particolare è necessario poter <strong>di</strong>sporre <strong>di</strong> più criteri <strong>di</strong><br />
classificazione delle informazioni; partendo dal più semplice che può essere<br />
quello <strong>di</strong> etichettare le informazioni con delle labels significative per i dati<br />
considerati, altri criteri possono prevedere la consegna <strong>degli</strong> stessi dati in<br />
29
funzione del loro contenuto informativo, in funzione del particolare stato del<br />
contesto all’interno del quale i dati vengono trasferiti o ancora i dati devono<br />
essere trasferiti a no<strong>di</strong> <strong>di</strong> un certo tipo, o dello stesso tipo del mittente o<br />
ancora a no<strong>di</strong> che si trovano nelle “vicinanze” o in una certa zona. In questo<br />
scenario si può parlare <strong>di</strong> sottoscrizioni espressive facendo riferimento<br />
sottoscrizioni <strong>di</strong> tipo “topic-based”, “content-based”, “concept-based”,<br />
“context-based” e “proximity-based”.<br />
Decentralizzazione<br />
Figura 1.8 - Global Data Space<br />
Il sistema SWIM per come è stato concepito, è un sistema fortemente<br />
decentralizzato dal punto <strong>di</strong> vista della gestione, essendo presenti sistemi<br />
legacy da interconnettere.<br />
SWIM deve allora garantire un certo grado <strong>di</strong> interoperabilità sia funzionale<br />
sia per quanto riguarda i dati da scambiare. Tale interoperabilità può essere<br />
ottenuta modellando dal punto <strong>di</strong> vista semantico i dati da trattare, ed<br />
impiegando dei traduttori tra middleware e sistemi legacy (wrapper).<br />
30
Eterogeneità dei dati<br />
Figura 1.9 - Decentralizzazione<br />
I dati scambiati all’interno del sistema SWIM vengono generati da <strong>di</strong>verse<br />
sorgenti che tra <strong>di</strong> loro sono molto probabilmente eterogenee. Di<br />
conseguenza, tali dati possono essere soggetti a forti <strong>di</strong>fferenze nei mo<strong>di</strong> <strong>di</strong><br />
rappresentazione ( ad esempio i tipi utilizzati o strutture <strong>di</strong><br />
rappresentazione), ma soprattutto possono appartenere a <strong>di</strong>fferenti domini<br />
semantici ( Flight Data Plan, Meteo Data, Surveillance Data, etc….).<br />
Possono sorgere allora problemi riguardo eventuali correlazioni tra i modelli<br />
<strong>di</strong> ogni dominio, che più precisamente possono tradursi in eventuali<br />
duplicazioni <strong>di</strong> una stessa informazione anche in più domini. Inoltre<br />
informazioni riguardanti domini ATM <strong>di</strong>versi, probabilmente, non sono<br />
completamente in<strong>di</strong>pendenti nel senso che possono esistere vincoli<br />
31
temporali <strong>di</strong> vario genere ed ancora sistemi operanti in certi domini, per<br />
svolgere le loro funzioni <strong>di</strong> business, possono avere la necessità <strong>di</strong> <strong>di</strong>sporre<br />
e quin<strong>di</strong> <strong>di</strong> dover interpretare informazioni generate nel contesto <strong>di</strong> altri<br />
domini. Non è da escludere poi l’esistenza <strong>di</strong> <strong>di</strong>pendenze anche tra dati<br />
appartenenti allo stesso dominio, come possono essere ancora duplicazioni<br />
<strong>di</strong> alcune informazioni o relazioni d’uso come la possibilità <strong>di</strong> ottenere dati<br />
più complessi per composizione <strong>di</strong> dati elementari.<br />
Sorgono dunque problemi <strong>di</strong> interoperabilità tra sistemi <strong>di</strong>versi che<br />
gestiscono dati <strong>di</strong> uno stesso dominio, ma anche tra sistemi che gestiscono<br />
dati appartenenti a domini <strong>di</strong>fferenti. Problemi riguardo la necessità <strong>di</strong> dover<br />
garantire la consistenza dei dati intra-dominio ed inter-dominio ed ancora<br />
problemi riguardo la necessità <strong>di</strong> tenere traccia <strong>di</strong> legami tra dati <strong>di</strong>fferenti<br />
al fine <strong>di</strong> ottenere, una chiara ed esaustiva visione <strong>di</strong> come i dati sono<br />
semanticamente organizzati.<br />
Figura 1.10 - Eterogeneità dei dati<br />
32
In presenza <strong>di</strong> questo tipo <strong>di</strong> correlazioni e <strong>di</strong>pendenze, c’è la necessità <strong>di</strong><br />
modellare ulteriormente i dati accompagnandoli con opportuni meta-dati.<br />
Un Meta-Dato ( dal greco meta- "oltre, dopo" e dal latino datum<br />
"informazione" - plurale: data), letteralmente "dato su un (altro) dato", è<br />
l'informazione che descrive un insieme <strong>di</strong> dati allo scopo <strong>di</strong> definirne una<br />
semantica più precisa e semplificarne la gestione. Un esempio tipico <strong>di</strong><br />
meta-dati è costituito dalla scheda del catalogo <strong>di</strong> una biblioteca, la quale<br />
contiene informazioni circa il contenuto e la posizione <strong>di</strong> un libro, cioè dati<br />
riguardanti i dati che si riferiscono al libro. Un altro contenuto tipico dei<br />
meta-dati può essere la fonte o l'autore dell'insieme <strong>di</strong> dati descritto oppure<br />
le modalità d'accesso, con le eventuali limitazioni. La funzione principale <strong>di</strong><br />
un sistema <strong>di</strong> meta-dati è quella <strong>di</strong> consentire il raggiungimento dei seguenti<br />
obiettivi:<br />
• Ricerca, che consiste nell’in<strong>di</strong>viduare l’esistenza <strong>di</strong> un dato;<br />
• Localizzazione, ovvero rintracciare una particolare occorrenza del<br />
dato;<br />
• Selezione, realizzabile analizzando, valutando e filtrando una serie<br />
<strong>di</strong> informazioni;<br />
• Interoperabilità semantica, che consiste nel permettere la ricerca e<br />
l’interpretazione <strong>di</strong> dati appartenenti ad ambiti <strong>di</strong>versi grazie a una<br />
serie <strong>di</strong> equivalenze.<br />
• Gestione delle informazioni, ossia gestire le raccolte <strong>di</strong> dati grazie<br />
all’interme<strong>di</strong>azione <strong>di</strong> banche dati e cataloghi;<br />
• Disponibilità, ovvero ottenere informazioni sull’effettiva<br />
<strong>di</strong>sponibilità del dato.<br />
33
I sistemi <strong>di</strong> meta-dati hanno quin<strong>di</strong> come scopo ultimo, il migliorare la<br />
visibilità e la comprensione delle informazioni che accompagnano. Proprio<br />
per questo motivo, vengono strutturati in modo gerarchico e sono più<br />
propriamente noti come schemi od ontologie[8].<br />
Il lavoro <strong>di</strong> <strong>tesi</strong> presentato intende partire proprio da tale analisi, per poi nel<br />
prosieguo del lavoro andare a proporre una soluzione per ognuno <strong>degli</strong><br />
aspetti in<strong>di</strong>viduati e definire un ATM Information Model. I vantaggi che<br />
scaturiscono da una modellazione <strong>di</strong> questo genere, saranno evidenziati<br />
attraverso alcuni <strong>degli</strong> scenari della gestione del traffico aereo.<br />
34
2.1 – Introduzione<br />
Capitolo 2<br />
Gestione Semantica dei Dati: le Ontologie.<br />
Le conoscenza, intesa come comprensione <strong>di</strong> fatti, verità o informazioni,<br />
permette d’interpretare la realtà, agire razionalmente per mo<strong>di</strong>ficarla e<br />
prevederne l’evoluzione. Questo insieme <strong>di</strong> fattori, centrali ai fini della<br />
risoluzione <strong>di</strong> problemi, ha fatto sì che sin dal 1965 l’Intelligenza Artificiale<br />
si occupasse della “rappresentazione della conoscenza”, i cui meto<strong>di</strong> erano,<br />
e sono tutt’ora, basati su un approccio simbolico, in cui le conoscenze<br />
vengono rappresentate tramite strutture dati contenenti simboli (es. le<br />
formule della logica). Particolare interesse rivestono i problemi quali<br />
interoperabilità tra sistemi ed applicazioni <strong>di</strong>stribuite in rete e la gestione<br />
delle relative risorse che, come auspicato dall’inventore del Web, Tim<br />
Berners Lee, saranno risolti nel momento in cui i dati non avranno soltanto<br />
una struttura ( sintassi ) chiaramente definita ma anche un significato<br />
(semantica ) con<strong>di</strong>viso dalla comunità che li utilizza; sarà proprio questo<br />
passo in avanti che permetterà la loro elaborazione automatica laddove oggi<br />
è richiesta l’interpretazione umana.<br />
35
In questo contesto, un’ontologia non è altro che il tentativo <strong>di</strong> rappresentare<br />
in modo rigoroso la conoscenza nell’ambito <strong>di</strong> un determinato dominio. La<br />
rigorosità richiesta consiste in una descrizione formale (logica) della<br />
conoscenza, necessaria per tendere ad una conoscenza sempre più machine-<br />
processable e quin<strong>di</strong> permettere ad un ragionatore automatico ( reasoner )<br />
<strong>di</strong> fare inferenza su <strong>di</strong> essa. Ontologie e ragionatori automatici sono ormai<br />
riconosciuti dall’intera comunità scientifica come tecnologie car<strong>di</strong>ne.<br />
2.2 – Definizioni<br />
L'Ontologia, "lo stu<strong>di</strong>o dell'essere in quanto essere a prescindere dalle<br />
percezioni sensoriali" come <strong>di</strong>ceva Aristotele, era una <strong>di</strong>sciplina<br />
strettamente filosofica, lontana dal mondo della tecnologia. Eppure, negli<br />
ultimi anni, l'esplosione delle comunicazioni in rete ha favorito un<br />
fenomeno che sarebbe stato <strong>di</strong>fficile immaginare: gli aspetti ontologici<br />
dell’informazione acquistano un valore strategico. Tali aspetti sono<br />
intrinsecamente in<strong>di</strong>pendenti dalle forme <strong>di</strong> co<strong>di</strong>fica dell'informazione<br />
stessa, che può quin<strong>di</strong> essere isolata, recuperata, organizzata, integrata in<br />
base a ciò che più conta: il suo contenuto. La standar<strong>di</strong>zzazione <strong>di</strong> tali<br />
contenuti risulta oggi cruciale nella prospettiva delle aziende integrate e del<br />
commercio elettronico ed è in<strong>di</strong>spensabile per semplificare i processi <strong>di</strong><br />
comunicazione e <strong>di</strong> business.<br />
Inizialmente le Ontologie sono state sviluppate nel settore dell'intelligenza<br />
artificiale per facilitare la con<strong>di</strong>visione e il riuso della conoscenza; esse<br />
costituiscono un tema <strong>di</strong> interesse in <strong>di</strong>verse comunità <strong>di</strong> ricerca: ingegneria<br />
della conoscenza, elaborazione del linguaggio naturale, sistemi informativi<br />
cooperativi, gestione delle conoscenze. In particolare, in Informatica, sta ad<br />
36
in<strong>di</strong>care il tentativo <strong>di</strong> formulare uno schema concettuale esaustivo e<br />
rigoroso nell’ambito <strong>di</strong> un determinato dominio d’interesse.<br />
In letteratura un’ontologia è formalmente definita così: “An ontology is an<br />
explicit and formal specification of sharable conceptualization” [ T.R.<br />
Gruber,1993]. Una specifica formale (la descrizione è co<strong>di</strong>ficata in un<br />
linguaggio precisamente definito, le cui proprietà sono ben note e comprese,<br />
in genere questo si traduce in una descrizione basata su logica, così come<br />
per i linguaggi adottati nell’Intelligenza Artificiale) ed esplicita ( i costrutti<br />
usati nella specifica devono avere un significato esplicitamente con<strong>di</strong>viso e<br />
gli utenti dell’ontologia, che con<strong>di</strong>vidono le informazioni d’interesse<br />
dell’ontologia stessa, devono accordarsi su <strong>di</strong> essi ) <strong>di</strong> una<br />
concettualizzazione ( rappresentazione astratta <strong>di</strong> un qualche aspetto del<br />
mondo reale, d’interesse per gli utenti dell’ontologia ) con<strong>di</strong>visa (un<br />
ontologia cattura conoscenze consensuali, non private, tra persone,<br />
applicazioni, comunità ed organizzazioni ). Descrive la realtà<br />
in<strong>di</strong>pendentemente dal Vocabolario utilizzato e dall’occorrenza <strong>di</strong><br />
specifiche situazioni.<br />
Figura 2.1 - In<strong>di</strong>pendenza dal Vocabolario<br />
37
Si tratta generalmente <strong>di</strong> una struttura dati gerarchica contenente tutte le<br />
entità rilevanti, le relazioni esistenti tra <strong>di</strong> esse, le regole, gli assiomi ed i<br />
vincoli del dominio.<br />
Figura 2.2 - Esempio Schema Ontologia<br />
In particolare si compone <strong>di</strong> una lista finita <strong>di</strong> termini e <strong>di</strong> relazioni tra<br />
questi termini. Un termine denota un concetto, una classe <strong>di</strong> oggetti, nel<br />
dominio <strong>di</strong> interesse. Le possibili relazioni tra classi sono: Gerarchie,<br />
Proprietà, Restrizioni <strong>di</strong> valori, Disgiunzioni, Relazioni logiche tra oggetti.<br />
Un “ragionatore automatico” non è altro che un software in grado <strong>di</strong><br />
svolgere ragionamenti su delle basi <strong>di</strong> conoscenza adeguatamente<br />
formalizzate (quali le ontologie), dove per ragionamenti (automatici)<br />
s’intendono le capacità <strong>di</strong> elaborare una base <strong>di</strong> conoscenza secondo alcune<br />
regole in modo da validarla ed analizzarla.<br />
38
2.3 – Esigenze che spingono a modellare semanticamente un<br />
dato dominio<br />
Un’ontologia, descrivibile per mezzo <strong>di</strong> specifici linguaggi formali, è<br />
innanzitutto uno schema logico, e come tale ha quin<strong>di</strong> lo scopo <strong>di</strong><br />
rappresentare ed organizzare una determinata realtà d’interesse<br />
descrivendola in modo da agevolare una maggiore interpretabilità del<br />
contenuto da parte delle persone, ma soprattutto delle macchine, delle<br />
applicazioni e <strong>degli</strong> agenti intelligenti.<br />
Le ontologie possono rivelarsi estremamente utili come modo <strong>di</strong> strutturare,<br />
definire e standar<strong>di</strong>zzare il significato dei termini dei meta-dati che vengono<br />
utilizzati e collezionati in un certo ambiente. Possono essere d’aiuto nei<br />
processi <strong>di</strong> business <strong>di</strong> comunità ristrette, ma <strong>di</strong>ventano molto utili in<br />
ambienti fortemente es<strong>tesi</strong>. Usando le ontologie, le applicazioni del domani<br />
potranno essere “intelligenti”, nel senso che esse potranno lavorare più<br />
accuratamente al livello concettuale dell’uomo.<br />
Le ontologie sono critiche per applicazioni che vogliono integrare<br />
informazioni tra <strong>di</strong>versi contesti. Ciò che si vuole evitare è che uno stesso<br />
termine possa essere usato con <strong>di</strong>versi significati in contesti <strong>di</strong>versi, o che<br />
termini <strong>di</strong>fferenti possano avere un identico significato. Le ontologie, con la<br />
loro semantica, garantiscono l’interoperabilità tra schemi <strong>di</strong><br />
rappresentazione sviluppati autonomamente da agenti <strong>di</strong>versi e sono dunque<br />
l’ideale per progetti <strong>di</strong> gran<strong>di</strong> <strong>di</strong>mensioni e che coinvolgono numerosi<br />
gruppi <strong>di</strong> lavoro.<br />
Queste descrizioni strutturate o “modelli dei fatti noti” ( known facts<br />
models) sono più efficaci quando le separazioni semantiche, che per le<br />
menti <strong>degli</strong> uomini sono naturali, sono cruciali nell’ambito dell’applicazione<br />
39
da realizzare. Ciò include la capacità <strong>di</strong> riuscire a comprendere ciò che è<br />
“nascosto” in un estratto <strong>di</strong> un certo dominio.<br />
In generale, le ontologie possono essere utili in tutte le fasi del ciclo <strong>di</strong><br />
sviluppo del software partendo dall’analisi dei requisiti, passando per la<br />
progettazione e l’implementazione, fino a giungere a run-time[9]. Un<br />
ontologia può essere usata per realizzare la specifica dei requisiti in<br />
alternativa all’uso del linguaggio naturale. Ciò permette <strong>di</strong> ottenere un<br />
documento chiaro e formale adatto anche alla raccolta dei requisiti secondo<br />
un approccio incrementale. Un ontologia può essere utile per descrivere<br />
semanticamente un certo componente software rappresentando in maniera<br />
formale quelle che sono le sue funzionalità. Un ontologia può essere<br />
utilizzata nella fase <strong>di</strong> passaggio dal modello progettuale<br />
all’implementazione. In particolare può essere utile a supporto del<br />
linguaggio <strong>di</strong> modellazione UML al fine <strong>di</strong> risolvere le ambiguità che<br />
possono presentarsi, e permettendo validazione e controllo <strong>di</strong> consistenza<br />
del modello considerato. Un ontologia può essere utilizzata per realizzare un<br />
modello ad oggetti del dominio al fine <strong>di</strong> ridurre la complessità del dominio<br />
stesso. In tal senso l’accesso all’ontologia, a livello <strong>di</strong> co<strong>di</strong>ce, può essere<br />
realizzato me<strong>di</strong>ante la generazione <strong>di</strong> API, per esempio incapsulando<br />
concetti attivi dell’ontologia in classi del particolare linguaggio utilizzato.<br />
Ed ancora un ontologia può essere utilizzata per la realizzazione <strong>di</strong> un<br />
Semantic Middleware, cioè per conferire al middleware una certa<br />
conoscenza del dominio aumentandone quin<strong>di</strong> le funzionalità, l’efficienza e<br />
la qualità del servizio. Infine si può pensare <strong>di</strong> utilizzare ontologie anche per<br />
politiche <strong>di</strong> testing, manutenzione del software ed ancora nell’ambito dei<br />
web Services,<br />
40
2.4 – Vantaggi nell’uso <strong>di</strong> Ontologie<br />
Modellare e definire un’ontologia costituisce un lavoro fortemente te<strong>di</strong>oso e<br />
costoso. Pertanto, è importante <strong>di</strong>mostrare i vantaggi che possono essere<br />
ottenuti dall’utilizzo <strong>di</strong> ontologie.<br />
Un primo vantaggio è la “Con<strong>di</strong>visione della conoscenza”. Quando sistemi<br />
software eterogenei e persone devono collaborare per raggiungere un<br />
obiettivo sufficientemente complesso, questi hanno necessità <strong>di</strong> con<strong>di</strong>videre<br />
una conoscenza comune dei dati da trattare. Un modello ontologico<br />
con<strong>di</strong>viso tra i vari partecipanti, permette allora una conoscenza chiara e<br />
con<strong>di</strong>visa della realtà <strong>di</strong> interesse. In questo scenario, le ontologie sono<br />
particolarmente adatte a funzionalità <strong>di</strong> Composizione ed Integrazione<br />
automatica dei dati. Più in particolare, data la loro grande flessibilità, i<br />
modelli ontologici possono supportare tutte le strutture dati attualmente<br />
usate. Questa proprietà permette ai sistemi <strong>di</strong> integrare dati<br />
“orizzontalmente” e quin<strong>di</strong> <strong>di</strong> realizzare applicazioni più potenti.<br />
Estensibilità e Flessibilità. Ogni ontologia racchiude le informazioni<br />
relative ad un certo dominio in maniera autonoma e coerente con la realtà,<br />
almeno fino a quando il dominio originale rimane immutato. Essendo, in un<br />
ontologia, ogni concetto attivo nella realtà un nodo o una classe della<br />
gerarchia, ciò significa che un eventuale nuovo concetto può aggiungersi<br />
molto facilmente come specializzazione <strong>di</strong> un concetto già presente.<br />
Riuso. Quando un sistema software è interessato ad un nuovo dominio, un<br />
modello per tale dominio risulta necessario. È inefficiente e soggetto a errori<br />
sviluppare sempre il modello ex-novo. È ovviamente maggiormente<br />
conveniente sviluppare questi modelli riutilizzando le più piccole<br />
componenti già ben definite. Un ontologia può riutilizzare i concetti e le<br />
41
definizioni del caso da ontologie pre-esistenti. I progettisti possono<br />
sviluppare così le proprie ontologie approfittando <strong>di</strong> quelle predefinite,<br />
opportunamente catalogate in un biblioteca, senza dovere sviluppare<br />
manualmente il modello <strong>di</strong> fondo. La possibilità <strong>di</strong> riutilizzare questi<br />
modelli riduce il costo <strong>di</strong> sviluppo ed aumenta la qualità dei modelli<br />
risultanti.<br />
La struttura semantica realizzata dalle ontologie si <strong>di</strong>fferenzia dalla<br />
superficiale composizione e <strong>di</strong>sposizione delle informazioni ( i dati ) che i<br />
database relazionali permettono. Con i database, virtualmente, tutto il<br />
contenuto semantico deve essere “catturato” nella logica della applicazione.<br />
Le ontologie, invece, sono spesso in grado <strong>di</strong> fornire una specifica oggettiva<br />
delle informazioni del dominio, ponendosi come un modello comune <strong>di</strong><br />
rappresentazione dei concetti e delle relazioni caratterizzanti il modo in cui<br />
la conoscenza è espressa in quello specifico dominio. Questa specifica può<br />
essere il primo passo nella costruzione <strong>di</strong> sistemi <strong>di</strong> informazione<br />
semantically-aware ( forniti <strong>di</strong> semantica ) per supportare attività personali,<br />
governative e d’impresa. Ed ancora, un cambiamento all’interno del<br />
dominio può condurre alla necessità <strong>di</strong> aggiungere o eliminare alcuni<br />
concetti. Mentre in un database relazionale questa cosa si traduce magari<br />
nella rigenerazione delle varie tabelle e relazioni, la stessa cosa in un<br />
modello ontologico si realizza banalmente aggiungendo o rimuovendo classi<br />
o specializzandone <strong>di</strong> già esistenti senza grande impatto ne sul modello ne<br />
sulle applicazioni che fanno uso <strong>di</strong> quel modello.<br />
42
2.5 – Tipi <strong>di</strong> ontologie<br />
Esistono vari mo<strong>di</strong> <strong>di</strong> classificare le ontologie e vari tipi <strong>di</strong> ontologie.<br />
Le ontologie possono variare non solo nel contenuto, ma anche nella loro<br />
struttura ed implementazione.<br />
Linguaggi<br />
Seguendo le in<strong>di</strong>cazioni <strong>di</strong> Uschold (1996) possiamo in<strong>di</strong>viduare quattro tipi<br />
<strong>di</strong> ontologie in base al linguaggio con cui sono espresse:<br />
• altamente informali se scritte nel linguaggio naturale;<br />
• semi-informali se espresse in una forma strutturata e ristretta del<br />
linguaggio naturale, in modo da aumentarne la chiarezza e ridurne<br />
l’ambiguità;<br />
• semi-formali se sono definite in un linguaggio artificiale e<br />
formalmente definito, quale Ontolingua;<br />
• altamente formali se sono espresse in un linguaggio con una<br />
semantica formale, teoremi e verifiche <strong>di</strong> proprietà quali la<br />
completezza.<br />
Scopo concettuale<br />
Le ontologie <strong>di</strong>fferiscono anche rispetto allo scopo e all’ambito del loro<br />
contenuto.<br />
• Top-level Ontologies, includono un vocabolario relativo a cose,<br />
eventi, tempo, spazio, causalità, comportamento, funzioni. Sono<br />
dette anche Meta-ontologie perchè possono essere riusate da una<br />
parte all’altra nei domini. Esse descrivono concetti molto generali<br />
quali spazio, tempo, materia, oggetto, evento, azione, …. che sono<br />
43
in<strong>di</strong>pendenti da un particolare problema o dominio (un esempio è<br />
Cyc ).<br />
• Ontologie <strong>di</strong> dominio, che possono essere riusate in un dato<br />
dominio. Forniscono dei vocabolari sui concetti presenti in un<br />
dominio, delle relazioni presenti nel dominio e sulle teorie e principi<br />
che governano il dominio.<br />
• Ontologie <strong>di</strong> scopo ( task level ontology ) che rappresentano la<br />
Istanzazione<br />
struttura dei processi, descrivendo i concetti <strong>di</strong> base e le relazioni<br />
esistenti tra essi sulla base delle informazioni sul dominio.<br />
Tutte le ontologie hanno una componente che storicamente è stata chiamata<br />
la componente terminologica ( the terminologic component ). Questa<br />
componente è praticamente analoga a uno schema per un database<br />
relazionale o un documento XML. Essa definisce i termini e la struttura<br />
dell’ontologia dell’area <strong>di</strong> interesse. La seconda componente, quella<br />
asserzionale, popola l’ontologia con delle istanze che manifestano la<br />
definizione terminologica. La linea <strong>di</strong> separazione tra trattare un’entità come<br />
un concetto e trattarlo come un’istanza è solitamente una decisione specifica<br />
dell’ontologia.<br />
2.6 – Costruzione <strong>di</strong> un’ontologia<br />
I passi principali per costruire un’ontologia sono semplici e lineari. Esistono<br />
varie metodologie per guidare l’approccio alle ontologie e sono <strong>di</strong>sponibili<br />
numerosi tool che supportano il processo <strong>di</strong> costruzione <strong>di</strong> un’ontologia. Il<br />
problema è che queste procedure non sono converse in stili o protocolli <strong>di</strong><br />
44
sviluppo standard, e i tool non hanno ancora raggiunto in questo campo il<br />
livello <strong>di</strong> maturità che invece essi <strong>di</strong>mostrano in altre applicazioni software.<br />
Un’ontologia è tipicamente costruita seguendo più o meno i seguenti passi:<br />
Conoscenza del dominio<br />
Acquisire il maggior numero <strong>di</strong> informazioni possibili sul dominio <strong>di</strong><br />
interesse, raccogliendo i termini usati per descriverne le entità, in<br />
collaborazione con gli esperti del dominio. Queste definizioni devono poi<br />
essere collezionate per poter essere poi espresse nel linguaggio formale<br />
scelto per la definizione dell’ontologia. Le domande da porsi sono le<br />
seguenti: 1) quale realtà dovrà essere rappresentata dall’ontologia? 2) a<br />
quale scopo? 3) Quali domande dovranno trovare risposta nell’ontologia che<br />
si realizzerà? Risulta evidente che non tutte le risposte sono note a priori.<br />
Organizzazione dell’ontologia<br />
La prima questione da affrontare è quella dell'in<strong>di</strong>viduazione della struttura<br />
del dominio che si sta analizzando andando ad in<strong>di</strong>viduare gli oggetti che lo<br />
costituiscono. Una volta in<strong>di</strong>viduati i concetti-chiave, si devono in<strong>di</strong>viduare<br />
tutte le caratteristiche e le proprietà che sono rilevanti per descriverli: ad<br />
esempio, i dati anagrafici per le persone o i dettagli <strong>di</strong> fabbricazione per un<br />
prodotto in ven<strong>di</strong>ta. A seconda poi del linguaggio che si utilizzerà e delle<br />
scelte del progettista, in seguito, questi attributi saranno trasformati in<br />
proprietà o relazioni.. Questa operazione semplifica l’identificazione dei<br />
principali concetti del dominio e delle loro proprietà, identificando le<br />
relazioni tra i concetti, creando concetti astratti, identificando quali <strong>di</strong> questi<br />
hanno delle istanze etc….È importante che la tassonomia rispecchi i legami<br />
45
eali e che metta in luce gli aspetti <strong>di</strong> classificazione che si riscontrano nella<br />
realtà.<br />
Le domande da porsi in questa fase sono: 1) quali sono i concetti<br />
importanti? 2) quali sono le proprietà <strong>di</strong> questi concetti e tra questi<br />
concetti? Si procede poi popolando i tre glossari. Il primo flat glossary, che<br />
consiste nel documentare ciascun concetto con un termine che lo in<strong>di</strong>vidua e<br />
con una definizione in linguaggio naturale ( e fornire esempi dove<br />
appropriato) in cui i nomi <strong>di</strong>ventano oggetti o attori, e i verbi si trasformano<br />
in relazioni o processi. Il secondo, structured glossary, che consiste nella<br />
decomposizione e/o specializzazione dei termini al fine <strong>di</strong> ottenere un<br />
tassonomia dei concetti e nell’in<strong>di</strong>viduazione <strong>degli</strong> attributi <strong>di</strong> un concetto.<br />
Il terzo ed ultimo identifica tutte le relazioni concettuali fra gli oggetti.<br />
Poiché il dominio può non essere l'unico <strong>di</strong> quel tipo, rappresentato<br />
me<strong>di</strong>ante un'ontologia, è possibile che ci siano ontologie pre-esistenti che<br />
definiscano, tutti o in parte, i concetti appena trovati. L'in<strong>di</strong>viduazione <strong>di</strong><br />
queste ontologie è molto importante: in primo luogo, i concetti già definiti<br />
possono essere riutilizzati, così come le proprietà e le relazioni, in modo che<br />
non siano specificati più volte; i concetti nuovi, invece, sono <strong>di</strong>chiarati e<br />
memorizzati nella nuova ontologia, che <strong>di</strong>venta un'estensione <strong>di</strong> quella<br />
precedente, così da avere una gerarchia, e i nuovi elementi siano <strong>di</strong>sponibili<br />
per essere a loro volta es<strong>tesi</strong>, per raggiungere nuovi scopi.<br />
Popolamento dell’ontologia<br />
Aggiungere concetti, relazioni, ed entità fino a raggiungere il livello <strong>di</strong><br />
dettaglio necessario a sod<strong>di</strong>sfare gli obiettivi dell’ontologia. Per in<strong>di</strong>viduare<br />
nuovi concetti è possibile adottare tre tipi <strong>di</strong> approcci: 1) top-down, che<br />
46
prevede l’identificazione dei concetti generali e attraverso un raffinamento<br />
successivo si procede verso i concetti particolari ( per esempio da persona a<br />
padre ), 2) bottom-up, che procede per livelli <strong>di</strong> astrazione, partendo dalle<br />
entità particolari del dominio per astrarre i concetti generali che racchiudono<br />
o fanno uso <strong>di</strong> quelli particolari (per esempio da padre a persona) e<br />
3) middle-out ( o combinato ) che prevede <strong>di</strong> in<strong>di</strong>viduare prima i concetti<br />
salienti per poi generalizzarli e specializzarli; i concetti “nel mezzo”<br />
tendono ad essere i più descrittivi del dominio. I concetti da soli non<br />
forniscono informazioni sufficienti; è importante definire anche le relazioni<br />
tra gli oggetti del dominio procedendo analogamente a quanto detto prima.<br />
Inoltre è consigliabile imporre dei vincoli sulle relazioni, quali la car<strong>di</strong>nalità<br />
( ad esempio un computer ha [1,n] processori ) sul dominio e sul codominio<br />
della relazione, sul tipo <strong>di</strong> valore ( un in<strong>di</strong>rizzo ha un CAP il cui codominio<br />
è <strong>di</strong> tipo stringa , una bottiglia ha un’etichetta con un codominio <strong>di</strong> tipo<br />
istanza , un’idea coinvolge concetti con un codominio <strong>di</strong> tipo concetto).<br />
Validazione dell’artefatto realizzato<br />
Risolvere inconsistenze sintattiche, logiche e semantiche tra gli elementi<br />
dell’ontologia. I controlli <strong>di</strong> consistenza possono anche favorire una<br />
classificazione automatica che definisce nuovi concetti sulla base delle<br />
proprietà delle entità e delle relazioni tra le classi.<br />
Consegna<br />
Al termine dello sviluppo <strong>di</strong> un’ontologia, così come per qualunque altro<br />
sviluppo software, è necessaria una verifica da parte <strong>degli</strong> esperti del<br />
47
dominio e la seguente consegna del prodotto, assieme a tutti i documenti<br />
relativi.<br />
Ricapitolando, la modellazione <strong>di</strong> ontologie procede per classi. Il<br />
meccanismo dell’ere<strong>di</strong>tarietà consente <strong>di</strong> definire un’unica volta gli attributi<br />
che le classi ad uno stesso livello ere<strong>di</strong>tano da una classe padre. La<br />
possibilità <strong>di</strong> definire come valore <strong>di</strong> un attributo un’altra classe consente <strong>di</strong><br />
stabilire qualsiasi tipo <strong>di</strong> relazione tra classi. Non sempre però risulta<br />
imme<strong>di</strong>ato capire cosa dobbiamo definire come attributo, cosa come classe,<br />
cosa come attributo che richiama una classe. Possiamo definire alcune<br />
regole generali che possono aiutare ad ottenere una buona modellazione.<br />
Può essere buona norma non dare alle classi nomi al volte al plurale, a volte<br />
al singolare. La classe rappresenta una categoria, uno schema. Spesso si può<br />
essere portati ad assegnare nomi al plurale alle classi pensando ad esse<br />
come a dei contenitori <strong>di</strong> in<strong>di</strong>vidui, ma questa è una cattiva interpretazione<br />
della funzione della classe nell’ontologia. Un’altra cosa da tener presente è<br />
il fatto che l’albero dell’ontologia deve essere bilanciato nella granularità. In<br />
pratica potrebbe accadere che ci si verrebbe a trovare con concetti collegati<br />
fra loro, ma uno su un ramo molto più profondo dell’altro. Questo in<strong>di</strong>ca un<br />
“buco” nella definizione dei concetti e suggerisce che si debba colmare<br />
questo gap semantico inserendo nuovi concetti sul ramo. Un ragionamento<br />
analogo si può fare nel caso in cui ci si trovasse con una classe con un<br />
numero molto alto <strong>di</strong> figli. Questa situazione, se non è chiaramente<br />
giustificata, è in<strong>di</strong>ce <strong>di</strong> un deficit <strong>di</strong> definizione. Quello che bisogna fare è<br />
quin<strong>di</strong> ricercare proprietà comuni alle varie classi figlie in modo da<br />
raggrupparle con l’aggiunta <strong>di</strong> nuove classi. All’opposto, è una scelta non<br />
48
sod<strong>di</strong>sfacente modellare una classe con un unico figlio. Sud<strong>di</strong>videre una<br />
classe significa stabilire che alcune proprietà e caratteristiche devono<br />
riferirsi ad oggetti <strong>di</strong>versi. Dunque sud<strong>di</strong>videre con un’unica classe pare una<br />
scelta ingiustificata[10].<br />
Una buona ontologia deve possedere quin<strong>di</strong> le seguenti caratteristiche:<br />
• Prevede tutte le <strong>di</strong>stinzioni chiave;<br />
• Non fare assunzioni implicite;<br />
• Essere chiara e concisa: ciascun concetto è rilevante e non ci sono<br />
duplicati;<br />
• Essere coerente: permettere la presenza <strong>di</strong> tutte e sole le inferenze<br />
che sono consistenti con le definizioni dei concetti;<br />
• Essere frutto <strong>di</strong> scelte progettuali motivate;<br />
• Essere facilmente mo<strong>di</strong>ficabile;<br />
• Essere riusabile.<br />
La modellazione è un processo incrementale ed iterativo. Inoltre non c’è un<br />
solo modo corretto <strong>di</strong> modellare un dominio, ma la soluzione <strong>di</strong>pende<br />
dall’applicazione e dalle estensioni previste.<br />
Importanti risultano anche le convenzioni <strong>di</strong> nomenclatura ( naming<br />
conventions ), cioè l’operazione <strong>di</strong> definire una convenzione per concetti,<br />
istanze e relazioni a cui aderire. Alcune semplici regole guidano questo<br />
processo. Bisogna evitare sovrapposizioni, cioè non assegnare uno stesso<br />
nome per un concetto e per una relazione, aggiungere delimitatori, utilizzare<br />
prefissi e suffissi per le relazioni ( haproduttore, produttore<strong>di</strong> ), <strong>di</strong>stinguere<br />
gli oggetti dai processi (prenotazione, fatturazione vs. prenotare, fatturare),<br />
49
non usare abbreviazioni (Cod. Avv. Post. per Co<strong>di</strong>ce Avviamento Postale,<br />
Doc. per Documento ecc.).<br />
Risulta allora chiaro che è soprattutto l’esperienza che aiuta nel processo <strong>di</strong><br />
costruzione <strong>di</strong> un’ontologia, ma è ugualmente evidente che documentare<br />
ogni passo dello sviluppo, annotare i problemi riscontrati e le eventuali<br />
soluzioni, può aiutare gli utilizzatori e gli stessi progettisti in vista <strong>di</strong><br />
successivi cambiamenti.<br />
Il lavoro della modellazione non è insomma facile. Può essere utile farsi<br />
aiutare da un tool che viene in soccorso allo sviluppatore sostanzialmente in<br />
due mo<strong>di</strong>: 1) fornisce una visualizzazione grafica dell’ontologia, e quin<strong>di</strong><br />
avere una visione d’insieme delle relazioni fra le classi e 2) evita <strong>di</strong> scrivere<br />
il co<strong>di</strong>ce a mano, riducendo gli errori involontari.<br />
2.7 – Web Semantico come esempio <strong>di</strong> impiego <strong>di</strong> ontologie<br />
2.7.1 – Contesto<br />
Nel 1989, anno in cui Tim Berners-Lee inventò il World Wide Web, inizia<br />
una nuova era tecnologica, economica e sociale. Le università cominciano a<br />
con<strong>di</strong>videre un sempre maggior numero <strong>di</strong> informazioni, favorendo lo<br />
sviluppo della ricerca, le aziende trovano una “vetrina”, un biglietto da<br />
visita che gli consente <strong>di</strong> farsi conoscere meglio nel mondo, nascono nuove<br />
società <strong>di</strong> servizi, l’e-commerce, l’e-government, le aste on-line, i blog. Le<br />
informazioni <strong>di</strong>ventano un bene sempre più prezioso e numeroso, aumenta<br />
la necessità <strong>di</strong> con<strong>di</strong>viderle e soprattutto <strong>di</strong> catalogarle. I servizi stessi sono<br />
sempre più sofisticati: spesso un semplice click <strong>di</strong> mouse racchiude una<br />
transazione molto complessa tra <strong>di</strong>versi agenti software, basti pensare al<br />
tra<strong>di</strong>ng on-line o ai servizi bancari e finanziari. Ebbene, tutta questa serie <strong>di</strong><br />
50
cambiamenti è avvenuta nell’arco <strong>di</strong> pochi anni, probabilmente non finirà<br />
mai, ma Berners-Lee, neanche <strong>di</strong>eci anni dopo la nascita del WWW, ha<br />
ritenuto che questo strumento potesse essere inadeguato per gli sviluppi che<br />
ha avuto. In particolare, egli propose <strong>di</strong> rendere i documenti presenti nel<br />
Web, fino ad allora ad uso e consumo <strong>degli</strong> esseri umani, interpretabili<br />
anche dai computer stessi ( machine-processable )[11].<br />
Ancora oggi lo scenario del World Wide Web è quello <strong>di</strong> un enorme insieme<br />
<strong>di</strong> testi collegati in qualche modo tra loro. I testi sono creati ad uso e<br />
consumo dei soli utenti umani, gli unici allo stato attuale in grado <strong>di</strong><br />
comprendere i contenuti delle pagine che stanno visitando. Un caratteristica<br />
essenziale del WWW è che "qualunque cosa può essere collegata a<br />
qualunque altra cosa da chiunque" grazie ai potenti link ipertestuali.<br />
Gli utenti umani si orientano nel Web grazie alla loro esperienza <strong>di</strong><br />
navigazione e alla capacità <strong>di</strong> evocazione che possono avere parole o<br />
espressioni chiave. L'esperienza è un aspetto molto importante <strong>di</strong> cui tutti ci<br />
serviamo: impariamo che determinati contenuti si possono reperire sotto<br />
determinati portali, che l'aspetto <strong>di</strong> un sito può <strong>di</strong>rci qualche cosa sul genere<br />
( formale o informale ) delle informazioni. Essa si costruisce nel tempo ma<br />
non è molto legata ad aspetti tecnici, al co<strong>di</strong>ce e alle applicazioni che<br />
costituiscono un sito. L'altro aspetto, quello delle parole chiave, è più legato<br />
al co<strong>di</strong>ce. Queste caratteristiche non appartengono invece a nessuna<br />
applicazione, che in definitiva non è in grado ( tranne qualche eccezione<br />
limitata e molto complessa, quin<strong>di</strong> non significativa ) <strong>di</strong> interpretare il<br />
contenuto delle pagine, che quin<strong>di</strong> restano per una macchina una sequenza<br />
<strong>di</strong> caratteri..<br />
51
Un ulteriore problema del Web o<strong>di</strong>erno è l’integrazione delle informazioni.<br />
Spesso l’informazione desiderata non proviene da un singolo sito, ma è<br />
ottenibile da <strong>di</strong>verse fonti. Ad esempio, se si è interessati alla prenotazione<br />
<strong>di</strong> un hotel in una certa città, sarebbe auspicabile sapere, con una sola<br />
ricerca, i prezzi e le <strong>di</strong>sponibilità <strong>di</strong> tutti gli hotel <strong>di</strong> quella città a<br />
prescindere dall’esistenza o meno <strong>di</strong> uno o più siti sito che offrano un<br />
sistema <strong>di</strong> prenotazione comune.<br />
Infine, il Web tra<strong>di</strong>zionale non permette <strong>di</strong> risolvere problemi complessi<br />
attraverso la cooperazione <strong>di</strong> <strong>di</strong>fferenti applicazioni ed utenti umani. Sono<br />
pochi, infatti, i siti Web progettati per fornire servizi ad altri servizi, la<br />
maggior parte gioca ancora un ruolo <strong>di</strong> contenitore <strong>di</strong> informazioni che<br />
possono essere estratte a richiesta. Il Web Semantico rappresenta una<br />
soluzione alle limitazioni imposte dal Web o<strong>di</strong>erno. Il progetto è basato su<br />
un piano molto preciso: ridefinire e ristrutturare le risorse sul Web in modo<br />
che il loro significato sia accessibile non solo a utenti umani, ma anche, e<br />
soprattutto, ad applicazioni software. In questo modo, le macchine potranno<br />
accedere ad un insieme strutturato <strong>di</strong> informazioni e ad un insieme <strong>di</strong> regole<br />
da utilizzare per il ragionamento automatico, e quin<strong>di</strong> potranno manipolare,<br />
integrare e rendere <strong>di</strong>sponibili tali risorse per applicazioni software oltre che<br />
per gli utenti. La definizione data proprio da Tim Berners-Lee è "Il Web<br />
Semantico è un'estensione del Web corrente in cui le informazioni hanno un<br />
ben preciso significato e in cui computer e utenti lavorano in<br />
cooperazione"[12].<br />
Le possibilità offerte dal Web Semantico sono tante e tali che non si sono<br />
ancora approfon<strong>di</strong>te le sue potenzialità. Per questo, più che <strong>di</strong> tecnologia, si<br />
parla <strong>di</strong> visione del Web Semantico.<br />
52
Il Web Semantico poggia le proprie basi su tre strumenti:<br />
• agenti software intelligenti: programmi che sappiano interpretare<br />
correttamente le informazioni circa la semantica delle risorse;<br />
• annotazioni semantiche: dati che descrivono le risorse facendo uso <strong>di</strong><br />
linguaggi <strong>di</strong> rappresentazione della conoscenza;<br />
• ontologie: schemi concettuali esaustivi e univocamente interpretabili<br />
che definiscono rigorosamente un dato dominio.<br />
Gli agenti software del Web Semantico hanno il compito <strong>di</strong> assistere in<br />
maniera intelligente l’essere umano nella fase <strong>di</strong> ricerca, interpretando<br />
correttamente la semantica dei documenti trovati, visualizzando solo quelli<br />
desiderati e scambiandosi i risultati con altri programmi. La conoscenza<br />
dovrebbe rendere gli agenti software capaci <strong>di</strong> ragionare in modo complesso<br />
ed in piena autonomia sulle informazioni cui hanno accesso. Tali programmi<br />
devono almeno essere in grado <strong>di</strong> riconoscere e rappresentare gli obiettivi <strong>di</strong><br />
un certo utente, <strong>di</strong> mettere in atto una sequenza <strong>di</strong> azioni che possa<br />
sod<strong>di</strong>sfare tali obiettivi ed eventualmente <strong>di</strong> cooperare con altri agenti per<br />
ottenere tale risultato.<br />
2.7.2 – Architettura del Web Semantico<br />
Scrivere del co<strong>di</strong>ce in grado <strong>di</strong> compiere operazioni semantiche <strong>di</strong>pende<br />
dallo schema utilizzato per archiviare le informazioni. L'idea del Web<br />
Semantico nasce estendendo l'idea <strong>di</strong> utilizzare schemi per descrivere<br />
domini <strong>di</strong> informazione. I meta-dati ( sono le informazioni comprensibili da<br />
una macchina e relativi ad una risorsa Web o qualche altra cosa, che<br />
possono essere estratti da una risorsa o possono essere trasferiti con il<br />
documento ) devono mappare i dati rispetto a classi, o concetti, <strong>di</strong> questo<br />
53
schema <strong>di</strong> dominio. In questo modo si hanno strutture in grado <strong>di</strong> descrivere<br />
e automatizzare i collegamenti esistenti fra i dati. Il Web Semantico è, come<br />
l'XML, un ambiente <strong>di</strong>chiarativo, in cui si specifica il significato dei dati, e<br />
non il modo in cui si intende utilizzarli. La semantica dei dati consiste nel<br />
dare alla macchina delle informazioni utili in modo che essa possa utilizzare<br />
i dati nel modo corretto, convertendoli eventualmente.<br />
Riassumendo, il Web Semantico si compone <strong>di</strong> tre livelli fondamentali:<br />
• i dati<br />
• i meta-dati riportano questi dati ai concetti <strong>di</strong> uno schema<br />
• nello schema si esprimono le relazioni fra concetti, che <strong>di</strong>ventano<br />
classi <strong>di</strong> dati<br />
I linguaggi <strong>di</strong> rappresentazione della conoscenza del Web Semantico<br />
con<strong>di</strong>vidono lo stesso data model - come si vedrà in seguito un grafo<br />
orientato ed etichettato e si <strong>di</strong>fferenziano per il livello crescente <strong>di</strong><br />
espressività semantica che possono fornire. La sintassi <strong>di</strong> ciascun linguaggio<br />
è definita in XML, poiché è facilmente esten<strong>di</strong>bile ed altamente<br />
interoperabile. Grazie all’uso <strong>di</strong> namespace e <strong>di</strong> URI, è possibile in maniera<br />
efficace identificare le risorse ed i vocabolari che descrivono i linguaggi<br />
presenti all’interno dei documenti descritti.<br />
L’architettura è stratificata, ed ogni linguaggio <strong>di</strong> un livello superiore<br />
estende i linguaggi sottostanti. All’aumentare <strong>di</strong> livello aumenta il potere<br />
espressivo e <strong>di</strong> conseguenza la complessità e la deci<strong>di</strong>bilità stessa del<br />
reasoning. Utilizzeremo il termine KB ( che sta per knowledge base ) per<br />
in<strong>di</strong>care una base <strong>di</strong> conoscenza, che può essere, ad esempio, un’ontologia<br />
OWL oppure un documento RDF.<br />
54
Figura 2.3 - Architettura del Web Semantico<br />
Il Web Semantico ha quin<strong>di</strong> una architettura a livelli, che però non è stata<br />
ancora sviluppata completamente. Ciò avverrà nei prossimi anni.<br />
Ve<strong>di</strong>amo ora il <strong>di</strong>agramma più in dettaglio:<br />
• il Web Semantico si basa sullo standard [13] URI (Uniform Resource<br />
Identifiers), per la definizione univoca <strong>di</strong> in<strong>di</strong>rizzi Internet;<br />
• al livello superiore si trova XML (eXtensible Markup Language),<br />
che gioca un ruolo <strong>di</strong> base con i namespace e gli XML Schema. Con<br />
XML è possibile modellare secondo le proprie esigenze, e senza<br />
troppi vincoli, la realtà che si considera: per questo è un linguaggio<br />
che porta con sé alcune informazioni sulla semantica <strong>degli</strong> oggetti.<br />
Questa libertà lo rende poco adatto, però, a definire completamente<br />
55
la struttura e l'interscambio <strong>di</strong> informazioni tra <strong>di</strong>verse realtà, quin<strong>di</strong><br />
è stata favorita la creazione <strong>di</strong> un nuovo linguaggio;<br />
• RDF (Resource Description Framework) e RDF Schema, che<br />
costituiscono il linguaggio per descrivere le risorse e i loro tipi.<br />
Derivano da XML;<br />
• al livello superiore si pone il livello ontologico. Una ontologia<br />
permette <strong>di</strong> descrivere le relazioni tra i tipi <strong>di</strong> elementi (per es.<br />
"questa è una proprietà transitiva") senza però fornire informazioni<br />
su come utilizzare queste relazioni dal punto <strong>di</strong> vista<br />
computazionale;<br />
• la firma <strong>di</strong>gitale è <strong>di</strong> significativa importanza in <strong>di</strong>versi strati nel<br />
modello astratto del Web Semantico;<br />
• l livello logico è il livello imme<strong>di</strong>atamente superiore. A questo<br />
livello le asserzioni esistenti sul Web possono essere utilizzate per<br />
derivare nuova conoscenza.<br />
2.8 – Linguaggi per la definizione <strong>di</strong> ontologie<br />
2.8.1 – URI : Uniform Resource Identifiers<br />
Dall’esempio fatto sul Web Semantico, si evince che una aspetto dal quale<br />
non si può prescindere è la necessità <strong>di</strong> identificare una generica risorsa<br />
altrimenti non potremo riferirci ad essa. Una risorsa può essere detta un<br />
“documento”, per evidenziarne la leggibilità per gli esseri umani ( human-<br />
understandable ), oppure può essere detta “oggetto” per evidenziare il fatto<br />
che è comprensibile dalle macchine ( machine-understandable ). Ad<br />
esempio sono risorse gli autori, i libri, gli e<strong>di</strong>tori, le persone, gli hotel, le<br />
56
stanze, un in<strong>di</strong>rizzo Web, un’immagine, un file, un servizio, un in<strong>di</strong>rizzo <strong>di</strong><br />
posta elettronica, etc…<br />
Ogni risorsa ha un URI che può essere una stringa o qualsiasi altro tipo <strong>di</strong><br />
identificatore. Gli URI rendono <strong>di</strong>sponibili le risorse secondo una varietà <strong>di</strong><br />
protocolli quali HTTP, FTP, etc... Un URI può essere classificato come<br />
URL ( Uniform Resource Locator ) o come URN ( Uniform Resource<br />
Name). Un URL è un URI che, oltre a identificare una risorsa, fornisce<br />
mezzi per agire su <strong>di</strong> essa o per ottenere una sua rappresentazione<br />
descrivendo il suo meccanismo <strong>di</strong> accesso primario o la sua ubicazione o<br />
location in una rete. Per esempio, l'URL<br />
http://www.sesm.it/alberto<br />
è un URI che identifica una risorsa e lascia intendere che una<br />
rappresentazione <strong>di</strong> tale risorsa è ottenibile via HTTP da un host <strong>di</strong> rete<br />
chiamato www.sesm.it/alberto. Un URN è ancora un URI che identifica una<br />
risorsa me<strong>di</strong>ante un nome in un particolare dominio <strong>di</strong> nomi ( namespace ).<br />
Un URN può essere usato per parlare <strong>di</strong> una risorsa senza lasciar intendere<br />
la sua ubicazione o come ottenerne una rappresentazione.<br />
È certamente da notare il fatto che il meccanismo <strong>di</strong> creazione <strong>degli</strong> URI è<br />
decentralizzato nel senso che non è possibile l’esistenza <strong>di</strong> nessuna persona<br />
od organizzazione che sia in grado <strong>di</strong> controllare chi li produce o cosa ne fa.<br />
Questa caratteristica rende gli URI molto potenti poiché chiunque può<br />
crearne, tuttavia ha una limitazione nel fatto che inevitabilmente ci saranno<br />
URI <strong>di</strong>fferenti che puntano ad una stessa risorsa ed allo stesso tempo non<br />
c’è nemmeno modo per capire se effettivamente due URI puntano alla stessa<br />
risorsa.<br />
57
In conclusione un URI non fa niente <strong>di</strong> più che fornire un identificatore per<br />
una certa risorsa, e quin<strong>di</strong> usando gli URI si possono:<br />
• creare dati e meta-dati su una risorsa;<br />
• annotare una stessa risorsa con altri termini in altre <strong>di</strong>fferenti risorse;<br />
• aggiungere semantica alle risorse;<br />
• collegare dati ad altri dati.<br />
2.8.2 – XML : Extensible Markup Language<br />
XML ( Extensible Markup Language ) è un meta-linguaggio, cioè un<br />
linguaggio per la definizione <strong>di</strong> altri linguaggi <strong>di</strong> markup. L’obiettivo <strong>di</strong><br />
XML è quello <strong>di</strong> determinare specifiche per consentire la creazione <strong>di</strong><br />
documenti la cui struttura possa essere interpretata e gestita da un<br />
calcolatore via Web. Un documento XML è un insieme correttamente<br />
annidato <strong>di</strong> tag aperti e chiusi, che costituiscono un elemento, il quale può<br />
contenere un numero arbitrario <strong>di</strong> coppie attributo-valore che lo<br />
caratterizzano. La sua struttura logica può essere rappresentata attraverso un<br />
albero la cui ra<strong>di</strong>ce, cioè il documento stesso, punta ad un elemento<br />
principale; i no<strong>di</strong> dell’albero sono a loro volta elementi che possono avere,<br />
tra <strong>di</strong> loro, riferimenti incrociati, mentre le foglie sono coppie attributo-<br />
valore o valori semplici, come per esempio stringhe, date e numeri.<br />
Ad esempio se voglio creare un mio linguaggio <strong>di</strong> markup per definire, ad<br />
esempio, “ricette da cucina”, non ho da fare altro che definire la struttura<br />
che voglio dare alle ricette ed i tag da utilizzare. Supponiamo <strong>di</strong> aver deciso<br />
<strong>di</strong> definire una ricetta nel nostro linguaggio, chiamiamolo XMLRicette, e che<br />
il seguente sia un esempio <strong>di</strong> ricetta:<br />
58
Pasta, aglio olio e peperoncino<br />
Anonimo<br />
<br />
200 gr. <strong>di</strong> spaghetti<br />
uno spicchio <strong>di</strong> aglio<br />
olio<br />
un pizzico <strong>di</strong> peperoncino<br />
sale<br />
<br />
<br />
Far bollire dell'acqua in una pentola...<br />
<br />
<br />
Figura 2.4 - Esempio <strong>di</strong> costruzione <strong>di</strong> una Ricetta in XML<br />
La struttura sembra ragionevole, la scelta dei tag pure. Siamo sod<strong>di</strong>sfatti del<br />
nostro nuovo linguaggio.<br />
Gli schemi XML sono documenti utilizzati per definire e convalidare il<br />
contenuto e la struttura dei dati XML, nello stesso modo in cui uno schema<br />
<strong>di</strong> database definisce e convalida le tabelle, le colonne e i tipi <strong>di</strong> dati da cui è<br />
costituito un database. Gli elementi <strong>degli</strong> schemi XML, ovvero elementi,<br />
attributi, tipi e gruppi, vengono utilizzati per definire una struttura valida, un<br />
contenuto dei dati valido e le relazioni <strong>di</strong> determinati tipi <strong>di</strong> dati XML. Gli<br />
schemi XML possono inoltre fornire valori predefiniti per attributi ed<br />
elementi.<br />
Riprendendo l’esempio precedente, supponiamo ora <strong>di</strong> voler arricchire il<br />
nostro linguaggio con la possibilità <strong>di</strong> inserire una bibliografia in fondo a<br />
ciascuna ricetta. Abbiamo sentito parlare <strong>di</strong> un linguaggio basato su XML<br />
che consente <strong>di</strong> definire bibliografie: XMLBiblio.<br />
Non sarebbe male utilizzarlo per integrare il nostro XMLRicette. Avremmo<br />
il vantaggio <strong>di</strong> utilizzare un linguaggio noto e ci eviteremmo <strong>di</strong> doverci<br />
59
e-inventare quello che altri hanno già definito. Diamo allora un'occhiata ad<br />
un esempio <strong>di</strong> bibliografia descritta con XMLBiblio:<br />
<br />
<br />
Hermann Hesse<br />
Narciso e Boccadoro<br />
Mondadori E<strong>di</strong>tore<br />
1933<br />
<br />
Figura 2.5 - Esempio <strong>di</strong> Bibliografia<br />
Niente <strong>di</strong> complicato. Potremmo utilizzare questo linguaggio per inserire<br />
note bibliografiche in fondo ad una ricetta descritta con XMLRicette, come<br />
nel seguente esempio:<br />
<br />
<br />
Pasta, aglio olio e peperoncino<br />
Anonimo<br />
<br />
200 gr. <strong>di</strong> spaghetti<br />
uno spicchio <strong>di</strong> aglio<br />
olio<br />
un pizzico <strong>di</strong> peperoncino<br />
sale<br />
<br />
<br />
Far bollire dell'acqua in una pentola...<br />
<br />
<br />
Mario Rossi<br />
Della pasta e <strong>di</strong> altre delizie<br />
Chef E<strong>di</strong>tore<br />
2002<br />
<br />
<br />
Figura 2.6 - Esempio <strong>di</strong> Ricetta con Bibliografia<br />
60
Osservando per bene l'esempio, salta all'occhio un piccolo problema: come<br />
il linguaggio XMLRicette, anche XMLBiblio utilizza i tag “” e<br />
“”, naturalmente per un contesto <strong>di</strong>verso. Ma come farà il parser a<br />
<strong>di</strong>stinguere il tag “” <strong>di</strong> XMLBiblio dal tag “” <strong>di</strong><br />
XMLRicette? Come possiamo risolvere il problema dei tag omonimi?<br />
Il problema delle ambiguità che possono creare oggetti omonimi non è<br />
nuovo nell'informatica. Per fare qualche esempio, è lo stesso problema che<br />
si pone nell'estrazione <strong>di</strong> dati da due tabelle <strong>di</strong> un database che hanno campi<br />
con lo stesso nome. Se ci pensiamo bene, in fondo, non è soltanto un<br />
problema dell'informatica. I nomi propri <strong>di</strong> persona hanno lo stesso<br />
potenziale problema. Se in un gruppo <strong>di</strong> persone ci sono due Andrea, come<br />
faccio ad in<strong>di</strong>viduarne uno per parlare <strong>di</strong> lui con un mio amico? Semplice,<br />
basta citare anche il cognome! In termini tecnico-informatici il cognome è<br />
rappresentato dal namespace. Possiamo definire un namespace come un<br />
raggruppamento <strong>di</strong> nomi sotto un unico identificatore.<br />
In un documento XML si fa riferimento ad un namespace utilizzando<br />
l’attributo speciale “xmlns”, associato al root element, come nel seguente<br />
esempio:<br />
<br />
Figura 2.7 - Esempio <strong>di</strong> definizione <strong>di</strong> un Namespace<br />
Questo in<strong>di</strong>ca che l’elemento ricetta ed i suoi sottoelementi utilizzano i<br />
nomi definiti nel namespace identificato dall’identificatore<br />
“namespaceRicetta”. È possibile inoltre combinare più namespace facendo<br />
61
in modo che ciascun elemento utilizzato faccia riferimento al proprio<br />
namespace. Occorre tener presente che quando si fa riferimento ad un<br />
namespace, questo riferimento vale per l’elemento corrente e per tutti gli<br />
elementi contenuti, a meno che non venga specificato un <strong>di</strong>verso<br />
namespace. Il nostro problema <strong>di</strong> ambiguità può essere risolto, pertanto nel<br />
seguente modo:<br />
<br />
<br />
Pasta, aglio olio e peperoncino<br />
Anonimo<br />
<br />
...<br />
<br />
Mario Rossi<br />
Della pasta e <strong>di</strong> altre delizie<br />
Chef E<strong>di</strong>tore<br />
2002<br />
<br />
<br />
Figura 2.8 - Soluzione dell’ambiguità con i namespace<br />
Anche se in teoria sarebbe possibile utilizzare qualsiasi identificatore per un<br />
namespace, è opportuno utilizzare nomi univoci che evitino a loro volta<br />
omonimie tra namespace. Per questo motivo i namespace vengono<br />
identificati anch’essi tramite URI; in particolare, è prassi comune utilizzare<br />
un URL come identificatore <strong>di</strong> un namespace, in modo che ci sia una<br />
corrispondenza biunivoca tra chi definisce un namespace ed il rispettivo<br />
nome a dominio. Ad esempio, un possibile identificatore per il nostro<br />
linguaggio potrebbe essere:<br />
62
Figura 2.9 - Identificatore (URI) per Namespace<br />
È inoltre opportuno utilizzare dei prefissi come abbreviazione <strong>degli</strong><br />
identificatori <strong>di</strong> namespace. Ad esempio, potremmo utilizzare la seguente<br />
abbreviazione nel nostro esempio:<br />
<br />
<br />
Pasta, aglio olio e peperoncino<br />
Anonimo<br />
...<br />
<br />
Mario Rossi<br />
Della pasta e <strong>di</strong> altre delizie<br />
Chef E<strong>di</strong>tore<br />
2002<br />
<br />
<br />
Figura 2.10 - Prefissi e Namespace<br />
Con questo meccanismo ciascun elemento del documento è associato senza<br />
ambiguità al rispettivo namespace.<br />
Per concludere, data la struttura ad albero, il linguaggio si rivela<br />
insufficiente per i nostri scopi, poiché siamo interessati ad avere come<br />
Information-model un grafo, in quanto ci offre un potere <strong>di</strong> rappresentazione<br />
più elevato. Inoltre, XML consente <strong>di</strong> esprimersi secondo una sintassi<br />
63
personalizzata, definendo a piacere i propri tag, ma non viene fornita una<br />
semantica per essi.<br />
Figura 2.11 - XML struttura ad albero<br />
Infatti, dalla figura… si nota come, nel classificare le informazioni secondo<br />
una struttura ad albero, siano state implicitamente inserite relazioni del tipo<br />
is-a oppure is-part-of , semanticamente dedotte secondo la logica umana, in<br />
funzione dei nomi dei tag e del livello <strong>di</strong> annodamento <strong>degli</strong> elementi.<br />
Ed ancora i tag <strong>di</strong> un utente non sono compatibili con quelli definiti da un<br />
altro, nel senso che l’interpretazione <strong>degli</strong> stessi deve essere nota a priori ad<br />
entrambe. XML permette, quin<strong>di</strong>, <strong>di</strong> rendere interoperabili i documenti, ma<br />
non interpretabili dalle macchine.<br />
2.8.3 – RDF : Resource Description Framework<br />
RDF è uno standard [15] proposto da W3C ( World Wide Web Consortium )<br />
[14] che è un consorzio <strong>di</strong> aziende del settore informatico che si occupa <strong>di</strong><br />
64
stabilire standard <strong>di</strong> riferimento per il Web. Questo consorzio, in altri<br />
termini, stu<strong>di</strong>a i sistemi ed i linguaggi per la trasmissione <strong>di</strong> dati attraverso il<br />
Web e ne ufficializza l'utilizzo attraverso raccomandazioni definitive. Al<br />
W3C si devono gli standard <strong>di</strong> HTML, XML, SMIL, CSS e altri ancora.<br />
In particolare RDF, è lo strumento base per descrizione delle risorse in<br />
termini <strong>di</strong> proprietà, attributi e relazioni con altre risorse del dominio<br />
considerato. In altri termini permette la co<strong>di</strong>fica, lo scambio ed il riutilizzo<br />
<strong>di</strong> meta-dati strutturati e consente l’interoperabilità tra applicazioni che si<br />
scambiano informazioni machine-understandable. La sintassi è basata su<br />
XML mentre si usano URI per specificare entità, concetti, proprietà e<br />
relazioni. RDF, quin<strong>di</strong>, non descrive la semantica, ma fornisce una base<br />
comune per poterla esprimere, permettendo <strong>di</strong> definire la semantica dei tag<br />
XML.<br />
RDF è costituito da:<br />
• RDF Model and Syntax: definisce il data model RDF e la sua<br />
co<strong>di</strong>fica XML;<br />
• RDF Schema: consente la definizione <strong>di</strong> vocabolari per i meta-dati.<br />
Cioè da una parte avremo i dati, dall’altra uno schema che definisce come i<br />
dati si strutturano e come sono in relazione tra loro.<br />
2.8.3.1 – RDF Data Model<br />
RDF data model è basato su tre tipi <strong>di</strong> oggetti:<br />
• Risorse: Una risorsa è un oggetto, una cosa <strong>di</strong> cui vogliamo parlare,<br />
un qualsiasi elemento che possa essere identificato me<strong>di</strong>ante un URI.<br />
• Proprietà: Una proprietà è una specifica caratteristica o un attributo<br />
<strong>di</strong> una risorsa. Può descrivere relazioni tra risorse come ad esempio<br />
65
"scritto da" oppure "età". Anche le proprietà sono identificate da un<br />
URI e quin<strong>di</strong> rappresentano un tipo speciale <strong>di</strong> risorse. Si noti allora<br />
che usiamo URI sia per in<strong>di</strong>care risorse che associazioni tra risorse.<br />
• Statement ( tripla o asserzione ): permette <strong>di</strong> asserire proprietà tra<br />
risorse. È costituito da una tripla avente la forma<br />
. La Risorsa o soggetto, è l’oggetto<br />
che vogliamo descrivere. La proprietà o pre<strong>di</strong>cato è la specifica<br />
proprietà della risorsa, o la relazione tra risorse su cui vogliamo<br />
pre<strong>di</strong>care. Con Valore s’intende appunto il valore assunto dalla<br />
particolare proprietà o l’oggetto con cui viene messa in relazione la<br />
risorsa su cui stiamo pre<strong>di</strong>cando. Un valore può quin<strong>di</strong> essere un<br />
oggetto od un “literals”.<br />
Figura 2.12 - Data Model RDF, Soggetto, Pre<strong>di</strong>cato e Oggetto<br />
66
Graficamente, un documento RDF è un grafo etichettato ed orientato. I no<strong>di</strong><br />
sono i soggetti e gli oggetti <strong>di</strong> ciascuno statement, mentre gli archi<br />
rappresentano i pre<strong>di</strong>cati e assumono il verso dal soggetto all’oggetto e<br />
l’etichetta uguale al nome della proprietà del soggetto.<br />
Figura 2.13 – RDF - Struttura a grafo<br />
Dunque la descrizione <strong>di</strong> una risorsa consiste nell’esprimere l’insieme delle<br />
proprietà che la caratterizzano. Talvolta, è necessario far riferimento a più <strong>di</strong><br />
una risorsa, per esempio per esprimere il fatto che un libro è stato scritto da<br />
più autori. RDF definisce la primitiva Container, che serve proprio a questo<br />
scopo. I Container sono <strong>di</strong> tre tipi:<br />
• Bag: lista non or<strong>di</strong>nata <strong>di</strong> risorse o costanti, ammette duplicati;<br />
• Sequence: lista or<strong>di</strong>nata <strong>di</strong> risorse o costanti, ammette duplicati;<br />
• Alternative: lista <strong>di</strong> risorse o costanti che rappresentano<br />
un’alternativa per il valore (singolo) <strong>di</strong> una proprietà.<br />
67
In RDF è ancora possibile effettuare la reificazione <strong>di</strong> statements, ovvero<br />
costruire Statements about statements.<br />
Per concludere presentiamo un breve esempio <strong>di</strong> documento RDF che<br />
specifica alcune informazioni personali<br />
<br />
<br />
<br />
Adalberto Scognamiglio<br />
<br />
Sig.<br />
<br />
<br />
Figura 2.14 - Serializzazione RDF Document<br />
Il tag è l'elemento root del documento RDF, <br />
indentifica una risorsa con l'attributo about che definisce la risorsa descritta.<br />
Altri attributi importanti RDF sono , e<br />
.<br />
Volendo fare un’analogia <strong>di</strong>dattica tra la rappresentazione dei dati in RDF e<br />
l’Entity-Relationship dei database relazionali, si può <strong>di</strong>re che : una riga <strong>di</strong><br />
una tabella corrisponde ad un insieme <strong>di</strong> statement (asserzioni) RDF relative<br />
alla stessa Risorsa, il nome <strong>di</strong> ciascun campo ( cioè <strong>di</strong> ciascuna colonna<br />
della tabella ) è il nome <strong>di</strong> una proprietà RDF ed il valore del campo è il<br />
valore della proprietà RDF ( cioè l’oggetto della proprietà ).<br />
68
2.8.3.2 – RDF Schema<br />
L’ RDF data-model visto sinora serve unicamente per descrivere modelli<br />
dei dati e può esprimere semplici affermazioni come “il nome del mio<br />
correlatore è Giancarlo”, “il mio professore preferito è Cotroneo”, “un<br />
cane è un animale”, “il cane bobby è un Pastore Tedesco”. RDF pur<br />
definendo proprietà e relazioni tra risorse non ha nessun tipo <strong>di</strong><br />
concettualizzazione e quin<strong>di</strong> in nessun modo si riesce a definire concetti in<br />
maniera univoca. Tuttavia, quando si usa RDF per descrivere gli oggetti <strong>di</strong><br />
un qualsiasi dominio ( il mondo birrario ad esempio ) è in<strong>di</strong>spensabile<br />
tener conto della natura stessa del dominio. In pratica l’ambito interessato<br />
va considerato in termini <strong>di</strong> categorie ( classi <strong>di</strong> oggetti appartenenti al<br />
dominio), relazioni possibili tra gli oggetti e regole che governano tali<br />
relazioni al fine <strong>di</strong> renderle “valide”.<br />
RDF Schema affianca RDF fornendo informazioni utili alla interpretazione<br />
ed alla validazione del documento RDF. RDFS è quin<strong>di</strong> una estensione <strong>di</strong><br />
RDF; ed in particolare è ancora scritto in RDF.<br />
I concetti messi a <strong>di</strong>sposizione da RDF Schema sono quelli <strong>di</strong>:<br />
• Classe e Sottoclasse;<br />
• Proprietà e Sottoproprietà;<br />
• Dominio e Condominio <strong>di</strong> un proprietà;<br />
• Commenti, etichette ed informazioni ad<strong>di</strong>zionali.<br />
Le risorse vengono sud<strong>di</strong>vise in gruppi chiamati classi. Gli in<strong>di</strong>vidui<br />
appartenenti a ciascuna classe sono conosciuti come istanze della classe.<br />
Le classi, che sono a loro volta delle risorse, sono identificate ancora da<br />
URI e possono essere descritte tramite proprietà RDF. La proprietà rdf:type<br />
69
( che abbiamo introdotto nel paragrafo precedente ) può essere utilizzata per<br />
affermare che una risorsa è una istanza <strong>di</strong> una classe ( “istanzaA rdf:type<br />
classeA” ). RDF <strong>di</strong>stingue tra una classe ed un insieme <strong>di</strong> istanze. Associata<br />
ad ogni classe c’è un insieme, chiamato il class extension <strong>di</strong> una classe, che<br />
è l’insieme delle istanze della classe. Due classi possono avere lo stesso<br />
insieme <strong>di</strong> istanze ma essere classi <strong>di</strong>verse. Una classe può essere un<br />
membro della sua class extension e quin<strong>di</strong> essere un’istanza <strong>di</strong> se stessa. Un<br />
gruppo <strong>di</strong> risorse che rappresentano classi RDFS è esso stesso una classe<br />
chiamata rdfs:Class.<br />
Ve<strong>di</strong>amo i principali tipi <strong>di</strong> classi RDFS:<br />
• rdfs:Resource: tutte le classi sono sottoclassi <strong>di</strong> rdfs:Resource. E’<br />
un’istanza <strong>di</strong> rdfs:Class;<br />
• rdfs:Class: la classe <strong>di</strong> risorse che sono classi RDF. Istanza <strong>di</strong><br />
rdfs:Class cioè <strong>di</strong> de stessa;<br />
• rdf:Property: la classe delle proprietà RDF. Istanza <strong>di</strong> rdfs:Class.<br />
• rdfs:Literal: la classe dei valori letterali come stringhe e interi.<br />
Possono essere semplici o tipate, in questo caso hanno un<br />
riferimento all’URI che definisce il tipo <strong>di</strong> dato;<br />
• rdfs:Datatype: la classe dei tipi <strong>di</strong> dato. Ogni istanza <strong>di</strong> questa classe<br />
è una sottoclasse <strong>di</strong> rdfs:Literal;<br />
• rdf:XMLLiteral: la classe dei valori letterali XML. Istanza <strong>di</strong><br />
rdfs:Datatype e sottoclasse <strong>di</strong> rdfs:Literal;<br />
RDF Schema permette poi <strong>di</strong> organizzare sia le classi che le proprietà<br />
secondo schemi gerarchici attraverso il meccanismo dell’ere<strong>di</strong>tarietà.<br />
Tali relazioni <strong>di</strong> tipo I-SA possono essere definite per classi e proprietà<br />
70
ispettivamente attraverso i costrutti rdfs:subClassOf e rdfs:subPropertyOf.<br />
Il primo dei due afferma che se “Class1 rdfs:subClassOf Class2”, allora<br />
Class1 è una sotto-classe <strong>di</strong> Class2, e quin<strong>di</strong> tutte le istanze <strong>di</strong> Class1<br />
saranno anche istanze <strong>di</strong> Class2. Analogo <strong>di</strong>scorso vale anche per le<br />
proprietà. Questi due costrutti godono, come è logico che sia, della proprietà<br />
transitiva.<br />
In RDFS è, inoltre, possibile esprimere vincoli attraverso le proprietà<br />
rdfs:range e rdfs:domain. Queste si applicano ad altre proprietà e devono<br />
avere come valori delle classi. Sono utilizzate per restringere l’insieme <strong>di</strong><br />
applicabilità delle proprietà in<strong>di</strong>cando a quali risorse può essere applicata<br />
quella data proprietà ( il domain della proprietà ) e l’insieme dei valori<br />
vali<strong>di</strong> per quella proprietà ( il suo range ). La tripla “P rdfs:range C“<br />
afferma che P è una istanza della classe rdf:Property, C è una istanza della<br />
classe rdfs:Class e le risorse che appaiono come oggetti delle triple i cui<br />
pre<strong>di</strong>cati sono P, sono istanze della classe C. Quando P ha più <strong>di</strong> una<br />
proprietà rdfs:range, allora le risorse che rappresentano gli oggetti delle<br />
triple con pre<strong>di</strong>cato P sono istanze <strong>di</strong> tutte le classi in<strong>di</strong>cate dalla proprietà<br />
rdfs:range. Una tripla della forma “P rdfs:domain C” afferma che P è<br />
un’istanza della classe rdf:Property, C è un’istanza della classe rdfs:Class e<br />
le risorse che rappresentano i soggetti delle triple i cui pre<strong>di</strong>cati sono P sono<br />
istanze della classe C. Quando P ha più <strong>di</strong> una proprietà rdfs:domain, allora<br />
le risorse che rappresentano i soggetti delle triple con pre<strong>di</strong>cato P sono<br />
istanze <strong>di</strong> tutte le classi in<strong>di</strong>cate dalla proprietà rdfs: domain.<br />
RDFS definisce, inoltre, altre proprietà come rdfs:comment e rdfs:label che<br />
servono per introdurre rispettivamente una descrizione o una classificazione<br />
comprensibile agli esseri umani.<br />
71
Dunque le classi RDFS più che contenitori sono dei descrittori ( <strong>di</strong> concetti<br />
e proprietà ) in relazione semantica tra loro. La definizione <strong>di</strong> vocabolari<br />
semantici, l’ere<strong>di</strong>tarietà, le proprietà e tutti gli altri aspetti descritti<br />
permettono agli agenti software intelligenti <strong>di</strong> realizzare un servizio<br />
minimale <strong>di</strong> reasoning basato su regole <strong>di</strong> inferenza[16].<br />
Figura 2.15 - Gli Strati RDF e RDFS<br />
Volendo fare un’analogia <strong>di</strong>dattica tra la rappresentazione RDFS e la<br />
programmazione OOP si può <strong>di</strong>re che: nell’OO le classi rappresentano la<br />
descrizione <strong>di</strong> una categoria <strong>di</strong> oggetti in<strong>di</strong>viduati me<strong>di</strong>ante comportamenti<br />
e caratteristiche simili; i relativi comportamenti vengono definiti “meto<strong>di</strong>”<br />
mentre le caratteristiche sono dette “proprietà”. Le classi possono poi essere<br />
72
estese per ere<strong>di</strong>tarietà <strong>di</strong> dati e comportamenti e gli oggetti sono istanze<br />
delle classi. RDFS prevede anch’esso la creazione <strong>di</strong> classi ed il<br />
meccanismo dell’ere<strong>di</strong>tarietà ma non prevede la definizione <strong>di</strong> meto<strong>di</strong> visto<br />
che è orientato alla modellazione dei dati e non dei comportamenti <strong>di</strong><br />
quest’ultimi. È inoltre importante evidenziare che in RDF le descrizioni<br />
delle proprietà sono in<strong>di</strong>pendenti dalla definizione delle classi (al contrario<br />
del OOP in cui una proprietà è legata alla classe) ed in tal senso si può<br />
definire il sistema <strong>di</strong> tipizzazione RDFS come modello “Property-<br />
Oriented”.<br />
Per concludere RDFS è un primitivo linguaggio per la definizione <strong>di</strong><br />
Ontologie.<br />
2.8.4 – OWL : Ontology Web Language<br />
Il Web Ontology Language ( OWL ) è un linguaggio <strong>di</strong> markup per<br />
rappresentare esplicitamente significato e semantica <strong>di</strong> termini con<br />
vocabolari e relazioni tra i termini. Definisce quin<strong>di</strong> ontologie strutturate<br />
basate sul Web che permettono una integrazione ed una interoperabilità<br />
maggiore <strong>di</strong> dati tra comunità che descrivono il loro dominio <strong>di</strong> conoscenza.<br />
Nonostante RDF(S) sia un linguaggio molto <strong>di</strong>ffuso per la rappresentazione<br />
della conoscenza, ha un potere espressivo limitato. In tale linguaggio,<br />
infatti, non è possibile esprimere:<br />
• la <strong>di</strong>sgiunzione tra classi: in RDF(S) non si può <strong>di</strong>re che due classi<br />
sono <strong>di</strong>sgiunte;<br />
• la combinazione <strong>di</strong> classi tramite gli operatori booleani <strong>di</strong> unione,<br />
intersezione e complemento;<br />
• i vincoli <strong>di</strong> car<strong>di</strong>nalità sulle proprietà;<br />
73
• le caratteristiche speciali delle proprietà, come la transitività o<br />
l’inversa <strong>di</strong> una proprietà;<br />
• etc…<br />
L’esigenza <strong>di</strong> avere un linguaggio più ricco in grado <strong>di</strong> esprimere tutti gli<br />
aspetti appena esaminati, ha portato allo sviluppo <strong>di</strong> DAML+OIL, e OWL,<br />
due linguaggi per ontologie.<br />
• DAML+OIL è il risultato dell’unione <strong>di</strong> due linguaggi, DAML-ONT<br />
( sviluppato dal DARPA ) e OIL ( sviluppato da ricercatori Europei )<br />
• OWL è il linguaggio per ontologie proposto dal W3C e deriva<br />
<strong>di</strong>rettamente dalla struttura <strong>di</strong> DAML+OIL<br />
Figura 2.16 - Genesi <strong>di</strong> OWL<br />
Dunque OWL si basa sul modello “RDF e RDF Schema” ma va ad<br />
estenderlo aggiungendo un vocabolario più ampio per descrivere proprietà<br />
e classi; questo comprende:<br />
74
• relazioni tra classi (ad esempio <strong>di</strong>sgiunzione);<br />
• car<strong>di</strong>nalità (ad esempio "esattamente uno");<br />
• uguaglianza;<br />
• tipizzazione più ricca delle proprietà;<br />
• caratteristiche <strong>di</strong> proprietà (ad esempio simmetria);<br />
• classi enumerate.<br />
RDFS è un linguaggio per ontologie<br />
“debole”.<br />
• Permette <strong>di</strong> costruire una<br />
semplice gerarchia <strong>di</strong><br />
concetti e una gerarchia <strong>di</strong><br />
proprietà<br />
• Con RDFS possiamo <strong>di</strong>re<br />
che la nostra ontologia ha 5<br />
classi, che Animale è una<br />
sottoclasse <strong>di</strong> Essere<br />
Vivente<br />
• Possiamo attribuire proprietà<br />
( zampe, numero <strong>di</strong> organi<br />
sensitivi, colore ecc...)<br />
• Non possiamo <strong>di</strong>re che un<br />
animale non può essere una<br />
pianta<br />
• Non possiamo definire<br />
relazioni tra classi <strong>di</strong> livello<br />
<strong>di</strong>verso dalla gerarchia<br />
OWL ci permette <strong>di</strong> <strong>di</strong>re tutto quello<br />
che si può affermare in RDFS con in<br />
più<br />
• Possiamo affermare che<br />
Animali e Vegetali sono classi<br />
<strong>di</strong>sgiunte (un in<strong>di</strong>viduo non<br />
può essere<br />
contemporaneamente vegetale<br />
e animale…)<br />
• La<br />
classe pesci d’acqua salata<br />
può essere definita come<br />
intersezione della classe<br />
ovipari e della classe<br />
organismi marini<br />
OWL vs RDF/RDFS<br />
Figura 2.17 - OWL vs RDF/RDFS<br />
75
Figura 2.18 - Stack OWL Ontology<br />
Dunque con OWL le proprietà <strong>di</strong>ventano più raffinate. Ci possono essere<br />
proprietà <strong>di</strong> tipo: Transitivo, Simmetrico, Funzionale.<br />
Tutto questo ha un prezzo : Complessità e Pesantezza sintattica[17].<br />
2.8.4.1 – I tre linguaggi <strong>di</strong> OWL<br />
Come abbiamo anticipato nel descrivere l’architettura del Web Semantico,<br />
all’aumentare della ricchezza ( e quin<strong>di</strong> della complessità ) del linguaggio <strong>di</strong><br />
rappresentazione della conoscenza, aumentano le potenzialità ma anche la<br />
complessità computazionale del reasoning. Nell’adottare un linguaggio <strong>di</strong><br />
definizione <strong>di</strong> ontologie bisogna dunque trovare un compromesso tra<br />
l’espressività del linguaggio e la capacità <strong>di</strong> reasoning che si desidera<br />
ottenere. Per questo il W3C ha definito OWL attraverso tre <strong>di</strong>versi sotto-<br />
linguaggi: OWL Lite, OWL DL e OWL Full, <strong>di</strong> cui i primi due garantiscono<br />
la deci<strong>di</strong>bilità del reasoning, ovvero la piena applicabilità delle regole<br />
d’inferenza.<br />
76
Figura 2.19 - Livelli linguaggi OWL<br />
OWL Full utilizza tutte le primitive del linguaggio OWL e permette <strong>di</strong><br />
combinarle in modo arbitrario con RDF(S). Consente <strong>di</strong> cambiare il<br />
significato delle primitive RDF predefinite applicando tra loro le primitive<br />
del linguaggio. Per esempio in OWL Full si possono imporre vincoli <strong>di</strong><br />
car<strong>di</strong>nalità al costrutto rdfs:Class, limitando così il numero delle classi in un<br />
ontologia. Il vantaggio <strong>di</strong> OWL Full è quello <strong>di</strong> avere piena compatibilità<br />
con RDF, sia sintatticamente che semanticamente: ogni documento legale in<br />
RDF è un documento legale anche in OWL Full ed ogni deduzione ottenuta<br />
con RDF(S) è anche una valida deduzione in OWL Full. Lo svantaggio <strong>di</strong><br />
OWL Full è che il linguaggio è talmente potente da essere indeci<strong>di</strong>bile,<br />
eliminando ogni speranza <strong>di</strong> un completo supporto <strong>di</strong> reasoning.<br />
OWL DL si pone come obiettivo quello <strong>di</strong> guadagnare in efficienza<br />
computazionale, limitando il modo in cui i costruttori <strong>di</strong> OWL e RDF<br />
possono essere usati: ciò garantisce al linguaggio <strong>di</strong> poter essere mappato su<br />
77
una logica descrittiva. Da qui deriva il termine DL, che sta per Description<br />
Logics. Il vantaggio <strong>di</strong> questo sottolinguaggio è che permette un supporto<br />
completo <strong>di</strong> reasoning; lo svantaggio è la per<strong>di</strong>ta <strong>di</strong> compatibilità con RDF:<br />
un documento RDF deve essere esteso sotto certi aspetti e ristretto sotto altri<br />
per essere un documento valido in OWL DL. Viceversa ogni documento<br />
legale in OWL DL è ancora un documento legale in RDF.<br />
OWL Lite limita il proprio insieme <strong>di</strong> costrutti ad un sottoinsieme <strong>di</strong> quelli<br />
<strong>di</strong> OWL DL. Il vantaggio è quello <strong>di</strong> avere un linguaggio più semplice (per<br />
gli utenti) e più facile da utilizzare (per i costruttori <strong>di</strong> ontologie). Lo<br />
svantaggio è un’espressività molto ristretta. Un’ontologia è valida in OWL<br />
Lite se lo è anche in OWL DL.<br />
2.8.4.2 – I costrutti principali <strong>di</strong> OWL<br />
Innanzitutto OWL essendo costruito su RDF e su RDFS usa una sintassi<br />
XML-based. Un documento OWL è chiamato anche Ontologia OWL ed un<br />
esempio <strong>di</strong> header <strong>di</strong> un Ontologia OWL è il seguente:<br />
<br />
Figura 2.20 - Esempio OWL Header<br />
Come si vede l’elemento root è sempre , dopo il quale vengono<br />
specificati i vari namespaces. Successivamente, possono poi esserci una<br />
serie <strong>di</strong> asserzioni, come ad esempio dei commenti, la versione e l’eventuale<br />
inclusione <strong>di</strong> altre ontologie. Per definire una classe si usa il costrutto<br />
owl:Class. Il costrutto rdfs:subClassOf permette <strong>di</strong> <strong>di</strong>segnare la gerarchia <strong>di</strong><br />
78
classi. Si può affermare, prendendo spunto da un esempio fatto in<br />
precedenza, che la classe Animale sia sottoclasse della classe EssereVivente.<br />
Ancora è possibile affermare che la classe Animale sia <strong>di</strong>sgiunta dalla classe<br />
Vegetale usando il costrutto owl:<strong>di</strong>sjointWith[18].<br />
Di seguito si elencano brevemente gli altri costruttori importanti <strong>di</strong> OWL:<br />
owl:intersectionOf Intersezioni tra Classi<br />
Owl:unionOf Unione tra Classi<br />
Owl:complementOf Complementazioni tra Classi<br />
Owl:oneOf Classe Enumerata<br />
Owl:equivalentClass Classe Equivalente<br />
Owl:car<strong>di</strong>nality Car<strong>di</strong>nalità Esatta<br />
Owl:minCar<strong>di</strong>nality Car<strong>di</strong>nalità Minima<br />
Owl:maxCar<strong>di</strong>nality Car<strong>di</strong>nalità Massima<br />
Owl:someValueFrom Quantificatore Esistenziale<br />
Owl:allValueFrom Quantificatore Universale<br />
…..<br />
Figura 2.21 - Costrutti OWL per la definizione <strong>di</strong> classi<br />
Owl:equivalentProperty Proprietà Equivalente<br />
Owl:inverseOf Proprietà Inversa<br />
Owl:ObjectProperty Proprietà verso Oggetti<br />
Owl:DatatypeProperty Proprietà verso Letterali<br />
Owl:FunctionalProperty Proprietà Funzionali<br />
Owl:SymmetricProperty Proprietà Simmetrica<br />
Owl:TransitiveProperty Proprietà Transitiva<br />
…..<br />
Figura 2.22 - Costrutti OWL per la definizione <strong>di</strong> proprietà<br />
79
2.9 – Reasoning<br />
Finora abbiamo più volte parlato <strong>di</strong> Reasoning cioè <strong>di</strong> quella tecnica<br />
me<strong>di</strong>ante la quale ottenere nuova conoscenza ( conoscenza inferita ) a<br />
partire da un certo numero <strong>di</strong> informazioni che si hanno a <strong>di</strong>sposizione<br />
(conoscenza asserita ), applicando opportune regole <strong>di</strong> inferenza.<br />
I reasoner ( che possono essere definiti anche ragionatori, motori<br />
inferenziali o classificatori ) sono programmi che offrono i servizi per<br />
ragionare ( fare inferenza come in intelligenza artificiale ) sulle basi <strong>di</strong><br />
conoscenza ( KB ). Esistono <strong>di</strong>verse tipologie <strong>di</strong> reasoner. Ogni tipologia è<br />
compatibile con un determinato formalismo <strong>di</strong> rappresentazione della<br />
conoscenza, e ciò è dovuto al fatto che ogni particolare linguaggio utilizzato<br />
per rappresentare la base <strong>di</strong> conoscenza prevede un set <strong>di</strong> regole <strong>di</strong> inferenza<br />
che però possono essere integrate da altre.<br />
Una regola è costituita <strong>di</strong> una pre-con<strong>di</strong>zione e <strong>di</strong> conseguenze; quando le<br />
con<strong>di</strong>zioni iniziali sono sod<strong>di</strong>sfatte allora si scatenano le azioni conseguenti<br />
che semplicemente si traducono in nuovi fatti, nuova conoscenza che va ad<br />
aggiungersi alla KB iniziale.<br />
I risultati ottenuti da una query su una KB <strong>di</strong>pendono fortemente dal<br />
reasoning, nel senso che senza un adeguato ragionamento ( processo <strong>di</strong><br />
inferenza ), molte conoscenze o relazioni contenute implicitamente nella KB<br />
iniziale rimarrebbero in essa nascoste, e quin<strong>di</strong> le risposte ottenute da un<br />
query engine ( motore <strong>di</strong> query ) potrebbero essere incomplete. Ad esempio,<br />
se definiamo un concetto con determinate proprietà ed alcune sottoclassi<br />
dello stesso concetto con altre proprietà aggiuntive, senza il reasoning sui<br />
dati, la richiesta delle proprietà <strong>di</strong> una delle sottoclassi non restituisce quelle<br />
80
ere<strong>di</strong>tate dalla classe padre. E’ necessario, pertanto, un processamento dei<br />
dati da parte <strong>di</strong> un reasoner per rendere esplicite tali proprietà.<br />
Ma un reasoner non aiuta semplicemente l’esecuzione <strong>di</strong> query, bensì<br />
prevede anche servizi <strong>di</strong> inferenza <strong>di</strong> base, che vedremo più avanti, che<br />
possono essere <strong>di</strong> aiuto anche nelle altre fasi del ciclo <strong>di</strong> vita <strong>di</strong> una base <strong>di</strong><br />
conoscenza<br />
Il requisito che si richiede ad un reasoner è <strong>di</strong> essere sound and complete,<br />
ovvero corretto e completo. La correttezza deve esserci rispetto alla<br />
semantica definita dai concetti, la completezza deve riguardare la procedura<br />
<strong>di</strong> decisione rispetto a tale semantica. Purtroppo, al momento i reasoner<br />
sviluppati hanno ancora delle lacune e un tempo <strong>di</strong> esecuzione con<br />
complessità esponenziale nel caso peggiore.<br />
Le principali funzionalità <strong>di</strong> un reasoner sono:<br />
• Consistency check: detta anche Sod<strong>di</strong>sfacibilità, è l’abilità <strong>di</strong> trovare<br />
i concetti <strong>di</strong> una KB definiti in modo contrad<strong>di</strong>ttorio; in altri termini<br />
una classe all’interno dell’ontologia è detta “consistente” se possono<br />
esistere in<strong>di</strong>vidui appartenenti ad essa. Se un ontologia ha delle<br />
classi inconsistenti vuol <strong>di</strong>re che è stato fatto qualche errore in fase<br />
<strong>di</strong> modellazione e che è opportuno correggere prima <strong>di</strong> <strong>di</strong>stribuire o<br />
utilizzare l’ontologia in contesti applicativi.<br />
• Classify Tassonomy: consiste nella costruzione della gerarchia<br />
imposta dalle relazioni <strong>di</strong> sottoclasse. In altri termini la<br />
classificazione dell’ontologia permette <strong>di</strong> ottenere la gerarchia<br />
desunta delle classi dell’ontologia che può essere <strong>di</strong>versa da quella<br />
<strong>di</strong>chiarata dal designer dell’ontologia. Questo strumento insieme a<br />
quello precedente sono un vali<strong>di</strong>ssimo strumento d’aiuto nella<br />
81
costruzione <strong>di</strong> un ontologia in quanto permettono una descrizione<br />
dettagliata dei fatti ma non ridondante.<br />
• Datatype Reasoning: consiste nella capacità <strong>di</strong> gestire i semplici<br />
datatype <strong>di</strong> XML Schema. Tali datatype sono tipi numerici, stringhe,<br />
date, ma esistono anche meccanismi, standard o inusuali, per la<br />
definizione <strong>di</strong> nuovi tipi a partire da questi.<br />
• Entailment: detta anche Sussunzione è la capacità <strong>di</strong> determinare<br />
tutte le implicazioni derivanti dalla semantica; in altri termini il<br />
concetto <strong>di</strong> sussunzione è alla base del reasoning in quanto consente<br />
<strong>di</strong> in<strong>di</strong>viduare la gerarchia, indotta dalla relazione <strong>di</strong> sottoclasse, tra i<br />
concetti presenti in una KB.<br />
• Conjunctive queries: è l’abilità <strong>di</strong> effettuare query sulle istanze <strong>di</strong><br />
una KB;<br />
• Instance Checking: detta anche Realizzazione è la capacità <strong>di</strong> un<br />
reasoner <strong>di</strong> trovare le classi specifiche a cui appartiene un certo<br />
in<strong>di</strong>viduo o una certa istanza.<br />
In funzione delle caratteristiche dei linguaggi per la definizione della<br />
conoscenza che abbiamo introdotto precedentemente soprattutto<br />
relativamente a le tre versioni <strong>di</strong> OWL, ed ancora poiché in generale si è<br />
interessati ad avere processi <strong>di</strong> reasoning non lunghi ma soprattutto<br />
terminanti, i reasoner attualmente più <strong>di</strong>ffusi utilizzano principalmente le<br />
Description Logics (DL) e le First Order Logics (FOL). Le prime possono<br />
essere viste, in generale, come il sottoinsieme deci<strong>di</strong>bile delle seconde.<br />
Queste, a loro volta, hanno agenti risolutori che potenzialmente potrebbero<br />
82
essere utilizzati per fornire servizi <strong>di</strong> reasoning più avanzati per i quali però<br />
ancora non sono stati sviluppati algoritmi specifici.<br />
Una caratteristica generale delle DL è che la base <strong>di</strong> conoscenza è costituita<br />
da due componenti: la Tbox e l’Abox.<br />
• Terminological Box o Tbox ( parte intenzionale ), costituita dalla<br />
conoscenza definita ed immutabile sul dominio rappresentato, a<br />
livello concettuale e strutturale;<br />
• Assertional Box o Abox ( parte estensionale ), costituita dalla<br />
conoscenza relativa al problema attuale.<br />
In un’ontologia possiamo affermare che la Tbox è costituita dai concetti che<br />
vi sono definiti, mentre l’Abox dalle istanze <strong>di</strong> tali concetti. Le procedure<br />
d’inferenza che caratterizzano i due <strong>di</strong>versi tipi <strong>di</strong> conoscenza sono<br />
profondamente <strong>di</strong>stinte e con <strong>di</strong>fferente complessità computazionale o<br />
performance. La Tbox è costituita da una serie <strong>di</strong> definizioni <strong>di</strong> concetti,<br />
descritte me<strong>di</strong>ante altri concetti e costruttori. Le definizioni presenti in una<br />
Tbox devono sod<strong>di</strong>sfare alcuni vincoli per poterne garantire univocità ed<br />
aciclicità:<br />
• un concetto è definito in modo univoco;<br />
• nella parte sinistra della <strong>di</strong>chiarazione può essere presente solo un<br />
nome <strong>di</strong> un concetto, inteso come entità atomica;<br />
• nessun concetto può essere definito in funzione <strong>di</strong> se stesso;<br />
• un concetto non può essere definito nei termini <strong>di</strong> un secondo<br />
concetto che sussume, perché questo non può ancora essere stato<br />
definito nella KB.<br />
Si possono riassumere gli ultimi due vincoli affermando che non sono<br />
permesse definizioni cicliche oppure che si riferiscono a sé stesse. In questo<br />
83
modo ciascun concetto non primitivo presente in una descrizione è sostituito<br />
dalla propria descrizione, dando luogo ad una gerarchia che rispetta la<br />
sussunzione tra concetti. Procedendo dai concetti superiori a quelli inferiori,<br />
le definizioni si fanno sempre più complesse.<br />
L’ABox contiene asserzioni che specificano gli in<strong>di</strong>vidui attuali nel dominio<br />
<strong>di</strong> interesse, ovvero le istanze nel caso <strong>di</strong> un’ontologia. Le asserzioni<br />
possono essere <strong>di</strong> due tipi fondamentali: concettuali o <strong>di</strong> ruolo.<br />
Generalmente la specifica delle asserzioni nella KB avviene in due fasi:<br />
prima si <strong>di</strong>chiarano gli in<strong>di</strong>vidui del dominio e poi le rispettive relazioni. I<br />
servizi d’inferenza sull’ABox coinvolgono necessariamente anche la Tbox,<br />
in quanto le istanze presenti nella prima appartengono a concetti definiti<br />
nella seconda.<br />
2.10 – Tools per la definizione e l’utilizzo <strong>di</strong> Ontologie<br />
Negli ultimi anni, con la crescente attenzione verso la rappresentazione della<br />
conoscenza e con lo sviluppo del Web Semantico, sta crescendo anche il<br />
numero <strong>di</strong> tools sviluppati per la creazione, manipolazione ed uso <strong>di</strong><br />
ontologie. Quando si vuole costruire un’ontologia sorgono numerose<br />
domande per scegliere quale tool utilizzare: quale tool darà maggiore<br />
supporto al processo <strong>di</strong> sviluppo <strong>di</strong> un’ontologia? In che modo vengono<br />
memorizzate le ontologie ( database o XML )? Il tool possiede o supporta<br />
un motore <strong>di</strong> inferenza ( inference engine )? Quali linguaggi per la<br />
definizione <strong>di</strong> Ontologie sono supportati? E’ corredato <strong>di</strong> traduttori <strong>di</strong><br />
linguaggi <strong>di</strong> ontologie? Come possono le applicazioni interoperare con i<br />
server <strong>di</strong> ontologie?, etc... In questo paragrafo si vanno ad introdurre i vari<br />
tool utilizzati nelle successive fasi <strong>di</strong> sviluppo.<br />
84
2.10.1 – PROTÉGÉ : E<strong>di</strong>tor per Ontologie<br />
Protégé[19] è uno dei tool sviluppati dall’<strong>Università</strong> <strong>di</strong> Stanford per<br />
l’acquisizione delle informazioni, ha migliaia <strong>di</strong> utilizzatori in tutto il<br />
mondo per la realizzazione <strong>di</strong> progetti che coprono vari domini<br />
Protégé [19] è un e<strong>di</strong>tor <strong>di</strong> ontologie free ed open-source, quin<strong>di</strong> scaricabile<br />
gratuitamente, nonchè un framework per basi <strong>di</strong> conoscenza che supporta<br />
gli utenti nella realizzazione <strong>di</strong> applicazioni che facciano uso <strong>di</strong> ontologie.<br />
Figura 2.23 - Finestra Protègè<br />
Protégé fornisce un ambiente grafico e interattivo per la progettazione delle<br />
ontologie e un ambiente <strong>di</strong> sviluppo concettuale. Tra le principali<br />
funzionalità consente:<br />
• la creazione, la manipolazione e la visualizzazione <strong>di</strong> ontologie;<br />
85
• l’import / export delle ontologie in vari formati (OWL, RDF<br />
Schema, XML Schema, ecc...);<br />
• l’esecuzione <strong>di</strong> ragionatori automatici;.<br />
• la personalizzazione delle varie funzionalità.<br />
I suoi principali vantaggi sono l’architettura basata su Java plug-in che lo<br />
rende facilmente esten<strong>di</strong>bile; si presenta infatti come una collezione <strong>di</strong><br />
plug-ins singolarmente o interamente sostituibili per mo<strong>di</strong>ficarne il<br />
comportamento e l’interfaccia. Altro vantaggio è la vasta community che<br />
contribuisce a renderlo aggiornato.<br />
Le APIs fornite sono essenzialmente <strong>di</strong> due tipi:<br />
• Protégé-Core and Protégé-Frames APIs permettono l’accesso alle<br />
funzionalità base e alle KB basate su frames;<br />
• Protégé-OWL permette <strong>di</strong> estendere le Protégé-Core APIs per<br />
accedere alle Ontologie OWL.<br />
La versione utilizzata è quella stabile cioè la Protègè3.3.1 , ma sono<br />
<strong>di</strong>sponibili anche le versioni Beta Protègè3.4 e Protègè4.0.<br />
2.10.2 – SPARQL : Query Language<br />
Per utilizzare una base <strong>di</strong> conoscenza formalizzata me<strong>di</strong>ante il linguaggio<br />
OWL è necessario un linguaggio <strong>di</strong> interrogazione. Esistono <strong>di</strong>versi<br />
linguaggi <strong>di</strong> interrogazione funzionalmente equivalenti come SPARQL,<br />
RDQL, RQ e per finire OWL-QL.<br />
Prima <strong>di</strong> definire i requisiti <strong>di</strong> un linguaggio <strong>di</strong> query per ontologie è<br />
opportuno capire però quali sono le problematiche derivanti dall’uso <strong>di</strong> basi<br />
86
<strong>di</strong> conoscenza piuttosto che <strong>di</strong> basi <strong>di</strong> dati. Una prima <strong>di</strong>fferenza molto<br />
importante è che le Query sulle basi <strong>di</strong> dati sono eseguite sulle istanze e cioè<br />
sul livello estensionale. Inoltre le proprietà ACID <strong>di</strong> cui godono le istanze <strong>di</strong><br />
una base <strong>di</strong> dati garantiscono che l’esecuzione <strong>di</strong> una query restituisca<br />
sempre un risultato corretto, magari anche l’insieme vuoto, ma soprattutto in<br />
un tempo finito. Nel caso delle basi <strong>di</strong> conoscenza, invece,<br />
un’interrogazione viene eseguita coinvolgendo <strong>di</strong>rettamente il livello<br />
intensionale, oltre che quello estensionale, si tratta cioè <strong>di</strong> un tipo <strong>di</strong> query<br />
strutturale. Nel processo <strong>di</strong> esecuzione della query possono essere impiegate<br />
tecniche <strong>di</strong> reasoning che permettono <strong>di</strong> dedurre fatti non esplicitamente<br />
asseriti nella KB <strong>di</strong> partenza oltre il fatto che lo stesso risultato può <strong>di</strong>fferire<br />
da reasoner a reasoner. Inoltre, nel caso <strong>di</strong> ontologie sufficientemente gran<strong>di</strong><br />
e complesse, il tempo <strong>di</strong> esecuzione può <strong>di</strong>ventare molto elevato ed al limite<br />
infinito.<br />
Come per i linguaggi <strong>di</strong> rappresentazione della conoscenza, per i quali<br />
esistono <strong>di</strong>versi standard quali RDF e OWL, attualmente il W3C propone<br />
come standard per l’interrogazione <strong>di</strong> basi <strong>di</strong> rappresentazione della<br />
conoscenza RDF lo SPARQL[20], che consiste in un linguaggio e in un<br />
protocollo per l’esecuzione <strong>di</strong> query remote.<br />
SPARQL, così come gli altri buoni linguaggi <strong>di</strong> query per ontologie ha le<br />
seguenti proprietà, alcune delle quali sono specificate dal W3C e quin<strong>di</strong><br />
necessarie per l’accesso ai dati presenti nei documenti RDF:<br />
• effettua il “graph pattern triple matching”, ovvero ricerca una o più<br />
triple della forma “soggetto – pre<strong>di</strong>cato – oggetto”, in cui il soggetto<br />
e/o l’oggetto sono espresse come variabili. Tali interrogazioni<br />
possono essere fatte specificando eventualmente l’unione o<br />
87
l’intersezione <strong>di</strong> pattern. Si parla infatti <strong>di</strong> conjunctive e <strong>di</strong>sjunctive<br />
query;<br />
• restituisce i risultati sottoforma <strong>di</strong> triple RDF/OWL o documenti<br />
XML, formattando il risultato esattamente come il sottografo del<br />
documento interrogato che sod<strong>di</strong>sfa la query;<br />
• supporta i namespace:<br />
• permette l’esecuzione <strong>di</strong> query in locale ed in remoto;<br />
• considera il modello astratto in<strong>di</strong>pendentemente dalle sue possibili<br />
serializzazioni;<br />
• supporta i datatype <strong>di</strong> XML;<br />
• supporta un eventuale richiesta <strong>di</strong> un numero massimo <strong>di</strong> risultati;<br />
• possibilità <strong>di</strong> esprimere pattern opzionali;<br />
• etc…<br />
Conclu<strong>di</strong>amo il paragrafo con un esempio <strong>di</strong> query.<br />
PREFIX rdf: <br />
PREFIX owl: <br />
PREFIX rdfs: <br />
SELECT ?subject ?object<br />
WHERE {?subject ?property ?object };<br />
Figura 2.24 - Semplice esempio <strong>di</strong> Query SPARQL<br />
2.10.3 – PELLET : Un Reasoner per OWL<br />
Pellet è un ragionatore ( motore inferenziale ) scritto in Java, free ed<br />
open-source[21]. In particolare si tratta <strong>di</strong> un pratico e popolare tool per<br />
88
lavorare con OWL. È stato il primo reasoner a supportare completamente la<br />
piena espressività <strong>di</strong> OWL-DL (SHOIN(D)), incluso il ragionamento sui<br />
nominali ( classi enumerate ) che è ancora estremamente arduo, ed oltre alle<br />
numerose ottimizzazioni , <strong>di</strong> recente è stato esteso per supportare OWL 1.1.<br />
Quest’ultimo va ad estendere OWL-DL con vincoli sulla car<strong>di</strong>nalità, con un<br />
più complesso meccanismo per la definizione <strong>di</strong> sottoproprietà, ed ancora<br />
con ulteriori caratteristiche per le proprietà come riflessività ed irriflessività,<br />
simmetria e antisimmetria, proprietà <strong>di</strong> <strong>di</strong>sgiunzione, etc…<br />
Il meccanismo decisionale <strong>di</strong> Pellet si basa su un algoritmo <strong>di</strong> tipo tableaux,<br />
inoltre offre un insieme <strong>di</strong> caratteristiche includendo conjunctive query,<br />
supporto per la definizione <strong>di</strong> regole , E-Connection Reasoning ed altre<br />
capacità ancora.<br />
Per facilitare l’accesso alle capacità del reasoner da parte delle applicazioni<br />
e <strong>degli</strong> utenti del ragionatore, Pellet supporta varie interfacce tra cui una<br />
command-line interface, un’implementazione come DIG server ed ancora<br />
l’accesso programmatico me<strong>di</strong>ante delle APIs richiamabili da RDF/OWL<br />
toolkits JENA e Manchester OWL-API.<br />
Le principali funzionalità <strong>di</strong> Pellet sono[22]:<br />
• analisi, validazione, debbugging e riparazione <strong>di</strong> ontologie;<br />
• reasoning sui datatype <strong>di</strong> XML Schema e su quelli definiti<br />
dall’utente;<br />
• entailment ovvero la sussunzione tra concetti che permette <strong>di</strong><br />
definire la gerarchia;<br />
• Conjunctive ABox Query;<br />
• integrazione con regole formali;<br />
89
• Multi-Ontology reasoning usando le E-Connction che sono<br />
formalismi logici per collegare le informazioni presenti in più<br />
ontologie.<br />
• etc…<br />
Per concludere si mostra l’architettura del reasoner Pellet.<br />
Figura 2.25 - Pellet System Architecture[23]<br />
Nella figura precedentemente mostrata, in blu sono denotati gli elementi<br />
propri del componente, mentre in verde le applicazioni esterne che utilizza o<br />
che sono supportate.<br />
2.10.4 – JENA<br />
Jena è un framework open source sviluppato dal Semantic Web Research<br />
Group <strong>di</strong> HP Labs[24] per lo sviluppo <strong>di</strong> applicazioni Java Ontology-Based.<br />
Nato inizialmente per realizzare applicazioni che supportassero RDF ed<br />
RDFS, Jena è stato successivamente esteso ai linguaggi per la definizione <strong>di</strong><br />
90
ontologie tra cui DAML+OIL ed OWL[25]. Jena è scaricabile gratuitamente<br />
da Sourceforge[26].<br />
Jena pur supportando <strong>di</strong>versi linguaggi per l’espressione <strong>di</strong> ontologie,<br />
fornisce un’unica API neutrale rispetto al linguaggio. Ciò significa poter<br />
lavorare con le ontologie in maniera in<strong>di</strong>pendente dal linguaggio con cui<br />
queste sono state definite.<br />
Jena permette la modellazione e la manipolazione <strong>di</strong> basi <strong>di</strong> conoscenza,<br />
permette l’integrazione nelle applicazioni <strong>di</strong> alcuni Reasoner tra i più<br />
potenti e supporta anche un query engine incapsulato nel modulo ARQ<br />
( A SPARQL Processor for Jena ) che è un componente che supporta<br />
<strong>di</strong>fferenti linguaggi <strong>di</strong> query tra cui RDQL e SPARQL.<br />
Il framework è costituito <strong>di</strong> un certo numero <strong>di</strong> librerie ( package ), tra cui<br />
qui <strong>di</strong> seguito si enunciano le principali:<br />
• com.hp.hpl.jena.graph che rappresenta un grafo RDF;<br />
• com.hp.hpl.jena.rdf.model RDF API: introduce l’interfaccia Model,<br />
che rappresenta un modello RDF. Prevede meto<strong>di</strong> per la creazione e<br />
la gestione <strong>di</strong> risorse, proprietà, letterali e statement. Contiene<br />
l’estensione InfModel per gestire le informazioni inferite da un<br />
reasoner;<br />
• com.hp.hpl.jena.reasoner Inference API: permette <strong>di</strong> associare un<br />
reasoner ad un modello ontologico;<br />
• com.hp.hpl.jena.ontology Ontology API: introduce le opportune<br />
estensioni per il supporto dei linguaggi RDFS, OWL; Preve<strong>di</strong> inoltre<br />
l’interfaccia OntModel in<strong>di</strong>pendente dal linguaggio <strong>di</strong><br />
rappresentazione e meto<strong>di</strong> per la creazione e la gestione <strong>di</strong> classi,<br />
proprietà, in<strong>di</strong>vidui, gerarchie <strong>di</strong> classi e proprietà;<br />
91
• com.hp.hpl.jena.reasoner.<strong>di</strong>g DIG API: prevede<br />
un’implementazione DIGReasoner per utilizzare un reasoner DIG;<br />
• com.hp.hpl.jena.db permette l’eventuale gestione persistente dei dati.<br />
La gestione delle ontologie in Jena si realizza men<strong>di</strong>ante l’interfaccia<br />
OntModel introdotta già precedentemente. È possibile creare un’ontologia e<br />
contemporaneamente specificare quale linguaggio ontologico adottare<br />
passando al relativo metodo l’URI corrispondente come mostrato nella<br />
tabella che segue.<br />
Figura 2.26 - Linguaggi per Ontologie e relative URI<br />
Sono offerti meto<strong>di</strong> per creare classi, proprietà ed in<strong>di</strong>vidui, ed ancora è<br />
possibile importare delle ontologie pre-esistenti ( eventualmente create con<br />
Protègè ) o salvarle in file. Me<strong>di</strong>ante opportuni meto<strong>di</strong> è ovviamente<br />
possibile esplorare o navigare tali ontologie.<br />
92
L’interfaccia OntModel mantiene tutte le informazioni contenute<br />
nell’ontologia come statement RDF. Se quin<strong>di</strong> si prova ad accedere ad una<br />
certa informazione, bisogna accedere allo statement che la rappresenta. Allo<br />
stesso modo quando si vanno ad aggiungere nuove informazioni, nuovi<br />
statement vengono inseriti nel modello.<br />
Qualora l’ontologia prevedesse l’uso <strong>di</strong> un reasoner, eventuali nuove<br />
informazioni ottenute per inferenza sarebbero mantenute nel modello ancora<br />
agganciando nuovi statement così come per quelli che rappresentano le<br />
cosiddette informazioni esplicite.<br />
Per quanto riguarda i reasoner, Jena prevede dei reasoner “interni” le cui<br />
possibilità sono però limitate. Ed allora sono previsti meccanismi per il<br />
collegamento <strong>di</strong> reasoner esterni come Racer, Fact ma soprattutto Pellet,<br />
sia attraverso l’utilizzo dell’interfaccia Standard DIG ma anche me<strong>di</strong>ante<br />
collegamento <strong>di</strong>retto importando le relative librerie ( soluzione questa che<br />
tra l’altro è più performante ).<br />
93
3.1 – Introduzione<br />
Capitolo 3<br />
Definizione <strong>di</strong> un Semantic Message Oriented<br />
Middleware a supporto dei sistemi ATM<br />
La maggior parte <strong>degli</strong> attuali sistemi <strong>di</strong>stribuiti su larga scala necessita <strong>di</strong><br />
connettere un numero elevato <strong>di</strong> sistemi a loro volta <strong>di</strong>stribuiti<br />
geograficamente, che sono eterogenei, fortemente decentralizzati e soggetti<br />
a <strong>di</strong>fferenti cambiamenti durante il loro ciclo <strong>di</strong> vita.<br />
Tali caratteristiche motivano non poco la necessità <strong>di</strong> utilizzare un<br />
middleware che permetta <strong>di</strong> <strong>di</strong>saccoppiare il più possibile i sistemi e <strong>di</strong> far<br />
evolvere nel tempo ogni componente del sistema complessivo in maniera<br />
in<strong>di</strong>pendentemente.<br />
Tra i <strong>di</strong>versi pattern <strong>di</strong> comunicazione, il MOM ( Message Oriented<br />
Middleware ) sembra essere quello più adatto alla realizzazione <strong>di</strong> una<br />
piattaforma middleware versatile, capace <strong>di</strong> integrare in accoppiamento<br />
lasco i sistemi <strong>di</strong>stribuiti. Inoltre tra i due para<strong>di</strong>gmi <strong>di</strong> comunicazione<br />
previsti dal modello MOM , il publish-subscribe è meglio accre<strong>di</strong>tato<br />
94
ispetto al message-queuing in quanto permette un para<strong>di</strong>gma <strong>di</strong><br />
comunicazione <strong>di</strong> tipo “many-to-many” .<br />
Nel contesto <strong>di</strong> un sistema il cui focus principale è lo scambio <strong>di</strong><br />
informazioni tra i vari sistemi ATM, assumono grande rilevanza<br />
caratteristiche quali espressività ed efficienza dei meccanismi <strong>di</strong><br />
<strong>di</strong>stribuzione dei dati. In questo capitolo si vanno ad introdurre i possibili<br />
vantaggi che si possono ottenere me<strong>di</strong>ante l’integrazione <strong>di</strong> un modello<br />
semantico come un’ontologia nel contesto <strong>di</strong> un middleware basato sul<br />
modello publish-subscribe.<br />
3.2 – Pattern Cooperativi per l’ATM<br />
Come già anticipato nel primo capitolo, lo scopo principale <strong>di</strong> SWIM<br />
consiste nel realizzare un prototipo <strong>di</strong> una piattaforma middleware per<br />
l’interoperabilità e lo scambio <strong>di</strong> dati e servizi tra i vari sistemi ATM sia<br />
quelli attuali che <strong>di</strong> prossima generazione.<br />
In questo contesto e per quanto detto nel primo capitolo risulta necessario ed<br />
opportuno che i <strong>di</strong>versi stakeholders dell’ATM vengano tra loro<br />
interconnessi in accoppiamento lasco attraverso un sistema la cui<br />
architettura sia basata sugli eventi. Ed allora un’infrastruttura basata sul<br />
para<strong>di</strong>gma <strong>di</strong> comunicazione <strong>di</strong> tipo publish-subscribe sod<strong>di</strong>sfa in modo<br />
efficiente molti dei requisiti descritti nel progetto SESAR SWIM.<br />
In generale, il servizio <strong>di</strong> messaging prevede un insieme <strong>di</strong> no<strong>di</strong> <strong>di</strong>stribuiti<br />
sulla rete. Ciascun client del sistema <strong>di</strong> messaging può essere o publisher, il<br />
cui compito è quello <strong>di</strong> produrre ed inviare informazioni, o subscriber, ed in<br />
tal caso il suo compito è quello <strong>di</strong> sottoscriversi per ricevere i particolari tipi<br />
<strong>di</strong> informazioni a cui è interessato per poi consumare i dati ricevuti. I clients<br />
95
non comunicano <strong>di</strong>rettamente tra loro, ma la loro interazione può avvenire<br />
solo attraverso il servizio <strong>di</strong> notifica. In questo modo la sincronizzazione tra<br />
produttori e consumatori viene gestita dal servizio stesso.<br />
Inoltre, nel contesto <strong>di</strong> SWIM, la cooperazione tra i <strong>di</strong>versi attori della<br />
gestione del traffico aereo avviene secondo <strong>di</strong>versi ruoli, regole e<br />
responsabilità. Se da un lato si prevede <strong>di</strong> <strong>di</strong>saccoppiare i consumatori dei<br />
dati dai restanti attori del sistema così che possano variare nel tempo in<br />
numero e tipologia, questa visione non è ugualmente valida per i produttori<br />
<strong>di</strong> dati. Infatti, nell’ottica <strong>di</strong> produrre dei dati in uno stato consistente e<br />
valido, <strong>di</strong>venta necessaria la cooperazione dei <strong>di</strong>versi attori che<br />
contribuiscono alla produzione <strong>di</strong> tali dati ( contributors ). Nella figura che<br />
segue vengono definiti i ruoli che sono stati in<strong>di</strong>viduati nel contesto <strong>di</strong><br />
SWIM.<br />
Ruolo Definizione<br />
- Riceve dal Manager dati coerenti<br />
PUBLISHER<br />
- Distribuisce dati agli altri attori<br />
- Raccoglie i dati dei Contributors per<br />
MANAGER<br />
produrre dati consistenti<br />
- Fornisce dati consistenti al Publisher<br />
- Si sottoscrive ad un dato o a parte <strong>di</strong><br />
USER<br />
esso<br />
- Riceve gli aggiornamenti dei dati<br />
- Imposta il valore <strong>di</strong> parte delle<br />
informazioni (topic)<br />
che costituiscono il dato.<br />
CONTRIBUTOR<br />
- Invia il nuovo topic del dato al<br />
Manager (contributo<br />
parziale).<br />
Figura 3.1 - Definizione dei Ruoli<br />
96
Il middleware dovrà quin<strong>di</strong> prevedere funzionalità per la gestione dei ruoli<br />
quali:<br />
• definire ruoli <strong>di</strong>fferenti per dati <strong>di</strong>fferenti;<br />
• definire ruoli <strong>di</strong>fferenti per lo stesso dato;<br />
• mo<strong>di</strong>ficare il ruolo in base al dato.<br />
In base a quanto detto ed all’architettura stratificata del sistema SWIM, si<br />
evince che lo strato SWIM ATM Data Access deve permettere <strong>di</strong> accedere ai<br />
dati ATM <strong>di</strong> SWIM e <strong>di</strong> definire i meccanismi per la gestione dei dati<br />
(accesso, aggiornamento e sottoscrizione ).<br />
Nella seguente figura viene illustrato lo scenario in cui <strong>di</strong>versi sistemi ATM<br />
peer-to-peer comunicano me<strong>di</strong>ante il para<strong>di</strong>gma publish-subscribe. Infatti,<br />
l’interazione tra i sistemi avviene me<strong>di</strong>ante il Global Data Space che ne<br />
permette il <strong>di</strong>saccoppiamento.<br />
System I<br />
System IV<br />
1. publish A 2. consume A<br />
4. consume B<br />
5. get X<br />
6. publish C<br />
SWIM Information Pool<br />
2. consume A<br />
3. publish B<br />
7. consume C<br />
System <strong>II</strong><br />
System <strong>II</strong>I<br />
Figura 3.2 - Comunicazione <strong>di</strong> tipo Publish-Subscribe<br />
97
I servizi dello strato SWIM ATM Added-Value invece offrono funzionalità <strong>di</strong><br />
livello più alto rispetto al semplice accesso allo Spazio Globale dei Dati e<br />
permettono <strong>di</strong> rendere <strong>di</strong>sponibili i servizi ATM attraverso la rete SWIM,<br />
mettendo a <strong>di</strong>sposizione meccanismi <strong>di</strong> comunicazione one-to-one tra i<br />
sistemi client ( service consumer ) ed i sistemi legacy che offrono il<br />
servizio.<br />
Nella seguente figura viene illustrato lo scenario in cui un client ATM<br />
comunica con più legacy system me<strong>di</strong>ante un para<strong>di</strong>gma <strong>di</strong> comunicazione<br />
<strong>di</strong> tipo Request-Response. Questo meccanismo chiarisce la possibilità <strong>di</strong><br />
orchestrare ed utilizzare servizi da parte dei client.<br />
Client<br />
Application<br />
1. request<br />
2. response<br />
3. request<br />
4. response<br />
S1<br />
S2<br />
(Legacy)<br />
System I<br />
(Legacy)<br />
System <strong>II</strong><br />
Figura 3.3 - Comunicazione <strong>di</strong> tipo Request-Response<br />
In conclusione <strong>di</strong> quanto detto sinora, SWIM dovrà permettere sia <strong>di</strong><br />
realizzare gli scenari visti sopra e, laddove l’uso <strong>di</strong> un semplice pattern <strong>di</strong><br />
comunicazione non sia sufficiente, <strong>di</strong> combinare i <strong>di</strong>versi pattern.<br />
Si possono quin<strong>di</strong> avere sistemi che:<br />
• utilizzano il solo meccanismo <strong>di</strong> comunicazione Publish-Subscribe;<br />
• utilizzano il solo meccanismo <strong>di</strong> comunicazione Request-Response;<br />
98
• combinano entrambi i meccanismi <strong>di</strong> comunicazione<br />
Request-Response (sincrono) e Publish-Subscribe (asincrono).<br />
In particolare quest’ultimo scenario definisce il principale schema <strong>di</strong><br />
interazione tra i sistemi ATM, che prevede prima una fase sincrona con<br />
comunicazione <strong>di</strong> tipo Request-Response seguita poi da una fase asincrona<br />
<strong>di</strong> tipo Publish-Subscribe così come evidenziato nel seguente Sequence-<br />
Diagram. Infatti sono <strong>di</strong>versi gli scenari ATM prevedono la pubblicazione<br />
<strong>di</strong> dati aggiornati o nuovi, in seguito alla chiamata sincrona <strong>di</strong> un particolare<br />
servizio.<br />
sd ATM Systems<br />
System A System B Another System<br />
do_operation(a_param)<br />
«Response»<br />
Publish(some_data)<br />
«Publication»<br />
Publish(some_data)<br />
«Publication»<br />
Figura 3.4 - Schema Generale d’Interazione<br />
Secondo la definizione dei Ruoli vista precedentemente, un generico<br />
sistema ATM_A richiede attraverso una chiamata sincrona un’operazione<br />
99
ad un secondo sistema ATM_B che eseguirà l’operazione il cui effetto sarà<br />
la mo<strong>di</strong>fica <strong>di</strong> uno o più dati che verranno <strong>di</strong> seguito pubblicati e quin<strong>di</strong><br />
inoltrati ad un certo numero <strong>di</strong> sistemi che si erano precedentemente<br />
sottoscritti a quel tipo <strong>di</strong> dato.<br />
Nei documenti <strong>di</strong> SWIM che analizzano le tecnologie oggi <strong>di</strong>sponibili, per<br />
l’interconnessione e lo scambio <strong>di</strong> informazioni tra i vari sistemi ATM si fa<br />
esplicito riferimento a tecnologie quali Data Distribution Service ( DDS ) e<br />
Java Message Service ( JMS ).<br />
Entrambe le tecnologie hanno l’obiettivo <strong>di</strong> definire un meccanismo <strong>di</strong><br />
con<strong>di</strong>visione dei dati tra sistemi <strong>di</strong>stribuiti che consenta la comunicazione<br />
tra sistemi eterogenei in modo efficiente e flessibile. Questa proprietà è resa<br />
possibile dall’adozione del modello <strong>di</strong> comunicazione <strong>di</strong> tipo data-centric, il<br />
cui esempio tipico è la memoria <strong>di</strong>stribuita con<strong>di</strong>visa che può essere<br />
paragonata al nostro Spazio Globale dei Dati.<br />
P<br />
P<br />
Publishers<br />
Global Data Space<br />
T 1<br />
T 3<br />
T 2<br />
Figura 3.5 - Global Data Space<br />
S<br />
S<br />
S<br />
S<br />
Subscribers<br />
Piuttosto che configurare i no<strong>di</strong> client oppure definire meto<strong>di</strong> che<br />
permettono <strong>di</strong> accedere a dati od a oggetti remoti, il para<strong>di</strong>gma data-centric<br />
comporta che lo sviluppatore controlli <strong>di</strong>rettamente lo scambio <strong>di</strong><br />
100
informazioni. Compito <strong>degli</strong> sviluppatori <strong>di</strong>venta quin<strong>di</strong> definire un<br />
“<strong>di</strong>zionario dei dati” che modelli il sistema come un insieme <strong>di</strong> attori che<br />
necessitano <strong>di</strong> accedere a determinate informazioni ( chi ha bisogno <strong>di</strong><br />
cosa).<br />
Il DDS rappresenta uno standard maturo ampiamente utilizzato in <strong>di</strong>versi<br />
domini applicativi e che ben si adatta allo sviluppo <strong>di</strong> un prototipo<br />
middleware per la gestione del traffico aereo[6]. In particolare si adatta bene<br />
ai sistemi <strong>di</strong>stribuiti real-time in quanto permette la configurazione <strong>di</strong><br />
opportune politiche <strong>di</strong> QoS.<br />
Per lo sviluppo <strong>di</strong> un’applicazione test nell’ambito del presente lavoro <strong>di</strong><br />
<strong>tesi</strong>, si è scelto <strong>di</strong> utilizzare il Framework JMS in ambiente jBoss, le cui<br />
caratteristiche saranno <strong>di</strong>scusse nel prossimo paragrafo.<br />
3.3 – Java Message Service<br />
3.3.1 – MOM : Modello Orientato ai Messaggi<br />
MOM è una delle tecnologie chiave per la costruzione <strong>di</strong> sistemi su larga<br />
scala e <strong>di</strong> tipo Enterprise. Rappresenta una sorta <strong>di</strong> collante per mettere<br />
insieme più applicazioni o sistemi autonomi ed in<strong>di</strong>pendenti in un singolo<br />
sistema integrato e coerente.<br />
Nel modello MOM, la comunicazione tra i processi è <strong>di</strong> tipo peer-to-peer<br />
cioè tra pari, <strong>di</strong> tipo produttore-consumatore e prevalentemente asincrona,<br />
sebbene alcune implementazioni consentano anche uno scambio <strong>di</strong><br />
messaggi <strong>di</strong> tipo sincrono.<br />
Un sistema <strong>di</strong> Messaging può essere realizzato piazzando semplicemente<br />
una coda tra sistemi sender e receiver realizzando così un’astrazione <strong>di</strong> un<br />
canale <strong>di</strong> comunicazione tra processi interoperanti. Il Sender può inviare un<br />
101
messaggio ad un Receiver senza sapere se il messaggio è stato consegnato<br />
per cui dopo aver consegnato il messaggio al middleware MOM<br />
incaricandolo della consegna dello stesso, può continuare liberamente il suo<br />
lavoro. Il sender quin<strong>di</strong> non ha modo e necessità <strong>di</strong> conoscere quali processi<br />
riceveranno il messaggio inviato.<br />
Figura 3.6 - MOM Comunicazione tramite code <strong>di</strong> messaggi<br />
MOM è spesso implementato come un server che può gestire i messaggi <strong>di</strong><br />
più client eseguiti concorrentemente. I senders piazzano i messaggi nella<br />
coda mentre i receivers li rimuovono. Un server <strong>di</strong> tipo MOM può creare e<br />
gestire più code <strong>di</strong> messaggi e su ogni coda più sistemi possono inviare i<br />
propri messaggi e più receivers possono prelevari. Ogni coda ha un nome<br />
che sia i sender che i receiver devono specificare quando eseguono le<br />
proprie operazioni <strong>di</strong> invio e prelievo.<br />
Un server <strong>di</strong> tipo MOM quando accetta un messaggio da una certo sistema,<br />
deve inviare un acknowledgement per in<strong>di</strong>care che il messaggio è stato<br />
correttamente ricevuto. Successivamente, il server deve memorizzare il<br />
messaggio nella particolare coda che il sender ha specificato. Inoltre un<br />
102
sender può inviare parecchi messaggi su una coda prima che un qualsiasi<br />
receiver inizi a prelevarne, per cui un server MOM deve prevedere la<br />
possibilità <strong>di</strong> dover memorizzare in una coda, parecchi messaggi per un<br />
lungo periodo <strong>di</strong> tempo. I messaggi vengono poi consegnati ai receivers<br />
secondo una politica First-In-First-Out ( FIFO ) cioè secondo il loro or<strong>di</strong>ne<br />
<strong>di</strong> arrivo. Quando un receivers richiede un messaggio, il messaggio in testa<br />
alla coda gli viene consegnato, e solo successivamente il messaggio viene<br />
rimosso dalla coda.<br />
Da quanto abbiamo detto è evidente che un MOM realizza una sorta <strong>di</strong><br />
comunicazione <strong>di</strong> tipo one-to-one in quanto un singolo sender invia un<br />
singolo messaggio ad una singola coda ed un receiver recupera quel<br />
messaggio dalla coda e lo consuma. Evidentemente questo meccanismo<br />
abbastanza limitato non consente <strong>di</strong> risolvere tutti i tipi <strong>di</strong> problemi.<br />
Ed allora è possibile estendere MOM con il para<strong>di</strong>gma <strong>di</strong> comunicazione <strong>di</strong><br />
tipo Publish-Subscribe.<br />
Il Publish-Subscribe estende il semplice MOM introducendo meccanismi<br />
per la comunicazione <strong>di</strong> tipo 1-to-many, many-to-many, many-to-1. Un<br />
publisher invia un singolo messaggio su un certo Topic. Un Topic è un<br />
nome logico rappresentativo <strong>di</strong> un certo tipo <strong>di</strong> informazioni, che a livello <strong>di</strong><br />
MOM si mappa con una coda. I sistemi interessati a quel tipo <strong>di</strong><br />
informazioni, devono allora sottoscriversi preventivamente a quel Topic al<br />
fine <strong>di</strong> poter ricevere i relativi messaggi. Ed allora un subscriber dopo<br />
essersi sottoscritto, si mette in ascolto su quel Topic in attesa che qualche<br />
sistema pubblichi un messaggio. Il Server ha il compito poi <strong>di</strong> <strong>di</strong>stribuire<br />
ogni messaggio inviato a tutti i subscriber che sono in ascolto sul Topic<br />
specificato nel Messaggio.<br />
103
Figura 3.7 - Publish-Subscribe Messaging<br />
Il meccanismo Publish-Subscribe ha una serie <strong>di</strong> proprietà: Senders e<br />
Receivers sono <strong>di</strong>saccoppiati ed ognuno <strong>di</strong> essi non ha conoscenza <strong>di</strong> quale<br />
sistema ha inviato il messaggio o <strong>di</strong> chi lo riceverà. Ogni Topic può aveve<br />
più <strong>di</strong> un sistema Publisher e ciascuno può apparire e sparire <strong>di</strong>namicamente<br />
conferendo al sistema una grossa flessibilità. Allo stesso modo, i<br />
subscribers possono sottoscriversi e cancellarsi da un Topic in qualsiasi<br />
momento ed in maniera trasparente agli altri sistemi.<br />
Il Messaging Server ha poi la responsabilità <strong>di</strong> gestire i Topic, <strong>di</strong> tenere<br />
traccia <strong>di</strong> quali subscribers sono in ascolto su ogni Topic, ed ha la<br />
responsabilità <strong>di</strong> consegnare i messaggi a tutti i subscriber attivi. I Topic<br />
possono essere persistenti o meno intendendo con ciò la possibilità <strong>di</strong><br />
consegnare i messaggi in maniera affidabile.<br />
104
3.3.2 – JMS<br />
Java Message Service è l’insieme <strong>di</strong> API Java che consentono lo scambio <strong>di</strong><br />
messaggi tra applicazioni Java <strong>di</strong>stribuite sulla rete. La prima specifica JMS<br />
è stata rilasciata nel 1998, mentre l’ultima versione delle API è la 1.1<br />
pubblicata nel 2002. La specifica è scaricabile gratuitamente dal sito della<br />
sun [1].<br />
In ambito JMS, un messaggio è un oggetto contenente un raggruppamento<br />
<strong>di</strong> dati che viene inviato da un sistema ad un altro. I dati sono solitamente<br />
utilizzati per notificare eventi e sono pensati per essere utilizzati da un<br />
programma su una macchina e non <strong>di</strong>rettamente da un utente umano.<br />
In un scenario <strong>di</strong>stribuito un messaging service può essere pensato come un<br />
sistema <strong>di</strong>stribuito <strong>di</strong> notifica <strong>di</strong> eventi. In particolare con il termine<br />
messaging ci si riferisce ad un meccanismo che consente la comunicazione<br />
asincrona tra client remoti:<br />
• Un client invia un messaggio ad un ricevente ( o ad un gruppo <strong>di</strong><br />
riceventi );<br />
• Il destinatario riceve il messaggio ed esegue le operazioni<br />
corrispondenti in un secondo momento.<br />
E’ basato su para<strong>di</strong>gma peer-to-peer: un client può ricevere e spe<strong>di</strong>re<br />
messaggi a qualsiasi altro client attraverso un messaging provider ( server ).<br />
Permette quin<strong>di</strong> una comunicazione <strong>di</strong>stribuita ad accoppiamento lasco nel<br />
senso che tutto ciò che un sender ed un receiver devono conoscere sono il<br />
formato ( message format ) e la destinazione ( destination ) del messaggio.<br />
Il messaging server provvederà a consegnare il messaggio in maniera<br />
105
asincrona ed affidabile, cioè la consegna del messaggio sarà fatta una sola<br />
volta e senza alcun rischio <strong>di</strong> perdere informazioni.<br />
Per quanto riguarda l’architettura <strong>di</strong> JMS-API, si possono identificare i<br />
seguenti oggetti:<br />
1. JMS Client: sono le applicazioni JAVA che producono o consumano<br />
messaggi;<br />
2. Message: sono gli oggetti che incapsulano le informazioni che i<br />
client vogliono scambiare.<br />
3. JMS Provider: è il messaging system, cioè quello che implementa<br />
JMS e realizza la funzionalità <strong>di</strong> controllo della<br />
comunicazione;<br />
4. Administered Object: sono oggetti preconfigurati, creati da un<br />
amministratore ad uso dei client. Incapsulano la logica specifica del<br />
JMS Provider nascondendola ai client garantendo così maggiore<br />
portabilità al sistema complessivo.<br />
Figura 3.8 - JMS API Architecture<br />
106
Sostanzialmente ci sono 2 tipi <strong>di</strong> Administerd Object:<br />
• Una Connection Factory è un oggetto utilizzato da un client per<br />
realizzare la connessione con il messaging provider ( entry point al<br />
messaging service ).<br />
• Una Destination ( Queue/Topic ): oggetto utilizzato da un client per<br />
specificare la destinazione del messaggio che invia o l’origine del<br />
messaggio che riceve.<br />
La creazione <strong>di</strong> ConnectionFactory e <strong>di</strong> Destination non è gestita da<br />
programma, ma bensì è compito dell’amministratore JMS che me<strong>di</strong>ante un<br />
opportuno Administrative Tool deve inserirli all’interno <strong>di</strong> un contesto<br />
JNDI in un opportuno namespace in modo che possano essere recuperati da<br />
qualsiasi client me<strong>di</strong>ante le normali API JNDI ( servizio <strong>di</strong> lookup ).<br />
Per inviare messaggi ( sender o publisher ) o per riceverli (receiver o<br />
subscriber ), un’applicazione JMS client utilizza i servizi JNDI per ottenere<br />
un oggetto <strong>di</strong> tipo ConnectionFactory e uno o più oggetti <strong>di</strong> tipo Destination<br />
( Queue o Topic ).<br />
Per quanto riguarda i modelli <strong>di</strong> messaging ( i cosiddetti Domini ), sono<br />
previsti due <strong>di</strong>versi meccanismi:<br />
1. Point-To-Point:<br />
• Più client JMS possono con<strong>di</strong>videre la stessa<br />
destination(Queue);<br />
• Un messaggio può essere consumato da un solo destinatario;<br />
• Permette una comunicazione one-to-one.<br />
107
2. Publish/Subscribe:<br />
• Un messaggio inserito nella destination ( Topic ) può essere<br />
inviato a tutti i destinatari ( subscriber ) che si sono <strong>di</strong>chiarati<br />
interessati a riceverlo;<br />
• Consente una comunicazione 1-to-many e many-to-many.<br />
Il modello <strong>di</strong> messaggistica PtP o P2P si basa sui concetti <strong>di</strong> coda, mittente<br />
( Sender o Producer ) e destinatario ( Receiver o Consumer ).<br />
Figura 3.8 - Point-to-Point Messaging<br />
Ogni Client JMS spe<strong>di</strong>sce e riceve messaggi sia in modalità sincrona che<br />
asincrona attraverso dei canali virtuali che sono code. Il modello PtP ha le<br />
seguenti caratteristiche:<br />
i. Più produttori e più consumatori possono con<strong>di</strong>videre la stessa coda,<br />
ma….<br />
ii. Ogni messaggio ha solamente un “consumer”, ovvero ogni<br />
messaggio può essere letto da un solo client.<br />
108
iii. Sender e Receveir non hanno nessuna <strong>di</strong>pendenza temporale. Il<br />
Receiver può prelevare il messaggio anche se non era attivo quando<br />
il Sender l’ha inviato.<br />
iv. Il Receiver notifica l’avvenuta ricezione e processamento del<br />
messaggio (acknowledge).<br />
v. Sono previsti meccanismi che gestiscono la priorità dei messaggi.<br />
In conclusione PtP è utile quando è necessario garantire che un messaggio<br />
sia processato con successo da un solo Consumer.<br />
Il modello <strong>di</strong> messaggistica PtP o P2P si basa sui concetti <strong>di</strong> Topic, mittente<br />
( Sender o Producer ) , destinatario ( Receiver o Consumer ) e<br />
Sottoscrizione.<br />
Figura 3.9 - Publish-Subscribe Messaging<br />
Nel modello Pub/Sub il Producer può inviare un messaggio a molti<br />
Consumer ( one-to-many ), attraverso un canale virtuale chiamato Topic. Il<br />
modello Publish-Subscribe ha le seguenti caratteristiche:<br />
109
i. Uno stesso Topic può essere con<strong>di</strong>viso da più consumer ed utilizzato<br />
ii. Per ricevere i messaggi<br />
i Consumer devono sottoscriversi ad un<br />
iii. Qualsiasi messaggio inviato su quel Topic viene consegnato a tutti i<br />
iv. Non c’è <strong>di</strong>pendenza tra Producer e Consumer; è il JMS Provider che<br />
v.<br />
da più publisher.<br />
Topic. I Consumer ( Subscriber ) manifestano in questo modo il loro<br />
interesse per quel tipo <strong>di</strong> messaggi.<br />
consumer sottoscritti.<br />
realizza l’operazione <strong>di</strong> <strong>di</strong>spatching dei messaggi a tutti i subscriber.<br />
Publisher e Subscriber generalmente restano anonimi così che<br />
entrambi possono <strong>di</strong>namicamente aggiungersi o eliminarsi.<br />
vi. I Publisher ed i Subscriber hanno però una <strong>di</strong>pendenza temporale:<br />
• Un receiver che si sottoscrive ad un Topic può consumare<br />
solamente messaggi pubblicati dopo la sua sottoscrizione.<br />
• Il subscriber può continuare a consumare messaggi solo nel<br />
periodo in cui rimane attivo. Durante il periodo <strong>di</strong> inattività i<br />
messaggi che dovesse ricevere andrebbero persi. Per ovviare<br />
a questo problema il Client JMS può usare una<br />
sottoscrizione “durevole”, che gli consente <strong>di</strong> <strong>di</strong>sconnettersi e<br />
riconnettersi in un secondo momento consumando messaggi<br />
pubblicati durante il periodo <strong>di</strong> assenza.<br />
vii. Un Subscriber ha due mo<strong>di</strong> per specificare i messaggi che è<br />
interessato a ricevere:<br />
• Topic-Based:<br />
le informazioni vengono sud<strong>di</strong>vise in<br />
argomenti (Topic); le sottoscrizioni e le pubblicazioni<br />
vengono fatte identificando il Topic a cui il messaggio è<br />
110
viii.<br />
associato. Il Topic quin<strong>di</strong> rappresenta il canale logico che<br />
connette i publisher ai subscriber.<br />
• Content-Based: si utilizzano dei filtri che attraverso delle<br />
• SINCRONA: il subscriber preleva <strong>di</strong>rettamente il messaggio<br />
• ASINCRONA: il client si registra<br />
presso un message listener<br />
Per<br />
concludere si mostra nella seguente figura il modello programmatico <strong>di</strong><br />
ii.<br />
• Connection Factory;<br />
v. Message Producer;<br />
con<strong>di</strong>zioni booleane sui parametri del messaggio permettono<br />
una selezione più accurata delle informazioni da ricevere.<br />
Un messagio JMS può essere consumato secondo due modalità:<br />
dalla coda ( operazione <strong>di</strong> fetch del messaggio ), tramite<br />
l’invocazione del metodo receive(). Il metodo è bloccante, il<br />
client rimane bloccato finchè non arriva il mesaggio o fino<br />
allo scadere <strong>di</strong> un timeout.<br />
attraverso un oggetto consumer. Se un messaggio arriva alla<br />
destinazione, il JMS provider consegna il messaggio<br />
chiamando il metodo onMessage() del listener.<br />
JMS-API. Gli oggetti coinvolti sono :<br />
i. Administered Odject;<br />
• Destination;<br />
Connection;<br />
iii. Session;<br />
iv. Message;<br />
vi. Message Consumer;<br />
111
Figura 3.10 - JMS API Programming Model<br />
Per<br />
ulteriori approfon<strong>di</strong>menti e per gli aspetti tecnici si rimanda al<br />
Capitolo31 del Tutorial ufficiale [28].<br />
3.4<br />
– Definizione <strong>di</strong> un Information Model per l’ATM<br />
Per quanto detto nei capitoli precedenti, il mondo ATM necessita<br />
<strong>di</strong> un<br />
infrastruttura che permetta <strong>di</strong> scambiare informazioni ai molti sistemi<br />
coinvolti. Così come per tutti i sistemi realizzati su larga scala, anche per il<br />
dominio ATM la gestione dei dati <strong>di</strong>venta molto complessa. In uno scenario<br />
così eterogeneo, caratterizzato da svariati stakeholders autonomi ed<br />
operativi in <strong>di</strong>fferenti sottodomini dello stesso dominio, lo scambio <strong>di</strong> dati<br />
in maniera efficiente che <strong>di</strong>saccoppi tali sistemi al fine <strong>di</strong> renderli<br />
interoperabili, rappresenta una delle principali caratteristiche<br />
112
dell’infrastruttura <strong>di</strong> integrazione. A tale scopo è necessario che le<br />
informazioni dei <strong>di</strong>versi domini vengano modellate sia strutturalmente sia<br />
semanticamente, definendo una unica e con<strong>di</strong>visa visione dei dati .<br />
Per alcuni dei Data Domain che caratterizzano l’ATM nella sua totalità, da<br />
alcuni anni a questa parte si sta cercando <strong>di</strong> definire uno standard per la<br />
struttura dei dati. Ad esempio, per il dominio dei piani <strong>di</strong> volo ( Flight<br />
Plan Data Domain – FDD ) la struttura standard è stata definita da<br />
ICOG[29].<br />
<br />
Arrival<br />
arrival_data : Arrival<br />
<br />
Departure<br />
departure_data : DepartureData<br />
<br />
DepartureClearance<br />
departure_clearance : DepartureClearance<br />
<br />
ATSUsDistributionList<br />
<strong>di</strong>stribution_list : DistributionList<br />
<br />
FlightPlanInfo<br />
(from Indra Distribution Clust...<br />
flight_plan : FlightPlan<br />
<br />
Coor<strong>di</strong>nation<br />
coor<strong>di</strong>nation_and_transfer_data : Coor<strong>di</strong>nationAndTransfer<br />
<br />
FlightPlanData<br />
flight_plan : FlightPlan<br />
<br />
DistributionCluster<br />
release_id : ReleaseID<br />
FOIPS_checksum : Integer<br />
<br />
Aircraft<br />
aircraft : Aircraft<br />
<br />
FlightKey<br />
flight_key : OperationalIdentifier<br />
Figura 3.11 - ICOG : Distribution Cluster<br />
<br />
Script<br />
flight_script : FlightScript<br />
<br />
SSR<br />
assigned_SSR_code_and_mode : SSRCode<br />
next_SSR_code_an_mode : SSRCode<br />
next_SSR_code_status : NextSSRCodeState<br />
<br />
FlightIdentification<br />
flight_identification : FlightIdent<br />
fo_release_id : FOReleaseID<br />
environment_release_id : ReleaseID<br />
<br />
Trajectory<br />
trajectory : Trajectory<br />
<br />
IOPInformation<br />
iop_specific_data : FlightIOPInformation<br />
Come<br />
si vede dalla figura <strong>di</strong> cui sopra con ICOG l’insieme <strong>di</strong> tutte le<br />
informazioni sono raccolte all’interno <strong>di</strong> un oggetto, il Flight Object ( FO )<br />
113
che costituisce la principale informazione del dominio . In altri termini tale<br />
Flight Object contiene tutti i dati <strong>di</strong> un piano <strong>di</strong> volo. All’interno <strong>di</strong> tale<br />
Flight Object le informazioni vengono ulteriormente sud<strong>di</strong>vise in<br />
raggruppamenti <strong>di</strong> dati fortemente coesi, detti Cluster. Qui <strong>di</strong> seguito si<br />
elencano i vari Cluster e le relative informazioni in essi contenute:<br />
• Aircraft: tale cluster contiene tutti i dati relativi ad un velivolo, come<br />
il suo identificativo ( arcid ), il tipo ed i dati relativi ad eventuali<br />
situazioni <strong>di</strong> emergenza;<br />
• Script: contiene l’insieme delle informazioni <strong>di</strong> base per la gestione<br />
della traiettoria, quali con<strong>di</strong>zioni meteo, velocità, aerodromo <strong>di</strong><br />
partenza( adep ) ed aerodromo <strong>di</strong> arrivo ( ades );<br />
Figura 3.12 - Script Class Diagram<br />
114
•<br />
FlightIdentification: contiene informazioni utili per l’identificazione<br />
del volo. In particolare questo cluster opzionalmente può identificare<br />
il volo prelevando ed elaborando informazioni contenute in altri<br />
cluster come per esempio adep, ades, arcid etc… ;<br />
Figura 3.13 - FlightIdentification Class Diagram<br />
115
• Trajectory: contiene informazioni circa la traiettoria del volo; in<br />
questo contesto la traiettoria è vista come una sequenza <strong>di</strong> punti. Tra<br />
questi ci sono alcuni punti più significativi, i cosi detti boundary<br />
point che stanno a rappresentare i punti <strong>di</strong> confine tra le zone ( in<br />
ICOG Volumi ) che sono attraversate dalla traiettoria. Più avanti<br />
caratterizzeremo maggiormente la sud<strong>di</strong>visone dello spazio aereo in<br />
volumi.<br />
Figura 3.14 - Trajectory Class Diagram<br />
• IOPInformation: contiene informazioni specifiche<br />
per<br />
l’interoperabilità dei sistemi;<br />
116
• FlightKey: contiene le informazioni relative alla chiave del Volo<br />
•<br />
come ad esempio adep, ades, arcid etc… ;<br />
Figura 3.15 - FlightKey Class Diagram<br />
Departure: contiene informazioni relative alla partenza;<br />
• Arrival: contiene informazioni relative all’arrivo;<br />
• DepartureClearance: contiene le informazioni<br />
riguardanti le<br />
autorizzazioni alla partenza del volo;<br />
117
• FlightPlanData: contiene informazioni generali relative al piano <strong>di</strong><br />
volo come ad esempio adep, ades, arcid, aircrafttype,etc…;<br />
Figura 3.16 - FlightPlanData Class Diagram<br />
• DistributionList: contiene informazioni circa i sistemi che sono<br />
interessati a conoscere il FO;<br />
Tali Cluster possono comunemente essere<br />
anche detti Distribution Cluster<br />
proprio<br />
per evidenziare che ciascuno <strong>di</strong> essi rappresenta l’unità minima <strong>di</strong><br />
trasferimento <strong>di</strong> porzioni <strong>di</strong> Flight Object tra i sistemi interessati a<br />
118
con<strong>di</strong>videre informazioni per la gestione <strong>di</strong> un determinato volo. In<br />
particolare ciascun Flight Object può essere costituito <strong>di</strong> al più <strong>di</strong> tre<strong>di</strong>ci<br />
Cluster nel senso che, non necessariamente in ogni Fight Object devono<br />
essere contenuti tutti i cluster che si sono definiti.<br />
Dall’analisi attenta dei Class Diagram <strong>di</strong> ogni cluster si evince che le<br />
informazioni incapsulate in ciascun cluster sono spesso correlate a dati<br />
contenuti in altri cluster. In particolare si evidenziano <strong>di</strong>pendenze<br />
tipicamente semantiche del tipo che uno stesso concetto <strong>di</strong> dominio è<br />
presente, magari in forma <strong>di</strong>versa, in più cluster. Ancora, alcune<br />
informazioni contenute in alcuni cluster sono ottenute me<strong>di</strong>ante fusione,<br />
integrazione o elaborazione <strong>di</strong> informazioni contenute in altri cluster. Questi<br />
aspetti appena evidenziati non vengono esplicitamente modellati in ICOG.<br />
In pratica molte informazioni sono deducibili solo da un elaborazione sui<br />
dati. Secondo la visione ATM <strong>di</strong> ICOG, tale elaborazione risiede nei sistemi<br />
legacy che opportunamente operano sui dati <strong>di</strong> domino per astrarre<br />
conoscenza a partire dai dati. Sebbene la definizione <strong>di</strong> una struttura<br />
standard dei dati del dominio FDD, ed in generale <strong>di</strong> ogni dominio ATM, è<br />
fondamentale per il progetto SWIM-SUIT, emergono tuttavia ulteriori<br />
concetti che è opportuno includere nei modelli dei dati, al fine <strong>di</strong> creare un<br />
infrastruttura a supporto <strong>degli</strong> scenari operativi del mondo ATM.<br />
Dall’analisi del dominio emerge, infatti, anche la necessità <strong>di</strong> definire Ruoli,<br />
Regole e Responsabilità per la gestione consistente del Flight Object, alla<br />
stregua <strong>di</strong> come se ne è <strong>di</strong>scusso nel primo paragrafo <strong>di</strong> questo capitolo.<br />
Questi aspetti, che sono <strong>di</strong> rilevante importanza, ancora non sono<br />
formalizzati in alcun modo.<br />
119
Altro gap semantico che bisogna colmare riguarda i meccanismi che<br />
regolano la <strong>di</strong>stribuzione dei dati. All’interno <strong>di</strong> ICOG e soprattutto nel<br />
contesto <strong>di</strong> SWIM manca la conoscenza necessaria per realizzare il<br />
<strong>di</strong>spaching dei dati che quin<strong>di</strong> è una responsabilità che viene demandata ai<br />
sistemi utenti esterni a SWIM.<br />
In conclusione, questo primo passo <strong>di</strong> standar<strong>di</strong>zzazione per quanto<br />
importante sia non è sufficiente<br />
per affrontare, nel contesto del sistema<br />
SWIM, problematiche quali la definizione <strong>di</strong> ruoli, un efficiente<br />
<strong>di</strong>sseminazione dei dati ed il mantenimento della consistenza del Flight<br />
Object. Ed allora, al fine <strong>di</strong> realizzare la piena integrazione <strong>di</strong> sistemi che<br />
generano e che devono con<strong>di</strong>videre informazioni fortemente eterogenee ma<br />
intrinsecamente non completamente in<strong>di</strong>pendenti, risulta necessario<br />
modellare ulteriormente i dati accompagnandoli con dei meta-dati. Tali<br />
meta-dati vanno a definire uno schema concettuale ( l’information model )<br />
il cui obiettivo è quello <strong>di</strong> accompagnare la struttura dei dati definita in<br />
ICOG con una chiara definizione semantica <strong>degli</strong> stessi, delle loro eventuali<br />
correlazioni, e <strong>degli</strong> aspetti che possono agevolarne la gestione, la<br />
manipolazione e la <strong>di</strong>stribuzione.<br />
Il presente lavoro <strong>di</strong> <strong>tesi</strong>, come<br />
vedremo dettagliatamente nell’ultimo<br />
capitolo,<br />
cerca <strong>di</strong> modellare non solo strutturalmente ma soprattutto<br />
semanticamente il dominio dei piani <strong>di</strong> volo, definendo un’ontologia OWL<br />
che intrinsecamente racchiuda quella conoscenza in più sul dominio<br />
necessaria ai sistemi ATM per poter interoperare pienamente e<br />
correttamente.<br />
120
Capitolo 4<br />
Definizione <strong>di</strong> un Information Model basato su<br />
4.1 – Introduzione<br />
Ontologia per il sistema SWIM<br />
In questo quarto capitolo verranno definiti gli scenari dei casi d’uso che si<br />
intende affrontare. In particolare ad ogni volo è associato un Flight Object e<br />
tale Flight Object deve essere con<strong>di</strong>viso tra tutti gli stakeholders ad esso<br />
interessati. Il primo scenario riguarda la creazione della <strong>di</strong>stributionList per<br />
quella particolare istanza <strong>di</strong> Flight Object ossia della lista <strong>di</strong> tutti gli<br />
stakeholders del sistema SWIM interessati a ricevere informazioni su quel<br />
volo. Il secondo scenario riguarda invece il Mapping dei Ruoli per<br />
quell’istanza <strong>di</strong> Flight Object, cioè l’attribuzione ad ogni stakeholder<br />
presente nella <strong>di</strong>stributionList <strong>di</strong> un ruolo: ogni stakeholder in base al ruolo<br />
può svolgere determinate operazioni su un determinato Flight Object. Il<br />
terzo ed ultimo scenario riguarda invece l’in<strong>di</strong>viduazione della presenza <strong>di</strong><br />
alcune delle correlazioni tra i cluster che compongono un Flight Object.<br />
121
Da un’analisi <strong>di</strong> questi scenari e dallo stu<strong>di</strong>o del modello <strong>di</strong> ICOG che<br />
definisce la struttura dei dati <strong>di</strong> volo, si procede alla presentazione del<br />
processo che porta alla definizione <strong>di</strong> uno schema ontologico<br />
che racchiude<br />
la conoscenza necessaria per la risoluzione <strong>degli</strong> scenari proposti. In<br />
conclusione si presenta l’applicazione che implementa gli scenari facendo<br />
uso del modello<br />
ontologico e si <strong>di</strong>scuteranno i risultati ottenuti.<br />
4.2 – Scenari Considerati<br />
4.2.1 – Calcolo della lista <strong>di</strong> <strong>di</strong>stribuzione dei dati <strong>di</strong> volo<br />
In base alla definizione <strong>degli</strong> scenari operativi <strong>di</strong> SESAR, la traiettoria <strong>di</strong><br />
business ( business trajectory – BT ) è la principale informazione a cui tutti<br />
gli attori coinvolti nell’ATM devono fare riferimento durante tutte le fasi del<br />
loro ciclo <strong>di</strong> vita. La traiettoria<br />
<strong>di</strong> business rappresenta una sin<strong>tesi</strong> dei dati<br />
che possono favorire od ostacolare lo svolgimento normale del volo. In<br />
particolare l’approccio trajectory-based richiede la con<strong>di</strong>visione sistematica<br />
delle traiettorie <strong>degli</strong> aeromobili tra i vari partecipanti al processo <strong>di</strong><br />
gestione del traffico aereo al fine <strong>di</strong> garantire che tutti i partner abbiano una<br />
visione comune <strong>di</strong> un volo e possano accedere agli aggiornamenti<br />
<strong>di</strong>sponibili per svolgere in maniera affidale i loro compiti. SESAR assume,<br />
pertanto, l’esistenza <strong>di</strong> un meccanismo in grado <strong>di</strong> permettere la<br />
con<strong>di</strong>visione della traiettoria tra i vari sistemi ATSU o ACC che ne sono<br />
interessati così come mostrato nella seguente figura.<br />
.<br />
122
Figura 4.1 - Trajectory<br />
Dalla figura 4.1 emerge che a ciascun sistema ASTU o ACC è associata una<br />
certa regione dello spazio aereo. Ed allora il sistema in questione è<br />
interessato a ricevere le informazioni riguardo tutti i voli le cui traiettorie<br />
attraversano l’area ad essi associata.<br />
Figura 4.2 - Aree associate ai sistemi<br />
123
La figura 4.2 evidenzia nuovamente che lo spazio aereo è partizionato in un<br />
certo numero <strong>di</strong> aree o volumi, e ciascuna <strong>di</strong> esse rappresenta l’insieme <strong>di</strong><br />
voli ed in particolare dei dati <strong>di</strong> quei voli che il corrispondente sistema è<br />
interessato a ricevere. In questo scenario è evidenziato allora anche quello<br />
che è il ruolo del sistema SWIM, che quin<strong>di</strong> rappresenta il collante tra i vari<br />
sistemi, cioè l’infrastruttura me<strong>di</strong>ante la quale i sistemi con<strong>di</strong>vidono le<br />
informazioni.<br />
Per capire meglio come è gestita la traiettoria an<strong>di</strong>amo a vedere come lo<br />
spazio aereo viene sud<strong>di</strong>viso.<br />
Figura 4.3 - Illustrazione delle Aree<br />
Vengono definite un certo numero <strong>di</strong> aree che governano la <strong>di</strong>stribuzione<br />
del Flight Object e come vedremo nel paragrafo successivo, regolano anche<br />
l’attribuzione dei ruoli. In particolare si definiscono:<br />
• Area <strong>di</strong> Responsabilità – AoR (in blu): è il volume <strong>di</strong> spazio aereo in<br />
cui i voli che lo attraversano si trovano sotto il controllo del<br />
124
corrispondente sistema Acc. In particolare l’insieme <strong>di</strong> tutte le AoR<br />
risulta essere un partizionamento dell’intera IOP Area.<br />
• Area <strong>di</strong> Interesse – AoI (in verde): è il volume <strong>di</strong> spazio aereo per il<br />
quale il corrispondente sistema Acc ha necessità <strong>di</strong> avere<br />
informazioni riguardo tutti voli che lo attraversano. Come è evidente<br />
nella figura, ciascun AoI associata ad un sistema, contiene<br />
interamente l’AoR associata allo stesso sistema.<br />
• IOP Area (in rosa): è il volume <strong>di</strong> spazio aereo in cui il Flight Object<br />
è usato per la <strong>di</strong>stribuzione<br />
dei dati <strong>di</strong> volo tra i partecipanti. In<br />
particolare la IOP Area risulta essere la somma <strong>di</strong> tutte le AoR.<br />
Nel contesto <strong>di</strong> ICOG, ogni porzione <strong>di</strong> spazio aereo, per quanto grande essa<br />
sia, viene genericamente definita “ATCVolume”. Dunque secondo questa<br />
definizione, tutte le aree appena introdotte sono dei Volumi. Esistono però<br />
anche altri tipi <strong>di</strong> Volumi, i cosiddetti “Sector” che sono un ulteriore <strong>di</strong>verso<br />
partizionamento della IOP Area. Proprietà importante che caratterizza tali<br />
Sector è che ognuno <strong>di</strong> essi è completamente contenuto in AoR, e cioè, per<br />
essere più precisi, un Sector non può intersecare due AoR. Discorso<br />
contrario vale invece riguardo le AoI, nel senso che un Sector può<br />
intersecare più AoI. Per finire va specificato che nel contesto<br />
dell’ATM i<br />
volumi<br />
definiti sono fissi, cioè i loro limiti, la loro posizione nella IOP Area<br />
e le loro estensioni geografiche sono stati fissati a priori, ed ancora bisogna<br />
specificare che tra un sistema Acc e la corrispondente AoR, e <strong>di</strong><br />
conseguenza la AoI, vi è un rapporto <strong>di</strong> “uno-a-uno”.<br />
125
Figura 4.4 - Corrispondenza Sistemi - Aree<br />
Riprendendo a questo punto la definizione <strong>di</strong> trajectory fatta in ICOG nel<br />
capitolo precedente, alla luce del particolare partizionamento dello spazio<br />
aereo appena descritto, in un oggetto trajectory, i “boundary point” sono i<br />
punti della traiettoria che cadono sul confine tra due Sector.<br />
Figura 4.5 - Trajectory Boundary Point<br />
126
Nel contesto appena descritto, lo scenario d’uso che an<strong>di</strong>amo a considerare<br />
si articola nei seguenti passi:<br />
1. Ciascun sistema Acc sì è sottoscritto ad una certa AoR e <strong>di</strong><br />
conseguenza alla corrispondente AoI;<br />
2. ci troviamo a Creation Time, cioè il Flight Object è stato appena<br />
creato dal Manager;<br />
3. c’è l’esigenza <strong>di</strong> con<strong>di</strong>videre tale Flight Object al fine <strong>di</strong> permettere<br />
a tutti i sistemi ad esso interessati <strong>di</strong> svolgere le loro normali<br />
funzioni;<br />
4. il Manager per poter <strong>di</strong>stribuire il Flight Object necessita<br />
<strong>di</strong><br />
conoscere la <strong>di</strong>stributionList associata a quel FlightObject.<br />
5. Ottenuta la <strong>di</strong>stributionList, il manager procede all’invio del Flight<br />
Object attraverso l’operazione <strong>di</strong> pubblicazione.<br />
Dunque<br />
il problema da risolvere è ottenere la <strong>di</strong>stributionList.<br />
Pe r quanto detto riguardo il dominio dei piani <strong>di</strong> volo la <strong>di</strong>stributionList<br />
associata ad una certa istanza <strong>di</strong> FlightObject sarà la lista <strong>di</strong> tutti i sistemi<br />
Acc la cui corrispondente AoI è attraversata dalla particolare traiettoria<br />
prevista per il volo ( per esempio nella figura 4.5 i sistemi interessati al volo<br />
sono il sistemi 1, 2, 4 ).<br />
Gli scenari operativi attuali prevedono che tale <strong>di</strong>stributionList venga<br />
incapsulata nel Flight Object, e quin<strong>di</strong> passata al Manager, da un sistema<br />
legacy <strong>di</strong>rettamente connesso al Manager. Nello scenario che<br />
andremo a<br />
modellare, invece, porteremo parte della conoscenza del dominio<br />
all’interno dell’ infrastruttura SWIM-SUIT, al fine <strong>di</strong> realizzare il calcolo<br />
della <strong>di</strong>stributionList in maniera automatica.<br />
127
4.2.2 – Definizione dei Ruoli a partire dai dati<br />
Come è stato già detto in precedenza, in ICOG al fine <strong>di</strong> garantire una<br />
gestione<br />
consistente dei dati e quin<strong>di</strong> del Flight Object , sono stati definiti<br />
un certo numero <strong>di</strong> ruoli che governano le responsabilità<br />
<strong>di</strong> ciascun sistema<br />
rispetto<br />
ai Flight Object.<br />
Per ogni Flight Object, i possibili<br />
ruoli in<strong>di</strong>viduati sono:<br />
1. Publisher: responsabile della <strong>di</strong>stribuzione del Flight Object ai<br />
sistemi interessati a con<strong>di</strong>videre le informazioni in esso contenute, e<br />
che vi sono<br />
state inserite dal Manager.<br />
2. Manager: responsabile della consistenza del particolare Flight<br />
Object. Esso riceve le richieste <strong>di</strong> aggiornamento<br />
dai vari<br />
Contributors e realizza i necessari processi per il mantenimento della<br />
coerenza e della consistenza delle informazioni contenute<br />
nel Flight<br />
Object <strong>di</strong> cui è responsabile.<br />
3. Contributor: la sua responsabilità è quella <strong>di</strong> settare le informazioni<br />
e renderle <strong>di</strong>sponibili al Manager affinché questi le consoli<strong>di</strong><br />
all’interno del Flight Object.<br />
4. User: si sottoscrive ad una partizione dell’intero insieme <strong>di</strong> Flight<br />
Object e riceve gli aggiornamenti pubblicati dal publisher.<br />
Successivamente, i ruoli <strong>di</strong> manager e publisher sono stati fusi, per cui nel<br />
prosieguo della trattazione parleremo sempre e solo <strong>di</strong> manager.<br />
Come già anticipato brevemente nel paragrafo precedente, il meccanismo <strong>di</strong><br />
attribuzione dei ruoli <strong>di</strong>pende dalla traiettoria e da come questa si va a<br />
mappare sui volumi corrispondenti ai vari sistemi.<br />
128
Ed allora nello stesso contesto descritto nel paragrafo precedente, lo<br />
scenario d’uso che an<strong>di</strong>amo a considerare si articola nei seguenti passi:<br />
2. Ci troviamo a Creation<br />
Time, cioè l’istanza <strong>di</strong> Flight Object in<br />
Dunque il problema da risolvere è calcolare<br />
la contributorList e la userList.<br />
Per<br />
1. Ciascun sistema Acc sì è sottoscritto ad una certa AoR e <strong>di</strong><br />
conseguenza alla corrispondente AoI;<br />
questione è stata appena creata dal Manager;<br />
3. Il Manager, in possesso della <strong>di</strong>stributionList, ha la necessità <strong>di</strong><br />
attribuire a ciascun sistema interessato, un ruolo che ne regoli le<br />
responsabilità.<br />
4. Ottenuta la contributorList e la userList, rispettivamente la lista dei<br />
sistemi contributor e dei sistemi user per il Flight Object, il manager<br />
provvede a comunicarlo ai sistemi <strong>di</strong>rettamente interessati.<br />
quanto detto riguardo il dominio dei piani <strong>di</strong> volo, la contributorList<br />
associata<br />
ad una certa istanza <strong>di</strong> FlightObject sarà la lista <strong>di</strong> tutti i sistemi<br />
Acc la cui corrispondente AoR è attraversata dalla traiettoria prevista per il<br />
volo<br />
( per esempio nella figura 4.5 i sistemi contributor per il Flight Object<br />
associato a quel volo sono i sistemi 1, 2 ). Per quanto riguarda invece la<br />
userList associata allo stesso Flight Object, questa sarà la lista <strong>di</strong> tutti i<br />
sistemi Acc per i quali è attraversata dalla traiettoria unicamente la AoI. In<br />
termini<br />
matematici, la userList è il complemento della contributorList<br />
rispetto alla <strong>di</strong>stributionList ( per esempio nella figura 4.5 il sistema user<br />
per il Flight Object associato a quel volo è il sistema 4 ).<br />
Gli scenari operativi attuali prevedono che la gestione<br />
dei ruoli venga<br />
eseguita dagli stessi sistemi legacy , ossia ogni sistema legacy è autorizzato<br />
129
a registrarsi secondo un determinato ruolo Nello scenario che andremo a<br />
modellare, invece, porteremo la gestione dei ruoli all’interno <strong>di</strong> SWIM-<br />
SUIT, e quin<strong>di</strong> il calcolo sia dellla contributorList, sia della userList verrà<br />
eseguito in maniera automatica in base alla natura<br />
stessa dei sistemi ACC.<br />
4.2.3 – Correlazioni tra i cluster dei dati <strong>di</strong> volo<br />
Come descritto nell’ultimo paragrafo del capitolo precedente, in ICOG i dati<br />
riguardanti i piani <strong>di</strong> volo, sono organizzati in Cluster ciascuno dei quali<br />
rappresenta l’unita minima<br />
<strong>di</strong> trasferimento dei dati in SWIM-SUIT.<br />
Dall’analisi<br />
attenta dei Class Diagram <strong>di</strong> ogni cluster si evince che le<br />
informazioni<br />
incapsulate in alcuni cluster possono <strong>di</strong>pendere o essere<br />
correlate ad informazioni contenute in altri cluster. In particolare<br />
si<br />
evidenziano<br />
<strong>di</strong>pendenze tipicamente semantiche del tipo che uno stesso<br />
concetto è contenuto in più cluster o ancora che alcune informazioni<br />
rappresentate in alcuni cluster sono ottenute me<strong>di</strong>ante fusione, integrazione<br />
o elaborazione <strong>di</strong> informazioni contenute in altri cluster. Questi aspetti non<br />
essendo modellati in maniera esplicita, anche se risultano chiari ad un<br />
umano, non sono altrettanto deducibili da una macchina.<br />
In questo contesto, lo scenario d’uso che an<strong>di</strong>amo a considerare si articola<br />
nei seguenti passi:<br />
1. un sistema manager <strong>di</strong> un Flight Object, riceve una versione<br />
aggiornata <strong>di</strong> uno dei cluster che compongono un dato Flight Object;<br />
2. il manager, allo scopo <strong>di</strong> tenere consistente lo stato dell’intero Flight<br />
Object, deve ottenere un lista <strong>di</strong> quelle che sono le correlazioni <strong>di</strong><br />
ogni tipo <strong>di</strong> quel cluster con i rimanenti cluster che compongono il<br />
Flight Object;<br />
130
3. ottenuta la lista <strong>di</strong> queste correlazioni o <strong>di</strong>pendenze, deve quin<strong>di</strong><br />
provvedere al riallineamento delle informazioni contenute nei vari<br />
cluster;<br />
4. il manager procede nuovamente all’invio del Flight Object<br />
attraverso l’operazione <strong>di</strong> pubblicazione così da aggiornare anche le<br />
copie del Flight Object <strong>degli</strong> altri sistemi.<br />
Dunque, in seguito all’aggiornamento ed alla ripubblicazione dei dati<br />
appartenenti ad un dato cluster, risulta necessario aggiornare e quin<strong>di</strong><br />
ripubblicare ulteriori cluster. Per quanto detto nella parte che riguarda<br />
ICOG, queste relazioni non sono esplicitamente modellate e quin<strong>di</strong> la lista<br />
delle <strong>di</strong>pendenze può essere ottenuta solo attraverso un’attenta analisi<br />
semantica delle informazioni contenute nei cluster.<br />
In conclusione ad oggi i sistemi legacy conoscono quali sono le porzioni <strong>di</strong><br />
dato che gestiscono e quali sono i legami con altre informazioni, che magari<br />
possono appartenere anche a domini <strong>di</strong>versi. Tale conoscenza resta però<br />
proprietaria dei <strong>di</strong>versi sistemi legacy e pertanto non rappresenta una<br />
conoscenza con<strong>di</strong>visa. Esplicitare i legami semantici tra i <strong>di</strong>versi cluster del<br />
Flight Object quali duplicazioni <strong>di</strong> uno stesso dato<br />
in più cluster o<br />
ad<strong>di</strong>rittura in domini <strong>di</strong>fferenti, o ancora relazioni d’uso tra cluster nel senso<br />
che alcuni dati complessi<br />
contenuti in un dato cluster sono ottenuti per<br />
fusione<br />
o elaborazione <strong>di</strong> dati più semplici contenuti in altri cluster,<br />
rappresenta<br />
un valore aggiunto al modello dei dati <strong>di</strong> ICOG e permette<br />
all’ infrastruttura SWIM-SUIT <strong>di</strong> gestire la consistenza delle porzioni <strong>di</strong> dato<br />
del piano<br />
<strong>di</strong> volo.<br />
131
4.3 – Information Model<br />
Lo stu<strong>di</strong>o<br />
del documento <strong>di</strong> SWIM “Information Content and Service<br />
Requirements” ed in particolare un’attenta analisi <strong>degli</strong> obiettivi e <strong>degli</strong><br />
scenari ufficiali contenuti in tale documento, alcuni dei quali evidenziati nel<br />
paragrafo<br />
precedente, hanno permesso <strong>di</strong> comprendere ed <strong>di</strong> modellare gli<br />
aspetti importanti e l’organizzazione delle informazioni<br />
che caratterizzano il<br />
dominio dei piani <strong>di</strong> Volo.<br />
Il risultato <strong>di</strong> questa lunga fase <strong>di</strong> stu<strong>di</strong>o ha condotto alla realizzazione<br />
dell’ontologia OWL serializzata nel file “FDDdemoDraft2.owl”.<br />
Nella figura sotto sono mostrate poche righe della parte iniziale<br />
dell’Ontologia OWL definita. Ci si limita a visualizzarne una piccola parte<br />
perché, il particolare formalismo risulta non facilmente comprensibile ad un<br />
umano e quin<strong>di</strong> non restituisce nessuna informazione in più.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
1<br />
<br />
<br />
<br />
<br />
132
<br />
<br />
1<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
……….<br />
Figura 4.6 - Estratto<br />
Ontologia OWL<br />
133
Una più chiara ed intuitiva interpretazione dell’ontologia realizzata si può<br />
ottenere andando a mostrare l’output<br />
del tool Protègè. Tale tool semplifica<br />
le cose in quanto permette <strong>di</strong> lavorare<br />
in ambiente grafico e non<br />
con i<br />
fo rmalismi del linguaggio owl, che essendo comprensibili dalle macchine,<br />
no n lo sono altrettanto per gli umani.<br />
Figura 4.7 - Tassonomia Information Model<br />
134
Il modello mostrato nella figura <strong>di</strong> cui sopra visualizza la gerarchia dei<br />
concetti attivi in<strong>di</strong>viduati nel dominio dei piani <strong>di</strong> volo. In particolare come<br />
pre-annunciato si tratta <strong>di</strong> uno schema che riprende le scelte fatte in ICOG,<br />
cioè contiene i concetti presenti nel modello <strong>di</strong> ICOG, andandoli ad<br />
integrare con meta-dati che evidenziano per bene la natura delle<br />
informazioni,<br />
ne chiariscono il significato e quin<strong>di</strong> ne semplificano la<br />
comprensione agli umani ed alle macchine.<br />
Più nel dettaglio, tutte le classi figlie della classe padre ”owl:thing” sono i<br />
concetti del dominio che hanno natura autonoma ed in<strong>di</strong>pendente.<br />
Un Dizionario dei Concetti del dominio presenti nell’Information Model è il<br />
seguente :<br />
• Velivolo;<br />
• Piano <strong>di</strong> Volo;<br />
• Volume ATC. Tale concetto come approfon<strong>di</strong>to nel paragrafo sugli<br />
scenari, necessita <strong>di</strong> essere ulteriormente specializzato nei seguenti<br />
concetti:<br />
• Area <strong>di</strong> Interesse – AoI;<br />
• Area <strong>di</strong> Responsabilità – AoR;<br />
• Sector;<br />
• Distribution List;<br />
• FligthIdent,<br />
• Aerodromo;<br />
• Flight Object;<br />
• Boundary Point;<br />
• Partenza;<br />
135
• Arrivo;<br />
• Chiave del Volo;<br />
• Flight Script;<br />
• StakeHolder;<br />
• Trajectory;<br />
• Cluster. Come approfon<strong>di</strong>to precedentemente nel paragrafo che<br />
definisce ICOG, un Flight Object è costituito <strong>di</strong> un sottoinsieme <strong>di</strong><br />
tutti i cluster definiti, ognuno contenente informazioni <strong>di</strong>verse. Di<br />
conseguenza, tale concetto necessita <strong>di</strong> essere specializzato<br />
ulteriormente nei concetti seguenti:<br />
• ArrivalCluster;<br />
• AircraftCluster;<br />
• FlightPlanDataCluster;<br />
• ScriptCluster;<br />
• DistributionCluster;<br />
E’ chiaro che scendendo nella gerarchia, si procede verso una<br />
specializzazione dei concetti<br />
in<strong>di</strong>viduati.<br />
La definizione dei concetti<br />
è accompagnata dalla definizione delle relative<br />
proprietà. Grazie al tool Protègè<br />
mostriamo nelle figure seguenti le proprietà<br />
che sono modellate.<br />
• FlightIdentificationCluster;<br />
• FlightKeyCluster;<br />
• DepartureCluster<br />
• TrajectoryCluster;<br />
136
In dettaglio, le proprietà sono <strong>di</strong> due tipologie:<br />
• Datatype Properties:<br />
le proprietà <strong>di</strong> questo tipo sono utilizzate per<br />
modellare gli attributi<br />
associati ai concetti;<br />
• Object Properties:<br />
le proprietà <strong>di</strong> questo tipo sono utilizzate per<br />
modellare i collegamenti<br />
logici o semantici tra i concetti.<br />
In particolare, così come nel caso dei concetti, si riprendono le scelte fatte in<br />
ICOG, andandole ad integrare con meta-dati che evidenziano per bene la<br />
natura delle proprietà, ne chiariscono il significato e quin<strong>di</strong> ne semplificano<br />
la comprensione.<br />
Il modello mostrato nella figura<br />
seguente visualizza la gerarchia delle<br />
proprietà <strong>di</strong> tipo Datatype in<strong>di</strong>viduate.<br />
Figura 4.8 - Tassonomia DataType Properties<br />
Un Dizionario delle proprietà <strong>di</strong> tipo Datatype presenti nell’Information<br />
Model è il seguente :<br />
137
Proprietà Descrizione Concetti Coinvolti<br />
AircraftType Associa al velivolo la Aircraft<br />
sua tipologia<br />
IOPIdentifier Associa ad un volo il suo FlightIdent<br />
identificatore<br />
ID Associa ad un oggetto il Areodrome<br />
suo identificativo nel Flight Object<br />
contesto SWIM – SUIT Aircraft<br />
Cluster<br />
StakeHolder<br />
AtcVolume<br />
Figura 4.9 - Dizionario DataType Properties<br />
La tabella 4.9 contiene la lista delle proprietà (attributi) definite, una<br />
descrizione del significato <strong>di</strong> ciascuna proprietà ed i concetti ai quali le<br />
proprietà<br />
si riferiscono.<br />
Il modello mostrato nella figura seguente visualizza invece la gerarchia<br />
delle proprietà <strong>di</strong> tipo Oggetto.<br />
Figura 4.10 - Tassonomia Object Properties<br />
138
Un Dizionario delle proprietà <strong>di</strong> tipo Oggetto presenti nell’Information<br />
Model è il seguente :<br />
Proprietà Descrizione Domain Range<br />
hasArea Associa al<br />
sistema ACC<br />
le sue aree <strong>di</strong><br />
responsabilità<br />
ed interesse<br />
hasDCluster Associa al<br />
Flight Object i<br />
cluster <strong>di</strong> cui è<br />
costituito<br />
Uses Associa ad un<br />
dato un altro il<br />
dato da cui<br />
viene calcolato<br />
AoRisincludedAoI Associa ad un<br />
AoR la<br />
corrispondente<br />
AoI in cui è<br />
inclusa<br />
includeSector Associa ad un<br />
AoR un settore<br />
in essa incluso<br />
hasBoundaryPoint Associa alla<br />
traiettoria un<br />
BoundaryPoint<br />
<strong>di</strong> cui è<br />
costituita<br />
Downstream Associa ad<br />
ogni<br />
BoundaryPoint<br />
il settore <strong>di</strong><br />
provenienza<br />
Upstream Associa ad<br />
ogni<br />
BoundaryPoint<br />
il settore verso<br />
cui si procede<br />
ades Associa ad un<br />
oggetto<br />
l’aeroporto <strong>di</strong><br />
partenza del<br />
StakeHolder AoI<br />
AoR<br />
ATCVolume\<br />
Flight Object FlightKeyCluster<br />
FlightIdentificationCluster<br />
DistributionCluster<br />
TrajectoryCluster<br />
ScriptCluster<br />
AircraftCluster<br />
FlightIdent FlightKey<br />
AoR AoI<br />
AoR Sector<br />
Trajectory BoundaryPoint<br />
BoundaryPoint Sector<br />
BoundaryPoint Sector<br />
FlightKey Aerodrome<br />
FlightPlanData<br />
Script<br />
139
volo<br />
Adep Associa ad un<br />
oggetto<br />
l’aeroporto <strong>di</strong><br />
arrivo del volo<br />
Arcid Associa ad un<br />
oggetto il<br />
velivolo<br />
u tilizzato per il<br />
volo<br />
FlightKey Aerodrome<br />
FlightPlanData<br />
Script<br />
Aircraft Aircraft<br />
FlightKey<br />
FlightPlanData<br />
Figura 4.11 - Dizionario<br />
Object Properties<br />
La tabella 4.11 contiene la lista delle proprietà ( relazioni ) definite, una<br />
descrizione del significato <strong>di</strong> ciascuna proprietà ed i concetti che le relazioni<br />
va nno a collegare attraverso la definizione <strong>di</strong> dominio e condominio.<br />
La successiva fase <strong>di</strong> modellazione prevede <strong>di</strong> assegnare le proprietà ai<br />
rispettivi concetti dell’ontologia,<br />
classi, e stabilendo il conseguente insieme <strong>di</strong> in<strong>di</strong>vidui che possono<br />
appartenere a ciascuna classe.<br />
A questo punto del proce<strong>di</strong>mento <strong>di</strong> modellazione si popolano le classi<br />
dell’ontologia, istanziandone i relativi<br />
in<strong>di</strong>vidui. Pertanto, per il nostro<br />
dominio <strong>di</strong> interesse, saranno istanziati<br />
i <strong>di</strong>versi tipi <strong>di</strong> volumi quali AoR,<br />
AoI e Sector, i Flight Object e le relative<br />
Trajectory e tutti i restanti<br />
concetti<br />
precedentemente illustrati. Nel successivo<br />
paragrafo, illustrando in dettaglio<br />
lo scenario <strong>di</strong> interesse all’ applicazione sviluppata nel presente lavoro <strong>di</strong><br />
<strong>tesi</strong>, saranno mostrate tutte le istanze dell’ Information Model appena<br />
sopra<br />
descritto.<br />
definendo quin<strong>di</strong> delle restrizioni sulle<br />
140
4.3 – Applicazione<br />
4.3.1 – Architettura<br />
Il risulta to finale del lavoro <strong>di</strong> <strong>tesi</strong> è stato<br />
lo sviluppo<br />
<strong>di</strong> un’applicazione che<br />
grazie all’integrazione delle varie tecnologie proposte,<br />
realizzasse gli<br />
scenari operativi proposti.<br />
Nella figura 4.12 è mostrata la Component<br />
and Deployment View<br />
dell’applicazione, in cui si evincono gli elementi costituenti l’architettura<br />
e<br />
come<br />
questi elementi sono <strong>di</strong>slocati in rete.<br />
Figura 4.12 - Component and Deployment View<br />
141
C’è un unico sistema Manager <strong>di</strong> due Flight Object che come abbiamo più<br />
volte detto ricopre anche il ruolo <strong>di</strong> unico publisher per i due Flight Object e<br />
ci sono quattro sistemi ACC che ricoprono il ruolo <strong>di</strong> subscriber per i due<br />
FlightObject. Tali sistemi sono tutti <strong>di</strong>saccoppiati me<strong>di</strong>ante l’infrastruttura<br />
middleware realizzata dal servizio<br />
JMS installato su JBoss . Inoltre vi è un<br />
modulo che contiene l’ontologia ed il relativo Query Engine.<br />
Nella figura 4.13 è mostrata anche l’architettura a livelli <strong>degli</strong> strati software<br />
che compongono l’applicazione.<br />
Figura 4.13 - Architettura a livelli dell’applicazione<br />
142
Nella figura <strong>di</strong> cui sopra è evidenziato lo strato <strong>di</strong> trasferimento dei dati,<br />
cioè il componente JMS. Si evince poi l’esistenza <strong>di</strong> uno strato semantico<br />
in<strong>di</strong>pendente dagli altri elementi dell’applicazione. A tale strato semantico<br />
si accede dalle applicazioni esterne me<strong>di</strong>ante un livello <strong>di</strong> API che<br />
permettono la gestione, la manipolazione e l’interrogazione dell’ontologia.<br />
La separazione evidenziata permette <strong>di</strong> capire che è stata realizzata un<br />
sud<strong>di</strong>visione della complessità dell’intera applicazione, nel senso che<br />
eventuali cambiamenti nel dominio<br />
comportano altrettanti cambiamenti del<br />
modello<br />
ontologico, e tutto ciò può essere realizzato lasciando inalterata la<br />
logica dell’applicazione. In particolare possono si possono prevedere<br />
cmabiamenti<br />
• che, introducendo concetti nuovi nel modello ontologico, richiedono<br />
<strong>di</strong> mo<strong>di</strong>ficare le operazioni effettuate dal query-engine ma che<br />
tuttavia non impattano sul livello <strong>di</strong> API definito.<br />
• che mo<strong>di</strong>ficano sia l’ontologia sia il livello <strong>di</strong> API proprio per<br />
estendere le funzionalità che il middleware offre alle applicazioni.<br />
4.3.2 – Presentazione dei Risultati<br />
L’applicazione realizza gli scenari operativi che sono stati introdotti nei<br />
paragrafi precedenti.<br />
La prima parte della demo realizza i primi due scenari, cioè calcolo delle<br />
<strong>di</strong>stributionList, contributorList ed userList e pubblicazione del Flight<br />
Object nelle particolari con<strong>di</strong>zioni mostrate nella figura 4.11.<br />
143
Figura 4.11 - Scenario Operativo 2<br />
Ci sono<br />
quattro sistemi a ciascuno dei quali sono associate un area <strong>di</strong><br />
interesse ed un area <strong>di</strong> responsabilità. Ci sono poi due voli,<br />
i cui dati sono<br />
tenuti nei<br />
corrispondenti Flight Object. Siamo a Creatione Time, il Manager<br />
dopo aver costruito l’oggetto Flight Object ha sia la necessità <strong>di</strong> <strong>di</strong>stribuirlo<br />
ai<br />
sistemi interessati, sia la necessità <strong>di</strong> determinare per quel Flight Object i<br />
ruoli che possono essere assunti<br />
sono mostrati sinteticamente<br />
nella seguente figura.<br />
dai <strong>di</strong>versi sistemi. Le fasi <strong>di</strong><br />
funzionamento della demo e il relativo output in riferimento al solo volo 2<br />
144
Figura 4.12 - Output Scenario 1<br />
Il sistema manager accede al cluster TrajectoryCluster del Flight Object in<br />
questione per prelevarne il dato Trajectory. Utilizzando le API definite per<br />
il calcolo della <strong>di</strong>stributionList e della contributorList messe a <strong>di</strong>sposizione<br />
dallo strato semantico, richiama le funzionalità del Query Engine al quale<br />
passa come parametro il dato Trajectory. Il risultato delle varie interazioni<br />
mostrate in figura è appunto l’ottenimento della lista dei sistemi interessati<br />
al Flight Object e l’attribuzione <strong>di</strong> uno specifico ruolo ad ogni sistema in<br />
essa contenuto.<br />
La<br />
seconda parte della demo realizza il terzo scenario, cioè l’in<strong>di</strong>viduazione<br />
della lista dei cluster correlati, la realizzazione delle mo<strong>di</strong>fiche conseguenti<br />
e la ri-pubblicazione del Flight Object.<br />
145
Figura 4.13 - Scenario Operativo 2<br />
Come evidenziato nel paragrafo su ICOG, le informazioni contenute nei<br />
Cluster possono essere correlate in varia maniera. Nella figura 4.13, è<br />
mostrato il caso <strong>di</strong> una particolare istanza <strong>di</strong> Flight Object ( Flight Object<br />
con id “foid1” ) in cui sono presenti duplicazioni <strong>di</strong> dati. In particolare tali<br />
duplicazioni riguardano:<br />
• arcid: tale dato è duplicato sia in AirCraftCluster, sia in<br />
FlightKeyCluster<br />
che FlightPlanDataCluster;<br />
• adep: tale dato è duplicato sia in FlightKeyCluster, sia in<br />
FlightPlanDataCluster che in ScriptCluster;<br />
• ades: tale dato è duplicato sia in FlightKeyCluster, sia in<br />
FlightPlanDataCluster che in ScriptCluster;<br />
All’interno <strong>di</strong> tale Flight Object è presente anche un altro tipo <strong>di</strong><br />
<strong>di</strong>pendenza, in particolare è presente una relazione “uses” tra<br />
146
FlightIdentificationCluster e FlightKeyCluster, che come abbiamo spiegato<br />
nel paragrafo precedente sta a rappresentare la <strong>di</strong>pendenza semantica<br />
secondo cui i dati contenuti in FlightIdentificationCluster sono ottenuti per<br />
fusione od elaborazione dei dati contenuti in FlightKeyCluster.<br />
Le fasi <strong>di</strong> funzionamento della demo ed il relativo output sono mostrati<br />
sinteticamente nella seguente figura.<br />
Figura 4.14 - Output Scenario 2<br />
L’even to che si verifica è l’arrivo <strong>di</strong> un oggetto aggiornato <strong>di</strong> tipo<br />
FlightKeyCluster ( FlightKeyCluster con id “flightkeyclusterid1” ). Il<br />
sistema manager utilizzando le opportune API messe<br />
a <strong>di</strong>sposizione dallo<br />
strato<br />
semantico, richiama le funzionalità del Query Engine al quale passa<br />
come parametro il FlightKeyCluster in oggetto. Il<br />
risultato delle varie<br />
interazioni mostrate in figura è appunto l’ottenimento della lista dei Cluster<br />
appartenenti allo stesso Flight Object che risultano essere correlati.<br />
147
Conclusioni e Sviluppi Futuri<br />
Il presente lavoro <strong>di</strong> <strong>tesi</strong> ha <strong>di</strong>mostrato che l’ integrazione <strong>di</strong> uno schema<br />
concettuale dei dati, nel nostro caso un’ontologia OWL, all’interno <strong>di</strong> un<br />
sistema ULS come SWIM-SUIT, in particolare all’interno <strong>di</strong> uno dei suoi<br />
domini come quello piani <strong>di</strong> volo, permette <strong>di</strong> ottenere vantaggi per quanto<br />
riguarda l’organizzazione e l’interpretazione delle informazioni e <strong>di</strong><br />
estendere le funzionalità del sistema in termini <strong>di</strong> gestione e manipolazione<br />
automatica delle informazioni, trasferimento dei dati e classificazione delle<br />
responsabilità <strong>di</strong> ogni sistema in base non alle funzionalità che il sistema<br />
svolge, ma piuttosto, al contenuto semantico proprio delle informazioni che<br />
il sistema si trova a dover gestire.<br />
In particolare il focus dell’intero lavoro è stato quello <strong>di</strong> trattare dal punto <strong>di</strong><br />
vista semantico, unicamente informazioni che riguardano i piani <strong>di</strong> volo<br />
come la traiettoria, il partizionamento dello spazio aereo, informazioni<br />
riguardanti gli aerodromi e i velivoli. In questo contesto, uno dei possibili<br />
sviluppi<br />
futuri <strong>di</strong> questo lavoro potrebbe essere <strong>di</strong> modellare semantico <strong>di</strong><br />
altri aspetti che caratterizzano la gestione dei piani <strong>di</strong> volo come ad esempio<br />
aspetti istituzionali o aspetti che riguardano la sicurezza. Altro aspetto<br />
sicuramente molto interessante, che potrebbe essere affrontato in futuro,<br />
sarebbe quello <strong>di</strong> estendere il trattamento semantico delle informazioni<br />
anche agli altri domini dell’ATM. In tal senso ci si troverebbe ad affrontare<br />
problemi <strong>di</strong> interoperabilità <strong>di</strong> sistemi che sono nati per gestire dati<br />
strutturalmente e semanticamente <strong>di</strong>fferenti, problemi <strong>di</strong> duplicazioni<br />
<strong>di</strong> dati<br />
e quin<strong>di</strong> problematiche <strong>di</strong> consistenza e coerenza ed ancora molto<br />
148
probabilmente problematiche<br />
riguardo l’integrazione e la fusione <strong>di</strong><br />
informazioni eterogenee.<br />
149
Riferimenti<br />
[1] Ultra Large Scale System. The software challenge on the future.<br />
[2] Introduzione a Corba. Stefano Russo, Carlo Savy, Domenico<br />
Cotroneo, Antonio Sergio.<br />
[3] Prima relazione sull’applicazione della normativa sul Cielo<br />
unico europeo: bilancio e prospettive. Bruxelles, 20.12.2007<br />
[4] www.enav.it<br />
[5] Cielo unico europeo <strong>II</strong>: verso un trasporto aereo più sostenibile<br />
ed efficiente. Bruxelles, 25.6.2008<br />
[6] Information Content and Service Requiriments. Delivery n°<br />
D1.5.1<br />
[7] ICOG IOP Interface Specification– Final Report<br />
[8] Wikipe<strong>di</strong>a<br />
[9] Applications of Ontoilogies in Software Engineering<br />
[10] Introduzione al Semantic Web. Antonella Dorati e Stefania<br />
Costantini<br />
[11] www.mokabyte.it<br />
[12] Semantic Web - Scientific American, Maggio 2001. T. Berners-<br />
Lee, J. Hendler, O. Lassila<br />
[13] AA. VV. Uniform Resource Identifiers (URI): Generic Syntax<br />
W3C: URL: http://www.ietf.org/rfc/rfc2396.txt<br />
[14] http://www.w3c.org<br />
[15] Resource Description Framework (RDF), Model and Syntax<br />
Specification W3C Recommendation; O. Lassila, R. R. Swick,<br />
150
W3C: URL: http://www.w3.org/TR/REC-rdf-syntax/<br />
[16] RDF Schema 16 Aprile 2007. Antonio Picariello<br />
[17] OWL Ontology Web Language. Antonio Picariello<br />
[18] http://www.w3c.org/2004/OWL - sezione del sito W3C de<strong>di</strong>cata<br />
ad OWL<br />
[19] http://protege.stanford.edu/<br />
[20] http://www.w3.org/TR/2008/REC-rdf-sparql-query-20080115/<br />
[21] http://pellet.owldl.com<br />
[22] Pellet: An OWL DL Reasoner. Bijan Parsia and Evren Sirin<br />
[23] Pellet: A Pratical OWL DL Reasoner. Evren Sirin, Bijan Parsia,<br />
Bernardo Cuenca Grau, A<strong>di</strong>tja Kalyanpur, Yarden Katz.<br />
[24] http://www.hpl.hp.com/semweb/ – home page del Semantic Web<br />
Research Group <strong>di</strong> HP Labs<br />
[25] Ontologie OWL. Nicola Capuano<br />
[26] http://jena.sourceforge.net/ – il sito <strong>di</strong> riferimento <strong>di</strong> Jena<br />
ospitato da SourceForge<br />
[27] http://java.sun.com/products/jms/<br />
[28] Java EE 5 Tutorial<br />
[29] ICOG IOP Interface Specification– Final Report<br />
151