Per qualsiasi commento, correzione e suggerimento...

22
OWL Linguaggio Ontologico per il Web Guida Raccomandazione W3C del 10 Febbraio 2004 Versione Attuale: http://www.w3.org/TR/2004/REC - owl - guide - 20040210/ Ultima Versione: http://www.w3.org/TR/owl - guide/ Versione Precedente: http://www.w3.org/TR/2003/PR - owl - guide - 20031215/ A cura di: Michael K. Smith, Electronic Data Systems, Chris Welty, IBM Research, Deborah L. McGuinness, Stanford University, Si prega di consultare l'errata corrige di questo documento, che può contenere alcune correzioni normative. Si vedano anche le altre traduzioni . Copyright © 2004 W3C ® (MIT , ERCIM , Keio ), Tutti i Diritti Riservati. Si applicano le regole del W3C sulla responsabilit à , marchio , uso dei documenti e licenze software . Riassunto Il World Wide Web per come è costituito attualmente, rappresenta una struttura scarsamente organizzata. Le nostre analisi dei documenti e delle capacità disponibili sono basate sulla ricerca di parole chiave e sono spronate da un uso intelligente della connettività dei documenti e dall'utilizzo di modelli opportuni. L'intera massa di queste informazioni è ingestibile senza potenti strumenti di Avviso importante Questo documento è una traduzione non ufficiale della Raccomandazione del W3C del 10 febbraio 2004 "OWL Web Ontology Language Overview". Il documento può contenere errori di traduzione. La versione ufficiale, in inglese, è reperibile al seguente indirizzo: http://www.w3.org/TR/2004/REC - owl - guide - 20040210/ Traduzione italiana: http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuidainitaliano.htm Data pubblicazione: Agosto 2005 2005 Traduttore: Giovanni De Angelis Per qualsiasi commento, correzione e suggerimento rivolgersi al traduttore Pagina 1 di 43 OWL Web Ontology Language Guide 07/02/2006 http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm supporto. In modo da mappare questo terreno in maniera più precisa, gli agenti computazionali richiedono descrizioni dei contenuti interpretabili dalle macchine e nuove capacità per le risorse accessibili sul web. Queste descrizioni devono essere date in aggiunta alle versioni delle informazioni interpretabili dall'uomo. Il Linguaggio ontologico per il web OWL è stato progettato per fornire un linguaggio che può essere usato per descrivere le classi e le relazioni che le collegano e che sono inerenti ai documenti e alle applicazioni web. Questo documento dimostra l'uso del linguaggio OWL per: 1. formalizzare un dominio definendo le classi e le proprietà di quelle classi; 2. definire individui e asserire delle proprietà su di essi; 3. ragionare su queste classi e sugli individui fino al grado permesso dalla semantica formale del linguaggio OWL. Le sezioni sono organizzate per presentare una definizione incrementale di un insieme di classi, proprietà e individui, cominciando dai fondamenti e andando avanti con i componenti più complessi del linguaggio. Stato del documento Questo documento è stato rivisto dai Membri del W3C e da altre parti interessate, ed è stato approvato dal Direttore come Raccomandazione del W3C . Il ruolo del W3C nel redigere la Raccomandazione è quello di richiamare l'attenzione sulla specifica e di promuoverne un'ampia diffusione. Questo favorisce la funzionalità e l'interoperabilità del Web. Questo documento è una delle sei parti che costituiscono la Raccomandazione del W3C per OWL, il Linguaggio Ontologico per il Web. E' stato sviluppato dal Web Ontology Working Group come parte dell'Attività del W3C per il Web Semantico (Rapporto sull'Attivit à , Statuto del Gruppo ) e pubblicato il 10 Febbraio 2004. Il Progetto di OWL rappresentato nelle precedenti versioni di questi documenti è stato ampiamente rivisto e soddisfa i Requisiti Tecnici del Gruppo di Lavoro. Il Gruppo di Lavoro ha esaminato tutti i commenti pervenuti , effettuando le modifiche come necessario. Le modifiche a questo documento a partire dalla versione della Raccomandazione Proposta sono elencati nel registro dei cambiamenti . Tutti i commenti sono ben accetti su public - webont - [email protected] (archivio ) così come le discussioni generali sulle tecnologie correlate presso www - rdf - [email protected] (archivio ). E' disponibile una lista delle implementazioni . Il W3C conserva anche una lista di qualsiasi divulgazione di brevetto connessa a questo lavoro . Questa sezione descrive lo stato del Documento al momento della sua pubblicazione. Altri documenti possono sostituire il presente documento. Una lista delle attuali pubblicazioni del W3C e l'ultima revisione di questa Relazione Tecnica possono essere trovate nell'Indice delle Relazioni Tecniche del W3C all'indirizzo http://www.w3.org/TR/. Pagina 2 di 43 OWL Web Ontology Language Guide 07/02/2006 http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

Transcript of Per qualsiasi commento, correzione e suggerimento...

OWL Linguaggio Ontologico per il Web Guida Raccomandazione W3C del 10 Febbraio 2004 Versione Attuale:

http://www.w3.org/TR/2004/REC-owl-guide-20040210/ Ultima Versione:

http://www.w3.org/TR/owl-guide/ Versione Precedente:

http://www.w3.org/TR/2003/PR-owl-guide-20031215/ A cura di:

Michael K. Smith, Electronic Data Systems, Chris Welty, IBM Research, Deborah L. McGuinness, Stanford University,

Si prega di consultare l'errata corrige di questo documento, che può contenere alcune correzioni normative.

Si vedano anche le altre traduzioni.

Copyright © 2004 W3C® (MIT, ERCIM , Keio), Tutti i Diritti Riservati. Si applicano le regole del W3C sulla responsabilità, marchio, uso dei documenti e licenze software.

Riassunto Il World Wide Web per come è costituito attualmente, rappresenta una struttura scarsamente organizzata. Le nostre analisi dei documenti e delle capacità disponibili sono basate sulla ricerca di parole chiave e sono spronate da un uso intelligente della connettività dei documenti e dall'utilizzo di modelli opportuni. L'intera massa di queste informazioni è ingestibile senza potenti strumenti di

Avviso importanteQuesto documento è una traduzione non ufficiale della Raccomandazione del W3C del 10 febbraio 2004 "OWL Web Ontology Language Overview".Il documento può contenere errori di traduzione. La versione ufficiale, in inglese, è reperibile al seguente indirizzo:http://www.w3.org/TR/2004/REC-owl-guide-20040210/Traduzione italiana:http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuidainitaliano.htmData pubblicazione: Agosto 2005 2005Traduttore: Giovanni De AngelisPer qualsiasi commento, correzione e suggerimento rivolgersi al traduttore

Pagina 1 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

supporto. In modo da mappare questo terreno in maniera più precisa, gli agenti computazionali richiedono descrizioni dei contenuti interpretabili dalle macchine e nuove capacità per le risorse accessibili sul web. Queste descrizioni devono essere date in aggiunta alle versioni delle informazioni interpretabili dall'uomo.

Il Linguaggio ontologico per il web OWL è stato progettato per fornire un linguaggio che può essere usato per descrivere le classi e le relazioni che le collegano e che sono inerenti ai documenti e alle applicazioni web.

Questo documento dimostra l'uso del linguaggio OWL per:

1. formalizzare un dominio definendo le classi e le proprietà di quelle classi; 2. definire individui e asserire delle proprietà su di essi; 3. ragionare su queste classi e sugli individui fino al grado permesso dalla semantica formale del

linguaggio OWL.

Le sezioni sono organizzate per presentare una definizione incrementale di un insieme di classi, proprietà e individui, cominciando dai fondamenti e andando avanti con i componenti più complessi del linguaggio.

Stato del documento Questo documento è stato rivisto dai Membri del W3C e da altre parti interessate, ed è stato approvato dal Direttore come Raccomandazione del W3C. Il ruolo del W3C nel redigere la Raccomandazione è quello di richiamare l'attenzione sulla specifica e di promuoverne un'ampia diffusione. Questo favorisce la funzionalità e l'interoperabilità del Web.

