Seminari di ingegneria del
software
“Traduzione di diagrammi ER in Protégé”
Emma Di Pasquale
Teresa Raguso
OBIETTIVI
• Creare ontologie con Protégé
• Classificare le ontologie e verificarne la
consistenza tramite RACER
• Generare la sintassi astratta di OWL con
SWOOP
ONTOLOGIA
• “Descrizione formale esplicita dei concetti
di un dominio”.
• Essa contiene:
– Un insieme di classi (concetti rilevanti)
– Un insieme di relazioni tra queste classi
– Un insieme di proprietà attribuite a ciascun
concetto
– Un insieme di restrizioni sulle proprietà
INTRODUZIONE
LOGICHE DESCRITTIVE
Le logiche descrittive (DL) sono frammenti decidibili della
FOL per esprimere la conoscenza in termini di:
– concetti atomici (predicati unari)
– ruoli atomici (predicati binari)
– individui (costanti)
Una base di conoscenza in DL comprende:
–
–
TBox: insieme di assiomi terminologici, ovvero il
vocabolario del dominio applicativo (concetti e
ruoli)
ABox: contiene asserzioni circa gli individui che
popolano il mondo in oggetto, assegnando loro un
nome e asserendo le loro proprietà
INTRODUZIONE
OWL
OWL Ontology Web Language, è una raccomandazione del W3C.
•
•
Linguaggio per esprimere le ontologie
Tre tipi di OWL:
–
OWL Lite, versione sintatticamente più semplice che permette
di esprimere una gerarchia di classi e semplici restrizioni
–
OWL DL, versione intermedia basata sulle logiche descrittive,
offre un potere espressivo elevato mantenendo completezza e
decidibilità
–
OWL FULL, offre la massima espressività senza offrire alcuna
garanzia circa completezza e decidibilità
Protégé
E’ un editor per la creazione di ontologie
Caratteristiche:
-Piattaforma open-source
-Può esportare le ontologie in vari formati:
RDF(S), XML Schema e OWL
-E’ basato su Java
-E’ estendibile (esistono numerose API e plug-in)
-Dispone di numerosi ambienti plug-and-play che
consentono un rapido sviluppo delle applicazioni.
Progettazione di un’ontologia
in Protégé
Progettare un’ontologia significa:
1. Determinare il dominio e lo scopo dell’ontologia
2. Individuare i concetti chiave del fenomeno da
descrivere
3. Organizzare i concetti in classi e gerarchie tra le
classi
4. Definire le proprietà delle classi
5. Definire vincoli (valori leciti) sulle proprietà
6. Creare le istanze
7. Attribuire i valori alle proprietà per tutte le istanze
create
ER in Protégé
•
•
•
•
Entità ~ classes
Relazioni ~ object properties
Attributi ~ datatype properties
Vincoli ~ restrictions
Entità - Classes
Protégé
• Rappresentano insiemi di individui
• Organizzate in una tassonomia
• Possono essere combinate usando un insieme di
operatori:
–
–
–
–
–
sussunzione
disjoint
unione
intersezione
complemento
• Ad ogni classe possono essere associate delle
condizioni (restrictions) che possono essere:
− necessarie (classi primitive)
− necessarie e sufficienti (classi definite)
Protégé – CLASSES TAB
IS-A
Nome
della
Classe
Relazioni
e attributi
della classe
Gerarchia
delle
Classi
Restrizioni
sugli individui
della classe
Classi
disgiunte
PROPERTY
Protégé
•
•
•
Due tipi di proprietà:
– Object properties, relazionano individui ad
individui
– Datatype properties, relazionano individui a valori
di dati
Protégé supporta una gerarchia tra le proprietà
Con riferimento alle subproperty, non è possibile
“mescolare” i due tipi di proprietà
Relazioni - Object Properties
Protégé
• Per ogni relazione è possibile specificare:
– Dominio
– Range (codominio)
• Ogni object property può avere una
inverseProperty
• Le object properties possono avere quattro tipi
di caratteristiche:
–
–
–
–
Functional
Inverse functional
Transitive
Simmetric
Protégé - PROPERTIES TAB
Object Properties
Nome
della
proprietà
Object
Property
Caratteristiche
delle
proprietà
Codominio
Dominio
Proprietà
Inversa
Attributi – Datatype Properties
Protégé
• Per ogni attributo è possibile specificare:
– Dominio
– Range (integer, float, string)
• L’ unica caratteristica ammessa da Protégé OWL DL è:
– Functional
• Non si possono quindi esplicitare le chiavi primarie in
quanto non è possibile definire inverseFunctional una
datatype property (è invece ammesso con OWL Full)
Protégé - PROPERTIES TAB
Datatype Properties
Nome
Range
Datatype
Proprietà
Properties
Valori Ammessi
Dominio
Vincoli – Restrictions
Protégé
• Una restriction descrive un insieme di individui in base al
tipo e al numero di relazioni a cui essi partecipano e
quindi restringe gli individui che appartengono ad una
classe
• Tre tipi di restrictions:

