Web Ontology Language

Da Wikipedia, l'enciclopedia libera.
Jump to navigation Jump to search

Il Web Ontology Language (OWL) è un linguaggio di markup per rappresentare esplicitamente significato e semantica di termini con vocabolari e relazioni tra gli stessi. Esistono varie versioni del linguaggio, che differiscono molto tra di loro.

Lo scopo di OWL è descrivere delle basi di conoscenze, effettuare delle deduzioni su di esse e integrarle con i contenuti delle pagine Web. OWL intende rendere possibile, ad esempio:

  • ricerche nel Web che superino i problemi di omonimia e ambiguità presenti nelle normali ricerche testuali;
  • applicazioni che effettuino delle deduzioni sui dati.

La rappresentazione dei termini e delle relative relazioni è chiamata ontologia.

Insieme a RDF, di cui è un'estensione,[1] OWL fa parte del progetto del web semantico.

Semantica[modifica | modifica wikitesto]

Il linguaggio OWL è costituito da una semantica formale costruita dal consorzio W3C sulla base dello standard XML chiamato RDF. I due maggiori rilasci di specifiche di tale semantica sono chiamate OWL[2] (detto anche OWL1, 2004) e OWL2[3] (2009). OWL2 è completamente compatibile con OWL1[4].

Decidibilità[modifica | modifica wikitesto]

Uno dei problemi maggiori delle ontologie è la scelta della potenza espressiva. La logica del primo ordine è infatti molto potente ma non è decidibile, ossia non è possibile costruire un algoritmo che, dati uno o più assiomi, dica in tempo finito se un'affermazione segue o non segue logicamente da tali assiomi. Ovviamente questo è sconveniente dal punto di vista dell'utilizzo pratico, perché si vorrebbe avere una base di conoscenza che risponda in maniera prevedibile alle richieste, e non dia informazioni in base alle deduzioni fatte fino a quel momento. Gli approcci al problema sono dunque:

  • selezionare una logica meno potente della logica del primo ordine che abbia meno poter espressivo ma sia decidibile;
  • rinunciare alla decidibilità operando in un contesto di affidabilità parziale della base di dati.

Alcune versioni di OWL, quelle più usate, sono basate sul primo approccio.

Logiche[modifica | modifica wikitesto]

Per scegliere un sottoinsieme della logica del prim'ordine che sia decidibile si è utilizzata la logica proposizionale aumentandone la potenza aggiungendo delle logiche rappresentate per convenzione con delle sigle:

Lettera o sigla della logica Descrizione
AL Inclusione e equivalenza tra classi, definizione di classi atomiche, classe universo, intersezione tra classi, definizioni di classi formate da elementi che prendono parte a relazioni o hanno una relazione di un certo tipo solo con elementi di una certa classe, operatore di congruenza tra individui e appartenenza di un individuo a una classe
ALC aggiunge ad AL la classe vuota, le classi complemento, l'unione di classi e le classi di elementi che sono in una certa relazione con elementi di una certa classe
S Aggiunge ad ALC la definizione della transitività di una relazione
H Inclusione e equivalenza tra relazioni
R disgiunzione di proprietà, riflessività, asimmetria, irriflessività, relazioni composte da altre relazioni, definizione di non-relazione tra due individui
O (One of) creazione di classi tramite elenco di tutti e soli gli individui contenuti
I (Inverse) definizione di proprietà inversa
F (Functionality) definizione di proprietà funzionali
N (Number) restrizione di cardinalità: numero di elementi che partecipano a una certa relazione minore, maggiore o uguale di un valore n
Q (Qualified) come N, ma la relazione può essere qualificata
Dn (Numerable Domain) definizione di domini (tipi di dato) a cui può portare una relazione (es. "Mario ha n anni")

Versioni[modifica | modifica wikitesto]

Esistono diverse versioni di OWL, molto diverse tra di loro.

OWL DL[modifica | modifica wikitesto]

Utilizza SHOIN(Dn), è decidibile e ha procedure di deduzione con complessità ben conosciute.

OWL Lite[modifica | modifica wikitesto]

Utilizza SHIF(Dn), è semplice da implementare ma ha basso potere espressivo

OWL Full[modifica | modifica wikitesto]

Utilizza la logica del primo ordine, addirittura espandendola con altri predicati. È quindi molto espressivo ma indecidibile.

OWL 2[modifica | modifica wikitesto]

Raccomandato dal W3C dal 2009, è basato su SROIQ(Dn)

Sintassi[modifica | modifica wikitesto]

La famiglia di linguaggi OWL supporta una varietà di sintassi. È utile distinguere sintassi di alto livello finalizzate alla specifica da sintassi di scambio più adatte all'uso generale.

Alto livello[modifica | modifica wikitesto]

