Ontology Web Language (OWL)


“Dimmi quali vini dovrei servire per ognuna delle portate del seguente menù. E, mi raccomando, non mi piace il Sauternes.”

Sarebbe difficile oggi progettare un agente Web che sia capace di effettuare una ricerca che soddisfi questa query. E allo stesso modo sarebbe complesso (se non impossibile) affidare ad un agente software il compito di organizzare un percorso turistico adeguato, in vece di un agente di viaggi. Per supportare questo tipo di elaborazione, è necessario spingersi oltre le keyword e specificare il significato delle risorse descritte sul Web. Questo ulteriore livello d’interpretazione “cattura” la semantica dei dati. Il primo livello richiesto (al di sopra di RDF), affinché il web semantico possa realizzarsi, è un linguaggio che sia in grado di descrivere formalmente il significato della terminologia utilizzata nei documenti. L’OWL è stato progettato per soddisfare queste necessità. Esso è parte della crescente pila di raccomandazioni W3C relative al Semantic Web. L’OWL (Web Ontology Language) è un linguaggio per definire ed istanziare ontologie Web.

“Ontologia” è un termine preso in prestito dalla filosofia che si riferisce alla scienza della descrizione dei tipi di entità esistenti nel mondo reale e del modo in cui esse sono tra loro relazionate; un’ontologia OWL, infatti, può includere la descrizione di classi, proprietà e delle loro istanze. A partire da una siffatta ontologia, la semantica di OWL specifica come derivare le sue logiche conseguenze: fatti non letteralmente presenti nell’ontologia ma implicati da essi. Queste implicazioni possono essere basate su un singolo documento o su documenti multipli, magari distribuiti sulla rete, che sono stati “fusi” tra loro per costituire un unico insieme di fatti sui quali “ragionare”. Ma perché le attuali tecnologie non sono sufficienti? E cosa offrono le ontologie che XML e XML Schema non sono in grado di fornire?

  • l’XML rende disponibile una mera sintassi superficiale per strutturare i documenti, ma non impone nessun vincolo semantico sul loro significato;
  • XML Schema è semplicemente un linguaggio per regolamentare la struttura dei documenti XML ed estendere l’XML attraverso i datatype;
  • RDF è un modello basato sui dati (data-modello) dedicato agli oggetti (“risorse”) ed alle relazioni intercorrenti fra essi; fornisce una semplice semantica e può rappresentare questi data-modelli in sintassi XML;
  • RDF Schema è, in fin dei conti, un vocabolario per descrivere proprietà e classi di risorse definite in RDF, con una semantica basata quasi esclusivamente su gerarchie di generalizzazione/specializzazione.

L’OWL offre, in aggiunta alle caratteristiche citate, nuovi vocabolari per rappresentare le entità del dominio in esame: relazioni tra classi (es. predicare la disgiunzione), cardinalità (es. “esattamente uno”), uguaglianza, una maggiore tipizzazione delle proprietà e delle loro caratteristiche (es. “simmetria”, “transitività”), classi enumerative, e così via. Per quanto concerne il vantaggio di utilizzare ontologie, ci sono almeno due aspetti da considerare.

Un’ontologia differisce da uno schema XML nel fatto che essa si occupa della rappresentazione della conoscenza e non del formato con cui descriverla. Molti standard del Web, proposti da industrie del settore, sono composti da una combinazione di formato e protocollo. Tuttavia a questi standard è stata attribuita soltanto una semantica operativa del tipo: “Subito dopo aver ricevuto questo messaggio PurchaseOrder, trasferisci Amount dollari dal conto AccountFrom a quello AccountTo e spedisci il Product al mittente.” Ma la specifica non è stata progettata per supportare un “ragionamento” al di fuori del contesto della transazione. Per esempio, non è presente un meccanismo per concludere che se Product è di tipo Chardonnay esso deve essere anche un vino bianco.

Uno dei vantaggi delle ontologie OWL sarà la disponibilità di strumenti software in grado di ragionare su di esse. Inoltre, i tool garantiranno un supporto generale alle ontologie, non specifico per un particolare dominio applicativo (come invece può avvenire nell’elaborazione di uno schema XML).

Per la realizzazione di questi “motori di ragionamento” occorre uno sforzo notevole. Costruire un’ontologia, invece, è molto più praticabile. La produzione di ontologie, infatti, è molto diffusa anche in ambito non web-related e stanno comparendo sul mercato (soprattutto grazie all’opera degli istituti universitari) i primi tool per la loro creazione e manipolazione.

I tipi di OWL

