INDICE CAPITOLO 1: DEFINIZIONE FUNZIONALITA DA IMPLEMENTARE L ambito applicativo Concetti di base... 5

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "INDICE CAPITOLO 1: DEFINIZIONE FUNZIONALITA DA IMPLEMENTARE... 5. 1.1 L ambito applicativo... 5. 1.2 Concetti di base... 5"

Transcript

1 INDICE CAPITOLO 1: DEFINIZIONE FUNZIONALITA DA IMPLEMENTARE L ambito applicativo Concetti di base Gli strumenti utilizzati XML: exstensible Markup Language RDF: Resource Description Framework OWL: Web Ontology Language Perché usare le ontologie? Vantaggi delle ontologie Come costruire l ontologia Protégé CAPITOLO 2: DEFINIZIONE CONCETTI BASE Acquisizione della conoscenza di dominio Scelta della metodologia per definire i concetti del dominio Dominio applicativo: gestione dei documenti in TaleteWeb I documenti Le figure aziendali Le notifiche I file Le organizzazioni...17 CAPITOLO 3: CREAZIONE ONTOLOGIA

2 3.1 Come creare l ontologia? Le classi dell ontologia Le proprietà dell ontologia Gli individui dell ontologia Modellazione dell ontologia Riutilizzo di ontologie già esistenti: SUMO La tassonomia delle classi I concetti astratti principali I concetti fisici direttamente associati a Document I concetti di supporto Le proprietà delle classi Creazione relazioni per ogni classe della tassonomia Usare il reasoner Definizione delle restrizioni sulle classi e sulle proprietà Gli assiomi Visualizzazione dell ontologia GraphViz Annotare l ontologia Le annotazioni create manualmente Controllo correttezza e reasoning Popolare l ontologia Le istanze dell ontologia Le restrizioni sulle istanze Relazioni tra istanze tramite le proprietà...49 CAPITOLO 4: OPERAZIONI E RICERCHE SU ONTOLOGIE Come manipolare le ontologie da codice Concetti di base SemWeb: libreria C# per RDF

3 4.3.1 Il modello RDF nella libreria SemWeb SPARQL LinqToRdf: interrogazione SPARQL Linq: interrogazione su oggetti Repository CAPITOLO 5: IMPLEMENTAZIONE DELL ONTOLOGIA IN ASP.NET Migrazione gestione documenti di TaleteWeb Il modello di Document.rdf Inizializzazione del modello: importazione dell ontologia Progettazione delle classi Generazione delle classi Equipe.Data: gestione sorgente dati Equipe.Ontology: definizione delle classi relative all ontologia Equipe.Security: gestione sicurezza accesso alla piattaforma Il sito: la gestione documentale Progetti di supporto: utilità e controlli per l implementazione Inferenza sul modello RDFS Reasoning Euler Proof Mechanism...72 CAPITOLO 6: CONVERSIONE DATI DA UNA SORGENTE RELAZIONALE Recupero dati dalla sorgente relazionale Da database relazionale a triple RDF su file Migrazione dei dati Risultato ottenuto Da database relazionale a triple RDF su database Creazione delle tabelle

4 6.3.2 Implementazione applicazione usando db relazionale...76 CAPITOLO 7: RISULTATI OTTENUTI Risultati visibili Analisi delle prestazioni ANTS Performance Profiler ANTS Memory Profiler...86 CONCLUSIONI BIBLIOGRAFIA

5 CAPITOLO 1 DEFINIZIONE FUNZIONALITA DA IMPLEMENTARE 1.1 L ambito applicativo TaleteWeb, realizzato dall Equipe Srl, è uno strumento di pianificazione e controllo aziendale e in quanto tale offre servizi di consulenza integrati tramite interfaccia web e web service; è una soluzione tecnologica o meglio un sistema di metodologie, contenuti specifici, librerie, software applicativi e reportistica che ha lo scopo di fornire un valore aggiunto alle imprese di qualsiasi dimensione e settore, sia pubbliche che private, basandosi su una gestione efficace ed efficiente per l intero sistema aziendale. Per poter usufruire dei suoi servizi l'utente deve effettuare una registrazione alla piattaforma fornendo un account con username e password. Poiché i servizi offerti riguardano la gestione dell'organizzazione aziendale, ogni utente deve essere associato ad un'organizzazione, già inserita nella piattaforma. Infine occorre fornire all'utente l'accesso alle pagine, secondo il ruolo che svolge all'interno dell'azienda. TaleteWeb è realizzato in ambiente.net e, come di solito avviene in ambito aziendale, la gestione del sistema informativo avviene tramite database, ovvero con la memorizzazione e manutenzione di collezioni dei dati d interesse per l organizzazione; le informazioni memorizzate sono di tipo operazionale, cioè sono dati generati da operazioni svolte all interno dei processi gestionali. L applicazione copre il controllo del sistema di gestione, la pianificazione dei sistemi della qualità, dell ambiente, della privacy e della salute e sicurezza. Si potrebbe pensare di ottenere applicazioni web che non siano semplici contenitori di dati, ma strumenti in grado di comprendere flussi dati e rielaborarli per interagire con gli utenti, sfruttando anche l inferenza per generare nuova informazione. 1.2 Concetti di base Nell intelligenza artificiale il knowledge storing è il processo che consente di memorizzare una conoscenza codificata nel giusto formato in una memoria, mentre il knowledge retrivial è il processo 5

6 inverso che permette di trovare conoscenza quando serve. La conoscenza, prima di essere memorizzata viene raccolta, organizzata e strutturata sotto forma di dominio, di un problema o di un argomento; si parla di knowledge acquisition. La mente umana memorizza le esperienze vissute, ovvero genera un processo di acquisizione della conoscenza tramite strumenti quali l astrazione e la modellazione. Le macchine invece non hanno questo meccanismo trasparente di recupero dell informazione, infatti si affidano all uomo per la fase di memorizzazione. Ci sono vari modelli che consentono la codifica della conoscenza in un sistema intelligente, associati ad una specifica struttura dati come tabelle, alberi, collegamenti, Grazie ai ricercatori dell intelligenza artificiale sono stati definiti molti linguaggi per la rappresentazione della conoscenza a supporto delle varie tecniche di rappresentazione. Una rappresentazione della conoscenza descrive il mondo reale, incapsulando gli oggetti in entità astratte. Il reasoner contiene una rappresentazione interna di entità ad esso esterne, che interagisce direttamente con gli oggetti reali; si esprimono solo alcune informazioni sul mondo, ignorando il resto perché può ricavarlo tramite processi inferenziali. Non esiste una teoria migliore delle altre per rappresentazione della conoscenza umana, ma occorre scegliere quella che più si adatta all applicazione in esame. Le tecniche tradizionali più usate memorizzano la conoscenza sotto forma di triple, oggetto-attributo-valore, in cui gli oggetti hanno solitamente più di un attributo e gli attributo possono avere un solo valore o valori multipli. Il componente centrale di ogni sistema intelligente basato sulla conoscenza è la knowledge base, che contiene un insieme di frasi nel linguaggio di rappresentazione della conoscenza. Si possono aggiungere nuove frasi per ottenere una conoscenza più ampia e accurata del dominio ed eseguire interrogazioni per ottenere cosa il sistema conosce del mondo. La maggior parte delle rappresentazioni della conoscenza possono essere sviluppate tramite linguaggi basati sulla logica in quanto ogni logica formale presenta una sintassi ben definita, che indica come costruire le frasi, una semantica, che descrive il significato delle frasi, e una procedura d inferenza, che determina quali frasi possono essere derivate da altre frasi. Per sviluppare basi della conoscenza è necessario innanzitutto acquisire la conoscenza umana, trasformarla in un formato adatto ai formalismi della rappresentazione della conoscenza, codificarla in una knowledge base usando tecniche, strumenti e linguaggi adatti allo scopo, verificarla e validarla direttamente sul sistema per cui è stata costruita ed infine mantenerla nel tempo. Tale processo è definito come knowledge engineering; le attività dell ingegneria della conoscenza non si susseguono linearmente, in sequenza, in quanto non è sempre facile scegliere gli strumenti adatti prima che la conoscenza sia stata almeno parzialmente codificata. 6

7 Nello specifico l ingegneria ontologica denota un insieme di principi di progettazione, progetti e attività di sviluppo, tecnologie di supporto e metodologie sistematiche. *Gaševid, Djurid, Devedžid ] 1.3 Gli strumenti utilizzati Per le applicazioni web sarebbe utile utilizzare linguaggi standardizzati in modo tale da semplificare l utilizzo dell applicazione, la sua diffusione e la sua interoperabilità con altre applicazioni o strumenti XML: exstensible Markup Language Il linguaggio XML consente di progettare il proprio formato dei documenti. È un linguaggio standard di markup structured-oriented pensato per scambiare in modo semplice documenti di qualsiasi tipo; la creazione di marcatori all interno delle pagine web permette di definire una struttura coerente e non ambigua che rispecchia la conoscenza dello specifico dominio a cui si riferisce. Le componenti dell XML sono il contenuto, le specifiche sulla struttura (DTD, Document Type Definition o XML Schema) e le specifiche sullo stile (XSL, exstensible Style Language). [Fantini M ] XML fornisce una sintassi facile da usare per codificare tutti i tipi di dati scambiati tra computer, usando XML schema per definire la struttura dati. *Gaševid, Djurid, Devedžid ] Alcuni tra i problemi dell XML sono la scelta di termini diversi per lo stesso concetto e l incapacità di esprimere le relazioni tra i concetti. RDF risolve il problema terminologico tramite l uso di identificatori e si occupa dell aspetto relazionale tra gli oggetti attraverso le URI o URL; infatti, essendo ogni oggetto corrispondente ad una risorsa univocamente identificata sul web, le relazioni tra due oggetti possono essere definite con semplicità e non ambiguità. [Zarrillo ] [Petrucco C. 2003] RDF: Resource Description Framework RDF è dunque lo strumento base per la codifica, il riutilizzo di metadati strutturati e l interoperabilità tra applicazioni che si scambiano informazioni machine-understandable. [Signore O ] L unità base per rappresentare l informazione è lo statement, l asserzione, ovvero la tripla soggettopredicato-oggetto; ogni elemento della tripla è una risorsa, mentre l oggetto può essere anche un tipo primitivo. Il modello RDF è rappresentabile con un grafo orientato in cui i nodi sono risorse o tipi primitivi e i rami le proprietà. [Sandrucci V ] RDF è un linguaggio potente per la rappresentazione della conoscenza in quanto permette la creazione di semplici ontologie, ma non è in grado di operare inferenze e deduzioni e quindi di realizzare un ontologia con una certa espressività. [Zarrillo ] Il responsabile dell ufficio italiano del W3C afferma che: 7

8 RDF è per il web semantico ciò che HTML è stato per il web OWL: Web Ontology Language OWL è un linguaggio adottato come standard da W3C per la creazione di ontologie strutturate basandosi sul modello RDF; esso aggiunge un vocabolario più ampio per descrivere proprietà e classi, associando concetti a regole logiche. [Petrucco C. 2003] Un ontologia si definisce come un insieme di concetti, proprietà, relazioni, funzioni, assiomi, definiti in modo formale per essere compresi dalle macchine per la modellazione della conoscenza; il tentativo di formulare uno schema concettuale esaustivo e rigoroso tramite un modello astratto e condiviso di un dominio/fenomeno del mondo fanno sì che le ontologie consentano lo scambio di informazioni chiare e comprensibili. [Vassallo S ] In altre parole:... formal explicit specification of a shared conceptualization. Conceptualization refers to an abstract model of phenomena in the world by having identified the relevant concepts of those phenomena. Explicit means that the type of concepts used, and the constraints on their use are explicitly defined. Formal refers to the fact that the ontology should be machine readable. Shared reflect that ontologyshould capture consensual knowledge accepted by the communities. (Gruber, 1993) Per specifica si intende una rappresentazione formale e dichiarativa; il tipo dei concetti usati e i vincoli sono definiti dichiarativamente usando un linguaggio formale che consente di creare ontologie machine-readable. Per concettualizzazione invece si intende una vista semplificata e astratta del mondo, ciascuna delle quali comprende entità delle quali si assume l esistenza nell area d interesse e relazioni tra di esse. *Gaševid, Djurid, Devedžid ] Occorre notare che una ontologia può assumere: a variety of forms, but necessarily it will include a vocabulary of terms, and some specification of their meaning. This includes definition and an indication of how concepts are inter-related which collectively impose a structure on the domain and constrain the possible interpretation of terms. (Jasper & Ushold, 1999) Formalmente, a qualcuno che vuole trattare argomenti di un dominio D usando il linguaggio L, un ontologia fornisce un catalogo dei tipi di oggetti che si assume esistano in D; nell ontologia i tipi sono rappresentati nei termini di concetti, relazioni e predicati di L. Un ontologia non è attiva, cioè non può essere eseguita come un programma, ma è usata come la conoscenza da usare dai programmi. 8

9 Un vocabolario di OWL contiene un insieme di elementi XML aventi un significato ben definito e usati per descrivere i termini del dominio e le loro relazioni nell ontologia; infatti esso è costruito basandosi sul vocabolario RDF. *Gaševid, Djurid, Devedžid ] Di solito è organizzata come struttura dati gerarchica che contiene tutte le entità rilevanti, le relazioni esistenti tra esse, le regole, gli assiomi e i vincoli specifici del dominio. La sua funzione è simile a quella di un database, ma rispetto ad esso presenta un linguaggio più ricco sia sintatticamente che semanticamente, i dati non sono solo contenuti al suo interno, ma sono anche dotati di un significato ed inoltre le informazioni possedute possono generare ulteriore conoscenza tramite l inferenza. [Valente S ] Un ontologia può essere identificata da due componenti principali: una T-Box e una A-Box: la T-Box o scatola dei termini comprende la parte tassonomica, ovvero i concetti, la gerarchia tra i concetti e le proprietà che relazionano tra loro i concetti (struttura dell ontologia) la A-Box o scatola delle asserzioni comprende i fatti, ovvero le istanze appartenenti ad una precisa classe e i valori assunti dalle proprietà di una classe. [Fantini M ] 1.4 Perché usare le ontologie? La realizzazione di applicazioni web di un certa complessità porta alla necessità di suddividere il lavoro; pertanto è necessario che tutti i membri collaboratori conoscano il dominio applicativo e le sue caratteristiche con un dato livello di profondità. L uso delle ontologie semplifica la soluzione a tale problema perché esse, codificando anche la semantica dei termini, consentono di associare un significato univoco sia tra i collaboratori che tra i collaboratori e gli utenti, che utilizzeranno il prodotto. [Zarrillo A ] È importante sottolineare che un ontologia include non solo i termini in essa definiti, ma anche la conoscenza che ne può essere derivata mediante un processo d inferenza. [Signore O ] Esistono diversi tipi di ontologia: Top-level: concetti generali o comune senso di conoscenza, indipendenti dal dominio Domain: vocabolario relativo ad un generico dominio (medicina, fisica, ) Task: vocabolario relativo ad un generico task o attività (diagnostica, vendite, ) Application: conoscenza proveniente dalla specializzazione di una domain o task ontology. [Valente S ] 9

10 1.4.1 Vantaggi delle ontologie Vantaggi delle ontologie: Accesso dati trasparente: nasconde all utente dove e come sono memorizzati i dati Vista concettualizzata dei dati (approccio orientato allo schema concettuale anziché ai dati) Espressività elevata: la descrizione di un concetto non è un semplice elenco di attributi, ma la composizione ricorsiva di costrutti logici che consentono di definire un concetto come intersezione, unione, complemento, disgiunzione o enumerazione di più concetti ; inoltre si può definire una serie di restrizioni sui singoli attributi di un concetto (migliore organizzazione dei contenuti, dunque migliore fruibilità) Uso di strumenti automatici di ragionamento affinché le informazioni siano complete ed esaustive; grazie ai reasoner si possono effettuare ricerche più complesse ed efficienti [Miglio M ] Condividere una conoscenza e un vocabolario comuni (interoperabilità anche a livello semantico) tra uomo/uomo, uomo/macchina, macchina/macchina Riuso della conoscenza Separare conoscenza di dominio da quella operazionale (esportabilità) Esplicitare le assunzioni sul dominio (modellizzazione) [Valente S ]: è possibile cambiare tali assunzioni in modo semplice se cambia la conoscenza del dominio; assunzioni esplicite sono utili per i nuovi utenti che devono apprendere il significato dei termini della conoscenza di dominio [Noy N. F., McGuinness D.L ] Distribuzione su sistemi diversi, favorendo l interoperabilità Compatibilità con gli standard del web per l accessibilità e l internazionalizzazione. [Fantini M ] La struttura semantica delle ontologie mette in evidenza la differenza di composizione e disposizione dei dati rispetto ai database relazionali, nei quali tutta l informazione deve essere contenuta nella logica dell applicazione. Una buona ontologia dovrebbe avere le seguenti caratteristiche: È chiara e coincisa: ciascun concetto è rilevante e non ci sono duplicati [Zarrillo A ] Non fa assunzioni implicite È coerente: permette la presenza di tutte e sole le inferenze che sono consistenti con le definizioni dei concetti È modificabile È riusabile. [Valente S ] 10

11 1.4.2 Come costruire l ontologia Un modello ontologico definisce in modo esplicito le relazioni e la semantica delle entità del dominio in esame, simile ad un modello ad oggetti, si compone di: Classi o concetti: insiemi, collezioni o tipi di oggetti, organizzati in una tassonomia Attributi, slot, proprietà o regole: caratteristiche o parametri che gli oggetti possono avere e condividere, ovvero relazioni binarie tra oggetti Restrizioni sulle proprietà, role restriction o facet : restrizioni sui valori assunti dalle proprietà Istanze: oggetti del dominio di interesse, sono elementi del mondo reale e sono associate alle classi. Ogni modello ontologico può essere descritto con un sufficiente numero di triple RDF che serializzate in XML possono venire archiviate in un file. [Sandrucci V ] Un linguaggio ontologico è un linguaggio per la descrizione di un modello ontologico e si basa sull espressività e sulla semplicità, caratteristiche necessarie per raggiungere li scopi prefissati, quindi deve: Estendere standard esistenti come XML e RDF per semplificarne l utilizzo Essere facile da capire e da usare Essere specificato in modo formale in modo da essere comprensibile dalle macchine Possedere un potere espressivo adeguato al dominio Il World Wide Web Consortium o W3C è un consorzio che sviluppa tecnologie per portare il web al massimo del suo potenziale, definendo protocolli comuni che ne favoriscano l evoluzione e assicurino l interoperabilità. *13+ L acquisizione della conoscenza del dominio consiste nel raccogliere tante più informazioni possibili sul dominio di interesse, comprendere i termini usati formalmente per descrivere le entità in maniera consistente. Ecco le domande da porsi e alle quali si cerca di rispondere: Quale dominio coprirà l ontologia? Qual è lo scopo dell ontologia? A quali domande l informazione espressa dall ontologia può fornire risposte? Chi userà l ontologia? Ciò che si vuole realizzare è un ontologia di dominio, domain ontology, che fornisce gli oggetti specifici dell applicazione in esame. [ Zarrillo ] 11

12 1.5 Protégé Indipendentemente dal linguaggio di rappresentazione scelto, solitamente si usano editor di ontologie per aiutare lo sviluppatore ad organizzare la struttura concettuale nella sua interezza e altri strumenti per gestire diverse versioni di ontologie, convertirle in altri formati, mapparle da sorgenti diverse. *Gaševid, Djurid, Devedžid ] Protégé è un opensource semplice ma efficace sviluppato in Java dall Università di Stanford per l acquisizione delle informazioni; fornisce un ambiente grafico e interattivo per la progettazione delle ontologie e un ambiente di sviluppo concettuale. La navigazione tra le gerarchie delle classi è semplice e veloce. Oltre alla presenza di una semplice interfaccia, altre caratteristiche come la scalabilità e l estendibilità distinguono Protégé dai molti ambienti di sviluppo per le ontologie; il sistema è infatti costruito in maniera modulare, in modo tale da facilitare l inserimento di nuove funzionalità tramite plugin. [Zarrillo A ] Protégé può esportare le ontologie in vari formati, ovvero RDF, XML Schema e OWL. Utilizzare le ontologie mette dunque a disposizione una terminologia accessibile a tutte le figure presenti nell azienda e da la possibilità di creare viste semantiche dello stesso dominio. Uno degli aspetti più significativi del management aziendale riguarda la gestione dei documenti, che vanno dai comunicati alle offerte, dalle procedure alle documentazioni, Le ontologie possono essere sfruttate per indicizzare le informazioni contenute in tali documenti. All interno di un azienda potrebbe essere necessario effettuare ricerche efficienti per individuare ad esempio un documento con determinate caratteristiche, la documentazione relativa ad un certo argomento o approvata da una certa funzione. [Miglio M ] 12

