Web Ontology Language: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
+stub |
m →Logiche: formatto logiche descrittive |
||
(63 versioni intermedie di 36 utenti non mostrate) | |||
Riga 1:
Il '''Web Ontology Language''' ('''OWL''') è un [[linguaggio di markup]] per rappresentare esplicitamente significato e [[Semantica (informatica)|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 [[Base di conoscenza|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 (informatica)|ontologia]].
Insieme a [[Resource Description Framework|RDF]], di cui è un'estensione,<ref>{{cita web|url=https://www.w3.org/TR/owl-ref/#Semantics|titolo=OWL Web Ontology Language Reference|urlarchivio=https://web.archive.org/web/20170331180601/https://www.w3.org/TR/owl-ref/#Semantics|sito=w3.org|editore=[[World Wide Web Consortium]]|lingua=en|urlmorto=no|data=10 febbraio 2004|dataarchivio=31 marzo 2017|accesso=31 marzo 2017}}</ref> OWL fa parte del progetto del [[web semantico]].
== Semantica ==
Il linguaggio OWL è costituito da una [[Semantica (informatica)|semantica formale]] costruita dal consorzio [[World Wide Web Consortium|W3C]] sulla base dello standard [[XML]] chiamato [[Resource Description Framework|RDF]]. I due maggiori rilasci di specifiche di tale semantica sono chiamate OWL<ref>{{Cita web|url=https://www.w3.org/TR/owl-ref/|titolo=OWL Web Ontology Language Reference|lingua=en|accesso=15 agosto 2018}}</ref> (detto anche OWL1, [[2004]]) e OWL2<ref>{{Cita web|url=https://www.w3.org/TR/owl2-overview/|titolo=OWL 2 Web Ontology Language Document Overview (Second Edition)|lingua=en|accesso=15 agosto 2018}}</ref> ([[2009]]). OWL2 è completamente compatibile con OWL1<ref>{{Cita web|url=https://www.w3.org/TR/owl2-overview/#Relationship_to_OWL_1|titolo=OWL 2 Web Ontology Language Document Overview (Second Edition) - Relationship to OWL1|lingua=en|accesso=15 agosto 2018}}</ref>.
== Decidibilità ==
Uno dei problemi maggiori delle ontologie è la scelta della potenza espressiva. La [[logica del primo ordine]] è infatti molto potente ma non è [[Decidibilità|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 ===
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:
{| class="wikitable"
|-
! Lettera o sigla della logica !! Descrizione
|-
| <math>\mathcal{AL}</math> || 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
|-
| <math>\mathcal{ALC}</math> || 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
|-
| <math>\mathcal{S}</math> || Aggiunge ad ALC la definizione della transitività di una relazione
|-
| <math>\mathcal{H}</math> || Inclusione e equivalenza tra relazioni
|-
| <math>\mathcal{R}</math> || disgiunzione di proprietà, riflessività, asimmetria, irriflessività, relazioni composte da altre relazioni, definizione di non-relazione tra due individui
|-
| <math>\mathcal{O}</math> (One of) || creazione di classi tramite elenco di tutti e soli gli individui contenuti
|-
| <math>\mathcal{I}</math> (Inverse) || definizione di proprietà inversa
|-
| <math>\mathcal{F}</math> (Functionality) || definizione di proprietà funzionali
|-
| <math>\mathcal{N}</math> (Number) || restrizione di cardinalità: numero di elementi che partecipano a una certa relazione minore, maggiore o uguale di un valore n
|-
| <math>\mathcal{Q}</math> (Qualified) || come N, ma la relazione può essere qualificata
|-
| <math>\mathcal{D}_n</math> (Numerable Domain) || definizione di domini ([[tipi di dato]]) a cui può portare una relazione (es. "Mario ha n anni")
|}
== Versioni ==
Esistono diverse versioni di OWL, molto diverse tra di loro.
=== OWL DL ===
Utilizza SHOIN(D<sub>n</sub>), è decidibile e ha procedure di deduzione con complessità ben conosciute.
=== OWL Lite ===
Utilizza SHIF(D<sub>n</sub>), è semplice da implementare ma ha basso potere espressivo
=== OWL Full ===
Utilizza la logica del primo ordine, addirittura espandendola con altri predicati. È quindi molto espressivo ma indecidibile.
=== OWL 2 ===
Raccomandato dal [[W3C]] dal 2009, è basato su SROIQ(D<sub>n</sub>)
== Sintassi ==
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 ===
Questi sono vicini alla struttura ontologica dei linguaggi nella famiglia OWL.
==== Sintassi astratta OWL ====
La sintassi di alto livello viene utilizzata per specificare la struttura e la semantica dell'ontologia OWL<ref name="owl:spec:semantics_and_syntax4">{{cita web|url=http://www.w3.org/TR/2004/REC-owl-semantics-20040210/syntax.html|titolo=OWL Web Ontology Language Semantics and Abstract Syntax|nome1=Peter F.|cognome1=Patel-Schneider|nome2=Ian|cognome2=Horrocks|nome3=Hayes|cognome3=Patrick J.|linkautore3=Patrick J. Hayes|data=10 febbraio 2004|editore=World Wide Web Consortium|accesso=18 aprile 2010}}</ref>.
La sintassi astratta OWL presenta un'ontologia come una sequenza di ''annotazioni'', ''assiomi'' e ''fatti''. Le annotazioni contengono [[Metadato|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)<ref name="owl:spec:semantics_and_syntax4"/>.
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 ====
Questa sintassi segue da vicino la struttura di un'ontologia OWL2. Viene utilizzato da OWL2 per specificare semantiche, mappature per scambiare sintassi e profili<ref>{{cita web|url=http://owl.man.ac.uk/2003/concrete/20031210/|titolo=OWL Web Ontology Language Concrete Abstract Syntax|nome1=Sean|cognome1=Bechhofer|linkautore1=Sean Bechhofer|nome2=Peter F.|cognome2=Patel-Schneider|nome3=Daniele|cognome3=Turi|linkautore3=Daniele Turi|data=10 dicembre 2003|editore=[[University of Manchester]]|accesso=18 aprile 2010}}</ref>.
=== Sintassi di Exchange ===
==== Sintassi RDF ====
Le mappature sintattiche in RDF sono specificate<ref name="owl:spec:semantics_and_syntax4"/><ref name="owl2:spec:rdf2">{{cita web|url=http://www.w3.org/TR/2009/REC-owl2-mapping-to-rdf-20091027/|titolo=OWL 2 Web Ontology Language Mapping to RDF Graphs|cognome2=Motik|nome2=Boris|cognome1=Patel-Schneider|nome1=Peter F.|data=27 ottobre 2009|opera=OWL 2 Web Ontology Language|editore=World Wide Web Consortium|accesso=18 aprile 2010}}</ref> 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<ref name="owl:spec:semantics_and_syntax4"/><ref name="owl2:spec:rdf2"/>.
==== Sintassi XML OWL2 ====
OWL2 specifica una serializzazione XML che modella da vicino la struttura di un'ontologia OWL2<ref name="owl2:spec:xml">{{cita web|url=http://www.w3.org/TR/2009/REC-owl2-xml-serialization-20091027/|titolo=OWL 2 Web Ontology Language XML Serialization|cognome1=Motik|nome1=Boris|cognome2=Parsia|nome2=Bijan|cognome3=Patel-Schneider|nome3=Peter F.|data=27 ottobre 2009|opera=OWL 2 Web Ontology Language|editore=World Wide Web Consortium|accesso=18 aprile 2010}}</ref>.
==== Sintassi di Manchester ====
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<ref name="ms:note">{{cita web|url=http://www.w3.org/TR/owl2-manchester-syntax/|titolo=OWL 2 Web Ontology Language Manchester Syntax|cognome1=Horridge|nome1=Matthew|linkautore1=Matthew Horridge|cognome2=Patel-Schneider|nome2=Peter F.|data=27 ottobre 2009|opera=W3C OWL 2 Web Ontology Language|editore=World Wide Web Consortium|accesso=18 aprile 2010}}</ref>.
=== Esempi ===
Il ''W3C OWL 2 Web Ontology Language'' fornisce esempi di sintassi<ref name="owl2.primer">{{cita web|url=http://www.w3.org/TR/2009/REC-owl2-primer-20091027/|cognome4=Patel-Schneider|editore=World Wide Web Consortium|opera=OWL 2 Web Ontology Language|data=27 ottobre 2009|linkautore5=Sebastian Rudolph|nome5=Sebastian|cognome5=Rudolph|nome4=Peter F.|nome3=Bijan|titolo=OWL 2 Web Ontology Language Primer|cognome3=Parsia|linkautore2=Markus Krötzsch|nome2=Markus|cognome2=Krötzsch|linkautore1=Pascal Hitzler|nome1=Pascal|cognome1=Hitzler|accesso=15 ottobre 2013}}</ref>.
==== Ontologia del tè ====
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 (''<nowiki>http://www.example.org/tea.owl</nowiki>'' per esempio). Questo esempio fornisce un senso della sintassi.
; Sintassi funzionale OWL2
: <syntaxhighlight lang="turtle">
Ontology(<http://example.org/tea.owl>
Declaration( Class( :Tea ) )
)
</syntaxhighlight>
; Sintassi XML OWL2
: <syntaxhighlight lang="xml">
<Ontology ontologyIRI="http://example.org/tea.owl" ...>
<Prefix name="owl" IRI="http://www.w3.org/2002/07/owl#"/>
<Declaration>
<Class IRI="Tea"/>
</Declaration>
</Ontology>
</syntaxhighlight>
; Sintassi di Manchester
: <syntaxhighlight lang="turtle">
Ontology: <http://example.org/tea.owl>
Class: Tea
</syntaxhighlight>
; Sintassi RDF / XML
: <syntaxhighlight lang="xml">
<rdf:RDF ...>
<owl:Ontology rdf:about=""/>
<owl:Class rdf:about="#Tea"/>
</rdf:RDF>
</syntaxhighlight>
; RDF/Turtle
: <syntaxhighlight lang="turtle">
<http://example.org/tea.owl> rdf:type owl:Ontology .
:Tea rdf:type owl:Class .
</syntaxhighlight>
== Terminologia ==
I linguaggi della famiglia OWL sono in grado di creare classi, proprietà, definire istanze e le sue operazioni.
=== Istanze ===
Un esempio è un oggetto. Corrisponde ad una descrizione logica ''individuale''.
=== Classi ===
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 <math>\top</math>), 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) <var>umana</var>'', o da un'espressione di classe con dichiarazioni ClassExpression ''ogni istanza della classe <var>umana</var> che ha un valore <var>femminile</var> alla proprietà del <var>sesso</var> è un'istanza della classe delle <var>donne</var>''.
==== Esempio ====
Chiamiamo <var>umano</var> la classe di tutti gli umani nel mondo è una sottoclasse di <code>owl:Thing</code>. La classe di tutte le donne (quindi <var>donna</var>) nel mondo è una sottoclasse di <var>umani</var>. Quindi abbiamo:
<math>\textsf{owl:Nothing} \sqsubseteq \textsf{Donna} \sqsubseteq \textsf{Umano} \sqsubseteq \textsf{owl:Thing}</math>
Si può notare l'appartenenza di qualche individuo a una classe
ClassAssertion ( <var>umano George_Washington</var> )
e inclusione di classe
SubClassOf ( <var>donna umano</var> )
Il primo significa "George Washington è un umano" e il secondo "ogni donna è umana".
=== Proprietà ===
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 ====
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 ====
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 ===
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 ===
Le metaclassi sono classi di classi. Sono consentiti in OWL completo o con una funzionalità chiamata giochi di parole di classe / istanza.
== Note ==
<references/>
== Voci correlate ==
* [[Ontologia (informatica)]]
* [[Web semantico]]
* [[Resource Description Framework]]
* [[Teoria del primo ordine]]
* [[Logica descrittiva]]
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* [https://www.w3.org/TR/owl2-new-features/ OWL 2 - New Features and Rationale] nuove funzioni di OWL 2 rispetto a OWL 1
* [https://www.w3.org/TR/owl-features/ OWL Web Ontology Language] definito dal W3C
* [https://www.w3.org/TR/owl-guide/ OWL Web Ontology Language], guida del W3C
{{Web semantico}}
{{Controllo di autorità}}
{{Portale|internet}}
[[Categoria:Linguaggi di ontologie]]
[[Categoria:Standard W3C]]
[[Categoria:Linguaggi di programmazione dichiarativi]]
|