Ontologie integrate da lessici per indicizzazione e ricerca nel Semantic Web

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Ontologie integrate da lessici per indicizzazione e ricerca nel Semantic Web"

Transcript

1 POLITECNICO DI TORINO Facoltà di Ingegneria dell Informazione Corso di Laurea in Ingegneria Informatica Tesi di Laurea Ontologie integrate da lessici per indicizzazione e ricerca nel Semantic Web Candidato: Federico PESCARMONA Relatori: Prof. Fulvio CORNO Ing. Laura FARINETTI Ing. Giovanni SQUILLERO Luglio 2003

2 Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning. Rich Cook Tra anima e corpo c'è sempre conflitto. L'intensità di questo conflitto misura la nobiltà di un uomo. Anonimo A Francesco, più di un fratello. A Mamma e a Papà.

3

4 1. Introduzione Scopo del progetto Presentazione dei contenuti della tesi Semantic Web Introduzione Le premesse del Semantic Web URI: un indirizzo per ogni risorsa Il padre delle odierne ontologie: KL-ONE La gestione della conoscenza nel Web Le ontologie I linguaggi del Semantic Web XML RDF Oltre lo schema La realizzazione del Semantic Web La creazione di ontologie L annotazione delle pagine La raccolta delle informazioni Agenti e servizi La ricerca e l analisi delle Informazioni Information Retrieval Criteri di efficacia Modelli concettuali Le query Le parole-chiave Pesare le parole-chiave: TF ITF e TF IDF Indicizzazione e ricerca semantica Il progetto Introduzione Sistema proposto Modularità e scalabilità L ontologia Le annotazioni Semantic Mapper L indicizzazione semantica Il motore di ricerca semantica S.E.R. Substructure Extractor and Retriever Contributo individuale... 55

5 5. I Toolkit e le Librerie utilizzate Jena La API RDF Parser ARP Il linguaggio di query RDQL La API DAML Database relazionali Jena XML-RPC Chiamata XML-RPC Tipi di dato Formato Apache XML-RPC Snowball Tecnica di funzionamento L algoritmo di stemming per la lingua italiana Un esempio di stemming Implementazione Classi e metodi principali Ontology Syn SemanticMapper Annotations S.E.R. Substructure Extractor and Retriever Indexer SearchEngine Assegnazione dei pesi Possibili sviluppi Implementazione delle chiamate remote Risultati sperimentali Integrazione col modulo S.E.R Test di indicizzazione Test di ricerca Conclusioni Possibili sviluppi Bibliografia e Risorse Appendice A Appendice B

6 1. Introduzione Il Web negli ultimi anni ha subito un incredibile allargamento tanto della base di utenti, quanto delle pagine e dei documenti in esso presenti. Internet è passato, con grandissima rapidità, da strumento per patiti ed esperti informatici o mezzo di comunicazione per le Università, alla vastissima fonte di informazioni che è oggi. Questa esplosione ha portato a un grosso scompenso tra ciò che è presente ed accessibile tramite i motori di ricerca (ossia ciò che è stato raggiunto dagli spider ed è dunque entrato a far parte dei documenti indicizzati, e che di conseguenza non è l intera collezione di documenti presente su Internet) e ciò che è facilmente raggiungibile da un utente di media esperienza tramite uno dei suddetti motori di ricerca. In effetti il problema non è tanto l esistenza dell informazione sulla Rete, ma la possibilità di trovare tale informazione tramite un motore di ricerca. Le espansioni citate in apertura, di utenza e di risorse, hanno provocato un acuirsi di tale problema. Il motore di ricerca più utilizzato, e probabilmente avanzato dal punto di vista del reperimento di nuove risorse (crawling), Google, conta oggi quasi quattro miliardi e mezzo di pagine indicizzate, entro cui è lecito supporre si possa trovare praticamente qualunque informazione conoscibile (anche se non tutti i documenti di Internet sono indicizzati e indicizzabili). Il problema è come trovare tali risorse: tipicamente inserendo delle parole che si ritengono significative all interno del motore di ricerca, si ottiene una quantità di risultati tale da rendere spesso difficile il reperimento dell informazione 1

7 richiesta. Nella maggior parte dei casi capita di navigare all interno dei risultati senza ottenere quanto si cercava. Anche l espansione della base di utenti ha aumentato questo problema: non c è dubbio che con l esperienza si impari quali siano le parole-chiave veramente significative per riuscire ad ottenere in tempi accettabili risultati soddisfacenti, ma tale esperienza ovviamente nei nuovi utenti non c è. Da questi presupposti sorge la necessità di un motore di indicizzazione e ricerca che possa fare uso dei nuovi sviluppi del Semantic Web, in grado di analizzare ed indicizzare i documenti non in base alle loro parole-chiave, ma in base agli effettivi argomenti che trattano Scopo del progetto Lo scopo del progetto è la realizzazione di un sistema basato su un architettura aperta capace di superare gli ostacoli menzionati precedentemente. Affinché un sistema di questo tipo possa funzionare è necessaria un ontologia di concetti che rappresenti il dominio di conoscenza in esame. Nel campo di studi del Semantic Web, con ontologia si intende una descrizione formale di concetti (detti anche classi) in un determinato dominio di conoscenza, aventi ciascuno di essi delle proprietà e soprattutto delle relazioni tra loro, le più semplici delle quali sono la relazione di sottoclasse e superclasse che permettono di passare dal generale al particolare. Avendo come risorsa l ontologia, e a partire da una URI che punti a un documento in formato HTML, XHTML, o XML che abbia come argomento un concetto nell ambito del dominio di conoscenza in esame, il sistema deve essere capace di 2

8 determinare quali siano gli argomenti trattati e assegni ad essi dei pesi relativi. Inoltre deve permettere all utente una ricerca all interno della collezione dei documenti indicizzati, riportando nei risultati, opportunamente ordinati, sia i documenti direttamente relativi all argomento richiesto dall utente, sia quelli relativi alle classi dell ontologia in relazione con esso. Inoltre, deve essere possibile indicizzare e ricercare singoli paragrafi di più lunghi documenti Presentazione dei contenuti della tesi Il progetto sarà presentato nel dettaglio nel capitolo 4, e la sua implementazione in Java nel capitolo 6, dopo una breve descrizione dei toolkit e delle librerie utilizzate (capitolo 5). Il prossimo capitolo verterà sul Semantic Web, e dunque sulle Ontologie, le Annotazioni, e così via, e sui linguaggi adottabili per rappresentare tali basi di conoscenza. Il capitolo 3 analizzerà le problematiche e gli sviluppi dell Information Retrieval, e da lì verrà introdotto il progetto vero e proprio. I risultati sperimentali troveranno spazio nel settimo capitolo. Il capitolo 8 sarà invece sede delle conclusioni e di alcune riflessioni su possibili sviluppi futuri e migliorie auspicabili del sistema. Sul CD-ROM allegato sono invece consultabili il codice sorgente e la documentazione Java dell implementazione realizzata. 3

9 2. Semantic Web "The Semantic Web is an extension of the current web in which information is given well-defined meaning, better enabling computers and people to work in cooperation." Tim Berners-Lee Così Tim Berners-Lee (colui cha ha inventato il World Wide Web) definisce il Semantic Web, ovvero "...un estensione del web attuale in cui le informazioni sono strutturate con un senso compiuto, migliorando il lavoro tra le persone e i computer". Nella pratica il web semantico è una sezione di lavoro del W3C che si occupa di produrre documenti, soluzioni ed esperienze per consentire al web prossimo futuro di acquisire un senso più compiuto, contribuendo a fornire alle persone uno strumento più completo, efficace, utile Introduzione La maggior parte dei contenuti del Web sono oggi espressamente rappresentati affinché possano essere letti da utenti umani e non sono progettati per essere elaborati da agenti software. Un browser può, secondo ben precise istruzioni, disporre e visualizzare le informazioni in una certa maniera, ma non ha modo di riconoscerle o attribuire loro un particolare significato per elaborarle. Il Semantic Web (o Web Semantico ) nasce proprio in quest ambiente e permette di introdurre una struttura semantica nei contenuti del Web. Non è separato dal Web tradizionale, ma, introducendo il significato dei dati, ne è un estensione, che aggiunge una nuova funzionalità alle macchine, che diventano in grado di capire ed elaborare i dati che fino ad ora semplicemente visualizzavano. 4

10 Dal dizionario della lingua italiana, la Semantica [semàn-ti-ca] è un ramo della linguistica e, più in generale, della teoria dei linguaggi (anche artificiali e simbolici) che studia il significato dei simboli e dei loro raggruppamenti; nel caso delle lingue, studia il significato delle parole, delle frasi, dei singoli enunciati. In logica matematica con Semantica si intende quella disciplina che, fissando l'insieme delle regole che presiedono all'interpretazione di un linguaggio formale, studia le relazioni fra le formule del linguaggio e le entità extralinguistiche nei cui termini vengono interpretate. In quanto settore della semiotica, studia la relazione tra i segni e ciò a cui essi si riferiscono, distinguendosi dunque dalla sintattica e dalla pragmatica. Quindi, se fino ad oggi il Web è stato un mezzo di trasmissione di documenti per le persone, in questo modo diventa una fonte di dati e informazioni che possono essere elaborati automaticamente. Per realizzare tutto questo, un agente software deve poter accedere ad un insieme strutturato di informazioni e ad un insieme di regole d inferenza, che gli permettano di fare ragionamenti automatizzati: questo comporta uno stretto legame tra le problematiche del Semantic Web e quelle dell intelligenza artificiale, in particolare ciò che concerne i sistemi di rappresentazione della conoscenza. Tali sistemi dispongono di un insieme di regole d inferenza, caratteristiche nell ambito di un dominio, che limitano le interrogazioni cui possono rispondere per garantire delle risposte sicure, o almeno attendibili. Nel Semantic Web, invece, si vuole ottenere maggiore flessibilità, eventualmente a scapito della completezza delle risposte che si possono ricavare, esattamente come nel Web tradizionale la mancanza di struttura e di controllo centralizzato è il prezzo da pagare per avere ampia disponibilità di informazioni. 5

11 Aggiungere la semantica ai contenuti del Web richiede la creazione di un linguaggio che permetta di esprimere dati e regole per i ragionamenti: tale linguaggio deve permettere che le regole proprie di un sistema di rappresentazione della conoscenza possano essere utilizzate sul Web. Nel linguaggio naturale, molto spesso a un singolo termine sono associati più concetti, o più sfumature di essi, o anche solo più punti di vista e accezioni: per gli esseri umani è chiaro che non si può analizzare una situazione privandola del contesto che le sta alle spalle. Allo stesso modo, è necessario per un programma informatico conoscere il contesto a cui appartengono i dati che esso legge, in modo da poter poi elaborare le informazioni in maniera appropriata. Perché questo possa avvenire, si devono creare delle ontologie. Ancora secondo il vocabolario della lingua italiana, l ontologia [on-to-lo-gì-a] è la parte della filosofia che studia il concetto e la struttura dell'essere in generale, e non i fenomeni in cui si concretizza e specifica. Nella filosofia analitica, con ontologia si intende la riflessione sui problemi di esistenza a partire dal linguaggio; infine, si intende l'insieme di entità che una teoria assume come esistenti. Il termine ontologia, preso dunque in prestito dal linguaggio filosofico, indica la descrizione formale dei concetti di un dato dominio; ne identifica le classi, le organizza in una gerarchia, specifica le loro proprietà (che caratterizzano anche gli oggetti appartenenti alla classe) e descrive anche le relazioni più significative che legano queste classi. Le convenzioni usate per presentare queste descrizioni vanno dal linguaggio naturale a formalismi logici, ma è chiaro che solo una specifica formale può permettere la comprensione via software. 6

12 In definitiva, la struttura dei dati e la semantica introdotta dalle ontologie migliorano le potenzialità del Web: i programmi di ricerca, basandosi su un preciso concetto, cercano e trovano le pagine che effettivamente si riferiscono a quel concetto, anziché quelle che contengono parole-chiave ambigue o generiche. In questo modo la ricerca è più accurata: i programmi di ricerca, che nel Web tradizionale riportano una serie di pagine tra le quali l utente deve ulteriormente cercare quelle d interesse, con queste nuove funzionalità restituiranno all utente le sole pagine che si riferiscono a un preciso concetto; inoltre le interrogazioni potranno riguardare informazioni che non risiedono sulla stessa pagina Web: il programma di ricerca, inferendo sulle regole specificate, può individuare il dato richiesto e rispondere all interrogazione. Le ontologie consentono anche di migliorare le prestazioni di altre applicazioni basate sul Semantic Web: ad esempio, visitando i siti di commercio elettronico, il confronto di informazioni si ottiene solo visitando negozi diversi, analizzando quelle informazioni che compaiono nel layout della pagina e trascurando quelle di più difficile reperimento; l introduzione di una o più ontologie, per uniformare le informazioni disponibili, permette un confronto più immediato dei cataloghi e anche un analisi via software dei dati. È chiaro che HTML, il linguaggio standard per la creazione di pagine Web, non ha le caratteristiche per strutturare i dati in base alla loro semantica, poiché specifica come devono apparire le informazioni, e pertanto deve essere affiancato da un altro strumento per la strutturazione semantica: tutto questo comporta la separazione tra il contenuto e il layout delle pagine e permette l indipendenza tra i due. Le potenzialità del Semantic Web sarebbero comunque inutili se non ci fossero degli agenti software in grado di raccogliere le informazioni 7

13 dalle diverse sorgenti, elaborarle e scambiare i risultati con altri programmi. La potenza di questi agenti sarà tanto più grande quanto più i contenuti del Web e i servizi che li usano si diffonderanno Le premesse del Semantic Web Il Semantic Web è un estensione del Web tradizionale: le caratteristiche di quest ultimo, e le nozioni e gli strumenti dell intelligenza artificiale sono le premesse al suo sviluppo. La rappresentazione della conoscenza è uno dei più importanti campi dell intelligenza artificiale, un area di ricerca sempre attiva e in continua evoluzione. Si occupa di gestire il modo in cui un programma modella ciò che conosce del mondo in cui è inserito. La conoscenza su una realtà d interesse deve essere strutturata per essere manipolata: la sua rappresentazione indica proprio come il sistema configura ciò che conosce del suo ambiente. Naturalmente deve essere una descrizione non ambigua e concisa e tale deve essere il linguaggio utilizzato: questo permette di indicare, con una sintassi formale, comprensibile alle macchine, come le informazioni sono definite e il tipo di operazioni che sono supportate e deve essere indipendente dal contesto, cioè deve poter raffigurare la conoscenza di qualunque tipo di sistema. L insieme delle conoscenze di un sistema, descritto in un linguaggio di rappresentazione, prende il nome di base di conoscenza. L attuale sviluppo delle ontologie è frutto di anni di ricerca in questo ambito. 8

14 URI: un indirizzo per ogni risorsa Il Web è uno spazio di informazioni. Se l uomo ha molte capacità mentali per associare diversi nomi a uno stesso oggetto e identificarlo in molti modi differenti, l ideale per una macchina è di avere per ogni risorsa un unico indirizzo universale. Le URI (Uniform Resource Identifier) sono identificatori di risorsa pensati per tale scopo, e forniscono una sintassi di accesso unificata per le risorse. Esse identificano risorse: documenti, immagini, file, servizi, caselle di posta elettronica, addirittura esseri umani e altre risorse. Essi rendono le risorse disponibili sotto una varietà di schemi di nomi e metodi di accesso come HTTP, FTP, protocolli di posta e così via. Si tratta di una tecnologia estensibile: esistono oggi alcuni schemi di indirizzamento esistenti, ma altri possono essere incorporati col tempo. Un sottoinsieme delle URI sono gli URL (Uniform Resource Locator). Essi costituiscono l insieme degli schemi URI dotati di istruzioni specifiche su come accedere alle risorse su Internet Il padre delle odierne ontologie: KL-ONE Uno dei primi sistemi per la rappresentazione della conoscenza è stato KL-ONE: questo sistema è nato nel 1977 ed ha assunto in breve tempo un ruolo molto importante nell ambito dell intelligenza artificiale, diventando il punto di partenza per molte ricerche e fungendo da base per alcuni sistemi implementati, che necessitavano di un appoggio espressivo. Nonostante le sue diverse implementazioni, ha mantenuto alcuni aspetti che lo caratterizzano e ne fanno un sistema utile ed efficiente, da cui altri sistemi (come Parka) sono partiti. 9