Existential, someValuesFrom

Universal, allValuesFrom

hasValue
=
Cardinality
≤
Max cardinality
≥
Min cardinality
Restrizioni di quantità
Restrizioni “hasValue”
Restrizioni di cardinalità
Protégé – RESTRICTIONS TABS
Protégé - Individuals
OWL non usa UNA,
Racer sì
• SameAs
• DifferentFrom
• AllDifferent
RACER
• Per ogni ontologia che cade nello scope di OWL DL
possiamo usare un DL reasoner per inferire informazioni
che non sono esplicitamente rappresentate nell’
ontologia.
• Racer è un classificatore basato sulla Logica Descrittiva
• I servizi di ragionamento offerti sono
–
–
–
–
sussunzione
equivalenza
consistenza
istanziazione
Casi di studio
Processo di lavoro
Traduzione dei diagrammi
concettuali in una ontologia
creata con Protégé
Controllo consistenza
tramite Racer
Generazione file OWL
e file pprj
Generazione sintassi
astratta con SWOOP
Casi di studio: Compito A del 16/12/04
Schema ER
Casi di studio: Compito A del 16/12/04
Entità
Classi
Class(a:Persona complete
intersectionOf(restriction(a:natoA
minCardinality(1)) restriction(a:risiede minCardinality(1))))
Casi di studio:Compito A del 16/12/04
Attributi
Datatype Properties
DatatypeProperty(a:codiceFiscale Functional
domain(a:Persona)
range(xsd:string))
DatatypeProperty(a:sesso Functional
domain(a:Persona)
range(oneOf("femminile"^^<http://www.w3.org/2001/XMLSchema#string>
“maschile"^^<http://www.w3.org/2001/XMLSchema#string>)))
DatatypeProperty(a:dataN Functional
domain(a:Persona)
range(xsd:date))
Casi di studio:Compito A del 16/12/04
Relazioni
Object Properties
Per esprimere il limite
superiore della cardinalità
inversa_di_effettua
effettua
Class(a:Prenotazione complete
IntersectionOf(restriction(a:inversa_di_effettua
minCardinality(1)) unionOf(a:Collettiva
a:Singola)))
ObjectProperty(a:effettua InverseFunctional
inverseOf(a:inversa_di_effettua)
domain(a:Persona)
range(a:Prenotazione))
Per esprimere il limite
inferiore della cardinalità
ObjectProperty(a:inversa_di_effettua Functional
inverseOf(a:effettua)
domain(a:Prenotazione)
range(a:Persona))
Casi di studio:Compito A del 16/12/04
Caso alternativo per esplicitare la cardinalità 1..1 di una relazione
DifferentIndividuals(a:Emma a:Gina)
ecc.
Casi di studio: Compito A del 16/12/04
Generalizzazione
COMPLETE
Class(a:Collettiva partial
a:Prenotazione)
Class(a:Singola partial
a:Prenotazione)
COMPLETE:
Class(a:Prenotazione complete
intersectionOf(restriction(a:inversa_di_effettua
minCardinality(1)) unionOf(a:Collettiva
a:Singola)))
DISJOINT:
DisjointClasses(a:Collettiva a:Singola).
Casi di studio: Compito A del 16/12/04
Generalizzazione - Ereditarietà
Casi di studio: Compito A del 16/12/04
Disjoint tra classi
Tutte le classi, tranne le sottoclassi della generalizzazione
con la propria superclasse, sono state poste disjoint a due
a due.
DisjointClasses(a:PostoAssegnato a:Comune)
DisjointClasses(a: PostoAssegnato a:Persona)
DisjointClasses(a: PostoAssegnato a:Collettiva)
DisjointClasses(a:PostoAssegnato a:Teatro)
DisjointClasses(a: PostoAssegnato a:Posto)
ecc.
Casi di studio: Compito A del 16/12/04
Limiti di Protégé
1. Non si è potuto esprimere gli identificatori interni in quanto OWL DL non
permette di definire “InverseFunctional” una datatype property
2. Non si è potuto esprimere identificatori esterni in quanto non esistono variabili
in OWL
3. Non si è potuto esprimere il fatto che gli attributi sono funzioni totali, ma sono
stati posti functional
4. Non si è potuto esprimere gli attributi delle relazioni:
“data” della relazione “effettua” e “da” di “risiede”.
Casi di studio: Compito A del 16/12/04
Il ragionatore - Racer
• Controllo di consistenza
• Classificazione dell’ontologia
Casi di studio: Compito A del 19/12/05
Schema ER
Casi di studio: Compito A del 19/12/05
Entità
Classi
Class(a:SettoreDisciplinare partial)
Casi di studio: Compito A del 19/12/05
Attributi
Datatype Properties
DatatypeProperty(a:codiceSettoreDisciplinare Functional
domain(a:SettoreDisciplinare)
range(xsd:string))
DatatypeProperty(a:nomeSettoreDisciplinare Functional
domain(a:SettoreDisciplinare)
range(xsd:string))
Casi di studio: Compito A del 19/12/05
Relazioni
Object Properties
Per esprimere il limite
superiore della cardinalità
inversa_di_del
del
Class(a:Corso complete
restriction(a:inversa_di_del minCardinality(1)))
Per esprimere il limite
inferiore della cardinalità
ObjectProperty(a:del InverseFunctional
inverseOf(a:inversa_di_del)
domain(a:SettoreDisciplinare)
range(a:Corso))
ObjectProperty(a:inversa_di_del Functional
inverseOf(a:del)
domain(a:Corso)
range(a:SettoreDisciplinare))
Casi di studio: Compito A del 19/12/05
Relazioni
Object Properties
afferisce
Inversa_di_afferisce
Class(a:CDA complete
intersectionOf(
restriction(a:inversa_di_re_cda
minCardinality(1))
restriction(a:inversa_di_afferisce
minCardinality(1))))
Casi di studio: Compito A del 19/12/05
ISA tra relazioni
SubPropertyOf(a:re-cda a:afferisce)
SubPropertyOf(a:inversa_di_re-cda
a:inversa_di_afferisce)
Casi di studio: Compito A del 19/12/05
ISA tra classi
Class(a:Docente complete
restriction(a:afferisce
minCardinality(1)))
Class(a:ReferenteErasmus
Complete restriction(a:re_cda
minCardinality(1)))
Class(a:ReferenteErasmus
partial a:Docente)
Casi di studio: Compito A del 19/12/05
Disjoint tra classi
Tutte le classi, tranne la sottoclasse della generalizzazione
con la propria superclasse, sono state poste disjoint a due
a due.
DisjointClasses(a:CDA a:SettoreDisciplinare)
DisjointClasses(a:CDA a:Corso)
DisjointClasses(a:CDA a:Domanda)
DisjointClasses(a:CDA a:Studente)
DisjointClasses(a:CDA a:Docente)
ecc.
Casi di studio: Compito A del 19/12/05
Limiti di Protégé
1. Non si è potuto esprimere gli identificatori interni in quanto
OWL DL non permette di definire “InverseFunctional” una
datatype property
2. Non si è potuto esprimere identificatori esterni in quanto non
esistono variabili in OWL
3. Non si è potuto esprimere il fatto che gli attributi sono funzioni
totali, ma sono stati posti functional
Casi di studio: Compito A del 19/12/05
Il ragionatore - Racer
• Controllo di consistenza
• Classificazione dell’ontologia
Le Queries
Non è stato possibile esprimere le queries richieste dai vari compiti
per i seguenti motivi:
• Sulle datatype properties non si possono utilizzare operatori ≥ e ≤,
ma solo l’operatore hasValue che permette di esprimere queries su
specifici valori di un dato attributo
• Non si possono estrarre i valori degli attributi di una classe (Es.
restituire i codici fiscali di una persona)
• Non si possono esprimere queries con cicli (Es. restituire tutte le
persone che sono nate nello stesso comune in cui risiedono) in
quanto non ci sono variabili in OWL, ma si possono esprimere solo
queries ad albero.
Scarica

Tesina del seminario di ingegneria del software