13 CAPITOLO 2 DEFINIZIONE CONCETTI BASE 2.1 Acquisizione della conoscenza di dominio Il campo applicativo è dunque la qualità ed in particolare la gestione dei documenti e tutto ciò che essa comporta. Prima di definire i concetti è necessario acquisire conoscenza del dominio raccogliendo tutte le informazioni necessarie per descrivere le entità in maniera consistente ed esauriente. Ecco le domande da porsi e alle quali si cerca di rispondere: Quale dominio coprirà l ontologia? Qual è lo scopo dell ontologia? A quali domande l informazione espressa dall ontologia può fornire risposte? Chi userà l ontologia? [Sachs E ] Poiché l ambito in esame ricoprirà i documenti aziendali, della cui implementazione mi sono personalmente occupata, le domande da porsi diventano: Chi è il responsabile del documento? Di cosa tratta il documento? Chi ha emesso il documento? Chi può accedere al documento? A quali documenti può accedere una certa funzione aziendale? Chi può modificare il documento? 2.2 Scelta della metodologia per definire i concetti del dominio Individuato il dominio si procede alla definizione dei principali concetti, le loro proprietà ed infine le loro relazioni; questa fase può dunque essere schematizzata nelle seguenti fasi: 13

14 Flat glossary: documentare ciascun termine con una definizione nel linguaggio naturale, fornendo esempi ove necessario; i nomi saranno oggetti o attori e i verbi relazioni o processi Structured glossary: decomposizione e/o specializzazione dei termini e individuazione degli attributi di concetto Identificazione delle relazioni tra gli oggetti. Si procede aggiungendo concetti, relazioni ed entità fino a raggiungere il livello di dettaglio necessario a soddisfare gli obiettivi dell ontologia. Per individuare i nuovi concetti si possono usare tre diversi approcci: Top-down: si identificano i concetti generali attraverso un raffinamento successivo e si procede verso i concetti particolari Bottom-up: si procede per livelli di astrazione, partendo dalle entità particolari del dominio per astrarre i concetti particolari che contengono o usano quelli particolari Middle-out o combinato: si individuano i concetti salienti e poi si generalizza o specializza. [Valente S ] 2.3 Dominio applicativo: gestione dei documenti in TaleteWeb La gestione dei documenti della piattaforma TaleteWeb aiuta i dipendenti dell azienda a seguire la vita del documento dalla nascita all archiviazione, facilitandone la circolazione e la disponibilità in ogni momento. Si definiscono i concetti nel linguaggio naturale, al fine di descrivere in modo accurato l intero ambito applicativo. I linguaggi naturali infatti possono descrivere quasi ogni cosa relativa all esperienza umana, sono molto espressivi e sono adatti per la rappresentazione della conoscenza. *Gaševid, Djurid, Devedžid ] Una volta definiti i concetti si procede alla costruzione della gerarchia: si parte dai concetti principali per poi generalizzare o specializzare le classi tramite una metodologia middle-out. [Coulleri C, Da Silva Leite G ] I documenti Per documento si intende un oggetto che fornisce informazioni registrate per essere memorizzate o trasmesse o derivanti da una comunicazione. In TaleteWeb un documento è un oggetto astratto le cui caratteristiche sono descritte da proprietà come il nome, la descrizione, l edizione, la revisione, la 14

15 pubblicazione, la tipologia, le figure aziendali ad esso associate; una funzione infatti può occuparsi della preparazione del documento, della sua approvazione, pubblicazione e verifica. Ad ogni documento inoltre può essere allegato uno o più file fisici, cioè sorgenti di informazioni che possono essere lette o scritte; è possibile recuperare tali file per visualizzarli, modificarli ed eventualmente cancellarli. A livello di codice un documento è individuato tramite un identificativo numerico, mentre a livello utente da un codice e un nome. Ogni organizzazione ha i propri documenti, organizzati sotto forma di cartelle e sottocartelle come in un file system vero e proprio; ogni cartella è identificata da codice tramite un id e da interfaccia dal nome e contiene informazioni riguardanti la sua posizione nell albero dei documenti. Per comunicare l apertura, la chiusura o il trattamento di un evento, la pubblicazione di un nuovo documento, l aggiornamento o modifica di un documento esistente e l inserimento di nuove informazioni si possono inviare notifiche; i destinatari della comunicazione sono figure aziendali. La memorizzazione dei documenti sulla piattaforma ne permette la condivisione e il facile accesso ai dati. Poiché all interno di un azienda il personale svolge diversi ruoli e di conseguenza il grado di conoscenza non è omogeneo, anche l accesso ai documenti è controllato; un autorizzazione definisce le capacità di lettura/scrittura di un utente nei confronti di un documento o di una cartella; se un utente è autorizzato ad un solo documento, può accedere, modificare e cancellare solo quel documento e i file ivi presenti, se invece è autorizzato a una cartella può agire su tutti i documenti in essa contenuti e su tutti quelli contenuti nelle eventuali sottocartelle della cartella in esame. Esempi di documenti: il manuale della qualità, il manuale delle istruzioni, il documento di valutazione dei rischi, la lettera ai fornitori, il rapporto di un reclamo, Le figure aziendali Una figura aziendale è una persona che svolge un determinato ruolo all interno dell azienda; può essere una funzione, un dipendente, un utente, un fornitore un cliente o un esterno. Una funzione è un soggetto che svolge una certa attività all interno dell azienda nell interesse di quest ultima; nella piattaforma è descritta tramite il codice, il nome, la descrizione, il tipo, le esperienze necessarie per svolgere i compiti ad essa associati, il titolo di studio richiesto, il responsabile. Ad una funzione si possono associare uno o più file relativi, ad esempio, al contratto aziendale, alle mansioni svolte, Esempi di funzioni: l amministratore, il responsabile commerciale, l ufficio acquisti, la direzione commerciale, il consulente, il coordinatore, l addetto di primo soccorso, il responsabile della salute e sicurezza, 15

16 Il responsabile è una persona fisica che corrisponde al dipendente o al collaboratore, il quale svolge le attività previste dalla funzione che gli è stata assegnata e, in quanto tale, deve essere individuato tra coloro che, per esperienza, capacità, affidabilità, forniscano idonea garanzia circa il rispetto delle disposizioni presenti in materia. Un dipendente di TaleteWeb è individuato tramite un numero di matricola ed è descritto da proprietà quali il nome, il sesso, le informazioni sulla nascita, sul livello scolastico, sul lavoro, Anche in questa maschera la piattaforma consente di aggiungere file per approfondire i dati posseduti sul responsabile. Nella piattaforma TaleteWeb un dipendente o collaboratore può essere associato ad un utenza tramite un account, che gli consente di accedere ai servizi offerti; un utente appartiene ad un unica organizzazione, però può collaborare con più organizzazioni ed è caratterizzato da un username e una password che individuano univocamente il nome del responsabile col relativo contatto mail. I fornitori sono i soggetti economici principali, operanti all'interno dei mercati d'approvvigionamento di risorse monetarie (banche o istituti di credito in generale), risorse primarie (materiali grezzi, beni generici) o servizi. Un fornitore è individuato da codice tramite un identificativo, mentre da codice e nome tramite interfaccia ed è descritto dalla partita iva, dal codice fiscale, dall indirizzo della sua sede legale e da un contatto via mail; anche un fornitore può avere un utenza nella piattaforma e quindi essere associato ad un utente. Un cliente è colui che richiede prestazioni, prodotti e servizi a fronte di un contratto che preveda obbligazioni reciproche ad un fornitore in cambio di corrispettivi economici e può essere una persona fisica o giuridica. Un cliente è sempre identificato da un valore numerico univoco ed è definito tramite proprietà quali il codice, il nome, il codice fiscale, l indirizzo della sede legale, gli strumenti di comunicazione come il telefono, il fax e la mail, il contatto che ha permesso di acquisire il cliente, il settore e il mercato; pure il cliente può avere un account Talete, per avere un mezzo di comunicazione diretto con l azienda. Un esterno è un collaboratore dell azienda descritto da un nominativo e una mail, tramite la quale può comunicare con l organizzazione con cui lavora Le notifiche Tutte le figure aziendali sopra citate possono essere i destinatari di notifiche; una notifica potrebbe anche essere inviata anche ad una lista di distribuzione, intesa come un indirizzario: selezionata una mailing list, l viene spedita agli indirizzi di tutti i nominativi in essa contenuti. Tale strumento è importante la comunicazione inter e intra aziendale, mantenendo così aggiornata l informazione sugli eventi, sulle attività, ecc. 16

17 2.3.4 I file tipo. Un file è un documento fisico associato ad un oggetto ed è descritto dal nome, dalla dimensione e dal Esempi di file: un documento con estensione.doc,.docx o.pdf, un foglio elettronico del tipo.xls o.xlsx, un immagine.jpeg,.bmp o.gif, Le organizzazioni Un organizzazione, infine, è un complesso di persone e beni organizzato per raggiungere un fine economico attraverso lo svolgimento di un attività; un'impresa può essere definita come un sistema sociale-tecnico aperto che scambia conoscenza e produzione, come un complesso di interdipendenze di parti rispetto ad un obiettivo comune, dove per parti si intendono beni e persone (attrezzature, risorse umane, conoscenze e rapporti sociali). In TaleteWeb è individuata dalla ragione sociale ed alcune proprietà ne descrivono l ubicazione, i contatti, il proprietario, i ruoli svolti, Nel caso in esame ogni organizzazione può mantenere una lista di documenti. 17

18 CAPITOLO 3 CREAZIONE ONTOLOGIA 3.1 Come creare l ontologia? Le ontologie sono usate per gestire la conoscenza su un dominio di interesse; un ontologia descrive i concetti del dominio e anche le relazioni che intercorrono tra tali concetti. Non esiste una metodologia standard per la creazione di ontologie e nemmeno un unica metodologia corretta; la modellazione è un processo iterativo e non univoco, in quanto dipende dall applicazione e dalle estensioni previste. Scelto l ambito, considerato il riutilizzo di vocabolari già esistenti ed enumerati i termini, potrebbe essere schematizzata nei seguenti passi: Definire le classi e le gerarchie di classi Definire le proprietà delle classi Definire i vincoli e le restrizioni di ogni genere Creare le istanze. [Coulleri C, Da Silva Leite G ] Uno degli ultimi linguaggi standard sviluppati per le ontologie è OWL ed ha un insieme molto ricco di operatori. Si basa su un modello logico che permette di definire i concetti tramite le loro descrizioni e di costruire concetti complessi a partire da quelli più semplici; inoltre, il modello consente l uso di reasoner che possono verificare la completezza dell ontologia, la consistenza delle definizioni e la correttezza della gerarchia. Un ontologia OWL è composta da individui, proprietà e classi, che in Protégé corrispondono a istanze, attributi o slot e classi Le classi dell ontologia Le classi sono una concreta rappresentazione dei concetti, ovvero insiemi che contengono gli individui, e sono espresse tramite descrizioni formali; possono essere organizzate in una gerarchia di 18

19 superclassi-sottoclassi, dove le sottoclassi sono una specializzazione delle superclassi: tutte le istanze della sottoclasse sono istanze della superclasse, senza alcuna eccezione. Dipendente è una superclasse di Persona Quindi Tutti i Dipendenti sono Persone, essere un Dipendente implica essere una Persona Le propriet{ dell ontologia simmetrica. Le proprietà sono relazioni binarie di individui; una proprietà può essere funzionale, transitiva o Mario Rossi ha preparato il manuale della qualità Gli individui dell ontologia Gli individui, o istanze, rappresentano gli oggetti del dominio di interesse; una differenza tra Protégé e OWL è che OWL non usa Unique Name Assumption, cioè due nomi diversi possono far riferimento allo stesso individuo, anche se è necessario descrivere esplicitamente che identificano lo stesso oggetto. Manuale della qualità e Manuale ISO Modellazione dell ontologia Qualcosa può essere considerato come modello se è un astrazione delle cose del mondo reale, ma allo stesso tempo anche una cosa del mondo reale. *Gaševid, Djurid, Devedžid ] Un ontologia è un modello e in quanto tale un astrazione semplificata della realtà, ma non può contenere tutte le informazioni possibili sul dominio, né è in grado di esprimere tutte le possibili proprietà e distinzioni tra i concetti della gerarchia. [Valente S ] Il primo passo per sviluppare una nuova ontologia consiste nel considerare la possibilità di riusare le ontologie già esistenti, già validate attraverso validatori, anche se sicuramente sarà necessario estenderle per introdurre i concetti e le relazioni specifiche per il dominio in esame; individuati i concetti di base, occorre capire come relazionarli in modo tale da rappresentare il dominio in modo esaustivo. Il processo di integrazione può essere attuato senza difficoltà quando si utilizza un linguaggio modulare come OWL. [Della Valle E ] 19

20 3.2.1 Riutilizzo di ontologie già esistenti: SUMO Il riuso di ontologie è il processo in cui conoscenze ontologiche già esistenti sono usate come input per generare nuove ontologie, che sono dunque sviluppate in modo incrementale. *Gaševid, Djurid, Devedžid ] Si è pensato di importare un ontologia di alto livello o upper level ontology che consente l integrazione di conoscenza eterogenea proveniente da sorgenti dati diverse al fine di creare un ontologia che descriva concetti molto generici, i quali accomunano la maggior parte dei domini. [Mascardi V. a altri ] Infatti, un upper-ontology è un ontologia in cui sono definiti solo i meta concetti, ovvero concetti generali, astratti e filosofici; i concetti relativi ai domini specifici non sono inclusi nello standard, però fornisce la struttura e la base per costruire una qualsiasi ontologia di dominio. [Maculani A ] Come ontologia di alto livello è stata scelta SUMO, Suggested Upper Merged Ontology, poiché è l ontologia pubblica formale più estesa presente oggigiorno; inoltre mappa l intero lessico WordNet ed è la migliore a livello di applicabilità e usabilità. WordNet è un vasto database in inglese sviluppato sotto la direzione di Geoge A. Miller e presenta sia concetti di tipo generale che specializzati collegati tra loro da relazioni semantiche e di sussunzione; nomi, verbi, aggettivi e avverbi sono aggruppati in insiemi di sinonimi detti synset, ciascuno dei quali esprime un concetto distinto, e sono legati tra loro tramite relazioni sintattiche e semantiche. SUMO è una vera ontologia ovvero descrive i concetti e le loro proprietà, senza effettuare alcun tipo di ragionamento; usa il linguaggio SUO-KIF, ma esiste una versione tradotta in OWL, che pur non raggiungendo il potere espressivo della versione originale è più che sufficiente per lo scopo prefissato. KIF è un linguaggio logico basato sulla logica del primo ordine progettato specificatamente per essere usato come mediatore nella traduzione in altri linguaggi. *Gaševid, Djurid, Devedžid ] L ontologia è tridimensionale, ovvero contenente oggetti con la sola estensione spaziale, senza quella temporale, ottenuta dalla fusione di varie ontologie pubbliche preesistenti. La metodologia usata da SUMO è middle-out ovvero sia top-down che bottom-up sfruttando così i vantaggi di entrambe le tipologie per realizzare un ontologia comprensibile ed esaustiva. Si può affermare che SUMO è stabile, infatti la sua struttura non è cambiata negli ultimi anni; comunque ci sono alcune cose che potrebbero essere migliorate ed elaborate, perciò continua ad evolvere anche per avere un più ampio utilizzo nelle applicazioni di ragionamento. [31] I principali vantaggi sono: Ontologia piuttosto ampia Integrazione di conoscenza da varie fonti. [Maculani A ] 20

21 3.3 La tassonomia delle classi Una tassonomia è una categorizzazione gerarchica delle entità nel dominio, organizzate secondo un sistema predeterminato. Una buona ontologia dovrebbe separare le entità in gruppi e sottogruppi mutuamente esclusivi e non ambigui, inoltre dovrebbe essere semplice e facile da ricordare e da usare. *Gaševid, Djurid, Devedžid ] Owl:Thing è la classe che rappresenta l insieme contenente tutti gli individui, perciò tutte le classi create sono sue sottoclassi. Alcune classi come Document e Role sono create come disgiunte ovvero un individuo non può essere un istanza di più di una di queste classi: se si afferma che un individuo è un documento, esso non può essere una funzione. Tutte le entità sono istanze della classe Entity e si suddividono in entità fisiche appartenenti a Physical, che comprende le cose che hanno una posizione spazio/temporale, e astratte appartenenti a Abstract, che invece non possono esistere nello spazio o nel tempo senza una rappresentazione fisica ad esse associata I concetti astratti principali Gli oggetti astratti esistono come gli oggetti matematici e, in quanto tali, si distinguono sottoclassi come quella degli insiemi, Set, e delle relazioni, Relation; i documenti, le cartelle e le funzioni potrebbero essere considerati come istanze di Abstract, poiché non possono esistere in un luogo specifico e non sono ben definiti nel tempo senza una codifica fisica. Nel caso degli oggetti in esame la generalizzazione più adatta è quella di Class, che, rispetto alla classe Set: permette la creazione di classi distinte pur avendo le stesse identiche istanze presentano una condizione che determina le istanze della classe: la condizione document determina la classe Document, folder la classe Folder, mentre role la classe Role non consente la creazione di istanze duplicate all interno della stessa classe. Una cartella in TaleteWeb è un entità astratta in quanto serve solo per organizzare i documenti, ordinandoli sotto forma di albero o suddividendoli in moduli tramite l uso di cartelle e sottocartelle. Anche un documento è astratto perché non è di per sé un entità fisica ben definita, ma solamente un insieme di informazioni; esso può però essere associato ad uno o più file, che descrivono il contenuto del documento. Una funzione può essere considerata come un entità astratta poiché consente di definire il ruolo di un dipendente all interno dell organizzazione; la funzione è associata ad un dipendente, ma un dipendente può avere più funzioni, cioè si occupa di più attività aziendali. 21

22 Per distinguere in modo migliore tali classi si crea la superclasse ReferToThings per Folder e Document, in quanto le loro istanze si riferiscono a oggetti fisici rappresentati dalla classe File, e la superclasse ReferToPeople per Role, poiché le sue istanze hanno relazioni dirette con quelle di Human I concetti fisici direttamente associati a Document Le entità fisiche si distinguono in oggetti e processi individuati rispettivamente dalle classi Object e Process. Il file è un oggetto fisico individuato dal nome, dalla dimensione e dal tipo e posizionato in un archivio della piattaforma in modo tale da potervi accedere in qualsiasi momento, così come modificarlo o cancellarlo; si aggiunge dunque la classe File come sottoinsieme di Object, definendo il concetto generico di InformationObject, che individua oggetti contententi informazioni di vario tipo. SentienAgent\CognitiveAgent\Human ci permette di identificare concetti quali il dipendente, l utente, il cliente, il fornitore e il responsabile esterno. Infatti un agente cognitivo è un agente con abilità di ragionare, deliberare, pianificare, ovvero la nozione etico-legale di persona; da notare che Human è una sottoclasse di CognitiveAgent, perché possono esserci istanze di CognitiveAgent che non sono istanze di Human, come scimpanzé, gorilla, delfini, La classe Human è anche sottoclasse di Hominid in quanto le sue istanze sono discendenti diretti degli ominidi; il percorso tassonomico è dunque Agent\Organism\Animal\ Vertebrate\WarmBloodedVertebreted\Mammal\Primate\Hominid\Human. La classe in questione è suddivisa in Man e Woman, che apportano una specializzazione non necessaria per il dominio in esame; si eliminano tali sottoclassi, mentre si aggiungono quelle di Employee, Supplier, Client, External e User, in quanto tutte le loro istanze sono persone. I clienti e i fornitori possono rappresentare anche un entità di più soggetti, perciò potremmo aggiungere i concetti di Supplier e Client come sottoclassi di Group\GroupOfPeople derivanti da Agent o da Collection. La figura 3.1 mostra la definizione della classe Supplier, che, come tutte le classi è descritta dalle proprietà in essa definite, le superclassi da cui eredita e le restrizioni che la caratterizzano. Collection\Group\Organization può individuare il concetto di organizzazione in quanto essa può essere vista come un insieme di individui uniti da obiettivi comuni; infatti appartengono alla classe Collection tutti gli oggetti con una posizione spazio/temporale ben definita e i cui membri possono essere aggiunti o sottratti senza modificare l identità della collezione. L azienda comunque può anche considerarsi come una sottoclasse di Agent\Group\Organization in quanto un agente è qualcosa o qualcuno che può agire di sua volontà e produrre cambiamenti nel mondo. Più in generale può essere definita come un istituzione e quindi come sottoclasse di CognitiveAgent, la cui esistenza dipende dall esistenza di almeno un membro, infatti Organization, come detto, è anche una sottoclasse di Group; nel caso di organizzazioni puramente legali si assume un membro fittizio. 22

