1 Ontology languages. Strato dei modelli LA SCELTA DEL LINGUAGGIO Una volta selezionati i componenti...

Post on 02-May-2015

219 views 0 download

Transcript of 1 Ontology languages. Strato dei modelli LA SCELTA DEL LINGUAGGIO Una volta selezionati i componenti...

1

Ontology

languages

Strato dei modelli

LA SCELTA DEL LINGUAGGIO

Una volta selezionati i componenti dell’ontologia occorre esprimerli in

maniera esplicita, mediante un opportuno linguaggio

Per esprimere in maniera formale le ontologie sono stati proposti diversi

linguaggi, ciascuno con diverse capacità espressive

• RDFS• OIL• DAML• DAML + OIL• OWL

Lo standard W3C è attualmente OWL (Ontology Web Language)

REQUISITI PER UN ONTOLOGY LANGUAGE

• ben-definita sintassi (machine-processable)

• semantica formale (descrizione del significato in modo preciso e non

ambiguo, ossia che non si basa su intuizioni soggettive e non aperto a diverse

interpretazione da parte di diversi soggetti. Uso della logica matematica)

• sufficiente potere espressivo

• efficiente supporto al ragionamento. Il ragionamento ontologico

(classificazione, equivalenza, consistenza, sussunzione– ricondurre un

concetto in un concetto più ampio che lo comprende) viene fatto mappando il

linguaggio ontologico su un ben definito formalismo logico.

• Aumenta le capacità espressive di RDF

• Vocabolario che consente di:

• definire le classi delle risorse

• definire le relazioni di sottoclasse (gerarchia tra classi)

• specificare restrizioni di domain e range delle proprietà

RESOURCE DESCRIPTION FRAMEWORK SCHEMA (RDFS)

Limiti del potere espressivo di RDFS

• RDF e RDFS permettono la rappresentazione di una parte di

conoscenza ontologica

• le principali primitive di RDF e RDFS riguardano

l’ORGANIZZAZIONE di un VOCABOLARIO GERARCHICO (con

relazioni di sottoclasse e sottoproprieta, restrizione di domain e range)

Limiti del potere espressivo di RDFS

• Tuttavia mancano

– Local scope sulle proprietà. RDFS:range permette di esprimere

restrizioni che si applicano a tutte le classi: non è possibile

differenziare il range da applicare solo su alcune classi, ossia non

possiamo dire che le mucche mangiano solo vegetali, e gli altri animali

possono mangiare anche la carne

– Disgiunzione tra classi. Ad esempio il fatto che la classe maschio e

femmina sono disgiunte non si può esprimere con RDFS

– Combinazione booleana di classi. Può essere utile costruire nuove

classi a partire da classi esistenti (unione, intersezione, ). Ad esempio,

la classe persona definita come unione delle classi maschi e femmine

non può essere espressa attraverso RDFS

Limiti del potere espressivo di RDFS

• Restrizione di cardinalità. Può essere utile definire restrizioni su quanti

distinti valori potrebbe avere una proprietà (non solo di quali valori). Per

esempio, possiamo voler dire che una persona deve avere sono due genitori,

o che un corso può essere seguito solo da 10 studenti. Non si può esprimere

con RDFS

• Caratteristiche speciali di proprietà. Ad esempio, dire che una proprietà

è transitiva (se A e’ sottoclasse di B e B e’ sottoclasse di C, allora A e’

sottoclasse di C), unica (haMadre), o inversa (mangiare e “essere

mangiato”).

Necessario un linguaggio più espressivo che RDFS, che raggiunga un

compromesso nel trade-off tra potere espressivo e supporto efficiente al

reasoning. Di solito più un linguaggio è espressivo, più inefficiente diventa il

supporto al reasoning

ORIGINI DI OWL

OWL

DAML

DAML+OIL

OIL

RDF

Tutti derivati da RDF

RDFS

OWL: Ontology Web Language

Linguaggio standard per scrivere ontologie.

Diventato recommendation W3C dal 2004

OWL (Ontology Web Language)

Nato dall’integrazione di DAML + OIL. OWL consente di:

specificare meglio le relazioni tra le classi

– disgiunzione

– equivalenza

– combinazioni booleane

complementarietà

unione

intersezione

definire le restrizioni sulle proprietà

– di valore

– di cardinalità

Owl è un’estensione di RDF Schema, ossia ne riutilizza i