15 KL-ONE si basa su una rete ereditaria strutturata, cioè una rete con un organizzazione gerarchica, basata sull idea di definire le descrizioni in termini di altre più generali: le relazioni di specializzazione sono rappresentate con un grafo direzionato. KL-ONE fornisce dunque un linguaggio per costruire una base di conoscenza per un agente razionale. I costrutti che utilizza sono di due tipi: uno per la definizione di descrizioni e l altro per la creazione di asserzioni. L elemento principale del linguaggio (che può essere considerato object oriented) è il concetto. Per rappresentare e manipolare i concetti, è stato proposto un insieme di primitive, formato da oggetti e tipi di relazioni per la strutturazione della conoscenza: la formalizzazione di queste primitive in una grammatica ben formata ha portato alla creazione di un insieme di tipi strutturali primitivi (concetti, ruoli) e di operazioni per la formazione di strutture (specializzazioni, restrizioni, differenziazioni). I concetti sono di due tipi: Primitivi: sono gli elementi di base del dominio e specificano un certo numero di condizioni necessarie affinché un termine del linguaggio sia classificato come appartenente a questo tipo. Definiti: sono gli elementi specificati in base ai concetti primitivi e stabiliscono delle condizioni necessarie e sufficienti per rappresentare un termine del linguaggio. 10

16 I concetti generici (definiti e primitivi) permettono di descrivere gli individui di ogni possibile mondo; un concetto è formato dai suoi superconcetti e la sua struttura interna espressa in termini di Ruoli, che descrivono le relazioni tra le istanze del concetto e quelle di altri concetti Descrizioni Strutturali, che descrivono le relazioni tra i ruoli. Un concetto è ben strutturato se ha più di un superconcetto (se non ci sono restrizioni locali), differisce dal superconcetto per almeno una restrizione oppure è primitivo (se non ha restrizioni locali, è definito come l unione dei suoi superconcetti); inoltre, è descritto dal superconcetto, da cui differisce in base alla struttura interna. Un concetto definito in termini di un altro implica che il più specifico specializza il più generale e quindi ogni individuo descritto dal primo, può anche essere descritto dal secondo: si viene così a formare una tassonomia, cioè una struttura a rete, formata da relazioni di specializzazione. In una tassonomia KL-ONE, esiste il concetto thing, che non ha superconcetti e da cui derivano tutti gli altri. Poiché un concetto è descritto in base ai superconcetti, le restrizioni locali dei genitori devono essere applicate ai figli: per fare questo, il sistema fornisce un meccanismo di ereditarietà. Il ruolo di un concetto è come un attributo, che descrive le relazioni tra le istanze del tipo definito dal concetto e altre istanze. Fra i vari tipi di ruoli, il più importante è il Generic RoleSet (o semplicemente RoleSet), che rappresenta una caratteristica del concetto a cui fa riferimento. I RoleSet hanno a loro volta una struttura, specificata da un Value Restriction (V/R), che rappresenta il tipo del riempitore del ruolo (cioè il concetto le cui istanze sono in 11

17 relazione con il concetto dato), e un Number Restriction (N/R), che esprime la cardinalità delle relazione. Come un concetto può essere definito in termini di un altro, così si può fare con i RoleSets: in questo caso si parla di restrizione e non si specifica un ruolo nuovo, ma sono aggiunti dei vincoli sui "riempitori" del ruolo, sia per quanto riguarda il V/R (nel senso che il tipo è sottotipo di quello del ruolo ristretto ) che il N/R. Un ulteriore aspetto da analizzare riguarda la seconda componente della struttura di un concetto: le descrizioni strutturali. Fino ad ora, si è parlato di concetti i cui ruoli sono indipendenti l uno dall altro, mentre in realtà essi sono correlati tra loro: il meccanismo per specificare questi legami è dato appunto dalle descrizioni strutturali (SD). Ci sono due tipi di SD. Il primo e più semplice prende il nome di Role Value Map (RVM), che esprime l uguaglianza tra insiemi di "riempitori" di ruolo, utilizzando due puntatori (Role Chains), che puntano ai ruoli i cui "riempitori" sono uguali. Una variante consiste nello specificare l uguaglianza tra un insieme e un sottoinsieme di "riempitori" di ruolo. Il secondo tipo di descrizione strutturale consente di esprimere come i ruoli di un concetto interagiscono con altri concetti della rete, cioè possono legare i ruoli in modo arbitrario, usando concetti definiti in un altro punto: è importante che l accesso a questi concetti non ne cambi il significato, analogamente a quanto avviene nei linguaggi di programmazione, in cui le funzioni sono definite usandone altre; come in questo caso, ci deve essere un legame fra i parametri attuali e quelli formali, cioè si devono specificare gli argomenti del contesto della chiamata. Il concetto in questione non è generico, ma prende il nome di concetto individuale parametrizzato; la corrispondenza fra i parametri è espressa 12

18 mediante link, che rendono l implementazione delle descrizioni strutturali di questo tipo piuttosto complesse. A questa parte del linguaggio, si deve ancora aggiungere la parte asserzionale: ogni asserzione è fatta rispetto ad un contesto (Context) e non influenza la tassonomia descrittiva. Per asserire l esistenza di qualcosa che soddisfa una descrizione (come un concetto), si connette questo qualcosa a un Nexus all interno di un contesto, mediante collegamenti chiamati Description Wire. Un Nexus è un entità senza struttura, che mantiene le descrizioni di un oggetto in un contesto, e un contesto è un insieme di Nexus e di Description Wire, che non ha legami con altri contesti. Questa breve e rapida descrizione di KL-ONE ha dato un idea delle potenzialità e funzionalità del linguaggio: nel corso del tempo si è evoluto e il suo studio non è ancora terminato. In ogni caso, ha dato le basi per molte ricerche nel campo dell intelligenza artificiale ed è stato d aiuto nell analisi di alcuni aspetti della rappresentazione della conoscenza. È stato il primo a concepire l idea di mettere a disposizione una serie di primitive e ha contribuito agli studi per la separazione delle parti di descrizione e di asserzione La gestione della conoscenza nel Web Una base di conoscenza è l insieme delle credenze di un sistema e può essere rappresentata in modi diversi, secondo il linguaggio di rappresentazione che si utilizza. Il Web può essere inteso come una base di conoscenza: una fonte di informazioni facilmente reperibili e su cui si possono effettuare interrogazioni. 13

19 Questo accostamento ha fatto emergere, però, alcune caratteristiche del Web, che sono in contrasto con la concezione tradizionale di knowledge base: È un immenso contenitore d informazioni: le pagine indirizzate crescono a dismisura ed ognuna contiene una parte infinitesima di tutto quello che può essere raccolto da un agente software; il database che si otterrebbe sarebbe così grande da essere ingestibile dai sistemi di rappresentazione esistenti. È un mondo aperto e l informazione che è raccolta da un agente software è sempre una piccola parte di quella disponibile; un sistema di rappresentazione della conoscenza, invece, per l efficienza dei ragionamenti, considera il dominio come un mondo chiuso e ciò che non vi è compreso è considerato falso : questa completezza non può essere garantita nella gestione del Web. È dinamico, cioè cambia molto rapidamente, intervenendo su di esso con aggiunta di nuove pagine, rimozione, o modifica delle pagine esistenti: tali variazioni possono avvenire ad intervalli regolari o in qualunque momento, e riguardare parti non inerenti al contenuto informativo (come la correzione di errori di sintassi o il cambiamento di formattazione) oppure coinvolgere dati significativi. Questa instabilità si deve riflettere in sistemi estremamente flessibili, in grado di riconoscere dati non disponibili, ma non per questo meno significativi. 14

20 Il Web, quindi, è un mondo in continua evoluzione: i dati disponibili cambiano in maniera imprevedibile, le pagine possono essere inserite, cancellate o modificate senza avvertimenti di sorta; tutto questo, in aggiunta alla mancanza di un controllo centralizzato, fa sì che i dati possano essere Inconsistenti, per la mancanza di vincoli di qualunque tipo; Inaffidabili, perché non sono controllati in alcun modo; Non disponibili, se la pagina in cui sono contenuti è stata rimossa. L introduzione dei contenuti semantici deve cercare di mantenere le caratteristiche peculiari del Web (soprattutto la quantità d informazioni largamente disponibili), ma deve cercare di sfruttare meglio queste caratteristiche, consentendo una ricerca più mirata e precisa e uno scambio di informazioni tra gli agenti software Le ontologie Come già detto, un ontologia è un documento che indica in modo formale il significato e i legami fra termini. Più precisamente, introdotta in una specifica realtà, individua gli aspetti che sono ritenuti rilevanti nel contesto e quelli che possono essere ignorati: specifica i concetti e come sono legati tra loro, quali sono le proprietà di ciascuno e come queste proprietà sono connesse, mediante regole d inferenza e logiche. L introduzione delle ontologie nel Web consente la strutturazione delle informazioni e permette di superare alcuni aspetti critici del Web tradizionale. In primo luogo, le varie sorgenti producono informazioni in diversi formati e la creazione di indici per localizzare queste sorgenti è piuttosto 15

21 complessa, poiché è molto difficile ottenere indicazioni da sorgenti audio o video: un ontologia può facilitare questa operazione, descrivendo in modo formale i contenuti di ogni sorgente e aiutando un utente nella ricerca di quelle sorgenti che generano un particolare tipo di informazione. Di conseguenza, si risolve anche il problema della mancanza di struttura del Web, dovuta al fatto che HTML è un linguaggio di formattazione e non si occupa di gestire le informazioni per facilitare il loro reperimento: un ontologia descrive il dominio dal punto di vista strutturale, definendone i componenti e i loro legami. Il terzo problema affrontato è quello della dipendenza dal contesto: definendo mediante un ontologia il contesto in cui è presentato un certo documento, i termini utilizzati sono propri di quell ambito e quindi il loro significato non è ambiguo. Esattamente come il Web tradizionale si è sviluppato senza controlli e senza regole, è difficile immaginare che il Semantic Web si possa evolvere come un insieme ordinato di ontologie, costruite da esperti di intelligenza artificiale: soprattutto nei primi tempi, si estenderà con un grande numero di ontologie di dimensioni ridotte, facenti riferimento l una all altra (per riutilizzare o modificare termini comuni) e saranno sviluppate dagli utenti, analogamente a quanto avviene per i contenuti del Web attualmente creati. Un altro aspetto molto importante per la creazione del Semantic Web consiste nel rendere possibile per utenti differenti, che non sono esperti di logica, non solo la creazione di ontologie, ma anche la realizzazione di contenuti del Web che siano leggibili dalle macchine. È importante che gli strumenti per fare tutto questo siano liberamente e facilmente utilizzabili (un costo, anche minimo, sarebbe un freno troppo forte) e, soprattutto, che diventino di uso comune. 16

22 Per far fronte a tutte queste problematiche il World Wide Web Consortium ha progettato una serie di linguaggi, che nel corso del tempo sono diventati degli standard, che consentono proprio la strutturazione semantica delle informazioni e la condivisione dei significati dei concetti. Nel corso dei prossimi paragrafi saranno analizzati questi strumenti, mettendone in luce caratteristiche e modi d impiego I linguaggi del Semantic Web Originariamente, il Web è cresciuto intorno a HTML (HyperText Markup Language), che rappresenta lo standard per strutturare i documenti, in modo che i browser possano interpretarli e tradurli uniformemente: le informazioni per la formattazione sono racchiuse nei markup di formattazione, ossia il testo da visualizzare è racchiuso tra istruzioni (i tag) che appunto indicano l aspetto che l informazione deve assumere a video. HTML è un linguaggio semplice, ma, se da una parte la sua semplicità ha permesso un incremento molto rapido del Web, dall altra ha impedito l utilizzo di alcune applicazioni avanzate. Il mondo delle informazioni tecnologiche è un ambiente in continua evoluzione e per un utente umano può essere difficile trovare ciò di cui ha bisogno in un universo così eterogeneo: un agente software potrebbe potenzialmente essergli d aiuto, ma non è in grado di comprendere o interagire con dati che non sono elaborabili perché compaiono in linguaggio naturale. La soluzione per risolvere questa incapacità di capire la semantica dei concetti contenuti in una pagina Web consiste nell uso di strumenti che permettano di associare ad ogni concetto il suo significato, affinché esso sia disponibile per gli agenti software. 17

23 XML (extensible Markup Language) è il primo linguaggio che separa il markup dei contenuti da quello di presentazione: è uno standard elaborato per fare in modo che le informazioni non siano semplicemente formattate per facilitarne il reperimento per un utente umano, ma anche facilmente elaborate da agenti software; consente la creazione di documenti strutturati, ma non gestisce la semantica dei contenuti: un programma riconosce i contenuti, ma non è in grado di attribuire loro un significato. Inoltre non fornisce meccanismi di classificazione o ragionamento e quindi deve essere affiancato da altri linguaggi più potenti. A supporto (e facendo uso) di questo strumento, è nato RDF (Resource Description Framework): è stato sviluppato dal W3C come uno standard per la gestione dei metadati, con lo scopo di aggiungere semantica formale al Web. È definito sopra e attraverso XML, che fornisce un modello dei dati e una convenzione sintattica, per rappresentare i significati dei dati in modo interoperabile. RDF è un mezzo per descrivere le relazioni tra le risorse in termini di proprietà e valori. Con RDF è stato sviluppato anche RDF-Schema (RDFS), un sistema che può essere effettivamente pensato come un linguaggio ontologico e/o di rappresentazione della conoscenza. Vediamo ora più in dettaglio questi linguaggi, tenendo comunque presente che da soli non potrebbero realizzare le piene funzionalità del Semantic Web, di cui però costituiscono gli strumenti di base XML XML è utilizzato per creare una struttura digitale dei documenti, cioè i documenti sono rappresentati in maniera tale da poter essere interpretati da un computer, affinché le 18

24 informazioni contenute possano essere elaborate memorizzate e ricercate. Prima di tutto, si deve definire una struttura logica del documento (che è comune a tutti i documenti di quel tipo) e individuare i suoi componenti: ognuno di questi è un elemento XML ed è legato agli altri da vincoli di dipendenza; tutti gli elementi che compongono un documento assumono una struttura ad albero: l elemento principale è la radice, gli altri sono i suoi sottoelementi, che sono a loro volta rami o foglie a seconda che abbiano o no dei discendenti. Ad esempio, si consideri come tipo di documento un messaggio di posta elettronica: partendo dall elemento principale, e-message, si considerano le sue componenti, che a loro volta vengono scomposte, ottenendo la struttura rappresentata in figura 1. Figura 1 - Struttura di un messaggio di posta elettronica 19

25 Ogni elemento può avere degli attributi, che ne descrivono le proprietà. Si noti che la strutturazione di un documento in questi termini non è immediata: alcuni aspetti possono essere rappresentati sia come elementi sia come attributi e da alcuni tipi di documento non è possibile ricavare una struttura perfettamente ad albero. La struttura fisica di un documento XML è formata da entità: un entità è un costrutto che rappresenta una parte del testo, ha una dimensione variabile (da un carattere a tutto il documento) ed ha un nome, per permettere i riferimenti ad essa. Come gli elementi indicano i componenti della struttura logica del documento, le entità specificano la posizione di insiemi di byte: si deve fare in modo che questi due aspetti siano correlati tra loro. L insieme di comandi che stabiliscono questo legame è il markup, ossia l insieme dei tag : questi comandi sono distinti dal testo mediante dei delimitatori e in pratica ciò che è racchiuso fra i simboli di minore ( < ) e maggiore ( > ) costituisce il markup, che è la parte che è compresa dagli elaboratori. La forma è analoga (ma maggiormente rigida da un punto di vista formale) a quella dei tag HTML, ma, se in questo caso danno le indicazioni per la formattazione delle informazioni, in un documento XML le informazioni riguardano il tipo di dato compreso tra il tag di apertura e quello di chiusura. 20