Il linguaggio OWL prevede tre sottolinguaggi secondo un livello progressivamente più elevato di espressività:

  • OWL Lite è adatto a quegli utenti che necessitano di una classificazione in gerarchie e di semplici vincoli. Per intendersi, sebbene OWL Lite supporti i vincoli di cardinalità, esso consente solo valori di 0 o 1. È previsto che saranno presto disponibili tool per supportare questa versione più semplice del linguaggio e che quindi essa potrà imporsi come strumento leader nella definizione (e migrazione) di tesauri e tassonomie;
  • OWL DL è stato progettato per quegli utenti che vogliono la massima espressività senza perdere in completezza computazionale (è garantito che tutte le implicazioni saranno computate) e in decidibilità (tutte le computazioni saranno completate in un tempo finito) nei “sistemi di ragionamento”. L’OWL DL include tutti i costrutti del linguaggio al pari delle loro restrizioni, quale la separazione dei tipi: una risorsa dichiarata come classe non può essere allo stesso tempo un individual o una proprietà, ed una proprietà non può essere contemporaneamente anche una classe o un individual. L’OWL DL è così denominato per la sua affinità con le description logics, un campo di ricerca che studia una particolare porzione decisionale della logica di base. Esso è stato progettato proprio per supportare il settore delle description logic esistente, e possiede specifiche proprietà computazionali per i “sistemi di ragionamento”;
  • OWL Full si rivolge agli utenti che vogliono la massima espressività e la “libertà sintattica” di RDF, pur rinunciando alle garanzie computazionali. Ad esempio, in OWL Full una classe può essere trattata simultaneamente come una collezione di individual e come un singolo. OWL Full consente ad un’ontologia di accrescere il significato del vocabolario predefinito (RDF o OWL) a disposizione. È piuttosto improbabile che tutti i software per la gestione delle ontologie saranno in grado di supportare tutte le caratteristiche di OWL Full.

Ognuno di questi sottolinguaggi è un’estensione dei suoi più semplici predecessori, sia in termini di cosa può essere legittimamente espresso sia in cosa può essere effettivamente concluso. Pertanto è importante specificare le relazioni tra le tre varianti. Valgono in particolare le seguenti:

  • Ogni ontologia valida per OWL Lite lo è anche per OWL DL
  • Ogni ontologia valida per OWL DL lo è anche per OWL Full
  • Ogni conclusione valida per OWL Lite lo è anche per OWL DL
  • Ogni conclusione valida per OWL DL lo è anche per OWL Full

Gli sviluppatori di ontologie che vogliano adottare OWL dovrebbero considerare quale tra i sottolinguaggi presentati si adatta meglio alle loro necessità. La scelta tra OWL Lite e OWL DL dipende principalmente dal grado di espressività richiesto dagli utenti. Il primo prevede costrutti semplificati e presenta anche proprietà computazionali altamente desiderabili; l’uso del secondo, invece, comporta, nel caso peggiore, una maggiore complessità. La scelta tra OWL DL e OWL Full è dettata soprattutto dalla necessità di usufruire delle facilities di RDF Schema offerte dal secondo (in particolare la possibilità di definire classi di classi). Ovviamente, per effettuare la migrazione da RDF a OWL DL o OWL Lite occorre assicurarsi che i documenti RDF originali soddisfino i vincoli imposti dal linguaggio di destinazione (OWL Full, invece, è sufficientemente flessibile per assicurare una migrazione diretta). Di seguito è riportata una descrizione della struttura delle ontologie in OWL. Non è intento di questa Tesi fornire i dettagli di implementazione di un’ontologia né definirne la sintassi, argomenti di certo oggetto di numerose altre trattazioni.

La natura delle ontologie

L’OWL, come detto, è una componente delle attività dedicate al Semantic Web. Questi sforzi si pongono l’obiettivo di rendere le risorse presenti sul Web più accessibili e comprensibili per le applicazioni, attraverso l’aggiunta di informazioni supplementari che descrivano i dati sui quali occorre effettuare delle elaborazioni. Poiché il Semantic Web è, per sua natura, una realtà distribuita, l’OWL deve permettere di raccogliere le informazioni tra le più disparate fonti. Questo è in parte realizzato consentendo alle ontologie di collegarsi fra loro, prevedendo meccanismi per l’importazione delle informazioni le une dalle altre. Inoltre il linguaggio non tratta le descrizioni delle risorse come informazioni da confinare in un singolo file o come destinate esclusivamente ad un determinato ambito di validità, ma le considera di valenza globale (open world assumption). Una classe C1, anche se definita originariamente nell’ontologia O1, può essere estesa e/o specializzata in altre ontologie. Questa caratteristica implica che le nuove ontologie non possono ritrattare ciò che è dichiarato in quelle precedenti. Sebbene le nuove informazioni possano essere contraddittorie, i fatti e le implicazioni possono solo essere aggiunti, mai eliminati. L’evenienza di queste contraddizioni è qualcosa che i costruttori di ontologie devono tenere in debita considerazione. Ci si aspetta comunque che saranno tool automatici ad evidenziare queste inconsistenze.

