8
Un altro vantaggio di Cyc è che l’utente (Cyclist) può creare un proprio mondo,
partendo dai concetti e dalle relazioni predefinite, definendo nuovi termini, insiemi e
regole. L’applicazione costruita riguarda una visita guidata all’interno di un museo.
Dopo avere definito la struttura del museo, è stata creata l’ontologia contenente i
termini e le relazioni tra gli stessi e, successivamente, sono state effettuate delle
domande per testare il funzionamento del motore di inferenza ed analizzare come lo
steso rispondeva.
Il Capitolo 1 è dedicato alla definizione del termine “ontologia” e a tutti i passi che
sono necessari per crearla. Sono descritti, inoltre, alcuni esempi di basi di conoscenza
costruite. Il Capitolo 2 studia l’ontologia Cyc: contiene la descrizione di alcuni termini,
insiemi e predicati predefiniti, completati da alcuni esempi per chiarire il loro utilizzo.
E’ descritto il funzionamento del motore di inferenza e le euristiche adottate per
rispondere alle domande. Infine sono rappresentati gli eventi, le microteorie, gli errori e
l’approccio da utilizzare per scrivere efficientemente una base di conoscenza.
Il Capitolo 3 analizza i metodi utilizzati per effettuare il trasferimento e l’integrazione
dei termini da una ontologia sorgente ad una destinazione, fornendo degli esempi di
basi di conoscenza i cui concetti sono stati trasferiti o integrati in Cyc.
Nel Capitolo 4, partendo dalla base di conoscenza di Cyc, è illustrata la costruzione
dell’ontologia relativa all’applicazione chiamata “Descrizione di scene museali in
Cyc”, una visita guidata all’interno di un museo virtuale. Vengono descritti tutti i
termini, gli insiemi e le relazioni creati nell’ontologia, oltre a quelli predefiniti ed
utilizzati per la costruzione. Infine sono analizzati alcuni esempi di domanda effettuata
in Cyc con la corrispondente risposta ottenuta e la giustificazione alla stessa.
L’appendice descrive l’interfaccia utilizzata per “navigare” in Cyc, con la
rappresentazione delle operazioni che si devono eseguire per cercare termini, inserire
nuovi concetti, effettuare domande e creare un proprio mondo. In definitiva la
costruzione di una ontologia si presta ad essere applicata in diversi contesti
dell’Ingegneria Elettronica. Ad esempio, può essere utilizzata come supporto software
per la comunicazione tra due componenti elettronici che devono scambiarsi dati, oppure
come un database che raccolga tutte le informazioni sui circuiti appartenenti ad un chip
e, attraverso il meccanismo di deduzione di Cyc, fornisca dei suggerimenti per
migliorare la resa dei circuiti.
9
Capitolo 1: Ontologie: principi, metodi ed applicazioni
Le persone, le organizzazioni ed i sistemi software hanno la necessità di comunicare tra
loro. A seconda del contesto, però, ognuno può lavorare secondo un proprio punto di
vista ed usare differenti gerghi con diversi concetti, strutture e metodi.
La mancanza di un linguaggio “comune” condiviso comporta una comunicazione non
buona, con conseguente difficoltà nell’identificare le richieste, cioè definire le
specifiche di un sistema. Per risolvere il problema è necessario ridurre, o ancora meglio
eliminare, le confusioni terminologiche e concettuali, in modo da permettere:
1.1. Definizione ed uso di ontologie
Nella letteratura sono molte le definizioni che si danno al termine “ontologia”, ma,
ancora, non si è ancora trovato un accordo per il suo significato [6].
Un tentativo di formalizzare la nozione di ontologia è presentato in [107].
Ad esempio, come si evince dal documento [1], il termine è usato per riferirsi ad
“una conoscenza condivisa da alcuni domini di interesse, che può essere adoperata
come una struttura concettuale unificante, per risolvere i problemi”.
Una ontologia contiene le conoscenze dei diversi punti di vista del mondo rispetto ad un
dato dominio, rappresentate come una concettualizzazione, ossia un insieme di
concetti, le loro definizioni e le loro inter-relazioni.
Pertanto, una ontologia, può essere anche definita come
“una rappresentazione esplicita di una concettualizzazione [4], o di una sua parte”,
cioè una descrizione dei concetti e delle relazioni che possono esistere per un agente o
una comunità di agenti.
ξ la comunicazione tra le persone con differenti necessità e punti di vista;
ξ l’inter-operabilità tra sistemi;
ξ il riutilizzo delle conoscenze condivise nei sistemi software;
ξ l’utilizzo di software più affidabili, basati su controlli consistenti;
ξ l’identificazione delle richieste e la definizione delle specifiche dei sistemi,
molto importanti quando vi sono diversi gruppi che usano differenti
terminologie nello stesso dominio, o in domini multipli.
10
Una ontologia esplicita contiene un vocabolario di termini ed alcune indicazioni dei loro
significati (cioè le definizioni), il cui grado di formalità può essere:
ξ altamente informale: espresso “debolmente” nel linguaggio naturale (NL)
ξ semi-informale: espresso in una forma strutturata di NL, ha il vantaggio di
aumentare la chiarezza e ridurre l’ambiguità dei termini. L’ontologia
Enterprise (Enterprise Ontology), è una versione testuale contenente un
insieme di termini e definizioni importanti per iniziative di affari [5] e
[16].
ξ semi-formale: espresso in un linguaggio artificiale definito formalmente;
ad esempio la versione Ontolingua di Enterprise Ontology.
ξ rigorosamente formale: espresso con termini definiti con semantiche
formali, teoremi e prove di tali proprietà. Ad esempio TOVE, descritto in
[36], sviluppa un insieme di ontologie integrate per modellare iniziative
pubbliche e commerciali.
Un’altra definizione del termine “ontologia” è ricavata dal SRKB (Shared Re-usable
Knowledge Bases) [1]:
“Le ontologie sono accordi sulle concettualizzazioni condivise, che includono strutture
concettuali per modellare i domini di conoscenza, i protocolli content-specific per le
comunicazioni tra agenti inter-operanti e le rappresentazioni di particolari teorie di
domini. Nel contesto di condivisione della conoscenza, le ontologie sono specificate
nella forma di definizioni di vocabolari. Un caso molto semplice sarebbe una gerarchia
tipo, che specifica le classi e le loro relazioni. Gli schemi di database relazionale
servono anche come ontologie per specificare le relazioni che possono esistere in
alcuni database condivisi ed i vincoli di integrità che devono essere mantenuti tra
loro”.
Un’ultima definizione di ontologia è formulata da John Sowa ed è manifestamente
influenzata da Leibniz, come si evince da [183]:
“La materia dell’ontologia è lo studio delle categorie di cose che esistono o possono
esistere in alcuni domini. Il prodotto di tali studi, chiamato ontologia, è un catalogo dei
tipi di cose che si presuppone esistano nel dominio di interesse D, dalla prospettiva di
una persona che usa un linguaggio L, per parlare di qualcosa che riguarda D. I tipi
nell’ontologia rappresentano i predicati, i sensi delle parole, o i concetti ed i tipi di
relazione del linguaggio L, quando è usato per discutere argomenti del dominio D”.
11
Le parole nel linguaggio L hanno almeno un significato, costituito dalle intuizioni,
informali e approssimate, che si sono lette o ascoltate in un determinato contesto
culturale: se questo, nell’ontologia, viene violato, le informazioni saranno
probabilmente incomprensibili.
Nella letteratura sono nati nuovi concetti come “integrazione di ontologie”,
“compatibilità di ontologie”, “equivalenza di ontologie”, “unificazione di ontologie” e
“ontologia di riferimento”, le cui definizioni sono ancora argomento di dibattito.
Le ontologie che vengono costruite devono essere dei riferimenti a modelli più generali,
per poter rappresentare nozioni come parte, connessione, localizzazione, causa, forma,
etc. Una definizione relativa a tre livelli di integrazione, trattata dal documento di Sowa
[183], è la seguente:
“L’integrazione è il processo per trovare elementi comuni tra due diverse ontologie A e
B, ottenendone una terza C, che faciliti l’inter-operabilità tra i sistemi di computer
basati sulle ontologie originarie. C può rimpiazzare A o B, o può essere adoperata
soltanto come intermediario tra un sistema basato su A ed uno basato su B. A seconda
della quantità di cambiamenti necessari per ottenere C da A e B, i livelli di
integrazione possono essere distinti in:
a) allineamento, è la forma più “debole” di integrazione e richiede cambiamenti
minimi. E’ utile per la classificazione ed il recupero delle informazioni;
b) compatibilità parziale, richiede più cambiamenti per supportare maggiore inter-
operabilità;
c) unificazione ( o compatibilità totale), può richiedere grandi cambiamenti oppure
maggiore riorganizzazione di A e B, ma si ottiene la più completa inter-
operabilità.”
Alcune descrizioni della struttura e degli scopi delle ontologie, si trovano nei documenti
[6], [7], [7] e [9].
Lo spazio di utilizzo delle ontologie può essere suddiviso nelle seguenti categorie, come
illustrato nella Figura 1:
ξ Comunicazione tra persone ed organizzazioni;
ξ Inter-operabilità tra i sistemi;
ξ Ingegneria dei sistemi.
12
Spazio di utilizzo delle ontologie
Figura 1. Usi delle ontologie
Il problema della comunicazione è il motivo principale per cui si costruiscono e si usano
le ontologie.
Molte applicazioni di ontologie presentano il problema dell’inter-operabilità, la
necessità, da parte di diversi utenti, di scambiare, condividere e riutilizzare dati.
Queste ontologie possono essere usate come supporto per le traduzioni tra diversi
linguaggi e rappresentazioni. Nel progetto Process Interchange Format (PIF), come si
evince dal documento [12], è stato utilizzato un approccio basato su Inter-Lingua.
L’idea alla base di questa metodologia è semplice: invece di progettare traduttori unici
per ogni possibile coppia di linguaggi, ossia O(n
2
) traduttori per n diverse ontologie
(Figura 2a), utilizzando le ontologie stesse come una inter-lingua, si riducono il
numero di traduttori ad O(n), dato che necessitano solo quelli dall’ontologia nativa a
quella di interscambio (Figura 2b).
COMUNICAZIONE
tra persone ed
organizzazioni
INTER-OPERABILITA’
tra i sistemi
INGEGNERIA DEI SISTEMI
Componenti riutilizzabili
Assegnabilità
Specificazione
13
(a) (b)
Figura 2. (a) Traduzione da un linguaggio Li ad un linguaggio Lj con un unico
traduttore per coppia. (b) Traduzione da un linguaggio Li ad un linguaggio Lj
utilizzando una inter-lingua inserita tra Li ed il traduttore dall’ontologia nativa
e tra il traduttore nell’ontologia di interscambio e Lj.
Una delle applicazioni di ontologie nell’ingegneria dei sistemi riguarda il progetto e lo
sviluppo dei sistemi software. Nel progetto IBM Business System Development
Method (BSDM), descritto da [10], è stata sviluppata ed utilizzata una ontologia
dell'organizzazione come base per progettare le tecniche informative nei sistemi di
affari. Nel documento [11], invece, è presentato il progetto CommonKADS
Conceptual Modelling Language (CML), usato per la costruzione di ontologie di
assistenza per le specificazioni di sistemi basati sulla conoscenza.
Le ontologie devono supportare anche la riutilizzabilità, così da poter importare ed
esportare i moduli attraverso diversi sistemi software per adattarli alle diverse classi di
problemi ed ambienti.
Un esempio è la libreria che è stata costruita al Knowledge Systems Laboratory,
usando il loro Ontology Server on line [9].
Queste ontologie devono essere estendibili, permettendo l’inserimento di nuove classi di
vincoli e le specializzazioni di concetti per un particolare problema.
Linguaggio
L1
Linguaggio
L2
Linguaggio
L3
Linguaggio
L4
Linguaggio
L1
Linguaggio
L2
Linguaggio
L3
Linguaggio
L4
Interlingua
14
Nei documenti [12], [13], [14] e [29] sono presentati degli studi sull'estendibilità per il
progetto PIF (Process Interchange Format), per i progetti Process Handbook e per il
KRSL Plan Ontology, rispettivamente.
1.1.1. Esempi di applicazioni di ontologie
I ricercatori che lavorano in campi diversi, ma attinenti, non possono condividere
facilmente i risultati ottenuti, dato che ognuno ha una propria prospettiva ed usa diversi
termini per descrivere le stesse idee.
La risoluzione a questo problema consiste nell’identificare le idee comuni nei vari
campi ed i termini usati, a loro corrispondenti, stabilendo il significato dei concetti e
creando ogni esatto accoppiamento idea-termine.
E’ necessario, quindi, creare una lingua, che traduca i diversi punti di vista dei rispettivi
campi, in modo da aumentare la conoscenza in ognuno di essi, permettendo la
riutilizzabilità dei risultati ottenuti negli studi eseguiti.
ξ Software per la produzione di semiconduttori
Tali software includono un sistema di tracciamento WIP (WIP tracking system), che
monitorizza il luogo e lo stato dei prodotti, ed un pacchetto di simulazione della
linea di produzione, che deve ricevere in ingresso la descrizione di un modello del
flusso del prodotto nella fabbrica. Il problema nasce quando vengono rilasciate
nuove versioni di simulatori e quindi il modello deve essere convertito in un nuovo
formato. La soluzione consiste nell'automatizzare il processo di conversione del
modello quando vengono introdotti dei software esterni.
I tre domini di interesse correlati sono il WIP tracking, la simulazione del flusso del
prodotto ed il processo di fabbricazione del semiconduttore. L’approccio è quello di
creare una struttura concettuale “unificante” che identifichi, definisca e dia un
nome a tutti i concetti più importanti nel dominio “intersezione” dei tre.
I modelli sono espressi in termini di questa struttura e memorizzati nel database
relazionale ORACLE. Un traduttore automatico converte i modelli nel formato
richiesto dal software di simulazione, il quale deve essere sostituito, manualmente,
se il software cambia. In questo modo, il produttore della fabbricazione del
semiconduttore può ignorare i cambiamenti del software fornito esternamente,
migliorando la fedeltà del modello.
15
ξ Assistenza delle operazioni dei veicoli spaziali
Sono stati sviluppati indipendentemente diversi sistemi basati sulla conoscenza per
assistere le operazioni dei veicoli spaziali. Ogni sistema utilizza un approccio per
strutturare e rappresentare i concetti più importanti.
Integrando questi sistemi ognuno di essi può far uso della conoscenza di ciascun
altro realizzando l'inter-operabilità.
Il problema fondamentale riguarda la differenza negli approcci da parte dei sistemi.
La soluzione è quella di utilizzare un approccio basato su agenti federati, per
effettuare la condivisione di conoscenze. Nel sistema globale chiamato ATOS
(Advanced Technology Operations Systems), descritto da [2], [3], sono stati
identificati e definiti i concetti più importanti e le relazioni tra essi.
Ogni agente, in pratica, funge da intermediario tra i sistemi individuali e la struttura
concettuale “unificante” che deve funzionare come uno standard a cui tutti gli
agenti devono conformarsi.
In ATOS, la struttura è rappresentata in un linguaggio formale, cosa che facilita lo
sviluppo automatico dei traduttori ed assicura l’adattabilità con lo standard.
1.2. Metodologia per la costruzione di ontologie
Nel documento [15] sono presentati alcuni lavori riguardanti il problema della creazione
di ontologie. Non esistono metodologie standard per costruire ontologie ma, per crearne
di efficienti, è possibile applicare i seguenti accorgimenti:
ξ identificare lo scopo e le intenzioni;
ξ creare l’ontologia;
ξ effettuare la valutazione;
ξ inserire la documentazione;
ξ inserire le istruzioni per ogni fase.
a) Identificare lo scopo e le intenzioni: serve a chiarire perché è stata costruita
l’ontologia e per cosa si intende utilizzarla.
b) La creazione dell’ontologia necessita di diversi passi.
Inizialmente le operazioni da eseguire sono:
16
o l’identificazione dei concetti chiave e delle relazioni nel dominio di
interesse;
o la produzione di definizioni precise e non ambigue per i concetti e le
relazioni;
o l’identificazione dei termini per riferirsi a tali concetti e relazioni.
Dopo questo primo passo, occorre rappresentare esplicitamente (codificare), le
concettualizzazioni dello stadio precedente in un linguaggio formale, quindi:
o viene utilizzata una “meta-ontologia”, cioè l’ontologia di termini che saranno
adoperati per esprimere quella principale;
o si sceglie un linguaggio di rappresentazione, capace di supportare la “meta-
ontologia”;
o si scrive il codice.
Nei documenti [17], [18] sono presentati degli studi relativi alla scelta del linguaggio.
La creazione dell’ontologia e la sua codifica sono spesso unificate in un passo unico.
c) Valutazione dell’ontologia: Gòmez-Pérez, nel documento [19], forniscono
una buona definizione di “valutazione” nel contesto di condivisione della
conoscenza:
“per ottenere un giudizio tecnico delle ontologie, i loro ambienti software associati,
e la documentazione rispetto ad una struttura di riferimento … la struttura di
riferimento può essere una specificazione di richieste, delle domande di
competenza, e/o il mondo reale”.
La valutazione di ontologie, che potrebbero fornire una metodologia comprensiva
per la costruzione di conoscenze, trattata in [20], [21] e [22].
17
d) Documentazione delle ontologie: permette agli utenti la comprensione delle
ontologie e delle basi di conoscenza. Uno dei problemi più frequenti è l’inadeguata
documentazione. Una soluzione a questo problema, come si evince nel lavoro di
Skuce [16], è quella di documentare i concetti principali definiti nell’ontologia e le
primitive usate per esprimere le definizioni.
e) Istruzioni iniziali per progettare ontologie: rappresentano le tecniche, i metodi ed
i principi per ognuno degli stadi precedenti e l’indicazione delle relazioni che
intercorrono tra loro.
Nel documento [23] è descritto il primo tentativo per unificare le esperienze ottenute
nello sviluppo di ontologie.
Due caratteristiche che deve possedere una ontologia sono:
ξ minimizzare le ambiguità e fornire esempi per aiutare il lettore a capire le
definizioni.
ξ essere consistente internamente ed essere progettata per prevedere l’uso di
usi dei vocabolari condivisi, in modo che ogni utente possa definire nuovi
termini per usi speciali basandosi su quelli esistenti, e non richiedere la
revisione dei concetti già creati.
Le metodologie per creare le ontologie e permettere la loro estendibilità sono trattate in
[24] e [25].
18
1.2.1. Creare l’ontologia: identificazione e definizione dei
concetti
Per creare l’ontologia, sono necessarie quattro fasi:
ξ produzione di definizioni;
ξ studio delle definizioni;
ξ revisione finale;
ξ sviluppo di una ‘meta-ontologia’.
1.2.1.1. Produzione di definizioni
La produzione di definizioni, detta anche scoping, è costituita da due sessioni: la prima
è detta di brain-storming e produce tutti i termini e le frasi potenzialmente rilevanti.
La seconda è detta raggruppamento (grouping) e raccoglie tutti i termini in
sottogruppi, creando dei riferimenti semantici tra gli stessi, cioè dei collegamenti tra i
termini che si trovano in diverse aree.
1.2.1.2. Studio delle definizioni
In questa sessione vengono studiati attentamente i concetti e le loro relazioni definiti nel
passo precedente. Per creare i termini, si procede con una strategia “middle-out”, che
definisce i concetti più importanti in ogni area di lavoro, prima di riposizionare quelli
più astratti e più specifici all'interno di una zona. Il vantaggio di questa metodologia,
come si evince dai lavori [26] e [27], riguarda la facilità nei collegamenti tra i termini di
aree differenti.
Ad esempio, “dog” (cane) è un termine di base, “mammal” (mammifero) è una
generalizzazione, e “cocker spaniel” è una specializzazione.
Nell'Enterprise Ontology, alcuni concetti base sono “sale” (vendita), “activity”
(attività) e “organisational-unit” (unità organizzativa).
BSDM, il cui progetto è trattato nel documento [10], è stato sviluppato dalla IBM ed
utilizza l’approccio “middle-out”.
19
Quando un termine ha molti significati possibili, si può procedere seguendo diverse
alternative:
ξ sospendere l'uso del termine, dato che è troppo ambiguo;
ξ chiarire l'idea attentamente, definendo ogni concetto se possibile, oppure
solo i significati del termine, consultando dizionari, raccolte, ed altri glossari
tecnici;
ξ fornire alle definizioni senza senso delle etichette;
ξ determinare se i concetti sono abbastanza importanti per essere contenuti
nell'ontologia;
ξ scegliere un termine per il concetto, evitando il termine ambiguo originario.
Ad esempio, considerando il concetto ‘doing something’ (fare qualcosa), è possibile
definire delle attività, dei processi e delle procedure come:
ξ una categoria di qualcosa da fare (per esempio attività fisica);
ξ un tipo specifico di cose da fare (per esempio andare da A a B);
ξ un tipo più specifico di cose da fare (per esempio andare da York a Londra);
ξ una specificazione generale che spieghi come eseguire qualcosa, cioè un
insieme di istruzioni, per esempio:
o andare alla stazione a York;
o prendere il treno per Londra;
o andare alla destinazione locale a Londra;
ξ qualcosa effettivamente eseguito.
Nell'Enterprise Ontology, gli ultimi due concetti sono stati effettivamente definiti e
chiamati Activity Specification (Specificazione di una attività) e Activity (Attività),
rispettivamente.
20
Altri accorgimenti da seguire sono:
ξ produrre definizioni in NL quanto più precise possibili;
ξ assicurare la consistenza con i termini già in uso;
ξ indicare le relazioni con altri termini simili definiti;
ξ evitare la circolarità nella definizione dei termini;
ξ aggiungere informazioni essenziali per capire la definizione, utilizzando
note integrative;
ξ fare esempi dove sembra appropriato.
1.2.1.3. Revisione finale
Non sempre è necessario revisionare, dato che le decisioni importanti sono effettuate
“rovesciando” le precedenti e tenendo traccia dei cambiamenti attraverso delle note
storiche.
1.2.1.4. Sviluppo di una meta-ontologia
Dopo la revisione si crea una “meta-ontologia”, usando definizioni in NL.
Ad esempio, i termini principali definiti nell'Enterprise Meta-Ontology sono Entity
(Entità), Relationship (Relazione), Role (Regola), State of Affairs (Stato degli Affari)
e Actor (Attore) e servono come base per il codice formale.