Upload
vittorino-falco
View
215
Download
1
Embed Size (px)
Citation preview
1
Protégé-2000Protégé-2000
Un tool per la creazione e sviluppo Un tool per la creazione e sviluppo di Ontologie e Basi di Conoscenzadi Ontologie e Basi di Conoscenza
protege.stanford.eduprotege.stanford.edu
2
Il modello di ProtegeIl modello di Protege Knowledge modelKnowledge model
Frame-based OKBC compatible
Caratteristiche principaliCaratteristiche principali Un editor per creare, visualizzare, gestire, e
mantenere basi di conoscenza (KBs) API per un accesso universale a KB Una interfaccia utente (GUI) estensibile Diversi formalismi di rappresentazione della
conoscenza
3
Protégé: Componenti PrincipaliProtégé: Componenti PrincipaliOgnuna delle componenti principali di Protégé
ha una interfaccia ben definita con il resto del sistema ed è perfettamente sostituibile da componenti analoghe
Storagemodel
Storagemodel
Userinterface
Userinterface
Knowledgemodel
Knowledgemodel
4
Gli elementi di Protégé-2000Gli elementi di Protégé-2000
SlotsSlots
Classi e gerarchie
di classi
Classi e gerarchie
di classi
Facetsstandard e
user-defined
Facetsstandard e
user-definedInstanzeInstanze
Formpersonalizzabili
Formpersonalizzabili
Easybrowsing
Easybrowsing
Rappresentazione di
grandidata set
Rappresentazione di
grandidata set
CustomwidgetsCustomwidgets
Domain-specific
tabs
Domain-specific
tabsComponenti
per lo sviluppodi Applicazioni
basate su conoscenza
Componentiper lo sviluppodi Applicazioni
basate su conoscenza
5
Protégé
Ontologia di dominio
Strumento di Acquisizione della Conoscenza
Sviluppo di una base di conoscenza: Sviluppo di una base di conoscenza: l’approccio Protégél’approccio Protégé
R
C1 C2
C3 C4
C5
6
Protégé: una visione d’insiemeProtégé: una visione d’insieme
Class Tab
7
Editing di Attributi e ConcettiEditing di Attributi e Concetti
8
Popolamento della base di conoscenzaPopolamento della base di conoscenza
9
Sviluppo di una OntologiaSviluppo di una Ontologia
Approccio pratico:Approccio pratico: Definire le classi della ontologia Disporre le classi secondo una gerarchia
tassonomica Definire gli attributi e i valori ammissibili per
ognuno di essi Specificare quali classi hanno quali attributi e
definire delle restrizioni specifiche sui valori ammessi da tali attributi
10
Sviluppo di una Ontologia (2)Sviluppo di una Ontologia (2)
Approccio ingegneristico:Approccio ingegneristico:
Analisi del dominio da rappresentare, mediante consultazione di esperti del settore
Non esiste un modo unico e corretto per modellare un dominio: criteri di scelta del dominio
Approccio iterativo allo sviluppo della ontologia
11
Sviluppo di una Ontologia (3)Sviluppo di una Ontologia (3)
Tra le possibili alternative, occorre quindi Tra le possibili alternative, occorre quindi favorire, quelle che:favorire, quelle che: Si adattano meglio all’obiettivo (task) che la
nostra applicazione deve perseguire. Siano maggiormente:
Intuitive Estensibili Di facile Manutenzione
12
Un esempio guidato per lo Un esempio guidato per lo sviluppo di una:sviluppo di una:
Ontologia diOntologia di
Vini FrancesiVini Francesi
13
Sviluppo dell’Ontologia: Sviluppo dell’Ontologia: Processing StepsProcessing Steps
Step 1. Determinare il dominio di Step 1. Determinare il dominio di applicazione dell’ontologiaapplicazione dell’ontologia Quale sarà la copertura del dominio che
l’ontologia dovrà offrire? Per quale motivo vogliamo usare l’ontologia? Per quale tipo di interrogazioni l’ontologia
dovrebbe fornire delle risposte? Chi userà e manterrà l’ontologia?
14
Sviluppo dell’Ontologia: Sviluppo dell’Ontologia: Processing StepsProcessing Steps
Step 2: considerare l’ipotesi di riusare ontologie (o Step 2: considerare l’ipotesi di riusare ontologie (o semplici classificazioni) già esistentisemplici classificazioni) già esistenti (www.wines.com, www.daml.org/ontologies)
Step 3: Enucleare i termini più importanti nel Step 3: Enucleare i termini più importanti nel dominio che dovrebbero comparire nell’ontologiadominio che dovrebbero comparire nell’ontologia vino, uva, produttore, locazione, colore del vino,
corposità, sapore, contenuto di zuccheri etc.. Tipi differenti di cibo, come “pesce” o “carne rossa”; Sottotipologie di vini: come vino bianco, rosso etc..
15
Sviluppo dell’Ontologia: Sviluppo dell’Ontologia: Processing StepsProcessing Steps
Step 4: Definire le classi e la gerarchia delle classiStep 4: Definire le classi e la gerarchia delle classi Approccio:
Top-Down Bottom-Up Ibrido
Regola d’oro: Se una classe A è una
superclasse di una classe B,
allora ogni istanza di B è anche
istanza di A
16
Sviluppo dell’Ontologia: Sviluppo dell’Ontologia: Processing StepsProcessing Steps
Step 5: Definire le proprietà delle classi-slotStep 5: Definire le proprietà delle classi-slot Proprietà intrinseche: come il sapore del vino Proprietà estrinseche: come il nome del vino o la zona da
cui proviene Parti: se l’oggetto è strutturato; queste possono essere sia
concrete che astratte Relazioni che coinvolgono istanze della classe e altri
oggetti dell’ontologia: “produttore” lega una cantina ad un determinato vino “Uva” lega un determinato tipo di vino con l’uva da cui esso è
prodotto
17
Sviluppo dell’Ontologia: Sviluppo dell’Ontologia: Processing StepsProcessing Steps
Step 5 (bis):Step 5 (bis): Ogni Template-slot di una classe viene ereditato
dalle sue sottoclassi (overriding degli slot) Scelta di quale classe detiene originariamente lo slot
18
Sviluppo dell’Ontologia: Sviluppo dell’Ontologia: Processing StepsProcessing Steps
Step 6: Definire le “facets” di uno slotStep 6: Definire le “facets” di uno slot Tipi di facets di uno slot:
Value Type– String– Integer– Float– Boolean– Symbol (Enumerated)– Instance– Class
Allowed values Cardinality Inverse Slot? Altre (possibili) caratteristiche dello slot
19
Sviluppo dell’Ontologia: Sviluppo dell’Ontologia: Processing StepsProcessing Steps
Step 6 (bis): Facets: Dominio e Range di uno slotStep 6 (bis): Facets: Dominio e Range di uno slot Rappresentano rispettivamente l’insieme di classi cui uno slot è
attaccato, e l’insieme di classi cui uno slot può far riferimento; è importante: Trovare le classi più generiche che possano rappresentare dominio e range
di uno slot, d’altro canto, non definire mai domini/range eccessivamente generici
Se una lista di classi che definisce un range/dominio di uno slot include una classe e una sua sottoclasse, rimuovere la sottoclasse (ridondanza di informazione)
Se una lista di domain/range classes di uno slot contiene tutte le sottoclassi si una classe A ma non la classe stessa, eliminare tutte le classi e inserire la classe stessa A.
Se una lista di domain/range classes di uno slot contiene quasi tutte le sottoclassi di una classe, domandarsi se non sia più appropriato inserire la loro superclasse.
20
Sviluppo dell’Ontologia: Sviluppo dell’Ontologia: Processing StepsProcessing Steps
Step 7: Creazione delle IstanzeStep 7: Creazione delle Istanze
Problema Amletico: Istanza o Classe?Problema Amletico: Istanza o Classe?
21
Customizzazione di Protégé:Customizzazione di Protégé:l’esperienza CROSSMARCl’esperienza CROSSMARC
Il progetto CROSSMARC – Obiettivi:Il progetto CROSSMARC – Obiettivi: sviluppare un motore di ricerca intelligente che permetta
confronti di prezzo e qualità tra prodotti di vario genere venduti nella rete
Capacità di gestire pagine HTML provenienti da differenti paesi e scritte in diversi linguaggi
Customizzazione di Protégé in ambito CrossmarcCustomizzazione di Protégé in ambito Crossmarc Creazione di diversi Tab adatti agli scopi di Crossmarc Gestione di Lessici in vari linguaggi Import/Export delle ontologie nel formalismo XML
adottato in CROSSMARC Utilizzo di UTF-8 come sistema di codifica dei caratteri
22
Crossmarc: Ontology Editor TabCrossmarc: Ontology Editor Tab
23
Crossmarc: Template Editor TabCrossmarc: Template Editor Tab
24
Crossmarc: Lexicon Editor TabCrossmarc: Lexicon Editor Tab
25
Crossmarc: Import/Export TabCrossmarc: Import/Export Tab
26
XI_to_Protégé: un tool di esportazioneXI_to_Protégé: un tool di esportazione ““Fileografia”: Fileografia”:
Cartella XI– disint_utils.pl– mario.txt– sicstus_utils.pl– xi.pl– xi_compile.pl– xi_io.pl– xi_loader.pl
File xi_to_protege.pl
File piccola_ontologia.pl
Uso:Uso: Eseguire consult di:
– xi_loader.pl (che provvederà a caricare il resto dello xi_model)– piccola_ontologia.pl– xi_to_protege
Chiamare il predicato start Attendere che i tre file di Protégé con estensioni .pprj .pins .pont siano
creati.
27
EsercizioEsercizio
Problema (generico): Problema (generico): riconoscere alcuni elementi “interessanti” all’interno
di un testo scritto in linguaggio naturale
Soluzione:Soluzione: Costruzione di una ontologia, a partire da una
semplice lista di elementi “interessanti” Individuazione dei referenti lessicali agli oggetti
definiti nell’ontologia, all’interno del testo fornito.
28
EsercizioEsercizio
Elementi a disposizione (nel nostro caso):Elementi a disposizione (nel nostro caso): Foglio Excel con elenco degli elementi da individuare Testo tokenizzato da cui estrarre informazione Modello di rappresentazione ontologica XI
Passi da seguire:Passi da seguire: Creare una ontologia - secondo il formalismo di XI -
che rappresenti tutte le entità individuate Esportare l’ontologia in Protégé al fine di verificarne
visivamente la consistenza Creare una lista degli elementi estratti dal testo.
29
Esercizio (Prolog)Esercizio (Prolog)
Definire un predicato:Definire un predicato:testo_etichettato_semanticamente(TEXT,TEXT_SEM)
che sia vero se:che sia vero se:TEXT è una Lista [w1,w2,…,wn]
TEXT_SEM è una Lista [s1,s2,…,sn] dove:
a) si = sem_class(wi) se wi generalizza nella gerarchia nella classe sem_class (una classe delle classi ritenute importanti)
b) si = wi altrimenti
30
Esercizio (Prolog)Esercizio (Prolog)
Definire un predicato:Definire un predicato:testo_stampato_in_XML(TEXT_SEM)Che sia vero se TEXT_SEM è stato stampato su stdout nel
seguente formato:<TEXT>…<element class=“classe_xi”> wi </element>…wj…</TEXT>
31
Esercizio (XML+XSL)Esercizio (XML+XSL)
Trasformare il testo ottenuto in Trasformare il testo ottenuto in precedenza in un testo XHTML tale precedenza in un testo XHTML tale che le parole etichettate che le parole etichettate semanticamente siano evidenziate semanticamente siano evidenziate in boldin bold