26 seguente: Il documento XML dell esempio precedente può essere il <?XML version= 1.0?> <e-message> <sender = federico.pescarmona@fastwebnet.it> Federico Pescarmona </sender> <receiver = fulvio.corno@polito.it> Fulvio Corno </receiver> <subject> Semantic Web </subject> <body> <primo-paragrafo> testo primo paragrafo </primo-paragrafo> <secondo-paragrafo> testo secondo paragrafo </secondo-paragrafo> </e-message> </body> Si noti come l indirizzo di mittente e destinatario siano stati considerati come attributi: non ci sono regole precise per scegliere una soluzione piuttosto che un altra, ma genericamente si considera come attributo ciò che non contiene degli elementi e che dà informazioni semplici e non strutturate. Generalmente, gli attributi sono delle stringhe che indicano una proprietà dell elemento a cui sono associati. Come già detto, i documenti di un certo tipo hanno la stessa struttura; a questo proposito la tecnologia XML consente di creare la dichiarazione di tipo di documento o DTD (Document Type Definition), che rappresenta la definizione formale di ogni tipo (analogamente allo schema, che, nell ambito delle basi di dati, stabilisce i vincoli per la strutturazione dei dati). Una DTD specifica le caratteristiche di un certo tipo di documento, cioè gli elementi, gli attributi e le entità: un documento che si conforma ad una DTD si dice valido; se non è valido, potrebbe essere ben formato (cioè contenente un markup comprensibile ma non conforme ad una DTD). Un 21

