18.06.2013 Views

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

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!