23 Figura 3.1: La classe Supplier con le relative annotazioni, superclassi e restrizioni I concetti di supporto Una notifica è un oggetto inviato da un mittente a uno o più destinatari per effettuare una comunicazione ed è descritta dalla classe , sottoclasse di Object\CommunicationObject, la quale individua tutte le istanze di oggetti che permettono lo scambio di informazioni. Un istanza della classe è relazionata direttamente con istanze delle sottoclassi di Human, poiché i destinatari possono essere utenti, dipendenti, fornitori, clienti e esterni, o di classi ad esse collegate, come Role. Nella piattaforma c è però la possibilità di inviare notifiche a liste di distribuzione, ovvero liste di nominativi create ad hoc per spedire un certo tipo di corrispondenza; quindi c è la necessità di aggiungere la classe MailingList che rappresenta un elenco di entità appartenenti a Human e a Role; essa è stata aggiunta come figlia di Abstract\Relation\List\UniqueList, visto che una lista è definita come un insieme ordinato di elementi ed è unica se ogni elemento appare al massimo una volta al suo interno. Nella fase di creazione delle proprietà è stata aggiunta un ulteriore classe, ManagementSystem, che corrisponde al sistema di gestione di appartenenza del documento, concetto non emerso in fase di analisi, 23

24 ma necessario per definire completamente quello di documento. Il percorso d interesse è Abstract\SetOrClass\Set\FiniteSet che descrive un insieme finito di elementi. Durante l implementazione è emersa la necessità di una classe che individuasse il concetto di destinatario di un e di componente di una mailing list; a tale scopo è stata perciò aggiunta la classe Recipient come sottoclasse di ReferToPeople, un entità astratta che individua un set o una classe e che si relaziona con concetti quali le figure aziendali, come quelli individuati dalle classi Role, Client, Supplier, External e User, e liste di elementi, come le MailingList. La figura 3.2 offre una visualizzazione dell intera tassonomia delle classi. Figura 3.2: La gerarchia delle classi. 24

25 3.4 Le proprietà delle classi Le proprietà OWL rappresentano le relazioni tra le classi del dominio e si suddividono in tre tipi di proprietà, object, data type e annotation: le prime legano un individuo con un altro individuo, le seconde associano un individuo con un tipo di dato primitivo ovvero un valore definito nel XML Schema o un letterale rdf e le ultime sono usate per aggiungere informazioni alle classi e agli individui. Il manuale della qualità hasfile Manuale.pdf Il manuale della qualità hasedition 2 ^^xsd:integer Il primo esempio individua una proprietà che lega l istanza Il manuale della qualità con l istanza Manuale.pdf, mentre il secondo individua una proprietà che lega l istanza Il manuale della qualità con il letterale 2, che è un xml:integer; le proprietà di tipo data type possono essere intrinseche o estrinseche. In OWL le proprietà possono avere delle sottoproprietà, quindi è possibile creare una gerarchia di proprietà; ad esempio una proprietà hasfather potrebbe avere una proprietà più generale hasparent. Ogni sottoclasse eredita le proprietà della superclasse e le classi che presentano più di una superclasse ereditano gli slots da tutte le classi. [Sachs E ] Il dominio di una proprietà è la classe o l insieme di classi ai cui individui si può applicare la proprietà; il range o codominio è invece la classe o l insieme di classi i cui individui possono essere valori della proprietà. Ciò significa che il compito della proprietà o slot è quello di collegare individui appartenenti ad un dominio ad individui di un codominio; domini e codomini non dovrebbero essere considerati come vincoli, ma sono usati come assiomi nel ragionamento. Nel caso di classi multiple il dominio o il codominio è interpretato come l unione delle classi. [Horridge M e altri ] L inserimento delle proprietà in Protégé è molto simile a quello delle classi, l unica differenza è che è possibile crearne una nuova senza antenati. [Capuano N ] Creazione relazioni per ogni classe della tassonomia Ogni proprietà di tipo oggetto potrebbe avere una proprietà inversa corrispondente: se una proprietà associa l individuo a con l individuo b, la proprietà inversa associa l individuo b con l individuo a. hasfather e haschild Tali proprietà rendono completa l ontologia. [Horridge M e altri ] Si possono associare alle proprietà una o più caratteristiche aggiuntive: transitività, simmetria, funzionalità. Se una proprietà transitiva lega l individuo a con b e b con c allora si può desumere che la proprietà leghi l individuo a con c, anche se non esplicitamente dichiarato. 25

26 Cartella1 haschild Cartella2 e Cartella2 haschild Cartella3 allora Cartella1 haschild Cartella3 Se la proprietà è transitiva allora anche la sua inversa dovrebbe essere transitiva. Se una proprietà simmetrica associa l individuo a ad b allora si desume che la proprietà associ b ad a. Se una proprietà è funzionale allora, dato un individuo a, esiste al più un individuo b che può essere relazionato ad a attraverso la proprietà; ciò significa che se la proprietà lega a con b e a con c allora b e c sono lo stesso individuo. Il manuale della qualità preparedfrom Responsabile qualità e Il manuale della qualità preparedfrom Mario Rossi Se una proprietà è transitiva non necessariamente è funzionale. [Capuano N ] Ecco le proprietà della classe Folder: name: di tipo data type, individua una stringa corrispondente al nome dell istanza della classe; haschild: di tipo oggetto, relaziona la classe con un istanza di se stessa; è inversamente funzionale perché una cartella figlia ha un solo padre ma non viceversa ed inoltre è transitiva, come mostrato dall esempio sopra citato; hasfather: di tipo oggetto, relaziona la classe con un istanza di se stessa; è funzionale perché una cartella può avere un solo padre; è la proprietà inversa di haschild quindi ridondante; isauthorized: di tipo oggetto lega la classe ad un User, individuando la capacità dell utente di accedere alle cartelle e ai documenti in essa contenuti; belongto: di tipo oggetto, relaziona la classe con un istanza della classe Organization; è funzionale perché una cartella appartiene ad una sola organizzazione ma non inversamente funzionale perché un organizzazione ha più cartelle. Ecco alcune delle proprietà della classe Document: name: di tipo data type, individua una stringa corrispondente al nome dell istanza della classe; code, description, edition, revision, category, type: di tipo data type, relazionano la classe con il tipo primitivo string e sono funzionali; editiondate, revisiondate, firstpublicationdate, lastpublicationdate: di tipo data type, relazionano la classe con il tipo datetime. Avendo importato l ontologia SUMO, esse si 26

27 aggiungono come sottoproprietà di date che indica una data del calendario associata ad un oggetto o ad un processo e ha come dominio Physical e codominio Day; hasmanagementsystem: di tipo oggetto, associa un documento a un istanza della classe di supporto ManagementSystem; la proprietà è funzionale, ma non inversamente funzionale, poiché un determinato sistema di gestione può essere assegnato a più di un documento; preparedfrom, verifiedfrom, approvedfrom, publishedfrom: di tipo oggetto, relazionano la classe con un istanza della classe Role; sono proprietà funzionali perché un documento può essere preparato da una sola funzione, ma non inversamente funzionali perché una funzione può preparare più documenti; si crea la proprietà generica executedfrom che ingloba tutte queste proprietà; hasfile: di tipo oggetto, relaziona la classe con un istanza di File; non è funzionale poiché un documento può avere più file; hasdocument, hasenclosure: di tipo oggetto, relazionano la classe con un istanza della classe stessa; non sono funzionali perché un documento può essere associato a più documenti; has di tipo oggetto, relaziona la classe con un istanza di (riguarda le notifiche associate al documento); hasfolder: di tipo oggetto, relaziona la classe con un istanza di Folder; è una proprietà funzionale perché un documento appartiene ad una sola cartella, mentre non è inversamente funzionale perché non vale il contrario; isauthorized: di tipo oggetto lega la classe ad un User, individuando la capacità dell utente di accedere al documento in lettura e scrittura; è la proprietà inversa di hasauthorization; belongto: di tipo oggetto, relaziona la classe con un istanza della classe Organization; è funzionale perché un documento appartiene ad una sola organizzazione ma non inversamente funzionale perché un organizzazione ha più documenti. Ecco le proprietà della classe File: name: di tipo data type, individua una stringa corrispondente al nome dell istanza della classe; type: di tipo data type, relazionano la classe con il tipo primitivo string; hasdimension: di tipo data type, relaziona la classe con il tipo primitivo integer; isfileof: di tipo oggetto, relaziona la classe con un istanza di varie classi (Document, Role, , Employee); è la proprietà inversa di hasfile; tale proprietà è stata poi convertita in 27

28 due proprietà EntityName e EntityType, che individuano rispettivamente il nome dell entità a cui si riferisce il file ed il tipo dell entità; belongto: di tipo oggetto, relaziona la classe con un istanza della classe Organization; è funzionale perché un file appartiene ad una sola organizzazione ma non inversamente funzionale perché un organizzazione può possedere più file. La figura 3.3 mostra le proprietà data type ed in particola modo la definizione di hasdimension, il cui dominio è la classe File. Figura 3.3: Le proprietà di tipo data type; in evidenza hasdimension. Ecco le proprietà della classe name: di tipo data type, individua una stringa corrispondente al nome dell istanza della classe; description, sitelink: di tipo data type, relaziona la classe con il tipo primitivo string; sendingdate: di tipo data type, relaziona la classe con il tipo datetime; come le altre proprietà di tipo datetime si crea una sottoproprietà di date; 28

29 is of: di tipo oggetto, relaziona la classe con un istanza di Document; è l inversa di has ; hassender: di tipo oggetto, relaziona la classe con un istanza della classe User; è una proprietà funzionale poiché un documento ha un solo mittente, ma non inversamente proporzionale in quanto un utente può inviare più comunicazioni; hasrecipient: di tipo oggetto, relaziona la classe con un istanza di Recipient; belongto: di tipo oggetto, relaziona la classe con un istanza della classe Organization; è funzionale perché una notifica appartiene ad una sola organizzazione ma non inversamente funzionale perché un organizzazione può possedere più notifiche; hasfile: di tipo oggetto, relaziona la classe con un istanza di File; non è funzionale poiché un documento può avere più file. Le proprietà di tipo oggetto sono visualizzate nella figura 3.4; in particolare è messa in evidenza hasrecipient, appartenente alla classe . Figura 3.4: Le proprietà di tipo oggetto; in evidenza hasrecipient. Ecco alcune proprietà della classe Role: name: di tipo data type, individua una stringa corrispondente al nome dell istanza della classe; 29

30 code, workingexperience, description, type: di tipo data type, relaziona la classe con il tipo primitivo string; hasresponsible: di tipo oggetto, relaziona la classe con un istanza di Employee; la proprietà è funzionale perché una funzione è associata ad un solo dipendente, ma non inversamente funzionale perché un dipendente può svolgere più funzioni; hasprepared, hasverified,hasapproved, haspublished: di tipo oggetto, relazionano la classe con un istanza della classe Document; non sono proprietà funzionali perché una funzione può preparare più documenti, ma non inversamente funzionali perché un documento non può essere preparato da più funzioni; tali proprietà sono inverse rispetto a preparedfrom, verifiedfrom, approvedfrom e publishedfrom; isrecipientof: di tipo oggetto, relaziona la classe con ; è la proprietà inversa di hasrecipient; belongto: di tipo oggetto, relaziona la classe con un istanza della classe Organization; hasfile: di tipo oggetto, relaziona la classe con un istanza di File; non è funzionale poiché un documento può avere più file. Ecco alcune proprietà della classe Recipient: name: di tipo data type, individua una stringa corrispondente al nome dell istanza della classe; type, fax, phonenumber, address, moyen: di tipo data type, relaziona la classe con il tipo primitivo string; sent: di tipo data type, relaziona la classe con il tipo primitivo boolean; sendingdate, date: di tipo data type, relazionano la classe con il tipo datetime, ma diventa sottoclasse della proprietà date di SUMO; belongto: di tipo oggetto, relaziona la classe con un istanza della classe Organization. Ecco le proprietà della classe Employee: name: di tipo data type, individua una stringa corrispondente al nome dell istanza della classe; code, address, city, phonenumber, address, professionalexperience: di tipo data type, relaziona la classe con il tipo primitivo string; birthdate: di tipo data type, relazionano la classe con il tipo datetime, ma diventa sottoclasse della proprietà date di SUMO; 30

31 hasusername: di tipo oggetto, relaziona la classe con un istanza della classe User; è una proprietà funzionale perché un dipendente ha una sola utenza, ma non inversamente funzionale perché uno stesso account potrebbe essere associato a più dipendenti, in quanto possono accedere alle stesse risorse e hanno gli stessi permessi; belongto: di tipo oggetto, relaziona la classe con un istanza della classe Organization; isrecipientof: di tipo oggetto, relaziona la classe con ; è la proprietà inversa di hasrecipient; hasfile: di tipo oggetto, relaziona la classe con un istanza di File; non è funzionale poiché un documento può avere più file. Ecco le proprietà della classe User: password, username, address: di tipo data type, relaziona la classe con il tipo primitivo string; password e username sono proprietà funzionali poiché un utente è identificato da un solo account; si crea una proprietà generica account che ingloba queste proprietà; creationdate: di tipo data type, relaziona la classe con il tipo datetime, ma diventa sottoclasse della proprietà date di SUMO; isownerof: è di tipo data object, relaziona la classe con un istanza di Organization; è l inversa della proprietà hasowner di Organization; hasauthorization: di tipo oggetto lega le istanze della classe con istanze di Document e Folder, secondo l autorizzazione posseduta; è la proprietà inversa di isauthorized; isrecipientof: di tipo oggetto, relaziona la classe con ; è la proprietà inversa di hasrecipient; belongto: di tipo oggetto, relaziona la classe con un istanza della classe Organization. Ecco le proprietà della classe Client: name: di tipo data type, individua una stringa corrispondente al nome dell istanza della classe; code, address, city, phonenumber, address, type: di tipo data type, relaziona la classe con il tipo primitivo string; hasusername: di tipo oggetto, relaziona la classe con un istanza della classe User; isrecipientof: di tipo oggetto, relaziona la classe con ; è la proprietà inversa di hasrecipient; belongto: di tipo oggetto, relaziona la classe con un istanza della classe Organization. 31

32 Ecco le proprietà della classe Supplier: name: di tipo data type, individua una stringa corrispondente al nome dell istanza della classe; code, address, city, phonenumber, address, type: di tipo data type, relaziona la classe con il tipo primitivo string; hasusername: di tipo oggetto, relaziona la classe con un istanza della classe User; isrecipientof: di tipo oggetto, relaziona la classe con ; è la proprietà inversa di hasrecipient; belongto: di tipo oggetto, relaziona la classe con un istanza della classe Organization. Ecco le proprietà della classe External: name: di tipo data type, individua una stringa corrispondente al nome dell istanza della classe; address: di tipo data type, relaziona la classe con il tipo primitivo string; isrecipientof: di tipo oggetto, relaziona la classe con ; è la proprietà inversa di hasrecipient; belongto: di tipo oggetto, relaziona la classe con un istanza della classe Organization. Ecco le proprietà della classe Organization: name: di tipo data type, individua una stringa corrispondente al nome dell istanza della classe; address, city, phonenumber, address, sitelink, responsibleaddress, description: di tipo data type, relaziona la classe con il tipo primitivo string; hasowner: è di tipo oggetto, relaziona la classe con un istanza di User; nella piattaforma è di tipo funzionale; si crea come sottoproprietà di leader di SUMO. Ai servizi offerti dalla piattaforma si può accedere solo se si appartiene ad un organizzazione, quindi la proprietà belongto relaziona le istanze di tutte le classi del dominio applicativo con quella di Organization; visto che le classi interessate sono sottoclassi sia di Abstract che di Physical, il dominio della proprietà è Entity, mentre il codominio è appunto Organization. Le proprietà inverse contengono informazione ridondante, ma permettono di acquisire e rappresentare l informazione in entrambe le direzioni e di aggiungere una verifica addizionale. Durante la fase di reasoning ci si è accorti che l ontologia non era completa, ma mancavano proprietà di alcune delle classi di supporto. 32

33 Le proprietà relative alla classe MailingList sono: hasmember: di tipo oggetto, lega le istanze della classe con quelle dei membri della lista di distribuzione, ovvero Recipient, o indirettamente Employee, Client, User, Supplier, External e Role; come proprietà inversa viene definita ismemberof, di tipo oggetto, che ha come dominio Recpient e come codominio MailingList; belongto: di tipo oggetto, relaziona la classe con un istanza della classe Organization. Per quanto riguarda la classe ManagementSystem mancava la proprietà ismanagementsystemof il cui range è l insieme delle istanze di Document; tale proprietà è l inversa di hasmanagementsystem, già definita in precedenza. Per completezza si aggiunge anche isresponsibleof, proprietà di tipo oggetto, il cui dominio è Employee, mentre il codominio è Role; è inversamente funzionale perché una funzione è associata ad un solo dipendente all interno dell azienda, mentre un dipendente può avere più funzioni. Tale proprietà è l inversa di hasresponsible. Mancano anche alcune proprietà che sono inverse a quelle contenute in Document: isdocumentof: di tipo oggetto lega due documenti; corrisponde inversamente a hasdocument; isenclosureof: di tipo oggetto lega due documenti; corrisponde inversamente a hasenclosure; is of: di tipo oggetto, relaziona un oggetto con Document; la proprietà inversa è has ; isfolderof: di tipo oggetto, relaziona le istanze di Folder con Document. Nell ottica delle query da testare sono state inserite anche proprietà quali issenderof, inversa della proprietà hassender, e isrecipientof, inversa di hasrecipient, in riferimento alle notifiche, e isusernameof, inversa di hasusername, relativa all utenza. La figura 3.5 riassume le proprietà dell ontologia, mostrandone il dominio, il codominio e le caratteristiche, tra le quali ci interessa maggiormente la funzionalità e la funzionalità inversa. 33