Questi sono vicini alla struttura ontologica dei linguaggi nella famiglia OWL.

Sintassi astratta OWL[modifica | modifica wikitesto]

La sintassi di alto livello viene utilizzata per specificare la struttura e la semantica dell'ontologia OWL[5].

La sintassi astratta OWL presenta un'ontologia come una sequenza di annotazioni, assiomi e fatti. Le annotazioni contengono metadati orientati alla macchina e all'uomo. Le informazioni sulle classi, proprietà e individui che compongono l'ontologia sono contenute solo in assiomi e fatti. Ogni classe, proprietà e individuo è anonimo o identificato da un riferimento URI. I fatti indicano dati su un individuo o su una coppia di identificatori individuali (che gli oggetti identificati sono distinti o uguali). Gli assiomi specificano le caratteristiche delle classi e delle proprietà. Questo stile è simile ai linguaggi dei frame e abbastanza dissimile dalle ben note sintassi per DL e Resource Description Framework (RDF)[5].

Sean Bechhofer, et al. sostengono che sebbene questa sintassi sia difficile da analizzare, è abbastanza concreta. Concludono che la sintassi astratta del nome può essere fuorviante.

Sintassi funzionale OWL2[modifica | modifica wikitesto]

Questa sintassi segue da vicino la struttura di un'ontologia OWL2. Viene utilizzato da OWL2 per specificare semantiche, mappature per scambiare sintassi e profili[6].

Sintassi di Exchange[modifica | modifica wikitesto]

Sintassi RDF[modifica | modifica wikitesto]

Le mappature sintattiche in RDF sono specificate[5][7] per i linguaggi nella famiglia OWL. Sono stati ideati diversi formati di serializzazione RDF. Ciascuno porta a una sintassi per le lingue della famiglia OWL attraverso questa mappatura. RDF/XML è normativo[5][7].

Sintassi XML OWL2[modifica | modifica wikitesto]

OWL2 specifica una serializzazione XML che modella da vicino la struttura di un'ontologia OWL2[8].

Sintassi di Manchester[modifica | modifica wikitesto]

La sintassi di Manchester è una sintassi compatta e leggibile dall'uomo con uno stile vicino ai linguaggi dei frame. Sono disponibili variazioni per OWL e OWL2. Non tutte le ontologie OWL e OWL2 possono essere espresse in questa sintassi[9].

Esempi[modifica | modifica wikitesto]

Il W3C OWL 2 Web Ontology Language fornisce esempi di sintassi[10].

Ontologia del tè[modifica | modifica wikitesto]

Si consideri un'ontologia per il tè basata su una classe di tè. Innanzitutto, è necessario un identificatore di ontologia. Ogni ontologia OWL deve essere identificata da un URI (http://www.example.org/tea.owl per esempio). Questo esempio fornisce un senso della sintassi.

Sintassi funzionale OWL2
Ontology(<http://example.org/tea.owl>
  Declaration( Class( :Tea ) )
)
Sintassi XML OWL2
 <Ontology ontologyIRI="http://example.org/tea.owl" ...>
   <Prefix name="owl" IRI="http://www.w3.org/2002/07/owl#"/>
   <Declaration>
     <Class IRI="Tea"/>
   </Declaration>
 </Ontology>
Sintassi di Manchester
Ontology: <http://example.org/tea.owl>
Class: Tea
Sintassi RDF / XML
<rdf:RDF ...>
    <owl:Ontology rdf:about=""/>
    <owl:Class rdf:about="#Tea"/>
</rdf:RDF>
RDF/Turtle
 <http://example.org/tea.owl> rdf:type owl:Ontology .
 :Tea  rdf:type            owl:Class .

Terminologia[modifica | modifica wikitesto]

I linguaggi della famiglia OWL sono in grado di creare classi, proprietà, definire istanze e le sue operazioni.

Istanze[modifica | modifica wikitesto]

Un esempio è un oggetto. Corrisponde ad una descrizione logica individuale.

Classi[modifica | modifica wikitesto]

Una classe è una raccolta di oggetti. Una classe può contenere individui, istanze della classe. Una classe può avere un numero qualsiasi di istanze. Un'istanza può appartenere a nessuno, a una o più classi.

Una classe può essere una sottoclasse di un'altra, ereditando le caratteristiche dalla sua superclasse genitrice. Ciò corrisponde alla sussunzione logica e all'inclusione del concetto DL annotata.

Tutte le classi sono sottoclassi di owl:Thing (DL Top type notato ), la classe radice.

