Protégé-2000 Un tool per la creazione e sviluppo di Ontologie e Basi di Conoscenza protege.stanford.edu 1 Il modello di Protege Knowledge model Frame-based OKBC compatible Caratteristiche 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 2 Protégé: Componenti Principali Ognuna delle componenti principali di Protégé ha una interfaccia ben definita con il resto del sistema ed è perfettamente sostituibile da componenti analoghe Knowledge model Storage model User interface 3 Gli elementi di Protégé-2000 Form personalizzabili Facets Slots Rappresen tazione di grandi data set standard e user-defined Instanze Classi e gerarchie di classi Componenti per lo sviluppo di Applicazioni basate su conoscenza Easy browsing Domainspecific tabs Custom widgets 4 Sviluppo di una base di conoscenza: l’approccio Protégé R C2 C1 C3 C4 Protégé C5 Ontologia di dominio Strumento di Acquisizione della Conoscenza 5 Protégé: una visione d’insieme Class Tab 6 Editing di Attributi e Concetti 7 Popolamento della base di conoscenza 8 Sviluppo di una Ontologia 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 9 Sviluppo di una Ontologia (2) 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 10 Sviluppo di una Ontologia (3) Tra le possibili alternative, occorre quindi favorire, quelle che: Si adattano meglio all’obiettivo (task) che la nostra applicazione deve perseguire. Siano maggiormente: Intuitive Estensibili Di facile Manutenzione 11 Un esempio guidato per lo sviluppo di una: Ontologia di Vini Francesi 12 Sviluppo dell’Ontologia: Processing Steps Step 1. Determinare il dominio di applicazione 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? 13 Sviluppo dell’Ontologia: Processing Steps Step 2: considerare l’ipotesi di riusare ontologie (o semplici classificazioni) già esistenti (www.wines.com, www.daml.org/ontologies) Step 3: Enucleare i termini più importanti nel dominio 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.. 14 Sviluppo dell’Ontologia: Processing Steps Step 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 15 Sviluppo dell’Ontologia: Processing Steps Step 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 16 Sviluppo dell’Ontologia: Processing Steps 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 17 Sviluppo dell’Ontologia: Processing Steps Step 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 18 Sviluppo dell’Ontologia: Processing Steps Step 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. 19 Sviluppo dell’Ontologia: Processing Steps Step 7: Creazione delle Istanze Problema Amletico: Istanza o Classe? 20 Customizzazione di Protégé: l’esperienza CROSSMARC 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 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 21 Crossmarc: Ontology Editor Tab 22 Crossmarc: Template Editor Tab 23 Crossmarc: Lexicon Editor Tab 24 Crossmarc: Import/Export Tab 25 XI_to_Protégé: un tool di esportazione “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: 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. 26 Esercizio Problema (generico): riconoscere alcuni elementi “interessanti” all’interno di un testo scritto in linguaggio naturale 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. 27 Esercizio 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: 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. 28 Esercizio (Prolog) Definire un predicato: testo_etichettato_semanticamente(TEXT,TEXT_S EM) 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 29 Esercizio (Prolog) 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> 30 Esercizio (XML+XSL) Trasformare il testo ottenuto in precedenza in un testo XHTML tale che le parole etichettate semanticamente siano evidenziate in bold 31