27 documento XML deve dichiarare a quale DTD si conforma, per verificarne la validità, ma tale dichiarazione non è obbligatoria e il documento in questo caso non è considerato né valido, né non valido. L esempio precedente è conforme a una DTD del tipo: <!DOCTYPE e-message [ <!ELEMENT e-message (sender, receiver, subject, body)> <!ELEMENT sender (#PCDATA)> <!ATTLIST sender CDATA #REQUIRED> <!ELEMENT receiver (#PCDATA)> <!ATTLIST receiver CDATA #REQUIRED> <!ELEMENT subject (#PCDATA)> <!ELEMENT body (paragrafo+)> <!ELEMENT paragrafo (#PCDATA)> ]> <e-message> dove PCDATA è un tipo predefinito e indica una sequenza di caratteri parsed; CDATA è una sequenza di caratteri qualsiasi, non parsed. Il simbolo + indica che l elemento body contiene uno o più sottoelementi paragrafo. L elemento emessage è costituito da una sequenza di sottoelementi, separati da una virgola: in alternativa alla sequenza si può avere una scelta; ad esempio: <!ELEMENT recapito ( telefono)> che in un documento XML si traduce con <recapito> < > federico.pescarmona@fastwebnet.it </ > </recapito> oppure <recapito> <telefono> </telefono> </recapito> I nomi delle proprietà possono anche essere associati a dei namespace, in modo che la loro semantica non sia 22

28 ambigua. Questi servono per identificare dei domini applicativi in cui è garantita l uniformità sintattica. XML, da solo, non è in grado di realizzare una delle caratteristiche fondamentali del Web: i collegamenti ipertestuali. Per questo motivo, è affiancato da uno standard, XLink, che permette di inserire elementi in un documento in modo da creare e descrivere collegamenti tra risorse: i link che si possono ottenere non sono solo di tipo unidirezionale e uno a uno come nel caso di HTML, ma possono essere bidirezionali, uno a molti, molti a molti. Come detto all inizio, in un documento XML non devono comparire informazioni o elementi che riguardino il modo in cui i dati vengono visualizzati. Accanto ad XML esiste, quindi, una seconda specifica, XSL (extensible Style Language), che permette di creare fogli di stile per specificare come il contenuto di un documento XML debba essere visualizzato sul supporto scelto (browser, stampante, e così via). Con questo strumento si realizzano gli scopi primari di XML: mantenere separati gli elementi di contenuto dagli elementi di formattazione. È chiaro che i contenuti di XML sono molto più ampi: questa breve panoramica permette solo di inquadrare il linguaggio nel contesto del Semantic Web RDF Nel Web esiste un altro tipo di dati: i metadati. Questi, genericamente, sono informazioni riguardanti altre informazioni o, più precisamente, sono i dati che descrivono le risorse del Web. Il primo passo per introdurre i metadati in Internet consiste in un aggiunta standardizzata ad XML, che si chiama RDF (Resource Description Framework): essa può essere considerata come una struttura ad un livello direttamente 23

29 superiore rispetto ad XML e, se XML è un estensione del documento, RDF è un estensione dei dati introdotti da XML. Non è propriamente un linguaggio, ma un modello per la rappresentazione dei metadati. I documenti RDF permettono di stabilire nuove relazioni fra i documenti, immagini e qualunque altro tipo di risorsa Web, consentendo l interoperabilità tra le applicazioni che si scambiano via Web informazioni a loro comprensibili: uno degli scopi di RDF è di rendere possibile la specificazione della semantica dei dati basati su XML, in modo standardizzato. Inoltre, permette di definire un meccanismo per descrivere le risorse, indipendentemente dal dominio di applicazione e senza definire tale dominio a priori. RDF descrive non solo ciò che è presente nel Web, come le pagine o parti di esse, ma anche tutto quello a cui può essere associato una URI (Uniform Resource Identifier): ad esempio, se si può associare una URI ad una persona, tutte le informazioni ad essa relative potranno essere rappresentate mediante RDF. RDF ha un sistema a classi, paragonabile a quelli della programmazione ad oggetti: una collezione di classi è detta schema e le classi formano una gerarchia, che, con il meccanismo delle sottoclassi, consente la specializzazione dei concetti e la condivisione delle definizioni dei metadati. Inoltre, è permessa l ereditarietà multipla, che consente la vista multipla dei dati e lo sfruttamento di definizioni create da altri. Il modello dei dati è rappresentato con un grafo, che schematizza la tripla risorsa-proprietà-valore: i nodi del grafo sono le risorse descritte da RDF (pagine Web, insieme di pagine, oggetti non direttamente accessibili via Web), gli archi sono etichettati con il nome della proprietà relativa alla risorsa e sono direzionati dal nodo che rappresenta la risorsa verso 24

30 quello che ne indica il valore (che può essere di tipo atomico oppure un altra risorsa, ottenendo in questo caso delle relazioni fra le risorse). La risorsa (identificata univocamente da una URI), insieme con una proprietà ad essa associata e al corrispondente valore, forma uno statement (ossia un affermazione), in cui i tre elementi prendono il nome di soggetto, predicato e oggetto. Ad esempio nella figura 2 sono mostrate le proprietà di un documento, che a loro volta possono essere altre risorse (nel grafo rappresentate da ovali) o da valori di tipo Literal, ossia stringhe o comunque tipi di dato primitivi, rappresentate nel grafo da rettangoli. Figura 2 - Un esempio di statement Sintatticamente, i concetti espressi con RDF vengono serializzati mediante XML; per specificare se un elemento appartiene alla sintassi RDF, si richiama il corrispondente namespace tramite il prefisso rdf:. Ad esempio, lo statement precedente è rappresentato nel seguente modo: <rdf:rdf> xmlns:rdf= xmlns= > <rdf:description about= > <creatore>fulvio Corno</creatore> </rdf:description> </rdf:rdf> I primi due elementi specificano i namespace: più precisamente, il primo indica lo spazio dei nomi relativo a RDF, cioè i concetti definiti dalla sintassi di RDF; il secondo è il namespace in cui sono definiti tutti gli altri nomi (in particolare 25

31 quelli delle proprietà, la cui definizione è indipendente da RDF). Nell esempio, quindi, lo schema contiene la definizione della proprietà creatore. Il significato dei termini utilizzati in uno statement RDF è molto importante per stabilire il tipo di elaborazione che si deve effettuare su una particolare informazione: chi scrive e chi legge lo statement devono capire lo stesso concetto per i termini usati. Questo significato comune è espresso mediante uno schema, che definisce i termini che vengono usati e il loro contenuto semantico: RDF-Schema (RDFS) si trova a livello superiore rispetto ad RDF. 26

32 Lo schema è identificabile con un ontologia e consente la definizione di classi e di risorse, delle loro proprietà, dei vincoli di dominio e di range sulle proprietà, delle relazioni (comprese quelle di sottoclasse di una risorsa e sottotipo di una proprietà), i vincoli e la documentazione. Ad esempio, in corrispondenza dell URL può essere contenuto il seguente schema, che definisce la classe delle Persone e la loro proprietà Afferenza, impostando anche i namespace: <rdf:rdf xmlns:rdf = xmlns:rdfs= xmlns:xml= > <rdf:description ID= ClassOfPerson > <rdfs:comment> La classe delle persone </rdfs:comment> <rdfs:label xml:lang= en > Person </rdfs:label> <rdfs:label xml:lang= it > Persona </rdfs:label> <rdfs:type resource= /> <rdfs:subclassof rdf:resource= rdf-schema#resource /> </rdf:description> <rdf:description ID= PropertyAffiliated > <rdfs:comment> Proprietà delle Persone </rdfs:comment> <rdfs:type resource= /> <rdfs:label xml:lang= en > Affiliated </rdfs:label> <rdfs:label xml:lang= it > Affiliato </rdfs:label> <rdfs:domain rdf:resource= ClassOfPerson /> <rdfs:range rdf:resource= ClassOfOrganization /> </rdf:description> </rdf:rdf> Questo schema definisce: Una nuova risorsa, il cui identificativo è ClassOfPerson : è definita come Class ed è sottotipo di Resource (questa dipendenza è di 27

33 default). A questa classe sono associati un commento e due label (che indicano la forma, secondo la lingua, in cui può comparire in un documento). Una proprietà della classe delle persone, il cui identificativo è PropertyAffiliated : è definita come Property e, ad essa sono associati un commento, due label, il dominio (cioè la risorsa a cui fa riferimento, in questo caso ClassOfPerson ) e il range (cioè l insieme di valori che la proprietà può assumere, in questo caso una risorsa ClassOfOrganization, che si suppone definita in un altro schema). In base a questo schema, un documento può contenere un elemento del tipo: <rdf:rdf xmlns:rdf = xmlns= > <Person> <Affiliated> Dipartimento di Informatica </Affiliated> </Person> </rdf:rdf> o alternativamente <rdf:rdf xmlns:rdf = xmlns= > <Persona> <Affiliato> Dipartimento di Informatica </Affiliato> </Persona> </rdf:rdf> La specifica del namespace lega l uso di un termine in un dominio allo schema (dizionario) in cui si trova la sua definizione: nell esempio precedente, un motore di ricerca, 28

34 facendo riferimento allo schema, è in grado di interpretare correttamente i tag in entrambe le versioni, poiché è definito il legame tra i due concetti. RDF, come base per l elaborazione dei metadati, può essere utilizzato in diverse aree: nella ricerca di risorse, nella catalogazione, nei software di intelligenza artificiale, nel commercio elettronico, in cui è affiancato a tecniche di firma digitale. Sebbene RDF e lo schema rappresentino un buon strumento per la definizione di un linguaggio di markup per il Semantic Web (ad esempio, per determinare le relazioni semantiche tra termini differenti), non hanno sufficiente potere espressivo: non consentono di specificare le restrizioni e le caratteristiche delle proprietà, le condizioni necessarie e sufficienti per l appartenenza alle classi e gli unici vincoli che si possono definire sono quelli di dominio e range delle proprietà. Il loro utilizzo nei sistemi di rappresentazione della conoscenza è limitato, inoltre, da un altra caratteristica: non permettono di specificare meccanismi di ragionamento, ma rappresentano semplicemente un sistema a frame. I meccanismi di ragionamento devono essere costruiti ad un livello superiore Oltre lo schema Il livello superiore è quello che fornisce i costrutti per la creazione di ontologie, il cui potere espressivo è necessario per descrivere le risorse in modo sufficientemente dettagliato. Un ontologia è una collezione di asserzioni, che definiscono le relazioni tra i concetti e specificano le regole logiche per ragionare su di essi; gli agenti software comprendono il significato di un dato riferendosi all ontologia indicata. Proseguendo sulla strada degli standard, il livello superiore è rappresentato dal linguaggio DAML+OIL (DARPA 29

35 Agent Markup Language + Ontology Inference Layer), il cui inserimento nel contesto del Semantic Web porta ad avere la struttura rappresentata in figura 3. Figura 3 - La struttura a strati del Semantic Web Oltre gli standard W3C, un gruppo di ricerca dell Università del Maryland ha realizzato SHOE (Simple HTML Ontology Extension), un linguaggio che consente la creazione di ontologie e l inserimento di informazioni semantiche nelle pagine Web. Il suo livello è dunque lo stesso di DAML+OIL, di cui rappresenta un alternativa. Un altro formato, in via di approvazione da parte del W3C, è il linguaggio OWL (Web Ontology Language), che probabilmente rappresenterà in futuro lo standard maggiormente utilizzato per la realizzazione delle ontologie. C è comunque da aggiungere che spesso il livello raggiunto da questi linguaggi è addirittura troppo elevato per 30

36 molti scopi in cui è pienamente sufficiente utilizzare l accoppiata RDF e RDFS La realizzazione del Semantic Web Una qualunque realtà organizzativa (economica, scolastica, ricreativa) che disponga di un sito on-line, può fare in modo che lo stesso sito contenga informazioni tali da poter essere analizzate con gli strumenti del Semantic Web. Perché questo avvenga, si deve procedere con l esecuzione di alcune azioni La creazione di ontologie Il primo passo che deve essere realizzato consiste nella definizione di un ontologia, cioè la specificazione esplicita di una concettualizzazione. È conveniente creare un ontologia indipendentemente dal linguaggio con cui verrà in seguito realizzata, per non vincolarla a scelte d implementazione. La prima questione da affrontare è quella dell individuazione della struttura del dominio che si sta analizzando: si devono individuare gli oggetti che lo costituiscono, sotto vari punti di vista, a seconda della natura stessa del dominio. Ad esempio, un sito per il commercio elettronico può essere strutturato in base ai prodotti che offre; invece, una realtà organizzativa (come un azienda) non può essere articolata solo in base ai servizi che fornisce, ma anche in base alle persone che ci lavorano o ai suoi vari reparti. È importante che la tassonomia rispecchi i legami reali e che metta in luce gli aspetti di classificazione, che si riscontrano nella realtà. Una volta individuati i concetti-chiave, si devono individuare tutte le caratteristiche e le proprietà che sono rilevanti per descriverli: ad esempio, i dati anagrafici per le 31

37 persone o i dettagli di fabbricazione per un prodotto in vendita. A seconda, poi, del linguaggio che si utilizzerà in seguito, questi attributi saranno trasformati in proprietà o relazioni. Un altro importante aspetto che deve essere analizzato è l individuazione dei legami tra i vari elementi della tassonomia: è possibile che i vari concetti siano correlati non solo in base alle regole di classificazione, ma anche da relazioni specifiche del tipo di dominio che si sta analizzando. Ad esempio, due reparti di un organizzazione (che nella tassonomia possono trovarsi allo stesso livello dell albero) possono essere legati per il tipo di lavorazione che effettuano e questa situazione deve essere tradotta da una relazione che la esemplifichi. Poiché il dominio può non essere l unico di quel tipo, rappresentato mediante un ontologia, è possibile che esistano ontologie esistenti che definiscano, tutti o in parte, i concetti appena trovati. L individuazione di queste ontologie è molto importante: in primo luogo, i concetti già definiti possono essere riutilizzati, così come le proprietà e le relazioni, in modo che non siano specificati più volte; i concetti nuovi, invece, sono dichiarati e memorizzati nella nuova ontologia, che diventa un estensione di quella precedente, così da avere una gerarchia e i nuovi elementi siano disponibili per essere a loro volta estesi, per raggiungere nuovi scopi. Questo sfruttamento ed estensione di documenti già esistenti, è possibile solo se le ontologie sono reperibili ed indirizzabili: in alcuni casi, per rendere i sistemi più efficaci, è consentita la loro duplicazione su siti diversi, in modo che un utente possa specificare (solitamente mediante una URI) la locazione più idonea. In alcuni casi, c è la necessità di creare un ontologia privata, non visibile via Web: in tale situazione, il documento 32

38 deve essere memorizzato in una intranet, dove devono risiedere anche le informazioni annotate. Solitamente, si stabilisce che se le informazioni inserite nelle pagine sono accessibili via Web, allora anche l ontologia, in base alla quale si conformano, deve essere accessibile, in modo che il contenuto semantico possa essere interpretato dall opportuno software L annotazione delle pagine Il passo successivo consiste nell annotazione delle pagine, cioè nell inserimento dei contenuti semantici all interno delle pagine Web. Non è un operazione banale, ma deve essere effettuata in base a delle ben precise regole: quelle indicate dall ontologia. Innanzi tutto, si devono collegare le informazioni ad un dominio e quindi scegliere l ontologia che specifica gli elementi di quel dominio. Quindi, gli elementi reali, che si vogliono descrivere, devono essere tradotti nel linguaggio dell ontologia: classificati in base alle entità specificate, messi in relazione con altri elementi e descritti mediante dei valori attribuiti alle proprietà. È una fase delicata, che deve specificare tutte le informazioni rilevanti: come nel web tradizionale i tag di formattazione permettono di dare maggiore o minore risalto a determinati dati, così con questo approccio si mettono in rilievo le informazioni che devono essere reperibili non solo da un utente umano, ma anche da agenti software. Come nel caso delle ontologie, si devono individuare le specifiche entità che si vogliono descrivere in modo astratto rispetto ad un qualunque tipo di implementazione. L annotazione delle pagine può essere fatta con un qualunque editor di testo: in questo caso è molto importante 33

39 conoscere bene la sintassi del linguaggio utilizzato, per evitare di commettere errori. Alcuni sistemi mettono a disposizione dei tool per convalidare le annotazioni o anche, per gli utenti poco esperti, altri che consentono l inserimento automatico dei dati, senza mettere mano alla sintassi, garantendo l annotazione immune da errori di sintassi. Ancora, nel caso in cui i dati siano memorizzati in un formato sufficientemente regolare, è possibile realizzare brevi programmi, basati su tecniche di pattern matching, che estraggono le informazioni da convertire in un linguaggio semantico La raccolta delle informazioni Le informazioni semantiche inserite nel Web devono innnanzitutto essere individuate e raccolte per poterle successivamente elaborare e inserire nella base di conoscenza. Questa operazione può essere eseguita in due modi diversi: Un sistema passivo analizza solo le pagine che gli vengono sottoposte dall utente, tramite un form. Un sistema attivo cerca nuove pagine per tentare di trovare al loro interno informazioni utili. Questo tipo di ricerca, può essere fatto in due modi: la prima è la tecnica off-line, che consiste nell andare ad analizzare solo particolari host o solo le informazioni date in base a specifiche ontologie: questo comporta la memorizzazione locale delle informazioni trovate e la risposta alle interrogazioni si basa su questa ridotta base di conoscenza, anziché su tutto il Web; la seconda è il sistema on-line, che risponde a determinate query: in questo caso l esecuzione dell interrogazione richiede il caricamento dinamico delle pagine Web per una ricerca più precisa. Il primo metodo è più veloce, perché si basa su una base di conoscenza ridotta, e non 34

40 richiede elaborazioni complesse per ottenere le informazioni richieste, perché raccoglie tutta l informazione disponibile per un utilizzo successivo Agenti e servizi Nel momento in cui i contenuti semantici del Web sono on-line, è importante che vengano realizzati dei programmi che elaborino queste informazioni e, all occorrenza, scambino i risultati con altri programmi. Quando le informazioni sono disponibili, sparse nella rete o raccolte in una base di conoscenza, gli agenti software, non esplicitamente ideati per lavorare insieme, sono in grado di scambiarsi i dati ma solo se questi hanno un significato ben preciso. Questo aspetto è fondamentale per valutare la validità sia degli agenti stessi sia del linguaggio con cui il Semantic Web è definito. Le informazioni raccolte possono quindi essere usate da un agente intelligente, mentre svolge il suo compito, oppure vengono sfruttate per aiutare un utente a localizzare dei documenti utili. Uno dei problemi più comuni del Web tradizionale, riguarda la difficoltà di individuare i servizi offerti (Web Services), che sono disponibili on-line: si stanno facendo molti sforzi per risolvere questa situazione, in particolare usando una tecnica chiamata service advertisement (pubblicizzazione del servizio), che consiste nel creare un vocabolario condiviso, in cui i motori di ricerca reperiscono i servizi richiesti: inserendo delle parole chiave nel vocabolario, dovrebbe essere immediato il reperimento del corrispondente servizio. Le tecniche del Semantic Web dovrebbero migliorare questo meccanismo: la pubblicità viene creata usando un linguaggio ontologico, che consente la specificazione di una gerarchia e di una serie di relazioni; gli strumenti di ricerca si 35

41 possono basare sulle relazioni di classe e sottoclasse e su tutta una serie di informazioni semantiche, che sfruttano per trovare più facilmente un servizio. La pubblicità espressa mediante ontologie non aiuta solo un utente a individuare un servizio: se la sua descrizione e il suo modo di utilizzo vengono specificati in un linguaggio comprensibile alle macchine, allora è possibile stabilire un interazione tra il servizio e gli agenti software, che potenzialmente potrebbero utilizzarlo. Si deve tenere presente che l ontologia non definisce il servizio, ma ciò a cui esso si riferisce. Avendo a disposizione la descrizione del servizio e gli agenti connessi alle ontologie, che a loro volta sono legate ad altre ontologie, si viene a creare una situazione in cui ogni agente può comunicare con un altro se entrambi fanno riferimento allo stesso insieme di termini. È comunque possibile che agenti che non usano le stesse ontologie siano ancora in grado di comunicare: se i legami fra i vari componenti sono accurati, ogni agente può essere in contatto con ciascuno degli altri trovando un ontologia comune a cui entrambi possano fare riferimento. L integrazione fra gli agenti e le ontologie ha un importante influenza sull utilizzo dei servizi web e sulla capacità di creare programmi che svolgano, in modo più efficace, i servizi per gli utenti e che richiedano un minor intervento umano: gli agenti diventano in grado di leggere e ragionare sulla conoscenza pubblica, utilizzandola per cercare e invocare altri agenti o i servizi web. 36

42 3. La ricerca e l analisi delle Informazioni 3.1. Information Retrieval Per Information Retrieval si intende "classicamente" l insieme delle tecniche che consentono un accesso mirato ed efficiente a grandi raccolte di oggetti contenenti principalmente testo. Non è un campo di studio nato con l informatica, si potrebbe anzi dire che si è sentita l esigenza d uso di tali tecniche con le prime grandi biblioteche. Nel campo della Computer Science per Information Retrieval (spesso sintetizzato in IR), si intende quel settore che tratta di reperimento, rappresentazione, organizzazione, e memorizzazione di documenti, o meglio delle parti rilevanti di essi, ossia delle informazioni in essi contenute. Lo scopo è dunque, in seguito a una richiesta di informazioni inserita da un utente, solitamente attraverso una query di parole-chiave, recuperare le informazioni che possono essere utili per l utente stesso. Ogni sistema di IR si basa su una tecnica di recupero delle informazioni, ovvero su un meccanismo che permette di confrontare la richiesta, espressa in uno specifico linguaggio, con le rappresentazioni dei documenti, coincidenti con i documenti stessi (rappresentazione diretta) o date da surrogati (rappresentazione indiretta) Criteri di efficacia Si supponga di poter definire, per ogni documento in una determinata collezione, se il documento è rilevante o meno in riferimento a una data richiesta fornita dall utente. Allora sarà possibile suddividere la base di documenti in quattro sottoinsiemi, classificati in diverso modo a seconda del fatto 37

43 che siano stati reperiti dal sistema e se siano rilevanti o meno. Ossia, distinguiamo tra documenti che sono considerati rilevanti dall algoritmo (e dunque reperiti) e documenti considerati rilevanti dall utente. Rilevanti Non rilevanti Reperiti Corretti Inesatti Non reperiti Omessi Da omettere I documenti reperiti ma non rilevanti sono considerati rumore rispetto al risultato finale, e sono spesso chiamati false hits. Quelli non reperiti ma rilevanti sono definiti false dismissals. Il sistema ideale dovrebbe rendere nulli i risultati che rientrano in entrambe queste categorie. Per gli algoritmi di questo campo, due parametri sono essenziali per verificarne l efficacia: la precisione e il recall. La precisione si definisce come il rapporto tra i documenti rilevanti reperiti e il totale dei documenti reperiti, il recall è invece il rapporto tra i documenti rilevanti reperiti e il totale dei documenti rilevanti, siano essi reperiti dal sistema oppure no. In termini pratici, avere un alto parametro di precisione implica per l utente non dover sfogliare tra molti risultati inutili per arrivare a quelli corretti, mentre un parametro elevato di recall implica che se l informazione ricercata esiste nella base di conoscenza accessibile, allora viene reperita con elevata probabilità. Il progetto di un sistema di Information Retrieval consiste spesso nel bilanciamento di questi due fattori: il massimo valore di recall si può avere dando come risultato della ricerca l intera collezione di documenti, ma ciò comporta anche un valore minimo di precisione. 38

44 I valori di recall e precisione dipendono, oltre che dall algoritmo di retrieval, dalla stessa query di ricerca: richieste molto specifiche porteranno ad una elevata precisione, mentre il risultato di richieste generiche avrà un alto parametro di recall. 1 Precisione 0 1 Recall Si noti però che mentre la precisione è effettivamente calcolabile a partire dal risultato, così non è per il recall, poiché non è conosciuto il totale di documenti rilevanti nella collezione ai fini della query Modelli concettuali I modelli classici di Information Retrieval considerano ogni documento come descritto da un insieme di parole-chiave (keywords). Perciò le parole-chiave sono utilizzate per indicizzare e sintetizzare il contenuto del documento. Dato un set di keywords, appare subito evidente che non sono tutte egualmente utili per descrivere un documento: il significato di alcune è più vago di quello di altre e il loro uso non consente una ricerca ben mirata. Una parola-chiave presente nel 90% dei documenti perde quasi del tutto il suo significato e il suo valore aggiunto rispetto ad altre parole, mentre una keyword presente in appena l 1% dei documenti è molto importante nell identificazione degli stessi. 39

45 Esistono diversi modelli di riferimento entro cui possono essere classificati tutti gli algoritmi di Information Retrieval; essi sono i principi generali adottati e influenzano o determinano ogni singolo aspetto: il linguaggio di interrogazione, la rappresentazione dei documenti, la memorizzazione, i criteri di reperimento. Booleano: i documenti sono rappresentati attraverso parole-chiave, estratte manualmente o automaticamente dal testo. La ricerca avviene attraverso keywords connesse mediante operatori logici. Booleano esteso: simile al precedente, ma alle parole-chiave vengono associati dei pesi che ne determinano la rilevanza all interno del documento; in questo modo è possibile adottare criteri di ordinamento (ranking) dei risultati della query. Vector space: i documenti vengono rappresentati da vettori in uno spazio i cui assi sono tutte le parole-chiave gestite dal sistema; le coordinate del vettore-documento sono dunque determinate dai diversi pesi delle stesse all interno del documento. La ricerca di determinate parole-chiave avverrà dunque selezionando la porzione di spazio corrispondente e un intorno più o meno vasto di essa. Ossia, matematicamente, calcolando la correlazione tra il vettore che rappresenta la query e quello che rappresenta il documento. String query: la tecnica di recupero opera semplicemente attraverso algoritmi di patternmatching tra query e l intero testo di ciascun documento. 40

46 Le query Come detto, il modello concettuale determina il formato con cui possono essere inserite le query, ossia le stringhe di ricerca fornite dall utente. Esistono motori di ricerca che accettano query fornite in linguaggio naturale, per esempio scrivendo una domanda; in questo caso il sistema provvede attraverso una operazione di parsing a estrarre i termini rilevanti ed effettua dunque un tipo di ricerca booleano. Altri sistemi più complessi forniscono un meccanismo di feedback, attraverso il quale i documenti reperiti e giudicati rilevanti dall utente vengono utilizzati per riformulare la query con maggiore precisione, avvicinandosi passo dopo passo al risultato cercato Le parole-chiave L attività di individuazione delle keywords all interno dei documenti è detta di indexing; al fine di migliorare l efficacia del sistema è possibile utilizzare diversi accorgimenti. Stemming: i termini vengono ricondotti ad una radice comune attraverso un operazione di derivazione linguistica, rimuovendo ad esempio i prefissi e i suffissi; questa operazione migliora il recall, poiché le parole-chiave inserite dall utente non devono essere necessariamente identiche a quelle memorizzate ma possono essere derivate da esse; inoltre diminuisce la dimensione degli indici. Thesaurus: si fa uso di un dizionario di sinonimi e termini correlati. Stoplist: lista di parole che non hanno alcun valore selettivo, per esempio perché troppo comuni (congiunzioni, articoli e così via), e non vengono 41

47 pertanto considerate né in fase di indexing né di ricerca. Weighting: le keywords vengono pesate facendo uso di informazioni statistiche sulla distribuzione dei termini. Questo è un aspetto essenziale da tenere in considerazione, in quanto come detto le parolechiave possono avere un significato più o meno preciso, e vanno dunque pesate in modo differente l una dall altra. Per ricondurre il concetto di precisione in termini matematici, sono state proposte diverse formule che a partire dalla distribuzione della parola-chiave nel singolo documento e nell intera collezione assegnano diversi pesi alle singole keywords. Di queste formule, quelle che hanno avuto una maggiore diffusione sono la tf-itf (term frequency - inverse term frequency) e la sua variante tf-idf (term frequency - inverse document frequency), alle quali sarà dedicato il prossimo paragrafo Pesare le parole-chiave: TF ITF e TF IDF Le tecniche maggiormente usate per normalizzare i pesi delle parole-chiave alla loro reale rilevanza nel testo vengono derivate dalla loro distribuzione nel documento in esame e nell intera base di conoscenza. Definiamo come term frequency (tf) il numero di occorrenze di un termine in un testo, normalizzato al massimo numero di occorrenze di una parola-chiave nel documento in oggetto. Il risultato viene moltiplicato per un valore che indica, in base alla distribuzione del termine nell intera collezione, quanto esso sia comune, e dunque povero di significato. In particolare, 42

48 tf può venire moltiplicato per l inverse term frequency (itf), ossia il logaritmo naturale del rapporto tra il numero totale di occorrenze di tutte le parole-chiave nell intera base di conoscenza e il numero di volte che è invece presente il termine di cui si sta assegnando il peso. In alternativa all itf, è spesso utilizzata una sua approssimazione di più semplice implementazione, l inverse document frequency (idf), calcolata in base al rapporto tra il numero di documenti totali e il numero di documenti in cui compare la parola-chiave interessata. Tale rapporto è poi nuovamente l argomento del logaritmo naturale. C è da dire che i valori risultanti dal calcolo di itf e idf non sono direttamente paragonabili, ma forniscono entrambi degli indicatori sufficientemente precisi di quanto il termine sia vago oppure preciso. In formule: tf i, j = f max i, j k f k, j itf i = log k= M, l= N k, l= 0 l= N l= 0 f f k, l i, l idf i N = log n i dove f i, jè la frequenza del termine i nel documento j, M ed N sono il numero totale rispettivamente di parole-chiave e di documenti nella collezione, e n i è il numero di documenti in cui compare la parola-chiave i. 43

49 Figura 4 - Schema di un sistema di Information Retrieval 44

50 3.2. Indicizzazione e ricerca semantica Il Semantic Web non è una Rete di documenti, ma una Rete di relazioni tra risorse che rappresentano oggetti del mondo reale, come luoghi, persone, o eventi. È da questa enorme differenza concettuale che dobbiamo partire per comprendere quale sia lo scopo di un motore di ricerca semantico. La ricerca non avviene più per ottenere un testo, ma per ottenere un riferimento (delle informazioni) a una risorsa reale. Vi sono degli strumenti (SOAP, DAML) per inserire metadati semantici che possono essere compresi da un sistema di indicizzazione semantico direttamente nei documenti su Web, ma il sistema qua presentato non usa tali dati semantici. È importante, e forse ancora più utile, che tali dati siano ricavabili a partire dal contenuto del documento dal robot di indicizzazione. Così come è successo con l attuale World Wide Web, la crescita del Semantic Web andrà di pari passo con la diffusione delle applicazioni che ne faranno uso. Non c è dubbio che tra le killer application che hanno portato all attuale vastissima diffusione di Internet anche tra i non addetti ai lavori ci siano i motori di ricerca, secondi forse solamente alla posta elettronica. È grazie ai motori di ricerca e al loro grande sviluppo che gli utenti finali riescono a raggiungere e visualizzare le informazioni cercate nel vastissimo oceano d informazione che è la Rete. È altresì vero che l espansione quasi esponenziale di Internet rende sempre più difficile ottenere in breve tempo e attraverso pochi tentativi i risultati cercati. Più spesso capita di perdersi in troppi risultati, troppo spesso non accurati, e proseguire nella navigazione senza arrivare a ciò che si cerca. 45

51 Anche i più moderni motori di ricerca si basano comunque su un solo dato, la frequenza di parole-chiave nei documenti, e si differenziano tra loro soprattutto nell efficienza dell algoritmo di spider e dell algoritmo di ordinamento dei documenti ritenuti rilevanti per l utente. Sono dunque motori puramente sintattici, in cui la semantica non entra a fare parte, né nella stringa di ricerca né nell indicizzazione del documento. Tali motori di ricerca sono perfettamente adeguati in alcuni casi, quando l utente vuole cercare esattamente le parole (o la frase completa) che ha inserito nel campo di ricerca, ma non sono pienamente soddisfacenti quando l utente indica un argomento, oppure un concetto, e non una parolachiave. Proprio per questo secondo scopo è utile un motore di ricerca e indicizzazione semantico, che associ a un testo generico dei pesi relativi agli argomenti trattati e che sappia risalire dalla stringa di ricerca inserita dall utente al concetto riguardo al quale egli vuole avere informazioni. Un tale motore potrebbe offrire all utente diverse possibilità avanzate, ottenute attraverso semplici relazioni tra i diversi concetti: indagare in concetti più particolari o precisi di quelli direttamente cercati, o viceversa risalire verso il più generale, approfondire argomenti correlati, e così via. Come vedremo, il rovescio della medaglia è che la ricerca potrà avvenire solamente su un dominio di conoscenza ristretto. 46

52 4. Il progetto 4.1. Introduzione La promessa del Semantic Web di innovare il modo di usare le risorse di Internet sta lentamente progredendo, via via che gli standard proposti vengono approvati e le applicazioni semantiche vengono sviluppate. Ma al di là degli aspetti puramente tecnici, uno dei più grandi ostacoli al vasto uso di informazioni semantiche su web è un fattore di scala: finché una frazione significativa di informazioni accessibili per vie tradizionali non sarà accessibile anche semanticamente, le applicazioni sviluppate non saranno in grado di mostrare il loro pieno potenziale. Per questa ragione, molte proposte sono state fatte per aiutare l integrazione tra informazioni già esistenti e metadati semantici. Una interessante possibilità realizzabile attraverso il Semantic Web è quella di sintetizzare automaticamente in un singolo documento, come risultato di un operazione di ricerca, frammenti e paragrafi di altre risorse opportunamente raccolti e concatenati. Questo risultato richiede lo sviluppo e l integrazione di diverse tecnologie: la realizzazione e l uso di una ontologia di concetti nell ambito di ricerca richiesto, l indicizzazione semantica di una sequenza generica di testo, la realizzazione di un motore di ricerca semantico, l uso di uno strumento di analisi della struttura del documento. Molti percorsi di sviluppo sono coperti: l estrazione automatica di informazioni semantiche e di sottostrutture di documenti per la memorizzazione in servizi esterni di annotazione. Queste tecnologie permettono un utilizzo rapido ed economico delle risorse esistenti. Molti siti web potrebbero essere indicizzati in un singolo servizio di annotazioni, che offra 47

53 la possibilità di ricercare semanticamente nell intera collezione di informazioni. In un uso su larga scala di questo tipo di tecnologia, sorge però un secondo problema, relativo alla grande eterogeneità della struttura dei contenuti dei documenti presenti su Internet: l indicizzazione semantica dovrebbe puntare sia a semplici e brevi pagine web, sia a più lunghi documenti come articoli o libri on-line. La differenza di lunghezza deve essere un importante attributo nel processo di annotazione. La soluzione a questo ostacolo potrebbe essere quella di considerare ogni singola sottostruttura (capitoli, paragrafi, e così via) del documento in esame come una risorsa di informazione a sé stante. In questo modo, anche per lunghi documenti, è possibile risalire alla sezione di informazione più interessante per l utente, e mostrargli solamente quella Sistema proposto Chi si avvicina per la prima volta all ambito di sviluppo del Semantic Web si troverà subito di fronte a una grande disparità tra lavoro di ricerca teorico (e dunque documentazione, proposte di sviluppo e così via) e sistemi concreti che usino i risultati delle ricerche di cui sopra. Cosa manca ancora all adozione su larga scala dei principi semantici è la reale presenza di sistemi scalabili, capaci di supportare informazioni semantiche nell attuale stato del web. Alcune applicazioni sono altresì presenti, ma non ve n è nessuna che utilizzata in larga scala possa essere considerata una vera killer application. 48

54 Modularità e scalabilità È necessario tenere conto di quelle che saranno le tecnologie semantiche future e di quella che è invece la tecnologia applicabile al giorno d oggi. Inoltre sono necessarie funzionalità di rete avanzate, come bilanciamento del carico sulle macchine, per ottenere così la possibilità di gestire un maggior numero di richieste. Per fare questo è necessario che l architettura sia modulare e scalabile, in modo che ogni modulo possa essere eseguito da una macchina diversa e che in un futuro più o meno prossimo sia possibile applicare i nuovi sviluppi della semantica a quanto è presente e affermato. Per ottenere tali scopi si è pensato ad un architettura distribuita in cui i diversi moduli potessero dialogare attraverso il protocollo XML-RPC. In effetti le due caratteristiche ricercate di scalabilità e di modularità sono due facce della stessa medaglia: mentre la seconda garantisce l estensibilità e l integrazione con moduli di terze parti, la scalabilità è la capacità di lavorare con grandi carichi di utenti, ed è solitamente ottenuta adottando architetture modulari. È da questi presupposti che nasce l architettura mostrata in figura 5 la quale sarà descritta nel dettaglio nei successivi paragrafi: la separazione dei moduli rispecchia la separazione delle varie funzionalità, e l integrazione di essi porta al sistema completo. 49

55 Figura 5 - Schema dell'architettura L ontologia L ontologia è il cuore di informazione che un applicazione Semantica deve forzatamente avere o comunque poter ottenere (esistono diversi studi e ricerche che hanno lo scopo di riuscire a generare automaticamente un ontologia a partire da una vasta base di conoscenza) Le annotazioni Le annotazioni rappresentano il modo per ottenere migliori performance di ricerca utilizzando metadati semantici. Tali annotazioni non devono essere incluse nei documenti ma devono essere esterne e raccolte in modo da poter essere facilmente condivise e accessibili. Esse contengono e definiscono le relazioni individuate tra una risorsa testuale e le classi dell ontologia, e comprendono un campo peso (weight). 50

56 Il formato anche in questo caso è quello dell RDF per garantire interoperabilità e possibilità di sviluppo e integrazione con nuovi e diversi moduli. L inclusione di un campo XPath rende possibile risalire a sottostrutture di documenti. È inoltre necessaria un interfaccia che renda possibile delle semplici operazioni sulle annotazioni, quali inserimento, modifica, e ricerca all interno di esse Semantic Mapper Per rendere possibile l indicizzazione semantica di documenti o parti di essi, e quindi la definizione di relazioni tra classi dell ontologia e sezioni di testo, è stato creato un modulo chiamato Semantic Mapper che opera a partire da rappresentazioni lessicali dell ontologia. Tali rappresentazioni lessicali altro non sono che termini particolari (o genericamente stringhe) che possono rappresentare ogni specifica classe dell ontologia. Dall analisi di un testo tramite tali rappresentazioni lessicali è quindi possibile risalire agli argomenti effettivamente trattati dal testo. Si potrebbe dunque considerare il modulo di Semantic Mapper come un oggetto che a partire da un testo generico risale all argomento trattato, indipendentemente dall effettiva implementazione L indicizzazione semantica Il servizio di indicizzazione riceve esternamente (ipoteticamente da un crawler) una richiesta specifica di una pagina attraverso una URI, ne ottiene il testo (eventualmente anche le sottostrutture) attraverso un servizio esterno di retrieval ed eventualmente frammentazione, e lo indicizza attraverso il Semantic Mapper. Nel caso vengano considerate 51

57 anche le sottoparti di documenti, le indicizza ricorsivamente mantenendo memoria, per ogni frammento, di qual è il suo frammento-padre. Inoltre, per ogni nuova aggiunta all interno della collezione di documenti, calcola nuovamente i pesi delle relazioni e li inserisce nuovamente all interno delle annotazioni. Nel diagramma in figura 6, è stata riportata la sequenza delle operazioni (il nome delle funzioni è solo indicativo). Figura 6 - Sequenza delle operazioni per l'indicizzazione 52

58 Il motore di ricerca semantica Il motore di ricerca riceve dall utente una stringa di ricerca in modo simile a quanto avviene nei più diffusi search engine tradizionali. A partire da essa, risale attraverso il Semantic Mapper agli argomenti riguardo ai quali l utente vuole avere informazioni. Diversamente, è realizzabile un sistema che visualizzi all utente direttamente la gerarchia di argomenti ricercabili, e che quindi riceva da lui direttamente la classe (o le classi) dell ontologia. Ricerca dunque all interno delle annotazioni quali risorse (e con quali pesi) riguardino l argomento cercato, e cerca inoltre i documenti relativi a classi dell ontologia in relazione con quella cercata, ovviamente assegnando a essi pesi minori. Elimina dunque le ridondanze (ossia quei frammenti che sarebbero ripetuti nei risultati, perché genitori di un altro frammento a sua volta reperito dal motore di ricerca), e ordina i risultati. Nel diagramma in figura 7, è stata riportata la sequenza delle operazioni (il nome delle funzioni è solo indicativo). 53

59 Figura 7 - Sequenza delle operazioni di ricerca S.E.R. Substructure Extractor and Retriever Due sono i servizi offerti da questo modulo: l estrazione e la frammentazione. Il modulo di frammentazione viene utilizzato per recuperare (in locale o in remoto) un documento XML/XHTML/HTML e per frammentarlo basandosi su uno o più tag passati come parametri. Esso restituisce alla funzione chiamante gli XPath relativi ai frammenti recuperati. La funzione di reperimento e estrazione esegue invece la funzione inversa: a partire dalla URI del documento e dagli 54

60 XPath, crea un nuovo documento in formato XHTML contenente i frammenti richiesti Contributo individuale Entrare a fare parte e contribuire alla realizzazione di un progetto di questa portata, è già di per sé fonte di orgoglio e stimolo a rendere al massimo. È vero però che, di fronte a un progetto del genere, per di più nell ambito ristretto nel tempo di una tesi, sarebbe presuntuoso poter pensare di poter realizzare altro che le basi per un futuro sviluppo. Ciò che personalmente si è realizzato sono i moduli di Indexing, il motore di ricerca, il sistema di gestione delle Annotazioni, il Semantic Mapper e i due moduli che esso utilizza, vale a dire il modulo di gestione dell ontologia e quello di gestione delle rappresentazioni lessicali. Questi moduli sono stati integrati con il modulo S.E.R. realizzato da Gabriele Zunino. Durante la realizzazione sono stati pensati possibili sviluppi futuri, che troveranno posto tra le Conclusioni. 55

61 5. I Toolkit e le Librerie utilizzate 5.1. Jena Jena è una API Java per creare e manipolare modelli RDF. Comprende una vasta quantità di moduli che supportano diversi formati per analizzare e scrivere dati RDF, metodi per modificare e effettuare query su modelli RDF, e utilità per memorizzare i dati RDF su diversi supporti come file o database. Include anche una API per l utilizzo di ontologie DAML espresse su RDF. Lo sviluppo è stato portato avanti dai programmatori del gruppo Semantic Web di HP, e la licenza con cui Jena è distribuita è quella dell open-source La API RDF Il cuore di Jena è una API per manipolare collezioni di statement RDF (uno statement è l insieme di una risorsa, una proprietà e il valore di essa), chiamati Modelli. Essa supporta: Metodi incentrati sugli statement per manipolare modelli RDF come set di triple RDF. Metodi incentrati sulle risorse per manipolare modelli RDF come set di risorse dotate di proprietà. Chiamate a metodi in cascata per una rapida programmazione Supporto completo per i contenitori RDF: bag, alt, e seq. Risorse avanzate: l applicazione può estendere il comportamento di esse. Supporto per il formato RDF/XML sia nella analisi che nella scrittura (pretty printing). 56

62 Supporto per il formato N3. Supporto per il formato NTriple. Disegno modulare che utilizza interfacce Java per consentire agli sviluppatori di estendere e migliorare arbitrariamente la API Parser ARP Il parser RDF di cui fa uso Jena si chiama ARP ( Another RDF Parser ) ed è stato assorbito dal gruppo di sviluppatori di Jena che ne avevano apprezzato le qualità. Esso è totalmente compatibile con la sintassi RDF/XML, ed ha un architettura modulare basata sull Infoset di XML. Queste sono le sue caratteristiche: È compatibile con i più recenti sviluppi e working draft di RDF/XML. Controlla e verifica i dati secondo i principali standard e raccomandazioni del W3Consortium, compresi i tag del linguaggio (xml:lang), le URI e il formato di esse, tutte le proprietà, e i literals secondo il loro namespace. Gestisce gli errori e le eccezioni in modo altamente configurabile. È basato su Xerces. È compatibile sia con XML/RDF a sé stante sia inserito in altre strutture-dati. È sviluppato per leggere anche file di grandi dimensioni Il linguaggio di query RDQL RDQL è una implementazione di un linguaggio di query molto simile all SQL. Esso considera gli RDF come dati e li tratta considerandoli triple su cui effettuare interrogazioni. Ciò 57

63 permette uno scripting molto più snello e avanzato, anche attraverso linea di comando La API DAML La API DAML è un esempio della modularità di Jena, in quanto si basa su essa e aggiunge la possibilità di processare documenti in formato DAML+OIL. Essa supporta: Utili metodi per accedere a proprietà e classi standard DAML+OIL. Riconoscimento di vocabolari multipli (come il DAML+OIL 2000/12 e il DAML+OIL 2001/03). Gerarchia di classi trasversale e uso della relazione di sottoclasse per le query. Utilità di traduzione per il mapping tra tipi di dato XSD e oggetti Java. Supporto per le proprietà transitive e inverse Database relazionali Tra le caratteristiche di Jena più rilevanti, bisogna sottolineare la possibilità di utilizzare tra i supporti di memorizzazione dei dati i database relazionali; in particolare sono supportati il Sleepycat Berkeley db (senz altro il più rapido, anche se non possiede un supporto completo a tutti i tipi di transazioni), MySQL, PostgreSQL e Oracle. Le possibilità di configurazione sono molto elevate, ed è ovviamente possibile l interazione tra memoria e database per ottenere i vantaggi della velocità della memoria e della persistenza dei database Jena2 Dopo aver diffusamente descritto le caratteristiche di questo completo toolkit, è necessario citare anche quali saranno gli sviluppi futuri. 58

64 Nella realizzazione di questo progetto si è scelto, fin dall uscita della prima preview version (ora siamo alla terza), di adottare l ultima versione, anche se non definitiva, come libreria. Infatti, dopo attenta analisi si è giudicato completamente stabile il comportamento e l esecuzione dei diversi moduli, e si è perciò preferito iniziare una transizione che potrà dirsi completa solo con l uscita e con la completa adozione della versione definitiva di Jena2. Le differenze tra la versione precedente (la 1.6.1) e la attuale (2p3) sono tali e tante da renderne inutile una descrizione; è sufficiente sapere che la scrittura del codice è ora molto più agevole e snella, è migliorata la gestione dei database e sono state eliminate alcune implementazioni e librerie che destavano confusione negli sviluppatori. Per concludere questa nota, citiamo quali dovrebbero essere le tappe della roadmap che dovrebbe portare al completamento di Jena2: a fine giugno verrà rilasciata l ultima Preview Version di Jena (2p4), il 14 luglio sarà il momento della prima e unica Release Candidate, e il 20 agosto vedrà finalmente la luce la versione definitiva di Jena2. La versione precedente (Jena 1.6.1) verrà a quel punto deprecata XML-RPC Per permettere ai moduli distribuiti di dialogare tra loro, è stato necessario implementare delle funzioni che permettessero l uso dello stack protocollare TCP/IP, e in particolare di alcune funzioni di livello 5 (Applicazione). La scelta di quale protocollo utilizzare è caduta su XML- RPC, la cui semplicità e allo stesso tempo completezza ha permesso di ottenere i risultati cercati. 59

65 RPC (Remote Procedure Call) è una semplice estensione del concetto di chiamata a procedura, consente cioè l interazione tra procedure di applicazioni diverse oppure che girano su macchine distinte. Ha ovviamente dei limiti maggiori nel passaggio dei parametri e del risultato della funzione (non permette il passaggio di dati complessi, quali variabili puntatori a memoria, o dati complessi non serializzabili), e richiede maggior tempo di esecuzione rispetto a quanto si avrebbe eseguendola in locale. Inoltre permette il dialogo tra macchine di tipo diverso, siano esse Unix o Windows. Il protocollo XML-RPC (extensible Markup Language RPC) definisce una modalità attraverso la quale le risposte e le richieste RPC sono serializzate in documenti XML e inviate attraverso una connessione HTTP. XML-RPC offre un semplice approccio per la creazione di un elenco di parametri per una chiamata di metodo. Ogni parametro comprende un elemento che descrive il tipo di parametro ed il reale contenuto dell elemento. Il successo di XML-RPC è dovuto al fatto che ha risolto il 90% delle difficoltà insite nell RPC dando agli sviluppatori le possibilità di cui avevano bisogno. Ha ignorato il 10% dei problemi che causavano il 90% della complessità nei precedenti sistemi RPC. Le caratteristiche ignorate comprendono la garbage collection, stub e scheletri di oggetti, la serializzazione degli oggetti e molti altri di non vasto uso. Ciò che offre è un mezzo agile e facile da comprendere per gli sviluppatori per inviare un nome di un metodo e una lista di argomenti da un sistema all altro. Dal successo avuto, emerge che è il solo aspetto necessario in molti sistemi attuali. Oramai è un protocollo diffuso, ed esistono librerie e toolkit per implementare XML-RPC in praticamente tutti i linguaggi di programmazione. 60

66 Chiamata XML-RPC Una chiamata XML-RPC viene gestita da due parti software: il client (che esegue la chiamata e la riceve) ed il server (che risponde alla chiamata). Questi sono i passaggi di uno scambio XML-RPC: Il client si attiva per interrogare un server remoto Il client impacchetta i dati in formato XML e li invia al server via HTTP col metodo POST Il server HTTP ricevuta la richiesta POST la passa ad un listener XML-RPC Il listener fa il parsing XML e ne ricava le informazioni sul nome della procedura chiamata e sui parametri da passargli La procedura eseguita restituisce una risposta che viene impacchettata dal server XML-RPC come XML Il server invia la risposta al client Il client XML-RPC fa il parsing dell'xml, estrae la risposta del server Il programma client elabora la risposta Tipi di dato I dati in XML-RPC sono impacchettati in codice XML ed ogni dato di richiesta o risposta è posto tra tag. I tipi supportati sono: Numeri interi Numeri float a doppia precisione Valori booleani <value><int>n</int></value> o <value><i4>n</i4></value> <value><double>n</double></value> <value><boolean>1</boolean></value> 61

67 Stringhe Date e ore Binari Array Struct <value><string>testo</string></value> o <value>testo</value> <value> <datetime.iso8601> AAAAMMGGTHH:MM:SS </datetime.iso8601> </value> <value><base64>uehqifbpv0vs</base64></value> <value> <array> <data> <value><int> 1 </int></value> <value><int> 2 </int></value> </data> </array> </value> <value> <struct> <member> <name>sito</name> <value> <string></string> <value> </member> <member> <name>links</name> <value><array> <data> <value><int>1</int></value> <value><int>2</int></value> </data> </array> </value> </member> </struct> </value> Formato Un tipico pacchetto XML-RPC contiene un header, in cui si specificano informazioni inerenti il trasferimento del messaggio, ed un body, in formato XML, contenente il messaggio vero e proprio. Negli esempi seguenti analizzeremo un esempio di 62

68 richiesta XML-RPC, un esempio di risposta ed un esempio di segnalazione di errore. POST /RPC2 HTTP/1.0 User-Agent: Frontier/5.1.2 (WinNT) Host: betty.userland.com Content-Type: text/xml Content-Length: 181 <?xml version="1.0"?> <methodcall> <methodname>examples.getstatename</methodname> <params> <param> <value><i4>41</i4></value> </param> </params> </methodcall> Informazioni contenute nell header: nella prima riga dell header non è necessario specificare il formato della URI, che può contenere informazioni circa l instradamento della richiesta (nell esempio /RPC2), oppure essere vuoto; mentre sono obbligatori i campi User-Agent ed Host; il campo Content-Type è di tipo text/xml (il payload contiene testo e, in particolare, XML) e il campo Content- Length deve essere specificato in modo corretto ed indica la lunghezza del payload. Formato del payload: in XML il payload è una singola struttura <methodcall>, che deve contenere un sotto-elemento <methodname> e qualora la procedura richiedesse dei parametri la <methodcall> deve contenere il sotto-elemento <params> che a sua volta può contenere un qualsiasi numero di <param> ciascuno con un proprio <value>. I parametri passati alla procedura 63

69 possono essere anche strutture dati di tipo più complesso, come vettori. Consideriamo ora una risposta: HTTP/ OK Connection: close Content-Length: 158 Content-Type: text/xml Date: Fri, 17 Jul :55:08 GMT Server: UserLand Frontier/5.1.2-WinNT <?xml version="1.0"?> <methodresponse> <params> <param> <value><string>south Dakota</string></value> </param> </params> </methodresponse> Se non ci sono errori di basso livello allora viene sempre restituito 200 OK. Il campo Content-Type può essere di tipo text/xml; il campo Content-Length deve essere presente e, ovviamente, corretto. Il Body della risposta è una singola struttura XML, una <methodresponse> che può contenere un sotto-elemento <params>, che a sua volta contiene un unico <param> ed il suo corrispondente <value>. Il valore restituito dalla procedura eseguita sul server remoto viene formattato in XML. Nel caso in cui avvenga un errore, la risposta sarà invece del tipo seguente. 64

70 HTTP/ OK Connection: close Content-Length: 426 Content-Type: text/xml Date: Fri, 17 Jul :55:02 GMT Server: UserLand Frontier/5.1.2-WinNT <?xml version="1.0"?> <methodresponse> <fault> <value> <struct> <member> <name>faultcode</name> <value><int>4</int></value> </member> <member> <name>faultstring</name> <value><string>too many parameters.</string></value> </fault> </value> </member> </struct> </methodresponse> In questo caso la <methodresponse> contiene il sottoelemento <fault> che contiene un <value> che è una <struct> contenente due elementi uno chiamato <faultcode> (di tipo int) e uno chiamato <faultstring> (di tipo string). Una <methodresponse> non può contenere sia l elemento <fault>, sia l elemento <params>. È importante notare che una chiamata XML-RPC deve restitiuire un dato, e questo implica che le funzioni void di Java vadano modificate perché possano restituire perlomeno un valore booleano. 65

71 Apache XML-RPC Apache XML-RPC è una implementazione Java di XML- RPC, precedentemente conosciuta con il nome di Helma XML- RPC e poi assorbita da Apache. Sebbene ancora non completa e non priva di bug, questa libreria si è rivelata sufficientemente stabile e funzionale all uso che ne è stato fatto. In particolare, bug sono stati rilevati nell uso delle porte di connessione e nella codifica di caratteri accentati: il primo problema è dovuto al fatto che ogni nuova connessione (indipendentemente dal fatto che sia stato impostato il parametro HTTPKeepAlive a true o false) utilizza una nuova porta, eccedendo rapidamente il massimo numero di porte utilizzabili; il secondo bug è dovuto invece alla cattiva gestione (o meglio alla non gestione) delle lettere accentate e di alcuni altri caratteri: quando viene passata come parametro di una chiamata XML-RPC una stringa contenente lettere accentate, viene generata l eccezione XmlRpcException. Questo è dovuto, in parte, a un limite intrinseco del protocollo XML- RPC cha accetta come caratteri solamente gli ASCII; ci saremmo però aspettati che questa libreria operasse automaticamente una mappatura dei caratteri non presenti nel charset ASCII (ad esempio è potrebbe diventare è così come succede in HTML). Essa fa uso di SAX 1.0 e dunque può utilizzare qualunque parser XML che lo supporti. Di default usa il parser MinML (John Wilson), che per l utilizzo del pacchetto è l ideale in quanto è rapido, leggero e offre esattamente le funzionalità richieste. Apache XML-RPC offre principalmente due classi standard come Client e altrettante come Server. Vediamone rapidamente il funzionamento e l utilizzo: 66

72 XmlRpcClient usa il client HTTP standard di Java (java.net.urlconnection) XmlRpcClientLite è l implementazione propria del pacchetto, più leggera ma senza il supporto di funzionalità HTTP avanzate quali Proxy e così via. Entrambe le classi offrono la medesima interfaccia, che include metodi per chiamate sincrone e asincrone. A livello di server abbiamo invece la classe WebServer e la classe XmlRpcServer. La prima fornisce complete funzionalità di server XML-RPC, mentre la seconda di fatto non apre porte di ascolto ma va associata a un server web esistente. Brevemente il funzionamento è questo: una volta creata la classe server e posta in ascolto ad una ben determinata porta, viene associata ad essa uno o più handler delle richieste, attraverso il metodo addhandler. Tali handler vengono identificati da una stringa. Se come handler viene impostato lo stesso oggetto chiamante (this), l interfaccia server provvede ad associare alle funzioni chiamate in remoto le funzioni con lo stesso nome e gli stessi parametri in locale. Il client, impostato per parlare alla stessa porta impostata sul server, chiama le procedure remote attraverso il metodo execute che ha come parametri la stringa corrispondente all handler chiamato (handler.metodo) e come parametri un Vector contenente i parametri della richiesta. I parametri della richiesta e della risposta vengono tradotti tra Java e XML-RPC secondo la seguente tabella. 67

73 Tipo di dato XML- RPC Tipo di dato generato dal parser Tipi di dato attesi dall handler <i4> o <int> java.lang.integer int <boolean> java.lang.boolean boolean <string> java.lang.string java.lang.string <double> java.lang.double double <datetime.iso8601> java.util.date java.util.date <struct> java.util.hashtable java.util.hashtable <array> java.util.vector java.util.vector <base64> byte[ ] byte[ ] 5.3. Snowball Snowball è la libreria di stemming utilizzata dal modulo di Semantic Mapper. Definire Snowball una libreria è sicuramente riduttivo: esso fornisce un vero e proprio linguaggio per la programmazione di algoritmi relativi alla derivazione lessicale. Gli stemmer algoritmici continuano ad avere una grande importanza e utilità per l Information Retrieval, e, nonostante la promessa di essere superati dagli stemmer basati su dizionario, tale sorpasso a livello di performance non è ancora avvenuto. Esistono però poche descrizioni di algoritmi di stemming, e anche quando ci sono essi sono spesso fonte di cattive interpretazioni da parte degli sviluppatori. A partire da questi presupposti è nato Snowball, un linguaggio entro il quale algoritmi di stemming possono essere precisamente definiti, e da cui è poi possibile generare codice in Ansi C o, come nel nostro caso, in Java. 68

74 Snowball comprende comunque diversi algoritmi per diverse lingue, e pertanto, se non consideriamo esso stesso un linguaggio di programmazione e tenendo conto dell uso che se ne è fatto nella realizzazione di questo progetto, possiamo chiamarlo libreria. Il concetto di stemming non è applicabile a tutte le lingue; per esempio non è possibile ricavare la radice lessicale di parole cinesi, ma è comunque applicabile alla stragrande maggioranza delle lingue parlate. Assumendo che la scrittura avvenga da sinistra verso destra, la radice della parola è verso la sinistra della stessa, mentre alla destra uno o più suffissi possono essere aggiunti. All inizio della parola è possibile trovare dei prefissi, ma solitamente questi alterano il significato della parola radicalmente, e pertanto sarebbe dannoso eliminarli. È necessaria una più precisa distinzione tra radice e stem di una parola. Definiamo lo stem come il risultato del processo di stemming, e la radice come la parola all interno dello stem da cui esso stesso etimologicamente deriva. Lo stem non è necessariamente una parola di senso compiuto Tecnica di funzionamento Possiamo separare i suffissi in tre sottoclassi, che chiameremo suffissi di tipo a, di tipo i, e di tipo d. Il suffisso di tipo a (attached) è una parola-particella unita alla parola principale. Nella nostra lingua, per esempio, sono suffissi di tipo a i due suffissi del termine mandarglielo (mandare + gli + lo). Il suffisso di tipo i (inflectional) è un suffisso base della grammatica del linguaggio in esame, ed è applicabile a tutte le parole di un certo tipo grammaticale, con poche eccezioni. Ad esempio, in inglese il passato di un verbo si forma tipicamente 69

75 aggiungendo il suffisso -ed (con eventuali eccezioni in parte gestibili dall algoritmo); oppure in italiano gli avverbi spesso si costruiscono posponendo -mente al relativo aggettivo. Il suffisso di tipo d (derivational) crea una nuova parola, spesso con un senso differente dall originale. La possibilità o meno di unire un suffisso di questo tipo a una parola non dipende dalle regole grammaticali, ma dal dizionario. In inglese, -ness può essere aggiunto ad alcuni aggettivi per formare i corrispondenti pronomi (kind + ness = kindness), ma ciò non vale per tutti gli aggettivi (es. big). I suffissi di tipo d possono variare la connotazione di una parola, per esempio in italiano il suffisso -astro crea una forma dispregiativa (medico + astro = medicastro). Come si può intuire, il confine tra i suffissi di tipo i e d è labile e non è sempre possibile classificare con sicurezza un suffisso in una categoria piuttosto che nell altra. Normalmente i suffissi dei diversi tipi compaiono nell ordine d-i-a, possiamo perciò aspettarci di rimuoverli nell ordine inverso da destra a sinistra. Due parole diverse che hanno lo stesso stem si definiscono conflated (combinate). Ulteriori difficoltà nascono dal concetto stesso di parola e lettera. Nella maggior parte dei linguaggi europei e derivati, una parola è una sequenza di lettere compresa tra due caratteri che non siano lettere. Ma in inglese, o in olandese, gli apostrofi, pur non essendo lettere, non sono determinanti per definire i confini di una parola. Le lettere formano le parole, ma differenti linguaggi utilizzano lettere diverse, con un ulteriore confusione causata dalle lettere accentate. Per non parlare dei linguaggi che usano alfabeti diversi, come il russo con l alfabeto cirillico. 70

76 Infine, spesso lettere accentate, quando scritte in maiuscolo, vengono scritte con l apostrofo anziché l accento L algoritmo di stemming per la lingua italiana L italiano può includere le seguenti forme accentate: á é í ó ú à è ì ò ù Prima vengono sostituiti tutti gli accenti acuti con accenti gravi. Poi viene messa la u dopo ogni q, inoltre u e i tra le vocali vengono messe in maiuscolo. Poiché tutte le lettere vengono per prima cosa forzate in minuscolo, metterle in maiuscolo è utile per marcarle, con lo stesso utilizzo di un flag. Le vocali sono dunque a e i o u à è ì ò ù Definiamo R1 la parte di parola dopo la prima consonante a seguito di una vocale, o lo spazio nullo se non c è nessuna consonante alla fine della parola. Definiamo R2 lo spazio dopo la prima consonante a seguito di una vocale in R1, o lo spazio nullo se non c è nessuna consonante alla fine della parola. Se la seconda lettera di una parola è una consonante, RV è lo spazio dopo la vocale successiva; oppure se le prime due lettere sono vocali, allora RV è lo spazio dopo la successiva consonante; altrimenti (ossia nel caso la prima lettera sia una consonante e la seconda una vocale) RV è lo spazio dopo la terza lettera. Step 0 dell algoritmo. Vengono ora rimossi i pronomi suffissi di tipo a, cercando il più lungo tra i seguenti ci gli la le li lo mi ne si ti vi sene gliela gliele glieli glielo gliene mela mele meli melo mene tela tele teli telo tene cela cele celi celo cene vela vele veli velo vene 71

77 che segua uno tra a) ando endo b) ar er ir all interno dello spazio RV. Nel caso (a) il suffisso è cancellato, nel caso (b) esso è rimpiazzato da e. Dunque, ad esempio parlandogli diventa parlando, e accomodarci accomodare. Step 1 dell algoritmo. Per rimuovere i suffissi standard, viene ricercato il più lungo tra i seguenti anza anze ico ici ica ice iche ichi ismo ismi abile abili ibile ibili ista iste isti istà istè istì oso osi osa ose mente atrice atrici azione azioni atore atori icazione icazioni icatore icatori e viene cancellato se si trova in R2; logia logie vengono sostituite da log se si trovano in R2; uzione uzioni usione usioni vengono sostituite da u se in R2; enza enze sostituite da ente se in R2; amento amenti imento imenti vengono cancellate se in RV; amente viene cancellata se in R1, se preceduto da iv o ativ, viene cancellata da R2, altrimenti, se precedute da os ic o abil vengono cancellate se in R2; ità viene cancellata in R2 se preceduta da abil ic o iv; ivo ivi iva ive vengono cancellate da R2, e se precedute da at o itac vengono parimenti cancellate. Step 2 dell algoritmo Lo step 2 viene eseguito solo nel caso lo step 1 non abbia avuto alcun effetto. Vengono rimossi i seguenti suffissi verbali: ammo ando ano are arono asse assero assi assimo ata ate ati ato ava avamo avano avate avi avo emmo enda ende endi endo erà 72