La classe e i suoi membri possono essere definiti in OWL sia per estensione che per intensione. A un individuo può essere esplicitamente assegnata una classe da un'asserzione di Classe, ad esempio possiamo aggiungere un'affermazione La Regina Elisabetta è una (un'istanza di) umana, o da un'espressione di classe con dichiarazioni ClassExpression ogni istanza della classe umana che ha un valore femminile alla proprietà del sesso è un'istanza della classe delle donne.

Esempio[modifica | modifica wikitesto]

Chiamiamo umano la classe di tutti gli umani nel mondo è una sottoclasse di owl:Thing. La classe di tutte le donne (quindi donna) nel mondo è una sottoclasse di umani. Quindi abbiamo:

Si può notare l'appartenenza di qualche individuo a una classe

ClassAssertion ( umano George_Washington )

e inclusione di classe

SubClassOf ( donna umano ) 

Il primo significa "George Washington è un umano" e il secondo "ogni donna è umana".

Proprietà[modifica | modifica wikitesto]

Una proprietà è una caratteristica di una classe: una relazione binaria diretta che specifica un attributo vero per le istanze di quella classe. Le proprietà a volte agiscono come valori di dati o collegamenti ad altre istanze. Le proprietà possono mostrare caratteristiche logiche, ad esempio, essendo transitive, simmetriche, inverse e funzionali. Le proprietà possono anche avere domini e intervalli.

Proprietà del tipo di dati[modifica | modifica wikitesto]

Le proprietà dei tipi di dati sono relazioni tra istanze di classi e valori letterali RDF o tipi di dati dello schema XML. Ad esempio, modelName (di tipo stringa) è la proprietà della classe Manufacturer. Sono formulati usando il carattere owl:DatatypeProperty.

Proprietà degli oggetti[modifica | modifica wikitesto]

Le proprietà degli oggetti sono relazioni tra istanze di due classi. Ad esempio, OwnedBy può essere una proprietà del tipo di oggetto della classe Vehicle e può avere un intervallo che è la classe Person. Sono formulati usando owl:ObjectProperty.

Operatori[modifica | modifica wikitesto]

Le lingue nella famiglia OWL supportano varie operazioni su classi come unione, intersezione e complemento. Consentono inoltre l'enumerazione delle classi, la cardinalità, la disgiunzione e l'equivalenza.

Metaclassi[modifica | modifica wikitesto]

Le metaclassi sono classi di classi. Sono consentiti in OWL completo o con una funzionalità chiamata giochi di parole di classe / istanza.

Note[modifica | modifica wikitesto]

  1. ^ (EN) OWL Web Ontology Language Reference, su w3.org, World Wide Web Consortium, 10 febbraio 2004. URL consultato il 31 marzo 2017 (archiviato il 31 marzo 2017).
  2. ^ (EN) OWL Web Ontology Language Reference, su w3.org. URL consultato il 15 agosto 2018.
  3. ^ (EN) OWL 2 Web Ontology Language Document Overview (Second Edition), su w3.org. URL consultato il 15 agosto 2018.
  4. ^ (EN) OWL 2 Web Ontology Language Document Overview (Second Edition) - Relationship to OWL1, su w3.org. URL consultato il 15 agosto 2018.
  5. ^ a b c d Peter F. Patel-Schneider, Ian Horrocks e Hayes Patrick J., OWL Web Ontology Language Semantics and Abstract Syntax, su w3.org, World Wide Web Consortium, 10 febbraio 2004. URL consultato il 18 aprile 2010.
  6. ^ Sean Bechhofer, Peter F. Patel-Schneider e Daniele Turi, OWL Web Ontology Language Concrete Abstract Syntax, su owl.man.ac.uk, University of Manchester, 10 dicembre 2003. URL consultato il 18 aprile 2010.
  7. ^ a b Peter F. Patel-Schneider e Boris Motik, OWL 2 Web Ontology Language Mapping to RDF Graphs, in OWL 2 Web Ontology Language, World Wide Web Consortium, 27 ottobre 2009. URL consultato il 18 aprile 2010.
  8. ^ Boris Motik, Bijan Parsia e Peter F. Patel-Schneider, OWL 2 Web Ontology Language XML Serialization, in OWL 2 Web Ontology Language, World Wide Web Consortium, 27 ottobre 2009. URL consultato il 18 aprile 2010.
  9. ^ Matthew Horridge e Peter F. Patel-Schneider, OWL 2 Web Ontology Language Manchester Syntax, in W3C OWL 2 Web Ontology Language, World Wide Web Consortium, 27 ottobre 2009. URL consultato il 18 aprile 2010.
  10. ^ Pascal Hitzler, Markus Krötzsch, Bijan Parsia, Peter F. Patel-Schneider e Sebastian Rudolph, OWL 2 Web Ontology Language Primer, in OWL 2 Web Ontology Language, World Wide Web Consortium, 27 ottobre 2009. URL consultato il 15 ottobre 2013.

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

Controllo di autoritàLCCN (ENsh2018001881 · GND (DE4396527-1
  Portale Internet: accedi alle voci di Wikipedia che trattano di internet