34 Figura 3.5: Matrice delle proprietà Usare il reasoner Reasoning significa usare conoscenza e strategie di problem-solving attraverso programmi intelligenti per ottenere conlusioni, inferenze e spiegazioni. *Gaševid, Djurid, Devedžid ] Un description logic reasoner fornisce vari servizi di inferenza come definire le superclassi inferite di una classe, determinare se una classe è consistente, in quanto una classe inconsistente non può avere nessuna istanza, decidere se una classe è una sottoclasse di una classe o meno, [http://protege.stanford.edu/plugins/owl/api/reasonerapiexamples.html] Un reasoner basato sulle logiche formali si limita a derivare espressioni vere per le asserzioni, mentre è difficile modellare interrogazioni che coinvolgono credenze, assunzioni, dubbi, desideri, *Gaševid, Djurid, Devedžid ] Non avrebbe senso creare un reasoner per un applicazione specifica perché, oltre al fatto che è già stato sviluppato e ottimizzato per generiche applicazioni, non è affatto banale scriverlo. Alcuni dei reasoner logici più popolari sono Pellet e FACT++ aggiunti agevolmente a Protégé tramite plug-in. [http://protege.stanford.edu/plugins/owl/api/reasonerapiexamples.html] In Protégé la gerarchia delle classi costruita manualmente si definisce asserted hierarchy, mentre quella generata automaticamente dal classificatore viene detta inferred hierarcy. Avviando il reasoner Pellet si verifica la seguente eccezione: 34

35 ReasonerException: org.mindswap.pellet.exceptions.unsupportedfeatureexception: Axiom: TransitiveObjectProperty(OWLObjectProperty_ ) org.protege.editor.owl.model.inference.owlreasonermanagerimpl$1.run(owlre asonermanagerimpl.java:260) java.lang.thread.run(unknown Source) La correzione viene effettuata cancellando il vincolo di proprietà transitiva a hasfolder e haschild; la classificazione avviene dunque senza errori. Usare strumenti quali i reasoner consente di definire un ontologia mantenibile e modulare Definizione delle restrizioni sulle classi e sulle proprietà Un tipico utilizzo delle proprietà è nella definizione di restrizioni di classe, ovvero sugli individui che possono appartenere ad una classe e di restrizioni di proprietà, dette anche facets, che descrivono o limitano i possibili valori che uno slot può assumere. In OWL possono essere raggruppate in tre categorie: Restrizioni di quantità Restrizioni di cardinalità Restrizioni di valore. Una restrizione descrive una classe anonima contenente tutti gli individui che soddisfano la restrizione; quando sono usate per descrivere le classi specificano superclassi anonime della classe descritta. Una classe A può essere descritta come restrizione su un insieme di individui con ruolo R su almeno un individuo della classe C; si parla di restrizioni esistenziali (some, somevaluesfrom). Nell ontologia in esame non ci sono classi descritte da questo tipo di restrizione. Una classe A può essere descritta come restrizione su un insieme di individui con ruolo R su soli individui della classe C, più tutti gli individui che non hanno relazioni di tipo R; in questo caso le restrizioni sono universali (only, allvaluesfrom). La classe Folder comprende tutti gli individui che hanno relazioni di tipo belongto solo con individui della classe Organization; tale definizione è valida pure per altre classi specifiche del dominio, come Role, Document, Employee, User, , File. Le istanze di Document formano un sottoinsieme tramite il ruolo hasfolder sui soli individui di Folder. Gli individui di User formano sottoclassi attraverso le proprietà username e password che sono delle stringhe. 35

36 La classe Organization contiene gli istanze relazionate con la proprietà hasowner alle istanze di User. In OWL si possono descrivere classi di individui che hanno almeno, al più e esattamente un numero specifico di relazioni con altri individui o data type; le restrizioni che descrivono tali classi sono note come cardinality restriction. Una classe può essere definita come restrizione su un insieme di individui con ruolo R su esattamente n individui tramite la cardinalità, al massimo n individui tramite la cardinalità massima e almeno n individui tramite la cardinalità minima. Definiamo dunque le cardinalità relative alle proprietà della classe Folder: haschild: non ha cardinalità specificata perché una cartella può non avere sottocartelle o averne n; hasfather: la cardinalità massima è unitaria poiché una cartella può avere al massimo un padre e può non averlo se è una root; belongto: ha cardinalità unitaria perché una cartella appartiene ad una sola organizzazione. Per quanto riguarda le proprietà di Document: editiondate, revisiondate, firstpublicationdate, lastpublicationdate: possono assumere al massimo un valore; hasmanagementsystem: al massimo ha un solo valore; preparedfrom, verifiedfrom, approvedfrom, publishedfrom: la cardinalità massima è unitaria; hasfolder: presenta una cardinalità unitaria; belongto: ha cardinalità unitaria perché un documento appartiene ad una sola organizzazione. Ecco le cardinalità delle proprietà della classe File: relatedto: è associato ad almeno un entità, quindi ha cardinalità minima unitaria; belongto: ha cardinalità unitaria perché un file appartiene ad una sola organizzazione. Di seguito quelle relative a sendingdate: può assumere al massimo un valore; hassender: può assumere un solo valore; belongto: cardinalità unitaria perché un appartiene ad una sola organizzazione. Ecco le cardinalità delle proprietà della classe Role: 36

37 hasresponsible: può avere al massimo un dipendente; hasprepared, hasverified,hasapproved, haspublished: la cardinalità massima è unitaria; belongto: cardinalità unitaria perché una funzione appartiene ad una sola organizzazione. In seguito le cardinalità di Employee: birthdate: può assumere al massimo un valore; hasusername: la cardinalità non è definita perché un dipendente potrebbe non avere un utenza o averne più di una; belongto: cardinalità unitaria perché un dipendente appartiene ad una sola organizzazione. Dunque quelle relative a User: creationdate: può assumere al massimo un valore; hasauthorization: la cardinalità non è definita perché un utente potrebbe non avere autorizzazioni o averne n; belongto: cardinalità unitaria perché un utente appartiene ad una sola organizzazione. Ecco le cardinalità delle proprietà della classe Client: hasusername: la cardinalità non è definita perché un dipendente potrebbe non avere un utenza o averne più di una; belongto: cardinalità unitaria perché un cliente appartiene ad una sola organizzazione. Ecco quelle delle proprietà di Supplier: hasusername: la cardinalità non è definita perché un dipendente potrebbe non avere un utenza o averne più di una; belongto: cardinalità unitaria perché un fornitore appartiene ad una sola organizzazione. Di seguito le cardinalità associate alla classe External: belongto: unitaria perché un esterno appartiene ad una sola organizzazione. Di seguito le cardinalità associate alla classe MailingList: belongto: unitaria perché una lista di distribuzione appartiene ad una sola organizzazione. 37

38 3.4.4 Gli assiomi Gli assiomi vengono usati per modellare in maniera esplicita espressioni sempre vere; consente di definire il significato dei vari componenti dell ontologia e le relazioni complesse, di verificare la correttezza dell informazione specificata e di dedurre nuova informazione. Uno degli assiomi più usati è quello di disjoint; se due classi sono disgiunte un istanza può appartenere solo ad una delle due classi. 3.5 Visualizzazione dell ontologia Una volta definite, classi e proprietà possono essere graficate anche su Protégé tramite il plug-in OWLViz che consente la visualizzazione grafica dell ontologia. [Coulleri C, Da Silva Leite G ] GraphViz Si basa su GraphViz, Graph Visualization Software, che è un software opensource in grado di rappresentare le informazioni strutturate come diagrammi di grafi astratti e reti; è possibile specificare diversi livelli di dettaglio per mostrare classi, sottoclassi, slot, istanze e/o relazioni. La figura 3.6 offre una rappresentazione delle relazioni della classe Human con le altre classi. Figura 3.6: Il grafo descrive la classe Human. Il grafo della figura 3.7 mostra la classe Group e le sue relazioni con le altre entità. 38

39 Figura 3.7: Grafo del concetto rappresentante i gruppi. Figura 3.8: Grafo delle classi astratte. Il grafo della figura 3.8 visualizza i concetti astratti dell ontologia, tra cui documento, cartella e funzione, entità chiave del dominio, mentre la 3.9 gli oggetti fisici, i quali sono legati direttamente con il concetto di organizzazione. 39

40 Figura 3.9: Il grafo mostra tutti gli oggetti fisici dell ontologia in relazione col concetto di organizzazione. 40

41 Figura 3.10: Il grafo mostra tutte le classi create. Infine, la figura 3.10 rappresenta tutte le classi create in Protégé, escludendo quelle importate dall upper level ontology SUMO. 3.6 Annotare l ontologia Testo, immagini, particolari informazioni e servizi sono risorse difficili da elaborare in automatico perché non direttamente elaborabili dalle macchine; l annotazione semantica consente di aggiungere smart data a tali risorse allo scopo di renderle elaborabili. I metadati possono essere aggiunti manualmente o in modo automatico. [Della Valle E ] Un annotazione semantica può dunque essere usata per arricchire il contenuto informativo di documenti, associando espressioni in linguaggio naturale, per esprimere in modo formale il significato di una risorsa per poi permettere un recupero intelligente, per consentire l utilizzo di strutture eterogenee in un processo di interoperabilità tra applicazioni software, per descrivere servizi web. 41

42 Le annotazioni semantiche possono essere classificate secondo alcuni aspetti chiave come: Tipo di risorsa annotata: un documento per arricchirne il contenuto informativo, un servizio web per descriverlo formalmente o una struttura dati per esplicitarne la semantica; Destinatario dell annotazione: un utente umano (annotazioni in linguaggio naturale), un agente software (annotazioni in linguaggio formale); Livello di formalità del linguaggio usato per annotare: formale per il processamento dati in automatico (linguaggio di rappresentazione della conoscenza come RDF, OWL, ), informale per aggiungere informazioni fruibili agli utenti umani (linguaggio naturale); Livello di restrizione terminologica imposta sul linguaggio usato per annotare: assenza di restrizioni (i termini dell annotazione sono scelti in modo arbitrario tra quelli del linguaggio naturale), consigliata (è proposto un insieme finito di termini per comporre l espressione di annotazione, includendo termini nel linguaggio naturale se non inclusi nell insieme), vincolata (i termini appartengono esclusivamente ad un glossario ontology-based); Posizionamento dell annotazione: embedded quando l annotazione si trova all interno del documento annotato, attached quando invece l annotazione è memorizzata esternamente al documento; Annotazione attraverso istanze o concetti dell ontologia, se essa è ontology-based. Una classificazione più generica si può effettuare suddividendo le annotazioni in due macroaree: Annotazioni ontology-based garantiscono l univocità dell interpretazione dell espressione di annotazione derivante dai termini scelti tra le etichette di concetti e le relazioni appartenenti ad un ontologia; Annotazioni semplici, costituite da concetti esistenti nell ontologia, o strutturate, create dalla composizione di concetti e relazioni dell ontologia. [Maculani A ] Le annotazioni create manualmente Parallelamente alla fase di creazione della tassonomia è stata avviata quella relativa all annotazione manuale dei concetti dell ontologia e delle relazioni che li legano; tali annotazioni consistono in descrizioni dettagliate delle entità aggiunte in modo tale da migliorare la fruibilità, l utilizzo e la manutenzione dell ontologia. OWL ha alcune proprietà che possono essere usate per annotare le classi, le proprietà e gli individui: owl:versioninfo il cui codominio è di solito una stringa 42

43 rdfs:label ha una stringa come range e può essere usata per aggiungere nomi significativi, anche multilingua, e comprensibili agli elementi dell ontologia rdfs:comment di tipo stringa rdfs:seealso ha come codominio un riferimento a un URI che individua risorse collegate rdfs:isdefinedby ha come range un URI che fa riferimento ad un ontologia [Horridge M e altri ] L annotazione riguarda dunque le classi e le proprietà, sia quelle di tipo object che quelle data type. Le seguenti figure mostrano esempio di annotazioni e, nel dettaglio, la 3.11 relative alle classi, la 3.12 alle proprietà data type, la 3.13 e la 3.14 alle proprietà di tipo oggetto. Figura 3.11: Annotazione del concetto Client. 43

44 Figura 3.12: Annotazione della proprietà password. Figura 3.13: Annotazione della proprietà hasauthorization. 44

45 Figura 3.14: Annotazione della proprietà has Controllo correttezza e reasoning Una volta che l ontologia è stata creata, è necessario individuare e risolvere inconsistenze sintattiche, logiche e semantiche tra gli elementi dell ontologia; i controlli di consistenza possono favorire una classificazione automatica che definisce nuovi concetti sulla base delle proprietà e delle relazioni tra le classi. [Valente S ] Una strategia possibile di verifica della completezza consiste nel verificare che l insieme dato dalla differenza insiemistica degli elementi della classe madre meno l unione degli elementi delle classi figlie sia vuoto; ulteriore controllo riguarda la cardinalità, contando per ogni associazione il numero di occorrenze di elementi della classe interessata al vincolo e verificare che rispetti la cardinalità richiesta. Come già affermato in precedenza, i reasoner o classificatori sono programmi che offrono una serie di servizi per inferenza sulle basi di conoscenza. [Capuano N ] Il ragionamento è un processo che a partire da fatti noti e/o assunzioni consente di trarre conclusioni e fare inferenza; è un processo complesso che coinvolge varie abilità, tra cui l associazione, la causa-effetto, la categorizzazione, l organizzazione, la generalizzazione, *Gaševid, Djurid, Devedžid ] Protégé-OWL presenta delle API, incapsulate nel pacchetto edu.stanford.smi.protegex.owl.inference, che consentono di interagire con reasoner esterni; le classi principali da usare sono ReasonerManager, per ottenere il reasoner, e ProtegeOWLReasoner, interfaccia ad un eventuale reasoner esterno. [http://protege.stanford.edu/plugins/owl/api/reasonerapiexamples.html] Durante la fase di modellazione era emersa la necessità di creare una classe Authorization, contenente le sottoclassi FolderAuthorization e DocumentAuthorization, le quali si riferivano 45

46 rispettivamente alle autorizzazioni alle cartelle e ai documenti. Avviata la fase di controllo si è notato che il reasoner Pellet aveva generato un risultato anomalo; si è dunque giunti alla conclusione che tali classi fossero inutili, perché il concetto di autorizzazione poteva essere rappresentato in modo semplice ed efficace tramite proprietà che relazionano i concetti di cartella e di documento direttamente con quello di utente. Non si sono verificate inconsistenze, però il reasoner ha modificato la classe Document e la classe all interno della tassonomia delle classi. Infatti uno dei principali servizi offerti da un reasoner è testare se una classe è superclasse di un altra classe o meno; eseguendo il test su tutte le classi dell ontologia il classificatore genera la gerarchia delle classi inferita. [Horridge M e altri ] La figura 3.15 mostra l inferred class hierarchy, ovvero la tassonomia ottenuta dal motore inferenziale. Figura 3.15: La gerarchia delle classi ottenuta dall inferenza. La gerarchia inferita non è però corretta. Infatti, si è individuato che la proprietà isauthorized potrebbe non avere almeno un valore come invece era stato affermato: è vero che chi crea il documento è ad esso autorizzato, ma l autorizzazione può essere revocata; lo stesso vale per la proprietà isrecipient, in 46

47 quanto la notifica potrebbe essere creata ma non ancora inviata e perciò potrebbe non avere nessun destinatario Quindi dopo tali modifiche la tassonomia inferita è corretta ed è mostrata nella figura seguente, la Figura 3.16: La gerarchia definitiva delle classi ottenuta dall inferenza. 3.8 Popolare l ontologia L ultimo passo della definizione di un ontologia consiste nella creazione di individui appartenenti alle varie classi della gerarchia. [Capuano N ] Una volta popolata l ontologia la base della conoscenza è completa, in quanto per knowledge base si intende la conoscenza necessaria a modellare e elaborare il problema, a derivare nuova conoscenza, a provare teoremi, a rispondere a domande riguardanti un certo dominio. Una base della conoscenza può essere dunque schematizzata come l insieme di: Ontologia: lo schema concettuale del dominio Fatti: le istanze dei concetti definiti nell ontologia Regole: consentono di inferire nuova conoscenza. [Miglio M ] 47

48 OWL permette di definire gli individui e asserire alcune proprietà su di essi; per definire un individuo è necessario accedere al relativo pannello su Protégé; il tool consente di inserire le istanze associate a ogni classe in modo semplice ed intuitivo. [Horridge M e altri ] Le istanze dell ontologia Gli individui della classe ManagementSystem si riferiscono al valore assunto dal sistema di gestione di un documento e sono visualizzati nella figura Figura 3.17: Le istanze della classe ManagementSystem. Le altre istanze riguardano alcuni possibili valori che possono essere assunti dalla varie classi; la figura 3.18 rappresenta a titolo esemplificativo le istanze della classe Document. 48

49 Figura 3.18: Le istanze della classe Document Le restrizioni sulle istanze Una restrizione di tipo hasvalue, denotata dal simbolo э, descrive l insieme di individui che hanno almeno una relazione tra una specifica proprietà ed uno specifico individuo, ma nel caso in esame non ci sono restrizioni da specificare. [Horridge M e altri ] Relazioni tra istanze tramite le proprietà Per rendere completa l ontologia sarà necessario aggiungere le relazioni esistenti tra le istanze delle classi tramite le proprietà, che costituiranno i dati veri e propri; per aggiungere informazioni occorre inserire nuove triple RDF e ciò sarà possibile usando la libreria C# per manipolare ontologie sotto forma di grafi RDF. 49

50 CAPITOLO 4 OPERAZIONI E RICERCHE SU ONTOLOGIE 4.1 Come manipolare le ontologie da codice Esistono numerosi application framework per il semantic web che mettono a disposizione API per manipolare ontologie e metadati da codice. [Della Valle E ] La maggior parte di tali strumenti è sviluppata in ambiente Java, tra cui Jena, framework open source sviluppato dal Semantic Web Research Group di HP Lab che consente di realizzare applicazioni java ontology-based per la rappresentazione e l interrogazione di modelli RDF. Inizialmente, vista la diffusione e l efficacia di tali strumenti Java, il lavoro si era avviato in tale direzione, ma poi è sorto il problema di come far comunicare in modo semplice ed efficiente un interfaccia realizzata in ASP.NET e un implementazione basata sullo sviluppo di un ontologia in Java. L attenzione allora si è rivolta allora verso strumenti realizzati in ambiente.net che fossero in grado di manipolare le ontologie. Purtroppo lo stato dell arte in questo ambito è molto ristretto; le strade da intraprendere sarebbero potute essere due: SemWeb: libreria in C# in grado di manipolare grafi RDF, sviluppata nel 2005, l ultima versione è stata rilasciata l 11 maggio 2009 per correggere alcuni bug, attualmente non sviluppata attivamente, ma può essere facilmente integrata con altre librerie come LinqToRdf, che consentono di effettuare l interrogazione su RDF e di aggiungere ulteriori funzionalità; Jena per.net: conversione delle librerie Java tramite JKVM project che comprende un implementazione.net della Java Virtual Machine. Nel primo caso si ottiene codice ASP.NET puro, mentre nel secondo l implementazione dell interfaccia ASP è in Java. Si è deciso di utilizzare SemWeb in quanto il suo ultimo aggiornamento è molto recente e può essere facilmente esteso aggiungendo nuove funzionalità o migliorando quelle esistenti, anche introducendo nuove librerie, native in.net, invece nel caso di librerie native Java potrebbero derivare 50

51 problemi di integrazione e compatibilità. Librerie come LinqToRdf, pur essendo funzionanti con la versione precedente tramite plug-in, sono state sviluppate per il Visual Studio 2008, perciò si è deciso di migrare la soluzione da Visual Studio 2005, lo strumento usato per la realizzazione di TaleteWeb, al 2008, creando un prototipo ad hoc per la gestione documentale, che rispecchiasse il funzionamento dell applicazione già esistente; tale scelta facilita l eventuale introduzione di moduli aggiuntivi per manipolare RDF e OWL. 4.2 Concetti di base Resource Description Framework è lo standard per descrivere le risorse, dove per risorsa si intende qualsiasi cosa che può essere identificata tramite un Uniform Resource Identifier. Le risorse hanno delle proprietà, il cui nome è sempre un URI; a loro volta le proprietà hanno un valore, come ad esempio un letterale. RDF può essere rappresentato sotto forma di grafo e ogni arco del modello rappresenta una dichiarazione o statement, che comprende il soggetto, il predicato e l oggetto; il modello RDF è dunque un insieme di statement. [http://jena.sourceforge.net/tutorial/rdf_api/index.html] 4.3 SemWeb: libreria C# per RDF SemWeb è una libreria in C# per ambienti.net semplice e flessibile in grado di: Leggere e scrivere RDF Mantenere RDF in una memoria persistente (anche su MySQL) Interrogare la memoria persistente tramite semplici matching sui grafi o tramite SPARQL Eseguire query SPARQL da remoto Il modello RDF nella libreria SemWeb SemWeb.Statement è una struttura che rappresenta un istruzione RDF con un soggetto, un predicato, un oggetto ed opzionalmente metadati, ciascuno dei quali è un istanza di SemWeb.Resource; la classe che individua una risorsa è astratta e presenta le sottoclassi Entity e Literal. La classe che individua le entità ha come sottoclasse SemWeb.BNode per le entità anonime, che a sua volta contiene SemWeb.Variable da usare nelle query; istanze della classe dei letterali possono essere create solo per gli oggetti delle istruzioni RDF. I grafi e i repository delle istruzioni RDF sono invece rappresentati da SemWeb.StatementSource e memorizzati tramite le istanze di SemWeb.Store. L input e l output RDF è realizzato tramite le classe SemWeb.RdfReader, SemWeb.RdfXmlReader e SemWeb.RdfWriter, SemWeb.RdfXmlWriter rispettivamente. 51

52 Il repository delle istruzioni RDF può essere interrogato creando istanze e usando metodi contenuti in SemWeb.Query; grazie alla SPARQL engine, che risiede in SemWeb.Sparql, si possono però eseguire interrogazioni SPARQL più complesse su qualsiasi sorgente dati, includendo di statement opzionali, unioni/disgiunzioni e filtri speciali. SemWeb fornisce anche due classi di inferenza, RDFS, che implementa un sottoinsieme del reasoning RDFS, e Euler, che invece implementa le regole di base del Euler proof mechanism, contenute all interno di SemWeb.Inference. 4.4 SPARQL SPARQL è un linguaggio di interrogazione standard W3C per RDF simile a SQL che consente di recuperare informazioni da un determinato grafo RDF e nello specifico serve a facilitare l estrazione di informazione sottoforma di URI, blank nodes, plain and typed literal, l estrazione di un sottografo RDF, la costruzione di nuovi grafi RDF. Gli scopi di SQL e SPARQL sono abbastanza diversi tra loro da giustificare la creazione di un linguaggio specifico per l interrogazione dell RDF. Le query SPARQL si basano sul meccanismo del pattern matching e in particolare sul costrutto triple pattern che rispecchia la configurazione a triple delle asserzioni RDF fornendo un modello flessibile per la ricerca di corrispondenze; il soggetto e l oggetto della tripla sono due variabili contrassegnate con? e fungono in un certo senso da incognite dell interrogazione. È visibile l analogia coi costrutti del linguaggio SQL: SELECT definisce le variabili di ricerca da prendere in considerazione nel risultato FROM specifica il set di dati su cui dovrà operare la query WHERE definisce il criterio di selezione. Tale linguaggio può essere usato per : Estrarre informazioni da grafi RDF sottoforma di URI, blank-nodes e letterali Estrarre sottografi RDF Costruire nuovi grafi RDF sulle informazioni dei grafi interrogati. Le query uguagliano i pattern del grafo col grafo risultato dalla query; i pattern sono come grafi RDF ma possono contenere variabili al posto dei nodi, che rappresentano le risorse, e link o predicati al posto delle proprietà. I pattern più semplici sono singole triple RDF e combinati *Gaševid, Djurid, Devedžid ] in pattern più complessi. 52

53 La soluzione di una query è un insieme di coppie costituite dal nome della variabile e dal suo valore, può essere ottenuta direttamente dalla query SELECT e può essere considerata come una tabella in cui, di solito, non tutte le righe hanno valori per ogni colonna. Il risultato delle query SPARQL può essere in formato tabulare o XML; quest ultimo ha una sintassi intuitiva, leggibile e facile da gestire. 4.5 LinqToRdf: interrogazione SPARQL LinqToRdf è un framework in ambiente.net che fornisce un modo semplice per effettuare interrogazioni all interno del software, convertendole in SPARQL; nello specifico usa il framework SemWeb.NET che, come già citato in precedenza, fornisce una piattaforma per lavorare con OWL e SPARQL e il System.Linq di.net 3.5. [LinqTodf] Basandosi su Linq, LinqToRdf semplifica le interrogazioni in quanto è possibile creare query più o meno complesse senza la necessità di conoscere SPARQL, usando una sintassi simile a quella di SQL. Ulteriore vantaggio è fornito dal fatto che si prevedono upgrade della libreria, i quali avranno lo scopo di incrementare le performance di utilizzo, migliorare le funzionalità esistenti ed aggiungerne di nuove Linq: interrogazione su oggetti Linq, Language INtegrated Query, è un componente del.net Framework Microsoft che aggiunge ai linguaggi.net la possibilità di effettuare interrogazioni su oggetti, usando una sintassi simile a SQL ed è stato rilasciato nel 2007 come componente del.net Framework 3.5. Definisce un insieme di operatori che possono essere usati per interrogare, proiettare e filtrare dati contenuti in una qualsiasi sorgente di dati, che sia essa sotto forma di matrici, classi enumerabili, XML, database relazionali o entità modellate in classi. Il risultato di una query viene restituito come una collezione di oggetti in memoria che possono essere enumerati. Il punto di forza di Linq consiste nella sua semplicità d uso: scrivere una query per cercare all interno di un grafo di oggetti è sicuramente più semplice e immediato che ciclare gli elementi uno ad uno alla ricerca di quelli che rispettano determinate caratteristiche, anche dal punto di vista della leggibilità del codice. Linq esprime la sua efficienza e potenza d uso nell interazione con sorgenti dati dinamiche come un file XML, che potrebbe contenere un grafo rdf di una certa complessità, come può esserlo un grafo rdf delle classi di un ontologia. La libreria è anche molto flessibile perché mette a disposizione una grande quantità di operatori: Di restrizione (Where, OfType): per effettuare un filtraggio sui dati da interrogare; Di proiezione (Select, SelectMany): per modificare il risultato di una query; 53

54 Di ordinamento (OrderBy, OrderByDescending, ThenBy, ThenByDescending, Reverse): per ordinare il risultato ottenuto dalla query; Di partizionamento (Take, Skip, TakeWhile, SkipWhile): per selezionare il numero di elementi che si vogliono ottenere da una query; Per liste (Distinct, Union, Except, Intersect): per effettuare il confront tra due liste; Di aggregazione (Average, Max, Min, Sum, Count, LongCount): per fornire aggregazioni di dati; Di elemento (ElementAt, First, Last, Single, ElementAtOrDefault, FirstOrDefault, LastOrDefault, SIngleOrDefault): per restituire l elemento che soddisfa una certa condizione, evitando di sollevare un eccezione se la condizione non è soddisfatta quando è definito il default; Di raggruppamento (GoupBy): per raggruppare i dati del risultato; Di conversione (ToArray, ToList, AsEnumerable): per convertire il risultato in un certo tipo. 4.6 Repository Per memorizzare i metadati e le ontologie non basta un semplice RDBMS, ma è necessaria un infrastruttura capace di gestire metadati in formato RDF, gestire ontologie in formato OWL, supportare protocolli e linguaggi di interrogazione come SPARQL su cui eseguire task di ragionamento e regole. [Della Valle E ] In ambiente Java Sesame è un architettura generica suddivisa in vari livelli di componenti/api in grado di manipolare grafi RDF, effettuare l interrogazione tramite SPARQL e creare un repository, ovvero un data store di statement. *Gaševid, Djurid, Devedžid ] In ambiente.net la libreria SemWeb offre tutti gli strumenti per rendere persistente i dati dell applicazione, eventualmente anche tramite l utilizzo di MySQL. 54