78 erai eranno ere erebbe erebbero erei eremmo eremo ereste eresti erete erò erono essero ete eva evamo evano evate evi evo Yamo iamo immo irà irai iranno ire irebbe irebbero irei iremmo iremo ireste iresti irete irò irono isca iscano isce isci isco iscono issero ita ite iti ito iva ivamo ivano ivate ivi ivo ono uta ute uti uto ar er Step 3a e 3b dell algoritmo Viene cancellata la finale a e i o à è ì ò se si trova in RV e anche la i che eventualmente la preceda. Viene sostituita la finale ch o gh con c o g in RV. Infine, riportare I e U a minuscole. 73

79 Un esempio di stemming parola stem parola stem abbandonata abbandonate abbandonati abbandonato abbandonava abbandonerà abbandoneranno abbandonerò abbandono abbandonò abbaruffato abbassamento abbassando abbassandola abbassandole abbassar abbassare abbassarono abbassarsi abbassassero abbassato abbassava abbassi abbassò abbastanza abbatté abbattendo abbattere abbattersi abbattesse abbatteva abbattevamo abbattevano abbattimento abbattuta abbattuti abbattuto abbellita abbenché abbi => abbandon abbandon abbandon abbandon abbandon abbandon abbandon abbandon abband abbandon abbaruff abbass abbass abbass abbass abbass abbass abbass abbass abbass abbass abbass abbass abbass abbast abbatt abbatt abbatt abbatt abbattess abbatt abbatt abbatt abbatt abbatt abbatt abbatt abbell abbenc abbi pronto pronuncerà pronuncia pronunciamento pronunciare pronunciarsi pronunciata pronunciate pronunciato pronunzia pronunziano pronunziare pronunziarle pronunziato pronunzio pronunziò propaga propagamento propaganda propagare propagarla propagarsi propagasse propagata propagazione propaghino propalate propende propensi propensione propini propio propizio propone proponendo proponendosi proponenti proponeva proponevano proponga => pront pronunc pronunc pronunc pronunc pronunc pronunc pronunc pronunc pronunz pronunz pronunz pronunz pronunz pronunz pronunz propag propag propagand propag propag propag propag propag propag propaghin propal prop propens propension propin prop propiz propon propon propon proponent propon propon propong

