Le ontologie formali e il loro ruolo nell'ICT
Cosi si intitola l’articolo scritto da Alessandro Di bella, BPE Srl e Nicola Guarino LOA-CNR che descrive con estrema chiarezza il possibile (auspicabile?) ruolo delle ontologie formali nell’ICT. Approfitto di questo articolo per scrivere alcune considerazioni su questo affascinante dominio applicativo che in questi ultimi anni grazie ad esponenti come Nicola Guarino sempre più viene applicato nel campo della scienza dell’informaizione, estendendo la concettualizzazione puramente filosofica che ha visto nascere questo termine. Prima di riportare e commentare alcuni passi dell’articolo, mi preme far chiarezza sulla reale identità scientifica che ricopre oggi l’Ontologia all’interno delle discipline puramente informatiche. Una Ontologia dal punto di vista letterale può essere descritta come un catalogo dei tipi di una entità di cui viene assunta la sua esistenza in un dominio D in prospettiva del suo accesso da parte di un attore che utilizzi un linguaggio L per accedere o comunicare con D .
A seguito di questa affermazione l’ontologia è sinonimo di comunicazione. Essa, infatti, permette di definire il significato dei concetti che fanno parte di un determinato dominio, stabilisce le relazioni intercorrenti tra i termini stessi, definisce quindi la semantica che costituisce l’”humus” del sistema e la garanzia della persistenza delle informazioni trattate. In particolare permette la formalizzazione di un modello di mondo (o parte di esso) che include concetti e relazioni aggregate in gruppi di attori semplici (subiscono il sistema) e/o attori esperti (gestiscono il sistema). In particolare una Ontologia Formale viene meglio specificata data una collocazione di nomi per concetti e tipi di relazioni organizzata in ordine di classi e sotto classi di tipi.
L’articolo introduce il concetto di Ontologia e i suoi possibili scenari di utilizzo nell’ICT, in particolare si scrive:
“Relativamente all’ingegneria della conoscenza, un’ontologia è un artefatto risultato di un’attività di modellazione concettuale che ha dei precisi obiettivi ingegneristici. Il caso più semplice è quello di un insieme limitato di termini classificati secondo vari criteri: si parla allora di una gerarchia o di una rete di concetti, cui corrispondono proprietà o relazioni.”
Si fa riferimento “esplicito” all’ingegneria della conoscenza, in quanto come accennato in precedenza il termine Ontologia ha molte radici diverse e nei secoli (si è vero, si parla di secoli) ha avuto applicazioni anche nella matematica e semiotica, fino ad oggi! Una lettura non attenta di quanto appena scritto può far passare come Ontologia una normale formalizzaizone di termini e concetti all’interno di una più ampia opera di classificazione ma non è cosi, persino la tassonomia che è la forma più semplice di una Ontologia è un termine che non riesce ad espremire neahce un decimo di ciò che si può esprimere applicando tutte le regole di modellaione di una Ontologia.
Un esempio molto semplice viene sapientemente descritto all’interno dell’articolo:
“Immaginiamo, per esempio, di dover compilare la lista degli animali di uno zoo. I termini del nostro vocabolario potrebebro essere: carnivoro, erbivoro, felino, rettile, leone, cobra, tigre e coccodrillo. Una classificazione potrebbe essere quella di raggruppare gli animali in carnivori/erbivori, felini/rettili,ecc... Questa rappresenta una tassonomia, che è la forma più semplice che un’Ontologia può assumere. Tali semplici strutture non sono però sempre sufficienti a riflettere la compelssità di un modello concettuale aderente alla realtà. Se volessimo per esempio impedire la classificazione di un leone sia sotto la voce felino che rettile non saremmo in grado di farlo con un modello cosi elementare.”
Penso che adesso forse sia chiaro che una definizione ontologica viene utilizzata per condividere visioni formalizzate della realtà o un determinato domnio applicativo e non catalogare unidimensionalmente termini e concetti attraverso l’utilizzo di vocabolari. Non è che sia sbagliato fare questo ma di certo non può essere ricondotto ad una Ontologia, se condividessimo questa conoscenza non sapremo mai se “un Leone non è un felino” in quanto non esistereppe un predicato tale per cui interrogando la classificaizone si sia in grado di ricavarne il giusto significato! Vorrei aggiungere che anche utilizzando strutture dati xml-based non avremmo una potenza espressiva tale per cui definire in maniera univoca assiomi del tipo: “Nessun felino è un rettile” che ci permetterebbe di evitare la classificazione di leone sotto la voce rettile.
Qual’è la dimensione di ontologia che può essere applicata ad un calcolatore per far si che possa essere processata in maniera effciente? All’interno dell’articolo ci viene data una risposta:
“Le ontologie possono essere classificate secondo due dimensioni:
- Ricchezza espressiva (livello di dettaglio)
- Generalità (grado di dipendenza rispetto a un particolare problema o punto di vista)
Nell’ambito della prima dimensione, un’ontologia molto dettagliata riesce meglio a specificare il significato inteso di un certo vocabolario, ma paga in generale il prezzo di una maggiore complessità computazionale (dovuto al linguaggio più espressivo), che la rende meno utilizzabile per applicazioni che hanno stringenti vincoli di effcienza. D’altra parte, un’Ontologia più “grossolana”, tagliata su misura sulla base delle interrogazioni che realmente servono all’interno si una specifica applicazione, può certamente essere più efficiente, ma presuppone che gli utenti di tali interrogazioni condividano già il significato del vocabolario utilizzato.” Questo spiega come moltissime volte l’utente che si interfaccia in un sistema informativo che fa uso di ontologie generali non può condividere la propria Ontologia am deve “adattarsi” nell’utilizzo di quella proposta dal sistema. Caso assia comune questo, ad esempio quando ci interfacciamo con grandi sistemi della Pubblica Amministrazione o con grandi realtà per il commercio elettronico (eBay??) possiamo non condividere la stessa visione della realtà o più comunemente dell’Ontologia che utilizza ma siamo in un certo qual modo ad adattare la nostra visione delle cose a quella proposta dal sistema informativo. Vale anche qui la stessa condizione per la quale più un sistema automatizzato richiede minimo sforze da parte dell’utente per il suo utulizzo più quest’ultimo è complesso!
A che cosa serve l’Ontologia?
Sarei contento se questa domanda vi circolasse in testa dall’inizio della lettura dell’articolo, cosi da rimanere critici leggendo le risposte che sto per proporvi:
“l’insieme dei dati fattuali del dominio applicativo e dell’Ontologia che li descrive costituisce una base di conoscenza. Essa può essere pensata come una base di dati capace di dedurre informazioni che non sono state esplicitamente inserite.” Questa è l’essenza di una Ontologia: essere in grado di esprimere le cose che non sono state esplicitate, l’Ontologia deve concorrere alla definizione non essa stessa definire!! Ancora un esempio chiarificatore può farci comprendere meglio un possibile utilizzo:
“...Consideriamo un comune database relazionale con le tabelle FELINO, RETTILE, ERBIVORO, CARNIVORO contenente il record leone nella tabella FELINO. All’interrogazione - trova tutti i carnivori - il database non produce nessun risultato. Consideriamo l’Ontologia dello zoo, aggiungiamo l’assioma – tutti i felini sono carnivori – oltre alla classificazione degli animali secondo le famiglie felini o rettili. Alla stessa domanda la base di conoscenza restituirà l’elemento leone perchè, grazie alla capacità di ragionamento deduttiva, il sistema è in grado di ricavare l’informazione che il leone è un carnivoro premesso che tutti i felini sono carnivori e che il leone è un felino.” Spero che il vostro tempo dedicato alla lettura di questo post sia stato ripagato adesso da un esempio tanto semplice quanto potente e che vi abbia fatto capire in modo semplice che cosa è una Ontologia, ma vediamone adesso i possibili scenari di utilizzo.
Oggi, l’informazione tanto più è condivisa tanto più viene valorizzata, in questi anni il concetto di TRUST ha assunto un valore determinante nella riuscita o meno di tantissime applicaizoni o sistemi che fanno uso della gestione della conoscenza. L’informaizone oggi vale se viene accettata, facilmente riutilizzata e condivisa..........beh, stiamo parlando di Ontologia. Forse oggi siamo più vicino a questo concetto, in quanto le applicazioni ne iniziano a farne largo uso ed i sistemi stanno diventando più malneabili, dinamici..realistici!!
L’articolo conclude riassumendo le tecnologie e modelli di business che oggi sono più idonei all’utilizzo di ontologie:
“Electronic Commerce, in quanto si fonda sull’assunzione di interoperabilità, ovvero la capacità dei sistemi etrogenei di inteeragire tra loro;
Enterprise Application Integration, in questi casi le ontologie formali integrate con un ESB (Enterprise Service Bus) offrono la soluzione ideale per la creazione di un modello concettuale su cui costruire le nuove applicazioni, ma anche da utilizzare come formato di scambio per le applicazioni esistenti;
Enterprise Knowledge Management, l’interpretazione di talii dati e la fruibilità delle informazioni da essi derivati, sono elementi essenziali per assicurare un adeguato livello di qualità. Le ontolgoie formali offrono anche in questo caso uno strumento concreto per la semplificaizone e risoluzione del problema;”
Approfitto per fare anche io delle conclusioni, in special modo sulla "confusione" che troppo spesso viene fatta del termine Ontologia e delle sue applicazioni. In particolar modo si pensa che schemi di definizione possano rendere espliciti vincoli, significati e relazioni ma molto spesso si cade nell'ignoranza e nella scarsa capacità di validare o meno una definizione ontologica. Mi rivolgo a quelli a cui ho dovuto spiegare più volte la differenza tra un XML Schema ed una Ontologia. Forse nell'articolo manca un accenno ai linguaggi utilizzati per formare ed interrogare una Ontologia, quindi vi giro qualche link dove poter approfondire.
Linguaggi utilizzati per la definizione e manipolazione di una Ontologia sono oggi molto comuni ed applicati direttamente al WEB, uno tra i più conosciuti è OWL che permette di esprimere affermazioni per una Ontologia e che può essere agilmente introdotto in un Framework per la sua gestione all'interno di applicazioni reali. Quasi tutti i linguaggi si basano su specifiche RDF e possono essere consultabili qui.