Partiamo analizzando OWL Lite. Quest’ultimo include le seguenti caratteristiche relative a RDFS:
- Class: una classe definisce un gruppo di individui accomunati dalla condivisione di alcune proprietà. Ad Esempio, Giovanni e Francesco sono entrambi membri della classe Persona. Le classi possono essere organizzate in una gerarchia di specializzazione usando il costrutto subClassOf. La più generica classe predefinita ha nome Thing; essa è la classe di tutti gli individui e una superclasse di tutte le classi OWL. Esiste anche una classe predefinita chiamata Nothing, la più specifica, che non ha alcuna istanza ed è sottoclasse di tutte le classi OWL.
- rdfs:subClassOf: una gerarchia di classi può essere creata dichiarando che una classe è una sottoclasse di un’altra. Per esempio, si può affermare che la classe Persona è una sottoclasse della classe Mammiferi. Da questo un ragionatore può dedurre che se un individuo è una Persona, allora è un Mammifero.
- Individual: gli individual sono istanze di una classe, e le proprietà possono essere usate per legare un individuo ad un altro. Per esempio, un individuo di nome Giovanni può essere descritto come un’istanza della classe Persona e la proprietà è_impiegato può essere usata per legarla all’individuo Politecnico_di_Bari.
Features di RDF Schema: | Class
rdf:Property rdfs:subClassOf rdfs:subPropertyOf rdfs:domain rdfs:range owl:Individual |
Eguaglianze / Diseguaglianze: | equivalentClass
equivalentProperty sameAs differentFrom allDifferent |
Proprietà Caratteristiche: | inverseOf
TransitiveProperty SymmetricProperty FunctionalProperty InverseFunctionalProperty |
Restrizioni sul Tipo della Proprietà: | allValuesFrom
someValuesFrom |
Restrizioni sulla Cardinalità: | minCardinality (solo 0 e 1)
maxCardinality (solo 0 e 1) cardinality (solo 0 e 1) |
Informazioni di Intestazione: | ontology
imports |
Intersezione tra Classi: | intersectionOf |
Supporto alla gestione delle Versioni: | versionInfo
priorVersion backwardCompatibleWith incompatibleWith DeprecatedClass DeprecatedProperty |
Annotation Properties: | rdfs:label
rdfs:comment rdfs:seeAlso rdfs:isDefinedBy |
Datatypes | DatatypeProperty |
Tabella OWL Lite
Le proprietà sono relazioni binarie che consentono di affermare fatti di validità generale per ogni membro della classe o fatti relativi solo ad un solo individuo. Sono distinguibili due tipi di proprietà:
- Datatype property, relazioni tra istanze di classi e RDF literals e datatype XML Schema;
- Proprietà sull’oggetto (object property), relazioni tra istanze di due classi.
All’atto di definizione di una proprietà ci sono diversi modi per esprimere i limiti della relazione. E’ possibile specificare il dominio ed il range della proprietà. Le proprietà, come le classi, possono essere organizzate in una gerarchia.
- rdfs:Property: le proprietà possono essere usate per affermare le relazioni tra individui o tra individui e valori. Esempi di proprietà includono has_Child, has_Age, e così via. La prima può essere usata per collegare istanze della classe Persona ad altre istanze della stessa classe, mentre il secondo può essere usato per collegare istanze della classe Persona con istanze di tipo Integer;
- rdfs:subPropertyOf: gerarchie di proprietà possono essere create indicando che una proprietà è una sottoproprietà di una o più proprietà. Ad Esempio, si può affermare che has_Brother è una sottoproprietà di has_Parent. Da ciò un ragionatore può dedurre che se un individuo è legato ad un altro tramite la proprietà has_Brother allora ne è legato anche tramite la proprietà has_Parents;
- rdfs:domain: il dominio di una proprietà circoscrive gli individui ai quali una proprietà può essere applicata. Se una proprietà lega un individuo ad un altro e la proprietà ha una classe come uno dei suoi domini allora quell’ individuo deve appartenere a quella classe. Per esempio, si può affermare che la proprietà has_Child ha come dominio la classe Mammiferi. Da ciò un ragionatore può dedurre che se Giovanni has_Child Anna, allora Giovanni deve essere un Mammifero. Il costrutto rdfs:domain è detto restrizione globale poiché la restrizione si applica sulla proprietà e non solo sulla proprietà associata ad una classe particolare;
- rdfs:range: il range di una proprietà circoscrive gli individui che una proprietà può avere come valore. Se una proprietà lega un individuo ad un altro e la proprietà ha una classe come suo range, allora l’altro individuo deve appartenere alla classe del range. Ad esempio si può affermare che la proprietà has_Child ha come range la classe Mammiferi. Da ciò un ragionatore può dedurre che se Giovanni è legato a Anna dalla proprietà has_Child, cioè Anna è figlia di Giovanni, allora Anna è un Mammifero. Anche il range è una restrizione globale come il dominio.
Uno dei punti di forza dello sviluppo delle ontologie è la possibilità di renderle riutilizzabili e scalabili. Questo si ottiene collegando insieme classi e proprietà in modo da massimizzare le possibilità di sviluppo. La parte più impegnativa è fondere una collezione di ontologie in un’unica base di conoscenza. Le seguenti caratteristiche di OWL (nella versione Lite) consentono di fondere diverse ontologie grazie ad uguaglianze e diseguaglianze tra classi e proprietà:
- owl:equivalentClass: due classi sono equivalenti se hanno le stesse istanze. L’equivalenza può essere usata per creare sinonimi di una classe. Per esempio, la classe Veicolo può essere una equivalentClass di Automobile. Da ciò un ragionatore potrebbe dedurre che ogni individuo istanza della classe Veicolo è anche un istanza di Automobile, e viceversa;
- owl:EquivalentProperty: serve per affermare che due proprietà sono equivalenti, ovvero che legano un individuo allo stesso insieme di individui. L’eguaglianza è usata per creare sinonimi di proprietà. Per esempio, has_Leader può essere ritenuta equivalentProperty di has_Head. Da ciò un ragionatore può dedurre che se X è legato a Y dalla proprietà has_Leader, X è legato a Y anche dalla proprietà has_Head, e viceversa. Un ragionatore potrebbe dedurre che has_Leader è una sottoproprietà di has_Head e che has_Head è sottoproprietà di has_Leader;
- owl:sameAs: serve per affermare che due individui sono lo stesso individuo. Questi costrutti possono essere usati per creare una varietà di nomi diversi che si riferiscono allo stesso individuo. Per esempio, l’individuo Mario può essere nominato anche come Mario_Rossi;
- owl:differentFrom: un individuo può esser detto diverso da altri individui. Ad esempio, l’individuo Francesco può esser definito essere differente dagli individui Mario e Anna. Quindi, se gli individui Francesco e Mario sono entrambi valori di una proprietà definita come funzionale (cioè che la proprietà deve avere un solo valore), allora c’è una contraddizione. Affermare che gli individui sono differenti può essere importante quando si usano linguaggi come OWL che non assumono che gli individui abbiano un solo nome, in quanto, senza ulteriori informazioni, un ragionatore potrebbe non dedurre che Francesco e Mario sono individui distinti;
- owl:AllDifferent: gli individui possono essere definiti come mutuamente distinti. Per esempio, Francesco, Mario, e Anna possono dirsi essere mutuamente distinti usando il costrutto allDifferent. Diversamente dal costrutto differentFrom, questo affermerà anche che Mario e Anna sono distinti (non solo che Francesco è distino da Mario e che Francesco è distinto da Anna).
Proprietà e restrizioni in OWL
In OWL esistono identificatori speciali che sono usati per fornire informazioni sui legami tra le proprietà e i loro valori. I seguenti costrutti consentono ai ragionatori di rafforzare le implicazioni riguardo gli individui e le loro proprietà:
- owl:inverseOf: una proprietà può esser definita l’inversa di un’altra. Se la proprietà P1 è definita inversa della proprietà P2, e se l’individuo A è in relazione con l’individuo B tramite la proprietà P2, allora B è in relazione con A tramite P1. Per esempio, se has_Child è inversa di has_Parent e Anna has_Parent Mario, allora un ragionatore può dedurre che Mario has_Child Anna;
- owl:TransitiveProperty: una proprietà può essere definita transitiva quando, data la coppia (x,y) e la coppia (y,z) che sono istanze della proprietà transitiva P, allora anche la coppia (x,z) deve essere un’istanza di P. Per esempio, se antenato è definito essere transitivo, e se Sara è un’antenata di Anna e Anna è un’antenata di Giulia allora un ragionatore può dedurre che anche Sara è antenata di Giulia. OWL Lite (e OWL DL) impongono la condizione collaterale alle proprietà transitive di avere maxCardinality 1. Senza questa condizione collaterale, OWL Lite e OWL DL diverrebbero linguaggi indecidibili;
- owl:SymmetricProperty: una proprietà può essere definita come simmetrica quando, data la coppia (x,y) istanza della proprietà simmetrica P, allora anche la coppia (y,x) è un’istanza di P. Per esempio, amico può essere detta una proprietà simmetrica. Allora un ragionatore a cui vien detto che Francesco è amico di Mario può dedurre che Mario è amico di Francesco;
- owl:FunctionalProperty: se una proprietà è una FunctionalProperty, allora non ha più di un valore per ciascun individuo (potrebbe non avere valori per qualche individuo). FunctionalProperty è anche una scorciatoia per affermare che la MinCardinality è 0 e che la MaxCardinality è 1. Per esempio, la proprietà ha_impiego_principale può esser definitva come una FunctionalProperty. Da ciò un ragionatore può dedurre che nessun individuo può avere più di un impiego principale, senza implicare però che tutte le Persone devono averne almeno uno.
OWL permette di esprimere restrizioni limitatamente alla sola classe cui si riferiscono. Le seguenti due restrizioni limitano il range della proprietà quando è applicata ad una classe specifica mentre le restrizioni della prossima sezione limitano i valori che possono essere usati:
- owl:allValuesFrom: la restrizione allValuesFrom si applica ad una proprietà con riferimento ad una classe. Ciò significa che quella proprietà in quella particolare classe ha un restrizione locale sul range associata ad essa, vale a dire che se un’istanza di una classe è legata tramite la proprietà ad un secondo individuo, allora il secondo individuo può essere desunto essere un’istanza della classe che restringe localmente il range. Per esempio, la classe Persona può avere una proprietà chiamata ha_Figlia vincolata ad avere allValuesFrom della classe Donna. Ciò significa che se un individuo della classe Persona, Anna, è legato tramite la proprietà ha_Figlia all’individuo Giulia, allora un ragionatore può desumere che Giulia è un’istanza della classe Donna. Questa restrizione permette alla proprietà ha_Figlia di esser usata da un’altra classe, ad esempio la classe Cat ed avere una diversa restrizione dei valori associata ad essa. In questo caso, ha_Figlia dovrebbe avere una restrizione locale su Cat quando associato alla classe Cat e dovrebbe avere una restrizione alla classe Persona quando associata alla classe Persona;
- owl:someValuesFrom: la restrizione someValuesFrom si applica ad una proprietà con riferimento ad una classe. Una particolare classe può avere una restrizione su una proprietà, e almeno un valore per quella proprietà deve essere di un certo tipo. Diversamente da allValuesFrom, someValuesFrom non restringe tutti i valori della proprietà ad essere istanze della stessa classe. Se mio_Documento è un’istanza della classe Documento_Semantic_Web, allora mio_Documento è legata dalla proprietà ha_parola_chiave con almeno un’istanza della classe Intestazione_Semantic_Web. È da notare che un ragionatore non può dedurre (come farebbe con la restrizione allValuesFrom) che i valori di ha_parola_chiave sono istanze della classe Intestazione_Semantic_Web.
Le restrizioni sulla cardinalità di OWL (e OWL Lite) sono restrizioni locali, poiché sono definite su proprietà riferite ad una classe particolare, ovvero le restrizioni vincolano la cardinalità di una certa proprietà su istanze di una certa classe. Il supporto di OWL Lite alla cardinalità è limitato poiché sono permesse solo definizioni su cardinalità con valori zero o uno (non sono permesse cardinalità con valori arbitrari, come in OWL DL e OWL Full). Vediamo alcuni costrutti che agiscono sulla cardinalità:
- owl:minCardinality: la cardinalità si applica su una proprietà con riferimento ad una classe. Se si afferma una minCardinality ad 1 su una proprietà riferita ad una classe, allora ogni istanza di quella classe deve essere legata ad almeno un individuo da quella proprietà. Questa restrizione equivale a dire che la proprietà è richiesta per tutte le istanze di una certa classe. Per esempio, la classe Persona non dovrebbe avere nessuna restrizione sulla cardinalità minima su una proprietà ha_Figlio poiché non tutte le persone hanno dei figli. Tuttavia la classe Genitore dovrebbe avere una minCardinality a 1 sulla proprietà ha_Figlio. Una volta scoperto che un individuo, Mario, è un’istanza di Genitore, un ragionatore può desumere che Mario deve avere almeno un figlio. A partire da questa sola informazione un ragionatore non può dedurre il massimo numero di ascendenti di un individuo della classe Genitore. In OWL le sole minime cardinalità ammesse sono 0 e 1. Una minima cardinalità a zero su una proprietà implica semplicemente che la proprietà è opzionale per quella classe. Per esempio, la proprietà ha_Figlio può avere una cardinalità minima a zero per la classe Persona.
- owl:maxCardinality: la cardinalità si applica su una proprietà con riferimento ad una classe. Se si afferma una maxCardinality a 1 su una proprietà nell’ambito di una classe, allora tutte le istanze di quella classe possono essere legate ad al più un individuo tramite quella proprietà. Un vincolo di maxCardinality a 1 è anche detto funzionale o proprietà unica. Per esempio, la proprietà ha_votato_in_Regione della classe Cittadino_Italiano avrà una cardinalità massima ad 1 (perché la gente può votare in una sola regione). Può essere utile per alcune classi affermare che non sono ammessi valori per una particolare proprietà cioè affermando che la massima cardinalità è zero. Per esempio, le istanze della classe Persone_non_sposate non dovrebbero essere legate a nessuna classe tramite la proprietà ha_coniuge. Questa situazione si specifica tramite una maxCardinality a zero sulla proprietà ha_coniuge associata alla classe Persone_non_sposate;
- owl:cardinality: cardinality è usato per convenienza quando si deve affermare che sia minCardinality che maxCardinality assumono il valore zero oppure uno. Per esempio, la classe Persona ha esattamente un valore per la proprietà ha_Madre_Naturale. Da ciò un ragionatore può dedurre che nessuna coppia di individui distinti della classe Madre possono esser valori per la proprietà ha_Madre_Naturale della stessa persona.
Incremental Language Description di OWL DL e OWL Full
Sia OWL DL che OWL Full condividono lo stesso vocabolario sebbene OWL DL sia soggetto ad alcune restrizioni. Grossomodo, OWL DL richiede una separazione tra i tipi (una classe non può essere anche un individuo o una proprietà, una proprietà non può essere anche un individuo o una classe). Questo implica che le restrizioni non possono essere applicate agli elementi del linguaggio stesso di OWL (cosa permessa in OWL Full). Inoltre, OWL DL richiede che le proprietà siano ObjectProperties oppure DatatypeProperties.
Di seguito viene descritto il vocabolario di OWL DL e OWL Full che estende i costrutti di OWL Lite:
Assiomi sulle Classi: | oneOf
dataRange disjointWith equivalentClass (applicata a espressioni di classi) rdfs:subClassOf (applicata a espressioni di classi) |
Combinazioni booleane di espressioni
di classi: |
unionOf
intersectionOf complementOf |
Cardinalità Arbitraria: | minCardinality
maxCardinality |
cardinality Filler Information: | hasValue |
Tabella OWL DL – Full
- owl:oneOf (enumerated classes): le classi possono essere descritte tramite enumerazione degli individui che ne fanno parte. I membri della classe sono esattamente gli individui dell’insieme di enumerazione; né più né meno. Per esempio, la classe Giorno_della_settimana può essere descritta enumerando gli individui Lunedì, Martedì, Mercoledì, Giovedì, Venerdì, Sabato e Domenica. Da ciò un ragionatore può dedurre la cardinalità massima (7) di ogni proprietà che abbia una restrizione di allValuesFrom come Giorno_della_settimana;
- owl:hasValue (property values): può essere richiesto che una proprietà abbia un certo individuo come valore. Per esempio, istanze della classe Cittadino_Italiano possono essere caratterizzate come quelle persone che hanno Nazione_Italia come valore per la loro nazionalità;
- owl:disjointWith: OWL Full permette di affermare che alcune classi sono disgiunte, come ad esempio Uomini e Donne. Da ciò un ragionatore può dedurre una inconsistenza quando si afferma che un individuo è istanza di entrambe le classi e che se A è un’istanza di Uomo allora non può esserlo di Donna;
- owl:unionOf, owl:complementOf, owl:intersectionOf (Boolean combinations): OWL DL permette un’arbitraria combinazione booleana di classi e restrizioni: unionOf, complementOf, e intersectionOf. Per esempio, usando UnionOf, possiamo affermare che una classe contiene entità che possono essere sia Cittadino_Italiano che Cittadino_Europeo. Usando complementOf, possiamo affermare che Bambini non sono Adulti (cioè, la classe Bambini è una sottoclasse del complemento della classe Adulti). La cittadinanza dell’Unione Europea potrebbe essere descritta come l’unione delle cittadinanze di tutti gli stati membri;
- owl:minCardinality, owl:maxCardinality, owl:cardinality (full cardinality): mentre in OWL Lite le cardinalità sono ristrette ad assumere almeno, al massimo o esattamente i valori zero o uno, OWL Full permette espressioni arbitrarie (intere non negative) sulla cardinalità.
Se il post ti è piaciuto, ti ha incuriosito o se non ha soddisfatto appieno la tua voglia di conoscenza lasciaci un commento, ci sarà d'aiuto per andare avanti e migliorare oppure sottoscrivi i feed e ricevi i prossimi articoli nel tuo RSS reader.
Comments
Non c'è ancora nessun commento.
Lascia un commento