55 CAPITOLO 5 IMPLEMENTAZIONE DELL ONTOLOGIA IN ASP.NET 5.1 Migrazione gestione documenti di TaleteWeb La fase di implementazione consiste in una prima fase di migrazione dell applicazione da Visual Studio 2005 a Visual Studio 2008, al fine di poter sfruttare tutte le funzionalità aggiuntive del Framework 3.5 e per poter usufruire appieno delle librerie per le ontologie quali SemWeb e LinqToRdf. La migrazione riguarda solo la gestione documentale della piattaforma TaleteWeb, al fine di realizzare un prototipo che mostri il comportamento delle ontologie in un applicazione web. 5.2 Il modello di Document.rdf Innanzitutto si crea il modello vuoto, che poi ospiterà l ontologia, importata da Protégé; l importazione avviene tramite la lettura del file RDF contenente il modello ontologico e la successiva scrittura delle triple nel modello. Per la creazione dell ontologia è possibile usare anche il procedimento inverso, ovvero si può creare l ontologia in ambiente ASP.NET per poi importarla in Protégé. È necessario aggiungere nuovi statement che relazionano le istanze dell ontologia tramite le proprietà già definite; tali dati vengono aggiunti una tantum per consentire di iniziare ad usare l applicazione e riguardano tutti i dati generici dell organizzazione, tra cui gli utenti, i dipendenti, le funzioni, i clienti e i fornitori Inizializzazione del modello: importazione dell ontologia LoadBaseOntology(), mostrato nella figura 5.1, è il metodo che si occupa di caricare l ontologia da un file in input generato da Protégé, generando così la sorgente dati. Le classi RdfXmlReader e RdfXmlWriter della libreria SemWeb permettono di manipolare rispettivamente in lettura e in scrittura file XML contenenti grafi RDF. 55

56 Si aggiungono dunque i dati necessari per l accesso alla piattaforma e, trattandosi di grafi RDF, si creano le entità, figura 5.2, i predicati, figura 5.3, e i letterali, figura 5.4, che costituiranno le triple, l unità di base della memorizzazione dei dati; le risorse e le proprietà si definiscono istanziando oggetti di tipo SemWeb.Entity, i letterali di tipo SemWeb.Literal e le triple di tipo SemWeb.Statement, il cui inserimento nella sorgente è visualizzato nella figura 5.5. Figura 5.1: Il metodo che carica l ontologia e genera la sorgente di dati. Figura 5.2: Alcune delle risorse create. 56

57 Figura 5.3: Alcune delle proprietà create. Figura 5.4: Alcuni dei letterali creati. Figura 5.5: Alcune delle triple aggiunte al memory store. 5.3 Progettazione delle classi La progettazione delle classi è già stata fatta in precedenza durante la creazione dell ontologia, in quanto le classi da generare rispecchiano le classi e le relative proprietà della tassonomia ontologica. Il diagramma delle classi della figura 5.6 comprende tutte le classi del dominio dell ontologia. 57

58 Thing è la classe più generica da cui ereditano tutte le classi dell ontologia, sia quelle di dominio che quelle di supporto; sue sottoclassi dirette sono Entity e Organization, dove Entity è la superclasse di tutte le classi che descrivono il dominio applicativo e Organization è relazionata direttamente con tutte le istanze di oggetti di tipo Entity. Figura 5.6: Diagramma delle classi da implementare sulla base dell ontologia creata. 5.4 Generazione delle classi Per l implementazione vera e propria dell ontologia si procede alla generazione della gerarchia delle classi, descritta nella figura 5.7; le classi ivi create conservano perciò il nome della rispettiva classe di Protégé, come pure le proprietà ad essa associate. Esse sono definite all interno del namespace Equipe.Ontology. All interno di un applicazione complessa quale TaleteWeb sono necessarie classi di supporto per la gestione della sorgente dati e di tipi personalizzati, memorizzate in Equipe.Data, ma anche della sicurezza di accesso al sistema, contenute in Equipe.Security Equipe.Data: gestione sorgente dati Il progetto Equipe.Data contiene classi per la definizione di tipi personalizzati quali TaleteData e TNumber; il tipo TaleteData inizializza una data a partire da un DateTime, valutando nulli valori inferiori a DateTime.MinValue, mentre TNumber definisce numeri a partir da valori di tipo double, long, string e object, formattando i valori numerici secondo il caso d uso. 58

59 Tale progetto contiene inoltre le classi che descrivono la sorgente dati: Thing e Entity. Thing contiene riferimenti espliciti alla sorgente informativa, perciò tutte le classi del Domain Model devono discendere direttamente o, come accade per la maggior parte, indirettamente da questa; ereditando da LinqToRdf.OwlInstanceSupertype, permette così di definire la classe e le sue derivate come ontologiche. Figura 5.7: Albero delle classi. 59

60 Tutti i metodi che riguardano l accesso all ontologia e la modifica o restituzione di elementi in essa contenuti sono qui definiti e alcuni di essi sono mostrati nella figura 5.8;tra i più importanti: LoadBaseOntology(): già citato in precedenza, per generare la sorgente di dati; LoadOntology(): per caricare la sorgente dati ed eseguire qualsiasi tipo di operazione quali la selezione, l inserimento, la modifica e la cancellazione di triple; UpdateOntology(Store store): per aggiornare la sorgente dati, perciò deve essere invocato ogni volta che si modifica lo store, ovvero per l inserimento, la modifica e la cancellazione delle triple; CreateStringLiteral(string value): per creare una risorsa di tipo Literal; CreateEntity(string namespace, string name): per istanziare un oggetto Entity di tipo namespace avente come nome name ; GetEntityByName(string name, string type): per ricercare un entità di tipo type e nome name nella sorgente dati ed inserirne una nuova se la ricerca non comporta un risultato positivo; GetPredicate(string name, string type): per ricercare un predicato della classe type avente come nome name nella sorgente. Figura 5.8: Alcuni dei metodi della classe Thing. Entity, invece, che eredita da Thing, accomuna tutte le classi che rappresentano i concetti base del Domain Model, fornendo funzioni di utilità comuni a tutto il modello. Comprende alcune delle proprietà comuni a tutto il dominio, come il nome, il codice e l organizzazione d appartenenza e i metodi che consentono il caricamento, il salvataggio e la cancellazione di tali proprietà: 60

61 Load(string entity): effettua il caricamento di un entità di tipo entity avente come nome una stringa pari al valore della proprietà Name; il codice del metodo è riportato nella figura 5.9; Save(SemWeb.Entity subject, string type): modifica le triple dello store aventi subject come soggetto, le proprietà della classe come predicato ed appartenenti alla classe di tipo type; Delete(string name, string type): elimina tutte le triple aventi come soggetto l entità di tipo type avente name come nome. Figura 5.9: Metodo Load della classe Entity. Figura 5.10: Metodi di Entity per il salvataggio e cancellazione di triple. 61

62 Le operazioni eseguite nei metodi del salvataggio e della cancellazione sono contenute nella figura Si definiscono inoltre metodi che restituiscono liste di elementi, come ad esempio GetItems(string entityname), visualizzato nella figura 5.11, il cui risultato è l insieme di tutte le entità di un certo tipo appartenenti ad una organizzazione. Figura 5.11: Metodi GetItems della classe Entity Equipe.Ontology: definizione delle classi relative all ontologia Le classi sono state generate sfruttando le agevolazioni del framework 3.5, come l automatic property, ovvero la definizione automatica dei metodi get e set delle proprietà di base, e la type reference implicita, ovvero l utilizzo della variabile var per definire oggetti che saranno tipizzati solo durante la loro assegnazione di un valore. Le classi corrispondenti alla tassonomia dell ontologia sono definite come sottoclassi di Entity e, poiché esprimono classi corrispondenti ad un ontologia, presentano l attributo OwlResource, come mostra la figura seguente, la Anche le proprietà che descrivono le funzionalità dell ontologia sono definite tramite l attributo OwlResource, mentre quelle di supporto sono definite normalmente (figura 5.13). 62

63 Figura 5.12: La classe Document. Figura 5.13: Definizione delle proprietà della classe Folder. 63

64 Alcune delle proprietà restituiscono un elenco di elementi di un certo tipo e che soddisfano alcune condizioni; ad esempio GetItems è un metodo presente in quasi tutte le classi in quanto restituisce la lista delle istanze di quella classe, avente come organizzazione quella selezionata, mentre la proprietà Documents restituisce la lista dei documenti contenuti all interno della cartella selezionata dell organizzazione corrente. Il codice visibile nella figura 5.14 è quello di GetItems di Organization, mentre quello nella 5.15 è di Documents di Folder. Figura 5.14: Metodo GetItems della classe Organization. Figura 5.15: La proprietà Documents della classe Folder. 64

65 Una volta definiti i costruttori, si implementano in primis i metodi per il caricamento delle informazioni relative all oggetto selezionato e per la loro manipolazione: Load(): consente di caricare tutti i dati dell entità, richiamando il metodo virtuale omonimo della superclasse per le proprietà comuni; la figura 5.16 mostra quello di File; Save(): salva tutte le triple associate all entità selezionata, sempre richiamando il relativo metodo di Entity; la figura 5.17 visualizza il metodo corrispondente contenuto in Folder; Delete(): elimina gli statement dell entità relativa all istanza della classe in esame, invocando il metodo di base. Nel caso della cancellazione di una cartella (vedere figura 5.18) occorre rimuovere a cascata tutte le sue sottocartelle e, per ognuna di esse tutti i documenti contenuti. Solo in questo caso non viene effettuata la chiamata al metodo Delete di Entity, in quanto l eliminazione è più complessa e richiede una sequenza di operazioni ben definita; infatti se alcune delle triple che descrivono sottocartelle o documenti non venissero cancellate, non sarebbero comunque visibili dall interfaccia, ma continuerebbero ad occupare memoria utile. Il diagramma della classe Folder nella figura 5.19 ne mostra tutte le proprietà, i metodi e le superclassi, dirette e indirette. Figura 5.16: Il metodo Load della classe File. 65

66 Figura 5.17: Il metodo Save per il salvataggio delle istanze della classe che rappresentano le cartelle. Figura 5.18: Il metodo Delete di Folder che consente di eliminare una cartella e tutto il suo contenuto. Alcune delle classi più elaborate contengono anche ulteriori metodi, come ad esempio la classe Document o la classe User. Un documento, infatti, può essere associato ad una lista di file che possono essere uploadati tramite l interfaccia e sono restituiti dal metodo GetFiles(string name) o ad un insieme di documenti ad esso collegati, che invece sono restituiti da SelectRelatedDocument(string entityname). 66

67 Un utente è legato ad un account attraverso il quale può accedere alla piattaforma, perciò ci sono metodi che verificano la sua autenticazione come Authenticate(string username, string password), la sua autorizzazione ad una cartella o a un documento, rispettivamente tramite i metodi IsFolderAuthorized(string folder) e IsDocumentAuthorized(string document). Figura 5.19: Diagramma della classe Folder Equipe.Security: gestione sicurezza accesso alla piattaforma Il progetto Equipe.Security contiene classi per la gestione della sicurezza di accesso alla piattaforma TaleteWeb tra cui: MD5: per l implementazione del Message Digest Algorithm; TaleteIdentity: per la memorizzazione dell utente corrente Il sito: la gestione documentale Il prototipo realizzato comprende solo le maschere relative alla gestione documentale, ovvero quella che mostra l albero dei documenti aziendali e quella delle autorizzazioni ad esso associate. La figura 5.20 visualizza l interfaccia della maschera per la gestione dei documeni. 67

68 Selezionando una cartella o una sottocartella dell albero è possibile visualizzare tutti i documenti in essa contenuti; le informazioni relative al documento come l edizione, la revisione, il tipo, la data di pubblicazione, chi l ha pubblicato, quali sono i file uploadati e quali sono le notifiche ad esso associate possono essere visualizzate selezionando il documento d interesse dall albero. Figura 5.20: La maschera dei documenti aziendali. Figura 5.21: La maschera delle autorizzazioni dei documenti aziendali. 68