Namespace

Prima di poter utilizzare un insieme di termini, occorre una precisa specifica dei vocabolari che saranno utilizzati. Una prima componente standard di tutte le ontologie include un insieme di dichiarazioni di namespace XML, incluso nel tag di apertura rdf:RDF.

Questa sezione fornisce un metodo per interpretare senza ambiguità gli identificatori e rende il resto dell’ontologia decisamente più leggibile.

Un primo esempio (per la catalogazione dei vini di una cantina), in notazione RDF/XML, è riportato di seguito:

<rdf:RDF
xmlns = "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: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#">

La prima dichiarazione identifica il namespace di default per questa ontologia; dal momento che un qualified name (QName) senza prefisso si riferisce all’ontologia corrente è sempre bene prevedere un’assegnazione di questo tipo. La seconda definisce l’URI base per questo documento che sarà utilizzato per “completare” tutti gli URIref relativi. Il terzo namespace indica che, in questo documento, gli elementi col prefisso owl: devono essere interpretati come riferimenti ai concetti estratti dal namespace associato all’URIref http://www.w3.org/2002/07/owl#. Questa è una dichiarazione convenzionale usata per introdurre il vocabolario OWL. Le restanti dichiarazioni stabiliscono che i prefissi rdf:, rdfs: e xsd: fanno riferimento ai costrutti definiti da RDF e RDF Schema ed ai datatype di XML Schema.

Intestazione e corpo delle ontologie OWL

Una volta definiti i namespace che saranno utilizzati, il secondo passo è includere una collezione di asserzioni che riguardano l’ontologia stessa, raggruppate sotto il tag owl:Ontology (annotation). Queste asserzioni sono definite attraverso tag dedicati e si occupano di specificare commenti, controllo di versione, inclusione di altre ontologie, eccetera.

<owl:Ontology rdf:about="">
<rdfs:comment>Un’ontologia OWL di esempio</rdfs:comment>
<owl:priorVersion rdf:resource="http://example.org/20031215/wine"/>
<owl:imports rdf:resource="http://example.org/20040210/food"/>
<rdfs:label>Ontologia dei Vini</rdfs:label>
...
</owl:Ontology>

In questa sezione si inseriscono di norma tutti i metadati relativi al documento e spesso sono presenti informazioni non direttamente collegate all’ontologia. Questo accade perché tali documenti non sono sempre utilizzati per descrivere un’ontologia nel significato tradizionale del termine: in alcune applicazioni le ontologie non riguardano gli individual ma solo le classi e le proprietà per descrivere, in generale, il dominio di riferimento. L’attributo rdf:about fornisce un nome o un riferimento per l’ontologia. Quando il valore è una stringa vuota, ossia il caso più comune, il nome dell’ontologia è l’URI base dell’elemento owl:Ontology. Tipicamente questo è l’URI del documento che contiene l’ontologia anche se, con l’uso di xml:base, è possibile sostituire quello predefinito. Specificando il tag owl:imports è possibile importare un’ontologia all’interno di un’altra: questo significa che, per l’ontologia corrente, saranno valide tutte le asserzioni presenti nell’ontologia importata. Per utilizzare al meglio l’ontologia importata è conveniente assegnarle un namespace. È bene precisare che l’importazione può anche fallire, fondamentalmente per la non reperibilità o disponibilità delle risorse, problema molto frequente in un ambiente distribuito come il Web. Si noti che, per utilizzare il vocabolario OWL, non è stato necessario importare il file di ontologia owl.rdf ed anzi questa importazione è sconsigliata. Questa sezione è seguita dalle effettive asserzioni che costituiscono l’ontologia, le quali si concludono col tag di chiusura </rdf:RDF> che segna la fine del documento. Un’ontologia scritta in OWL contiene, essenzialmente, una sequenza di annotazioni, assiomi e fatti. Le annotazioni, alcune delle quali già analizzate in precedenza, sono usate per dare un nome all’ontologia, per registrare informazioni sull’autore e sull’ontologia stessa, per importare altre ontologie, ecc.. La parte centrale invece è composta da assiomi e fatti, che forniscono le informazioni sulle classi, sulle proprietà e sugli individual (istanze di proprietà e classi) ad ognuno dei quali è assegnato un identificatore nella forma di un URIref. Innanzitutto è importante chiarire che le classi denotano insiemi di individual; le proprietà, invece, legano gli individual ad altre informazioni e sono divise in quattro gruppi distinti:

  • data-valued, esplicitano i valori delle proprietà degli individual;
  • individual-valued, mettono in relazione un individual con gli altri;
  • annotation, includono commenti riguardo a individual, classi, proprietà e nomi di ontologie;
  • ontology properties, connettono le ontologie tra loro.

