Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Web semantico, ontologie ed RDF/XML

Cosa sono le ontologie e come rappresentarle
Cosa sono le ontologie e come rappresentarle
Link copiato negli appunti

Attualmente il Web è può essere considerato come un "archivio" dove trovare una grande quantità di documenti, ciò che manca è una connessione tra i contenuti stabilita dal loro significato (semantica), che permetta la risposta ad interrogazioni anche complesse, magari formulate con linguaggi "naturali".

Se poniamo ad un motore di ricerca la domanda «Cos'è un cubo?», esso cercherà le parole chiave all'interno del database, probabilmente estrarrà dei documenti che contengono la domanda e, con un po' di fortuna, anche la definizione che cerchiamo. Quello che non fa il motore è capire che cerchiamo la definizione di cubo, quindi gli sfugge il significato della richiesta.

Il Web Semantico è considerato da molti la naturale evoluzione di Internet. Per costruire relazioni semantiche e processarle in modo automatico si ha bisogno di una qualche formalizzazione che le descriva nel modo più completo possibile. Questo tipo di formalizzazione si chiama nel linguaggio della logica (mutuato poi dall'informatica) Ontologia.

Ontologie

Una definizione largamente citata di ontologia è :

«Un'ontologia è una specificazione di una concettualizzazione» (Gruber, T. 1993)

Più semplicemente un'ontologia permette di specificare, in modo aperto e significativo, i concetti e le relazioni che caratterizzano un certo dominio di conoscenza. Un esempio potrebbero essere i concetti di "birra chiara" e "birra scura", di "varietà di malto", di "birreria" e così via che caratterizzano il dominio di conoscenza "birra"; all'interno di questo dominio vi sono anche relazioni tra questi concetti come "le birrerie producono birra" ed "le birre hanno un anno di produzione".

Questa "Ontologia della Birra" potrebbe essere realizzata inizialmente per una particolare applicazione, come ad esempio un sistema di gestione magazzino di un grande rivenditore. Potrebbe essere considerata come l'analogo di un "database schema" ben definito.

Il vantaggio che però possiede una ontologia è di essere una descrizione esplicita qualitativamente avanzata. Quindi pur essendo prodotta per uno scopo particolare può essere pubblicata e riutilizzata per fini differenti. Ad esempio un certa birreria potrebbe utilizzare questa ontologia per collegare il suo programma di produzione al sistema di gestione citato prima. Oppure un eventuale programma di suggerimento potrebbe usarla unitamente ad una descrizione (ontologia) di differenti pizze per proporre le migliori birre abbinabili ad un dato menu.

Ci sono differenti modi di scrivere una ontologia e molte opinioni su quali tipi di definizione vadano inserite dentro di essa. Tuttavia forma e contenuto di un'ontologia sono fortemente guidati dal tipo di applicazione per la quale sarà utilizzata.

Poiché siamo interessati alle ontologie costruite per lo sviluppo del Web semantico, esaminiamo i formalismi costruiti sul linguaggio RDF/XML. Questo linguaggio come già spiegato in un articolo precedente, è incentrato sulla descrizione delle risorse digitali e si presta di conseguenza ad essere ulteriormente raffinato e formalizzato per poter descrivere vari domini di conoscenza nel contesto del Web.

Vi sono tre linguaggi basati su RDF/XML utilizzati per la definizione di ontologie: RDFS , OWL (il più utilizzato ed orientato al Web Semantico) e DAML+OIL (la somma di due linguaggi da cui è scaturito OWL). Essendo il terzo linguaggio oramai sempre più in disuso, andiamo quindi ad approfondire i primi due.

RDFS

Come abbiamo già visto nell'articolo e nella Guida linguaggi XML gli schemi RDF (chiamati RDFS appunto) sono «insiemi di proprietà ed elementi che definiscono un contesto per la descrizione di determinate categorie di risorse». Un esempio molto noto di RDFS è il Dublin Core Metadata (DCMI) per la descrizione di risorse digitali.

Un RDFS proprio per le sue caratteristiche può essere utilizzato anche per dare una semplice struttura semantica, permettendo di costruire una gerarchia di concetti e di relazioni. Chiedendo scusa ai biologi prendiamo ad esempio una porzione di tassonomia (una tassonomia è un caso particolare di Ontologia) costruita con Protegé:

Figura 1. Una semplice gerarchia di concetti
Gerarchia di concetti: {Organismo [Animale (Mammifero)(Pesce)] [Pianta]}
Organismo --+--> Animale --+--> Mammifero
            |              |
            |              +--> Pesce
            |
            +--> Pianta

Usando RDFS possiamo dire che questa ontologia ha 5 classi e che Pianta è sottoclasse di Organismo e così via. Un buon modo per pensare a queste classi è come descrizione di un insieme di individui: Organismo descrive un insieme di esseri viventi dei quali alcuni sono animali e alcuni di questi sono pesci e così via.

Per descrivere gli attributi di una classe è poi possibile associare proprietà ad essa. Ad esempio un dato organismo potrebbe avere degli organi sensoriali. Possiamo associare proprietà ad una classe stabilendo che la proprietà ha un certa classe come dominio ed un'altra classe come codominio.

Definire una gerarchia come questa è piuttosto semplice con RDFS, si incontrano più difficoltà di fronte a concettualizzazioni più complesse. Ad esempio non si può dichiarare che qualcosa NON sia un animale ed un pianta allo stesso tempo, oppure non si possono costruire espressioni per descrivere classi più complesse ed interessanti. Comunque per molte applicazioni è sufficiente definire un semplice vocabolario o tassonomia, ed in questi casi RDFS svolge egregiamente il suo dovere.

OWL

Il linguaggio OWL estende RDFS permettendo una notevole ricchezza semantica. Una caratteristica fondamentale di OWL è infatti la possibilità di descrivere le classi in modo più ricco.

Ad esempio possiamo dire che Animali e Piante sono classi disgiunte: quindi nessuno individuo (o istanza) può appartenere ad entrambe le classi. Oppure possiamo definire una classe come intersezione di altre due (o più).

Anche per le proprietà è possibile dare descrizioni molto ricche. Si possono per esempio restringere (e raffinare) certe proprietà sulle classi: se la classe "Animali" ha le proprietà "è ricoperto di", si può dire che per la sottoclasse "Mammiferi" questa proprietà ha valori nella classe "Peli", per i "Rettili" ha valori nella classe "Scaglie".

Inoltre si può distinguere tra proprietà transitive, simmetriche e funzionali e si può dichiarare una proprietà come inverso di un'altra. Infine un'evoluzione importante è la possibilità di distinguere tra proprietà che hanno come valori (codominio) dati semplici (RDF Literals) o vere e proprie classi.

Esistono tre differenti classi di sintassi OWL: OWL Lite, OWL DL e OWL Full. OWL DL è una restrizione di OWL Full e a sua volta OWL Lite è una restrizione di OWL DL.

Gli ultimi due sono pensati per essere processati automaticamente dai cosiddetti reasoner (che esistono comunque anche per RDFS), questi ultimi infatti permettono di ottenere notevoli informazioni semantiche aggiuntive a partire da una data ontologia e sono il vero cuore del web semantico.

Un'ultima importante osservazione è che se da una parte OWL è definito a partire del linguaggio RDF/XML e può essere visto come una sua estensione, tuttavia può essere anche considerato come un linguaggio XML a se stante. Entrambi i punti di vista possono essere considerati validi e sono stati utilizzati per vari tipi di applicazioni ed interfacce.

Conclusioni

L'utilizzo della semantica nel campo dell'informatica si va estendendo e ci sono già alcuni esempi di applicazioni Web che ne fanno uso, anche se molte a livello dimostrativo. Quanto a tool per lo sviluppo di ontologie in RDFS ed OWL con semplicità, l'esempio più famoso (open source e tra i migliori) è Protegé, possiamo quindi provare a costruire un'ontologia sfruttando queste applicazioni.

Ti consigliamo anche