Questo documento è una delle sei parti che costituiscono la Raccomandazione del W3C per OWL, il Linguaggio Ontologico per il Web. E' stato sviluppato dal Web Ontology Working Group come parte dell'Attività del W3C per il Web Semantico (Rapporto sull'Attività, Statuto del Gruppo) e pubblicato il 10 Febbraio 2004.

Il Progetto di OWL rappresentato nelle precedenti versioni di questi documenti è stato ampiamente rivisto e soddisfa i Requisiti Tecnici del Gruppo di Lavoro. Il Gruppo di Lavoro ha esaminato tutti i commenti pervenuti, effettuando le modifiche come necessario. Le modifiche a questo documento a partire dalla versione della Raccomandazione Proposta sono elencati nel registro dei cambiamenti.

Tutti i commenti sono ben accetti su [email protected] (archivio) così come le discussioni generali sulle tecnologie correlate presso [email protected] (archivio).

E' disponibile una lista delle implementazioni.

Il W3C conserva anche una lista di qualsiasi divulgazione di brevetto connessa a questo lavoro.

Questa sezione descrive lo stato del Documento al momento della sua pubblicazione. Altri documenti possono sostituire il presente documento. Una lista delle attuali pubblicazioni del W3C e l'ultima revisione di questa Relazione Tecnica possono essere trovate nell'Indice delle Relazioni Tecniche del W3C all'indirizzo http://www.w3.org/TR/.

Pagina 2 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

Indice l Sommario l Stato del Documento l Indice l 1. Introduzione

¡ 1.1. Le specie del linguaggio OWL ¡ 1.2. Struttura del Documento

l 2. La Struttura delle Ontologie ¡ 2.1. Lo spazio dei Nomi (Namespaces) ¡ 2.2. Intestazione dell'Ontologia (Ontology Headers) ¡ 2.3. Aggregazione delle Informazioni e Privacy

l 3. Elementi di Base ¡ 3.1. Classi Semplici e Individui

n 3.1.1. Classi Semplici con Nome (Simple Named Classes) n 3.1.2. Individui n 3.1.3. Progettazione secondo l'Uso

¡ 3.2. Proprietà Semplici n 3.2.1. Definizione delle Proprietà n 3.2.2. Proprietà e Tipi di Dato n 3.2.3. Proprietà degli Individui

¡ 3.3. Caratteristiche delle Proprietà n 3.3.1. Proprietà Transitiva n 3.3.2. Proprietà Simmetrica n 3.3.3. Proprietà Funzionale n 3.3.4. Proprietà Inversa (inverseOf) n 3.3.5. Proprietà Funzionale Inversa

¡ 3.4. Restrizioni sulle Proprietà n 3.4.1. allValuesFrom, someValuesFrom n 3.4.2. Cardinalità n 3.4.3. hasValue

l 4. Analisi dell'Ontologia ¡ 4.1. Equivalenza tra Classi e Proprietà ¡ 4.2. Identità tra Individui ¡ 4.3. Individui Differenti

l 5. Classi Complesse ¡ 5.1. Operatori di Insieme ¡ 5.2. Classi Enumerate ¡ 5.3. Classi Disgiunte

l 6. Definizione della Versione dell'Ontologia (Ontology Versioning) l 7. Esempi di Utilizzo

¡ 7.1. Portale dei Vini ¡ 7.2. Agente dei Vini

l Ringraziamenti l Glossario OWL l Indice Analitico e Riferimenti l Bibliografia l Appendice A: XML + RDF Basics l Appendice B: Storia l Appendice C: Registro dei Cambiamenti dall'ultima Versione rilasciata

Pagina 3 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

1. Introduzione "Dimmi quali vini dovrei comprare da servire con ogni portata del seguente menù. E comunque ricorda che non mi piace il Sauternes."

Sarebbe difficile oggigiorno costruire un Agente Web che sia in grado di effettuare una ricerca di vini sul web che soddisfi questa richiesta. Allo stesso modo si consideri anche la difficoltà di assegnare ad un agente software il compito di trovare un insieme coerente di sistemazioni per un viaggio. (Per altri casi d'uso, vedere il Documento dei Requisiti per il Linguaggio OWL.)

Per supportare questo tipo di calcolo, è necessario andare oltre le parole chiave e specificare il significato delle risorse descritto sul Web. Questo strato addizionale di interpretazione cattura la semantica delle informazioni.

Il Linguaggio per le Ontologe Web OWL è un linguaggio per definire e istanziare Ontologie Web. Ontologia è un termine preso in prestito dalla Filosofia che si riferisce alla Scienza della descrizione del tipo di Entità del Mondo e di come sono correlate tra loro. Una ontologia OWL può includere le descrizioni delle classi, proprietà e delle loro istanze. Una volta dato questo tipo di Ontologia, la semantica formale di OWL specifica come derivare le sue conseguenze logiche, ovvero i fatti che non sono presenti letteralmente nell'ontologia, ma derivati logicamente dalla semantica. Queste derivazioni logiche possono essere basate su un singolo documento o su più documenti distribuiti che sono stati combinati fra loro usando dei predefiniti meccanismi OWL.

Questo documento è un componente della descrizione dell'OWL, il Linguaggio Ontologico del Web, che è stato prodotto dal Gruppo di Lavoro per le Ontologie del Web della W3C (WebOnt). La Roadmap del Documento nella sezione relativa alla Panoramica di OWL ([Overview], 1.1) descrive ognuna delle differenti parti e come queste si collegano le une alle altre.

Una domanda che nasce spontanea quando si descrive ancora un altro standard Web XML è "Cosa mi offre questo che non mi offrono XML e XML Schema?" Ci sono sue risposte a questa domanda.

l Una Ontologia differisce da un XML Schema nel senso che essa è una rappresentazione della conoscenza, non un formato per i messaggi. La maggior parte degli standard Web prodotti, consiste nella combinazione di vari formati del messaggio e delle specifiche dei protocolli di comunicazione. Questi formati sono stati dotati di una semantica operazionale, del tipo: "Al ricevimento di un messaggio di OrdinediAcquisto, trasferisci l'Ammontare in dollari dal ContodiPartenza al ContodiDestinazione e spedisci il Prodotto." Ma le specifiche non sono progettate per supportare alcun tipo di ragionamento al di fuori del contesto della transazione. Per esempio non avremmo in generale un meccanismo che sia in grado di concludere che, poichè il Prodotto è un tipo di Chardonnay, deve anche essere necessariamente un vino bianco.

l Un vantaggio delle ontologie OWL è la disponibilità di strumenti che sono in grado di ragionare su di esse. Gli Strumenti devono fornire un generico supporto che non deve essere specifico del particolare dominio considerato, che dovrebbe essere invece il caso in cui una persona dovrebbe costruire un sistema per effettuare dei ragionamenti su uno specifico standard di uno XML Schema. Costruire un efficiente ed utile sistema di ragionamento non è uno sforzo semplice. Costruire una ontologia è invece più facilmente trattabile. E' una nostra aspettativa che molti gruppi si imbarchino nella costruzione di ontologie. Essi beneficeranno di Strumenti costruiti da terze parti, basati sulle proprietà formali del Linguaggio OWL; strumenti che consegneranno un assortimento di caratteristiche che la maggior parte delle organizzazioni difficilmente sarà in grado di replicare.

Pagina 4 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

1.1. Le specie del Linguaggio OWL OWL fornisce tre sottolinguaggi di espressività crescente che sono stati progettati per essere utilizzati da determinate comunità di sviluppatori e utenti.

l OWL Lite aiuta quegli utenti che hanno soprattutto bisogno di una gerarchia di classificazione e semplici restrizioni. Per esempio, benchè sostenga limitazioni della cardinalità, esso permette soltanto valori di cardinalità di 0 o 1. Sarebbe più semplice fornire uno strumento di supporto per OWL Lite che per i suoi parenti più espressivi e OWL Lite fornisce un percorso di migrazione più rapido per i thesaurus e le altre tassonomie.

l OWL DL supporta quegli utenti che vogliono il massimo dell'espressività senza perdere la completezza computazionale (tutte le conclusioni hanno la garanzia di essere calcolabili) e la decidibilità (tutte le computazioni finiscono in un tempo definito) dei sistemi di ragionamento. OWL DL comprende tutti i costrutti del linguaggio OWL con delle restrizioni come quelle sulla separazione del tipo (una classe non può essere un individuo o una proprietà, così come una proprietà non può essere un individuo o una classe). OWL DL si chiama così a causa della sua corrispondenza con la logica descrittiva [Description Logics], un campo di ricerca che ha studiato un particolare frammento decidibile della Logica del Primo Ordine. OWL DL è stato progettato per supportare la parte relativa alla Logica Descrittiva ed ha auspicabili propriètà computazionali per i sistemi di ragionamento.

l OWL Full è destinato agli utenti che vogliono la massima espressività e libertà sintattica di RDF senza le garanzie computazionali. Per esempio, in OWL Full una classe può essere trattata contemporaneamente come una collezione di individui e come un individuo a pieno titolo. Un'altra differenza notevole dall'OWL DL è che una owl:DatatypeProperty può essere considerata come una owl:InverseFunctionalProperty. OWL Full permette ad un'ontologia di aumentare il significato di un vocabolario predefinito (RDF o OWL). E' improbabile che qualsiasi software di ragionamento possa sostenere un ragionamento completo per ciascuna caratteristica di OWL Full.

Ciascuno di questi sottolinguaggi è un'estensione del suo modello più semplice, sia in ciò che può essere legalmente espresso sia in ciò che può essere validamente concluso. Le seguenti affermazioni sono vere. Il loro opposto no.

l Ogni ontologia OWL Lite legale è un'ontologia OWL DL legale. l Ogni ontologia OWL DL legale è un'ontologia OWL Full legale. l Ogni conclusione OWL Lite valida è una conclusione OWL DL valida. l Ogni conclusione OWL DL è una conclusione OWL Full valida.

Gli sviluppatori di ontologie che adottano OWL, dovrebbero considerare quale sottolinguaggio si addice meglio ai loro bisogni. La scelta tra OWL Lite e OWL DL dipende dal grado di necessità degli utenti di aver bisogno delle strutture più espressive fornite da OWL DL. I software di Ragionamento per OWL Lite dovrebbero avere preferibilmente delle proprietà computazionali. I software di Ragionamento per OWL DL, poichè hanno a che fare con un sottolinguaggio decidibile, sono soggetti ad una complessità più alta nel caso pessimo. La scelta tra OWL DL e OWL Full dipende soprattutto dal grado di necessità degli utenti di aver bisogno degli strumenti di meta-modeling dello Schema RDF (per es. definizione di classi di classi). In confronto ad OWL DL, quando si usa OWL Full, il supporto di ragionamento è meno predicibile. Per maggiori informazioni riguardo questo argomento consultare il Documento della Semantica di OWL.

Gli utenti che passano dall'utilizzo di RDF a quello di OWL DL o di OWL Lite devono prestare particolare attenzione, assicurandosi che il documento originale in RDF, soddisfi le limitazioni imposte dall'OWL DL e dall'OWL Lite. I dettagli di queste limitazioni sono descritte nell'Appendice

Pagina 5 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

E delle Fonti OWL.

Quando nel seguito di questo documento introdurremo dei costrutti che sono permessi solo in OWL DL o in OWL FULL, li contrassegneremo con una etichetta del tipo "[OWL DL]".

1.2. Struttura del Documento In modo da fornire un consistente insieme di esempi lungo tutta la guida, abbiamo creato un'ontologia dei vini (wine) e dei cibi (food). Questa è una ontologia in OWL DL. Alcune delle nostre discussioni riguarderanno delle peculiarità di OWL Full e saranno contrassegnate distintamente. L'ontologia dei vini e dei cibi (Wine and Food), rappresenta una modifica sostanziale di un elemento della libreria ontologica del DAML e ha alle spalle una lunga storia. E' stata originariamente sviluppata da McGuinnes come un esempio CLASSICO di Logica Descrittiva, esteso poi ad un tutorial di Logica Descrittiva, ed esteso successivamente ad un tutorial di ontologie.

In questo documento presentiamo gli esempi usando la sintassi RDF/XML ([RDF], 5), assumendo che XML sia abbastanza familiare per la maggior parte dei lettori. La sintassi delle regole di OWL è del tipo RDF/XML. Si noti che OWL è stato progettato per ottenere la massima compatibilità con RDF e RDF Schema. I formati XML ed RDF sono parte integrante dello standard OWL.

Tutti gli esempi presentati in questo documento sono presi dalle ontologie contenute nella wine.rdf e nella food.rdf, fatta eccezione per quelle contrassegnate con il simbolo ¬ nella parte in basso a destra.

2. La Struttura delle Ontologie Il linguaggio OWL è un componente dell'Attivita del W3C per il Semantic Web. Questa attività si propone lo scopo di rendere le risorse sul Web più prontamente accessibili ai processi automatizzati, mediante l'aggiunta di informazioni riguardanti le risorse che descrivono e forniscono i contenuti del Web. Poichè il Web Semantico è distribuito, OWL deve permettere la raccolta di informazioni da risorse distribuite. Questo obiettivo è parzialmente raggiunto in quanto si permette alle ontologie di essere correlate tra loro, includendo la possibilità di effettuare una importazione esplicita delle informazioni da altre ontologie.

Inoltre OWL effettua una assunzione di mondo aperto (OWA - Open World Assumption) cioè assume che la descrizione delle risorse non sia confinata ad un unico file o ad un unico obiettivo. Sebbene la classe C1 sia definita originariamente in una ontologia O1, questa può essere estesa anche in altre ontologie. Le conseguenze di queste nuove asserzioni circa la classe C1 sono monotone (monotonic). Le nuove informazioni infatti non possono ritrattare le informazioni precedenti; possono essere però contraddittorie, ma possono solo aggiungere fatti e conseguenze e mai cancellarli.

La possibilità di queste contraddizioni è un qualcosa che il progettista di ontologie deve bene tenere in considerazione. Ci si aspetta inoltre che gli strumenti di supporto aiutino a rilevare questi casi.

Nell'intento di scrivere una ontologia che possa essere interpretata in maniera non ambigua e usata da agenti software, abbiamo bisogno di una sintassi e di una semantica formale per il linguaggio OWL. OWL può essere considerato come una estensione semantica del vocabolario di RDF [RDF Semantics] . La semantica del linguaggio OWL è definita nel documento OWL Web Ontology Language Semantics and Abstract Syntax.

Pagina 6 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

2.1. Spazio dei Nomi Prima di poter usare un insieme di termini, abbiamo bisogno di una precisa indicazione di quali saranno i vocabolari specifici che saranno utilizzati. Un componente iniziale standard di una ontologia include un insieme di dichiarazioni dello spazio dei nomi XML (XML Namespace) racchiuse in una etichetta iniziale del tipo rdf:RDF. Questo fornisce un mezzo per interpretare in maniera non ambigua gli identificatori e rendere il resto della presentazione dell'ontologia molto più leggibile. Una tipica ontologia OWL comincia con una dichiarazione dello spazio dei nomi molto simile alla seguente. Naturalmente, gli identificatori (URIs) dell'ontologia che viene definita non saranno solitamente riferiti all'indirizzo w3.org.

<rdf:RDF xmlns ="http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#" xmlns:vin ="http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#" xml:base ="http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#" xmlns:food="http://www.w3.org/TR/2004/REC-owl-guide-20040210/food#" 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#">

Le prime due dichiarazioni identificano lo spazio dei nomi associati con questa ontologia. La prima indica lo spazio dei nomi di default, specificando che i nomi utilizzati senza prefisso, si riferiranno all'ontologia corrente. La seconda identifica lo spazio dei nomi dell'ontologia corrente con il prefisso vin:. La terza indica l'identificatore di base (base URI) per questo documento (vedere più avanti ). La quarta indica lo spazio dei nomi dell'ontologia di supporto dei cibi con il prefisso food:.

La quinta dichiarazione dello spazio dei nomi indica che, in questo documento, gli elementi che presentano un prefisso owl: devono essere interpretati con riferimento agli oggetti derivanti dallo spazio dei nomi all'indirizzo http://www.w3.org/2002/07/owl#. Questa è una dichiarazione convenzionale di OWL, usata per introdurre il vocabolario specifico del linguaggio.

OWL dipende da costrutti definiti mediante RDF, RDFS e tipi di dato di XML Schema. In questo documento il prefisso rdf:, si riferisce alle cose che appartengono allo spazio dei nomi all'indirizzo http://www.w3.org/1999/02/22-rdf-syntax-ns#. Le due successive dichiarazioni dello spazio dei nomi, indicano affermazioni simili alla precedente e riguardanti lo spazio dei nomi dello Schema RDF (rdfs:) e dei tipi di dato dello Schema XML (xsd:).

Come aiuto per la scrittura di indirizzi web troppo lunghi, può essere utile fornire un insieme di definizioni di entità in una dichiarazione del tipo di documento (DOCTYPE) che precede le definizioni dell'ontologia. I nomi definiti dalle dichiarazioni dello spazio dei nomi hanno significato valido solo se sono parte integrante di etichette XML (XML tags). I valori degli attributi non sono influenzati dallo spazio dei nomi, ma in OWL facciamo riferimento in maniera frequente agli identificatori dell'ontologia usando proprio i suddetti valori. Possono essere scritti nella loro forma completa espansa, per esempio "http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#merlot". Oppure, alternativamente, possono essere definite delle abbreviazioni mediante una definizione con il costrutto ENTITY, ad esempio:

<!DOCTYPE rdf:RDF [ <!ENTITY vin "http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#" > <!ENTITY food "http://www.w3.org/TR/2004/REC-owl-guide-20040210/food#" > ]>

Dopo questa coppia di dichiarazioni di ENTITY, possiamo scrivere il valore "&vin;merlot" e questo verrà considerato automaticamente con la sua estensione "http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#merlot".

Pagina 7 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

Per questo motivo, in modo più elegante, le dichiarazioni rdf:RDF dello spazio dei nomi possono essere semplificate in maniera che i cambiamenti effettuati alle dichiarazioni delle entità si propaghino consistentemente a tutta l'ontologia.

<rdf:RDF xmlns ="&vin;" xmlns:vin ="&vin;" xml:base ="&vin;" xmlns:food="&food;" 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#">

2.2. Intestazione dell'Ontologia Una volta che gli spazi dei nomi sono stati dichiarati, normalmente includiamo una collezione di affermazioni riguardanti l'ontologie e raggruppate sotto una etichetta owl:Ontology. Queste etichette svolgono compiti critici molto comuni quali i commenti, il controllo della versione e l'inclusione di altre ontologie.

<owl:Ontology rdf:about=""> <rdfs:comment>An example OWL ontology</rdfs:comment> <owl:priorVersion rdf:resource="http://www.w3.org/TR/2003/PR-owl-guide-20031215/wine"/> <owl:imports rdf:resource="http://www.w3.org/TR/2004/REC-owl-guide-20040210/food"/> <rdfs:label>Wine Ontology</rdfs:label> ...

Da notare che usiamo '...' per indicare che c'è del testo addizionale che è stato omesso perchè non inerente a questo specifico esempio.

L'elemento owl:Ontology è il posto dove è possibile conservare la maggior parte delle meta-informazioni OWL per il documento. Esso non garantisce però che il documento descriva una ontologia nel senso tradizionale della parola. In alcune comunità infatti le ontologie non sono composte da individui, ma solo da classi e proprietà che definiscono un dominio. Quando si usa OWL per descrivere una collezione di istanze di informazioni, l'etichetta owl:Ontology può essere ncessaria per registrare la versione delle informazioni disponibili e per importare le definizioni sulle quali è basato il documento. Tuttavia in OWL il termine ontologia è stato ampliato per includere anche istanze di informazioni (vedere più avanti).

L'attributo rdf:about fornisce invece un nome o un riferimento per l'ontologia. Quando il valore di questo attributo e nullo (""), ovvero il caso standard, il nome dell'ontologia è l'identificatore di base dell'elemento owl:Ontology. Tipicamente esso rappressenta l'identificatore (URI) del documento contenente l'ontologia. Una eccezione è il caso in cui si fa uso del costrutto xml:base che può impostare l'identificatore di base (base URI) per un elemento, a qualcosa che sia differente dall'identificatore del documento corrente.

rdfs:comment fornisce l'ovvia capacità di cui si ha bisogno per commentare una ontologia.

owl:priorVersion è una etichetta standard che può essere usata per fornire un collegamento per il sistema di controllo di versione che viene utilizzato con le ontologie. La definizione della Versione dell'Ontologia (Ontology versioning) sarà discussa più avanti.

owl:imports fornisce un meccanismo di stile di inclusione. owl:imports prende un singolo argomento, identificato dall'attributo rdf:resource.

Pagina 8 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

Importare un'altra ontologia implica l'importazione dell'intero insieme di asserzioni fornito da quella ontologia, all'interno dell'ontologia corrente. Per permettere l'uso ottimo dell'ontologia importata, normalmente questo meccanismo sarà accompagnato e coordinato da una dichiarazione dello spazio dei nomi. Da notare la distinzione tra questi due meccanismi. Le dichiarazioni dello spazio dei nomi forniscono un mezzo conveniente per riferirsi ai nomi definiti in altre ontologie OWL. Concettualmente, owl:imports è inserito per indicare l'intenzione di includere le asserzioni riguardanti l'ontologia indicata. Importare un'altra ontologia O2, significa anche importare tutte le ontologie che O2 importa.

Da notare che owl:imports non sempre può avere successo. Come ci si potrebbe aspettare avendo a che fare con il Web Semantico, l'accesso a risorse distribuite sul Web non può essere sempre possibile. Gli strumenti risponderebbero infatti a questa situazione in una maniera predefinita secondo la loro implementazione.

Da notare inoltre che per usare il vocabolario OWL non è necessario importare l'ontologia owl.rdf. Infatti una importazione di questo tipo non è assolutamente raccomandata.

Un insieme comune di marcatori aggiuntivi che possono essere inseriti ragionevolmente, sono alcuni marcatori dei metadati del Dublin Core. Il sottoinsieme include quelle che riescono a gestire tipi semplici o stringhe come valori. Esempi includono il Titolo, l'Autore, la Descrizione, l'Editore e la Data (vedere inoltre le dichiarazioni RDF).

Le proprietà che sono usate come annotazioni devono essere dichiarate utilizzando la owl:AnnotationProperty. Per esempio

<owl:AnnotationProperty rdf:about="&dc;creator" />

OWL fornisce parecchi altri meccanismi per legare insieme l'ontologia corrente con quelle importate (vedere ontology mapping).

Includiamo inoltre una etichetta rdfs:label per supportare la specifica del linguaggio naturale per la nostra ontologia.

La definizione dell'intestazione dell'ontologia è chiusa con la seguente etichetta.

</owl:Ontology>

Questo preludio è seguito dalle definizioni di sorta che costituiscono l'ontologia ed è chiuso definitivamente da una altra etichetta del tipo

</rdf:RDF>

2.3. Aggregazione delle Informazioni e Privacy L'abilità dell'OWL di esprimere informazioni ontologiche riguardanti istanze che compaiono in documenti diversi, supporta il collegamento di informazioni provenienti da diverse fonti in una maniera schietta. La semantica sottesa fornisce un supporto per i meccanismi di inferenza riguardo queste informazioni, che può portare a risultati inattesi. In particolare, l'abilità di esprimere le equivalenze mediante il costrutto owl:sameAs può essere utilizzata per indicare il fatto che individui apparentemente differenti sono invece proprio gli stessi. Owl:InverseFunctionalProperty può anche essere usata per collegare gli individui tra di loro. Ad esempio, se una proprietà come "SocialSecurityNumber" è una owl:InverseFunctionalProperty, allora due individui separati possono essere considerati come se fossero uguali sulla base del fatto che hanno lo stesso valore di

Pagina 9 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

quella proprietà. Quando gli individui sono dichiarati identici sulla base di questi mezzi, le informazioni su di loro provenienti da diverse fonti possono essere fuse tra loro. Questa aggregazione può essere utilizzata per determinare dei fatti che non sono direttamente rappresentati in nessuna delle fonti a cui fanno riferimento.

L'Abilità del Web Semantico di collegare informazioni provenienti da fonti multiple è una caratteristica auspicabile e potente che può essere utilizzata in molte applicazioni. Tuttavia, la capacità di fondere insieme informazioni provenienti da fonti multiple, combinata con il potere inferenziale dell'OWL, può permettere un potenziale abuso di potere. Gli utenti del linguaggio OWL dovrebbero essere avvertiti delle potenziali implicazioni riguardanti la privacy. Dettagliate soluzioni riguardanti la sicurezza sono state considerate al di fuori degli obiettivi del Gruppo di Lavoro. Diverse organizzazioni stanno dotando questo progetto di una varietà di soluzioni e di caratteristiche di sicurezza. Si consultino ad esempio i progetti SAML e P3P.

3. Elementi di Base La maggior parte degli elementi che compongono una ontologia OWL riguardano classi, proprietà, istanze di classi e le relazioni tra queste istanze. Questa sezione presenta i componenti essenziali del linguaggio per introdurre questi elementi.

3.1. Classi Semplici e Individui Molti usi di una ontologia dipendono dall'abilità di ragionare sugli individui. Per fare ciò in modo utile ed efficiente, abbiamo bisogno di avere un meccanismo per descrivere le classi a cui gli individui appartengono e le proprietà che essi ereditano in virtù dell'appartenenza alle classi stesse. Noi possiamo sempre affermare delle specifiche proprietà riguardo gli individui ma molto della forza delle ontologie proviene dalla capacità di ragionamento basato sulle classi.

A volte vogliamo enfatizzare la distinzione tra una classe vista come oggetto e una classe intesa come un contenitore di elementi. Chiamiamo l'insieme degli individui che sono membri di una classe come l'estensione di quella classe.

3.1.1. Classi Semplici con Nome Class, rdfs:subClassOf

Il concetto fondamentale in un dominio deve corrispondere alle classi che sono alla radice delle varie strutture ad albero che ne rappresentano la tassonomia. Ogni individuo nel mondo di OWL è un membro della classe owl:Thing. Per questo motivo ogni nuova classe definita dall'utente sarà implicitamente una sottoclasse della owl:Thing. Le classi radice di uno specifico dominio, possono essere definite semplicemente dichiarandone il nome. OWL permette anche la definizione della classe vuota, owl:Nothing.

Per il nostro esempio del dominio dei vini, abbiamo creato tre classi radice: Winery(Azienda Vinicola), Region(Regione), e ConsumableThing(Bene consumabile).

<owl:Class rdf:ID="Winery"/> <owl:Class rdf:ID="Region"/> <owl:Class rdf:ID="ConsumableThing"/>

Da notare che per ora abbiamo solo detto che esistono classi a cui sono stati dati questi nomi, mediante la sintassi 'rdf:ID='. Formalmente noi non sappiamo niente altro di queste classi se non il

Pagina 10 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

fatto che esistono, grazie all'uso di etichette che le definiscono mediante i termini comuni in lingua Inglese. E fino a che le classi esistono solamente, potrebbero non avere nessun membro. Per quello che sappiamo fino a questo punto, le classi potrebbero essere anche state chiamate Thing1, Thing2, e Thing3.

E' importante ricordare che le definizioni possono essere incrementali e distribuite. In particolare avremo molto da dire successivamente riguardo la classe Winery.

La sintassi rdf:ID="Region" è usata per introdurre un nome come parte della sua definizione. Questo è il costrutto rdf:ID attribute ([RDF], 7.2.22) che risulta del tutto simile al più familiare attributo ID definito dall'XML. All'interno di questo documento, potremmo ora riferirci alla classe Region usando il termine #Region, ad esempio scrivendo rdf:resource="#Region". Altre ontologie possono invece riferirvisi usando la sua forma completa, "http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#Region".

Un'altra forma di riferimento usa la sintassi rdf:about="#Region" per estendere la definizione di una risorsa. Questo è l'esempio dell'uso della sintassi rdf:about="&ont;#x" che risulta essere un elemento critico nella creazione di ontologie distribuite. Esso permette l'estensione delle definizioni importate di x senza modificare il documento originale e supporta la costruzione incrementale di una ontologia più ampia.

E' ora possibile riferirsi alle classi che abbiamo definito mediante altri costrutti OWL usando i loro identificatori corrispondenti. Per la prima classe all'interno di questo documento, possiamo utilizzare l'identificatore relativo, #Winery. Anche altri documenti però, potrebbero avere bisogno di indirizzare questa classe in maniera opportuna. Il modo più ragionevole per farlo è quello di fornire lo spazio dei nomi e le definizioni delle entità che includono il documento come fonte di informazioni:

... <!ENTITY vin "http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#" > <!ENTITY food "http://www.w3.org/TR/2004/REC-owl-guide-20040210/food#" > ... <rdf:RDF xmlns:vin ="http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#" xmlns:food="http://www.w3.org/TR/2004/REC-owl-guide-20040210/food#" ... >...

Una volta date queste definizioni possiamo riferirci alla classe winery sia usando l'etichetta XML vin:Winery sia il valore dell'attributo &vin;Winery. Letteralmente è sempre possibile riferirsi ad una risorsa usando il suo identificatore (URI) completo che in questo caso sarebbe http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#Winery.

Il costruttore fondamentale per definire la tassonomia delle classi è rdfs:subClassOf. Esso mette in relazione una classe specifica con una più generica. Se X è una sottoclasse di Y, allora ogni istanza di X è anche una istanza di Y. La relazione rdfs:subClassOf è inoltre una relazione transitiva. Se X è una sottoclasse di Y e Y è una sottoclasse di Z, allora X è anche una sottoclasse di Z.

<owl:Class rdf:ID="PotableLiquid"> <rdfs:subClassOf rdf:resource="#ConsumableThing" /> ... </owl:Class>

Definiamo PotableLiquid (liquido potabile) come una sottoclasse di ConsumableThing.

Nel mondo delle ontologie orientate al Web, entrambe queste classi possono essere definite in una ontologia separata, che può fornire le basi per una ampia varietà di ontologie di cibi e bevande ed in

Pagina 11 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

effetti è quello che è stato fatto con l'ontologia food che viene importata nella ontologia dei vini (wine ontology). L'ontologia food include una serie di classi come ad esempio Food, EdibleThing, MealCourse e Shellfish, che non appartengono a tutti gli effetti ad una collezione di vini, ma devono poter essere collegate alla terminologia adottata se vogliamo effettuare dei ragionamenti utili. Cibi e vini sono infatti mutualmente dipendenti in quanto devono soddisfare il nostro bisogno di accoppiare cibi e vini insieme.

La definizione di una classe è suddivisa in due parti:un nome introduttivo od un riferimento ed una serie di restrizioni. Ognuna delle espressioni che sono contenute all'interno della definizione della classe, restringono le proprietà che possono essere applicate alle istanze della classe definita. Le Istanze della Classe appartengono all'intersezione delle restrizioni su di essa. (Consultare ulteriori dettagli su owl:equivalentClass.) Fino ad ora, abbiamo visto solo esempi in cui una nuova classe era una sottoclasse di un'altra classe precedentemente definita.

A questo punto, è possibile creare una semplice (e incompleta) definizione per la classe Wine. Wine è un PotableLiquid (Il Vino è un LiquidoPotabile). Possiamo inoltre definire la Pasta come un EdibleThing (una cosa commestibile).

<owl:Class rdf:ID="Wine"> <rdfs:subClassOf rdf:resource="&food;PotableLiquid"/> <rdfs:label xml:lang="en">wine</rdfs:label> <rdfs:label xml:lang="fr">vin</rdfs:label> ... </owl:Class> <owl:Class rdf:ID="Pasta"> <rdfs:subClassOf rdf:resource="#EdibleThing" /> ... </owl:Class>

L'etichetta rdfs:label fornisce un nome opzionale leggibile da parte dell'utente umano per le classi appena definite. Strumenti di presentazione possono farne uso. L'attributo "lang" fornisce il supporto per diverse lingue. Una etichetta è in realtà come un commento e non contribuisce all'interpretazione logica dell'ontologia.

La nostra definizione del vino è ancora molto incompleta. Noi non sappiamo niente dei vini, fatta eccezione per il fatto che sono cose e liquidi potabili, ma abbiamo comunque già abbastanza informazioni per creare e ragionare su alcuni degli individui che appartengono alla classe.

3.1.2. Individui

In aggiunta alle classi, noi vogliamo essere in grado di descrivere anche i loro membri. Normalmente pensiamo ai membri come degli individui nel nostro universo delle cose. Un individuo è introdotto principalmente dichiarando la sua appartenenza ad una classe.

<Region rdf:ID="CentralCoastRegion" />

Da notare che il seguente esempio ha esattamente lo stesso significato del precedente.

<owl:Thing rdf:ID="CentralCoastRegion" /> <owl:Thing rdf:about="#CentralCoastRegion"> <rdf:type rdf:resource="#Region"/> </owl:Thing>

rdf:type è una proprietà RDF che lega un individuo ad una classe a cui appartiene.

Pagina 12 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

Ci sono due punti principali che ora necessitano di essere chiariti. Per prima cosa, abbiamo deciso che CentralCoastRegion (un'area specifica) sia una membro della classe Region, la quale contiene tutte le regioni geografiche. Come seconda cosa, non c'è nessun prerequisito nelle due parti dell'esempio che indichi che i due elementi debbano essere necessariamente adiacenti l'uno all'altro o anche che si trovino nello stesso file (sebbene i nomi necessitano di essere estesi mediante un URI in questo caso). Progettiamo le ontologie web con l'intento che esse siano distribuite. Esse possono essere quindi importate e aumentate, creando delle ontologie derivate.

In modo da avere a disposizione altre poche classi per discutere le proprietà introdotte nelle successive sezioni, definiamo un nuovo ramo della tassonomia, Grape, con un individuo che denota la varietà di uva del tipo Cabernet Sauvignon. I tipi d'uva (Grapes) sono definiti nell'ontologia food:

<owl:Class rdf:ID="Grape"> ... </owl:Class>

E poi, nell'ontologia dei vini abbiamo anche:

<owl:Class rdf:ID="WineGrape"> <rdfs:subClassOf rdf:resource="&food;Grape" /> </owl:Class> <WineGrape rdf:ID="CabernetSauvignonGrape" />

Come sarà discusso nella prossima sezione, CabernetSauvignonGrape è da considerarsi come un individuo in quanto denota una singola varietà di uva.

3.1.3. Progettazione secondo l'uso

Ci sono importanti discussioni riguardanti la distinzione tra una classe(Class) ed un individuo (Individual) in OWL. Una classe è da considerarsi semplicemente come un nome e una collezione di proprietà che descrivono un insieme di individui. Gli Individui sono i membri di questi insiemi. Per questo motivo le classi devono corrispondere ad insiemi di cose che naturalmente compaiono nel dominio di un discorso e gli individui devono invece corrispondere proprio a quelle entità che possono essere raggruppate in queste classi.

Nel costruire le ontologie, la distinzione è frequentemente vista in due modi:

l Livelli di rappresentazione: In alcuni contesti, qualcosa che può essere considerata ovviamente come una classe, può invece essere considerata come una istanza di qualche altra cosa. Per esempio nell'ontologia dei vini, abbiamo la nozione di Grape, che viene considerata come l'insieme di tutte le qualità di uva (grape varietals). CabernetSauvingonGrape è un esempio di istanza di questa classe, poichè denota la varietà di uva conosciuta con il nome di Cabernet Sauvignon. Tuttavia, CabernetSauvignonGrape può essere essa stessa considerata come una classe, cioè l'insieme di tutte le uve di tipo Cabernet Sauvignon.

l Sottoclassi vs. istanze: E' veramente facile confondere la relazione istanza-di (instance-of) con quella di sottoclasse. Per esempio può sembrare arbitraria la scelta di rappresentare CabernetSauvignonGrape come un individuo di una istanza di Grape, piuttosto che una sottoclasse di Grape. Questa non è del tutto una scelta arbitraria. La classe Grape denota l'insieme di tutte le varietà di uva (grape varietals), e tuttavia ogni sottoclasse di Grape deve rappresentare un sottoinsieme di queste varietà. Per questo motivo quindi, CabernetSauvignonGrape deve essere considerato una istanza di (istance of) Grape (Uva) e non una sua sottoclasse. Esso infatti non descrive un sottoinsieme delle varietà di Grape (Uva) bensì è una varietà di uva.

Pagina 13 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

Da notare che la stessa dimensione sorge con il trattamento della classe Wine. La classe Wine attualmente denota l'insieme di tutte le varietà di vino, non l'insieme delle bottiglie che qualcuno può acquistare. In una ontologia alternativa, ogni istanza di Wine che viene considerata nella corrente ontologia, può invece rappresentare una classe formata da tutte le bottiglie di un vino di un determinato tipo. E' facile immaginare un sistema informativo, come un sistema per la gestione dell'inventario di un mercante di vini, che ha invece bisogno di considerare bottiglie singole di vino. L'ontologia dei vini, come è stata definita fino a questo punto, avrebbe bisogno dell'abilità aggiuntiva di trattare le classi come istanze in modo da poter supportare questa interpretazione. Da notare che OWL Full permette questa espressività fornendoci la possibilità di trattare una istanza di una varietà di vino anche come una classe le quali istanze sono bottiglie di vino.

Allo stesso modo, i vini prodotti dalle aziende vinicole in anni specifici sono considerati d'annata (vintages). Per riuscire a rappresentare il concetto di annata (vintage), dobbiamo determinare dove, nella corrente ontologia, il termine può essere inserito correttamente. Una istanza della classe Wine, come discusso precedentemente, rappresenta una singola varietà di vino prodotto da una particolare azienda vinicola, per esempio la FormanChardonnay.

Aggiungendo il fatto che il vino prodotto nell'anno 2000 può essere considerato d'annata (vintage) incontriamo un ostacolo poichè non abbiamo la possibilità di rappresentare un sottoinsieme di un predefinito individuo della classe wine. Annata (vintage) non è una nuova varietà di vino, è uno speciale sottoinsieme del vino - quello prodotto nell'anno 2000. Una possibile soluzione potrebbe essere quella di usare OWL Full e trattare le istanze del vino come classi aventi delle sottoclassi ( o sottoinsiemi) che denotano le caratteristiche dell'annata. Un'altra opzione è quella di aggirare l'ostacolo e di considerare la classe Vintage (annata) come una classe separata, le cui istanze hanno una relazione con i vini che sono d'annata. Per esempio, FormanChardonnay2000 è un individuo d'annata(vintage) con una proprietà annatadel(vintageof) il quale valore è il Wine,FormanChardonnay. Definiremo successivamente la classe Vintage.

Il punto della discussione è dunque che lo sviluppo di una ontologia deve essere fermamente guidato dall'uso che se ne intende fare. Questa annotazione inoltre sottolinea una delle maggiori differenze che sussistono tra OwL Full e OWL DL. OWL Full permette l'uso delle classi come istanze e OWL DL non lo permette. L'ontologia dei vini (wine ontology) è stata progettata per funzionare in OWL DL e come risultato gli individui come FormanChardonnay non sono simultaneamente trattati come classi.

3.2. Proprietà semplici Questo mondo di Classi e Individui potrebbe risultare abbastanza noioso se potessimo definire solo delle tassonomie. Le Proprietà ci permettono di asserire fatti generali riguardo i membri delle classi e di asserire fatti specifici riguardo gli individui.

3.2.1. Definire le proprietà ObjectProperty, DatatypeProperty, rdfs:subPropertyOf, rdfs:domain, rdfs:range

Una proprietà è una relazione binaria. Possono essere distinti due tipi di proprietà:

l datatype properties, relazioni tra le istanze appartenenti alle classi e elementi RDF literals o tipi di dati XML Schema

l object properties, relazioni tra istanze di due classi. Da sottolineare che il nome object property (proprietà dell'oggetto) non è da intendersi con riferimento al termine RDF detto rdf:object ([RDF], 5.3.4).

Pagina 14 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

Quando definiamo una proprietà, ci sono molti modi di restringere una relazione. Possono essere specificati il dominio e l'intervallo (range). La proprietà può essere definita come una specializzazione di una proprietà esistente (sottoproprietà). Altre restrizioni molto più elaborate sono possibili e sono descritte più avanti.

<owl:ObjectProperty rdf:ID="madeFromGrape"> <rdfs:domain rdf:resource="#Wine"/> <rdfs:range rdf:resource="#WineGrape"/> </owl:ObjectProperty> <owl:ObjectProperty rdf:ID="course"> <rdfs:domain rdf:resource="#Meal" /> <rdfs:range rdf:resource="#MealCourse" /> </owl:ObjectProperty>

In OWL, una sequenza di elementi senza un esplicito operatore rappresenta una congiunzione implicita. La proprietà madeFromGrape ha il dominio della classe Wine e un intervallo riferito a WineGrape. Ciò significa che crea una relazione tra istanze della classe Wine e istanze della classe WineGrape. Domini multipli indicano invece che il dominio della proprietà è dato dall'intersezione delle classi identificate ( e la stessa cosa vale anche per l'intervallo).

Allo stesso modo, la proprietà course(portata) lega un Meal(pasto) ad un MealCourse (tipo di portata).

Notare che l'uso dell'intervallo e del dominio in OWL è differente dall'uso dei tipi in un linguaggio di programmazione classico. Tra le altre cose, i tipi sono usati per controllare la consistenza in un liguaggio di programmazione. In OWL, un intervallo può essere usato per ricavare un tipo di dato. Per esempio, se viene detto:

<owl:Thing rdf:ID="LindemansBin65Chardonnay"> <madeFromGrape rdf:resource="#ChardonnayGrape" /> </owl:Thing> ¬

Noi possiamo asserire che LindemansBin65Chardonnay è un vino poichè il dominio di madeFromGrape è un vino(Wine).

Le proprietà, come le classi, possono essere arrangiate in una gerarchia.

<owl:Class rdf:ID="WineDescriptor" /> <owl:Class rdf:ID="WineColor"> <rdfs:subClassOf rdf:resource="#WineDescriptor" /> ... </owl:Class> <owl:ObjectProperty rdf:ID="hasWineDescriptor"> <rdfs:domain rdf:resource="#Wine" /> <rdfs:range rdf:resource="#WineDescriptor" /> </owl:ObjectProperty> <owl:ObjectProperty rdf:ID="hasColor"> <rdfs:subPropertyOf rdf:resource="#hasWineDescriptor" /> <rdfs:range rdf:resource="#WineColor" /> ... </owl:ObjectProperty>

La proprietà WineDescriptor collega i vini con il loro colore e i componenti del loro gusto, compresi la dolcezza(sweetness), la rotondità(body) e il gusto(flavor). hasColor è una sottoproprietà

Pagina 15 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

della proprietà hasWineDescriptor, con il suo intervallo circoscritto al WineColor. La relazione rdfs:subPropertyOf in questo caso indica che ogni cosa con una proprietà del tipo hasColor avente valore X ha anche una proprietà hasWineDescriptor che assume il valore X.

Successivamente introdurremo la proprietà locatedIn, che collega le cose con le regioni in cui si trovano.

<owl:ObjectProperty rdf:ID="locatedIn"> ... <rdfs:domain rdf:resource="http://www.w3.org/2002/07/owl#Thing" /> <rdfs:range rdf:resource="#Region" /> </owl:ObjectProperty>

Notare bene come sono definiti il dominio e l'intervallo della locatedIn. Il dominio permette ogni cosa che può essere locata in una regione, includendo anche le stesse regioni. Da qui si vede come la composizione transitiva in questa relazione essenzialmente crea una rete geografica di sottoregioni e cose. Le cose che non possono contenere niente possono essere di qualsiasi classe mentre quelle che contengono qualcosa devono necessariamente essere di tipo regione.

E' ora possibile espandere la definizione di Wine per includere la nozione che un vino è fatto da almeno una WineGrape. Come per la definizione delle proprietà, le definizioni della classe hanno molte sottoparti che sono implicitamente connesse tra loro.

<owl:Class rdf:ID="Wine"> <rdfs:subClassOf rdf:resource="&food;PotableLiquid"/> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#madeFromGrape"/> <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality> </owl:Restriction> </rdfs:subClassOf> ... </owl:Class>

La restrizione sulla sottoclasse evidenziata sopra

<owl:Restriction> <owl:onProperty rdf:resource="#madeFromGrape"/> <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality> </owl:Restriction>

definisce una classe senza nome che rappresenta l'insieme delle cose con almeno una proprietà madeFromGrape. Chiamiamo questo tipo classi anonime. Includere questa restrizione nel corpo della definizione della classe Wine vuol dire che le cose che sono vini, sono anche membri della classe anonima. Ciò significa che ogni individuo della classe Wine deve partecipare almeno ad una relazione di tipo madeFromGrape.

Possiamo ora descrivere la classe Vintage, discussa precedentemente.

<owl:Class rdf:ID="Vintage"> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#vintageOf"/> <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality> </owl:Restriction> </rdfs:subClassOf> </owl:Class> ¬

Pagina 16 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

La proprietà vintageOf lega una annata(Vintage) ad un vino(Wine).

<owl:ObjectProperty rdf:ID="vintageOf"> <rdfs:domain rdf:resource="#Vintage" /> <rdfs:range rdf:resource="#Wine" /> </owl:ObjectProperty> ¬

Metteremo in relazione le proprietà Vintage ai loro anni nella seguente sezione.

3.2.2. Proprietà e Tipi di Dati

Noi distinguiamo le proprietà a seconda che esse mettano in relazione individui con individui (object properties) o individui con tipi di dati (datatype properties). Le proprietà sui tipi di dati, possono essere applicate a semplici letterali RDF o a tipi semplici in accordo con XML Schema datatypes.

OWL usa la maggior parte degli XML Schema datatypes predefiniti. I riferimenti a questi tipi di dato sono da intendersi come il riferimento all'identificatore (URI) per quel tipo di dato, http://www.w3.org/2001/XMLSchema. I seguenti tipi di dato sono raccomandati per l'utilizzo con il linguaggio OWL:

I tipi di dato sopra elencati, unitamente agli rdfs:Literal, formano i tipi di dato predefiniti del linguaggio OWL. Tutti i reasoner per il linguaggio OWL hanno come requisito fondamentale quello si supportare i tipi di dato xsd:integer e xsd:string.

Altri tipi di dato predefiniti possono essere usati in OWL Full ma con alcuni accorgimenti descritti nella documentazione OWL Semantics and Abstract Syntax.

<owl:Class rdf:ID="VintageYear" /> <owl:DatatypeProperty rdf:ID="yearValue"> <rdfs:domain rdf:resource="#VintageYear" /> <rdfs:range rdf:resource="&xsd;positiveInteger"/> </owl:DatatypeProperty>

La proprietà yearValue relaziona il VintageYear ad un valore positivo intero. Descriveremo la proprietà hasVintageYear, che relaziona un Vintage con un VintageYear sotto.

La OWL Reference ([Reference], 6.2) descrive l'uso dei costrutti owl:oneOf, rdf:List e rdf:rest per definire i tipi di dato enumerati. L'esempio mostra come costruire la owl:DatatypeProperty, tennisGameScore, con un intervallo uguale agli elementi della lista dei valori interi {0, 15, 30, 40}.

xsd:string xsd:normalizedString xsd:booleanxsd:decimal xsd:float xsd:doublexsd:integer xsd:nonNegativeInteger xsd:positiveIntegerxsd:nonPositiveInteger xsd:negativeIntegerxsd:long xsd:int xsd:short xsd:bytexsd:unsignedLong xsd:unsignedInt xsd:unsignedShort xsd:unsignedBytexsd:hexBinary xsd:base64Binaryxsd:dateTime xsd:time xsd:date xsd:gYearMonthxsd:gYear xsd:gMonthDay xsd:gDay xsd:gMonthxsd:anyURI xsd:token xsd:languagexsd:NMTOKEN xsd:Name xsd:NCName

Pagina 17 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

3.2.3. Proprietà degli Individui

Prima descriviamo gli individui appartenenti a Region e Winery e poi possiamo definire il nostro primo vino:

<Region rdf:ID="SantaCruzMountainsRegion"> <locatedIn rdf:resource="#CaliforniaRegion" /> </Region> <Winery rdf:ID="SantaCruzMountainVineyard" /> <CabernetSauvignon rdf:ID="SantaCruzMountainVineyardCabernetSauvignon" > <locatedIn rdf:resource="#SantaCruzMountainsRegion"/> <hasMaker rdf:resource="#SantaCruzMountainVineyard" /> </CabernetSauvignon>

Questa definizione è ancora incompleta. Ci sono altri aspetti del gusto del vino che sono definiti nell'ontologia completa. Ma i pezzi cominciano a combaciare tra di loro. Potremmo ad esempio cominciare a ragionare riguardo quale oggetto del menù della nostra ontologia dei cibi può essere accompagnato da questo vino. Sappiamo dalla descrizione precedentemente mostrata che l'azienda vinicola della Santa Cruz Mountain produce questa qualità. Poichè è un CabernetSauvignon (Vedere anche wine.rdf), sappiamo che è un vino rosso, asciutto.

Le proprietà dei tipi di dato possono essere aggiunte agli individui in maniera molto simile. Sotto viene riportata una istanza di VintageYear che viene collegata ad uno specifico valore di tipo &xsd:positiveInteger.

<VintageYear rdf:ID="Year1998"> <yearValue rdf:datatype="&xsd;positiveInteger">1998</yearValue> </VintageYear>

3.3. Caratteristiche delle Proprietà Le seguenti sezioni descrivono i meccanismi usati per specificare ulteriormente le proprietà. E' possibile specificare le caratteristiche di una proprietà, che forniscono un meccanismo molto potente per agevolare dei ragionamenti su una proprietà.

3.3.1. Proprietà Transitiva (TransitiveProperty)

Se una proprietà P è specificata come proprietà transitiva, allora per ogni X,Y e Z si ha logicamente:

P(x,y) e P(y,z) implicano P(x,z)

La proprietà locatedIn è transitiva.

<owl:ObjectProperty rdf:ID="locatedIn"> <rdf:type rdf:resource="&owl;TransitiveProperty" /> <rdfs:domain rdf:resource="&owl;Thing" /> <rdfs:range rdf:resource="#Region" /> </owl:ObjectProperty> <Region rdf:ID="SantaCruzMountainsRegion"> <locatedIn rdf:resource="#CaliforniaRegion" /> </Region> <Region rdf:ID="CaliforniaRegion">

Pagina 18 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

<locatedIn rdf:resource="#USRegion" /> </Region>

Poichè la SantaCruzMountainsRegion è locatedIn(contenuta nella) CaliforniaRegion, allora deve anche essere locatedIn(contenuta nella) USRegion, poichè locatedIn è una proprietà transitiva.

3.3.2. Proprietà Simmetrica (SymmetricProperty)

Se una proprietà P viene definita simmetrica, allora per ogni x e y abbiamo:

P(x,y) se e solo se P(y,x)

La proprietà adjacentRegion(regione adiacente) è simmetrica, mentre la locatedIn non lo è. Per essere più precisi, la proprietà locatedIn non viene intesa come simmetrica. Niente nella ontologia dei vini, al momento, impedisce che essa sia da considerarsi come simmetrica.

<owl:ObjectProperty rdf:ID="adjacentRegion"> <rdf:type rdf:resource="&owl;SymmetricProperty" /> <rdfs:domain rdf:resource="#Region" /> <rdfs:range rdf:resource="#Region" /> </owl:ObjectProperty> <Region rdf:ID="MendocinoRegion"> <locatedIn rdf:resource="#CaliforniaRegion" /> <adjacentRegion rdf:resource="#SonomaRegion" /> </Region>

La MendocinoRegion è adiacente alla SonomaRegion e viceversa. La MendocinoRegion è contenuta all'interno della CaliforniaRegion ma non è vero il contrario.

3.3.3. Proprietà Funzionale (FunctionalProperty)

Se una proprietà P viene definita come funzionale, allora per tutte le x, y e z:

P(x,y) e P(x,z) implicano che y = z

Nella nostra ontologia dei vini, la proprietà hasVintageYear è una proprietà funzionale. Un vino ha un unico anno di invecchiamento. Ciò significa che un singolo indidividuo della classe Vintage(annata) può essere associato solamente ad un singolo anno usando la proprietà hasVintageYear. Non è però un requisito della proprietà owl:FunctionalProperty che tutti gli elementi del dominio abbiamo un valore. Per ulteriori approfondimenti controllare la discussione riguardo la cardinalità della proprietà Vintage.

<owl:Class rdf:ID="VintageYear" /> <owl:ObjectProperty rdf:ID="hasVintageYear"> <rdf:type rdf:resource="&owl;FunctionalProperty" /> <rdfs:domain rdf:resource="#Vintage" /> <rdfs:range rdf:resource="#VintageYear" /> </owl:ObjectProperty>

3.3.4. Proprietà Inversa (inverseOf)

Se una proprietà P1, viene definita come la proprietà owl:inverseOf (inversa di) P2, allora per tutte le x e y abbiamo:

Pagina 19 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

P1(x,y) se e solo se P2(y,x)

Da notare che la sintassi della proprietà owl:inverseOf prende un nome di una proprietà come argomento. A se e solo se B significa (A implica B) e (B implica A).

<owl:ObjectProperty rdf:ID="hasMaker"> <rdf:type rdf:resource="&owl;FunctionalProperty" /> </owl:ObjectProperty> <owl:ObjectProperty rdf:ID="producesWine"> <owl:inverseOf rdf:resource="#hasMaker" /> </owl:ObjectProperty>

Gli individui appartenenti alla classe Wine hanno dei produttori, che nella definizione della classe Wine sono ristretti agli individui della classe Winery(Azienda Vinicola). Allora ogni Winery(Azienda Vinicola) produce l'insieme dei vini che la identificano come un'azienda produttrice.

3.3.5. Proprietà Funzionale Inversa (InverseFunctionalProperty)

Se una proprietà P, viene definita come una Proprietà Funzionale Inversa, allora per tutte le x, y e z abbiamo:

P(y,x) e P(z,x) implica y = z

Da notare che la proprietà producesWine(produce vino) nella sezione precedente è una funzionale inversa. La ragione di questa decisione è che l'inversa di una proprietà funzionale deve necessariamente essere una proprietà funzionale inversa. Potremmo aver definito la proprietà hasMaker(ha un produttore) e la proprietà producesWine(produce vino) come specificato di seguito ed ottenere lo stesso risultato dell'esempio precedente.

<owl:ObjectProperty rdf:ID="hasMaker" /> <owl:ObjectProperty rdf:ID="producesWine"> <rdf:type rdf:resource="&owl;InverseFunctionalProperty" /> <owl:inverseOf rdf:resource="#hasMaker" /> </owl:ObjectProperty> ¬

Si pensi agli elementi nell'intervallo di riferimento della proprietà funzionale inversa come se definissero una chiave primaria secondo l'idea delle basi di dati. owl:InverseFunctional implica che gli elementi dell'intervallo di riferimento forniscano un identificatore unico per ogni elemento del dominio.

In OWL Full, possiamo definire una DatatypeProperty come una proprietà funzionale inversa. Questo ci permette di identificare una stringa come una chiave primaria. In OWL DL i letterali sono disgiunti dalla classe owl:Thing e questo è il motivo per cui in OWL DL non è possibile definire come proprietà InverseFunctional(funzionaleInversa) una DatatypeProperty.

3.4. Restrizioni sulle proprietà In aggiunta alle caratteristiche specificate sulle proprietà, è possibile limitare ulteriormente l'intervallo dei valori che può assumere una proprietà in specifici contesti, in differenti maniere. Otteniamo questo mediante le property restrictions (restrizioni sulle proprietà). Le differenti forme descritte di seguito, possono essere usate solo all'interno del contesto di un costrutto definito owl:Restriction. Il costrutto owl:onProperty indica la proprietà restrittiva.

Pagina 20 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

3.4.1. allValuesFrom, someValuesFrom

Abbiamo già visto un modo per restringere i tipi di elementi che costituiscono una proprietà. I meccanismi applicati erano di tipo globale, nel senso che essi si applicavano a tutte le istanze della proprietà. Questi due prossimi meccanismi invece, allValuesFrom e someValuesFrom, sono locali ovvero si applicano solo alla classe in cui sono definiti.

La restrizione owl:allValuesFrom richiede che per ogni istanza della classe che ha delle istanze della specifica proprietà, i valori della proprietà devono essere tutti membri appartenenti alla classe indicata nella clausola della owl:allValuesFrom.

<owl:Class rdf:ID="Wine"> <rdfs:subClassOf rdf:resource="&food;PotableLiquid" /> ... <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#hasMaker" /> <owl:allValuesFrom rdf:resource="#Winery" /> </owl:Restriction> </rdfs:subClassOf> ... </owl:Class>

Il produttore di un Wine(vino) deve essere una Winery(Azienda Vinicola). La restrizione allValuesFrom è imposta solo sulla proprietà hasMaker(ha un produttore) di questa classe Wine(vino). I produttori di Cheese(formaggi) non sono infatti limitati da questa restrizione locale.

La proprietà owl:someValuesFrom è simile. Se rimpiazzassimo la proprietà owl:allValuesFrom con la owl:someValuesFrom nell'esempio sopra, significherebbe che almeno uno individuo delle proprietà hasMaker(ha un produttore) di un Wine deve indicare un individuo che deve appartenere alla classe Winery(Azienda Vinicola).

<owl:Class rdf:ID="Wine"> <rdfs:subClassOf rdf:resource="&food;PotableLiquid" /> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#hasMaker" /> <owl:someValuesFrom rdf:resource="#Winery" /> </owl:Restriction> </rdfs:subClassOf> ... </owl:Class> ¬

La differenza tra queste due formulazioni è la differenza che sussite tra i due quantificatori universale ed esistenziale.

La prima formulazione non richiede che un vino debba avere un produttore; dice solo che se ne ha uno o più, devono essere tutti delle aziende vinicole. La seconda formulazione invece richiede che ci sia almeno un produttore che sia una azienda vinicola ma possono anche esserci altri produttori che non siano aziende vinicole.

Relazione Implicazioni

allValuesFrom Per tutti i vini, se hanno delle aziende produttrici, tutti i produttori sono delle aziende vinicole.

someValuesFrom Per tutti i vini, essi hanno almeno un produttore che è un'azienda vinicola.

Pagina 21 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

3.4.2. Cardinalità

Abbiamo già visto alcuni esempi di restrizione della cardinalità. Per essere più specifici, sono state tutte delle asserzioni fatte riguardo la cardinalità minima. Ancora più preciso e ampio è l'elemento owl:cardinality, che permette di specificare esattamente il numero di elementi in una relazione. Per esempio, specifichiamo la classe Vintage(annata) come una classe che ha esattamente un VintageYear (Anno di invecchiamento).

<owl:Class rdf:ID="Vintage"> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#hasVintageYear"/> <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality> </owl:Restriction> </rdfs:subClassOf> </owl:Class>

Abbiamo specificato la hasVintageYear(ha un anno di invecchiamento) come una proprietà funzionale, che corrisponde anche a dire che ogni Vintage(annata) ha al massimo un solo VintageYear(anno di invecchiamento). Questo tipo di applicazione sulla proprietà Vintage(annata) usando le restrizioni sulla cardinalità, asserisce qualcosa di più forte, ovvero che ogni Vintage ha esattamente uno ed un solo VintageYear.

Espressioni della cardinalità con valori limitati a 0 o 1, fanno parte delle definizioni in OWL Lite. Questo permette all'utente di definire 'almeno uno', 'non più di uno', ed 'esattamente uno'. Valori interi positivi che non siano 0 o 1 sono permessi invece in OWL DL. Il costrutto owl:maxCardinality può essere usato per specificare un limite superiore. Il costrutto owl:minCardinality può essere invece usato per specificare un limite inferiore. Se combinati fra loro, possono essere usati per specificare il limite dell'intervallo numerico di valori che rappresentano la cardinalità della proprietà.

3.4.3. hasValue [OWL DL]

Il costrutto hasValue ci permette di specificare delle classi sulla base dell'esistenza di particolari valori della proprietà. Tuttavia, un individuo sarà un membro di tale classe se almeno uno dei valori della sua proprietà è uguale a quello assunto dalla clausola hasValue.

<owl:Class rdf:ID="Burgundy"> ... <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#hasSugar" /> <owl:hasValue rdf:resource="#Dry" /> </owl:Restriction> </rdfs:subClassOf> </owl:Class>

Qui dichiariamo che tutti i vini di tipo Burgundy sono secchi. Ciò significa che le loro proprietà hasSugar(hanno grado zucchero) devono avere almeno un valore che è uguale a Dry(Secco).

Come per la allValuesFrom e la someValuesFrom, questa è una restrizione locale. Essa è valida solo per la proprietà hasSugar applicata alla classe Burgundy.

4. Ontology Mapping

Pagina 22 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

Affinchè le ontologie abbiano il massimo impatto, esse hanno bisogno di essere ampiamente condivise. In modo da minimizzare lo sforzo intellettuale impiegato nello sviluppo di una ontologia, esse hanno bisogno di poter essere riutilizzate. Nel migliore di tutti i mondi possibili devono essere costituite dalla composizione di più ontologie. Per esempio, si può adottare una ontologia che identifica il concetto di data da una sorgente e il concetto di locazione fisica da un'altra e poi si può estendere la nozione di locazione includendo il periodo di tempo durante il quale viene mantenuta.

E' importante realizzare che la maggior parte dello sforzo dello sviluppo di una ontologia è rivolto all'aggancio tra le classi e le proprietà in un modo che deve massimizzare le implicazioni ottenibili. Vogliamo dunque che delle semplici asserzioni sull'appartenenza ad una classe abbiano ampie ed utili implicazioni. Questa è la parte più difficile dello sviluppo di una ontologia. Se si riesce a trovare una ontologia che è stata già sottoposta ad un ampio uso e differenti revisioni, ha senso il fatto di adottarla.

Sarebbe una sfida molto ardua quella di combinare tra loro un insieme di ontologie. Uno strumento di supporto dovrebbe quindi fornire un valido aiuto per mantenerne la consistenza.

4.1. Equivalenza tra Classi e Proprietà equivalentClass, equivalentProperty Per legare tra loro un insieme di ontologie predefinite in modo da comporne una terza, è frequentemente utile il fatto di essere in grado di indicare che una particolare classe o una proprietà in una ontologia sia equivalente ad una classe o ad una proprietà in una seconda ontologia. Questa capacità deve essere usata con molta attenzione. Se le ontologie una volta combinate tra loro sono contraddittorie, ("Tutte le A sono B" contro "Tutte le A NON sono B") non ci sarà nessuna estensione (nessun individuo nè relazione utile) che soddisferà la combinazione risultante.

Nell'ontologia dei cibi vogliamo fare in modo di collegare le caratteristiche dei vini presenti nelle descrizioni delle portate dei pasti, con l'ontologia dei vini. Una maniera di ottenere questa cosa, può essere il definire una classe nell'ontologia dei cibi (&food;Wine) e poi dichiararla equivalente alla classe esistente nei vini, presente nell'ontologia specifica.

<owl:Class rdf:ID="Wine"> <owl:equivalentClass rdf:resource="&vin;Wine"/> </owl:Class>

La proprietà owl:equivalentClass è usata per indicare che due classi hanno precisamente le stesse istanze. Da notare che in OWL DL, le classi denotano semplicemente insiemi di individui e non sono individui esse stesse. In OWL Full tuttavia, possiamo usare la proprietà owl:sameAs tra due classi per indicare che esse sono identiche sotto tutti gli aspetti.

Naturalmente l'esempio sopra è qualcosa di ridondante, poichè noi possiamo sempre usare la &vin;Wine ogni volta in cui vogliamo usare la classe #Wine ed ottenere lo stesso risultato senza effettuare nessuna ridefinizione. Un caso più interessante potrebbe essere quello in cui dipendiamo dall'uso di due ontologie sviluppate separatamente e in cui si nota che esse usano gli identificatori URI O1:foo e O2:bar per riferirsi alla stessa classe. La proprietà owl:equivalentClass può essere usata per far collassare queste definizioni tra loro in modo che le derivazioni ottenute dalle due ontologie siano effettivamente combinate fra loro.

Abbiamo già visto che le espressioni delle classi possono essere il bersaglio dei costrutti rdfs:subClassOf. Esse possono però anche essere bersaglio di un altro costrutto cioè di owl:equivalentClass. Di nuovo, questo evita il bisogno di ripetere i nomi dell'espressione per ogni classe e fornisce una potente capacità di definizione basata sul soddisfacimento di una proprietà.

Pagina 23 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

<owl:Class rdf:ID="TexasThings"> <owl:equivalentClass> <owl:Restriction> <owl:onProperty rdf:resource="#locatedIn" /> <owl:someValuesFrom rdf:resource="#TexasRegion" /> </owl:Restriction> </owl:equivalentClass> </owl:Class> ¬

Le TexasThings(oggetti Texani) sono esattamente quelle cose che si trovano nella regione del Texas. In questo caso, la differenza tra l'uso della owl:equivalentClass e della rdfs:subClassOf consiste nella differenza tra una condizione necessaria e una condizione necessaria e sufficiente. Con il subClassOf, le cose che si trovano in Texas non sono necessariamente TexasThings(oggetti Texani). Ma, usando invece owl:equivalentClass, se qualcosa si trova in Texas, allora deve necessariamente essere inclusa all'interno della classe di TexasThings(oggetti Texani).

Per collegare fra loro le proprietà in maniera simile usiamo invece la proprietà owl:equivalentProperty.

4.2. Identità fra Individui sameAs Questo meccanismo è simile a quello usato per le classi, ma dichiara invece che sono identici i due individui a cui fa riferimento. Un esempio potrebbe essere:

<Wine rdf:ID="MikesFavoriteWine"> <owl:sameAs rdf:resource="#StGenevieveTexasWhite" /> </Wine> ¬

Questo esempio non ha una grande utilità. Da quello che abbiamo scritto infatti, impariamo solamente che Mike apprezza dei vini locali che non sono costosi. Un uso più tipico della proprietà sameAs potrebbe invece essere quello di uguagliare tra loro individui definiti in differenti documenti, durante la parte di unificazione delle due ontologie.

Questo mette in risalto un punto importante. OWL non ha una assunzione di nome unico (unique name assumption). Significa quindi che se due nomi sono differenti, non è detto che debbano riferirsi a differenti individui.

Nell'esempio precedente, abbiamo asserito l'identità tra due nomi distinti. Ma è anche possibile riuscire a ricavare questo tipo di identità senza doverla specificare precedentemente. Si ricordino le implicazioni che possono essere derivate da una proprietà funzionale. Detto infatti che la proprietà hasMaker è funzionale, le seguenti affermazioni non necessariamente portano ad un conflitto.

<owl:Thing rdf:about="#BancroftChardonnay"> <hasMaker rdf:resource="#Bancroft" /> <hasMaker rdf:resource="#Beringer" /> </owl:Thing> ¬

Se queste non portano ad un conflitto con altre informazioni nella nostra ontologia, semplicemente

Relazioni ImplicazionisubClassOf TexasThings(x) implica locatedIn(x,y) e TexasRegion(y)

equivalentClass TexasThings(x) implica locatedIn(x,y) e TexasRegion(y) locatedIn(x,y) e TexasRegion(y) implica TexasThings(x)

Pagina 24 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

significa che Bancroft = Beringer.

Da sottolineare che usando la sameAs per uguagliare due classi non è lo stesso che uguagliarle con il costrutto equivalentClass; questo porta ad interpretare le classi come individui ed è dunque sufficiente classificare una ontologia mediante OWL Full. In OWL Full la proprietà sameAs può essere usata per uguagliare ogni cosa: una classe ed un individuo, una proprietà ed una classe, etc., e fa in modo da considerare entrambi gli argomenti come individui.

4.3. Individui Differenti differentFrom, AllDifferent Questo meccanismo fornisce l'effetto opposto del sameAs.

<WineSugar rdf:ID="Dry" /> <WineSugar rdf:ID="Sweet"> <owl:differentFrom rdf:resource="#Dry"/> </WineSugar> <WineSugar rdf:ID="OffDry"> <owl:differentFrom rdf:resource="#Dry"/> <owl:differentFrom rdf:resource="#Sweet"/> </WineSugar>

Questo è uno dei modi per asserire che questi tre valori sono mutuamente distinti tra loro. Ci saranno dei casi in cui sarà importante assicurare la distinzione di queste identità. Senza queste distinzioni infatti, noi potremmo descrivere un vino che sia contemporaneamente Dry(secco) e Sweet(dolce). Abbiamo stabilito che la proprietà hasSugar applicata ad un vino, non abbia più di un valore. Se commettiamo un errore e affermiamo che un vino è sia Dry(secco) sia Sweet(dolce), senza definire l'elemento differentFrom come sopra, questo implicherebbe che Dry(secco) e Sweet(dolce) siano la stessa cosa. Imponendo invece l'uso degli elementi come nell'esempio precedente, otterremo invece una contraddizione.

Esiste un altro meccanismo più conveniente per la definizione di un insieme di individui mutuamente distinti. Il seguente esempio afferma che Red(rosso), White(bianco) e Rose(rosato) sono distinti a coppie.

<owl:AllDifferent> <owl:distinctMembers rdf:parseType="Collection"> <vin:WineColor rdf:about="#Red" /> <vin:WineColor rdf:about="#White" /> <vin:WineColor rdf:about="#Rose" /> </owl:distinctMembers> </owl:AllDifferent>

Da notare che il costrutto owl:distinctMembers può essere usato solamente in combinazione con il costrutto owl:AllDifferent.

Nell'ontologia dei vini noi forniamo una asserzione del tipo owl:AllDifferent per ognuno dei WineDescriptor(descrittori dei vini). Affermiamo inoltre che tutte le Winery(Aziende Vinicole) sono differenti fra di loro. Se vogliamo aggiungere un'altra Azienda Vinicola in un'altra ontologia e affermare che è disgiunta da tutte quelle che sono state già definite, noi dovremmo effettuare una operazione di taglia e incolla sulla asserzione originale owl:AllDifferent e aggiungere il nuovo produttore nella lista. Non c'è una maniera più semplice di estendere una collezione del tipo owl:AllDifferent in OWL DL. In OWL Full, usando le triple RDF e i costrutti rdf:List, sono

Pagina 25 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

possibili anche altri approcci.

5. Classi complesse [OWL DL] OWL fornisce altri costruttori addizionali per formare le classi. Questi costruttori possono essere usati per creare le cosiddette class expressions(espressioni sulle classi). OWL supporta l'insieme di base delle operazioni sugli insiemi conosciute come unione, intersezione e complemento. Esse sono chiamate rispettivamente owl:unionOf, owl:intersectionOf e owl:complementOf. Inoltre le classi possono anche essere enumerate. Le estensioni di una classe possono essere date esplicitamente mediante il costruttore oneOf. Ed è anche possibile affermare che le estensioni delle classi devono essere disgiunte.

Da notare che le espressioni di classe possono essere annidate tra di loro senza che ci sia bisogno di creare un nome per ogni classe intermedia. Questo permette l'uso di operatori di insieme per la costruzione di classi complesse da classi anonime o da classi con eventuali valori di restrizione.

5.1. Operatori di Insieme intersectionOf, unionOf, complementOf Da ricordare che le estensioni di una classe OWL class sono degli insiemi composti dagli individui che sono membri di quella classe. OWL fornisce i mezzi per manipolare le estensioni di una classe usando gli operatori base di insieme.

5.1.1. Intersezione [alcuni usi di OWL DL]

I seguenti esempi dimostrano l'uso del costrutto intersectionOf(intersezione di).

<owl:Class rdf:ID="WhiteWine"> <owl:intersectionOf rdf:parseType="Collection"> <owl:Class rdf:about="#Wine" /> <owl:Restriction> <owl:onProperty rdf:resource="#hasColor" /> <owl:hasValue rdf:resource="#White" /> </owl:Restriction> </owl:intersectionOf> </owl:Class>

Le classi costruite usando le operazioni di insieme sono piuttosto uguali alle definizioni che abbiamo visto fino a questo momento. I membri della classe sono completamente specificati dall'operatore di insieme. La costruzione effettuata nell'esempio precedente stabilisce che il WhiteWine(Vino Bianco) è esattamente l'intersezione della classe Wine(Vino) con l'insieme delle cose che sono di colore bianco. Ciò significa che se qualcosa è bianco ed è un vino, allora è necessariamente una istanza della classe WhiteWine(Vino Bianco). Senza questo tipo di definizione noi possiamo sapere solo che i vini bianchi sono vini e bianchi, ma non il viceversa. Questo è uno strumento importante per classificare gli individui. (Si noti che 'rdf:parseType="Collection"' è un elemento sintattico necessario.)

<owl:Class rdf:about="#Burgundy"> <owl:intersectionOf rdf:parseType="Collection"> <owl:Class rdf:about="#Wine" /> <owl:Restriction> <owl:onProperty rdf:resource="#locatedIn" />

Pagina 26 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

<owl:hasValue rdf:resource="#BourgogneRegion" /> </owl:Restriction> </owl:intersectionOf> </owl:Class>

Qui definiamo il Burgundy per includere esattamente quei vini che hanno almeno una relazione di tipo locatedIn(contenuto in) con la regione della Bourgogne. Noi avremmo potuto dichiarare una nuova classe ThingsFromBourgogneRegion(cose provenienti dalla regione della Bourgogne) e avremmo potuto usarla come una classe nel costrutto owl:intersectionOf. Dato che non usiamo da nessuna altra parte la ThingsFromBourgogneRegion, la dichiarazione che abbiamo definito sopra è più corta, più chiara e non richiede la creazione di un nome apposito.

<owl:Class rdf:ID="WhiteBurgundy"> <owl:intersectionOf rdf:parseType="Collection"> <owl:Class rdf:about="#Burgundy" /> <owl:Class rdf:about="#WhiteWine" /> </owl:intersectionOf> </owl:Class>

Infine, la classe WhiteBurgundy è esattamente l'intersezione dei vini e dei Burgundies. I Burgundies al contrario, possono essere considerati come quelli che sono cresciuti in Francia e che sono vini secchi. In accordo con quanto stabilito, tutti gli individui che sono vini e che incontrano questi criteri, sono parte dell'estensione della classe detta WhiteBurgundy.

5.1.2. Unione [OWL DL]

Il seguente esempio mostra l'uso del costrutto unionOf. E' usato esattamente nello stesso modo del costrutto intersectionOf:

<owl:Class rdf:ID="Fruit"> <owl:unionOf rdf:parseType="Collection"> <owl:Class rdf:about="#SweetFruit" /> <owl:Class rdf:about="#NonSweetFruit" /> </owl:unionOf> </owl:Class>

La classe Fruit(Frutta) include entrambe le estensioni della classe SweetFruit(Frutta Dolce) e della classe NonSweetFruit(Frutta non dolce).

Da notare come sia completamente differente questo tipo di costrutto di unione dal seguente.

<owl:Class rdf:ID="Fruit"> <rdfs:subClassOf rdf:resource="#SweetFruit" /> <rdfs:subClassOf rdf:resource="#NonSweetFruit" /> </owl:Class> ¬

Questo stabilisce che le istanze di Fruit(Frutta) sono un sottoinsieme dell'intersezione di frutta dolce e non dolce, che ci aspettiamo sia in effetti l'insieme vuoto.

5.1.3. Complemento [OWL DL]

Il costrutto complementOf seleziona tutti gli individui del dominio di interesse che non appartengono ad una certa classe. Solitamente questo si riferisce ad un insieme veramente grande di individui:

<owl:Class rdf:ID="ConsumableThing" /> <owl:Class rdf:ID="NonConsumableThing">

Pagina 27 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

<owl:complementOf rdf:resource="#ConsumableThing" /> </owl:Class>

La classe delle NonConsumableThing(cose non commestibili) include tra i suoi membri tutti gli individui che non appartengono all'estensione delle ConsumableThing(cose commestibili). Questo insieme include tutti i Wine(Vini),le Region(Regioni), etc. E' letteralmente l'insieme di differenza tra la classe owl:Thing e la classe ConsumableThing. Tuttavia, un tipico modo di uso del complementOf è in combinazione con altri operatori di insieme:

<owl:Class rdf:ID="NonFrenchWine"> <owl:intersectionOf rdf:parseType="Collection"> <owl:Class rdf:about="#Wine"/> <owl:Class> <owl:complementOf> <owl:Restriction> <owl:onProperty rdf:resource="#locatedIn" /> <owl:hasValue rdf:resource="#FrenchRegion" /> </owl:Restriction> </owl:complementOf> </owl:Class> </owl:intersectionOf> </owl:Class> ¬

Questo definisce la classe NonFrenchWine come l'intersezione della classe Wine con l'insieme di tutte le cose che non sono collocate in Francia.

5.2. Classi enumerate oneOf [OWL DL] OWL fornisce i mezzi per specificare una classe mediante l'enumerazione diretta dei suoi membri. Questo si ottiene mediante il costrutto oneOf. Da notare che questa definizione specifica completamente l'estensione della classe in modo che nessun altro individuo possa essere dichiarato come appartenente alla classe.

Il seguente esempio definisce una classe WineColor(Colore del Vino) i cui membri sono gli individui White(Bianco), Rose(Rosato) e Red(Rosso).

<owl:Class rdf:ID="WineColor"> <rdfs:subClassOf rdf:resource="#WineDescriptor"/> <owl:oneOf rdf:parseType="Collection"> <owl:Thing rdf:about="#White"/> <owl:Thing rdf:about="#Rose"/> <owl:Thing rdf:about="#Red"/> </owl:oneOf> </owl:Class>

La prima cosa che deve essere messa in evidenza a questo punto, è che nessun altro individuo può essere un valido WineColor poichè la classe è stata definita mediante l'enumerazione.

Ogni elemento del costrutto oneOf deve essere un individuo dichiarato validamente. Un individuo deve appartenere a qualche classe. Nell'esempio precedente ogni individuo è riferito mediante il suo nome. Noi usiamo la classe owl:Thing come un semplice espediente per introdurre il riferimento. Alternativamente noi potremmo aver fatto riferimento agli elementi dell'insieme in accordo al loro tipo specifico, WineColor, come di seguito:

<owl:Class rdf:ID="WineColor">

Pagina 28 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

<rdfs:subClassOf rdf:resource="#WineDescriptor"/> <owl:oneOf rdf:parseType="Collection"> <WineColor rdf:about="#White" /> <WineColor rdf:about="#Rose" /> <WineColor rdf:about="#Red" /> </owl:oneOf> </owl:Class>

Descrizioni più complesse degli individui sono anche validi elementi del costrutto oneOf, come ad esempio:

<WineColor rdf:about="#White"> <rdfs:label>White</rdfs:label> </WineColor> ¬

Per esempi aggiuntivi sull'uso di oneOf, controllarne i Riferimenti.

5.3. Classi Disgiunte disjointWith [OWL DL] La disgiunzione di un insieme di classi può essere espressa usando il costrutto owl:disjointWith. Esso garantisce che un individuo che è membro di una classe non può essere contemporaneamente una istanza di un'altra specifica classe:

<owl:Class rdf:ID="Pasta"> <rdfs:subClassOf rdf:resource="#EdibleThing"/> <owl:disjointWith rdf:resource="#Meat"/> <owl:disjointWith rdf:resource="#Fowl"/> <owl:disjointWith rdf:resource="#Seafood"/> <owl:disjointWith rdf:resource="#Dessert"/> <owl:disjointWith rdf:resource="#Fruit"/> </owl:Class>

L'esempio precedente della Pasta, dimostra l'uso di classi disgiunte multiple. Da notare che in questo caso si afferma che la Pasta è disgiunta da tutte queste altre classi. Non afferma, ad esempio, che la Meat(Carne) e la Fruit(Frutta) sono disgiunte. Per riuscire ad asserire che un insieme di classi è mutuamente disgiunto, deve essere dichiarata una asserzione owl:disjointWith per ogni coppia di classi.

Un requisito comune è quello di definire una classe come l'unione di un insieme di sottoclassi mutuamente disgiunte.

<owl:Class rdf:ID="SweetFruit"> <rdfs:subClassOf rdf:resource="#EdibleThing" /> </owl:Class> <owl:Class rdf:ID="NonSweetFruit"> <rdfs:subClassOf rdf:resource="#EdibleThing" /> <owl:disjointWith rdf:resource="#SweetFruit" /> </owl:Class> <owl:Class rdf:ID="Fruit"> <owl:unionOf rdf:parseType="Collection"> <owl:Class rdf:about="#SweetFruit" /> <owl:Class rdf:about="#NonSweetFruit" /> </owl:unionOf> </owl:Class>

Pagina 29 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

In questo esempio definiamo la classe Fruit(Frutta) esattamente come l'unione della SweetFruit(Frutta Dolce) e della NonSweetFruit(Frutta non dolce). E sappiamo inoltre che queste sottoclassi partizionano esattamente la classe Fruit in due distinte sottoclassi in quanto sono tra di loro disgiunte. Non appena il numero di classi mutuamente disgiunte cresce, il numero delle asserzioni sulle disgiunzioni cresce proporzionalmente secondo n2. Tuttavia nei casi d'uso che abbiamo visto sino ad ora, n è tipicamente piccolo.

Quando n tende a diventare elevato, approcci alternativi possono essere usati per evitare la crescita quadratica del numero di asserzioni. Un metodo di questo tipo è illustrato nella OWL test suite

Il metodo illustrato funziona in questo modo. Descriviamo una classe genitore i quali elementi hanno una proprietà con cardinalità uguale a uno. Ciò significa che ogni istanza deve avere uno ed un solo valore per questa proprietà. Successivamente, per ogni sottoclasse della classe genitore, richiediamo che le sue istanze debbano avere necessariamente un unico valore particolare per la proprietà. In questo modo quindi, nessuna delle sottoclassi distinte può avere dei membri in comune con le altre.

6. Definizione della Versione dell'Ontologia Le Ontologie sono come il software; esse vengono mantenute di continuo e quindi possono cambiare nel tempo. All'interno di un elemento owl:Ontology (come discusso sopra), è possibile collegarsi ad una precedente versione dell'ontologia che si sta definendo. La proprietà owl:priorVersion è usata per fornire questo tipo di collegamento e può essere anche usata per tracciare cronologicamente le diverse versioni di una ontologia.

<owl:Ontology rdf:about=""> ... <owl:priorVersion rdf:resource="http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine"/> ... </owl:Ontology>

L'ontologia indicata è una versione precedente dell'ontologia che si sta definendo.

Le diverse versioni di una ontologia possono non essere compatibili tra di loro. Per esempio, una precedente versione di una ontologia, può contenere delle affermazioni che contraddicono la versione corrente. All'interno dell'elemento owl:Ontology, noi usiamo delle marcature come owl:backwardCompatibleWith e owl:incompatibleWith per indicare la compatibilità o la mancanza di compatibilità con le precedenti versioni dell'ontologia. Se il marcatore owl:backwardCompatibleWith non è dichiarato, allora la compatibilità non deve essere assunta implicitamente. In aggiunta il marcatore owl:versionInfo fornisce un aggancio adatto ai sistemi che effettuano il controllo delle versioni. In opposizione ai tre precedenti marcatori, l'oggetto owl:versionInfo è un letterale e può essere usato per fornire delle annotazioni sulle classi e sulle proprietà in aggiunta alle ontologie.

Per differenti motivi, effettuare la traccia delle versioni in maniera altamente granulare su una intera ontologia non è abbastanza. I manutentori possono voler mantenere informazioni sulla versione per le classi, le proprietà e gli individui e anche questo potrebbe non essere sufficiente. La natura incrementale delle espressioni delle classi in OWL, implica che una ontologia può aggiungere delle restrizioni su una classe definita in un'altra ontologia e anche le stesse restrizioni possono aver bisogno di informazioni relative alla versione.

OWL Full fornisce la potenza espressiva per effettuare ogni sorta di asserzione su una classe ad

Pagina 30 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

esempio, significa che una istanza di un'altra classe o la classe stessa (e non le sue istanze), può avere una proprietà e un valore per quella proprietà. Questo ambiente può essere utilizzato per costruire una ontologia di classi e di proprietà per il tracciamento delle informazioni sulla versione. Lo spazio dei nomi in OWL include due classi predefinite che possono essere usate per questo scopo: owl:DeprecatedClass e owl:DeprecatedProperty. Esse sono utilizzate per indicare che la classe o la proprietà probabilmente cambieranno in maniera incompatibile nelle versioni future:

... <owl:DeprecatedClass rdf:ID="&vin;JugWine" /> <owl:DeprecatedProperty rdf:ID="&vin;hasSeeds" /> ... ¬

E' importante notare che la owl:DeprecatedClass e la owl:DeprecatedProperty non sono dotate di una semantica aggiuntiva e spetta agli sviluppatori di strumenti e agli utenti di OWL di assicurarsi che siano effettivamente utilizzate nella maniera che corretta.

7. Esempi d'uso Una volta che una ontologia di dominio sia diventata disponibile, un largo numero di applicazioni possono essere sviluppate per sfruttarla. In questa sezione descriviamo alcuni esempi di uso nel dominio dei vini.

7.1. Portali dei Vini Oggigiorno esistono numerosi siti che si definiscono portali dei vini. Google ad esempio, fornisce 152,000 riferimenti per la richiesta "wine portal"(Portali del Vino). Uno dei primi risultati della ricerca, un sito chiamato "Wine-Portal.com", fornisce l'accesso a diversi siti. Molti siti che pretendono di essere definiti come Portali del Vino sono più che altro siti informativi. Per esempio il primo sito consigliato dal wine-portal.com, chiamato 'cork cuisine' (www.corkcuisine.com/), fornisce informazioni riguardo l'accoppiamento dei vini e dei cibi, dei vini da regalare, etc.

Continuando a controllare le diverse aree divise per argomento, si possono trovare collezioni di pagine contenenti informazioni e, qualche volta, alcuni servizi correlati con quell'argomento. Per esempio, 'accessori e regali' contiene informazioni su cosa cercare quando si comprano dei vini particolari e contiene inoltre un numero cospicuo di rivenditori online. Un'altra delle macroaree chiamata "shopping" (acquisti) ha una sottoarea chiamata 'wine shopping'(acquisto di vini) nella quale gli utenti possono trovare dei negozi online (o indirizzi di 'street shopping' - negozi classici) classificati e organizzati per regione. Questi due siti sono solo due dei molti esempi che oggi sono rappresentativi della nozione generale di Portale del Vino che forniscono una collezione di informazioni e di servizi collegati con la particolare area di riferimento.

Guardando questi siti più nel dettaglio, non è chiaro fino a che punto essi dipendano oggi dalle ontologie. Per esempio, guardando il codice html delle pagine, non si rivela l'evidenza di un uso di tipo ontologico. Tuttavia è anche chiaro che i siti che sono in grado di sfruttare le ontologie hanno alcune ontologie dei vini a disposizione.

Un semplice uso che si può fare delle ontologie nei portali è quello realtivo all'organizzazione e alla navigazione. L'elenco delle categorie sopra nominate, potrebbe essere generato dai pochi livelli alti delle classi relative ai vini. Le richieste possono sfruttare le ontologie dei vini per ricavare informazioni sul vino di interesse rilevante. Se si effettua la ricerca di un termine contenuto all'interno dell'ontologia, la richiesta può essere espansa con le informazioni relative alle sottoclassi

Pagina 31 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

per trovare delle risposte rilevanti. I portali potrebbero essere fatti per aggiornarsi automaticamente con le informazioni (candidate) relative all'area di interesse. Con delle capacità altamente potenti di ragionamento potrebbero persino identificare dei siti di vendita dei vini e negoziare con loro per includerli come parte integrante del portale.

7.2. Wine Agent (Agente dei vini) Abbiamo cominciato a costituire un wine agent (Agente dei vini) per scopo puramente dimostrativo. Nel nostro progetto iniziale l'obiettivo dell'agente dei vini è quello di raccomandare i vini che possono essere accompagnati alle differenti portate di un pasto. Questa applicazione sfutta l'ontologia usata come base per questa guida. Questa ontologia dei vini è disponibile nella libreria ontologica DAML ed intitolata originariamente con wines.

Un agente personalizzato dei vini può offrire diversi servizi ad una persona. L'agente può essere usato per raccomandare dei vini una volta dato un insieme di restrizioni (come le portate che devono essere servite), può trovare informazioni riguardo un vino particolare o una classe di vini e può cercare accessori appropriati per quel particolare vino (per esempio un tipo particolare di bicchiere adatto alla varietà del vino, etc.).

Sotto, descriviamo un esempio di prototipo che è stato scritto come progetto da uno studente.

Si consideri il seguente scenario: Qualcuno sta programmando una cena e almeno uno degli invitati ha conoscenze sui vini. Il padrone di casa vorrebbe servire dei vini che si accompagnino bene alle portate del menù. Il padrone di casa vorrebbe inoltre apparire colto riguardo i vini che verranno serviti all'evento. Il padrone di casa vorrebbe avere accessori appropriati per la cena. Il padrone di casa potrebbe aver deciso di servire una speciale pasta fresca a base di sugo come portata principale.

Per servire vini appropriati al pasto, il padrone di casa ha bisogno di informazioni riguardo i vini e gli eventuali accoppiamenti con i cibi. Inoltre per apparire colto sui vini, avrebbe beneficio mediante l'accesso a informazioni rilevanti sui vini che potrebbero essere serviti. Per avere accessori appropriati. dovrebbe avere informazioni sugli accessori che potrebbero servire in quella occasione (e che siano all'interno della sua portata economica).

Con una ontologia dei vini a disposizione, una volta fornita la descrizione del pasto, un agente dei vini può suggerire il tipo di vino da servire con il pasto. L'agente può suggerire uno zinfandel come varietà di scelta da abbinare al pasto e in aggiunta, controllando l'ontologia di riferimento, può suggerire un particolare zinfandel, un Marietta Zinfandel. Una volta detto che il vino deve essere uno zinfandel, un agente potrebbe cercare un posto dove acquistare una selezione di zinfandel o potrebbe cercare ulteriormente per un particolare zinfandel come il Marietta. Una volta fornita una ontologia contenente le risorse appropriate per l'acquisto di vini (possibilmente filtrate sul luogo di provenienza del padrone di casa e dei rivenditori) l'agente potrebbe andare su un sito come wine.com ed effettuare una ricerca per lo 'zinfandels' e ritornare una lista di tutti i vini zinfandel in vendita su quel sito. L'agente dei vini potrebbe tentare di trovare un Marietta Zinfandel sia dalla stessa azienda vinicola, sia da altri rivenditori. Esso potrebbe ad esempio trovare (tramite una ricerca su Google o una ricerca strutturata su una selezione particolare di siti) che il sito winelibrary.com ha in vendita un Marietta zinfandel del 1999 ad un prezzo di sconto di $13.99. L'agente dei vini potrebbe a questo punto utilizzare un filtro aggiunivo, come gli intervalli di prezzo, fornito dall'utente o come suggerimento di prezzo basato sulla qualità del vino.

L'agente dei vini può ora cercare di fornire informazioni riguardanti lo zinfandel in generale o il Marietta Zinfandel in particolare. Potrebbe usare una ontologia di riferimento per trovare informazioni riguardanti vini particolari. Per esempio la descrizione delle aziende vinicole e dei loro

Pagina 32 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

recenti zinfandel prodotti può essere utile. Alre informazioni aggiuntive da fonti convalidate come ad esempio il Wine Spectator possono anche essere utili. Se non viene trovata nessuna recensione disponibile sul Marietta Zinfandel, può essere utile cercare informazioni correlate come recensioni su zinfandel della stessa regione ovvero, in questo caso, zinfandel provenienti dalla Contea di Sonoma in California.

Anche altre nozioni generali possono essere utili. Il padrone di casa potrebbe avere voglia di leggere alcuni libri sui vini in generale o sullo zinfandel in particolare. Ad esempio il padrone di casa potrebbe essere interessato nei libri che la Amazon.com ha in vendita sullo zinfandel. Il padrone di casa potrebbe inoltre essere interessato ad informazioni riguardanti vini provenienti dalla stessa regione e quindi potrebbe essere interessato anche al Sonoma zinfandel. Un agente dei vini può avereinformazioni tipiche di base che sono collegate con le sue aree maggiori di conoscenza. Per esempio questo agente dei vini deve trattare l'accoppiamento di cibi e di vini quindi dovrebbe avere delle informazioni gratuite e/o a pagamento su questo argomento, così come viene descritto nell'articolo del Wine Spectator su Come accoppiare il cibo e il vino..

Il padrone di casa potrebbe inoltre voler acquistare degli accessori appropriati prima dell'evento. Il vino viene servito in bicchieri di vino e differenti varietà di vini sono servite meglio in differenti tipi di bicchieri. Per esempio se il padrone di casa ha scelto delle portate per cui lo zinfandel è appropriato, potrebbe voler sapere che il Riedel è un noto produttore di bicchieri per il vino. Potrebbe inoltre voler essere messo in contatto con il Wine Enthusiast (un ottimo fornitore di prodotti per il vino) ed essere avvertito del fatto che il Wine Enthusiast vende un insieme di 4 bicchieri di tipo Riedel Vinum Zinfandel al prezzo di $63.95 (con un prezzo scontato di $59.95 se si comprano due confezioni da 4 bicchieri). Il padrone di casa potrebbe inoltre essere interessato al fatto che Amazon.com ha dei bicchieri di tipo Reidel's Sommelier Zinfandel single stem glass a disposizione a $49.99 (rispetto un prezzo di listino di $65.00). Amazon ha inoltre gli stessi bicchieri da vino in gruppi da 6 (invece dei 4 della wine enthusiast) a $79.99 (rispetto ad un prezzo di listino di $119.40). Un agente dei vini potrebbe fornire una lista comparativa dei diversi bicchieri che si adattano al pasto (per esempio quelli che sono appropriati per essere usati con lo zinfandel) e che siano ordinati in relazione al prezzo o ad altri criteri scelti da una lista di proprietà nell'ontologia.

Il padrone di casa potrebbe volere anche altri accessori per il vino. Dall'ontologia sappiamo che anche i cavatappi sono accessori per il vino. L'ontologia potrebbe codificare delle sottoclassi di cavatappi o queste informazioni potrebbero essere ricavate anche dai siti di vini. Il Wine Enthusiast ha un set di cavatappi che sono da loro raccomandati (con la descrizione dei tipi e degli intervalli di prezzo). Essi distinguono inoltre i cavatappi in base al tipo (a livello, da cameriere, stazionario, ruotante e a pompa) e il padrone di casa potrebbe volere informazioni riguardo i differenti tipi.

L'agente dei vini può essere implementato a diversi livelli di precisione in base alla conoscenza delle ontologie del dominio, delle informazioni e dei siti di riferimento. In questo esempio abbiamo esplorato solo le informazioni riguardanti i vini, le diverse varietà, la combinazione e l'accopiamento con i cibi, alcuni accessori per i vini e le loro proprietà correlate. Potremmo naturalmente espandere il tutto includendo informazioni e restrizioni imposte dall'utente.

Un esempio di questo agente dei vini in continua evoluzione è disponibile al seguente indirizzo.

Riconoscimenti Questo documento è il risultato delle discussioni di approfondimento all'interno di tutto il Web Ontology Working Group. I partecipanti a questo Gruppo di Lavoro includono: Yasser alSafadi, Jean-François Baget, James Barnette, Sean Bechhofer, Jonathan Borden, Frederik Brysse, Stephen

Pagina 33 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

Buswell, Jeremy Carroll, Dan Connolly, Peter Crowther, Jonathan Dale, Jos De Roo, David De Roure, Mike Dean, Larry Eshelman, Jérôme Euzenat, Tim Finin, Nicholas Gibbins, Sandro Hawke, Patrick Hayes, Jeff Heflin, Ziv Hellman, James Hendler, Bernard Horan, Masahiro Hori, Ian Horrocks, Jane Hunter, Francesco Iannuzzelli, Rüdiger Klein, Natasha Kravtsova, Ora Lassila, Massimo Marchiori, Deborah McGuinness, Enrico Motta, Leo Obrst, Mehrdad Omidvari, Martin Pike, Marwan Sabbouh, Guus Schreiber, Noboru Shimizu, Michael Sintek, Michael K. Smith, John Stanton, Lynn Andrea Stein, Herman ter Horst, David Trastour, Frank van Harmelen, Bernard Vatant, Raphael Volz, Evan Wallace, Christopher Welty, Charles White, and John Yanosy.

Alcuni testi importanti iniziali sulle restrizioni complesse sono stati scritti da Raphael Volz, Forschungszentrum Informatik (FZI). Approfondimenti sostanziali sono stati forniti dal DAML+OIL Walkthru. Jeremy Carroll, Jerome Euzenat, Jeff Heflin, Kevin Page and Peter F. Patel-Schneider hanno fornito delle correzioni fondamentali. Al WG Face to Face, 8 October 2002, Stephen Buswell, Ruediger Klein, Enrico Motta, e Evan Wallace hanno fornito una revisione dettagliata dell'ontologia con il risultato di cambiamenti sostanziali. Al WG Face to Face, 10 January 2003, Jonathan Dale, Bernard Horan, Guus Schreiber, e Jeff Heflin hanno fornito delle revisioni dettagliate della Guida con dei notevoli cambiamenti. La revisione pubblica ha fornito numerosi e utilissimi suggerimenti e correzioni.

Glossario OWL Attribute (Attributo)

come in XML Class Definition (Definizione di classe)

termine informale per definire un owl:Class element Class Description (Descrizione di classe)

descrive una classe OWL sia mediante il nome di una classe sia specificandone l'estensione in caso di classe anonima

Class name (Nome della Classe) termine informale per indicare il valore dell'attributo rdf:ID di una owl:Class

Class (Classe) come in RDF

Component (Componente) una delle parti di una definizione ad esempio gli argomenti del costrutto intersection-of nella definizione di una classe

Concept (Concetto) termine informale per rappresentare le astrazioni nel "dominio" che le ontologie descrivono

Constraint (Limitazione) termine informale per discutere gli effetti di una restrizione

Data-valued Property (Proprietà del Valore dei dati) Termine alternativo per definire le proprietà dei tipi di dato

Datatype Property (Proprietà dei tipi di dato) è una proprietà OWL che collega gli individui agli opportuni valori dei dati

Datatype (Tipo di Dato) un tipo di dato RDFS, quasi sempre uno dei tipi di dato costruiti in XML Schema

Element (Elemento) (1) come in XML (2) un elemento di un insieme

Entity (Entità) come in XML

Imports Closure (assunzione di chiusura nell'importazione)

Pagina 34 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

le informazioni in un documento ontologico, più le informazioni di chiusura importate da altri documenti ontologici

Individual-valued Property (Proprietà del valore dell'individuo) termine alternativo per rappresentare la Object Property

Individual (Individuo) una istanza di una classe OWL, ad esempio, una risorsa che appartiene all'estensione di una classe OWL

Instance Of (Istanza di) la relazione tra un individuo e una classe

Instance (istanza) un membro dell'estensione di una classe OWL

Name (nome) come nello spazio dei nomi in XML

Named Class (Classe con nome) una classe OWL con un identificatore associato

Node (Nodo) come nei grafi RDF

OWL Class (Classe OWL) una classe RDFS cha appartiene all'estensione di classe di una owl:Class

Object Property (Proprietà dell'oggetto) una proprietà OWL che mette in relazioni individui con altri individui

Object (Oggetto) (1) l'oggeto in una tripla RDF (2) un termine alternativo per rappresentare un individuo (usato per ragioni storiche)

Ontology Document (Documento Ontologico) un documento web contenente una ontologia, generalmente indicato dalla presenza di un elemento owl:Ontology nel documento

Ontology (Ontologia) (1) una collezione di informazioni, generalmente contenente informazioni su classi e proprietà (2) le informazioni contenute in un documento ontologico

Property Definition (Definizione di proprietà) termine informale per un elemento owl:ObjectProperty e/o un elemento owl:DatatypeProperty

Resource (Risorsa) un elemendo del dominio RDF del discorso

Restriction, global (Restrizione, Globale) riservato per la discussione del dominio e dell'intervallo di riferimento delle proprietà

Restriction, local (Restrizione, Locale) [vedere sotto]

Restriction (Restrizione) Solitamente una parte dell'espressione di una classe o un'affermazione che esprime una restrizione valida solo localmente

Set (Insieme) un insieme matematico

Statement (Affermazione) Come nei grafi RDF

Type (Tipo) come in RDF (rdf:type)

URI reference (identificatore URI) come in RDF

Unnamed Class (Classe non nominata) una classe OWL senza nessun identificatore associato, normalmente un componenete di una restrizione

Vocabulary (Vocabolario) un isieme di riferimenti URI

Pagina 35 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

Indice dei termini e riferimenti incrociati Indice dei Termini

Guide, Bibliografia e Riferimenti Semantici Incrociati

Termine Sezioneanonymous class 3.2.1. class 3.1.3. cardinality 3.4.2. complement 5.1.3. datatype 3.2.1. datatype property 3.2.1. domain 3.2.1. entailed 1. enumerated 5. extension 3.1. instance of 3.1.3. intersectionOf 5.1.1. imports 2.2. individual 3.1.3. instance 3.1.3. monotonic 2. object properties 3.2.1. ontology 1. open world 2. OWL DL 1.1. OWL Full 1.1. OWL Lite 1.1. property 3.2.1. range 3.2.1. restriction class 3.4.1. union 5.1.2. unique names 4.2.

OWL Guide OWL Reference OWL Semanticsowl:AllDifferent / 4.3. owl:AllDifferent owl:AllDifferentowl:allValuesFrom / 3.4.1. owl:allValuesFrom owl:allValuesFromowl:AnnotationProperty / 2.2. owl:AnnotationProperty owl:AnnotationPropertyowl:backwardCompatibleWith / 6. owl:backwardCompatibleWith owl:backwardCompatibleWith

Pagina 36 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

owl:cardinality / 3.4.2. owl:cardinality owl:cardinalityowl:Class / 3.1.1. owl:Class owl:Classowl:complementOf / 5.1.3. owl:complementOf owl:complementOf owl:DataRange owl:DataRangeowl:DatatypeProperty / 3.2.2. owl:DatatypeProperty owl:DatatypePropertyowl:DeprecatedClass / 6. owl:DeprecatedClass owl:DeprecatedProperty / 6. owl:DeprecatedProperty owl:differentFrom / 4.3. owl:differentFrom owl:differentFromowl:disjointWith / 5.3. owl:disjointWith owl:disjointWithowl:distinctMembers / 4.3. owl:distinctMembers owl:distinctMembersowl:equivalentClass / 4.1. owl:equivalentClass owl:equivalentClassowl:equivalentProperty / 4.1. owl:equivalentProperty owl:equivalentPropertyowl:FunctionalProperty / 3.3. owl:FunctionalProperty owl:FunctionalPropertyowl:hasValue / 3.4.3. owl:hasValue owl:hasValueowl:imports / 2.2. owl:imports owl:importsowl:incompatibleWith / 6. owl:incompatibleWith owl:incompatibleWithowl:intersectionOf / 5.1.1. owl:intersectionOf owl:intersectionOfowl:InverseFunctionalProperty / 3.3. owl:InverseFunctionalProperty owl:InverseFunctionalPropertyowl:inverseOf / 3.3. owl:inverseOf owl:inverseOfowl:maxCardinality / 3.4.2. owl:maxCardinality owl:maxCardinalityowl:minCardinality / 3.4.2. owl:minCardinality owl:minCardinalityowl:Nothing / 3.1.1. owl:Nothing owl:Nothingowl:ObjectProperty / 3.2.1. owl:ObjectProperty owl:ObjectPropertyowl:oneOf / 5.2. owl:oneOf owl:oneOfowl:onProperty / 3.4. owl:onProperty owl:onPropertyowl:Ontology / 2.2. owl:Ontology owl:Ontology owl:OntologyProperty owl:OntologyPropertyowl:priorVersion / 6. owl:priorVersion owl:priorVersionowl:Restriction / 3.4. owl:Restriction owl:Restrictionowl:sameAs / 4.2. owl:sameAs owl:sameAsowl:someValuesFrom / 3.4.1. owl:someValuesFrom owl:someValuesFromowl:SymmetricProperty / 3.3. owl:SymmetricProperty owl:SymmetricPropertyowl:Thing / 3.1.1. owl:Thing owl:Thingowl:TransitiveProperty / 3.3. owl:TransitiveProperty owl:TransitivePropertyowl:unionOf / 5.1.2. owl:unionOf owl:unionOfowl:versionInfo / 6. owl:versionInfo owl:versionInfo rdf:List rdf:nilrdf:type rdf:typerdfs:comment / 2.2. rdfs:commentrdfs:Datatype / 3.2.2. rdfs:Datatyperdfs:domain / 3.2.1. rdfs:domain rdfs:domainrdfs:label / 3.1.1. rdfs:labelrdfs:Literal / 3.3. rdfs:Literal

Pagina 37 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

Bibliografia OWL [OWL Semantics and Abstract Syntax]

OWL Web Ontology Language Semantics and Abstract Syntax , Peter F. Patel-Schneider, Patrick Hayes, and Ian Horrocks, Editors. W3C Recommendation, 10 February 2004, http://www.w3.org/TR/2004/REC-owl-semantics-20040210/. Latest version available at http://www.w3.org/TR/owl-semantics/.

[OWL Overview] OWL Web Ontology Language Overview , Deborah L. McGuinness and Frank van Harmelen, Editors. W3C Recommendation, 10 February 2004, http://www.w3.org/TR/2004/REC-owl-features-20040210/. Latest version available at http://www.w3.org/TR/owl-features/.

[OWL Reference] OWL Web Ontology Language Reference , Mike Dean and Guus Schreiber, Editors. W3C Recommendation, 10 February 2004, http://www.w3.org/TR/2004/REC-owl-ref-20040210/. Latest version available at http://www.w3.org/TR/owl-ref/.

[OWL Requirements] OWL Web Ontology Language Use Cases and Requirements , Jeff Heflin, Editor. W3C Recommendation, 10 February 2004, http://www.w3.org/TR/2004/REC-webont-req-20040210/. Latest version available at http://www.w3.org/TR/webont-req/.

[OWL Test Cases] OWL Web Ontology Language Test Cases , Jeremy J. Carroll and Jos De Roo, Editors. W3C Recommendation, 10 February 2004, http://www.w3.org/TR/2004/REC-owl-test-20040210/. Latest version available at http://www.w3.org/TR/owl-test/.

Standard W3C correlati [RDF]

Resource Description Framework (RDF) Model and Syntax Specification , Ora Lassila, Ralph R. Swick, Editors. World Wide Web Consortium Recommendation, 1999, http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/. Latest version available at http://www.w3.org/TR/REC-rdf-syntax/.

[RDFS] RDF Vocabulary Description Language 1.0: RDF Schema , Dan Brickley and R.V. Guha, Editors. W3C Recommendation, 10 February 2004, http://www.w3.org/TR/2004/REC-rdf-schema-20040210/ . Latest version available at http://www.w3.org/TR/rdf-schema/.

[RDF Concepts] Resource Description Framework (RDF): Concepts and Abstract Syntax, Graham Klyne and Jeremy J. Carroll, Editors. W3C Recommendation, 10 February 2004, http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/. Latest version available at http://www.w3.org/TR/rdf-concepts/.

rdfs:range / 3.2.1. rdfs:range rdfs:rangerdfs:subClassOf / 3.1.1. rdfs:subClassOf rdfs:subClassOfrdfs:subPropertyOf / 3.2.1. rdfs:subPropertyOf rdfs:subPropertyOf

Pagina 38 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

[RDF Semantics] RDF Semantics , Patrick Hayes, Editor. W3C Recommendation, 10 February 2004, http://www.w3.org/TR/2004/REC-rdf-mt-20040210/. Latest version available at http://www.w3.org/TR/rdf-mt/.

[RDF Syntax] RDF/XML Syntax Specification (Revised) , Dave Beckett, Editor. W3C Recommendation, 10 February 2004, http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210/. Latest version available at http://www.w3.org/TR/rdf-syntax-grammar.

[URI] Uniform Resource Identifiers (URI): Generic Syntax , T. Berners-Lee, R. Fielding, and L. Masinter, IETF Draft Standard August, 1998 (RFC 2396).

[XML Base] XML Base, Jonathan Marsh, Editor. W3C Recommendation, 27 June 2001, http://www.w3.org/TR/2001/REC-xmlbase-20010627/. Latest version available at http://www.w3.org/TR/xmlbase/.

[XML Namespaces] Namespaces in XML , Tim Bray, Dave Hollander, Andrew Layman, Editors. W3C Recommendation, Jan 1999, http://www.w3.org/TR/1999/REC-xml-names-19990114/. Latest version available at http://www.w3.org/TR/REC-xml-names.

[XML] Extensible Markup Language (XML) 1.0 , Tim Bray, Jean Paoli, C. M. Sperberg-McQueen, Editors. W3C Recommendation, 10 February 1998, http://www.w3.org/TR/1998/REC-xml-19980210. Latest version available at http://www.w3.org/TR/REC-xml.

[XML Schema 1] XML Schema Part 1: Structures, Henry S. Thompson, David Beech, Murray Maloney, and Noah Mendelsohn, Editors. W3C Recommendation, 2 May 2001, http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/. Latest version available at http://www.w3.org/TR/xmlschema-1/.

[XML Schema 2] XML Schema Part 2: Datatypes, Paul V. Biron, Ashok Malhotra, Editors. W3C Recommendation, 2 May 2001, http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/. Latest version available at http://www.w3.org/TR/xmlschema-2/.

Esempi di Ontologie e Applicazioni [Integrating Applications]

Integrating Applications on the Semantic Web , James Hendler, Tim Berners-Lee, and Eric Miller. Journal of the Institute of Electrical Engineers of Japan, Vol 122(10), October, 2002, p. 676-680.

[VerticalNet] Industrial Strength Ontology Management , Aseem Das, Wei Wu, and Deborah L. McGuinness. Stanford Knowledge Systems Laboratory Technical Report KSL-01-09 2001. In the Proceedings of the International Semantic Web Working Symposium, Stanford, CA, July 2001.

[Wine Ontology From Daml.org] http://www.daml.org/ontologies/76

[Wine Ontology / CLASSIC Tutorial] Classic Knowledge Representation System Tutorial , Deborah L. McGuinness, Peter F. Patel-Schneider, Richmond H. Thomason, Merryll K. Abrahams, Lori Alperin Resnick, Violetta

Pagina 39 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

Cavalli-Sforza, and Cristina Conati. AT&T Bell Laboratories and University of Pittsburgh, 1994.

[Wine Ontology Tutorial] Ontology Development 101: A Guide to Creating Your First Ontology, Natalya Fridman Noy and Deborah L. McGuinness. Stanford Knowledge Systems Laboratory Technical Report KSL-01-05 and Stanford Medical Informatics Technical Report SMI-2001-0880, March 2001.

[Wine Ontology in CLASSIC] Living with CLASSIC: When and How to Use a KL-ONE-Like Language , Ronald J. Brachman, Deborah L. McGuinness , Peter F. Patel-Schneider , Lori Alperin Resnick , and Alex Borgida. In Principles of Semantic Networks: Explorations in the representation of knowledge, John Sowa, Editor. Morgan-Kaufmann, San Mateo, California, 1991, pages 401--456.

Ricerche correlate a linguaggi KR [DAML+OIL]

DAML+OIL W3C Submission, Includes reference description, both model theoretic and axiomatic semantics, annotated walkthrough and examples. Annotated DAML+OIL Ontology Markup , Dan Connolly, Frank van Harmelen, Ian Horrocks, Deborah McGuinness, Peter F. Patel-Schneider, Lynn Andrea Stein. December 2001.

[DAML-ONT] DAML-ONT initial release at http://www.daml.org/2000/10/daml-ont.html.

[DAML-ONT KIF] Partial DAML-ONT axiomatization at http://www.daml.org/2000/10/DAML-Ont-kif-axioms-001107.html. Defined in KIF (http://logic.stanford.edu/kif/kif.html).

[Description Logics] The Description Logic Handbook: Theory, Implementation and Application , Franz Baader, Diego Calvanese, Deborah L. McGuinness, Daniele Nardi, and Peter F. Patel-Schneider, Editors. Cambridge University Press, 2002.

[MCF] Meta Content Framework Using XML , R.V. Guha and Tim Bray. Netscape Communications, 6 June 1997.

[Part Whole] A Taxonomy of Part-Whole Relations. M. Winston, R. Chaffin & D. Herrmann. Cognitive Science, 11:417-444, 1987.

[XOL] XOL: An XML-Based Ontology Exchange Language, Peter D. Karp, Vinay K. Chaudhri, and Jerome F. Thomere. Technical Report 559. AI Center, SRI International, 333 Ravenswood Ave., Menlo Park, CA 94025, Jul 1999.

Approfondimenti e Home Pages [Dublin Core]

Dublin Core Metadata at home page, http://dublincore.org/. [Dublin Core XML]

Expressing Dublin Core in RDF/XML, Dave Beckett, Eric Brickley, and Dan Brickley. Dublin Core Metadata Initiative. July 31, 2002, http://dublincore.org/documents/2001/11/28/dcmes-xml/.

[KAON] The Karlsruhe Ontology and Semantic Web Tool Suite at http://kaon.semanticweb.org.

[OIL]

Pagina 40 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

OIL Home Page at http://oil.semanticweb.org/. [Ontobroker]

The Ontobroker home page at http://ontobroker.aifb.uni-karlsruhe.de/index_ob.html. Institute AIFB, University of Karlsruhe.

[Ontoknowledge] Ontoknowledge Home Page at http://www.ontoknowledge.org/.

[RDF Home] RDF: Resource Description Framework. Background information at http://www.w3.org/RDF/.

[SHOE] Simple HTML Ontology Extensions (SHOE) home page at http://www.cs.umd.edu/projects/plus/SHOE/. University of Maryland.

[KR] KR Home Page at http://kr.org/.

Appendice A: XML + RDF Basics Questa appendice fornisce collegamenti alle introduzioni sugli standards da cui dipende OWL.

Per apprendere pienamente la sintassi e la semantica di OWL dovresti avere familiarità con i fondamenti degli standards del W3C e IETF elencati sotto. Una guida introduttiva a XML e RDF è fornita nei primi due collegamenti.

l Appendix to the DAML+OIL Walkthru

l URI - Uniform Resource Identifier l XML - eXtensible Markup Language l XML Namespaces l XML Schema l RDF - Resource Description Framework l RDF Schema

Appendice B: Storia The Resource Description Framework (RDF) è stato il primo linguaggio specificato dal W3C per rappresentare le informazioni semantiche su risorse arbitrarie. RDF Schema (RDFS) è un candidato dal W3C raccomandato per l'estensione di RDF per descriverne il vocabolario. RDFS può essere usato per creare ontologie, ma è appositamente più leggero e con meno potenza espressiva dell'OWL.

Come OWL, RDFS include classi e proprietà, così come include anche intervalli di valori e limitazioni sul dominio delle proprietà. Fornisce gerarchie con ereditarietà sia per le classi che per le proprietà. Dopo la sua uscita, gli utenti hanno subito cominciato a richiedere caratteristiche aggiuntive che includevano i tipi di dato, enumerazione e l'abilità di definire le proprietà in maniera più rigorosa.

Altri sforzi nella comunità di ricerca sono stati già fatti per esaminare questo tipo di caratteristiche. Per quelli che vogliono addentrarsi più approfonditamente in questo campo, una lista parziale di

Pagina 41 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

progetti e linguaggi può essere la seguente:

l DAML - DARPA Agent Markup Language l DAML-ONT l MCF - Meta Content Framework. l Ontobroker l On-To-Knowledge l OIL - Ontology Inference Layer l SHOE - Simple HTML Ontology Extensions l XOL

Invece di continuare con differenti linguaggi ontologici per il Web Semantico, un gruppo di ricercatori, che comprendono molti dei partecipanti sia ai gruppi per OIL che per DAML-ONT, si sono riuniti insieme nel Joint US/EU ad hoc Agent Markup Language Committee per creare un nuovo linguaggio ontologico. Questo linguaggio, il DAML+OIL costruito su OIL e DAML-ONT, fu sottoposto al W3C come base per OWL e fu selezionato successivamente come punto di partenza per OWL.

In aggiunta ai linguaggi ontologici, differenti tassonomie e ontologie preesistenti, sono state già usate commercialmente. Nei siti di commercio elettronico, esse aiutano la comunicazione automatizzata fra compratore e venditore, abilitano l'integrazione verticale dei mercati e permettono descrizioni che possono essere riutilizzate in differenti mercati. Un esempio di sito che sta facendo un uso commerciale delle ontologie è:

l VerticalNet Vertical Net correntemente gestisce 59 industrie specifiche e mercati elettronici che spaziano su diversi campi come il manifatturiero, le comunicazioni, l'energetico e la sanità.

Sono state sviluppate diverse ontologie mediche e riferite alle droghe per aiutare ad organizzare l'enorme massa di informazioni mediche e biomediche che solitamente sono difficili da collegare insieme in maniera coesiva. Una delle maggiori risorse è il Gene Ontology Consortium che sta utilizzando le ontologie per definire

l Funzioni Molecolari, l Processi Biologici, l Componenti delle Cellule.

Questo sito ha anche dei collegamenti ad ontologie per

l attributi sulle sequenze, l attributi sui prodotti genetici, l sostanze chimiche, l linne guida, l anatomia, l patologia, l caratteristiche fisiche, l attributi per gli esperimenti, l classificazione.

Esistono inoltre grandi tassonomie in uso al giorno d'oggi che potrebbero essere utilizzate per completare le estensioni dello spazio OWL. Per esempio, la North American Industry Classification System (NAICS) definisce una gerarchia su più di 1900 elementi che identificano i diversi tipi di industrie. NAICS è anche in strtto contatto con l'International Standard Industrial Classification System (ISIC, Revision 3), sviluppato e mantenuto dalle Nazioni Unite.

Pagina 42 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm

Appendice C: Registro dei Cambiamenti dall'Ultima Versione Rilasciata, 15 Dicembre 2003

l Correto un tipo (da allValuesFrom a someValuesFrom) nell'esempio 4.1 per le TexasThings. l Aggiunta del collegamento per owl:AnnotationProperty. l In 3.1.1. è stato aggiunto il prefisso esplicito dell'ontologia per l'esempio sulla sintassi di

'about'. l E' stato aggiunto un riferimento incrociato per la descrizione dell'uso di owl:oneOf nei

Riferimenti alla fine del paragrafo 5.2. l Sono state fatte diverse correzioni minori suggerite dai messaggi provenienti dai commenti del

public-webont-comments. l Sono state modificate le citazioni per garantire la consistenza con altri documenti OWL. l Sono stati sistemati i tipi relativi alla numerazione nei riferimenti dello spazio dei nomi.

Pagina 43 di 43OWL Web Ontology Language Guide

07/02/2006http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm