traduzione - ART Research Group

Transcript

traduzione - ART Research Group
OWL Web Ontology Language Guide
Pagina 1 di 43
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
OWL Linguaggio Ontologico per il Web
Guida
OWL Web Ontology Language Guide
Pagina 2 di 43
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.
Raccomandazione W3C del 10 Febbraio 2004
Stato del documento
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,
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.
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.
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.
Si vedano anche le altre traduzioni.
Tutti i commenti sono ben accetti su [email protected] (archivio) così come le
discussioni generali sulle tecnologie correlate presso [email protected] (archivio).
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.
E' disponibile una lista delle implementazioni.
Il W3C conserva anche una lista di qualsiasi divulgazione di brevetto connessa a questo lavoro.
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
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
07/02/2006
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/.
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
07/02/2006
OWL Web Ontology Language Guide
Pagina 3 di 43
Indice
l
l
l
l
l
l
l
l
l
l
l
l
l
l
l
l
l
Pagina 4 di 43
1. Introduzione
Sommario
Stato del Documento
Indice
1. Introduzione
¡ 1.1. Le specie del linguaggio OWL
¡ 1.2. Struttura del Documento
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
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
4. Analisi dell'Ontologia
¡ 4.1. Equivalenza tra Classi e Proprietà
¡ 4.2. Identità tra Individui
¡ 4.3. Individui Differenti
5. Classi Complesse
¡ 5.1. Operatori di Insieme
¡ 5.2. Classi Enumerate
¡ 5.3. Classi Disgiunte
6. Definizione della Versione dell'Ontologia (Ontology Versioning)
7. Esempi di Utilizzo
¡ 7.1. Portale dei Vini
¡ 7.2. Agente dei Vini
Ringraziamenti
Glossario OWL
Indice Analitico e Riferimenti
Bibliografia
Appendice A: XML + RDF Basics
Appendice B: Storia
Appendice C: Registro dei Cambiamenti dall'ultima Versione rilasciata
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
OWL Web Ontology Language Guide
"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
l
07/02/2006
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.
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.
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
07/02/2006
OWL Web Ontology Language Guide
Pagina 5 di 43
OWL fornisce tre sottolinguaggi di espressività crescente che sono stati progettati per essere
utilizzati da determinate comunità di sviluppatori e utenti.
l
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.
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.
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
l
l
l
Ogni ontologia OWL Lite legale è un'ontologia OWL DL legale.
Ogni ontologia OWL DL legale è un'ontologia OWL Full legale.
Ogni conclusione OWL Lite valida è una conclusione OWL DL valida.
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 metamodeling 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
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
Pagina 6 di 43
E delle Fonti OWL.
1.1. Le specie del Linguaggio OWL
l
OWL Web Ontology Language Guide
07/02/2006
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.
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
07/02/2006
OWL Web Ontology Language Guide
Pagina 7 di 43
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#">
OWL Web Ontology Language Guide
Pagina 8 di 43
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.
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: .
<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>
...
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.
Da notare che usiamo '...' per indicare che c'è del testo addizionale che è stato omesso perchè non
inerente a questo specifico esempio.
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:).
L'elemento owl:Ontology è il posto dove è possibile conservare la maggior parte delle metainformazioni 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).
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-guide20040210/wine#merlot". Oppure, alternativamente, possono essere definite delle abbreviazioni
mediante una definizione con il costrutto ENTITY, ad esempio:
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.
<!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#" > ]>
rdfs:comment fornisce l'ovvia capacità
di cui si ha bisogno per commentare una ontologia.
è 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:priorVersion
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-owlguide-20040210/wine#merlot".
owl:imports fornisce un meccanismo di stile di inclusione. owl:imports prende
argomento, identificato dall'attributo rdf:resource.
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
07/02/2006
un singolo
07/02/2006
OWL Web Ontology Language Guide
Pagina 9 di 43
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
Pagina 10 di 43
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
<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>
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
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
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
OWL Web Ontology Language Guide
07/02/2006
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
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
07/02/2006
OWL Web Ontology Language Guide
Pagina 11 di 43
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>
OWL Web Ontology Language Guide
Pagina 12 di 43
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>
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
rdf:type
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
07/02/2006
è una proprietà RDF che lega un individuo ad una classe a cui appartiene.
07/02/2006
OWL Web Ontology Language Guide
Pagina 13 di 43
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 Web Ontology Language Guide
Pagina 14 di 43
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.
<owl:Class rdf:ID="Grape">
...
</owl:Class>
E poi, nell'ontologia dei vini abbiamo anche:
3.1.3. Progettazione secondo l'uso
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.
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.
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.
Nel costruire le ontologie, la distinzione è frequentemente vista in due modi:
3.2. Proprietà semplici
<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.
l
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.
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.
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
07/02/2006
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
l
datatype properties, relazioni tra le istanze appartenenti alle classi e elementi RDF literals o
tipi di dati XML Schema
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).
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
07/02/2006
OWL Web Ontology Language Guide
Pagina 15 di 43
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.
Pagina 16 di 43
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="madeFromGrape">
<rdfs:domain rdf:resource="#Wine"/>
<rdfs:range rdf:resource="#WineGrape"/>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:ID="locatedIn">
...
<rdfs:domain rdf:resource="http://www.w3.org/2002/07/owl#Thing" />
<rdfs:range rdf:resource="#Region" />
</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>
OWL Web Ontology Language Guide
¬
Noi possiamo asserire che LindemansBin65Chardonnay è un vino poichè il dominio di
madeFromGrape è un vino(Wine ).
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>
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>
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 .
<owl:ObjectProperty rdf:ID="hasWineDescriptor">
<rdfs:domain rdf:resource="#Wine" />
<rdfs:range rdf:resource="#WineDescriptor" />
</owl:ObjectProperty>
Possiamo ora descrivere la classe Vintage, discussa precedentemente.
<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à
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
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.
07/02/2006
<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>
¬
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
07/02/2006
OWL Web Ontology Language Guide
Pagina 17 di 43
OWL Web Ontology Language Guide
Pagina 18 di 43
La proprietà vintageOf lega una annata(Vintage) ad un vino(Wine).
3.2.3. Proprietà degli Individui
<owl:ObjectProperty rdf:ID="vintageOf">
<rdfs:domain rdf:resource="#Vintage" />
<rdfs:range rdf:resource="#Wine" />
</owl:ObjectProperty>
Prima descriviamo gli individui appartenenti a Region e Winery e poi possiamo definire il nostro
primo vino:
¬
Metteremo in relazione le proprietà Vintage ai loro anni nella seguente sezione.
<Region rdf:ID="SantaCruzMountainsRegion">
<locatedIn rdf:resource="#CaliforniaRegion" />
</Region>
3.2.2. Proprietà e Tipi di Dati
<Winery rdf:ID="SantaCruzMountainVineyard" />
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.
<CabernetSauvignon
rdf:ID="SantaCruzMountainVineyardCabernetSauvignon" >
<locatedIn
rdf:resource="#SantaCruzMountainsRegion"/>
<hasMaker
rdf:resource="#SantaCruzMountainVineyard" />
</CabernetSauvignon>
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:
xsd:string
xsd:normalizedString xsd:boolean
xsd:decimal
xsd:float
xsd:double
xsd:integer
xsd:nonNegativeInteger xsd:positiveInteger
xsd:nonPositiveInteger xsd:negativeInteger
xsd:long
xsd:int
xsd:short
xsd:byte
xsd:unsignedLong
xsd:unsignedInt
xsd:unsignedShort xsd:unsignedByte
xsd:hexBinary
xsd:base64Binary
xsd:dateTime
xsd:time
xsd:date
xsd:gYearMonth
xsd:gYear
xsd:gMonthDay
xsd:gDay
xsd:gMonth
xsd:anyURI
xsd:token
xsd:language
xsd:NMTOKEN
xsd:Name
xsd:NCName
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à
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.
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)
<owl:Class rdf:ID="VintageYear" />
La proprietà locatedIn è transitiva.
<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}.
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
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.
07/02/2006
<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">
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
07/02/2006
OWL Web Ontology Language Guide
Pagina 19 di 43
<locatedIn rdf:resource="#USRegion" />
</Region>
OWL Web Ontology Language Guide
Pagina 20 di 43
P1(x,y) se e solo se P2(y,x)
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)
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>
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.
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)
<owl:ObjectProperty rdf:ID="adjacentRegion">
<rdf:type rdf:resource="&owl;SymmetricProperty" />
<rdfs:domain rdf:resource="#Region" />
<rdfs:range rdf:resource="#Region" />
</owl:ObjectProperty>
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
<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.
<owl:ObjectProperty rdf:ID="hasMaker" />
3.3.3. Proprietà Funzionale (FunctionalProperty)
<owl:ObjectProperty rdf:ID="producesWine">
<rdf:type rdf:resource="&owl;InverseFunctionalProperty" />
<owl:inverseOf rdf:resource="#hasMaker" />
</owl:ObjectProperty>
¬
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>
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à
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:
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
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.
07/02/2006
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.
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
07/02/2006
OWL Web Ontology Language Guide
Pagina 21 di 43
OWL Web Ontology Language Guide
Pagina 22 di 43
3.4.1. allValuesFrom, someValuesFrom
3.4.2. Cardinalità
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.
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).
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>
<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.
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).
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]
<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>
¬
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.
La differenza tra queste due formulazioni è la differenza che sussite tra i due quantificatori
universale ed esistenziale.
Relazione
Implicazioni
Per tutti i vini, se hanno delle aziende produttrici, tutti i produttori sono delle
allValuesFrom
aziende vinicole.
someValuesFrom Per tutti i vini, essi hanno almeno un produttore che è un'azienda vinicola.
<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.
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.
4. Ontology Mapping
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
07/02/2006
07/02/2006
OWL Web Ontology Language Guide
Pagina 23 di 43
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.
OWL Web Ontology Language Guide
Pagina 24 di 43
<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).
Relazioni
subClassOf
Implicazioni
TexasThings(x) implica locatedIn(x,y) e TexasRegion(y)
TexasThings(x) implica locatedIn(x,y) e TexasRegion(y)
equivalentClass
locatedIn(x,y) e TexasRegion(y) implica TexasThings(x)
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>
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à.
Se queste non portano ad un conflitto con altre informazioni nella nostra ontologia, semplicemente
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
07/02/2006
¬
07/02/2006
OWL Web Ontology Language Guide
Pagina 25 di 43
OWL Web Ontology Language Guide
significa che Bancroft = Beringer.
possibili anche altri approcci.
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.
5. Classi complesse [OWL DL]
4.3. Individui Differenti
differentFrom, AllDifferent
Questo meccanismo fornisce l'effetto opposto del sameAs.
Pagina 26 di 43
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.
<WineSugar rdf:ID="Dry" />
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.
<WineSugar rdf:ID="Sweet">
<owl:differentFrom rdf:resource="#Dry"/>
</WineSugar>
5.1. Operatori di Insieme
<WineSugar rdf:ID="OffDry">
<owl:differentFrom rdf:resource="#Dry"/>
<owl:differentFrom rdf:resource="#Sweet"/>
</WineSugar>
intersectionOf, unionOf, complementOf
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
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
07/02/2006
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" />
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
07/02/2006
OWL Web Ontology Language Guide
Pagina 27 di 43
<owl:hasValue rdf:resource="#BourgogneRegion" />
</owl:Restriction>
</owl:intersectionOf>
</owl:Class>
Pagina 28 di 43
<owl:complementOf rdf:resource="#ConsumableThing" />
</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 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.
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>
OWL Web Ontology Language Guide
¬
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>
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.
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.
5.1.3. Complemento [OWL DL]
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:
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="WineColor">
<owl:Class rdf:ID="NonConsumableThing">
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
07/02/2006
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
07/02/2006
OWL Web Ontology Language Guide
Pagina 29 di 43
OWL Web Ontology Language Guide
Pagina 30 di 43
<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>
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.
Descrizioni più complesse degli individui sono anche validi elementi del costrutto oneOf, come ad
esempio:
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
<WineColor rdf:about="#White">
<rdfs:label>White</rdfs:label>
</WineColor>
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.
¬
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>
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:Class rdf:ID="Fruit">
<owl:unionOf rdf:parseType="Collection">
<owl:Class rdf:about="#SweetFruit" />
<owl:Class rdf:about="#NonSweetFruit" />
</owl:unionOf>
</owl:Class>
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
6. Definizione della Versione dell'Ontologia
OWL Full fornisce la potenza espressiva per effettuare ogni sorta di asserzione su una classe ad
07/02/2006
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
07/02/2006
OWL Web Ontology Language Guide
Pagina 31 di 43
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
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
07/02/2006
OWL Web Ontology Language Guide
Pagina 32 di 43
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
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
07/02/2006
OWL Web Ontology Language Guide
Pagina 33 di 43
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ò avere
informazioni 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.
OWL Web Ontology Language Guide
Pagina 34 di 43
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
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
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)
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
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
07/02/2006
07/02/2006
OWL Web Ontology Language Guide
Pagina 35 di 43
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
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
07/02/2006
OWL Web Ontology Language Guide
Pagina 36 di 43
Indice dei termini e riferimenti incrociati
Indice dei Termini
Termine
anonymous class
class
cardinality
complement
datatype
datatype property
domain
entailed
enumerated
extension
instance of
intersectionOf
imports
individual
instance
monotonic
object properties
ontology
open world
OWL DL
OWL Full
OWL Lite
property
range
restriction class
union
unique names
Sezione
3.2.1.
3.1.3.
3.4.2.
5.1.3.
3.2.1.
3.2.1.
3.2.1.
1.
5.
3.1.
3.1.3.
5.1.1.
2.2.
3.1.3.
3.1.3.
2.
3.2.1.
1.
2.
1.1.
1.1.
1.1.
3.2.1.
3.2.1.
3.4.1.
5.1.2.
4.2.
Guide, Bibliografia e Riferimenti Semantici Incrociati
OWL Guide
owl:AllDifferent / 4.3.
owl:allValuesFrom / 3.4.1.
owl:AnnotationProperty / 2.2.
owl:backwardCompatibleWith / 6.
OWL Reference
owl:AllDifferent
owl:allValuesFrom
owl:AnnotationProperty
owl:backwardCompatibleWith
OWL Semantics
owl:AllDifferent
owl:allValuesFrom
owl:AnnotationProperty
owl:backwardCompatibleWith
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
07/02/2006
OWL Web Ontology Language Guide
owl:cardinality / 3.4.2.
owl:Class / 3.1.1.
owl:complementOf / 5.1.3.
owl:DatatypeProperty / 3.2.2.
owl:DeprecatedClass / 6.
owl:DeprecatedProperty / 6.
owl:differentFrom / 4.3.
owl:disjointWith / 5.3.
owl:distinctMembers / 4.3.
owl:equivalentClass / 4.1.
owl:equivalentProperty / 4.1.
owl:FunctionalProperty / 3.3.
owl:hasValue / 3.4.3.
owl:imports / 2.2.
owl:incompatibleWith / 6.
owl:intersectionOf / 5.1.1.
owl:InverseFunctionalProperty
owl:inverseOf / 3.3.
owl:maxCardinality / 3.4.2.
owl:minCardinality / 3.4.2.
owl:Nothing / 3.1.1.
owl:ObjectProperty / 3.2.1.
owl:oneOf / 5.2.
owl:onProperty / 3.4.
owl:Ontology / 2.2.
owl:priorVersion / 6.
owl:Restriction / 3.4.
owl:sameAs / 4.2.
owl:someValuesFrom / 3.4.1.
owl:SymmetricProperty / 3.3.
owl:Thing / 3.1.1.
owl:TransitiveProperty / 3.3.
owl:unionOf / 5.1.2.
owl:versionInfo / 6.
rdf:type
rdfs:comment / 2.2.
rdfs:Datatype / 3.2.2.
rdfs:domain / 3.2.1.
rdfs:label / 3.1.1.
rdfs:Literal / 3.3.
Pagina 37 di 43
owl:cardinality
owl:cardinality
owl:Class
owl:Class
owl:complementOf
owl:complementOf
owl:DataRange
owl:DataRange
owl:DatatypeProperty
owl:DatatypeProperty
owl:DeprecatedClass
owl:DeprecatedProperty
owl:differentFrom
owl:differentFrom
owl:disjointWith
owl:disjointWith
owl:distinctMembers
owl:distinctMembers
owl:equivalentClass
owl:equivalentClass
owl:equivalentProperty
owl:equivalentProperty
owl:FunctionalProperty
owl:FunctionalProperty
owl:hasValue
owl:hasValue
owl:imports
owl:imports
owl:incompatibleWith
owl:incompatibleWith
owl:intersectionOf
owl:intersectionOf
/ 3.3. owl:InverseFunctionalProperty owl:InverseFunctionalProperty
owl:inverseOf
owl:inverseOf
owl:maxCardinality
owl:maxCardinality
owl:minCardinality
owl:minCardinality
owl:Nothing
owl:Nothing
owl:ObjectProperty
owl:ObjectProperty
owl:oneOf
owl:oneOf
owl:onProperty
owl:onProperty
owl:Ontology
owl:Ontology
owl:OntologyProperty
owl:OntologyProperty
owl:priorVersion
owl:priorVersion
owl:Restriction
owl:Restriction
owl:sameAs
owl:sameAs
owl:someValuesFrom
owl:someValuesFrom
owl:SymmetricProperty
owl:SymmetricProperty
owl:Thing
owl:Thing
owl:TransitiveProperty
owl:TransitiveProperty
owl:unionOf
owl:unionOf
owl:versionInfo
owl:versionInfo
rdf:List
rdf:nil
rdf:type
rdfs:comment
rdfs:Datatype
rdfs:domain
rdfs:domain
rdfs:label
rdfs:Literal
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
07/02/2006
OWL Web Ontology Language Guide
rdfs:range / 3.2.1.
rdfs:subClassOf / 3.1.1.
rdfs:subPropertyOf / 3.2.1.
rdfs:range
rdfs:subClassOf
rdfs:subPropertyOf
Pagina 38 di 43
rdfs:range
rdfs:subClassOf
rdfs:subPropertyOf
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/.
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
07/02/2006
OWL Web Ontology Language Guide
Pagina 39 di 43
[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. PatelSchneider, Richmond H. Thomason, Merryll K. Abrahams, Lori Alperin Resnick, Violetta
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
07/02/2006
OWL Web Ontology Language Guide
Pagina 40 di 43
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-axioms001107.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]
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
07/02/2006
OWL Web Ontology Language Guide
Pagina 41 di 43
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
l
l
l
l
l
l
OWL Web Ontology Language Guide
progetti e linguaggi può essere la seguente:
l
l
l
l
l
l
l
l
DAML - DARPA Agent Markup Language
DAML-ONT
MCF - Meta Content Framework.
Ontobroker
On-To-Knowledge
OIL - Ontology Inference Layer
SHOE - Simple HTML Ontology Extensions
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
Appendix to the DAML+OIL Walkthru
URI - Uniform Resource Identifier
XML - eXtensible Markup Language
XML Namespaces
XML Schema
RDF - Resource Description Framework
RDF Schema
Pagina 42 di 43
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
l
l
Appendice B: Storia
Funzioni Molecolari,
Processi Biologici,
Componenti delle Cellule.
Questo sito ha anche dei collegamenti ad ontologie per
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.
l
l
l
l
l
l
l
l
l
attributi sulle sequenze,
attributi sui prodotti genetici,
sostanze chimiche,
linne guida,
anatomia,
patologia,
caratteristiche fisiche,
attributi per gli esperimenti,
classificazione.
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
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.
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
07/02/2006
07/02/2006
OWL Web Ontology Language Guide
Pagina 43 di 43
Appendice C: Registro dei Cambiamenti
dall'Ultima Versione Rilasciata, 15 Dicembre
2003
l
l
l
l
l
l
l
Correto un tipo (da allValuesFrom a someValuesFrom) nell'esempio 4.1 per le TexasThings.
Aggiunta del collegamento per owl:AnnotationProperty.
In 3.1.1. è stato aggiunto il prefisso esplicito dell'ontologia per l'esempio sulla sintassi di
'about'.
E' stato aggiunto un riferimento incrociato per la descrizione dell'uso di owl:oneOf nei
Riferimenti alla fine del paragrafo 5.2.
Sono state fatte diverse correzioni minori suggerite dai messaggi provenienti dai commenti del
public-webont-comments.
Sono state modificate le citazioni per garantire la consistenza con altri documenti OWL.
Sono stati sistemati i tipi relativi alla numerazione nei riferimenti dello spazio dei nomi.
http://digilander.libero.it/giovannideangelis/OWLWebOntologyLanguageGuida.htm
07/02/2006