80 6. Implementazione La prima scelta spesso non facile quando si vuole realizzare un progetto come quello presentato nel capitolo precedente, è senz altro quella del linguaggio di programmazione. La scelta in questo caso è caduta abbastanza rapidamente sul Java grazie alle sue doti di portabilità e estensibilità. Inoltre è forse il linguaggio su cui sono sviluppate il maggior numero di librerie che era possibile utilizzare. Anche tutte le altre scelte, come vedremo nel dettaglio, sono state fatte ponendo un occhio di riguardo alla portabilità e all interoperabilità tra le risorse Classi e metodi principali Vedremo ora le classi Java realizzate, le loro funzionalità e nel dettaglio alcuni dei loro metodi principali. Si è scelto di procedere nella descrizione a partire dalle classi di più basso livello (se così si può dire) all interno dell applicazione per poi salire verso le classi di livello più alto che fanno uso delle prime e che forniscono l interfaccia verso l esterno. Infatti, come mostrato dal diagramma successivo, le classi Indexer e SearchEngine fanno uso dell Annotation Repository (la cui classe in questa implementazione si chiama Annotations), del SemanticMapper, e del modulo S.E.R. (Substructure Extractor and Retriever). Questo è l unico modulo ad interagire col web. Il modulo SemanticMapper fa uso della classe Ontology (che gestisce appunto l ontologia) e della classe Syn (che fornisce il supporto per le Lexical Entities). Le uniche classi che vanno ad interagire quindi con modelli RDF(S) sono dunque solamente Annotations, Syn, e Ontology. 75

81 Figura 8 - L'implementazione Ontology La classe che utilizza e gestisce la tassonomia dei concetti è la classe Ontology. L ontologia è stata realizzata attraverso Protégé-2000, un applicazione realizzata dall Università di Stanford che permette di costruire un ontologia, permette l implementazione di form per l acquisizione di dati e conoscenza e la successiva manipolazione di tale conoscenza. Protégé è una piattaforma estremamente estendibile grazie all elevato supporto fornito e alla possibilità di implementare moduli esterni come plugin. L ontologia così creata è stata salvata in formato RDF e RDF-Schema, in alternativa al formato OWL che ancora non è standard W3C. Quando (e se) lo diventerà, grazie alla 76

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell

Dettagli

connessioni tra i singoli elementi Hanno caratteristiche diverse e sono presentati con modalità diverse Tali relazioni vengono rappresentate QUINDI

connessioni tra i singoli elementi Hanno caratteristiche diverse e sono presentati con modalità diverse Tali relazioni vengono rappresentate QUINDI Documenti su Internet LINGUAGGI DI MARKUP Internet permette (tra l altro) di accedere a documenti remoti In generale, i documenti acceduti via Internet sono multimediali, cioè che possono essere riprodotti

Dettagli

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

Dettagli

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4)

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4) Architettura del WWW World Wide Web Sintesi dei livelli di rete Livelli di trasporto e inferiori (Livelli 1-4) - Connessione fisica - Trasmissione dei pacchetti ( IP ) - Affidabilità della comunicazione

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

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

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi Indice generale OOA Analisi Orientata agli Oggetti Introduzione Analisi Metodi d' analisi Analisi funzionale Analisi del flusso dei dati Analisi delle informazioni Analisi Orientata agli Oggetti (OOA)

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

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

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it MODELLO CLIENT/SERVER Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it POSSIBILI STRUTTURE DEL SISTEMA INFORMATIVO La struttura di un sistema informativo

Dettagli

Il database management system Access

Il database management system Access Il database management system Access Corso di autoistruzione http://www.manualipc.it/manuali/ corso/manuali.php? idcap=00&idman=17&size=12&sid= INTRODUZIONE Il concetto di base di dati, database o archivio

Dettagli

Gli attributi di STUDENTE saranno: Matricola (chiave primaria), Cognome, Nome.

Gli attributi di STUDENTE saranno: Matricola (chiave primaria), Cognome, Nome. Prof. Francesco Accarino Raccolta di esercizi modello ER Esercizio 1 Un università vuole raccogliere ed organizzare in un database le informazioni sui propri studenti in relazione ai corsi che essi frequentano

Dettagli

Strutturazione logica dei dati: i file

Strutturazione logica dei dati: i file Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer

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

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Dettagli

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci Corso di Laurea Magistrale in Ingegneria per l Ambiente e il Territorio A.A. 2014-2015 Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci Strutture di dati: DB e DBMS DATO E INFORMAZIONE Dato: insieme

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

I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due:

I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due: Il modello relazionale I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due: 1. forniscono sistemi semplici ed efficienti per rappresentare

Dettagli

Introduzione all Information Retrieval

Introduzione all Information Retrieval Introduzione all Information Retrieval Argomenti della lezione Definizione di Information Retrieval. Information Retrieval vs Data Retrieval. Indicizzazione di collezioni e ricerca. Modelli per Information

Dettagli

Soluzione dell esercizio del 2 Febbraio 2004

Soluzione dell esercizio del 2 Febbraio 2004 Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo

Dettagli

Archivi e database. Prof. Michele Batocchi A.S. 2013/2014

Archivi e database. Prof. Michele Batocchi A.S. 2013/2014 Archivi e database Prof. Michele Batocchi A.S. 2013/2014 Introduzione L esigenza di archiviare (conservare documenti, immagini, ricordi, ecc.) è un attività senza tempo che è insita nell animo umano Primi

Dettagli

BASI DI DATI per la gestione dell informazione. Angelo Chianese Vincenzo Moscato Antonio Picariello Lucio Sansone

BASI DI DATI per la gestione dell informazione. Angelo Chianese Vincenzo Moscato Antonio Picariello Lucio Sansone BASI DI DATI per la gestione dell informazione Angelo Chianese Vincenzo Moscato Antonio Picariello Lucio Sansone Libro di Testo 22 Chianese, Moscato, Picariello e Sansone BASI DI DATI per la Gestione dell

Dettagli

Capitolo 4 Pianificazione e Sviluppo di Web Part

Capitolo 4 Pianificazione e Sviluppo di Web Part Capitolo 4 Pianificazione e Sviluppo di Web Part Questo capitolo mostra come usare Microsoft Office XP Developer per personalizzare Microsoft SharePoint Portal Server 2001. Spiega come creare, aggiungere,

Dettagli

Database 1 biblioteca universitaria. Testo del quesito

Database 1 biblioteca universitaria. Testo del quesito Database 1 biblioteca universitaria Testo del quesito Una biblioteca universitaria acquista testi didattici su indicazione dei professori e cura il prestito dei testi agli studenti. La biblioteca vuole

Dettagli

Generazione Automatica di Asserzioni da Modelli di Specifica

Generazione Automatica di Asserzioni da Modelli di Specifica UNIVERSITÀ DEGLI STUDI DI MILANO BICOCCA FACOLTÀ DI SCIENZE MATEMATICHE FISICHE E NATURALI Corso di Laurea Magistrale in Informatica Generazione Automatica di Asserzioni da Modelli di Specifica Relatore:

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

Working Draft 0.5 (Telefonia)

Working Draft 0.5 (Telefonia) Working Draft 0.5 (Telefonia) Abstract Lo scopo del progetto è lo sviluppo di un SCP (Semantic Collaborative Portal), cioè un sistema di visualizzazione di una banca dati documentaria di grandi dimensioni

Dettagli

Linguaggi per il web oltre HTML: XML

Linguaggi per il web oltre HTML: XML Linguaggi per il web oltre HTML: XML Luca Console Con XML si arriva alla separazione completa tra il contenuto e gli aspetti concernenti la presentazione (visualizzazione). XML è in realtà un meta-formalismo

Dettagli

URI. Introduzione. Pag. 1

URI. Introduzione. Pag. 1 URI Introduzione Gli URI (Universal Resource Indentifier) sono una sintassi usata in WWW per definire i nomi e gli indirizzi di oggetti (risorse) su Internet. Questi oggetti sono considerati accessibili

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

La Metodologia adottata nel Corso

La Metodologia adottata nel Corso La Metodologia adottata nel Corso 1 Mission Statement + Glossario + Lista Funzionalià 3 Descrizione 6 Funzionalità 2 Schema 4 Schema 5 concettuale Logico EA Relazionale Codice Transazioni In PL/SQL Schema

Dettagli

Reti di Calcolatori. Il Livello delle Applicazioni

Reti di Calcolatori. Il Livello delle Applicazioni Reti di Calcolatori Il Livello delle Applicazioni Il DNS Gli indirizzi IP sono in formato numerico: sono difficili da ricordare; Ricordare delle stringhe di testo è sicuramente molto più semplice; Il Domain

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Dettagli

Informatica per la comunicazione" - lezione 10 -

Informatica per la comunicazione - lezione 10 - Informatica per la comunicazione" - lezione 10 - Evoluzione del Web" Nell evoluzione del Web si distinguono oggi diverse fasi:" Web 1.0: la fase iniziale, dal 1991 ai primi anni del 2000" Web 2.0: dai

Dettagli

Basi di dati. (Sistemi Informativi) teoria e pratica con Microsoft Access. Basi di dati. Basi di dati. Basi di dati e DBMS DBMS DBMS

Basi di dati. (Sistemi Informativi) teoria e pratica con Microsoft Access. Basi di dati. Basi di dati. Basi di dati e DBMS DBMS DBMS Basi di Basi di (Sistemi Informativi) Sono una delle applicazioni informatiche che hanno avuto il maggiore utilizzo in uffici, aziende, servizi (e oggi anche sul web) Avete già interagito (magari inconsapevolmente)

Dettagli

Automazione Industriale (scheduling+mms) scheduling+mms. adacher@dia.uniroma3.it

Automazione Industriale (scheduling+mms) scheduling+mms. adacher@dia.uniroma3.it Automazione Industriale (scheduling+mms) scheduling+mms adacher@dia.uniroma3.it Introduzione Sistemi e Modelli Lo studio e l analisi di sistemi tramite una rappresentazione astratta o una sua formalizzazione

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

MODELLO RELAZIONALE. Introduzione

MODELLO RELAZIONALE. Introduzione MODELLO RELAZIONALE Introduzione E' stato proposto agli inizi degli anni 70 da Codd finalizzato alla realizzazione dell indipendenza dei dati, unisce concetti derivati dalla teoria degli insiemi (relazioni)

Dettagli

Modellazione dei dati in UML

Modellazione dei dati in UML Corso di Basi di Dati e Sistemi Informativi Modellazione dei dati in UML Angelo Montanari Dipartimento di Matematica e Informatica Università degli Studi di Udine Introduzione UML (Unified Modeling Language):

Dettagli

I WEBQUEST SCIENZE DELLA FORMAZIONE PRIMARIA UNIVERSITÀ DEGLI STUDI DI PALERMO. Palermo 9 novembre 2011

I WEBQUEST SCIENZE DELLA FORMAZIONE PRIMARIA UNIVERSITÀ DEGLI STUDI DI PALERMO. Palermo 9 novembre 2011 I WEBQUEST SCIENZE DELLA FORMAZIONE PRIMARIA Palermo 9 novembre 2011 UNIVERSITÀ DEGLI STUDI DI PALERMO Webquest Attività di indagine guidata sul Web, che richiede la partecipazione attiva degli studenti,

Dettagli

1. BASI DI DATI: GENERALITÀ

1. BASI DI DATI: GENERALITÀ 1. BASI DI DATI: GENERALITÀ BASE DI DATI (DATABASE, DB) Raccolta di informazioni o dati strutturati, correlati tra loro in modo da risultare fruibili in maniera ottimale. Una base di dati è usualmente

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

Capitolo 5. Cercare informazioni sul Web

Capitolo 5. Cercare informazioni sul Web Capitolo 5 Cercare informazioni sul Web Cercare nel posto giusto Posti logici e noti per reperire informazioni sui nostri contributi pensionistici, chiediamo all INPS Biblioteche on-line La maggior parte

Dettagli

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico MANUALE MOODLE STUDENTI Accesso al Materiale Didattico 1 INDICE 1. INTRODUZIONE ALLA PIATTAFORMA MOODLE... 3 1.1. Corso Moodle... 4 2. ACCESSO ALLA PIATTAFORMA... 7 2.1. Accesso diretto alla piattaforma...

Dettagli

Database: collezione di fatti, registrabili e con un ben preciso significato, relazionati fra di loro

Database: collezione di fatti, registrabili e con un ben preciso significato, relazionati fra di loro Database relazionali: un'introduzione Database: collezione di fatti, registrabili e con un ben preciso significato, relazionati fra di loro Rappresentazione astratta di aspetti del mondo reale (Universe

Dettagli

Capitolo 2. Operazione di limite

Capitolo 2. Operazione di limite Capitolo 2 Operazione di ite In questo capitolo vogliamo occuparci dell operazione di ite, strumento indispensabile per scoprire molte proprietà delle funzioni. D ora in avanti riguarderemo i domini A

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T2 3-Compilatori e interpreti 1 Prerequisiti Principi di programmazione Utilizzo di un compilatore 2 1 Introduzione Una volta progettato un algoritmo codificato in un linguaggio

Dettagli

ESERCITAZIONE Semplice creazione di un sito Internet

ESERCITAZIONE Semplice creazione di un sito Internet ESERCITAZIONE Semplice creazione di un sito Internet Sistemi e Tecnologie Informatiche - Prof. Gregorio Cosentino 1 Internet Una rete globale che connette milioni di computer in tutto il mondo, anarchica

