Web Ontology Language

linguaggio di programmazione

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.

SemanticaModifica

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

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.

LogicheModifica

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")

VersioniModifica

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

OWL DLModifica

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

OWL LiteModifica

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

OWL FullModifica

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

OWL 2Modifica

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

SintassiModifica

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 livelloModifica

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

Sintassi astratta OWLModifica

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 OWL2Modifica

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 ExchangeModifica

Sintassi RDFModifica

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 OWL2Modifica

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

Sintassi di ManchesterModifica

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].

EsempiModifica

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

Ontologia del tèModifica

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 .

TerminologiaModifica

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

IstanzeModifica

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

ClassiModifica

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.

EsempioModifica

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

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 datiModifica

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 oggettiModifica

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.

OperatoriModifica

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.

MetaclassiModifica

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

NoteModifica

  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 correlateModifica

Collegamenti esterniModifica

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