69 La maschera delle autorizzazioni appare come nella figura 5.21 e mostra l intero albero dei documenti e consente di associare le autorizzazioni sulle cartelle e/o sui documenti all utente selezionato; se l utente è autorizzato ad una cartella automaticamente è autorizzato anche a tutti i documenti presenti in essa e ricorsivamente a tutte le sottocartelle contenute nella cartella autorizzata Progetti di supporto: utilit{ e controlli per l implementazione La soluzione contiene anche alcuni progetti di supporto quali: Equipe.Utils: insieme di classi di utilità per definire enumerazioni di oggetti serializzabili e per ottenere i parametri da query string; Equipe.WebControls: insieme di controlli personalizzati usati nella piattaforma; Equipe.Word: insieme di classi per la gestione di documenti Word Inferenza sul modello Lo standard RDF di per sé non consente di esprimere regole di inferenza, perciò è necessario sfruttare estensioni semantiche e la conoscenza insita nei data type usati al fine di esprimere la conoscenza di dominio dell applicazione. Uno strumento ampiamente usato per creare applicazioni RDF con un motore di inferenza è CWM, un forward-chaining reasoner che utilizza una sintassi estesa dell RDF capace di descrivere semplici regole tramite le forward-chaining. Euler, invece, è uno dei primi strumenti per RDF; è essenzialmente un backward-chaining reasoner che usa regole simili a quelle definite per CWM, supportando anche un insieme delle proprietà built-in di CWM. OWL è un estensione semantica di RDF che, descrivendo classi di oggetti, fornisce reasoning sui valori dichiarati come istanze di classi OWL. La libreria SemWeb fornisce due classi di inferenza nel namespace SemWeb.Inference: RDFS, che implementa un sottoinsieme del reasoning RDFS e Euler, che implementa un rule-based reasoner basato su Euler Proof Mechanism ; entrambi i motori d inferenza sono inizializzati con degli assiomi ed eseguono il reasoning su un arbitrario modello di dati per ottenere risultati difficili da ottenere con una semplice interrogazione della sorgente. Per la classe RDFS gli assiomi sono memorizzati in uno schema RDF sotto forma di relazioni di tipo subclassof tra le classi e subpropertyof tra le proprietà, mentre per la classe Euler gli assiomi sono regole contenenti implicazioni. Il modo migliore per istanziare i Reasoner consiste nell applicarli ad un oggetto di tipo Store tramite il metodo AddReasoner, per poi eseguire le interrogazioni richiamando i metodi di Contains, Select e Query. 69

70 5.5.1 RDFS Reasoning La classe RDFS di SemWeb fornisce un insieme limitato di reasoning RDFS su un modello di dati; si crea un istanza della classe, si carica lo schema RDF ed infine si applica il reasoner ad un oggetto di tipo Store che rappresenta la sorgente dati. Tale procedimento può essere visualizzato nella figura Figura 5.22: Metodo LoadRDFSOntology che accede alla sorgente dati. Effettuando un interrogazione di tipo Select si ottengono tutti gli statement presenti nel modello che soddisfano gli assiomi. Il metodo GetBusinessRoles s restituisce la lista di tutti gli indirizzi delle figure aziendali appartenenti all organizzazione selezionata, consentendo di ottenere in modo semplice e immediato una mailing list di tutti coloro che devono essere informati riguardo ad una riunione, una decisione concordata, la pianificazione degli orari di lavoro, qualsiasi comunicazione che deve essere resa nota ai dipendenti, ai clienti, ai fornitori, agli esterni e agli utenti della piattaforma; sono esclusi dal risultato tutti gli elementi che non possiedono una o se essa non è correttamente formattata. La semplicità dell operazione è dovuta all utilizzo del reasoner che permette di recuperare in blocco tutte le istanze della classe Human, anziché quelle delle singole classi sfruttando l eredità per derivare nuova informazione; infatti, la classe Human è una generalizzazione di Employee, Supplier, Client, External e User. Il codice del metodo dell indirizzario è contenuto nella figura 5.23, mentre l interfaccia utente appare come nella figura

71 Figura 5.23: Il metodo GetBusinessRoles s effettua un interrogazione del modello con un reasoner RDFS. Figura 5.24: L indirizzario delle figure aziendali dell organizzazione selezionata. 71

72 Il metodo GetOwners (figura 5.25) mostra in output l insieme di tutti i proprietari delle organizzazioni presenti in TaleteWeb, che potrebbe essere utile per conoscere chi deve essere informato riguardo a possibili aggiornamenti o cambiamenti importanti nella piattaforma; l accesso a tale report, vista la sensibilità dei dati in esso contenuti, deve essere consentito solo agli amministratori del sito, o al più ai proprietari per visualizzare solamente le organizzazioni con le quali sono in relazione diretta. Il motore inferenziale restituisce le triple che contengono la proprietà hasowner, pur ricercando quelle con predicato pari a leader, in quanto le due proprietà sono legate tra loro da una relazione di tipo subpropertyof. Figura 5.25: Metodo GetOwners che restituisce i proprietari delle organizzazioni Euler Proof Mechanism Euler Proof Mechanism è un motore d inferenza basato sulla logica: gli assiomi sono acquisiti dal web e convertiti in un programma contenente una serie di istruzioni logiche. L elemento di base dell inferenza è l argomento logico o sound argument, costituito dalla coppia premesse-conclusione. Un argomento è valido se e solo se è necessario che se tutte le premesse sono vere, la conclusione è vera, mentre è logico se e solo se è valido e tutte le premesse sono vere; un argomento logico può essere la premessa di un altro argomento logico. Per usare la classe Euler di SemWeb.Inference occorre crearne un istanza avente come parametro di input uno StatementSource con le regole di inferenza. 72

73 CAPITOLO 6 CONVERSIONE DATI DA UNA SORGENTE RELAZIONALE 6.1 Recupero dati dalla sorgente relazionale Dato che TaleteWeb è una piattaforma già esistente si pone il problema di migrare i dati dal database relazionale ad una sorgente che può essere interrogata da applicazioni basate sulle ontologie. La memorizzazione delle triple RDF, che sono l unità di base di tali applicazioni, può avvenire su file XML, ma anche su un database relazionale; nel primo caso il file contiene l intero grafo RDF e perciò mostra la sorgente dati nella sua forma originale, mentre nel secondo i componenti delle triple vengono memorizzati in tabelle diverse, per poi essere ricomposti durante l interrogazione. Il prototipo è stato implementato usando file XML come sorgente dati e il paragrafo successivo mostra come è avvenuta la migrazione dei dati. Anche se non è stato implementato, l ultimo paragrafo di tale capitolo mostra come è possibile utilizzare un database anche con le ontologie. 6.2 Da database relazionale a triple RDF su file La fase implementativa del prototipo per la gestione documentale tramite l uso delle ontologie è stata testata con una quantità limitata di dati di prova, inseriti direttamente dalla maschera, valutando così anche il funzionamento della manipolazione dei dati. Al fine di analizzare il funzionamento reale del prototipo occorre una sorgente dati più ampia e la soluzione migliore per ottenerla è quella di convertire i dati della sorgente relazionale della piattaforma già esistente in un formato adatto alla nuova implementazione, risolvendo così sia la necessità e l utilità di gestire dati reali che la problematica della migrazione dei dati, indispensabile se si decidesse di optare per la soluzione ontologica. 73

74 6.2.1 Migrazione dei dati L utilizzo di un file come sorgente dati per la memorizzazione di triple RDF ha consentito di implementare un applicazione ontologica in modo semplice e diretto; le triple RDF infatti formano un grafo, la cui struttura è mantenuta all interno del file sorgente. Per consentire la migrazione da database si è realizzato un programma a sé stante che seleziona i dati contenuti nelle tabelle relazionali di interesse e li converte in triple RDF, evitando duplicati e mantenendo i collegamenti tra le tabelle; una parte del codice del programma può essere analizzata nella figura 6.1. Ad esempio, per il salvataggio di un documento e delle informazioni ad esso relative occorre aggiungere le funzioni corrispondenti a chi l ha preparato, approvato, verificato e pubblicato, dunque i dipendenti ad esse associati ed infine, per ciascun dipendente, l eventuale utenza. Figura 6.1: Codice per la conversione di dati da database relazionale a triple RDF Risultato ottenuto Le triple RDF generate dall esecuzione dei metodi per la conversione vengono memorizzate nel file contenente la sorgente dati, in modo tale che qualunque interrogazione verrà effettuata direttamente su di esso; la figura 6.2 mostra un estratto della sorgente. XML consiste in una delle principali serializzazioni adottabili per i grafi RDF, dove per serializzazione si intende il processo che consente di salvare un oggetto su un supporto di memorizzazione lineare, come appunto un file o un area di memoria; un modello RDF è infatti rappresentabile da un grafo orientato avente come nodi risorse o tipi primitivi e come archi proprietà e può essere rappresentato fisicamente mediante una serializzazione. 74

75 Figura 6.2: Triple RDF contenute nella sorgente dati. 6.3 Da database relazionale a triple RDF su database Un approccio diverso potrebbe essere quello di utilizzare un database relazionale come sorgente di immagazzinamento delle triple RDF; il supporto a strutture di memorizzazione basate su SQL è fornito anche dalla libreria SemWeb, usata per implementare le ontologie. Una volta definita la struttura delle tabelle, il programma dell importazione, sempre realizzato ad hoc secondo la struttura dell ontologia, consentirebbe la comunicazione tra database, anziché tra un database e un file. Uno dei vantaggi più evidenti dell utilizzo di una sorgente relazionale rispetto al normale utilizzo di file RDF è la scalabilità: in applicazioni in cui i dati crescono esponenzialmente per la grande quantità di utenti potrebbe diventare ingestibile l utilizzo di un unico file per la memorizzazione delle informazione Creazione delle tabelle Una possibile definizione delle tabelle potrebbe essere la seguente: Una tabella Resources che rappresenta tutte le risorse e contiene colonne come id, identificatore interno, namespace, identificatore del namespace a cui appartiene la risorsa, 75

76 e name, il nome locale del componente; magari si possono aggiungere altre colonne come language e uri, che però può essere ottenuta anche concatenando namespace e name; Una tabella NameSpaces che contiene tutti i namespace utilizzati nell ontologia, dove ciascuna riga è identificata da id e descritta da name; Una tabella Literals per tutti i letterali: le colonne sono id, che esprime l identificatore interno, e value, che invece contiene il valore assunto dal letterale; Una tabella Statements che definisce le triple e perciò presenta le colonne id, per essere identificate univocamente, subject, predicate, objresource e objliteral, rispettivamente il soggetto, il predicato e l oggetto (risorsa o letterale) della tripla Implementazione applicazione usando db relazionale LINQ consente anche il dialogo con database SQL, senza la necessità di conoscerne la sua sintassi; i passi da seguire potrebbero essere i seguenti: Creazione di un oggetto DataContext che rende possibile la comunicazione tra l applicazione e la sorgente dati; Creazione di un oggetto Table che rappresenta la tabella del database; Specificare nella query i dati che devono essere restituiti dal database e come questi devono essere esposti una volta ottenuti. La classe che individua la tabella è descritta dall attributo Table, mentre le sue proprietà da Column, di cui si specifica il nome e il tipo. LINQ, come già affermato in precedenza, consente la completa manipolazione dei dati, ovvero l inserimento, la modifica, la cancellazione e il recupero; nell ultimo caso la richiesta dei dati non avviene quando si compila la query, ma nel momento in cui essi si utilizzano effettivamente. 76

77 CAPITOLO 7 RISULTATI OTTENUTI 7.1 Risultati visibili La realizzazione della gestione documentale mediante l utilizzo di un ontologia creata ad hoc non modifica il funzionamento, né l interfaccia di quella già esistente; infatti il cambiamento riguarda solo il livello implementativo, perciò un utente non percepisce la diversità del servizio e, anzi, potrebbe essere soddisfatto riguardo alle nuove funzionalità, che sono state possibili sfruttando motori inferenziali. Utilizzare tali tecnologie facilita la modularità e quindi l integrazione di nuovi servizi, anche grazie alla loro continua evoluzione; ad esempio sono previste nuove versioni della libreria LinqToRdf che, fra le varie migliorie e le nuove capacità, consentiranno l inferenza tramite OWL e cioè la possibilità di costruire interrogazioni sempre più complesse. RDF, infatti, consente di memorizzare dati in modo flessibile, indipendentemente dallo schema iniziale e permette di creare relazioni web-like tra i dati, che invece non è semplice da ottenere in un database relazionale. L uso delle ontologie, inoltre, è un approccio orientato allo schema concettuale piuttosto che ai dati, il quale descrive concetti e non entità; la definizione dei concetti può anche essere complessa grazie a operatori quali l intersezione, la disgiunzione, l unione e il complemento ed a restrizioni. Una migliore organizzazione dei dati e la maggiore quantità di informazioni comportano l incremento della fruibilità delle informazioni e di conseguenza offrono la possibilità di effettuare ricerche complesse ed efficienti. Quindi, per quanto riguarda i risultati visibili, il giudizio è positivo e non sembrano emergere condizioni sfavorevoli ad implementare applicazioni basate sulle ontologie. Alcuni svantaggi e difficoltà si notano a livello operativo a causa della scarsa letteratura disponibile in ambiente.net. Un analisi approfondita delle prestazioni ottenute dalla nuova implementazione è mostrata nei seguenti paragrafi, grazie al confronto diretto con l applicazione già esistente. 77

78 7.2 Analisi delle prestazioni Le prestazioni indicano lo sforzo di esecuzione necessario per risolvere una serie di operazioni, una particolare operazione d inferenza, per memorizzare le ontologie e per la gestione dei dati. L allocazione di memoria indica invece quanta memoria è richiesta per lavorare con le ontologie; occorre valutare la dimensione e la complessità dell ontologia, la complessità delle operazioni e quali parametri influenzano l occupazione della memoria. La scalabilità valuta le prestazioni e le richieste di memoria in risposta all aumento del numero di operazioni da eseguire, esamina dunque problemi come quanto la crescita lineare di operazioni influisce sulla memoria allocata. [Zarrillo A ] Lo strumento utilizzato per effettuare l analisi delle performance è ANTS Profiler, il software di RedGate per l analisi delle prestazioni scritte nei linguaggi supportati dal.net Framework, il quale può anche essere integrato su Visual Studio; la versione scaricata in prova per 15 giorni è l ultima disponibile, la 5.1. L attività di profiling consiste nell analizzare le operazioni eseguite da un applicazione e registrare quante più informazioni possibili riguardo ai tempi di esecuzione, la memoria allocata, il consumo della CPU e l accesso al file system; il risultato ottenuto è un report dettagliato che evidenzia le procedure che rallentano l uso del programma o che hanno un comportamento anormale, anche tramite la profilazione a livello di codice, la quale evidenzia direttamente il sorgente e le istruzioni che impegnano più risorse. L interfaccia è chiara e intuitiva; in alto la timeline, durante l esecuzione, mostra l andamento dell uso della CPU, dei byte allocati o della cache; nella parte centrale vengono riepilogate le chiamate ai metodi, che possono essere visualizzate sotto forma di albero, di griglia o di grafico consentendo così una certa flessibilità, mentre nella parte bassa dell interfaccia si possono visualizzare in dettaglio le righe di codice del metodo che si sta analizzando. Il consumo delle risorse è calcolato in termini di tempo o in forma percentuale rispetto al tempo del test e si mettono in risalto quelle procedure che rallentano il sistema, evidenziandole con un colore rosso e mostrandone l hit count, ovvero il numero di volte che tali procedure vengono eseguite. Ciò consente di individuare facilmente il codice lento e decidere di conseguenza di ottimizzarlo, incrementando così le prestazioni generali. ANTS Profiler comprende anche uno specifico profiler per la memoria che consente di realizzare report che ne mostrano l utilizzo e permettono il confronto tra le varie allocazioni di memoria per evidenziare quelle parti di codice che possono causare memory leak. I risultati ottenuti sono chiari e significativi, rendendo semplice la loro interpretazione. 78

79 7.2.1 ANTS Performance Profiler Il profiler è stato utilizzato in prima istanza per individuare colli di bottiglia del programma, quindi per ottimizzare il codice dove possibile e ottenere un miglioramento prestazionale dell intero sistema; in seguito è stato utilizzato anche come strumento di confronto tra la gestione documentale già esistente di TaleteWeb e il prototipo realizzato tramite le ontologie. L avvio di ANTS Performance individua immediatamente la presenza di qualche problema di ottimizzazione, sia per il caricamento dell albero dei documenti, che per la visualizzazione delle autorizzazioni associate agli utenti. L analisi effettuata per la maschera delle autorizzazioni è visualizzata nella figura 7.1. Figura 7.1: La maschera autorizzazione dei documenti avviata dal profiler. Analizzando passo passo il codice, emerge che per ottenere l utente corrente e l organizzazione selezionata si interroga la sorgente dati ogni volta che viene creato un elemento dell albero dei documenti per recuperarne le autorizzazioni associate; tali informazioni, invece, devono essere caricate solo la prima volta che si avvia l applicazione, quando si effettua un nuovo login, nel caso di CurrentUser, e quando si modifica l organizzazione corrente, nel caso di SelectedOrganization. Ottimizzando tali proprietà si ottengono risultati decisamente migliori: il caricamento della pagina avviene entro tempi ragionevoli. Il confronto tra le due timeline (mostrato nella figura 7.2) ottenute rispettivamente dalla maschera di gestione dei documenti già esistente e da quella creata nel prototipo rivela una certa corrispondenza, che prima dell ottimizzazione non era visibile: 79

80 La prima parte della curve mostra l accesso alla piattaforma e i tempi sono pressappoco equivalenti; I due picchi intermedi consentono di raggiungere la maschera della gestione documentale: con l uso delle ontologie il numero degli eventi eseguiti è superiore, ma il tempo di esecuzione rimane costante; La sezione seguente di curva positiva effettua il caricamento dell albero dei documenti dell azienda: in questa fase il CPU time quasi raddoppia; Ciascuno dei picchi contenuti nell ultima sezione della curve corrisponde alla selezione di un documento dall albero o dalle liste sovrastanti e sono pressappoco equivalenti. Figura7.2: Confronto maschera gestione documenti. 80

81 Figura 7.3: Confronto maschera autorizzazione documenti. Allo stesso modo, nella figura 7.3, si osserva il confronto tra i due sistemi per la visualizzazione e modifica delle autorizzazioni su cartelle e documenti associate agli utenti e si possono trarre le stesse conclusioni, ovvero nella maggior parte delle operazioni le prestazioni corrispondono, mentre in altre il tempo di esecuzione è quasi raddoppiato; tale degrado è percepibile dall utente solo in parte, in quanto si parla di secondi ed è dovuto alla presenza di una sorgente dati estesa e al caricamento contemporaneo di parecchie informazioni. Nel dettaglio accade: 81

82 La prima parte delle curve mostra l accesso alla piattaforma e i tempi sono pressappoco equivalenti; I due picchi successivi consentono di raggiungere la maschera delle autorizzazioni: con l uso delle ontologie il numero degli eventi eseguiti è superiore, ma il tempo di esecuzione rimane costante; La parte restante della timeline riguarda il caricamento delle autorizzazioni associate all utente selezionato e alla successiva modifica: come nell altra maschera i tempi di CPU sono raddoppiati e varia la sequenza delle operazioni effettuate. L analisi successiva riguarda la performance dell indirizzario di cui non si può effettuare il confronto perché non è implementato nel sistema già esistente; la timeline significativa è quella evidenziata in quanto corrisponde al caricamento della maschera in esame e non rivela anomalie. Selezionando la regione dell attività a cui si è interessati vengono mostrati solo i dati ed i metodi invocati contenuti al suo interno. Il risultato dell analisi delle prestazioni relativa all indirizzario è contenuta nella figura 7.4. Figura 7.4: Analisi delle prestazioni dell indirizzario. Il profiler è stato avviato anche per individuare la presenza di un eventuale codice non ottimizzato per la maschera che permette la visualizzazione dei proprietari; come si può notare nella figura 7.5 il tempo di esecuzione è nella norma. 82

83 Figura 7.5: Analisi delle prestazioni della maschera dei proprietari. Selezionando il metodo invocato durante l avvio del profiler è possibile mostrare una rappresentazione sotto forma di grafico, comoda per mettere a confronto il consumo delle risorse dei vari metodi; visualizzato il grafo, è possibile restringere il campo d analisi selezionando il nodo corrispondente alla singola funzionalità che si intende ispezionare nel dettaglio. Il grafo nella figura 7.6 mostra la sequenza delle chiamate effettuate dalla proprietà SelectedOrganization che restituisce il nome dell organizzazione corrente e che corrisponde a BelongTo dell utente loggato individuato da CurrentUser. Figura 7.6: Grafo delle chiamate della proprietà SelectedOrganization. Il caricamento della pagina relativa alla gestione documentale comporta la creazione dell albero dei documenti appartenenti all organizzazione corrente. Nel grafo della figura 7.7 viene visualizzata in dettaglio 83

84 la proprietà Documents invocata da ogni cartella dell albero per ottenere tutti i documenti in essa contenuti. Figura 7.7: Grafo delle chiamate della proprietà Documents. Durante la visualizzazione della pagina delle autorizzazioni, viene creato l albero dei documenti eseguendo la chiamata al metodo CreaCartella e, per ogni cartella creata, si verifica se tale utente loggato è autorizzato: Se IsOwner è true significa che l utente è il proprietario dell organizzazione, perciò è automaticamente autorizzato a tutto l albero; Se IsAdministrator è true significa che l utente è un amministratore della piattaforma e in quanto tale è autorizzato all albero; Se IsFolderAuthorized è true significa che l utente possiede l autorizzazione alla cartella in esame, alle cartelle in essa contenute, e a tutti i documenti appartenenti a tali cartelle; Negli altri casi l utente non è autorizzato alla cartella. Figura 7.8: Grafo delle chiamate al metodo per recuperare le autorizzazioni ad una cartella. 84

85 La figura 7.8 visualizza le chiamate per controllare se l utente è autorizzato ad una certa cartella, mentre la 7.9 mostra i passi che consentono il salvataggio delle autorizzazioni dell albero dei documenti associate ad un utente; dall interfaccia si selezionano le cartelle e/o i documenti che possono essere gestiti dall utente e quindi si clicca il bottone per salvare le modifiche, la cui implementazione è descritta dal metodo Bottone1_Click: Si cancellano tutte le autorizzazioni dell utente alle cartelle tramite DeleteFolderAuthorizations; Si cancellano tutte le autorizzazioni dell utente ai documenti tramite DeleteDocumentAuthorizations; Si effettua dunque il salvataggio delle autorizzazioni modificate tramite SalvaPermessi: se gli elementi dell albero sono selezionati allora l utente è autorizzato. Figura 7.9: Grafo relativo al salvataggio delle autorizzazioni. Figura 7.10: Grafo delle chiamate che coinvolgono il metodo GetOwners. Come mostrato nella figura 7.10, per visualizzare il report dei proprietari delle organizzazioni di TaleteWeb vengono invocati: il metodo GetOwners, che consente di restituire i risultati cercati tramite il motore d inferenza RDFS, avviato da LoadRDFSOntology; 85

86 altri metodi di supporto quali GetNameByUrl, che permette di restituire il nome di un entità dall Uri ANTS Memory Profiler ANTS Memory mette in evidenza l utilizzo della memoria da parte di un applicazione. Il profiler è stato avviato eseguendo l intero ciclo di operazioni da analizzare ovvero accesso alla piattaforma, controllo delle autorizzazioni, salvataggio delle autorizzazioni, accesso alla pagina di gestione dei documenti, caricamento di vari documenti e salvataggio di alcuni di essi. Figura 7.11: Sommario del confronto sull occupazione della memoria. 86

87 Il report complessivo descritto dalla figura 7.11 individua un leggero miglioramento dell uso delle risorse nel caso di un applicativo basato sulle ontologie, visibile attraverso parametri quali lo spazio libero disponibile, la dimensione del blocco di memoria più grande disponibile e la dimensione massima dei nuovi oggetti. Anche se si effettua un analisi più dettagliata (figura 7.12) emerge un migliore utilizzo delle allocazioni di memoria per un applicazione che usa le ontologie, come si nota dalla dimensione delle istanze create. Figura 7.12: Confronto sull occupazione di memoria. 87

SVILUPPO ONTOLOGIE PER LA GESTIONE DOCUMENTALE E LORO INTEGRAZIONE ALL INTERNO DI UNA PIATTAFORMA WEB

SVILUPPO ONTOLOGIE PER LA GESTIONE DOCUMENTALE E LORO INTEGRAZIONE ALL INTERNO DI UNA PIATTAFORMA WEB Facoltà di Ingegneria Corso di Laurea Specialistica in Ingegneria Informatica SVILUPPO ONTOLOGIE PER LA GESTIONE DOCUMENTALE E LORO INTEGRAZIONE ALL INTERNO DI UNA PIATTAFORMA WEB Relatore Chiarissimo

Dettagli

1. Rappresentazione della conoscenza 2. Ontologie 3. Usi delle ontologie 4. Progettazione di un ontologia 5. Esempio di progettazione di una

1. Rappresentazione della conoscenza 2. Ontologie 3. Usi delle ontologie 4. Progettazione di un ontologia 5. Esempio di progettazione di una 1. Rappresentazione della conoscenza 2. Ontologie 3. Usi delle ontologie 4. Progettazione di un ontologia 5. Esempio di progettazione di una ontologia 1 Rappresentazione della conoscenza Il problema di

Dettagli

Introduzione al Semantic Web

Introduzione al Semantic Web Corso di Laurea Specialistica in Ingegneria Gestionale Corso di Sistemi Informativi Modulo II A. A. 2013-2014 Giuseppe Loseto Dal Web al Semantic Web 2 Dal Web al Semantic Web: Motivazioni Il Web dovrebbe

Dettagli

Descrizione Formale Esplicita Dominio

Descrizione Formale Esplicita Dominio Ontologia Abbiamo visto che tassonomie e tesauri fissano una semantica. Per arricchire la semantica si deve passare a modelli concettuali e teorie logiche. Un modello concettuale è il modello di una particolare

Dettagli

Enrico Fagnoni BOTK IN A NUTSHELL

Enrico Fagnoni <e.fagnoni@e-artspace.com> BOTK IN A NUTSHELL Enrico Fagnoni BOTK IN A NUTSHELL 20/01/2011 1 Business Ontology ToolKit Business Ontology Toolkit (BOTK) è un insieme estensibile di strumenti per realizzare applicazioni basate

Dettagli

Dalla filosofia all informatica: Ontologia una concettualizzazione di un dominio condiviso

Dalla filosofia all informatica: Ontologia una concettualizzazione di un dominio condiviso Professionisti della conoscenza, www.cstadvising.com Per info: dott. Massimiliano Miglio +39 328.91.66.816 E-mail: advising@cstadvising.com m.miglio@cstadvising.com Dalla filosofia all informatica: Ontologia

Dettagli

Protégé. Cos è un ontologia

Protégé. Cos è un ontologia Protégé Cos è un ontologia Un ontologia è una descrizione formale di concetti in un dominio (classi) le proprietà di ciascun concetto (slot) le restrizioni sugli slot (facets) ONTOLOGIA + UN INSIEME DI

Dettagli

Relazione Pinakes3 Analisi modello di business (BOZZA) di Valeriano Sandrucci 08/09/07

Relazione Pinakes3 Analisi modello di business (BOZZA) di Valeriano Sandrucci 08/09/07 Relazione Pinakes3 Analisi modello di business (BOZZA) di Valeriano Sandrucci 08/09/07 1. Introduzione...3 1.2. Application vs Tool... 3 2. Componenti logiche di un modello... 6 3. Ontologie e Semantic

Dettagli

Informatica Documentale

Informatica Documentale Informatica Documentale Ivan Scagnetto (scagnett@dimi.uniud.it) Stanza 3, Nodo Sud Dipartimento di Matematica e Informatica Via delle Scienze, n. 206 33100 Udine Tel. 0432 558451 Ricevimento: giovedì,

Dettagli

Informatica Applicata 3.3 OWL. Antonella Poggi. Anno Accademico 2012-2013 DIPARTIMENTO DI SCIENZE DOCUMENTARIE LINGUISTICO FILOLOGICHE E GEOGRAFICHE

Informatica Applicata 3.3 OWL. Antonella Poggi. Anno Accademico 2012-2013 DIPARTIMENTO DI SCIENZE DOCUMENTARIE LINGUISTICO FILOLOGICHE E GEOGRAFICHE Informatica Applicata 3.3 OWL Antonella Poggi Anno Accademico 2012-2013 DIPARTIMENTO DI SCIENZE DOCUMENTARIE LINGUISTICO FILOLOGICHE E GEOGRAFICHE The Semantic Web Tower Antonella Poggi Pagina 2 Le ontologie

Dettagli

Progettare una basi di dati vuole dire progettare la struttura dei dati e le applicazioni

Progettare una basi di dati vuole dire progettare la struttura dei dati e le applicazioni LA PROGETTAZIONE DI BASI DI DATI Progettare una basi di dati vuole dire progettare la struttura dei dati e le applicazioni La progettazione dei dati è l attività più importante Per progettare i dati al

Dettagli

Creare ontologie ONTOLOGIE, DESCRIPTION LOGIC, PROTÉGÉ STEFANO DE LUCA

Creare ontologie ONTOLOGIE, DESCRIPTION LOGIC, PROTÉGÉ STEFANO DE LUCA Creare ontologie ONTOLOGIE, DESCRIPTION LOGIC, PROTÉGÉ STEFANO DE LUCA Punto di partenza: materia per ragionare Gli agenti intelligenti possono usare tecniche deduttive per raggiungere il goal Per fare

Dettagli

3.1 Introduzione al Web Semantico

3.1 Introduzione al Web Semantico Informatica Applicata 3.1 Introduzione al Web Semantico Antonella Poggi Anno Accademico 2012-2013 DIPARTIMENTO DI SCIENZE DOCUMENTARIE LINGUISTICO FILOLOGICHE E GEOGRAFICHE 3.1 Introduzione al Web Semantico*

Dettagli

Categorie e oggetti. Il Web semantico. Ontologie di dominio. Le motivazioni del web semantico. Web semantico e logiche descrittive

Categorie e oggetti. Il Web semantico. Ontologie di dominio. Le motivazioni del web semantico. Web semantico e logiche descrittive Categorie e oggetti Web semantico e logiche descrittive M. Simi, 2014-2015 Cap 2 del "Description Logic Handbook" Lezioni di U.Straccia Molti dei ragionamenti che si fanno sono sulle categorie piuttosto

Dettagli

Indice INTRODUZIONE -------------------------------------------------------------------------------------------------------------- 3

Indice INTRODUZIONE -------------------------------------------------------------------------------------------------------------- 3 ORGANIZZAZIONE DI CONTENUTI MULTIMEDIALI E WEB SEMANTICO PROF. ANTONIO TUFANO Indice 1 INTRODUZIONE --------------------------------------------------------------------------------------------------------------

Dettagli

Semantic Web. Semantic Web. Il Semantic Web: una semplice estensione. Il Web oggi. Il Semantic Web. Semantic Web

Semantic Web. Semantic Web. Il Semantic Web: una semplice estensione. Il Web oggi. Il Semantic Web. Semantic Web Semantic Web L. Farinetti - Politecnico di Torino Semantic Web Laura Farinetti Dip. Automatica e Informatica Politecnico di Torino farinetti@polito.it 1 z Seconda generazione del Web z conceptual structuring

Dettagli

I metadati per la gestione e conservazione dei documenti elettronici. Fiorella Foscarini Firenze, 17 giugno 2007

I metadati per la gestione e conservazione dei documenti elettronici. Fiorella Foscarini Firenze, 17 giugno 2007 I metadati per la gestione e conservazione dei documenti elettronici Fiorella Foscarini Firenze, 17 giugno 2007 Argomenti Che cosa sono i metadati Criticità relative a definizione, indentificazione e classificazione

Dettagli

Sistemi Informativi. Basi di Dati. Progettazione concettuale. Architettura Progettazione Analisi funzionale

Sistemi Informativi. Basi di Dati. Progettazione concettuale. Architettura Progettazione Analisi funzionale 6LVWHPL,QIRUPDWLYL H DVLGL'DWL Oreste Signore (Oreste.Signore@cnuce.cnr.it) &RQWHQXWR Sistemi Informativi Basi di Dati Architettura Progettazione Analisi funzionale Progettazione concettuale Information

Dettagli

Esempio d ontologia. Capitolo 4 ONTOLOGIE PER LE APPLICAZIONI GEOGRAFICHE. Ontologie geografiche. Interoperabilità attraverso un'ontologia

Esempio d ontologia. Capitolo 4 ONTOLOGIE PER LE APPLICAZIONI GEOGRAFICHE. Ontologie geografiche. Interoperabilità attraverso un'ontologia Esempio d ontologia Capitolo 4 Inondazione Fuoco Tsunami ONTOLOGIE PER LE APPLICAZIONI GEOGRAFICHE Valanghe Temporale Catastrofe naturali Terremoto Volcano Slittamento di terreno Relazione «è uno» Relazione

Dettagli

Programmabilità di rete con l'infrastruttura Cisco basata sulle applicazioni

Programmabilità di rete con l'infrastruttura Cisco basata sulle applicazioni White paper Programmabilità di rete con l'infrastruttura Cisco basata sulle applicazioni Panoramica Questo documento analizza il supporto alla programmabilità nell'infrastruttura ACI (Application Centric

Dettagli

Il World Wide Web. Il Web. La nascita del Web. Le idee di base del Web

Il World Wide Web. Il Web. La nascita del Web. Le idee di base del Web Il World Wide Web Il Web Claudio Fornaro ver. 1.3 1 Il World Wide Web (ragnatela di estensione mondiale) o WWW o Web è un sistema di documenti ipertestuali collegati tra loro attraverso Internet Attraverso

Dettagli

TEORIA sulle BASI DI DATI

TEORIA sulle BASI DI DATI TEORIA sulle BASI DI DATI A cura del Prof. Enea Ferri Cos è un DATA BASE E un insieme di archivi legati tra loro da relazioni. Vengono memorizzati su memorie di massa come un unico insieme, e possono essere

Dettagli

2.1 Introduzione ai linguaggi di marcatura

2.1 Introduzione ai linguaggi di marcatura Fondamenti di Informatica Sistemi di Elaborazione delle Informazioni Informatica Applicata 2.1 Introduzione ai linguaggi di marcatura Antonella Poggi Anno Accademico 2012-2013 DIPARTIMENTO DI SCIENZE DOCUMENTARIE

Dettagli

Considera tutti i requisiti funzionali (use cases) NON deve necessariamente modellare i requisiti non funzionali

Considera tutti i requisiti funzionali (use cases) NON deve necessariamente modellare i requisiti non funzionali Corso di Laurea Specialistica in Ingegneria Informatica Corso di Ingegneria del Software A. A. 2008 - Progettazione OO E. TINELLI Punto di Partenza Il modello di analisi E una rappresentazione minima del

Dettagli

INTRODUZIONE. Data Base Management Systems evoluzione tecniche gestione dati

INTRODUZIONE. Data Base Management Systems evoluzione tecniche gestione dati INTRODUZIONE Accesso ai dati tramite DBMS Livelli di astrazione Modello dei dati: schema / istanza / metadati Alcuni modelli dei dati Linguaggi per DBMS Architettura di base di un DBMS cesarini - BDSI

Dettagli

Esercitazione di Basi di Dati

Esercitazione di Basi di Dati Esercitazione di Basi di Dati Corso di Fondamenti di Informatica 6 Maggio 2004 Come costruire una ontologia Marco Pennacchiotti pennacchiotti@info.uniroma2.it Tel. 0672597334 Ing.dell Informazione, stanza

Dettagli

Organizzazione degli archivi

Organizzazione degli archivi COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i

Dettagli

Ingegneria del Software Progettazione

Ingegneria del Software Progettazione Ingegneria del Software Progettazione Obiettivi. Approfondire la fase di progettazione dettagliata che precede la fase di realizzazione e codifica. Definire il concetto di qualità del software. Presentare

Dettagli

Le ontologie nell integrazione dei dati

Le ontologie nell integrazione dei dati Le ontologie nell integrazione dei dati Prof. Letizia Tanca 1 Ontologie Definizione formale e condivisa di un vocabolario di termini e delle relazioni tra essi Relazioni possibili: sinonimia omonimia iponimia

Dettagli

Introduzione alla codifica XML per i testi umanistici

Introduzione alla codifica XML per i testi umanistici Introduzione alla codifica XML per i testi umanistici Daniele Silvi, Domenico Fiormonte, Fabio Ciotti fiormont@uniroma3.it - silvi@lettere.uniroma2.it - ciotti@lettere.uniroma2.it 1 La digitalizzazione

Dettagli

Lezione 4. Modello EER

Lezione 4. Modello EER Lezione 4 Modello EER 1 Concetti del modello EER Include tutti i concetti di modellazione del modello ER Concetti addizionali: sottoclassi/superclassi, specializzazione, categorie, propagazione (inheritance)

Dettagli

13-03-2013. Introduzione al Semantic Web Linguaggi per la rappresentazione di ontologie. L idea del Semantic Web.

13-03-2013. Introduzione al Semantic Web Linguaggi per la rappresentazione di ontologie. L idea del Semantic Web. Corso di Ontologie e Semantic Web Linguaggi per la rappresentazione di ontologie Prof. Alfio Ferrara, Prof. Stefano Montanelli Definizioni di Semantic Web Rilievi critici Un esempio Tecnologie e linguaggi

Dettagli

Creare un ontologia per una base di conoscenza

Creare un ontologia per una base di conoscenza Creare un ontologia per una base di conoscenza 1 S T E F A N O D E L U C A Creazione di un ontologia 2 La creazione di un ontologia è operazione complessa; è spesso il frutto di un elaborazione tra più

Dettagli

Progettaz. e sviluppo Data Base

Progettaz. e sviluppo Data Base Progettaz. e sviluppo Data Base! Introduzione ai Database! Tipologie di DB (gerarchici, reticolari, relazionali, oodb) Introduzione ai database Cos è un Database Cos e un Data Base Management System (DBMS)

Dettagli

Alessandra Raffaetà. Basi di Dati

Alessandra Raffaetà. Basi di Dati Lezione 2 S.I.T. PER LA VALUTAZIONE E GESTIONE DEL TERRITORIO Corso di Laurea Magistrale in Scienze Ambientali Alessandra Raffaetà Dipartimento di Informatica Università Ca Foscari Venezia Basi di Dati

Dettagli

Ontologie OWL: Teoria e Pratica

Ontologie OWL: Teoria e Pratica Le ontologie sono uno strumento sempre più diffuso tra gli sviluppatori Web per i vantaggi che offrono nella condivisione delle informazioni. In questo mini-corso di tre lezioni cercheremo, attraverso

Dettagli

XML metadati Semantic Web. Dall interoperabilità sintattica a quella semantica Fabio Ciotti

XML metadati Semantic Web. Dall interoperabilità sintattica a quella semantica Fabio Ciotti Dall interoperabilità sintattica a quella semantica Fabio Ciotti Una delle conseguenze più rilevanti della diffusione del Web è il passaggio definitivo dai sistemi informativi monade ai sistemi aperti

Dettagli

La parola Ontologia non ha un unico significato:

La parola Ontologia non ha un unico significato: PROGRAMMING Ontologie OWL: Prima puntata Teoria e Pratica Le ontologie sono uno strumento sempre più diffuso tra gli sviluppatori Web per i vantaggi che offrono nella condivisione delle informazioni. In

Dettagli

L analisi ontologica al servizio della modellazione concettuale: le ontologie fondazionali

L analisi ontologica al servizio della modellazione concettuale: le ontologie fondazionali L analisi ontologica al servizio della modellazione concettuale: le ontologie fondazionali Roberta Ferrario Laboratorio di Ontologia Applicata (LOA) Istituto di Scienze e Tecnologie della Cognizione (ISTC-CNR)

Dettagli

Indice Introduzione --------------------------------------------------------------------------------------------------------------------- 3

Indice Introduzione --------------------------------------------------------------------------------------------------------------------- 3 INSEGNAMENTO DI INFORMATICA II LEZIONE II LE LIBRERIE DIGITALI PROF. GIUSEPPE DE SIMONE Indice 1 Introduzione ---------------------------------------------------------------------------------------------------------------------

Dettagli

IL WEB SEMANTICO. INTERNET PENSANTE la piu avanzata ipotesi di intelligenza collettiva

IL WEB SEMANTICO. INTERNET PENSANTE la piu avanzata ipotesi di intelligenza collettiva IL WEB SEMANTICO INTERNET PENSANTE la piu avanzata ipotesi di intelligenza collettiva Termine web semantico: è associato all idea di un web nel quale agiscano agenti intelligenti in grado di comprendere

Dettagli

Definizione Un modello astratto è la rappresentazione formale di idee e conoscenze relative a un fenomeno.

Definizione Un modello astratto è la rappresentazione formale di idee e conoscenze relative a un fenomeno. MODELLI INFORMATICI 1 Definizione Un modello astratto è la rappresentazione formale di idee e conoscenze relative a un fenomeno. Aspetti di un modello: il modello è la rappresentazione di certi fatti;

Dettagli

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Fondamenti di Informatica

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Fondamenti di Informatica Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Fondamenti di Informatica Linguaggi di Programmazione Michele Tomaiuolo Linguaggi macchina I

Dettagli

Principi dell ingegneria del software Relazioni fra

Principi dell ingegneria del software Relazioni fra Sommario Principi dell ingegneria del software Leggere Cap. 3 Ghezzi et al. Principi dell ingegneria del software Relazioni fra Principi Metodi e tecniche Metodologie Strumenti Descrizione dei principi

Dettagli

Ingegneria del Software UML - Unified Modeling Language

Ingegneria del Software UML - Unified Modeling Language Ingegneria del Software UML - Unified Modeling Language Obiettivi. Presentare un approccio visuale alla progettazione. Illustrare i vantaggi dell utilizzo di diagrammi nella fase di progettazione. Rispondere

Dettagli

Basi di Dati. Introduzione ai sistemi di basi di dati. K.Donno - Introduzione ai sistemi di basi di dati

Basi di Dati. Introduzione ai sistemi di basi di dati. K.Donno - Introduzione ai sistemi di basi di dati Basi di Dati Introduzione ai sistemi di basi di dati Introduzione ai sistemi di basi di dati Gestione dei Dati Una prospettiva storica File system verso DBSM Vantaggi di un DBMS Modelli dei dati Utenti

Dettagli

Strumenti di modellazione. Gabriella Trucco

Strumenti di modellazione. Gabriella Trucco Strumenti di modellazione Gabriella Trucco Linguaggio di modellazione Linguaggio formale che può essere utilizzato per descrivere (modellare) un sistema Il concetto trova applicazione soprattutto nell

Dettagli

Ontologie OWL: Teoria e Pratica

Ontologie OWL: Teoria e Pratica Prosegue la trattazione delle ontologie e delle loro applicazioni informatiche. Vedremo varie tipologie di proprietà supportate da OWL e ulteriori metodi di definizione delle classi, e molto altro ancora.

Dettagli

Introduzione ai sistemi di basi di dati

Introduzione ai sistemi di basi di dati Basi di Dati Introduzione ai sistemi di basi di dati Alessandro.bardine@gmail.com alessandro.bardine@iet.unipi.it Introduzione ai sistemi di basi di dati Gestione dei Dati Una prospettiva storica File

Dettagli

Convegno delle Stelline 20ᵃ edizione

Convegno delle Stelline 20ᵃ edizione Convegno delle Stelline 20ᵃ edizione RDA e Linked data: un binomio naturale. Linee guida e tecnologie per gli ILS di nuova generazione Tiziana Possemato @Cult I dati delle biblioteche nel web semantico

Dettagli

Data Base. Prof. Filippo TROTTA

Data Base. Prof. Filippo TROTTA Data Base Definizione di DataBase Un Database può essere definito come un insieme di informazioni strettamente correlate, memorizzate su un supporto di memoria di massa, costituenti un tutt uno, che possono

Dettagli

Analisi Modelli per la specifica dei requisiti

Analisi Modelli per la specifica dei requisiti Modelli per la specifica dei requisiti Modelli semantici dei dati Entità-Relazioni (E-R) Modelli orientati all elaborazione dati Diagrammi di Flusso dei Dati (Data-Flow Diagrams, DFD) Modelli orientati

Dettagli

Introduzione alla Business Intelligence. E-mail: infobusiness@zucchetti.it

Introduzione alla Business Intelligence. E-mail: infobusiness@zucchetti.it Introduzione alla Business Intelligence E-mail: infobusiness@zucchetti.it Introduzione alla Business Intelligence Introduzione Definizione di Business Intelligence: insieme di processi per raccogliere

Dettagli

Tools e ambienti per lo sviluppo di ontologie per il web semantico

Tools e ambienti per lo sviluppo di ontologie per il web semantico Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica tesi di laurea Tools e ambienti per lo sviluppo di ontologie per il web semantico Anno Accademico [2003/2004] relatore Ch.mo prof. Antonio

Dettagli

BASI DI DATI - : I modelli di database

BASI DI DATI - : I modelli di database BASI DI DATI - : I modelli di database DAL 1960 ci si e' orientati verso 3 direzioni: 1 MODELLO GERARCHICO Se i dati si presentano naturalmente in una struttura ad albero (ES. File System) Limiti: rigidità

Dettagli

Le Basi di dati: generalità. Unità di Apprendimento A1 1

Le Basi di dati: generalità. Unità di Apprendimento A1 1 Le Basi di dati: generalità Unità di Apprendimento A1 1 1 Cosa è una base di dati In ogni modello di organizzazione della vita dell uomo vengono trattate informazioni Una volta individuate e raccolte devono

Dettagli

Linguaggi e Paradigmi di Programmazione

Linguaggi e Paradigmi di Programmazione Linguaggi e Paradigmi di Programmazione Cos è un linguaggio Definizione 1 Un linguaggio è un insieme di parole e di metodi di combinazione delle parole usati e compresi da una comunità di persone. È una

Dettagli

Laboratorio Matematico Informatico 2

Laboratorio Matematico Informatico 2 Laboratorio Matematico Informatico 2 (Matematica specialistica) A.A. 2006/07 Pierluigi Amodio Dipartimento di Matematica Università di Bari Laboratorio Matematico Informatico 2 p. 1/1 Informazioni Orario

Dettagli

Esempio d ontologia. Capitolo 4 ONTOLOGIE PER LE APPLICAZIONI GEOGRAFICHE. Ontologie geografiche. Interoperabilità attraverso un'ontologia

Esempio d ontologia. Capitolo 4 ONTOLOGIE PER LE APPLICAZIONI GEOGRAFICHE. Ontologie geografiche. Interoperabilità attraverso un'ontologia Esempio d ontologia Capitolo 4 Inondazione Fuoco Tsunami ONTOLOGIE PER LE APPLICAZIONI GEOGRAFICHE Valanghe Temporale Catastrofe naturali Terremoto Volcano Slittamento di terreno Relazione «è uno» Relazione

Dettagli

Sistemi Informativi e WWW

Sistemi Informativi e WWW Premesse Sistemi Informativi e WWW WWW: introduce un nuovo paradigma di diffusione (per i fornitori) e acquisizione (per gli utilizzatori) delle informazioni, con facilità d uso, flessibilità ed economicità

Dettagli

4 Modello dati, Ontologie e basi di conoscenza. 4.1 Uso del programma Protégé 3.0 -

4 Modello dati, Ontologie e basi di conoscenza. 4.1 Uso del programma Protégé 3.0 - 4 Modello dati, Ontologie e basi di conoscenza 4.1 Uso del programma Protégé 3.0 - Protégé è un programma in JAVA sviluppato dalla Università di Stanford per creare Ontologie ( Ontologies ). Il programma

Dettagli

Rappresentazione della Conoscenza. Lezione 10. Rappresentazione della conoscenza, D. Nardi, 2004, Lezione 10 0

Rappresentazione della Conoscenza. Lezione 10. Rappresentazione della conoscenza, D. Nardi, 2004, Lezione 10 0 Rappresentazione della Conoscenza Lezione 10 Rappresentazione della conoscenza, D. Nardi, 2004, Lezione 10 0 Sistemi ed applicazioni Sistemi di rappresentazione della conoscenza basati su logiche descrittive.

Dettagli

Modellazione di sistema

Modellazione di sistema Corso di Laurea Specialistica in Ingegneria Informatica Corso di Ingegneria del Software A. A. 2008 - Modellazione di sistema E. TINELLI Contenuti Approcci di analisi Linguaggi di specifica Modelli di

Dettagli

LABORATORIO. 2 Lezioni su Basi di Dati Contatti:

LABORATORIO. 2 Lezioni su Basi di Dati Contatti: PRINCIPI DI INFORMATICA CORSO DI LAUREA IN SCIENZE BIOLOGICHE Gennaro Cordasco e Rosario De Chiara {cordasco,dechiara}@dia.unisa.it Dipartimento di Informatica ed Applicazioni R.M. Capocelli Laboratorio

Dettagli

Nella prima puntata di questo mini-corso

Nella prima puntata di questo mini-corso PROGRAMMING Ontologie OWL: Teoria e Pratica Seconda puntata Prosegue la trattazione delle ontologie e delle loro applicazioni informatiche. Vedremo varie tipologie di proprietà supportate da OWL e ulteriori

Dettagli

Progettazione concettuale usando il modello Entità-Relazione (ER) e Progettazione Logica

Progettazione concettuale usando il modello Entità-Relazione (ER) e Progettazione Logica Progettazione concettuale usando il modello Entità-Relazione (ER) e Progettazione Logica 1 Introduzione alla progettazione delle basi di dati v Progettazione concettuale (in questa fase si usa il modello

Dettagli

BASI DI DATI. Queste slides sono un adattamento di quelle di Luca Anselma e Gian Luca Pozzato, cui va il mio ringraziamento

BASI DI DATI. Queste slides sono un adattamento di quelle di Luca Anselma e Gian Luca Pozzato, cui va il mio ringraziamento BASI DI DATI Queste slides sono un adattamento di quelle di Luca Anselma e Gian Luca Pozzato, cui va il mio ringraziamento BASI DI DATI (DATABASE, DB) Una delle applicazioni informatiche più utilizzate,

Dettagli

Open data, servizi digitali e trasferimento di conoscenza

Open data, servizi digitali e trasferimento di conoscenza Open data, servizi digitali e trasferimento di conoscenza Tiziana Catarci Maurizio Lenzerini Dipartimento Dipartimento di di Ingegneria Ingegneria Informatica Informatica Automatica e Gestionale "Antonio

Dettagli

SWIM v2 Design Document

SWIM v2 Design Document PROGETTO DI INGEGNERIA DEL SOFTWARE 2 SWIM v2 DD Design Document Matteo Danelli Daniel Cantoni 22 Dicembre 2012 1 Indice Progettazione concettuale Modello ER Entità e relazioni nel dettaglio User Feedback

Dettagli

XML: La nascita del linguaggio

XML: La nascita del linguaggio XML: introduzione alla codifica dei testi Con la codifica dei testi si intende la rappresentazione dei testi stessi su un supporto digitale in un formato utilizzabile dall'elaboratore (Machine Readable

Dettagli

LABORATORIO di INFORMATICA

LABORATORIO di INFORMATICA Università degli Studi di Cagliari Corso di Laurea Magistrale in Ingegneria per l Ambiente ed il Territorio LABORATORIO di INFORMATICA A.A. 2010/2011 Prof. Giorgio Giacinto INTRODUZIONE AI SISTEMI DI BASI

Dettagli

Spettabile. Termine attività PREMESSA

Spettabile. Termine attività PREMESSA Spettabile Ogetto: Regione Lazio - Bando per l educazione permanente degli adulti. Misura 1.a di Sistema. Delibera Giunta Regionale n. 30 dell 11/01/2001 - (Pubblicato nel BUR Lazio n.5 del 20 febbraio

Dettagli

Il paradigma OO e le relative metodologie di progettazione. Programmazione orientata agli oggetti

Il paradigma OO e le relative metodologie di progettazione. Programmazione orientata agli oggetti Alessio Bechini - Corso di - Il paradigma OO e le relative metodologie di progettazione Metodologie OO Programmazione orientata agli oggetti La programmazione ad oggetti (OOP) è un paradigma di programmazione

Dettagli

Sistemi Ipermediali I modelli dei sistemi ipermediali

Sistemi Ipermediali I modelli dei sistemi ipermediali Documenti e ipermedialità Sistemi Ipermediali I modelli dei sistemi ipermediali Augusto Celentano Università Ca Foscari Venezia Documento ipertestuale insieme di informazioni testuali e grafiche, esplorabili

Dettagli

TRADUZIONE. Tiziana Possemato. Il progetto ITACH@

TRADUZIONE. Tiziana Possemato. Il progetto ITACH@ OpLiDaF Open Linked Data Framework: una piattaforma per la creazione e la pubblicazione di linked data Tiziana Possemato Il progetto ITACH@ Il progetto ITACH@, Innovative Technologies And Cultural Heritage

Dettagli

Paradigma object-oriented

Paradigma object-oriented Paradigma object-oriented Dati & Comportamento Implementazione trasparente dei servizi Facile mantenimento Omogeneità nella gerarchia dati-funzioni Procedural approach OO approach Data hierarchy Replaced

Dettagli

Le nuove tecnologie dell informazione: verso il Social Semantic Web. Roberto Boselli Alessandria 04-05-2007

Le nuove tecnologie dell informazione: verso il Social Semantic Web. Roberto Boselli Alessandria 04-05-2007 Le nuove tecnologie dell informazione: verso il Social Semantic Web Roberto Boselli Alessandria 04-05-2007 Outline Web 2.0 e Semantic Web Social Software Semantica e Ontologie SEDIMENTO 2 Obiettivi Aggiungere

Dettagli

HTML e Linguaggi. Politecnico di Milano Facoltà del Design Bovisa. Prof. Gianpaolo Cugola Dipartimento di Elettronica e Informazione

HTML e Linguaggi. Politecnico di Milano Facoltà del Design Bovisa. Prof. Gianpaolo Cugola Dipartimento di Elettronica e Informazione HTML e Linguaggi Politecnico di Facoltà del Design Bovisa Prof. Gianpaolo Cugola Dipartimento di Elettronica e Informazione cugola@elet.polimi.it http://home.dei.polimi.it/cugola Indice Il linguaggio del

Dettagli

SISTEMI DOCUMENTALI DISTRIBUITI PER LA CREAZIONE DI COMUNITÀ COOPERANTI

SISTEMI DOCUMENTALI DISTRIBUITI PER LA CREAZIONE DI COMUNITÀ COOPERANTI SISTEMI DOCUMENTALI DISTRIBUITI PER LA CREAZIONE DI COMUNITÀ COOPERANTI Il caso di studio della piattaforma Octapy CMS e i circuiti informativi della cultura delle regioni Campania e Puglia 3 C.Noviello

Dettagli

Seminario di Sistemi Distribuiti: RPC su SOAP

Seminario di Sistemi Distribuiti: RPC su SOAP Corso di Sistemi Distribuiti Prof. S. Balsamo Seminario di Sistemi Distribuiti: RPC su SOAP [ 777775] 1 INTRODUZIONE 3 2 RPC 3 3 SOAP (SIMPLE OBJECT ACCESS PROTOCOL) 3 4 UTILIZZO DI SOAP COME PROTOCOLLO

Dettagli

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico Introduzione alle basi di dati Introduzione alle basi di dati Gestione delle informazioni Base di dati Modello dei dati Indipendenza dei dati Accesso ai dati Vantaggi e svantaggi dei DBMS Gestione delle

Dettagli

Tecniche Multimediali

Tecniche Multimediali Chiedersi se un computer possa pensare non è più interessante del chiedersi se un sottomarino possa nuotare Edsger Dijkstra (The threats to computing science) Tecniche Multimediali Corso di Laurea in «Informatica»

Dettagli

Il modello Entity-Relationship per il progetto delle basi di dati

Il modello Entity-Relationship per il progetto delle basi di dati 1 Il modello Entity-Relationship per il progetto delle basi di dati Massimo Paolucci (paolucci@dist.unige.it) DIST Università di Genova Le metodologie di progettazione delle Basi di Dati 2 Una metodologia

Dettagli

Architettura SW Definizione e Notazioni

Architettura SW Definizione e Notazioni Corso di Laurea Specialistica in Ingegneria Informatica Corso di Ingegneria del Software A. A. 2008 - Stili Architetturali E. TINELLI Architettura SW Definizione e Notazioni Definizione ANSI/IEEE Std Std1471-2000

Dettagli

Lezione 1. Introduzione e Modellazione Concettuale

Lezione 1. Introduzione e Modellazione Concettuale Lezione 1 Introduzione e Modellazione Concettuale 1 Tipi di Database ed Applicazioni Database Numerici e Testuali Database Multimediali Geographic Information Systems (GIS) Data Warehouses Real-time and

Dettagli

Database. Organizzazione di archivi mediante basi di dati. ing. Alfredo Cozzi 1

Database. Organizzazione di archivi mediante basi di dati. ing. Alfredo Cozzi 1 Database Organizzazione di archivi mediante basi di dati ing. Alfredo Cozzi 1 Il database è una collezione di dati logicamente correlati e condivisi, che ha lo scopo di soddisfare i fabbisogni informativi

Dettagli

Ciclo di Vita Evolutivo

Ciclo di Vita Evolutivo Ciclo di Vita Evolutivo Prof.ssa Enrica Gentile a.a. 2011-2012 Modello del ciclo di vita Stabiliti gli obiettivi ed i requisiti Si procede: All analisi del sistema nella sua interezza Alla progettazione

Dettagli

Progetto interregionale ICAR Interoperabilità e Cooperazione Applicativa tra le Regioni.

Progetto interregionale ICAR Interoperabilità e Cooperazione Applicativa tra le Regioni. <Task AP3> Progetto interregionale ICAR Interoperabilità e Cooperazione Applicativa tra le Regioni AP3-Documento Descrittivo degli Accordi di Servizio Versione AP3-specificaADSv1.2.1.doc Pag. 1

Dettagli

Sistemi Informativi e Basi di Dati

Sistemi Informativi e Basi di Dati Sistemi Informativi e Basi di Dati Laurea Specialistica in Tecnologie di Analisi degli Impatti Ecotossicologici Docente: Francesco Geri Dipartimento di Scienze Ambientali G. Sarfatti Via P.A. Mattioli

Dettagli

Un portale semantico per i Beni Culturali

Un portale semantico per i Beni Culturali Un portale semantico per i Beni Culturali A. Ciapetti, D. Berardi, A. Donnini, M. Lorenzini, M.E. Masci, D. Merlitti, S. Norcia, F. Piro (Etcware) M. De Vizia Guerriero, O. Signore (CNR W3C Italia) EVA

Dettagli

DATA MANAGEMENT (descrizione)

DATA MANAGEMENT (descrizione) DATA MANAGEMENT (descrizione) (VER 0.1 / 0807) Autori: Andrea Guerrieri Revisioni: Data Autore Note 24/08/2007 Andrea Guerrieri Prima stesura 1 1. INTRODUZIONE Il sistema fornisce all utente e al progettista

Dettagli

Progettazione concettuale

Progettazione concettuale Progettazione concettuale Strategie top-down A partire da uno schema che descrive le specifiche mediante pochi concetti molto astratti, si produce uno schema concettuale mediante raffinamenti successivi

Dettagli

ANNO SCOLASTICO 2014/2015. LICEO SCIENTIFICO STATALE A. VOLTA Via Juvarra, 14 - Torino

ANNO SCOLASTICO 2014/2015. LICEO SCIENTIFICO STATALE A. VOLTA Via Juvarra, 14 - Torino ANNO SCOLASTICO 2014/2015 LICEO SCIENTIFICO STATALE A. VOLTA Via Juvarra, 14 - Torino Obiettivi minimi Informatica Prime Conoscere il sistema di numerazione binaria e la sua importanza nella codifica delle

Dettagli

Prima Parte. Università degli Studi di Napoli -- Classi, proprietà, individui e restrizioni. Gennaro Gambardella

Prima Parte. Università degli Studi di Napoli -- Classi, proprietà, individui e restrizioni. Gennaro Gambardella Università degli Studi di Napoli -- CDL in Informatica Basi di dati Multimediali Prima Parte Classi, proprietà, individui e restrizioni Gennaro Gambardella Tratto da Ontologie OWL: Teoria e Pratica di

Dettagli

Corso di Laurea in Ingegneria Informatica Algoritmi e basi di dati Modulo Basi di dati a.a. 2010-2011

Corso di Laurea in Ingegneria Informatica Algoritmi e basi di dati Modulo Basi di dati a.a. 2010-2011 Corso di Laurea in Ingegneria Informatica Algoritmi e basi di dati Modulo Basi di dati a.a. 2010-2011 2011 Docente: Gigliola Vaglini Docente laboratorio: Alessandro Lori 1 Obiettivi del corso Imparare

Dettagli

EXPLOit Content Management Data Base per documenti SGML/XML

EXPLOit Content Management Data Base per documenti SGML/XML EXPLOit Content Management Data Base per documenti SGML/XML Introduzione L applicazione EXPLOit gestisce i contenuti dei documenti strutturati in SGML o XML, utilizzando il prodotto Adobe FrameMaker per

Dettagli

4. Requisiti del Software

4. Requisiti del Software 4. Requisiti del Software Cosa? Andrea Polini Ingegneria del Software Corso di Laurea in Informatica (Ingegneria del Software) 4. Requisiti del Software 1 / 35 Sommario 1 Generalità 2 Categorizzazione

Dettagli

I punti preliminari da trattare

I punti preliminari da trattare Alma Mater Studiorum Università di Bologna Facoltà di Economia - Bologna CLEA, CLED, CLEF,CLEM Prof. Jacopo Di Cocco Idoneità informatica e Sistemi informatici Parte prima Il word wide web e l informazione

Dettagli

WHITE PAPER CRM Novembre 2003

WHITE PAPER CRM Novembre 2003 WHIT E PAPER Novembre 2003 CUSTOMER RELATIONSHIP MANAGEMENT Parlare di CUSTOMER RELATIONSHIP MANAGEMENT significa parlare di come l Azienda gestisce il suo business. Se vogliamo dare una definizione di

Dettagli

PIANIFICAZIONE E REALIZZAZIONE DI UN SISTEMA INFORMATIVO 147 6/001.0

PIANIFICAZIONE E REALIZZAZIONE DI UN SISTEMA INFORMATIVO 147 6/001.0 PIANIFICAZIONE E REALIZZAZIONE DI UN SISTEMA INFORMATIVO 147 6/001.0 PIANIFICAZIONE E REALIZZAZIONE DI UN SISTEMA INFORMATIVO ELEMENTI FONDAMENTALI PER LO SVILUPPO DI SISTEMI INFORMATIVI ELABORAZIONE DI

Dettagli