In OWL sono previste due classi predefinite, entrambe appartenenti al namespace owl:. La classe con identificatore owl:Thing è la classe di tutti gli individual, la classe owl:Nothing indica, conseguentemente, la classe vuota: entrambe sono parte di OWL Lite. Per quanto riguarda le annotation, ce ne sono molte predefinite in OWL, alcune delle quali mutuate dall’RDF: owl:versionInfo, rdfs:label, rdfs:comment, rdfs:seeAlso, e rdfs:isDefinedBy. Esistono anche proprietà di default per la descrizione dell’ontologia quali owl:imports, owl:priorVersion, owl:backwardCompatibleWith, e owl:incompatibleWith. Per quanto concerne i fatti, essi sono sostanzialmente di due tipologie. La prima tipologia fornisce informazioni riguardo un particolare individual, specificando le classi cui appartiene, le proprietà possedute ed i relativi valori. Ad un individual può essere assegnato un individualID facoltativo (alcuni individual sono anonimi: blank node) che può essere utilizzato per riferirsi ad esso. La seconda tipologia di fatti è utilizzata principalmente per operare sugli identificatori degli individual (renderli identici o distinti). Gli assiomi sono utilizzati per fornire informazioni relativamente a classi e proprietà. In particolare essi sono usati per associare a queste ultime una parziale o completa specifica delle loro caratteristiche. La definizione degli assiomi presenta delle differenze tra OWL Lite e OWL DL. Ogni assioma di classe nella versione Lite contiene una collezione di classi più generali ed una collezione di restrizioni sulle proprietà locali, nella forma di restriction construct. Questi ultimi stabiliscono il range di una proprietà, quanti valori sono permessi, e l’elenco di quelli obbligatori. La classe così specificata è resa equivalente all’intersezione tra le classi e le restrizioni o ad un suo sottoinsieme. In OWL DL un assioma di classe è costituito da un insieme di descrizioni, le quali possono essere classi più generali, restrizioni, set di individual e combinazioni booleane tra queste. Le classi possono inoltre essere specificate tramite enumerazione, rese equivalenti o disgiunte. Le proprietà possono essere equivalenti ad altre o esserne una specializzazione; possono essere rese funzionali, funzionali inverse, simmetriche o transitive, e vi si possono associare domini e range. Tuttavia molte informazioni che riguardano le proprietà sono più agevolmente espresse mediante restrizioni in cui è possibile specificare range validi localmente e cardinalità. In definitiva le ontologie permettono di rappresentare le risorse in maniera più completa di quanto si possa fare con RDF, disponendo di costrutti decisamente più efficaci ed espressivi. È bene ribadire, comunque, che le caratteristiche aggiuntive di cui dispone l’OWL non sono state implementate direttamente in RDF (nonostante queste fossero effettivamente emerse durante la fase di analisi) al fine di soddisfare i requisiti di modularità e stratificazione previsti in sede di progetto.

Caratteristiche di RDF in OWL