costrutti.

Vi sono tre versioni di OWL:

OWL Full: completamente compatibile con RDF;

molto potente ed espressivo, difficile ragionamento

tutti i costrutti visti

OWL DL (description logic): meno efficiente per il

ragionamento e meno compatibile con RDF

non supporta la restrizione di cardinalità sulle

proprietà funzionali

OWL: VERSIONI

OWL Lite: restrizioni su OWL DL, semplice da

implementare, poco espressivo. Buono per semplici

classificazioni tassonomiche con poche restrizioni sulle

classi. E’ come OWL DL ma non supporta

Owl:disjoint

Owl:unionOf

Owl:hasValue

Cardinalità solo con valori 1 o 0

EquivalentClass non su classi anonime

OWL: VERSIONI

OWL: SINTASSI (owl-full)

Definire una classe

<owl:Class rdf:ID=“associateProfessor”>

<rdfs:subClassOf rdf:resource=“staff” >

</owl:Class>

dire che questa classe è disgiunta da un’altra

<owl:disjointWith rdf:resource=“assistantProfessor” >

dire che questa classe è equivalente ad un’altra

<owl:equivalentClass rdf:resource=“teacher” >

OWL: proprietà

Proprietà

– Object property: collega un oggetto con un altro oggetto

<owl:ObjectProperty rdf:ID=“isTaughtBy” >

<rdfs:domain rdf:resource=“#course”>

<rdfs:range rdf:resource=“#staff” > </ owl:ObjectProperty >

– Data type property: collega un oggetto con un valore

<owl:DataTypeProperty rdf:ID=“age” >

<rdfs:range rdf:resource=“www.w3c.org/01/xmlschema#nonNegativeInteger” >

</ owl:DataTypeProperty >

Proprietà inversa: definisce una proprieta’ come inversa di

un’altra

<owl:ObjectProperty rdf:ID=“teaches” >

<rdfs:domain rdf:resource=“staff”>

<rdfs:range rdf:resource=“course” >

<owl:inverseOf rdf:resource=“isTaughtBy”

</ owl:ObjectProperty >

OWL: tipi di proprietà

Functional Property: definisce una proprietà che ha al massimo

un valore per ciascuno soggetto (ad esempio, l’età)

<owl:DataType Property rdf:ID=“hasAge” >

<rdfs:domain rdf:resource=“person”>

<rdfs:range

rdf:resource=“www.w3c.org/xmlschema#nonNegativeInteger” >

<rdf:type rdf:resource=“owl;FunctionalProperty” >

</ owl:ObjectProperty >

OWL: tipi di proprietà

Inverse Functional Property: definisce una proprieta’ per cui

due differenti oggetti non possono avere lo stesso valore

<owl:ObjectProperty rdf:ID=“hasID” >

<rdfs:domain rdf:resource=“person”>

<rdfs:range rdf:resource=“ID” >

<rdf:type rdf:resource=“owl;InverseFunctionalProperty”

</ owl:ObjectProperty >

OWL: tipi di proprietà

• (NB: si applicano per definire classi)

• Quantificatore universale: allValueFrom tutti i valori di una

proprietà devono provenire da quella classe

<owl:Class rdf:about=“Courses“ >

<rdfs:Comment >i corsiuniversotari possono essere tenuti solo da professori</rdfs:Comment >

<rdfs:SubClassOf >

<owl:Restriction >

<owl:onProperty rdf:resource=“#is_taught_by” / >

<owl:allValueFrom rdf:resource=“#professor” / >

</owl:Restriction >

</rdfs:SubClassOf >

</owl:Class>

OWL: Restrizione di proprietà

Quantificatore esistenziale: esiste un corso del primo anno tenuto

da un professore

<owl:Class rdf:about=“Professors“ >

<rdfs:Comment >i professori insegnano qualche corso univ </rdfs:Comment >

<rdfs:SubClassOf >

<owl:Restriction >

<owl:onProperty rdf:resource=“#teach” / >

<owl:someValueFrom rdf:resource=“#Courses” / >

</owl:Restriction >

</rdfs:SubClassOf >

</owl:Class>

OWL: Restrizione di proprietà

hasValue: specifica che valore deve avere una proprietà

<owl:Class rdf:about=“MathCourses“ >

<rdfs:Comment >I corsi di matematica sono insegnati da Rossi</rdfs:Comment >