Dettagli

extensible Markup Language

extensible Markup Language XML a.s. 2010-2011 extensible Markup Language XML è un meta-linguaggio per definire la struttura di documenti e dati non è un linguaggio di programmazione un documento XML è un file di testo che contiene

Dettagli

Basi di Dati Multimediali. Fabio Strocco

Basi di Dati Multimediali. Fabio Strocco Basi di Dati Multimediali Fabio Strocco September 19, 2011 1 Contents 2 Introduzione Le basi di dati (o database) hanno applicazioni in molti campi, in cui è necessario memorizzare, analizzare e gestire

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

Programma del Corso. Dati e DBMS SQL. Progettazione di una. Normalizzazione

Programma del Corso. Dati e DBMS SQL. Progettazione di una. Normalizzazione Programma del Corso Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Normalizzazione (I prova scritta) (II prova scritta) Interazione fra linguaggi di programmazione e basi di dati Cenni

Dettagli

Esercizio data base "Biblioteca"

Esercizio data base Biblioteca Rocco Sergi Esercizio data base "Biblioteca" Database 2: Biblioteca Testo dell esercizio Si vuole realizzare una base dati per la gestione di una biblioteca. La base dati conterrà tutte le informazioni

Dettagli

Addition X DataNet S.r.l. www.xdatanet.com www.xdatanet.com

Addition X DataNet S.r.l. www.xdatanet.com www.xdatanet.com Addition è un applicativo Web che sfrutta le potenzialità offerte da IBM Lotus Domino per gestire documenti e processi aziendali in modo collaborativo, integrato e sicuro. www.xdatanet.com Personalizzazione,

Dettagli

Università Politecnica delle Marche. Progetto Didattico

Università Politecnica delle Marche. Progetto Didattico Università Politecnica delle Marche Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica e dell Automazione Sede di Ancona Anno Accademico 2011-2012 Corso di Tecnologie WEB Docente prof. Alessandro

Dettagli

Corso di Amministrazione di Reti A.A. 2002/2003

Corso di Amministrazione di Reti A.A. 2002/2003 Struttura di Active Directory Corso di Amministrazione di Reti A.A. 2002/2003 Materiale preparato utilizzando dove possibile materiale AIPA http://www.aipa.it/attivita[2/formazione[6/corsi[2/materiali/reti%20di%20calcolatori/welcome.htm

Dettagli

Come funziona il WWW. Architettura client-server. Web: client-server. Il protocollo

Come funziona il WWW. Architettura client-server. Web: client-server. Il protocollo Come funziona il WWW Il funzionamento del World Wide Web non differisce molto da quello delle altre applicazioni Internet Anche in questo caso il sistema si basa su una interazione tra un computer client

Dettagli

Introduzione alla teoria dei database relazionali. Come progettare un database

Introduzione alla teoria dei database relazionali. Come progettare un database Introduzione alla teoria dei database relazionali Come progettare un database La struttura delle relazioni Dopo la prima fase di individuazione concettuale delle entità e degli attributi è necessario passare

Dettagli

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP Accademia Futuro info@accademiafuturo.it Programma Generale del Corso Analista Programmatore Web PHP Tematiche Trattate

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

In questa pagina si descrivono le modalità di gestione del sito in riferimento al trattamento dei dati personali degli utenti che lo consultano.

In questa pagina si descrivono le modalità di gestione del sito in riferimento al trattamento dei dati personali degli utenti che lo consultano. LE POLICY SULLA PRIVACY DI QUESTO SITO PERCHE QUESTO AVVISO In questa pagina si descrivono le modalità di gestione del sito in riferimento al trattamento dei dati personali degli utenti che lo consultano.

Dettagli

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle

Dettagli

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA BOZZA 23/07/2008 INDICE 1. PERCHÉ UNA NUOVA VERSIONE DEI MODULI DI RACCOLTA DATI... 3 2. INDICAZIONI GENERALI... 4 2.1. Non modificare la struttura dei fogli di lavoro... 4 2.2. Cosa significano

Dettagli

PROCESSO DI INDICIZZAZIONE SEMANTICA

PROCESSO DI INDICIZZAZIONE SEMANTICA PROCESSO DI INDICIZZAZIONE SEMANTICA INDIVIDUAZIONE DEI TEMI/CONCETTI SELEZIONE DEI TEMI/CONCETTI ESPRESSIONE DEI CONCETTI NEL LINGUAGGIO DI INDICIZZAZIONE TIPI DI INDICIZZAZIONE SOMMARIZZAZIONE INDICIZZAZIONE

Dettagli

TITOLARE DEL TRATTAMENTO Il "titolare" del trattamento di eventuali dati personali rilevati a seguito della consultazione del sito è SEVAL S.r.l.

TITOLARE DEL TRATTAMENTO Il titolare del trattamento di eventuali dati personali rilevati a seguito della consultazione del sito è SEVAL S.r.l. PRIVACY POLICY SCOPO Il presente documento è rivolto a coloro che interagiscono con i servizi web del sito accessibili via internet a partire dall indirizzo www.seval.it. In tale informativa, resa ai sensi

Dettagli

Progettaz. e sviluppo Data Base

Progettaz. e sviluppo Data Base Progettaz. e sviluppo Data Base! Progettazione Basi Dati: Metodologie e modelli!modello Entita -Relazione Progettazione Base Dati Introduzione alla Progettazione: Il ciclo di vita di un Sist. Informativo

Dettagli

Informativa ex art. 13 D.lgs. 196/2003

Informativa ex art. 13 D.lgs. 196/2003 Informativa ex art. 13 D.lgs. 196/2003 Gentile Utente, l Hotel Eurolido (di seguito, Società ) rispetta e tutela la Sua privacy. Ai sensi dell art. 13 del Codice della Privacy (d.lgs. 196 del 30 giugno

Dettagli

Insegnare con il blog. Materiale tratto da:

Insegnare con il blog. Materiale tratto da: Insegnare con il blog Materiale tratto da: Weblog La parola "blog" nasce dalla contrazione del termine anglosassone "weblog" che, letteralmente, significa "traccia nella rete". Il blog infatti rappresenta

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

Come costruire una presentazione. PowerPoint 1. ! PowerPoint permette la realizzazione di presentazioni video ipertestuali, animate e multimediali

Come costruire una presentazione. PowerPoint 1. ! PowerPoint permette la realizzazione di presentazioni video ipertestuali, animate e multimediali PowerPoint Come costruire una presentazione PowerPoint 1 Introduzione! PowerPoint è uno degli strumenti presenti nella suite Office di Microsoft! PowerPoint permette la realizzazione di presentazioni video

Dettagli

Object Oriented Programming

Object Oriented Programming OOP Object Oriented Programming Programmazione orientata agli oggetti La programmazione orientata agli oggetti (Object Oriented Programming) è un paradigma di programmazione Permette di raggruppare in

Dettagli

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti Capitolo 3 L applicazione Java Diagrammi ER Dopo le fasi di analisi, progettazione ed implementazione il software è stato compilato ed ora è pronto all uso; in questo capitolo mostreremo passo passo tutta

Dettagli

PRIVACY POLICY SITO INTERNET

PRIVACY POLICY SITO INTERNET I H A D S.R.L. VIALE CAMPANIA 33 I - 20133 MILANO PRIVACY POLICY SITO INTERNET Tel. +39 029941767 Fax +39 02700506378 www.ihad.it info@ihad.it Cap Soc: 10000 C.F. e P.IVA 04558090967 R.E.A. 1756291 PERCHÉ

Dettagli

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da ARPA Fonte Dati Regione Toscana Redatto da L. Folchi (TAI) Rivisto da Approvato da Versione 1.0 Data emissione 06/08/13 Stato DRAFT 1 Versione Data Descrizione 1,0 06/08/13 Versione Iniziale 2 Sommario

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

INFORMATIVA SUL DIRITTO ALLA PRIVACY PER LA CONSULTAZIONE DEL SITO WEB www.arlatighislandi.it

INFORMATIVA SUL DIRITTO ALLA PRIVACY PER LA CONSULTAZIONE DEL SITO WEB www.arlatighislandi.it INFORMATIVA SUL DIRITTO ALLA PRIVACY PER LA CONSULTAZIONE DEL SITO WEB www.arlatighislandi.it redatto ai sensi del decreto legislativo n 196/2003 2 GENNAIO 2014 documento pubblico 1 PREMESSA 3 SEZIONE

Dettagli

Modello Relazionale dei DBMS - Vincoli Tradizionalmente, esistono quattro modelli logici: Gerarchico Reticolare Relazionale A oggetti XML I modelli

Modello Relazionale dei DBMS - Vincoli Tradizionalmente, esistono quattro modelli logici: Gerarchico Reticolare Relazionale A oggetti XML I modelli Modello Relazionale dei DBMS - Vincoli Tradizionalmente, esistono quattro modelli logici: Gerarchico Reticolare Relazionale A oggetti XML I modelli gerarchico e reticolare sono più vicini alle strutture

Dettagli

XML. XML è contemporaneamente: XML non è:

XML. XML è contemporaneamente: XML non è: XML XML è contemporaneamente: Linguaggio di annotazione (Markup) che permette di creare gruppi di marcatori (tag set) personalizzati (MathML, XHTML, chemicalml, ecc..) Formato standard per lo scambio dei

Dettagli

lem logic enterprise manager

lem logic enterprise manager logic enterprise manager lem lem Logic Enterprise Manager Grazie all esperienza decennale in sistemi gestionali, Logic offre una soluzione modulare altamente configurabile pensata per la gestione delle

Dettagli

Titolare del trattamento dei dati innanzi descritto è tsnpalombara.it

Titolare del trattamento dei dati innanzi descritto è tsnpalombara.it Decreto Legislativo 196/2003 Codice in materia di protezione dei dati personali COOKIE POLICY La presente informativa è resa anche ai sensi dell art. 13 del D.Lgs 196/03 Codice in materia di protezione

Dettagli

La struttura: DTD. Laura Farinetti Dip. Automatica e Informatica Politecnico di Torino. laura.farinetti@polito.it

La struttura: DTD. Laura Farinetti Dip. Automatica e Informatica Politecnico di Torino. laura.farinetti@polito.it La struttura: DTD Laura Farinetti Dip. Automatica e Informatica Politecnico di Torino laura.farinetti@polito.it L. Farinetti - Politecnico di Torino 1 Modello di struttura I tag annidati danno origine

Dettagli

PRIVACY POLICY DEL SITO WEB

PRIVACY POLICY DEL SITO WEB PRIVACY POLICY DEL SITO WEB Via Cola di Rienzo, 243 I - 00192 ROMA Tel. +39 06.97614975 Fax +39 06.97614989 www.aido.it aidonazionale@aido.it C.F. 80023510169 TRATTAMENTO DEI DATI PERSONALI DEGLI UTENTI

Dettagli

STAMPA DI UNA PAGINA SEMPLICE

STAMPA DI UNA PAGINA SEMPLICE Pagina 11 copiati nel proprio sistema (disco fisso o floppy). Questa operazione è detta download o scaricamento. Il modo più semplice per effettuare un download di un file (a meno che non sia specificato

Dettagli

Modulo 1: Motori di ricerca

Modulo 1: Motori di ricerca Contenuti Architettura di Internet Principi di interconnessione e trasmissione World Wide Web Posta elettronica Motori di ricerca Antivirus Personal firewall Tecnologie delle reti di calcolatori Servizi

Dettagli

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo. DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti

Dettagli

Sistemi Informativi e Sistemi ERP

Sistemi Informativi e Sistemi ERP Sistemi Informativi e Sistemi Trasformare i dati in conoscenza per supportare le decisioni CAPODAGLIO E ASSOCIATI 1 I SISTEMI INFORMATIVI LI - E IMPRESA SISTEMA DI OPERAZIONI ECONOMICHE SVOLTE DA UN DATO

Dettagli

Alfa Layer S.r.l. Via Caboto, 53 10129 Torino ALFA PORTAL

Alfa Layer S.r.l. Via Caboto, 53 10129 Torino ALFA PORTAL ALFA PORTAL La struttura e le potenzialità della piattaforma Alfa Portal permette di creare, gestire e personalizzare un Portale di informazione in modo completamente automatizzato e user friendly. Tramite

Dettagli

Corso di Access. Prerequisiti. Modulo L2A (Access) 1.1 Concetti di base. Utilizzo elementare del computer Concetti fondamentali di basi di dati

Corso di Access. Prerequisiti. Modulo L2A (Access) 1.1 Concetti di base. Utilizzo elementare del computer Concetti fondamentali di basi di dati Corso di Access Modulo L2A (Access) 1.1 Concetti di base 1 Prerequisiti Utilizzo elementare del computer Concetti fondamentali di basi di dati 2 1 Introduzione Un ambiente DBMS è un applicazione che consente

Dettagli

Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati

Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati Basi di dati Il Modello Relazionale dei Dati Proposto da E. Codd nel 1970 per favorire l indipendenza dei dati Disponibile come modello logico in DBMS reali nel 1981 (non è facile realizzare l indipendenza

Dettagli

Il glossario della Posta Elettronica Certificata (PEC) Diamo una definizione ai termini tecnici relativi al mondo della PEC.

Il glossario della Posta Elettronica Certificata (PEC) Diamo una definizione ai termini tecnici relativi al mondo della PEC. Il glossario della Posta Elettronica Certificata (PEC) Diamo una definizione ai termini tecnici relativi al mondo della PEC. Avviso di mancata consegna L avviso, emesso dal sistema, per indicare l anomalia

Dettagli

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it Excel A cura di Luigi Labonia e-mail: luigi.lab@libero.it Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo

Dettagli

Uso di base delle funzioni in Microsoft Excel

Uso di base delle funzioni in Microsoft Excel Uso di base delle funzioni in Microsoft Excel Le funzioni Una funzione è un operatore che applicato a uno o più argomenti (valori, siano essi numeri con virgola, numeri interi, stringhe di caratteri) restituisce

Dettagli

Introduzione Ai Data Bases. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni

Introduzione Ai Data Bases. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni Introduzione Ai Data Bases Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni I Limiti Degli Archivi E Il Loro Superamento Le tecniche di gestione delle basi di dati nascono

Dettagli

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO Linguaggi di programmazione classificati in base alle loro caratteristiche fondamentali. Linguaggio macchina, binario e fortemente legato all architettura. Linguaggi

Dettagli

Le strumentazioni laser scanning oriented per i processi di censimento anagrafico dei patrimoni

Le strumentazioni laser scanning oriented per i processi di censimento anagrafico dei patrimoni CONVEGNO FACILITY MANAGEMENT: LA GESTIONE INTEGRATA DEI PATRIMONI PUBBLICI GENOVA FACOLTA DI ARCHITETTURA 06.07.2010 Le strumentazioni laser scanning oriented per i processi di censimento anagrafico dei

Dettagli

5. Fondamenti di navigazione e ricerca di informazioni sul Web

5. Fondamenti di navigazione e ricerca di informazioni sul Web 5. Fondamenti di navigazione e ricerca di informazioni sul Web EIPASS Junior SCUOLA PRIMARIA Pagina 43 di 47 In questo modulo sono trattati gli argomenti principali dell universo di Internet, con particolare

Dettagli

SOFTWARE PER LA RILEVAZIONE DEI TEMPI PER CENTRI DI COSTO

SOFTWARE PER LA RILEVAZIONE DEI TEMPI PER CENTRI DI COSTO SOFTWARE PER LA RILEVAZIONE DEI TEMPI PER CENTRI DI COSTO Descrizione Nell ambito della rilevazione dei costi, Solari con l ambiente Start propone Time&Cost, una applicazione che contribuisce a fornire

Dettagli

Access. P a r t e p r i m a

Access. P a r t e p r i m a Access P a r t e p r i m a 1 Esempio di gestione di database con MS Access 2 Cosa è Access? Access e un DBMS che permette di progettare e utilizzare DB relazionali Un DB Access e basato sui concetti di

Dettagli

I Sistemi Informativi

I Sistemi Informativi I Sistemi Informativi Definizione Un Sistema Informativo è un mezzo per acquisire, organizzare, correlare, elaborare e distribuire le informazioni che riguardano una realtà che si desidera descrivere e

Dettagli

Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste

Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste versione 2.1 24/09/2015 aggiornamenti: 23-set-2015; 24-set-2015 Autore: Francesco Brunetta (http://www.francescobrunetta.it/)

Dettagli