Collegate allo Schema RDF, sono incluse le seguenti caratteristiche OWL.

  • Class: una classe definisce un gruppo di individui che sono legati tra di loro perché condividono le stesse proprietà. Per esempio, Deborah e Frank appartengono ambedue alla classe Persona. Le classi possono essere organizzate in una gerarchia di specializzazione usando subClassOf. Esiste una classe integrata molto più generale chiamata Thing che è la classe di tutti gli individui ed è una superclasse di tutte le classi OWL. Esiste anche una classe integrata specifica chiamata Nothing che è la classe che non ha istanze ed è una sottoclasse di tutte le classi OWL.
  • rdfs:subClassOf: gerarchie di classe possono essere create grazie ad una o più istruzioni secondo cui una classe è una sottoclasse di un’altra classe. Per esempio, si può affermare che la classe Persona è una sottoclasse della classe Mammifero. Un ragionatore può dedurre da ciò che se un individuo è una Persona, allora è anche un Mammifero.
  • rdf:Property: le proprietà possono essere usate per stabilire relazioni tra individui oppure da individui a valori di dati. Esempi di proprietà possono essere haFiglioFiglia, haParente, haFratelloSorella, e haEtà. I primi tre esempi possono essere usati per collegare un’istanza di una classe Persona ad un’altra istanza della classe Persona (e pertanto sono occorrenze di ObjectProperty) mentre l’ultimo (haEtà) può essere usato per collegare un’istanza della classe Persona ad un’istanza del tipo di dati NumeroIntero (e pertanto è un’occorrenza di DatatypeProperty). Sia owl:ObjectProperty sia owl:DatatypeProperty sono sottoclassi della classe rdf:Property di RDF.
  • rdfs:subPropertyOf: gerarchie di proprietà possono essere create attraverso una o più istruzioni secondo le quali una proprietà è una sottoproprietà di una o più altre proprietà. Per esempio, si può affermare che haFratelloSorella è una sottoproprietà di haParente. Da ciò un ragionatore può dedurre che se un individuo è collegato ad un altro dalla proprietà haFratelloSorella, allora esso è collegato all’altro dalla proprietà haParente.
  • rdfs:domain: il dominio di una proprietà limita gli individui a cui si applica la proprietà. Se una proprietà collega un individuo ad un altro individuo e se la proprietà ha una classe per uno dei propri domini, allora l’individuo deve appartenere alla classe. Per esempio, si può affermare che la proprietà haFiglioFiglia ha il dominio Mammifero. Un ragionatore può quindi dedurre che se Frank haFiglioFiglia Anna, allora Frank deve essere un Mammifero. Si osservi che rdfs:domain è chiamata limitazione globale in quanto la limitazione viene affermata in base alla proprietà e non solo in base alla proprietà quando è associata con una particolare classe.
  • rdfs:range: la portata (range) di una proprietà limita gli individui che la proprietà può avere come suoi valori. Se la proprietà collega un individuo ad un altro individuo e se la proprietà ha una classe come sua portata, allora l’altro individuo deve appartenere alla classe portata (range). Per esempio, si può dichiarare che la proprietà haFiglioFiglia possiede la portata di Mammifero. Da ciò un ragionatore può dedurre che se Louise è collegata a Deborah attraverso la proprietà haFiglioFiglia (per es., Deborah è la figlia di Louise), allora Deborah è un Mammifero. La portata è anche una limitazione globale tanto quanto il dominio di cui sopra.
  • Individual: gli individui (individuals) sono istanze di classi e le proprietà possono essere usate per collegare un individuo ad un altro. Per esempio, un individuo di nome Deborah può essere descritto come un’istanza di una classe Persona e la proprietà HaDatoreDiLavoro può essere usata per collegare l’individuo Deborah all’individuo StanfordUniversity.
  • equivalentClass: due classi possono essere dichiarate equivalenti (equivalent). Delle classi equivalenti hanno le stesse istanze. L’uguaglianza può essere usata per creare classi sinonime. Per esempio, si può affermare che Macchina è una classe equivalente (equivalentClass) di Automobile. Un ragionatore può dedurre da ciò che qualsiasi individuo che è un’istanza di Macchina può anche essere un’istanza di Automobile e viceversa.
  • equivalentProperty: due proprietà possono essere dichiarate equivalenti. Proprietà equivalenti collegano un individuo allo stesso insieme di altri individui. L’uguaglianza può essere usata per creare proprietà sinonime. Per esempio, si può dichiarare che haGuida è la proprietà equivalente (equivalentProperty) di haCapo. Da ciò un ragionatore può dedurre che se X è collegato a Y grazie alla proprietà haGuida, X è anche collegato a Y grazie alla proprietà haCapo e viceversa. Un ragionatore può anche dedurre che haGuida è una sottoproprietà di haCapo e haCapo è una sottoproprietà di haGuida.
  • sameAs: due individui possono essere dichiarati identici (same). Queste strutture possono essere usate per creare un numero di nomi diversi che si riferiscono allo stesso individuo. Per esempio, si può affermare che l’individuo Deborah è lo stesso individuo di DeborahMcGuinness.
  • differentFrom: si può affermare che un individuo possa essere diverso (different) da un altro individuo. Per esempio, si può affermare che l’individuo Frank è diverso dagli individui Deborah e Jim. Pertanto, se gli individui Frank e Deborah sono entrambi valori di una proprietà dichiarata funzionale (così la proprietà ha al massimo un valore), allora c’è una contraddizione. Affermare in modo esplicito che gli individui sono differenti può essere importante quando si usano linguaggi come OWL (e RDF) che non ipotizza che gli individui hanno uno ed un solo nome. Per esempio, senza nessuna informazione addizionale, un ragionatore non dedurrà che Frank e Deborah si riferiscono ad individui distinti.
  • AllDifferent: un numero di individui può essere dichiarato essere reciprocamente distinto in un’affermazione “tutto diverso” (AllDifferent). Per esempio, si potrebbe affermare che Frank, Deborah e Jim sono reciprocamente distinti grazie all’uso della struttura AllDifferent. A differenza dell’istruzione differentFrom di cui sopra, ciò imporrebbe che Jim e Deborah siano distinti (non solo che Frank è distinto da Deborah e che Frank è distinto da Jim). La struttura AllDifferent è particolarmente utile quando ci sono insiemi di oggetti distinti e quando i modellatori sono interessati nell’imporre l’assunto dell’unicità dei nomi entro quegli insiemi di oggetti. È usato in combinazione con distinctMembers per affermare che tutti i membri di una lista sono distinti e disgiunti a due a due.
  • inverseOf: una proprietà può essere dichiarata essere il contrario (inverse) di un’altra proprietà. Se la proprietà P1 è dichiarata essere il contrario della proprietà P2, e se X è collegato a Y dalla proprietà P2, allora Y è collegato a X dalla proprietà P1. Per esempio, se haFiglioFiglia è il contrario di haGenitore e Deborah haGenitore Louise, allora un ragionatore può dedurre che Louise haFiglioFiglia Deborah.
  • TransitiveProperty: delle proprietà possono essere dichiarate transitive. Data una proprietà transitiva, se la coppia (x,y) è un’istanza della proprietà transitiva P e la coppia (y,z) è un’istanza di P, allora la coppia (x,z) è anche un’istanza di P. Per esempio, se si afferma che antenato è transitivo e se Sara è un’antenata di Louise [per es., (Sara,Louise) è un’istanza della proprietà antenato] e Louise è un’antenata di Deborah [per es., (Louise,Deborah) è un’istanza della proprietà antenato], allora un ragionatore può dedurre che Sara è un’antenata di Deborah [per es., (Sara,Deborah) è un’istanza della proprietà antenato].
    OWL Lite (e OWL DL) impone una condizione secondaria secondo la quale le proprietà transitive (e le loro superproprietà) non possono avere una limitazione maxCardinality 1. Senza questa condizione secondaria, OWL Lite e OWL DL diventerebbero dei linguaggi indimostrabili.
  • SymmetricProperty: delle proprietà possono essere dichiarate simmetriche. Se una proprietà è simmetrica, e se la coppia (x,y) è un’istanza della proprietà simmetrica P, allora la coppia (y,x) è anche un’istanza di P. Per esempio, amico può essere dichiarato essere una proprietà simmetrica. Allora un ragionatore a cui risulta che Frank è un amico di Deborah può dedurre che Deborah è un’amica di Frank.
  • FunctionalProperty: Delle proprietà possono essere dichiarate avere un unico valore. Se una proprietà è una proprietà funzionale (FunctionalProperty), allora essa non possiede più di un valore per ogni individuo (può non avere valori per un individuo). Questa caratteristica è stata descritta come in possesso di un’unica proprietà. FunctionalProperty è una scorciatoia per affermare che la cardinalità minima di una proprietà è zero e quella massima è 1. Per esempio, haPrincipaleDatoreDiLavoro può essere dichiarato essere una FunctionalProperty. Da ciò un ragionatore può dedurre che nessun individuo può avere più di un datore di lavoro principale. Comunque questo non implica che ciascuna Persona debba avere almeno un datore di lavoro principale.
  • InverseFunctionalProperty: delle proprietà possono essere dichiarate inversamente funzionali. Se una proprietà è inversamente funzionale allora il contrario della proprietà è funzionale. Quindi il contrario della proprietà ha al massimo un valore per ogni individuo. Questa caratteristica è anche descritta come una proprietà non ambigua. Per esempio, haNumeroCodicePrevidenzaSocialeUSA (un unico identificatore per i residenti negli USA) può essere dichiarato essere inversamente funzionale (o non ambiguo). Il contrario di questa proprietà (che può essere descritta come èIlNumeroDiPrevidenzaSocialeDi) ha al massimo un valore per ogni individuo nella classe dei numeri della previdenza sociale. Perciò qualsiasi numero della previdenza sociale di una persona è l’unico valore della proprietà èIlNumeroDiPrevidenzaSocialeDi. Da ciò un ragionatore può dedurre che le istanze di due diversi individui non hanno lo stesso numero di previdenza sociale USA. Inoltre, un ragionatore può dedurre che se due istanze di Persona hanno lo stesso numero di previdenza sociale, allora queste due istanze si riferiscono allo stesso individuo.
  • allValuesFrom: la limitazione allValuesFrom viene dichiarata su una proprietà con riferimento ad una classe. Ciò significa che questa proprietà ha su questa particolare classe una limitazione di portata locale associata ad essa. Pertanto se un’istanza della classe è collegata dalla proprietà ad un secondo individuo, allora si può desumere che il secondo individuo sia un’istanza della classe di limitazione della portata locale. Per esempio, la classe Persona può avere una proprietà chiamata haFiglia limitata ad avere allValuesFrom della classe donna. Questo significa che se un individuo persona Louise è collegato dalla proprietà haFiglia all’individuo Deborah, allora un ragionatore può dedurre che Deborah è un’istanza della classe Donna. Questa limitazione permette alla proprietà haFiglia di essere usata con altre classi, come ad esempio la classe Gatto, ed ha una adeguata limitazione di valore associata all’uso della proprietà su quella classe. In questo caso, haFiglia avrebbe una limitazione di portata locale di Gatto quando associata alla classe Gatto ed una limitazione di portata locale di Persona quando associata con la classe Persona. Si noti che un ragionatore non può dedurre solamente da una limitazione allValuesFrom che, in realtà, c’è almeno un valore per la proprietà.
  • someValuesFrom: la limitazione someValuesFrom viene dichiarata su una proprietà con riferimento ad una classe. Una classe particolare può avere una limitazione su una proprietà secondo la quale almeno un valore di quella proprietà è di un certo tipo. Per esempio, la classe DocumentoWebSemantico può avere una limitazione someValuesFrom sulla proprietà haParolaChiave che dichiara che un certo valore della proprietà haParolaChiave dovrebbe essere un’istanza della classe ArgomentoWebSemantico. Questo permette di scegliere molteplici parole chiavi e finché una o più di esse sono delle istanze della classe ArgomentoWebSemantico, allora il documento sarà compatibile con la limitazione someValuesFrom. A differenza di allValuesFrom, someValuesFrom non limita tutti i valori della proprietà ad essere delle istanze della stessa classe. Se mioDocumento è un’istanza della classe DocumentoWebSemantico, allora mioDocumento è collegato dalla proprietà haParolaChiave ad almeno un’istanza della classe ArgomentoWebSemantico. Si osservi che un ragionatore non può dedurre (come potrebbe invece farlo con la limitazione allValuesFrom) che tutti i valori di haParolaChiave sono delle istanze della classe ArgomentoWebSemantico.
  • minCardinality: una cardinalità è dichiarata su una proprietà con riferimento ad una classe particolare. Se una minCardinality di 1 è dichiarata su una proprietà in rapporto ad una classe, allora qualsiasi istanza di quella classe sarà collegato ad almeno un individuo da quella proprietà. Questa limitazione è un altro modo per dire che una proprietà è richiesta di avere un valore per tutte le istanze della classe. Per esempio, la classe Persona non avrebbe nessuna limitazione di cardinalità minima dichiarata sulla proprietà haDiscendente poichè non tutte le persone hanno discendenti. La classe Genitore, comunque, avrebbe una cardinalità minima di 1 sulla proprietà haDiscendente. Se un ragionatore sa che Louise è una Persona, allora niente può essere dedotto circa la cardinalità minima per la proprietà haDiscendente. Una volta che si scopre che Louise è un’istanza di Genitore, allora un ragionatore può dedurre che Louise è collegato ad almeno un individuo dalla proprietà haDiscendente. Da quest’unica informazione, un ragionatore non può dedurre nessun numero massimo di discendenti per le istanze individuali della classe genitore. In OWL Lite le uniche cardinalità minime permesse sono 0 o 1. Una cardinalità minima di zero su una proprietà afferma soltanto (in assenza di ulteriori specifiche informazioni) che la proprietà è opzionale rispetto alla classe. Per esempio, la proprietà haDiscendente può avere una cardinalità minima di zero sulla classe Persona (mentre è stata dichiarata avere la cardinalità minima di uno sulla classe genitore).
  • maxCardinality: si può dichiarare una cardinalità su una proprietà con riferimento ad una particolare classe. Se si dichiara una maxCardinality di 1 su una proprietà rispetto ad una classe, allora qualsiasi istanza di quella classe sarà collegato da quella proprietà ad un individuo al massimo. Una limitazione maxCardinality 1 è a volte chiamata proprietà funzionale o unica. Per esempio, la proprietà èIscrittoListeElettoraliStato sulla classe cittadinoUSA può avere una cardinalità massima di 1 (perchè una persona può votare in un solo stato). Da ciò un ragionatore può dedurre che istanze individuali della classe cittadiniUSA non possono essere collegate a due o più individui distinti attraverso la proprietà éIscrittoListeElettoraliStato. Dalla sola limitazione della cardinalità massima 1, un ragionatore non può dedurre una cardinalità minima di 1. Può essere utile affermare che alcune classi non hanno valori per determinate proprietà. Per esempio, istanze della classe PersonaNonSposata non dovrebbero essere collegate a nessun individuo dalla proprietà haConiuge. Questa situazione è rappresentata dalla cardinalità massima 0 per la proprietà haConiuge sulla classe PersonaNonSposata.
  • cardinality: una cardinalità rappresenta una comodità quando è utile affermare che una proprietà su una classe possiede sia minCardinality 0 che maxCardinality 0 oppure sia minCardinality 1 che maxCardinality 1. Per esempio, la classe Persona ha esattamente un valore per la proprietà haComeMadre. Da ciò un ragionatore può dedurre che due istanze di individui distinti della classe Madre non possono essere valori della proprietà haComeMadre della stessa persona.
  • intersectionOf: OWL Lite permette intersezioni di classi nominate e limitazioni. Per esempio, la classe PersonaImpiegata può essere descritta come l’intersezione di (intersectionOf) Persona e CoseImpiegate (che potrebbero essere definite come delle cose che hanno una cardinalità minima di 1 sulla proprietà haDatoreDiLavoro). Da ciò un ragionatore può dedurre che qualsiasi PersonaImpiegata ha come minimo un datore di lavoro.
  • oneOf: (classi enumerate): delle classi possono essere descritte grazie all’enumerazione degli individui che costituiscono la classe. I membri della classe sono esattamente l’insieme degli individui enumerati. Per esempio, la classe GiorniDellaSettimana può essere descritta enumerando semplicemente gli individui Domenica, Lunedì, Martedì, Mercoledì, Giovedì, Venerdì, Sabato. Da ciò un ragionatore può dedurre la cardinalità massima (7) di qualsiasi proprietà avente giorniDellaSettimana come propria limitazione allValuesFrom.
  • hasValue: (valori della proprietà): una proprietà può essere richiesta di avere un certo individuo come valore (qualche volta chiamato anche valori della proprietà). Per esempio, istanze della classe CittadiniOlandesi possono essere definite come quelle persone che hanno Paesi Bassi come valore della loro nazionalità. (Il valore nazionalità, PaesiBassi, è un’istanza della classe Nazionalità).
  • disjointWith: delle classi possono essere dichiarate essere disgiunte l’una dall’altra. Per esempio, Uomo e Donna possono essere dichiarati classi disgiunte. Da questa affermazione disjointWith, un ragionatore può dedurre un’incoerenza quando un individuo è dichiarato essere un’istanza di ambedue e in modo analogo un ragionatore può dedurre che se A è un’istanza di Uomo, allora A non è un’istanza di Donna.
  • unionOf, complementOf, intersectionOf (combinazioni booleane): OWL DL e OWL Full permettono combinazioni booleane arbitrarie di classi e limitazioni: unionOf, complementOf e intersectionOf. Per esempio, se si usa unionOf, possiamo affermare che una classe comprende cose che sono o cittadiniUSA o cittadiniItaliani. Se si usa complementOf, potremmo affermare che i bambini non sono Anziani (per es. la classe Bambini è una sottoclasse del complemento della classe Anziani). La cittadinanza dell’Unione Europea potrebbe essere descritta come l’unione delle cittadinanze di tutti gli stati membri.
  • minCardinality, maxCardinality, cardinality (cardinalità piena): mentre in OWL Lite, le cardinalità sono limitate al minimo, al massimo o esattamente a 1 o 0, OWL Full permette dichiarazioni di cardinalità per numeri interi arbitrari non negativi. Per esempio la classe DINK (“Dual Income, No Kids” – “Doppio reddito, Nessun bambino”) limiterebbe la cardinalità delle proprietà haReddito alla cardinalità minima di due (mentre la proprietà haFiglioFiglia dovrebbe essere limitata alla cardinalità 0).
  • classi complesse (complex classes) : in molte strutture, OWL Lite limita la sintassi a nomi di classi singole (per es. in dichiarazione di subClassOf o equivalentClass). OWL Full estende questa limitazione per permettere descrizioni di classi arbitrariamente complesse, che sono composte da classi enumerate, limitazioni di proprietà e combinazioni booleane. Inoltre, OWL Full permette che le classi siano usate come istanze (mentre OWL DL e OWL Lite non lo permettono).
1 Stella2 Stelle3 Stelle4 Stelle5 Stelle (2 voti, media: 5,00 di 5)
Loading...
You can leave a response, or trackback from your own site.

Leave a Reply

*