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