# Ontologia (informatica)

In informatica, un'ontologia è una rappresentazione formale, condivisa ed esplicita di una concettualizzazione di un dominio di interesse. Più nel dettaglio, si tratta di una teoria assiomatica del primo ordine esprimibile in una logica descrittiva.
Il termine ontologia formale è entrato in uso nel campo dell'intelligenza artificiale e della rappresentazione della conoscenza, per descrivere il modo in cui diversi schemi vengono combinati in una struttura dati contenente tutte le entità rilevanti e le loro relazioni in un dominio. I programmi informatici possono poi usare l'ontologia per una varietà di scopi, tra cui il ragionamento induttivo, la classificazione, e svariate tecniche per la risoluzione di problemi.

## Premesse

Nonostante la sua tradizione sia eminentemente teorica, l'ontologia si sta dimostrando in tempi recenti particolarmente feconda nei suoi risvolti pratici. Ad esempio, lo studio dell'ontologia è sempre più importante a causa dei problemi relativi al sovraccarico informativo e di altri problemi legati alle moderne tecnologie informatiche (guerra dell'informazione, dipendenza da Internet, guerra asimmetrica, terrorismo e biosicurezza).
Tipicamente, le ontologie informatiche sono strettamente legate a vocabolari controllati – repertori di concetti classificati in un'ontologia fondamentale – in base ai quali tutto, all'interno del dominio di riferimento, deve essere descritto. Nel caso peggiore, tale scopo è assolto dal set di istruzioni del processore o dalla libreria standard del linguaggio di programmazione. Poiché queste sono cattive rappresentazioni di qualsiasi dominio di un problema, l'esigenza è quella di creare schemi più generali e definiti per rendere i set di dati utili per una descrizione (e un buon funzionamento del programma) coerente del dominio in oggetto.
Tali ontologie hanno spesso un valore commerciale: ciò crea concorrenza nella loro definizione – quella che Peter Murray-Rust ha definito "guerra semantica ed ontologica" – derivata dai differenti "standard" adottati, e la mancanza di un repertorio concettuale comune entro il quale far convergere tutte le ontologie speciali.
L'uso del termine "ontologia" nell'informatica deriva dal precedente uso dello stesso termine in filosofia, dove ha il significato dello studio dell'essere e del divenire dello spirito che modella gli enti - le entità soggette al divenire. Così come nella filosofia anche in informatica l'ontologia descrive le entità, in quanto soggette al cambiamento, con i concetti fondamentali di categoria e di relazione. Le entità non sono dunque definite una volta per tutte in maniera assoluta - non sono cioè metafisiche, ma assumono significato in base alle relazioni che possono stringere con altre entità. Il potenziale delle relazioni che un'entità può stringere è limitato dalla propria essenza, definita come una categoria della nostra ontologia, che altro non è che una tassonomia delle entità - ad esempio, un corvo in quanto volatile non può vivere sott'acqua e in quanto non mammifero non può allattare il suo cucciolo; un delfino in quanto cetaceo può fare entrambe le cose; tutti e due gli animali, in quanto animali, possono uccidere un altro animale; nessuno dei due, in quanto non umano, può insegnare all'Università.
Utilizzato inizialmente nell'ambito dell'intelligenza artificiale e della rappresentazione della conoscenza, dal 2001 il termine è stato reso piuttosto popolare grazie all'intensa attività e alla forte crescita della comunità di ricercatori impegnati sul tema del Web semantico. Per estensione si è iniziato ad usare il termine per definire generici modelli di dati. Comunque, nonostante la varietà con cui il termine viene utilizzato, nella letteratura specialistica sembra consolidata l'idea che in informatica il termine ontologia debba riferirsi specificamente ad un tentativo di formulare una concettualizzazione esaustiva e rigorosa nell'ambito di un dato dominio.
Si tratta generalmente di una struttura dati gerarchica che contiene tutte le entità rilevanti, le relazioni esistenti fra di esse, le regole, gli assiomi ed i vincoli specifici del dominio. Tale struttura viene normalmente formalizzata per mezzo di linguaggi semantici che devono rispondere alle leggi della logica formale (per questo si parla anche di ontologia formale).

## Uso come glossario di base

Una ontologia fondazionale è in qualche misura assimilabile ad un glossario di base, anche se, al contrario di questo, usualmente la prima è gerarchizzata in due o più livelli, nei cui termini tutto il resto deve essere descritto.
Una analogia può essere vista con il Basic English, il dizionario delle 2000 parole della lingua inglese necessarie al dizionario Longman per descrivere le 4000 frasi più comuni nella lingua inglese. Una ontologia fondazionale ha la funzione di un'ontologia di base sia per gli utenti che per i programmi, influenzando la loro prospettiva dei dati e degli eventi. Anche in Italia ci si è occupati di definire un Italiano di base (cfr. Tullio De Mauro) con gli stessi scopi e gli stessi metodi.
È possibile anche un'analogia con i linguaggi artificiali. Tutti i programmi per computer si basano su ontologie fondazionali, costituite dall'insieme di istruzioni del processore, dalle librerie di un linguaggio, dai file presenti in un file system, o da qualche altra lista di 'ciò che esiste'. Costruire la rappresentazione di un dominio di conoscenza partendo da basi insufficienti può portare a risultati poco corretti, da qui la necessità di disporre di ontologie di base standardizzate (come la Dublin Core per l'SGML) e consolidarle come fondamenta del proprio lavoro.
T. R. Gruber ha definito l'ontologia come "una specificazione di una concettualizzazione" .
Malgrado il termine 'ontologia' sia stato utilizzato in modo estremamente generico per contraddistinguere un qualunque schema concettuale di classificazione, secondo gli esperti di ontologia computazionale una vera ontologia non deve limitarsi ad una gerarchia di concetti organizzati con la relazione di sussunzione (spesso chiamata 'isa' - 'is_a' in lingua inglese, cioè è un - o 'sottoclasse' o 'sottotipo'), ma deve includere anche altre relazioni semantiche che descrivono in che modo i concetti sono interrelati. Una delle relazioni più comuni, oltre a quella di sussunzione, è la relazione 'parte_di'.
Questo approccio è differente, anche se correlato, rispetto al significato filosofico del termine ontologia, lo studio di ciò che è. Lo scopo di un'ontologia computazionale non è quello di specificare cosa 'esiste' e cosa 'non esiste', ma di creare una base di dati, che è un artefatto dell'uomo, contenente concetti riferiti al dominio di indagine dell'ontologo, e che verrà impiegata per eseguire certi tipi di computazione. Per questo motivo, i ragionamenti seguiti dagli ontologi in filosofia possono essere utili per individuare ed evitare delle possibili ambiguità logiche, ma quando diverse rappresentazioni ontologiche alternative possono servire ugualmente bene per gli obiettivi dell'ontologo computazionale, i vincoli di tempo impongono normalmente che venga scelta un'alternativa e le altre siano ignorate. Per certi scopi, è meglio non prendere in considerazione diversi dettagli degli oggetti di interesse. Ne consegue che diverse ontologie computazionali, sviluppate indipendentemente per scopi diversi, per lo stesso dominio di applicazione, possono risultare sensibilmente diverse fra di loro.
Nell'ambito informatico, si può distinguere fra ontologie top-level, ossia di massimo livello, e ontologie di dominio. Le prime riguardano gli aspetti più generici e astratti ravvisabili nella realtà intesa nella sua completezza, le seconde, che è possibile ricondurre a quelle massimali, per l'appunto si occupano dell'analisi categoriale e relazionale che si specifica in una peculiare porzione di realtà. Naturalmente, se riferite al World Wide Web, le massimali operano su di esso nell'interezza della sua complessità, mentre quelle di dominio si curano di analizzarne un settore circoscritto: è necessario però chiarire che il riconoscimento delle ontologie di dominio non implica che ad esse si sottenda obbligatoriamente l'esistenza di ontologie di massimo livello.

## Applicazioni nell'informatica

Le ontologie sono applicate comunemente nel campo dell'intelligenza artificiale e nella rappresentazione e nella condivisione della conoscenza. I programmi nei computer possono utilizzare un'ontologia per una varietà di scopi, fra cui il ragionamento deduttivo, la classificazione, diverse tecniche di problem solving, oltre che per facilitare la comunicazione e lo scambio di informazioni fra diversi sistemi.
Un'ontologia che non sia legata ad un particolare dominio di applicazione, ma cerchi di descrivere entità più generali, si definisce ontologia costitutiva, oppure ontologia superiore. In genere è necessario creare degli schemi maggiormente specializzati per rendere i dati utilizzabili in contesti applicativi reali. Le ontologie costitutive sono importanti per sviluppare, sulla base dei concetti fondanti e delle assiomatizzazioni che contengono, ontologie specializzate che mantengano un disegno integro e coerente. Sono in corso di studio metodologie specifiche, come OntoClean, per aiutare gli architetti della conoscenza in questo compito.
Ontologie costitutive possono avere un valore commerciale, creando una competizione per definirle. Peter Murray-Rust sostiene che questa situazione può portare ad "una guerra nel campo semantico ed ontologico dovuta a diversi standard in concorrenza", e come conseguenza ogni ontologia costitutiva standard verrà verosimilmente contestata da diverse parti – politiche o commerciali, ognuna con la propria idea di 'cosa esiste' (in senso filosofico). Nessuna ontologia superiore è stata finora generalmente riconosciuta come uno standard de facto. Diverse organizzazioni stanno lavorando alla definizione di ontologie standard per domini di applicazione specifici. Il 'Process Specification Language' (PSL) creato dal National Institute for Standards and Technology (NIST) è uno di questi esempi.

## Ontologie disponibili

Un'ontologia popolare ed abbastanza esaustiva disponibile è Cyc, un sistema proprietario sviluppato già a partire dal 1985, che consiste in un'ontologia costitutiva e diverse ontologie specializzate per dominio (chiamate "microteorie" - "microtheories" in inglese). Un sottoinsieme di questa ontologia è stato rilasciato per uso libero col nome di OpenCyc (vedere https://web.archive.org/web/20110226000645/http://opencyc.org/ ).
Wordnet, un database liberamente disponibile, progettato come una rete semantica basata sui principi della psicolinguistica, è stato successivamente espanso con l'aggiunta di definizioni ed è attualmente visto anche come un dizionario. Si qualifica come un'ontologia costitutiva perché include sia concetti di tipo generale, sia concetti con un maggior grado di specializzazione, collegati non solo da relazioni di sussunzione, ma anche con relazioni semantiche come quella di parte-insieme e causa. Tuttavia, a differenza di Cyc, esso non è stato completamente assiomatizzato, in modo da rendere le relazioni logiche fra concetti precise. Viene ampiamente usato nella ricerca sull'elaborazione del linguaggio naturale.
La Suggested Upper Merged Ontology (SUMO) è un altro tentativo di definire un'ontologia superiore, avviato dal gruppo di lavoro IEEE P1600.1 (costituito in larga parte da un gruppo di persone della Teknowledge), disponibile per uso libero.
Questa iniziativa tende a riservare alcuni termini ed il loro significato per tutti i sistemi basati sullo standard 'P1600.1', nello stesso modo in cui un'ontologia generale (in senso filosofico) definisce 'cosa esiste'. Lo stesso uso dell'aggettivo 'superiore', implica una gerarchia che deve essere accettata piuttosto che una base che può essere scelta, e sembra implicare un impatto di tipo culturale.
Da segnalare, inoltre, il sito schemaweb.info che si propone come un catalogo per ontologie scritte con RDF, OWL e DAML+OIL.

### Una ontologia o molte ontologie

La distinzione principale fra l'ontologia in senso filosofico e quella in senso informatico è data dall'ambizione (interpretabile come pretesa, in termini di logica formale), da parte dell'ontologia filosofica, di spiegare 'ciò che è' in assoluto, mentre in informatica l'ontologia spiega 'ciò che è' nel senso di ciò che è presente. Si tratta infatti di una descrizione delle entità e delle loro relazioni per uno specifico dominio di conoscenza. Nell'ambito dell'informatica, nel primo decennio del XXI secolo, la creazione di un'ontologia fondante e totale risulta un'impresa titanica. Impresa che tuttavia non può essere a priori esclusa, in termini tecnologici, anche se è sempre più evidente che essa richiede una enorme attività di "negoziazione tra pari" per la conciliazione di moltissime esigenze e punti di vista diversi: primi fra tutti quelli rappresentati dai diversi sistemi semantici associati alle diversità linguistiche.
Una cosa, invece, già possibile e praticata è la creazione di molte ontologie, ciascuna limitata a un dominio ben preciso e persino ad un ben preciso punto di vista, o scopo, di quel dominio, allora abbiamo qualcosa che può già essere realizzato e può essere utilizzato per molti scopi, come gestire un servizio Web o integrare sistemi diversi (vedi: Top-down Object-based Goal-oriented Approach Archiviato il 9 luglio 2012 in Archive.is., TOGA meta-theory, Adam Maria Gadomski, 1993).
Le ontologie così create potrebbero poi, in caso di necessità, venire mappate le une sulle altre, sfruttando il meccanismo di importazione delle ontologie, in modo da farle interagire senza perdere la complessità e particolarità di ciascuna.

## Linguaggi per ontologie

Per essere utili, le ontologie devono essere espresse in una notazione concreta. Un 'linguaggio per ontologie' è un linguaggio formale con cui viene costruita un'ontologia. Esistono diversi linguaggi, proprietari o basati su standard, per la definizione di ontologie:
* Il progetto Cyc ha il suo linguaggio, basato sulla logica del primo ordine, chiamato CycL.
* KIF era, fra gli altri usi, anche un linguaggio per ontologie.
* Le Logiche descrittive sono una famiglia di formalismi utilizzati per rappresentare la conoscenza in un dominio di applicazione.
* OWL (cfr. OWL) è un linguaggio della famiglia delle logiche descrittive espresso in sintassi XML. Sviluppato come passo successivo di RDF e RDFS, così come precedenti progetti di linguaggi per ontologie, fra cui Ontology Inference Layer (OIL) e DAML, rappresenta l'attuale standard per ontologie in ambienti Web.
* IDEF5
* MOF e UML
* OBO,
* OntoUML
* Rule Interchange Format (RIF) e F-Logic
* Semantic Application Design Language (SADL) captures a subset of the expressiveness of OWL
* SBVR (Semantics of Business Vocabularies and Rules)
* TOVE Project, TOronto Virtual Enterprise project

## Esempi di ontologie pubblicate

* BabelNet
* Basic Formal Ontology,
* BioPAX,
* BMO,
* CCO e GexKB, Application Ontologies (APO)
* CContology (Customer Complaint Ontology),
* CIDOC Conceptual Reference Model
* COSMO,
* Cyc
* Disease Ontology,
* DOLCE
* Drammar, ontologia del dramma
* Dublin Core,
* Foundational, Core and Linguistic Ontologies
* Foundational Model of Anatomy, an ontology for human anatomy
* Friend of a Friend
* Gene Ontology per la genomica
* Gellish English dictionary
* Geopolitical ontology
* GOLD, Ontologia generale per la descrizione linguistica
* GUM (Generalized Upper Model),
* IDEAS Group, a formal ontology for enterprise architecture being developed by the Australian, Canadian, UK and U.S. Defence Depts.
* Indiana Philosophy Ontology Project: progetto portato avanti dall'Università dell'Indiana
* Linkbase,
* LPL, Lawson Pattern Language
* MO (Music Ontology), an ontology to share info about artists, records, tracks, etc.
* NCBO Bioportal,
* OBO-Edit, an ontology browser for most of the Open Biological and Biomedical Ontologies
* OBO Foundry,
* Ontology for Biomedical Investigations
* OntoPiA - la rete di ontologie e vocabolari controllati della Pubblica Amministrazione
* OMNIBUS Ontology, an ontology of learning, instruction, and instructional design
* Plant Ontology for plant structures and growth/development stages, etc.
* POPE, Purdue Ontology for Pharmaceutical Engineering
* PRO, the Protein Ontology of the Protein Information Resource, Georgetown University
* Program abstraction taxonomy program abstraction taxonomy
* Protein Ontology for proteomics
* SNOMED CT (Systematized Nomenclature of Medicine -- Clinical Terms)
* Suggested Upper Merged Ontology,
* Systems Biology Ontology (SBO),
* SWEET, Semantic Web for Earth and Environmental Terminology
* ThoughtTreasure ontology
* TIME-ITEM, Topics for Indexing Medical Education
* Uberon,
* UMBEL
* WordNet
* YAMATO, Yet Another More Advanced Top-level Ontology
La Linking Open Data Community Project di W3C

## Progetti correlati

* Il progetto http://giona.editthis.info/ si propone di realizzare uno strumento completamente open source per la gestione di un'ontologia basata sullo standard CIMOSA.