<rdfs:SubClassOf >

<owl:Restriction >

<owl:onProperty rdf:resource=“#are_tought” / >

<owl:hasValue rdf:resource=“Rossi” / >

</owl:Restriction >

</rdfs:SubClassOf >

</owl:Class>

OWL: Restrizione di proprietà

Owl:minCardinality: specifica il valore minimo che può

assumere una proprietà

<owl:Class rdf:about=“Courses“ >

<rdfs:Comment >I corsi possono essere insegnati al minimo da un professore</rdfs:Comment >

<rdfs:SubClassOf >

<owl:Restriction >

<owl:onProperty rdf:resource=“#is_tought_by” / >

<owl:minCardinality rdf:datatype=“xsd;nonNegativeInteger” > 1

</owl:minCardinality>

</owl:Restriction >

</rdfs:SubClassOf >

</owl:Class>

OWL: Cardinalità di proprietà

Owl:maxCardinality: specifica il valore massimo che può

assumere una proprietà

<owl:Class rdf:about=“professor“ >

<rdfs:Comment >I prof possono al max tenere 3 corsi </rdfs:Comment >

<rdfs:SubClassOf >

<owl:Restriction >

<owl:onProperty rdf:resource=“#is_tought_by” / >

<owl:maxCardinality rdf:datatype=“xsd;nonNegativeInteger” > 3

</owl:minCardinality>

</owl:Restriction >

</rdfs:SubClassOf >

</owl:Class>

OWL: Cardinalità di proprietà

Si definisce una classe anonima che contiene gli oggetti che

soddisfano quella restrizione e si definisce la classe su cui si

applica la restrizione come sottoclasse di questa

<owl:Class rdf:about=“professor“ >

<rdfs:SubClassOf >

<owl:Restriction >

<owl:onProperty rdf:resource=“#teach” / >

<owl:someValueFrom rdf:resource=“#Courses” / >

</owl:Restriction ></rdfs:SubClassOf >

</owl:Class>

Professori è una sottoclasse della classe anonima che contiene tutti gli oggetti che insegnano corsi universitari

OWL: precisazione

Combinazioni booleane

Complemetarietà

<owl:ComplementOf >

Unione tra classi

<owl:UnionOf >

Intersezione tra classi

<owl:intersectionOf” >

OWL: SINTASSI

Enumerazione: definire valori una volta per tutti (non

supportata da OWL lite)

<owl:OneOf rdf:ID=“weekDays” >

< owl:thing rdf:about=“#Monday”>

< owl:thing rdf:about=“#Tuesday”>

</ owl: OneOf >

OWL: SINTASSI

Importare ontologie esistenti

• Importante per il riuso della conoscenza non fare da zero ogni

volta un’ontologia ma provare a riusare ontologie esistenti.

<owl: import

rdf:resource=“www.mydomain.orf/ontologia”>

• OWL permettere di dare etichette per agevolare la lettura

umana (utile per traduzione da una lingua all’altra)

– <owl: label> University ontology </owl:label)

Istanze

• le istanze in OWL si definiscono sempre attraverso l’RDF

<rdf:Description rdf:ID=“9898765”>

<rdf:type rdf:resource=“professor”>

</rdf:Description>

Definire l’ontologia che descrive questo dominio:Africa world life

thing

Animal Plant

Carnivore Herbivore Tree

Giraffa baobab

Esercizio

In particolare dire che:

• classi di piante, animali, alberi,erbivori, carnivori

• proprietà “mangia” e proprietà “è_mangiato” come inversa di “mangia

• la classe delle piante è disgiunta da quella degli animali

• gli alberi sono sottoclassi di piante

• gli erbivori sono sottoclassi di animali

• gli erbivori sono animali che mangiano solo piante

•I carnivori mangiano anche piante

•le piante possono essere mangiate da erbivori

•Definire un baobab come istanza di albero, e una giraffa come istanza di erbivoro

ESERCIZIO

• istanze

<rdf:Description rdf:ID=“giraff”>

<rdf:type rdf:resource=“herbivor”>

</rdf:Description>

<rdf:Description rdf:ID=“baobab”>

<rdf:type rdf:resource=“tree”>

</rdf:Description>

Progettare una ontologia attraverso:

1. una rappresentazione grafica

2. il linguaggio OWL seguendo le specifiche

3. usando l’editor Protege (prossima lezione)

Esercizio ontologie