Università degli Studi dell Insubria

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Università degli Studi dell Insubria"

Transcript

1 Università degli Studi dell Insubria FACOLTA DI SCIENZE MATEMATICHE FISICHE E NATURALI Corso di Laurea specialistica in Informatica BlogAnalytics: un'applicazione web per il monitoraggio delle discussioni online Tesi di laurea di: Daniele MASCIADRI GALIMBERTI Relatore: Prof. VIERI DEL BIANCO Correlatore: Matricola: Prof. SANDRO MORASCA Dott. DAVIDE TAIBI Anno Accademico

2 - 1 -

3 Executive Summary L analisi delle opinioni dei clienti è uno strumento fondamentale per la verifica della qualità di un prodotto e dei servizi ad esso associati. Un indagine effettuata mediante un colloquio tradizionale è molto onerosa in termini pratici e temporali, ed inoltre non è né utilizzabile né misurabile in modo oggettivo. La stessa analisi delle opinioni può essere introdotta nel contesto di una discussione online. In particolare, possono essere facilmente recuperati dai social media strumenti mediante i quali poter ricercare le comunicazioni interpersonali, in un ambiente dinamico in cui le opinioni nascono e si diffondono velocemente, e dove i commenti degli utenti sono normalmente visibili e persistenti. L analisi dei social media permette di comprendere meglio come migliorare la qualità di un prodotto, e di capire appieno le esigenze dei clienti al fine di poter introdurre sul mercato con un prodotto che possa essere considerato accattivante. Questo procedimento di analisi dei social media e delle opinioni on-line in esso contenute, viene caratterizzato da tre fasi: 1) Individuazione delle discussioni riguardanti un argomento di interesse. 2) Manipolazione delle discussioni individuate. 3) Comprensione e analisi delle discussioni. Questo progetto di tesi comprende la realizzazione delle fasi di individuazione e manipolazione degli argomenti di interesse. L obiettivo consiste nella realizzazione di un applicazione che indicizza i commenti presenti nei vari strumenti di comunicazione, e - 2 -

4 recupera dati non immediatamente reperibili dall estrazione, ovvero tutte quelle informazioni che non sono immediatamente recuperabili da dall analisi dei risultati forniti dai motori di ricerca. L applicazione è stata progettata in modo tale da permettere una semplice integrazione della successiva fase di sentiment analysis. L applicazione in questione deve mantenere una certa flessibilità in modo da poter variare facilmente il flusso di esecuzione dell analisi o poterlo integrare con nuovi strumenti di estrazione dati, in una fase successiva. Questo può essere facilmente effettuato mediante la realizzazione di un applicazione modulare a plug-in dove ognuno di questi funziona in modo atomico ed indipendente, così da lasciare ad un gestore la loro esecuzione e comunicazione. In ultimo si vuole mettere a disposizione degli utenti, un interfaccia web per la configurazione di ogni componente. Quest applicazione web permette l interazione con il gestore, e con un intero processo di analisi, comprensivo dello stack dei plug-in. Quindi l interfaccia grafica combina i moduli per la configurazione di ogni parte ed il processo partecipante all analisi e all indicizzazione, con la possibilità di rendere disponibili agli utenti i contenuti da essi desiderati, così che possano essere ridotti al minimo gli sforzi di ricerca ed analisi delle opinioni degli utenti. Durante il periodo di tesi, nella realizzazione dell applicazione sono stati incontrati e risolti numerosi problemi. Le prime problematiche affrontate hanno riguardato le specifiche richieste. Si sono dovuti valutare i vantaggi e gli svantaggi nell utilizzo di motori di ricerca per l effettuazione dell indicizzazione

5 Durante la fase di progettazione dei plug-in, si sono dovute analizzare la modalità di gestione dei dati dei principali motori di ricerca, al fine di riuscire ad estrapolare un contenuto pertinente. Un ulteriore difficoltà è emersa in merito alla comunicazione tra plugin e all ideazione di un architettura che permettesse la scelta del plug-in da eseguire in fase di esecuzione. Tale problema e stato risolto attraverso l utilizzo di un file di configurazione e l ideazione di un gestore dei plug-in che ha permesso di effettuare questa interazione in modo abbastanza performante. La progettazione dell applicazione con un architettura a plug-in ha permesso alla stessa di poter in futuro assicurarsi continui miglioramenti per quanto riguarda l efficienza e l efficacia di ognuno. Questo ha inoltre concesso l introduzione di moduli che consentono l esternalizzazione di operazioni e la condivisione dei dati con banche dati esterne. I plug-in realizzati hanno proprio per loro natura una facilità di adattamento ai cambiamenti che rendono l applicazione estremamente flessibile e modificabile. La scelta di utilizzare come strumento di configurazione dei plug-in un interfaccia grafica web ha limitato l installazione dell applicazione unicamente su di un server, ma ha permesso la condivisione delle informazioni ottenute a più utenti nonché un continuo contributo per il perfezionamento dell applicazione. I plug-in realizzati hanno proprio per loro natura una facilità di adattamento ai cambiamenti che rendono l applicazione estremamente flessibile e modificabile

6 La possibilità di caricare, gestire e configurare i plug-in, seppur da utenti ed amministratori, introduce la opportunità, da parte di malintenzionati, di installare applicazioni malevoli all interno del server. Questo ha comportato infine la definizione di regole rigide nella gestione degli accessi e dei permessi

7 Indice 1 Introduzione Obiettivi della tesi Approccio al problema Struttura della tesi Documentazione Social media motivazioni e regole Ricerca dei contenuti generati dagli utenti Utilizzo di Web semantico nei Social Media Resource Description Framework Prospettive per il Futuro Considerazioni Architettura Definizione dei requisiti Requisiti di progettazione Estrazione del contenuto di ogni discussione Manipolazione delle discussioni individuate Visualizzazione Gestore dei Plug-in Gestione autorizzazioni Plug-in Interfaccia di gestione dei plug-in Gestore dei plug-in Framework alla base Micro Java Plug-in Framework Architettura del gestore Plug-in Struttura di un plug-in Protocollo di comunicazione e strumenti di configurazione Gli estrattori Gli attuatori L'interfaccia grafica web Sviluppo dell'applicazione Scelte implementative per la realizzazione dei Plug-in Scelte implementative nella realizzazione Interfaccia Grafica Web Conclusioni Sviluppi futuri Appendice A Bibliografia

8 - 7 -

9 Capitolo 1 Introduzione - 8 -

10 L analisi delle opinioni dei clienti è uno strumento fondamentale per la verifica della qualità di un prodotto e dei servizi ad esso associati. Un indagine effettuata mediante un colloquio tradizionale è molto onerosa in termini pratici e temporali, ed inoltre non è né utilizzabile né misurabile in modo oggettivo. La stessa analisi delle opinioni può essere introdotta nel contesto di una discussione online. In particolare, possono essere facilmente recuperati dai social media strumenti mediante i quali poter ricercare le comunicazioni interpersonali, in un ambiente dinamico in cui le opinioni nascono e si diffondono velocemente, e dove i commenti degli utenti sono normalmente visibili e persistenti. L analisi dei social media permette di comprendere meglio come migliorare la qualità di un prodotto, e di capire appieno le esigenze dei clienti al fine di poter introdurre sul mercato con un prodotto che possa essere considerato accattivante. Il procedimento di analisi delle opinioni on-line si compone di tre fasi: 4) Individuazione delle discussioni riguardanti un argomento di interesse. 5) Manipolazione delle discussioni individuate. 6) Comprensione e analisi delle discussioni. Questo progetto di tesi comprende la realizzazione delle fasi di individuazione e manipolazione degli argomenti di interesse. L obiettivo consiste nella realizzazione di un applicazione che indicizza i commenti presenti nei vari strumenti di comunicazione, e recupera dati non immediatamente reperibili dall estrazione

11 L applicazione è stata progettata in modo tale da permettere una semplice integrazione della successiva fase di sentiment analysis. L applicazione in questione deve mantenere una certa flessibilità in modo da poter variare facilmente il flusso di esecuzione dell analisi o poterlo integrare con nuovi strumenti di estrazione dati, in una fase successiva. Questo può essere facilmente effettuato mediante la realizzazione di un applicazione modulare a plug-in dove ognuno di questi funziona in modo atomico ed indipendente, così da lasciare ad un gestore la loro esecuzione e comunicazione. In ultimo si vuole integrare l applicazione di una comoda e accattivante interfaccia web. Quest applicazione permette l interazione con il gestore, e con un intero processo di analisi, comprensivo dello stack dei plug-in. Quindi l interfaccia grafica combina i moduli per la configurazione di ogni parte ed il processo partecipante all analisi e all indicizzazione, con la possibilità di rendere disponibili agli utenti i contenuti da essi desiderati, così che possano essere ridotti al minimo gli sforzi di ricerca ed analisi delle opinioni degli utenti. 1.1 Obiettivi della tesi Il lavoro di tesi si colloca nell ambito di un progetto più ampio, BlogAnalytics, nato presso il dipartimento di Scienze della Cultura, Politiche e dell Informazione. L obbiettivo di BlogAnalytics [1] (precedentemente chiamato BlogMeter) e la creazione di uno strumento per l analisi e il monitoraggio degli User Generated Contents (Contenuti generati dagli utenti) espressi online su blog, newsgroup e forum. L analisi

12 verrà effettuata mediante l utilizzo di tecniche di analisi del linguaggio naturale (Natural Language Processing) in grado di riconoscere gli interessi e le opinioni degli utenti, con una ragionevole accuratezza, aggregando opinioni positive e negative. A differenza l obiettivo del lavoro di tesi consiste nello studio e nella realizzazione di un applicazione per l estrazione e la manipolazione di discussioni presenti in rete riguardanti un certo argomento di interesse, tralasciando però l analisi delle opinioni, fase che verrà realizzata successivamente. Il lavoro consiste nella progettazione architetturale di BlogAnalytics e nell implementazione di alcune fasi: 1) Individuazione delle discussioni rilevanti 2) Estrazione del contenuto rilevante di ogni discussione 3) Creazione di un dataset delle discussioni per la successiva analisi delle opinioni 4) Analisi del volume delle discussioni Tutte le fasi dovranno essere progettate in modo modulare in modo da garantire la possibili estensioni future. 1.2 Approccio al problema L individuazione delle discussioni rilevanti e un compito molto oneroso sia in termini di tempo che di spazio di computazione. Fortunatamente esistono numerosi motori di ricerca che forniscono tali risultati gratuitamente e in modo molto efficiente. Attraverso l utilizzo di motori di ricerca sono stati ridotti tutti i costi legati al recupero delle informazioni. Tuttavia, al fine di avere una più

13 completa indicizzazione, è sembrato maggiormente opportuno confrontare le informazioni provenienti da molteplici motori di ricerca, di modo da poter completare ottenere il maggior numero di discussioni possibili. Per quanto riguarda la modularità dell applicazione si è pensato di basare l intera implementazione su un framework che permetta il caricamento e l esecuzione di parti terze. Per quanto riguarda la fase di estrazione del contenuto necessario all analisi, si è scelto di affidare l intera fase ad una libreria per la gestione di contenuti web dotata di moduli specifici ed adatti a questo scopo. 1.4 Struttura della tesi In questo capitolo viene spiegata la teoria sulla quale si basa il lavoro di tesi, indicati gli obiettivi principali da raggiungere, oltre che lo scenario e le tecnologie di riferimento per lo sviluppo del lavoro. Nel secondo capitolo vengono descritte le motivazioni alla base del progetto, identificando i vantaggi che comporterebbe l introduzione di uno strumento di analisi dei commenti on-line, senza però tralasciare le possibili difficoltà incontrabili. Nel terzo capitolo vengono descritte le specifiche dell applicazione e le scelte progettuali. Nel quarto capitolo viene illustrato dettagliatamente il processo di estrazione dei contenuti dalle pagine web. Il quinto capitolo contiene le conclusioni del lavoro svolto ed i possibili sviluppi futuri. Infine, in appendice A, viene allegato la definizione:

14 1. Universal Resource Name 2. Regole di gestione dei ruoli 3. Hashmap 4. Technorati

15 Capitolo 2 Social Media Analysis

16 Il primo importante obiettivo perseguibile consiste nell individuazione dei vantaggi dell analisi di conversazioni presenti all interno di social media, e nella definizione di quelle che sono le caratteristiche da analizzare. In seguito si sono anche definiti e discussi i problemi associati alla fase di indicizzazione, ed è stata identificata una soluzione per limitarne i costi di gestione e di implementazione relativi. Da ultimo si è valutato come ideare delle regole per adattarsi facilmente ai possibili cambiamenti futuri delle informazioni provenienti dal web. 2.1 Social media motivazioni e regole Con il termine Social media si vuole identificare un insieme di strumenti web con cui gli utenti possono condividere contenuti testuali, immagini, video e audio. La loro analisi può rilevarsi un ottimo strumento per la comprensione ed il miglioramento di un processo produttivo e pubblicitario aziendale. Questa analisi comporta una serie di vantaggi non trascurabili che potrebbero condurre ad una miglior cognizione delle caratteristiche di eccellenza di un prodotto o all isolamento di problemi. Il principale vantaggio riscontrabile è l analisi delle critiche da parte di clienti. La maggior parte delle imprese ritiene un giudizio sfavorevole riguardante un proprio prodotto, dato da un utente in un social media, un danno di immagine. L idea, da cui nasce questo lavoro, è invece quella di sfruttare costruttivamente questi commenti negativi, e considerarli come un momento di dialogo con il cliente, quindi un occasione per migliorare i propri servizi/prodotti, ampliando le capacità di problem-solving. Analogamente anche gli apprezzamenti

17 espressi in un social media possono fornire un importante strumento di comprensione ed analisi. I commenti trovati nel web possono essere un ottimo strumento per l attuazione di specifiche strategie di marketing, e per comprendere quali caratteristiche del servizio o del prodotto erogato devono perdurare nel tempo. Nel contesto di un mercato di larga scala, conoscere e capire le esigenze dei consumatori si rivela molto complesso. I social media tuttavia sono un ottima fonte da cui comprendere le necessità dei clienti. Da questi è possibile capire se si è in grado di rispondere a tali richieste, e quindi, se necessario, cambiare le proprie strategie di mercato per rispondere in modo efficiente alle richieste del pubblico. L analisi dei social media può essere anche utilizzata come strumento per la raccolta delle lamentele di clienti di aziende concorrenti; a partire dalla comprensione della loro insoddisfazione è possibile intraprendere campagne pubblicitarie atte a colpire la concorrenza, di modo da promuovere l avvicinamento di nuovi clienti. Viceversa l analisi dei punti di forza dei concorrenti può portare ad un miglioramento societario. Il tutto perseguibile, senza commettere illeciti. Un altro motivo importante per l introduzione dell analisi di social media è l individuazione di quegli utenti che vengono definiti influenzatori. Con il temine influenzatore viene definito quell utente che per l elevato numero di interazioni che effettua con i vari social media ha la possibilità di suggestionare un alto numero di utenti con lui interagenti. Tenere sotto controllo un influenzatore non significa attuare una pressione di coercizione nei suoi confronti, ma

18 comprendere perché in un determinato momento la reputazione della società è venuta meno a causa di avvenimento imprevisto. Se gli obiettivi proposti in questo lavoro vengono soddisfatti, l analisi dei social media potrebbe assumere un ruolo primaria importanza nel marketing. Per riuscire ottenere i vantaggi citati, è necessario identificare un insieme di parametri necessari alla catalogazione di un determinato commento. Il parametro fondamentale per una analisi efficace dei social media risulta essere l audience delle conversazioni, ovvero un parametro che definisce in che quantità gli utenti sono stati attratti dalla conversazione, quindi, la conseguente capacità di influenza. Con questo parametro si vuole dare maggiore importanza alla visibilità di un commento, a scapito della sua validità. La validità è il secondo parametro preso in considerazione, con questo si vuole identificare quanto i commenti espressi in una conversazione siano attendibili o quanto siano influenzati da ignoranza o pregiudizio dei colloquianti. Un altro parametro da non trascurare è il numero di persone che sono direttamente intervenute nella conversazione, ovvero quanti utenti hanno lasciato un proprio commento o contributo alla discussione. Congiuntamente a questo occorre considerare anche il loro giudizio, la quantità di tempo dedicata alla discussione in analisi, o alle discussioni in genere, in modo poter determinare se si tratta di influenzatori, ed inoltre anche valutare per quanto tempo la conversazione è stata attiva, nonché la sua velocità di diffusione. Quest ultimo parametro analizzato, deve tenere conto non solo della velocità con cui la discussione si è diffusa in rete, ovvero la velocità

19 con cui questa è stata citata in altri social media, ma anche di quello che viene definito ranking, ovvero il numero di associazioni che i motori di ricerca attribuiscono ad un social media. Legato direttamente al concetto di visibilità di un social media vi è quello di affidabilità della fonte, in cui si tiene conto dove l informazione è stata recuperata, e la facilità che lo strumento fornisce all interazione da parte dell utente del social media. Da ultimo l analisi delle discussioni potrebbe portare all identificazione di nuovi argomenti da analizzare. L insieme di queste regole e metriche identificano il punto di partenza dell analisi; sono i punti di riferimento da considerare durante la fase di sviluppo. 2.2 Ricerca dei contenuti generati dagli utenti Con il termine indicizzazione si intende l analisi e la memorizzazione di informazioni riguardanti uno specifico sito web, all interno di uno strumento di memorizzazione. Per quanto riguarda BlogAnalytics, il termine indicizzazione identifica unicamente il recupero delle informazioni necessarie per le fasi successive di modifica ed analisi. Questa operazione è molto dispendiosa e necessita di un architettura hardware performante e con ampi spazi di memorizzazione. La sua realizzazione deve tenere conto di svariate problematiche che devono essere affrontate per compiere correttamente questa fase. L operazione alla base è il parsing delle pagine, che inizia raggiunto un indirizzo web e consiste in un esplorazione per ricavarne informazioni rilevanti ed immagazzinarle. Data la sua dispendiosità, al fine di eliminare operazioni di indicizzazione ripetute è necessario

20 tener traccia di tutti gli url già visitati, in modo da non indicizzarli nuovamente. Questa operazione attiva la possibilità di ricontrollare successivamente il social media alla ricerca di eventuali modifiche. Le due strategie che ottimizzano questa regola sono il breadth-first search (BFS) [4] o ricerca in ampiezza e il depth-first search (DFS) [5] o ricerca in profondità. L analisi sul funzionamento di queste due tecniche di indicizzazione, risulta essere fondamentale per la realizzazione di un algoritmo efficace nella selezione e memorizzazione delle informazioni pertinenti alla nostra ricerca. Nella teoria dei grafi, il BFS è un algoritmo di visita per i grafi che si realizza partendo da un vertice (o nodo) detto sorgente ed esplorando tutti i nodi del grafo stesso raggiungibili o non raggiungibili (in tal caso si definisce BFS totale). BFS è un metodo di ricerca non informato, e si pone come obiettivo l espansione del raggio d'azione, al fine di esaminare tutti i nodi del grafo sistematicamente, fino alla soluzione; la ricerca avviene in maniera esaustiva fino a quando non si sono visitati tutti i nodi del grafo. Questo algoritmo non è di tipo euristico. Dal punto di vista dell'algoritmo, tutti i nodi adiacenti ad un nodo, sono aggiunti ad una coda di tipo FIFO. In una tipica implementazione, i nodi che ancora non sono stati esaminati, sono posti in un contenitore (una coda oppure una lista) ed etichettati come "non visitato", i quali una volta esaminati, sono poi collocati in un'altra struttura dati ed etichettati come "visitato". Il DFS è invece un algoritmo che opera una semplice visita in profondità dell'albero degli stati generati. Partendo dallo stato

21 iniziale vengono generati i figli. Terminata questa fase si passa ad analizzare il primo figlio riscontrato. Quest operazione è ripetuta sino al momento in cui si raggiungono le foglie dell albero. Raggiunta un estremità si risale l albero alla ricerca del primo fratello non ancora indicizzato. Questa tecnica termina nel momento in cui non esistono più nodi da indicizzare. Fondamentale è anche la realizzazione di algoritmi che non effettuano un sovraccarico del server in analisi, durante la fase di indicizzazione. Un eccessivo impegno di risorse, da parte del server ospitante i commenti in fase di studio, potrebbe comportare l inserimento di tecniche atte al riconoscimento dell indicizzatore e al relativo impedimento di effettuare l operazione. Durante la fase di esecuzione dell algoritmo di indicizzazione, è necessario considerare problemi quali: un time out del server o uno spider traps, ovvero, una condizione presente in siti Web dinamici dove l algoritmo di indicizzazione rimane intrappolato in un loop infinito, causato da collegamenti ciclici. L algoritmo di indicizzazione richiede la realizzazione di strumenti per l immagazzinamento dei risultati ottenuti, preceduti dalla gestione dei pool di connessione ai siti da analizzare, in modo da arginare il problema di latenza della rete, effettuando richieste contemporanee. Tuttavia tutte queste opzioni vengono già realizzate efficientemente dai vari motori di ricerca, quindi una tecnica abbastanza efficace potrebbe recuperare ed analizzare direttamente i risultati dell indicizzazione svolta dai diversi motori di ricerca; viene anche

22 fornito il permalink del sito indicizzato, ovvero il link assoluto, cosicché viene permesso di effettuare successivamente un analisi più approfondita e mirata. Dal lato dei motori di ricerca, l'indicizzazione dei siti web è la loro prima e fondamentale operazione. Dopo averli registrati, i motori di ricerca scansionano periodicamente i siti presenti nei propri archivi per verificare eventuali aggiornamenti, entrando in un sito ed incominciando a leggere il codice sorgente alla ricerca di nuove modifiche del contenuto o della struttura. Quando un analizzatore della rete trova un link ad un'altra pagina del sito o ad un altro sito, analizza anche quest'ultimo. Dopo aver scansionato la rete e quindi indicizzato una grandissima mole di pagine web, il motore di ricerca passa alla seconda fase: classificarle e posizionarle in base a delle parole chiavi che rispecchino il più possibile il sito. In questo modo i motori di ricerca, tramite particolari algoritmi, assicurano ai loro utenti contenuti validi e aggiornati. Questo sevizio viene effettuato mediante l utilizzo di particolari algoritmi, che attribuiscono ad una pagina un'importanza legata al numero di collegamenti che essa possiede in altri siti internet. 2.3 Utilizzo di Web semantico nei Social Media Strettamente legato al concetto di indicizzazione occorre considerare un aspetto che non è possibile tralasciare in una fase di analisi preliminare: il Web Semantico. Con il termine Web Semantico si vuole far riferimento ad un evoluzione del word wide web, dove però tutti i documenti

23 contenuti sono etichettati con metadati che specificano il significato dei concetti espressi in un formato adatto alla diffusione, all'interpretazione e all'elaborazione automatica. L utilizzo del web semantico, per quanto riguarda BlogAnalytics, porterebbe ad una più semplice interpretazione dei contenuti di documenti web. Con l'interpretazione del contenuto dei documenti che il Web Semantico fornisce, si ha una notevole evoluzione della normale ricerca web; questa si basa sulla presenza nel documento di parole chiave, o relazioni e connessioni tra documenti. Questo nuovo concetto di informazione si basa principalmente su XML, un linguaggio che consente di descrivere semanticamente gli elementi costitutivi di un documento che, così descritto, può essere elaborato per l estrazione di informazioni secondo specifici criteri, o per la riformulazione e l'adattamento ad altri formati oltre che per la visualizzazione in funzione delle capacità del terminale. Sebbene un documento sia un buon sistema per specificare informazioni, esso risulta essere poco adatto alla natura distribuita e decentralizzata del web, dove le informazioni riguardanti un particolare oggetto possono essere localizzate ovunque. Questa opzione non è agevolata neppure dal meccanismo dei collegamenti ipertestuali, strumento reso popolare dall'html, perché non prevede la possibilità di descrivere un legame definito. In altri termini, sebbene in un documento sia possibile discutere di un determinato oggetto, è tuttavia complicato capire se due documenti

24 si riferiscono entrambi ad uno stesso oggetto, con una conseguente scarsa qualità dei risultati restituiti dai motore di ricerca. Ipoteticamente lo si potrebbe dedurre se i documenti fossero integrati di dati semanticamente definiti e sufficientemente precisi da permetterne una discriminazione, questo grazie ad un documento standardizzato che definisce l insieme di appartenenza del oggetto descritto. Il linguaggio utilizzato, alla base del Web Semantico, è discusso nei paragrafi successivi Resource Description Framework Il Resource Description Framework (RDF) [6] è un framework per la descrizione della conoscenza nel web, specificatamente creato, secondo una raccomandazione del W3C, per la descrizione dei metadati relativi alle risorse. La comprensione di questo framework, potrebbe indirizzarci ad una applicazione che inglobi le sue raccomandazioni, o sia pronta all inserimento in futuro. L RDF si basa su tre principi chiave: 1) Tutto può essere identificato da un Universal Resource Identifier (URI) 2) Il minimo potere: utilizzare il linguaggio meno espressivo per definire un oggetto 3) Qualunque cosa può dire qualunque cosa su qualunque cosa L RDF è sostanzialmente un modello formale di dati dotato di sintassi di interscambio, un sistema di schemi di tipo, ed un linguaggio d interrogazione dove qualunque cosa descritta dall RDF è detta risorsa. Principalmente una risorsa è reperibile sul web, tuttavia

25 l RDF può descrivere anche risorse che non si trovano direttamente sul web. Ogni risorsa è identificata da un URI, un identificatore univoco di risorse, che può essere un Universal Resource Locator (URL) o un Universal Resource Name (URN) [appendice A]. Il modello di dati RDF è formato da risorse, proprietà e valori dove le proprietà sono delle relazioni e legano tra loro risorse e valori, e sono anch'esse identificate da URI. I valori, sono invece, o risorse o tipi di dati primitivi. L'Unità di base per rappresentare un'informazione in RDF è lo stato. Uno stato è una tripla del tipo: Soggetto Predicato Oggetto dove il soggetto è una risorsa, il predicato è una proprietà e l oggetto è un valore. Il data model RDF permette di definire un modello semplice per descrivere le relazioni tra le risorse in termini di proprietà identificate da un nome ed i relativi valori. Tuttavia, l RDF non fornisce nessun meccanismo per dichiarare queste proprietà, né per definire le relazioni tra queste proprietà ed altre risorse. Per potere dichiarare un vocabolario è necessario definire classifica e proprietà in un RDF- Schema Prospettive per il Futuro Dato che nel mondo web vengono sempre maggiormente richiesti strumenti di lavoro più avanzati, per facilitare e velocizzare la navigazione attraverso gli innumerevoli documenti multimediali pubblicati, il web semantico si propone di dare un senso alle pagine web ed ai collegamenti ipertestuali, dando la possibilità di cercare solo ciò che è realmente richiesto. Con il Web Semantico è possibile

26 assegnare ai documenti un senso compiuto, un significato molto più significativo di vocaboli, una serie di strumenti che possono aiutare un motore di ricerca ad individuare argomenti di interesse, effettuando un eliminazione di altri non strettamente legati al concetto desiderato. Questo non in virtù di sistemi di intelligenza artificiale, ma semplicemente di una marcatura dei documenti, di un linguaggio gestibile da tutte le applicazioni, e dell'introduzione di vocabolari specifici, ossia insiemi di frasi alle quali possono associarsi relazioni stabilite fra elementi marcati. Il Web Semantico per funzionare deve poter disporre di informazioni strutturate e di regole di deduzione per gestirle, in modo da identificare quelle necessarie a soddisfare una specifica richiesta. Questo per rendere possibile l'affiancarsi di più referenze e quindi non perdere, almeno in linea programmatica, la possibilità di più definizioni, di più comprensioni di uno stesso oggetto concreto. 2.4 Considerazioni L analisi di tutti i problemi relativi all indicizzazione, ai costi implementativi ed architetturali ad essa associati ha portato alla scelta dell analisi dei risultati provenienti da motori di ricerca, a scapito di un implementazione autonoma. Questo consente di memorizzare solo i dati di interesse, escludendo tutti quelli non necessari all analisi. La ricerca è stata estesa estraendo informazioni da più fonti, così da rendere possibile una confronto dei dati ottenuti e l integrazione di parti mancanti all indicizzazione di altri. In questo modo è permesso anche uno studio comparativo sull efficienza di catalogazione dei singoli motori di ricerca. Dall analisi della

27 documentazione relativa al Web Semantico, si è potuta considerare l introduzione di uno strumento che permette la futura compatibilità dell applicazione agli standard richiesti

28 Capitolo 3 Architettura dell applicazione

29 Terminata la fase di documentazione dove sono state definite le caratteristiche che dovranno necessariamente essere considerate durante la fase di progettazione e sviluppo, si delineano in questo capitolo quelle che sono le specifiche ed i requisiti necessari alla fase di progettazione, andandone a definire gli attributi che ogni singolo componente deve possedere. Successivamente vengono esplicitate le caratteristiche progettuali di ogni singolo elemento appartenente all applicazione. Da ultimo viene descritto ed esplicitato come l applicazione interagisce con gli utenti e come questi la possono utilizzare e configurare. 3.1 Definizione dei requisiti Lo scopo del progetto è quello di realizzare un applicazione che permetta l analisi statistica di informazioni provenienti da blog, forum, newsgroup. Si intendono analizzare tutte le discussioni riguardanti un argomento specifico, identificando l andamento temporale ed altri dati statistici. L applicazione si deve comporre principalmente di quattro fasi: 1. Individuazione delle discussioni rilevanti: estrazione degli User Generated Content da blog, newsgroup e forum 2. Estrazione del contenuto rilevante di ogni discussione : estrazione del testo delle discussioni dalle pagine web attraverso l identificazione delle sezioni rilevanti. 3. Creazione di un dataset delle discussioni per la successiva analisi delle opinioni 4. Analisi del volume delle discussioni e visualizzazione dei dati ottenuti

30 Per quanto riguarda le prime due fasi, l applicazione dovrà essere modulare, indipendente, ed estendibile. Dovra essere possibile la estrarre le informazioni da diverse fonti. La gestione delle estrazioni dovrà essere estendibile permettendo l integrazione di nuovi estrattori. Per realizzare questo si è pensato di realizzare un architettura molulare basata sull utilizzo di plug-in Requisiti di progettazione I vari plug-in sono coordinati da un gestore che si occupa della loro esecuzione e collaborazione. In Figura 3.1 viene ripresa la struttura che l applicazione. Le fasi di individuazione delle discussioni riguardanti un argomento di interesse, manipolazione delle discussioni individuate e comprensione ed analisi delle discussioni lavorano indipendentemente, per comunicare tra di loro utilizzano degli strumenti di memorizzazione. Ogni fase non comunica con la precedente ma si limita ad interrogare lo strumento di memorizzazione che la precede, e ricavati i dati a lei necessari, esegue le sue funzionalità

31 Figura 3.1: Struttura dell'applicazione Estrazione del contenuto di ogni discussione La fase più delicata dell'intera applicazione; qui infatti l'applicazione ricava da forum, blog, newsgroup le informazioni necessarie. Queste informazioni vengono poi utilizzate per il popolamento dello strumento di memorizzazione che si interpone tra questa e la successiva fase. In altri termini tale sezione si occupa della ricerca, dell estrazione del contenuto della discussione di ogni pagina e della costruzione del database. L estrazione delle informazioni è così composta: a. Identificazione ed estrazione del testo dei post dalle pagine HTML b. Estrazione dei commenti collegati ad ogni post c. Estrazione degli autori dei commenti d. Generazione del data base

32 La scelta di una gestione mediante plug-in di questa fase permette che l'applicazione possa essere modificata facilmente in futuro così da adattarla alle esigenze dell'utente Manipolazione delle discussioni individuate La sezione di trasformazione ed analisi dei dati, anch essa modulare, consente di operare l analisi dei dati ottenuti dalla fase di estrazione; in particolare si occupa della gestione del volume delle discussioni: a. Calcolo volume discussioni online per un dato argomento b. Analisi dell'andamento del volume delle discussioni c. Analisi incrociata di più discussioni Questa fase ha l'obiettivo di analizzare e compiere operazioni statistiche (numero medio di risposte, verifica degli opinion leader, analisi del trend delle discussioni ) sui dati ottenuti dalla fase di estrazione, per poi preparare i risultati alla visualizzazione per mezzo degli strumenti di interrogazione messi a disposizione dell'utente Visualizzazione Questa fase, oltre a consentire all'utente di ottenere i risultati conseguiti nelle sezioni di estrazione ed elaborazione precedenti, fornisce anche un interfaccia per la gestione dei plug-in. Questo viene effettuato tramite un'interfaccia grafica web che permette la comunicazione con il gestore. I risultati delle interrogazioni verranno resi disponibili tramite tale interfaccia e tramite web service, che si occupa della comunicazione con applicazioni che vengono identificate dall'applicazione come utenti

33 3.1.5 Gestore dei Plug-in Il gestore dei plug-in ha il compito di coordinare la fase di estrazione ed elaborazione, in dettaglio ne ordina il caricamento e l esecuzione temporale. Spetta al gestore, dunque, l attivazione di ogni singolo plug-in o l eventuale coordinazione tra diversi; infatti possono essere combinati per la realizzazione di un obiettivo. Non necessariamente un plug-in deve essere indipendente. Il gestore si interfaccia con gli utenti mediante un apposita applicazione web dalla quale recupera i parametri necessari alla sua esecuzione Gestione autorizzazioni L'interfaccia web, oltre a quanto detto precedentemente, ha anche lo scopo di gestire le autorizzazioni per l'utilizzo dei plug-in. Ogni utente, a secondo del livello di autorizzazione a lui assegnato, può estendere e modificare i plug-in dell'applicazione, e specificare a sua volta le autorizzazioni alle sue modifiche. Queste possono essere pubbliche, ad utilizzo personale, oppure ristrette unicamente ad una cerchia di utenti Plug-in Lo strumento necessario alla comunicazione di ogni singolo plug-in deve rispettare uno standard comune. Se un plug-in dovesse richiedere una struttura differente, deve allegare una documentazione che ne spieghi i metodi di interazione. Nel grafico in Figura 3.2 è riassunto il funzionamento standard di un singolo plug-in

34 Figura 3.2: Funzionamento di un Plug-in Dopo la sua esecuzione, il plug-in scarica le informazioni a lui necessarie, le quali possono essere ricavate sia da dati salvati in precedenza, sia dai risultati da lui computati. Al termine della fase di acquisizione dati, vengono eseguite le funzionalità del plug-in, seguite dalla funzionalità di salvataggio dati nello standard Interfaccia di gestione dei plug-in All interno dell interfaccia grafica di gestione dei plug-in ogni utente ha la possibilità di specificare quale plug-in deve essere eseguito. L interfaccia permette sia di caricare nuovi plug-in, sia di attivare e disattivare quelli precedentemente inseriti. In Figura 3.3 è rappresentato un ipotetico menù di gestione dei plug-in

35 Figura 3.3: Menu gestione blug-in Se inserito un nuovo plug-in nella barra dei sotto-menù dei plug-in, è possibile quindi configurare le funzionalità dell applicazione. Figura 3.4: Configurazione funzionalità dei plug-in 3.2 Gestore dei plug-in Terminata la fase di identificazione dei requisiti e delle specifiche, si passa alla fase di progettazione; in particolare, viene analizzato il gestore dei plug-in e l architettura a cui si appoggia. Occorre però necessariamente esaminare prima quale strumento o quale libreria

36 sia necessario a fornire la modularità a run-time del codice ovvero l applicazione può caricare ed eseguire un plug-in senza bisogno ne di compilare codice ne di essere riavviata affinché funzioni correttamente Framework alla base La gestione mediante plug-in attribuisce all applicazione il valore aggiunto che risiede nella possibilità di caricare dinamicamente il codice, in modo da estendere le funzionalità di un sistema anche in seguito, senza dover necessariamente ricompilare l intera applicazione ed arrestare la sua esecuzione. I vantaggi più significativi riguardano l ovvia possibilità di aggiungere funzionalità ad un sistema già esistente, senza dover intervenire sul codice già scritto, e l opportunità di ripartire i compiti dei componenti di un team di sviluppo in modo più semplice ed intuitivo. La realizzazione di un applicazione avente queste caratteristiche potrebbe fornire l occasione di realizzare le proprie applicazioni, di modo che siano facilmente estensibili anche in momenti futuri Micro Java Plug-in Framework Micro Java Plug-in framework (mjpf) offre la possibilità di estendere un applicazione in fasi successive, senza necessità di ricompilare o arrestare il processo in esecuzione. Mjpf è un framework che consente di realizzare applicazioni che, a tempo di esecuzione, caricano ed eseguono del codice in modo trasparente. Queste funzionalità vengono implementate da svariati framework con lo stesso obiettivo, tuttavia, questi presentano

37 architetture eccessivamente rigide e complesse che, pur essendo ricche di funzionalità, risultano poco semplici ed intuitive. Mjpf si propone di definire un insieme di entità e funzioni primitive utili all estensione dinamica di un applicazione Java (il prefisso micro ne evidenzia l essenzialità). La realizzazione di un applicazione basata su questo tipo di framework è tipicamente costituita da un insieme di classi od oggetti le cui funzionalità sono eventualmente accessibili attraverso un interfaccia. Utilizzando mjpf un applicazione di base può estendere le sue funzionalità ricercando ed eseguendo, a run-time, dei plug-in contenuti in un path. La caratteristica fondamentale dei plug-in realizzati con mjpf plug-in consiste in un archivio Java (file jar) in cui sono presenti alcune classi che implementano l interfaccia Plug-inEntry, il cui codice è mostrato in Figura 3.5. package mjpf; public interface PluginEntry { public void initpluginentry(object param); public void startpluginentry(); public void stoppluginentry(); public void pausepluginentry(); } Figura 3.5: Codice dell interfaccia Plug-inEntry di Micro java plug-in framework Le classi che implementano l interfaccia PluginEntry costituiscono quelli che vengono definiti gli entry-point del Plug-in, ovvero degli

38 oggetti mediante i quali è possibile interagire con altri oggetti interni al plug-in, al fine di ottenere i servizi offerti. I metodi forniti dall interfaccia Plug-inEntry dovrebbero essere sufficienti alla gestione di un componente software caricato a tempo di esecuzione. Il problema è dovuto al fatto che il codice relativo ai plug-in non è noto a priori, ma è caricato a run-time per mezzo di un ClassLoader personalizzato. Quindi è necessario fare riferimento all interfaccia per l esecuzione di pochi fondamentali metodi che consentano di inizializzare ed eseguire il codice caricato. All interno di ogni Plug-in deve essere presente un file XML in cui sono descritti i suoi entry-point. Un oggetto del package mjpf chiamato Plug-inFactory permette di caricare ed ottenere a run-time dei riferimenti ai vari entry-point dei Plug-in contenuti in una directory specificata. Dato che un entry-point è una classe che implementa l interfaccia PluginEntry, deve necessariamente implementare a sua volta tutti i suoi metodi: initentry, startpluginentry, pausepluginentry e stoppluginentry. - initpluginentry(object param) Questo metodo deve essere utilizzato per implementare l inizializzazione del plug-in entry-point. Viene invocato dall applicazione di base per trasferire al plug-in i suoi oggetti fondamentali. Tipicamente viene passato come parametro un hashmap [Appendice A]. In questo modo l entry-point caricato può scegliere di volta in volta quale oggetto utilizzare, estraendolo

39 dall hashmap per mezzo del suo indice. Gli oggetti fondamentali passati ai plug-in costituiscono l unico mezzo di interazione e comunicazione tra plug-in e applicazione base. È quindi opportuno progettare l applicazione base e i suoi plug-in in modo tale che esistano degli oggetti fondamentali atti alla comunicazione e all interazione tra queste due entità. - startpluginentry() La definizione di questo metodo deve essere utilizzata per l implementazione della sequenza di eventi che attiva l esecuzione del particolare entry-point. A seconda di ciò che viene implementato nell entry-point, questo metodo può riferirsi o ai comandi per la chiusura della finestra attiva, oppure, se implementa un Thread, può contenere il codice di esecuzione dello stesso. - stoppluginentry() La definizione di questo metodo deve essere utilizzata per realizzare la sequenza di eventi che termina l esecuzione del particolare entry-point. Ad esempio, se l entry-point è un Thread, l implementazione del suo metodo stoppluginentry può contenere il codice per l arresto. - pausepluginentry() La definizione di questo metodo deve essere utilizzata per implementare la sequenza di eventi che mette in pausa l esecuzione del particolare entry-point. Quindi un entry-point può essere un estensione di qualsiasi classe, purché implementi l interfaccia PluginEntry. Una delle possibilità è

40 che gli entry-point realizzino le funzionalità del Plug-in a cui appartengono, in questo modo i metodi dell interfaccia PluginEntry possono essere sufficienti all interazione con il Plug-in. Infatti, è possibile utilizzare il metodo initpluginentry per inizializzare il Plugin con gli oggetti dell applicazione con cui deve interagire, ed il metodo startpluginentry per visualizzare una sua interfaccia. Per descrivere le caratteristiche degli entry-point di un plug-in, viene inserito nella sua root un file XML avente nome "descriptor.xml" la cui struttura viene rappresentata in Figura 3.6. <plugin> <entry> <type></type> <name></name> <main></main> <icon></icon> <tips></tips> </entry> </plugin> Figura 3.6: Struttura del file descriptor.xml I tag Type, Name e Main sono i tag più importanti per la descrizione di un entry-point. Con il tag Type è possibile organizzare gli entrypoint in famiglie, un operazione che può rivelarsi utile per associare gli entry-point dei plug-in alle voci della barra dei menu dell applicazione di base; con il tag Name è possibile associare una nome simbolico ad un entry-point, mentre con il tag Main è possibile indicare qual è la classe del plug-in che realizza l entry-point descritto. I tag Icon e Tips sono attualmente opzionali e sono stati inseriti nel

41 caso il programmatore volesse associare un immagine agli entrypoint oppure dei suggerimenti di tipo testuale. Per ottenere un riferimento agli entry-point dei Plug-in presenti in una determinata directory, nell ambito di un applicazione, è possibile utilizzare la classe PluginFactory del micro java plug-in framework. La classe PluginFactory permette di caricare tutti gli entry-point dei plug-in presenti in un URL che viene specificato come parametro del costruttore. La classe carica in modo automatico tutti i file jar contenuti nella cartella specificata, effettuando il parsing dei file "descriptor.xml" in essa contenuti. In funzione delle informazioni contenute in questi descrittori, la classe PluginFactory costruisce per ogni Plug-in entry-point un oggetto di tipo EntryDescriptor. Figura 3.7: La classe PluginFactory In Figura 3.7 è possibile notare un oggetto di tipo EntryDescriptor il quale contiene tutte le informazioni che è possibile associare ad un EntryPoint mediante il file descriptor.xml insieme ad un id univoco,

42 che viene assegnato automaticamente dalla PluginFactory al momento del caricamento. Ottenuto un oggetto PluginFactory, è possibile acquisire una Collezione degli EntryDescriptor (Figura 3.8), che è lo strumento necessario al caricamento del plug-in all interno dell applicazione. Figura 3.8: La classe EntryDescriptor L utilizzo di questo framework può fornire la possibilità di implementare ogni singola applicazione necessaria all analisi, consentendone poi ulteriori miglioramenti e modifiche, oltre che l integrazione dell estensione in fasi successive

43 3.2.3 Architettura del gestore L architettura del gestore dei plug-in è caratterizzato principalmente da tre elementi: 1) L attuatore dello stack dei plug-in, chiamato manager 2) Lo stack dei plag-in, in cui questi sono contenuti 3) L interfaccia web che li coordina La struttura e la rappresentazione di questi tre componenti viene schematizzata in figura 3.9. Figura 3.9: Struttura del funzionamento del gestore dei plug-in Il plug-in manager ha come suo elemento caratterizzante un temporizzatore con il compito di attivare il gestore ad ogni intervallo di tempo prestabilito. Nel momento in cui il plug-in manger viene

44 attivato, ha il compito di eseguire l intero stack dei plug-in presenti all interno dello store. L esecuzione di questo processo è rappresentato in Figura Temporizzatore plugin manager plugin store Esegui Applicazione Attiva il menager dei plugin getactiveelement elenco plugin da eseguire Esegue lo stack dei plugin Termine dell'operazione Figura 3.10: Sequence diagram dell esecuzione dei plug-in nel gestore L esecuzione dell applicazione comporta l attivazione del temporizzatore. Nel momento in cui viene azzerato il timer, questo attiva il plug-in manager. Quest ultimo, per poter lanciare in esecuzione l intero set dei plug-in, deve contattare lo store che fornisce l elenco dei moduli eseguibili. È da ricordare che nello store potrebbero essere memorizzati anche alcuni plug-in la cui esecuzione non è al momento necessaria. Ottenuta la risposta da parte dello store, il plug-in manager si occupa dell esecuzione in sequenza dei plug-in, seguendo l ordine passatogli. Terminata l esecuzione di ognuno di questi, viene comunicato al temporizzatore la fine del processo oppure l arresto in caso di errori inaspettati. Il temporizzatore, a questo punto, è pronto per lanciare

45 nuovamente, al tempo prestabilito, l esecuzione del plug-in manager. Questo comporta il ripetersi del processo appena descritto. L applicazione viene interamente gestita dall interfaccia grafica web che si occupa di settare le impostazioni legate ai plug-in e dell inserimento di queste nello store. Il protocollo utilizzato per la configurazione dello store è raffigurato in Figura Figura 3.11: Configurazione dello store dei plug-in L interfaccia grafica web è caratterizzata da un insieme di strumenti che permettono la configurazione dei plug-in all interno dello stack. Il protocollo si compone di 3 parametri base: 1) Il plug-in caratterizzato da nome sorgente e file di configurazione 2) Un flag di Activation caratterizzante l esecuzione 3) La posizione nello stack di esecuzione del plug-in

46 Il primo, raccoglie fisicamente, il codice sorgente del plug-in e un etichetta contenente il nome, necessaria per l associazione alle impostazioni specificate. I restanti due, caratterizzano le impostazioni al quale viene associato il nome: il flag di Activation indica la presenza o meno del file all interno dello stack di esecuzione, mentre il terzo parametro identifica la sua posizione. Al termine della fase di descrizione dell architettura del gestore, si determinare la struttura del plug-in manager che implementa totalmente l ambiente descritto. Anzitutto è necessario determinare ciò che identifica lo strore. Questo è una directory contenente i file sorgente dei plug-in, ed un file XML che ne rappresenta le informazioni. Per implementare questi concetti è necessario estendere il file XML, necessario alla configurazione dei plug-in, in micro java plug-in framework con questi due ultimi flag. La struttura del file è rappresentata in Figura

47 <plugin> <entry> <type></type> <name></name> <main></main> <icon></icon> <tips></tips> <activation></<ctivation> <posizion></position> </entry> </plugin> Figura 3.12: struttura del file XML di configurazione dello store A garanzia della corretta esecuzione della pipeline dei plug-in, la posizione delle entry caratterizzanti il singolo plug-in, deve rispettare la posizione specificata. Il plug-in manager è caratterizzato da un elemento chiamato RemindTask, la cui struttura è rappresentata nel class diagram riportato in Figura

48 Figura 3.13: Class diagram del oggetto RemindTask L oggetto RemindTask che estende l oggetto TimerTask, permette di combinare le funzioni del timer e le funzioni del manager. Mentre i metodi EndToWork, dindkeywords e ReadyToWork sono di semplice configurazione, il metodo che effettua effettivamente la chiamata della pipeline dei plug-in è il metodo run. In Figura 3.14 è rappresentato l attivity diagram del metodo run. Per poter iniziare l applicazione ed effettuare il naming dello store, tale metodo run utilizza il file XML di configurazione, passato all oggetto tramite costruttore; da questo recupera l indirizzo del file XML contenente la pipeline dei plug-in. Se esiste, ne esegue consecutivamente l elenco. Il metodo termina nel momento in cui tutti i plug-in hanno terminato la loro computazione

49 Recupera il file di configurazione Esiste file Recupera stack plugin [si] [no] Esiste [si] Esegui pipeline [no] Aspetta il temine dell esecuzione Figura 3.14: Activiti diagram del metodo run Dopo aver analizzato il gestore dei plug-in è fondamentale andare a determinare come questi debbano essere composti affinché possano essere riconosciuti dal gestore

50 3.3 Plug-in Affinché il gestore riesca a eseguire un plug-in è necessario che questo: 1) Estenda l interfaccia PluginEntry. 2) Abbia delle regole rigide di impostazione. 3) Fornisca uno standard per interagire con l esterno. L implementazione dell interfaccia PluginEntry garantisce nella programmazione, particolarmente in quella orientata agli oggetti, di venire a conoscenza dell'insieme dei dati e dei metodi visibili all'esterno di un oggetto. Essa fornisce essenzialmente un collegamento tra una sorgente di informazioni ed una destinazione, un formato standard che consente lo scambio di dati a livello di software. L implementazione dell interfaccia PluginEntry ne fornisce gli strumenti l esecuzione in fase di run-time, permettendo così il suo raggiungimento da fonti esterne ad essa. Più complessa è l identificazione di una struttura standard che garantisca sia la sua atomicità che la possibilità di interazione con l esterno Struttura di un plug-in L interazione da parte del manager con ogni singolo plug-in viene permessa mediante la conoscenza a priori da parte del gestore di uno standard di comunicazione. Tale standard viene definito dal dall interfaccia PluginEntry. In Figura 3.15 è schematizzata la comunicazione tra gestore e plugin

51 Il plug-in manager non conosce nulla del plug-in, tranne dove questo è memorizzato e che è questo ad implementare l interfaccia PluginEntry. Tuttavia, queste poche informazioni sono sufficienti perché possa lanciare la sua esecuzione. Figura 3.15: Struttura della comunicazione tra gestore e plug-in Precedentemente alla sua invocazione, al plug-in viene associato un file di configurazione che ne setta le impostazioni necessarie alla sua esecuzione. Questo è lo strumento dal quale il plug-in recupera le informazioni necessarie alla totalità delle sue operazioni. Questo permette di garantire una certa atomicità del plug-in. L implementazione di PluginEntry deve rispettare le regole definite nel component diagram (Figura 3.16). Questo diagramma descrive gli elementi comuni caratterizzanti ogni plug-in; alla base vi è l interfaccia, lo strumento che permette al gestore di eseguire il plugin. Ognuno di questi, utilizza l implementazione solo per permettere la comunicazione tra l esterno e l esecutore del plug-in. Quest ultimo

52 potrebbe essere composto da più parti o includere svariate librerie con l unico scopo di analizzare i dati in ingresso, se presenti, e restituire un risultato dalla sua computazione. L unico strumento necessario all esecutore è il gestore delle configurazione che ha il compito di recuperare le informazioni necessarie al plug-in. Figura 3.16: Component diagram descrivente gli elementi caratterizzanti un plug-in Protocollo di comunicazione e strumenti di configurazione Fra gli attributi che caratterizzano ogni singolo plug-in, oltre alla più volte citata implementazione dell interfaccia PluginEntry, vi è la necessità di stabilire delle regole che permettano: 1) Il recupero di parametri di configurazione per il plug-in 2) Il salvataggio dei dati da lui computati. 3) Il salvataggio di dati da lui immagazzinati

53 Queste regole possono essere gestite e realizzate mediante l introduzione di un particolare strumento definito file di configurazione. Ognuno dei plug-in realizzati deve contenere gli strumenti per recuperare questo file di configurazione che setta tutte le impostazioni necessarie alla corretta esecuzione dell applicazione. Per ogni plug-in realizzato è necessario fornire un eventuale documentazione in cui sono indicate le modalità di compilazione del documento. Per garantire che i plug-in comunichino tra di loro in modo univoco si è voluto creare un file di configurazione generale, in cui poter specificare il formato dei dati in input e in output di ogni computazione. Questo a garanzia di flessibilità per quanto riguarda i nomi dei campi, così da consentire anche l adeguamento successivo agli standard richiesti dal web semantico, e di intercambiabilità dell esecuzione di un plug-in. Al fine di fornire a tutti i plug-in uno strumento facilmente leggibile e comodo da manipolare, si è pensato di realizzare il documento in linguaggio XML. In Figura 3.17 è riportata la struttura del file di configurazione che garantisce una comunicazione omogenea tra i vari plug-in

54 <config> <items> <item>item</item> <name>name</name> <weblog>weblog</weblog> <author>author</author> <url>url</url> <rssurl>rssurl</rssurl> <atomurl>atomurl</atomurl> <inboundblogs>inboundblogs</inboundblogs> <inboundlinks>inboundlinks</inboundlinks> <lastupdate>lastupdate</lastupdate> <title>title</title> <excerpt>excerpt</excerpt> <created>created</created> <permalink>permalink</permalink> <tapi>blog-analytics</tapi> <document>document</document> <result>result-summary</result> <query>search-key</query> <querycount>items-number</querycount> <id>id</id> <type>type</type> <source>search-engine</source> <content>content</content> </items> <technorati> </technorati> /*nome di un plug-in*/ <google> </google> /*nome di un plug-in*/ <ir> </ir> /*nome di un plug-in*/ <merger> </merger> /*nome di un plug-in*/ </config> Figura 3.17: File XML di configurazione L idea che sta alla base del file di configurazione è che ciascuno di questi, se desiderato, possa contenere tutte le informazioni necessarie a configurare l intera pipeline dei plug-in. Quindi, durante la sua ideazione, è stata considerata anche l eventualità che potessero essere inseriti anche tutti i parametri necessari ad ognuno. Lo standard richiesto è che il nodo padre sia il nodo config, quindi, all interno di esso, in ciascun figlio di config, sono contenute le differenti configurazioni, raggruppate per nome del plug-in che li richiede. Il tag che invece ha il compito di gestire lo standard di input ed output dei dati è il tag items. Questo tag contiene come vengono

55 nominati i dati. Una modifica del contenuto di questi tag comporta la rinomina di tutto il materiale d output dell intera pipeline dei plug-in. Questo viene realizzato mediante l utilizzo di un oggetto Config, la cui struttura è visibile nel class diagram di Figura La classe ha il compito di interpretare la configurazione dei dati e fornirli alle esecuzione di ogni singolo plug-in. L oggetto config viene direttamente invocato dal plug-in in fase di recupero dei dati. Diversamente, in fase di output dei dati, la classe è incapsulata all interno di item nel metodo tostring() che recupera i parametri per generare l intero output associato

56 Figura 3.18: Class Diagram classe Config e Items (per motivi di layout sono stati rimossi i parametri dai costruttori)

57 3.3.3 Gli estrattori Alcuni, tra i più importanti plug-in presenti nella pipeline, vengono definiti estrattori [Figura 3.9]. Questi strumenti hanno il compito recuperare dai motori di ricerca tutto il materiale necessario all analisi, compiendo tre operazioni necessarie: 1) Download del risultato dell indicizzazione del motore di ricerca 2) Parsing della pagina ed estrazione dei commenti 3) Salvataggio dei commenti nel formato prestabilito. Una caratteristica deducibile riguardante gli estrattori è la loro posizione al principio dello stack della pipeline, infatti non raccolgono nessun dato in input. In Figura 3.19 viene rappresentata l architettura di un estrattore. Figura 3.19: Architettura di un estrattore

58 L estrattore recupera i dati dal web, e dopo averli analizzati e categorizzati, li salva raggruppandoli in un file XML, la cui struttura è a sua volta recuperata dal un altro file XML di configurazione. Ogni estrattore è caratterizzato da due elementi fondamentali: 1) La classe Search [Figura 3.20] 2) L interfaccia Response [Figura 3.21] La classe Search definisce in particolare due metodi abstract createquery e getsearchresult. La presenza di questi metodi serve a forzare lo sviluppatore di un estrattore a definirli obbligatoriamente poichè sono necessari rispettivamente a preparare la query per interrogare il motore di ricerca e a recuperarne il risultato dell interrogazione. Il metodo downloadpermalink è utile per recuperare i permalink salvati nell interrogazione, per salvare i file associati. Figura 3.20: Class diagram classe Search Con la definizione dell interfaccia response si vuole forzare lo sviluppatore a rispettare rigide regole nello sviluppo dello strumento che si occupa della memorizzazione dei risultati dell indicizzazione. La definizione di un interfaccia per la realizzazione di questa operazione è necessaria per poter nascondere allo strumento che

59 impartisce il comando di indicizzazione quale sia la fonte da cui l indicizzazione è tratta. Figura 3.21: Class diagram interfaccia Response Al termine della caratterizzazione della struttura standard di un estrattore, si vuole ora analizzare l architettura alla base dell estrattore interagente con Technorati e dell estrattore interagente con Google Blogs. Riguardo al loro funzionamento vi sono alcune restrizioni da considerare affinché si possa interagire facilmente con questi due motori. Technorati [Appendice A] mette a disposizione un numero di pagine di indicizzazioni giornaliere limitato. Da un analisi approfondita dei risultati forniti traspare inoltre che il numero di indicizzazioni dichiarate non è corretto, ma molto sovrastimato. Quindi, a causa del limitato numero di indicizzazioni disponibili per ogni estrattore e l alta sovrastima fornita, è necessario interrompere l indicizzazione nel momento in cui si raggiunge il reale numero di indicizzazioni

60 3.3.4 Gli attuatori Con il termine attuatori vengono identificati una serie di plug-in caratterizzati da operazioni di manipolazione dei dati. Dato che non si vuole fissare l ordine di esecuzione dei plug-in in fase di programmazione, è necessario che ogni attuatore acquisisca dati e li modifichi pur lasciando inalterata la loro struttura. A supporto di questa scelta si introduce nuovamente il file di configurazione dell architettura degli item, che informa il plug-in su come deve salvare e recuperare le informazioni presenti. In Figura 3.22 viene mostrato il comportamento standard di un attuatore. Figura 3.22: Comportamento di un attuatore Gli attuatori sviluppati durante il periodo di tesi sono: 1) Il plug-in Downloader 2) Il plug-in Merger 3) Il plug-in IR Il plug-in Downloader ha il compito di scaricare per ogni item il documento a cui è associato. La classe che caratterizza questo plug-in è descritta nel class diagram di Figura

61 La classe analizza la portabilità di connessioni parallele disponibili dalla rete che servono per scaricare i documenti associati a ciascun item. L algoritmo utilizza la regola di sbarramento a barriera, ovvero, raggiunto il numero di connessioni massime richieste si mette in attesa della conclusione del processo per ogni thread eseguito. Solo ad operazione conclusa da parte di ognuno di essi, lancia ancora nuove connessioni a nuovi documenti. L algoritmo termina nel momento in cui sono esaurite le pagine da scaricare. Figura 3.23: Class diagram classe Downloader Il plug-in Merger nasce con la necessità di raggruppare i risultati di dell indicizzazione di ogni estrattore che restituisce come output un file XML. L architettura viene rappresentata in Figura

62 Figura 3.24: Class diagram Classe Merger Al termine dell esecuzione di questo plug-in, si ottiene un unico file contenente i risultati di ogni estrattore, in cui il parametro searchengine risulta essere l unico strumento per la sua identificazione di origine. Il plug-in IR invece sfrutta una particolare libreria, HTMLParser, per estrarre a partire dall excerpt dell indicizzazione l intero blocco che la contiene, essendo questo più esteso. Questa operazione si rende necessaria per escludere dall analisi tutto quel testo definito contorno della pagina web. La libreria HTMLParser permette di utilizzare una pagina HTML come se fosse una pagina XML, quindi permette di isolare porzioni di pagina. La classe BlogParser implementa l estrazione del contenuto di interesse da una pagina, la cui struttura e rappresentata in Figura

63 Figura 3.25: Class diagram classe BlogParser Il metodo principale della classe è exractcontent il quale effettua l operazione di estrazione del contenuto a partire dall excerpt. Ottenuto e ripulito l excerpt dal item (mediante metodo cleanexcerpt ), viene ricercata la sua presenza all interno del documento scorrendolo blocco per blocco, a partire da quelli più piccoli. L algoritmo termina appena viene identificato il blocco più piccolo che lo contiene per la sua totalità. Questa funzionalità, effettuata singolarmente per ciascun item, viene utilizzata dal metodo XMLDatasetManager che si occupa di eseguirla per ogni item presenti nel documento analizzato (Figura 3.26)

64 Figura 3.26: Class diacram oggetto XMLDatasetManager L esecuzione del flusso di chiamate a exractcontent di BlogParser viene realizzato dal metodo loader che si occupa di eseguire e di recuperare il documento e l excerpt associato ad ogni item, ed infine effettua la chiamata passando i due elementi come parametri. 3.4 L'interfaccia grafica web Terminata la fase di progettazione dell applicazione, si vogliono andare a definire le caratteristiche e le funzionalità che l applicazione deve necessariamente fornire affinché la si possa gestire semplicemente ed intuitivamente. L interfaccia grafica web si compone principalmente di due grandi sessioni, la parte pubblica denominata report e la parte amministrativa denominata adminlogin

65 Il report raccoglie tutte le informazioni recuperate dalla fase di indicizzazione ed analisi, mentre adminlogin ha come scopo principale la gestione dell intera fase di analisi. Questa parte amministrativa contiene il modulo di selezione delle indicizzazioni da pubblicare, il modulo per la gestione delle interrogazioni alla pipeline ed infine il modulo di gestione dei plug-in. Queste operazioni risultano essere estremamente delicate, pertanto si è ritenuto necessario realizzare rigide politiche di sicurezza al fine di garantire l inaccessibilità a terzi. Questa scelta è principalmente legata al modulo di gestione dei plug-in, che richiede il caricamento di codice eseguibile all interno del server. Per gestire gli accessi, si è utilizzato regole di gestione dei ruoli [Appendice]; ad ogni ruolo è assegnato, secondo le proprie autorizzazioni, l accesso ad una cartella. Ad ogni utente viene poi associato un ruolo. Lo schema relazionale in Figura 3.27 raccoglie le tabelle che implementano le politiche di gestione dei ruoli

66 Figura 3.27: Schema ER implementa gestione dei ruoli Le tabelle aspnet_membership e aspnet_user hanno il compito di gestire un utente ed i relativi dati associati. L associazione tra utente e ruolo è lasciata alla tabella asp_netuserinrole, ruoli che vengono gestiti dalla tabella aspnet_role. In ultimo, l associazione tra la parte di applicazione utilizzabile e il ruolo responsabile viene definito dalla tabella application. Le altre tabelle sono esclusivamente di monitoraggio. L interfaccia grafica web, dal punto di vista dell utente, contiene unicamente un report che riassume i risultati della fase di recupero e manipolazione dei dati. Uno degli obiettivi futuri è anche estendere questi report contenenti tutte le informazioni ricavate dalla fase di comprensione delle discussioni. Dal punto di vista dell amministratore, l interfaccia grafica è ricca di funzionalità che permettono di gestire l intero motore di estrazione, manipolazione e comprensione

67 Nello use case diagram di Figura 3.28 viene schematizzato il procedimento di pubblicazione dei risultati ottenuti. Figura 3.28: Pubblicazione risultati interrogazione L interfaccia grafica permette la pubblicazione dei risultati, previa precedente autentificazione, mediante una semplice selezione della fonte d origine. Principalmente le fonti a disposizione sono file XML che rispettano il formato dei dati forniti dal file di configurazione. Un altra funzionalità fornita dal interfaccia grafica è la gestione dei plug-in, descritta dell use case diagram di Figura

68 Figura 3.29: Gestione e configurazione dei plugin Per quanto riguarda la gestione del plug-in l interfaccia fornisce tre principali funzionalità: 1) Caricamento dei plugin 2) Inserimento di un plug-in caricato nella pipeline 3) Ordinamento dei plug-in nella pipeline La prima funzionalità viene fornita da una form che permette il caricamento dei sorgenti del plug-in e del file di configurazione, preceduti dalla definizione del nome e dal numero di versione

69 L ultimo componente in analisi è il gestore delle ricerche che, previa autentificazione, permette l inserimento di un interrogazione, la sua eliminazione e in ultimo consente di salvare e modificare il file di configurazione delle ricerche; file che interagisce direttamente con la pipeline. In Figura 3.30 è riportato lo use case diagram di questo componente. Figura 3.30: Gestione interrogazioni alla pipeline dei plugin

70 Capitolo 4 Sviluppo dell applicazione

71 Terminata la fase di progettazione dell architettura dell applicazione si vuole proseguire l analisi dell applicazione, descrivendo le scelte implementative dei principali componenti. L analisi si sofferma sull identificazione dei principali plug-in: 1) Extractor Google 2) Extractor Technorati 3) Merger 4) Downloader 5) IR Inoltre l analisi si sofferma anche sulle funzionalità dell applicazione web descritte nella fase di progettazione dell architettura. 4.1 Scelte implementative per la realizzazione dei Plug-in Il primo Plug-in in analisi è Extractor Google la cui struttura viene descritta nel class diagram di Figura 4.1 e Figura 4.5 Il primo componente in analisi è la classe GoogleSearch che estende la classe Search, e quindi definisce i suoi metodi abstract. Il suo obiettivo è quello di interrogare Google Blogs. Dato che, per scelta di Google, vengono restituiti un massimo di mille risultati, il metodo querycount restituisce 1000, mentre il metodo createquery ha il compito di generare il path per contattare la pagina web. Per effettuare questa operazione esistono due configurazioni, la prima in cui le interrogazioni vengono eseguite sequenzialmente, mentre nella seconda si utilizza un pool di connessioni. La scelta dell una a scapito dell altra non fornisce notevoli vantaggi, data la

72 necessità di rallentare le interrogazioni. Il metodo che si occupa di effettuare le interrogazioni sequenziali è il metodo getresponse. Figura 4.1: Class diagram classi GoogleSearch e ExtractorGoogleThread Il metodo getresponse ha il compito di scaricare il codice sorgente della pagina risultante dall interrogazione e passarlo al costruttore della classe GoogleResponse [Figura 4.2] il quale effettua il parsing della pagina

73 Figura 4.2 Codice sorgente del metofo getresponse La gestione delle interrogazioni, utilizzando un pool di connessioni viene realizzata dalla classe ExtractorGoogleThread che implementa un thread il quale interroga in modo parallelo il motore di ricerca. In Figura 4.3 viene mostrato il metodo run della classe ExtractorGoogleThread Figura 4.3 Codice sorgente del metodo run che gestisce il pool di connessioni

74 Il thread realizza l operazione con l esecuzione del metodo run che genera le Response mediante l impiego della classe Analyser, la cui struttura viene descritta in Figura 4.4. Figura 4.4: Class Diagram classe Analyser Il parsing della pagina viene realizzato in una fase successiva dalla classe GoogleResponse che implementa l interfaccia Response ; questa pagina corrisponde alla pagina del motore di ricerca, ed è quindi una collezione di Item. La classe definisce un costruttore il quale riceve in input il testo del risultato dell interrogazione ed il file XML di configurazione necessario per stabilire come interpretare le informazioni che estrapola dal primo. La struttura della classe GoogleResponse viene rappresentata nel class diagram di Figura

75 Figura 4.5: Class diagram classe GoogleResponse I metodi principali della classe Google Response sono getitems, il quale si occupa del parsing, ed il metodo tostring, che invoca il precedente e restituisce un documento XML contenente la collezione di items sfruttando il file di configurazione. I due metodi sono definiti rispettivamente in Figura 4.6 e in Figura

76 Figura 4.6: Metodo getitems Il metodo getitems ha il compito analizzare il testo, estrarre quello relativo al commento e passarlo alla classe item che lo analizza e scompone. La classe Item identifica un testo di interesse, lo analizza e lo scompone, ed in ultimo ne restituisce il contenuto sotto forma di nodo XML

77 Figura 4.7: metodo tostring Il metodo tostring ha il compito di trasformare l oggetto GoogleResponse in un documento XML; pertanto, dopo aver scritto l intestazione, recupera il metodo tostring dell oggetto item che si occupa di restituire la parte di documento ad esso associato, recuperando le intestazioni dal file di configurazione. Il recupero di un documento dalla rete viene effettuato dal metodo Net.HttpRequest mostrato in Figura

78 Figura 4.8: Metodo Net.HttpRequest Questo metodo statico, appartenente alla classe Net, permette di scaricare efficientemente il contenuto di una pagina web. Il secondo estrattore analizzato è l estrattore Technorati. Questo effettua le stesse operazioni realizzate dall Estrattore Google con un unica differenza per quanto riguarda la sorgente dei dati, e conseguentemente anche le operazioni di parsing della pagina. In Figura 4.9 è riportato il class diagram della classe TechnoratiResponse

79 Figura 4.9: Class diagram della classe TechnoratiResponse Questa classe ha funzionalità e comportamento analogo a quello della Response di Google. Allo stesso modo anche la classe TechnoratiSearch è decisamente simile a quella descritta nel plug-in di Google; differisce esclusivamente per quanto concerne la gestione della fonte sorgente. In Figura 4.10 viene presentata la sua struttura

80 Figura 4.10: Class diagram di TechnoratiSearch e ExtractorTechnoratiThread A differenza dell implementazione effettuata nel ExtractorGoogle, in questa classe l utilizzo del metodo getresponse o getresponselistparallel comporta numerose differenze che derivano dalla mancanza di un elemento che ritarda le interrogazioni al motore di ricerca, effettuando così un elevato numero di connessioni contemporanee

81 Questo è un vantaggio ed è fornito dal metodo getresponselistparallel che esegue con una regola definita a barriera l esecuzione dei thread. Tale metodo è riportato in Figura Figura 4.11: metodo getresponselistparallel Questo metodo impacchetta le richieste in thread, e si mette in attesa della loro risposta. Terminata l esecuzione di tutti i thread lanciati, ne impacchetta le serie successive; l algoritmo termina nel momento in cui tutte le richieste cessano. Per effettuare questa operazione getresponselistparallel utilizza la classe ExtractorTechnoratiThread che esegue la richiesta

82 In Figura 4.12 viene descritta la classe. Figura 4.12 Classe ExtractorTechnoratiThread La classe ExtractorThecnoratiThread impacchetta ed esegue la richiesta http. Terminata la fase di descrizione degli estrattori, l analisi prosegue andando a considerare il plug-in Downloader ; questo ha il compito di recuperare l intero documento associato ad un commento, affinché sia sfruttabile per eventuali elaborazioni future. La struttura del plug-in Downloader è osservabile in Figura

83 Figura 4.13: Architettura plug-in Downloader La classe Downloader corrisponde ad un thread che si occupa di recuperare le pagine dal web. La classe viene eseguita da un metodo static chiamato DownloadPermalink che si occupa della gestione dei perma-link e del recupero del testo associato. Il codice del metodo viene mostrato in Figura Il metodo DownloadPermalink recupera l elenco dei permalink da getpermalinksmap e li passa ad un vettore di thread Downloader che ne recupera il contenuto. L algoritmo, dopo aver inviato le richieste, si mette in attesa del termine della loro esecuzione, affinché possa in seguito inviare nuovamente le richieste. L algoritmo termina quando tutte queste sono ultimate

84 Figura 4.14: Metodo DownloadPermalink Un ulteriore plug-in in analisi è il Merger ; questo ha il compito di unire i risultati sia di estrazioni giornaliere differenti sia da estrattori differenti. Questo plug-in si compone principalmente di un unica classe Merger, che ha lo scopo di concatenare due o più documenti risultanti dalle precedenti fasi di estrazione. La classe si pone come riferimento un documento che utilizza come punto di appoggio, a questo concatena altri documenti che gli vengono passati attraverso il metodo add. In Figura 4.15 è riportato il class diagram della classe Merger

85 Figura 4.15: Classe Merger In Figura 4.16 viene riportato il codice sorgente del metodo add, che implementa la concatenazione di un nuovo elemento al documento di riferimento. Figura 4.16: Metodo add della classe Merger Il metodo add, preso in ingresso il path di un documento, lo analizza, ed estrae una lista di commenti che sono passati al metodo addinobjectmerger il cui codice sorgente viene presentato in Figura

86 Questo metodo effettua il controllo della presenza di item replicati all interno del documento preso come riferimento, e di questi non effettua l inserimento. Figura 4.17: Metodo addinobjectmerger del plugin Merger L ultimo plug-in in analisi è IR, acronimo di Information Retrieval che letteralmente significa recupero d'informazioni; è l'insieme delle tecniche utilizzate per il recupero mirato dell informazione in formato elettronico. Per "informazione" si intendono tutti i documenti, i metadati, i file presenti all'interno di banche dati o nel world wide web. Il plug-in IR ha il compito di recuperare dal documento associato al permalink le informazioni necessarie alle fasi successive. Per un corretto funzionamento di questo plug-in è necessario che nella pipeline dei plug-in sia preceduto da Downloader, questo, infatti, recupera i documenti e li memorizza localmente in modo da preparare l applicazione all esecuzione di IR. IR ha come obiettivo l estrazione dal documento del commento, eliminandone le parti non di interesse. In Figura 4.18 è riportata la classe principale del plug-in IR

87 Figura 4.18: Class diagram Classe XMLDatasetMenager A questa classe viene passato come parametro il path di un documento XML da analizzare. Questo documento XML contiene gli item risultanti dalla computazione dei plug-in che precedono IR. La classe estrae dal documento ogni singolo item che viene passato come parametro alla classe BLogParser. La maggior parte di queste operazioni viene realizzata dal metodo loader presentato in Figura

88 Figura 4.19: Metodo loader della classe XMLDatasetManager Il metodo scorre tutti i nodi del documento, estrae il nodo corrispondente all item e lo passa come parametro del metodo parser di BlogParser. Questa classe recupera il contenuto del documento associato all item e ne estrae informazioni che l indicizzazione, effettuata dai motori di ricerca, aveva trascurato. L architettura della classe BlogParser può essere analizzata in Figura

89 Figura 4.20: Classe BlogParser appartenente al plug-in IR La funzione principale della classe viene realizzata dal metodo parser (Figura 4.21) che recupera e setta un item come variabile locale prima di lanciare il metodo parsecontent e di restituire il risultato della sua esecuzione. Figura 4.21: Metodo parser della classe BlogParser Il metodo parsecontent, a sua volta, recupera e setta il contenuto di interesse dal documento, sfruttando il metodo extractcontent. Il codice sorgente del metodo viene analizzato in Figura

90 Figura 4.22: Metodo parsercontent della classe BlogParser Il metodo extractcontent passa l analisi alla classe TagExplorer, dopo aver ripulito il documento da possibili tag pericolosi. In Figura 4.23 viene mostrato il metodo extractcontent. Figura 4.23: Metodo extractcontent della classe BlogParser Il TagExplorer implementa l interfaccia NodeVisitor, che come si può facilmente dedurre, sfrutta la regola di design pattern Visitor

91 Il design pattern Visitor rappresenta un' operazione che deve essere eseguita sugli elementi di una gerarchia di oggetti. La nuova operazione viene definita senza modificare le classi degli oggetti della gerarchia su cui opera. Essa è determinata da due elementi: dal tipo concreto di Visitor (es: TagExplorer ) e dal tipo concreto dell Element (es: Parser ). La classe TagExplorer che rappresenta l'operazione, viene applicata in fase di esecuzione alla gerarchia di oggetti. L utilizzo di un design pattern Visitor risulta meno efficace quando una nuova operazione deve essere applicata ad una gerarchia di oggetti, dove esiste una classe comune. In un architettura di questo tipo, l introduzione di una nuova operazione comporterebbe la ridefinizione dell operazione in ognuna delle classi ereditanti. Al contrario, aggiungere una nuova operazione nel caso in cui gli oggetti della gerarchia appartengano a diverse gerarchie di classi, ovvero non abbiano una classe base comune, comporta la duplicazione della logica dell operazione. Questo è risolvibile con l introduzione di un pattern Visitor il quale implica unicamente la definizione dell operazione all interno dello stesso. Questo design pattern semplifica l'aggiunta di una nuova operazione comune alle diverse classi di una gerarchia di oggetti, aiuta ad evitare duplicazioni della logica di implementazione della nuova operazione e evita duplicazioni della stessa quando gli oggetti appartengono a gerarchie di classi distinte. Il principale vantaggio nell utilizzo del pattern Visitor rimane però l implementazione di operazioni cumulative su tutti gli oggetti della gerarchia

92 In Figura 4.24 viene descritta la struttura della classe TagExplorer ed in Figura 4.25 l interfaccia NodeVisitor che TagExplorer estende. Figura 4.24: Classe TagExplore Questo Visitor passa in rassegna ogni tag del documento HTML e li memorizza in un ArrayList. Invocato il metodo getcontent, questo restituisce il tag più piccolo contenente l intero excerpt. Infatti, dato che quest ultimo contiene

93 sempre le prime parole del testo indicizzato, il tag più piccolo che lo contiene nella sua interezza risulta essere il content. Figura 4.25: Classe abstract NodeVector Terminata l esecuzione di queste operazioni, gli item sono pronti per la successiva fase di comprensione ed analisi delle discussioni

94 4.2 Scelte implementative nella realizzazione Interfaccia Grafica Web Terminata la fase di analisi dell implementazione dei plug-in più significativi presenti nella pipeline, si va ora a descrivere come sono state sviluppate le scelte implementative delle funzionalità offerte dall interfaccia grafica web. La prima funzionalità in analisi è messa a disposizione degli utenti. Si tratta di un insieme di tabelle che permettono la visualizzazione dei risultati ottenuti dall esecuzione della pipeline dei plug-in. In Figura 4.26 è mostrata la pagina a disposizione degli utenti come resoconto. Figura 4.26: Visualizzazione dei risultati della pipeline Questa pagina web è stata interamente sviluppata con i pattern che la piattaforma DotNet [Appendice] fornisce per lo sviluppo web

95 L applicazione introduce la combinazione di DataList, GridView e FormView con l oggetto SqlDataSource che ne riempie i campi. Alla base di quest applicazione vi è la tabella ITEMS visibile in Figura 4.27 Figura 4.27 Struttura della tabella ITEMS Questa tabella permette la memorizzazione in un database dei dati risultanti dalla computazione della pipeline. Le tabelle visualizzate dalla pagina web corrispondono a delle query nella tabella ITEMS. Oltre alle funzionalità a disposizione dell utente vi sono quelle a disposizione dell amministratore. La prima è la pubblicazione dei risultati della pipeline. Questa funzionalità permette all amministratore di scegliere il momento in cui poter visualizzare i risultati dell analisi dato che, prima della sua pubblicazione, vi potrebbe essere la necessità di consultarli e modificarli. La

96 pubblicazione consiste nel caricamento dei dati forniti dalla pipeline all interno della tabella ITEMS L evento di popolamento della tabella ITEMS associato ad un pulsante è mostrato in Figura 4.28 Figura 4.28: Metodo associato all evento di pubblicazione dei risultati della pipeline Il metodo btnload_click, associato all evento di pubblicazione dei risultati della pipeline, recupera i dati e li incapsula in una query che poi esegue. Un ulteriore funzionalità fornita all amministratore dall interfaccia web è l introduzione di parole o argomenti che la pipeline va poi a computare. In Figura 4.29 viene mostrata l interfaccia visualizzata dall amministratore per la gestione delle ricerche

97 Figura 4.29: Interfaccia grafica associata alla funzionalità di ricerca La pagina descritta si compone di due funzionialità interdipenti. In una prima fase vengono inseriti all interno della tabella sulla sinistra le chiavi per l analisi; nella una seconda fase, generata dalla pressione del pulsante Start,a sua volta contenuto nella finestra Execute stack search, vengono inviate alla pipeline le chiavi da analizzare. La prima funzionalità descritta viene realizzata dal metodo btnsearch_click illustrato in Figura

Motori di ricerca di ultima generazione: il web semantico

Motori di ricerca di ultima generazione: il web semantico Motori di ricerca di ultima generazione: il web semantico Quando parliamo di vie di comunicazione di un sistema EWS, è opportuno pensare a quale strada può essere la più rapida per il recupero dei dati

Dettagli

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

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

Dettagli

PROGETTI DISPONIBILI IL CORSO DI PROGETTO DI RETI E SISTEMI INFORMATICI

PROGETTI DISPONIBILI IL CORSO DI PROGETTO DI RETI E SISTEMI INFORMATICI PROGETTI DISPONIBILI IL CORSO DI PROGETTO DI RETI E SISTEMI INFORMATICI 1 Web Link Monitor... 2 2 Database Browser... 4 3 Network Monitor... 5 4 Ghost Site... 7 5 Copy Search... 9 6 Remote Audio Video

Dettagli

PROGETTO - Ingegneria del Software. Università degli Studi di Milano Polo di Crema. Corso di laurea in Scienze Matematiche, Fisiche e Naturali

PROGETTO - Ingegneria del Software. Università degli Studi di Milano Polo di Crema. Corso di laurea in Scienze Matematiche, Fisiche e Naturali Università degli Studi di Milano Polo di Crema Corso di laurea in Scienze Matematiche, Fisiche e Naturali INFORMATICA Corso di Ingegneria del Software progetto IL SISTEMA CALENDAR Presentato al dott. Paolo

Dettagli

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

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

Dettagli

Tecniche di DM: Link analysis e Association discovery

Tecniche di DM: Link analysis e Association discovery Tecniche di DM: Link analysis e Association discovery Vincenzo Antonio Manganaro vincenzomang@virgilio.it, www.statistica.too.it Indice 1 Architettura di un generico algoritmo di DM. 2 2 Regole di associazione:

Dettagli

Internet Architettura del www

Internet Architettura del www Internet Architettura del www Internet è una rete di computer. Il World Wide Web è l insieme di servizi che si basa sull architettura di internet. In una rete, ogni nodo (detto host) è connesso a tutti

Dettagli

SISTEMA DI PREFETCHING CLIENT-SIDE PER TRAFFICO WEB

SISTEMA DI PREFETCHING CLIENT-SIDE PER TRAFFICO WEB UNIVERSITÀ DEGLI STUDI DI ROMA TOR VERGATA Facoltà di Ingegneria Corso di Laurea Specialistica in Ingegneria Informatica Progetto per il corso di Ingegneria del Web SISTEMA DI PREFETCHING CLIENT-SIDE PER

Dettagli

Enrico Fagnoni BOTK IN A NUTSHELL

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

Dettagli

Sistemi Informativi e WWW

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

Dettagli

I punti preliminari da trattare

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

Dettagli

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

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione Elementi di Informatica e Programmazione Il Sistema Operativo Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Docente: Daniela Fogli Cos

Dettagli

Lezione 8. Motori di Ricerca

Lezione 8. Motori di Ricerca Lezione 8 Motori di Ricerca Basi di dati Un campo prevalente dell applicazione informatica è quello costituito dall archiviazione e dalla gestione dei dati (basi di dati). Sistema Informativo. Un sistema

Dettagli

Progetto di Applicazioni Software

Progetto di Applicazioni Software Progetto di Applicazioni Software Antonella Poggi Dipartimento di Informatica e Sistemistica Antonio Ruberti SAPIENZA Università di Roma Anno Accademico 2010/2011 Questi lucidi sono stati prodotti sulla

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica Laboratorio di Informatica Introduzione al Web WWW World Wide Web CdL Economia A.A. 2012/2013 Domenica Sileo Università degli Studi della Basilicata Introduzione al Web : WWW >> Sommario Sommario 2 n World

Dettagli

Il clustering. Sistemi Distribuiti 2002/2003

Il clustering. Sistemi Distribuiti 2002/2003 Il clustering Sistemi Distribuiti 2002/2003 Introduzione In termini generali, un cluster è un gruppo di sistemi indipendenti che funzionano come un sistema unico Un client interagisce con un cluster come

Dettagli

Service Discovery Protocol (SDP) Bluetooth

Service Discovery Protocol (SDP) Bluetooth Service Discovery Protocol (SDP) Bluetooth I protocolli di service discovery permettono a dispositivi ed applicazioni di cercare servizi offerti da altri dispositivi ed applicazioni. Per servizio si intende

Dettagli

Capitolo 1 Introduzione a Gambas

Capitolo 1 Introduzione a Gambas Capitolo 1 Introduzione a Gambas Gambas è stato creato inizialmente da Benoit Minisini, un residente della periferia di Parigi. Secondo Benoit, Gambas è un linguaggio Basic con estensioni per la programmazione

Dettagli

Progetto di Applicazioni Software

Progetto di Applicazioni Software Progetto di Applicazioni Software Antonella Poggi Dipartimento di Informatica e Sistemistica Antonio Ruberti SAPIENZA Università di Roma Anno Accademico 2008/2009 Questi lucidi sono stati prodotti sulla

Dettagli

CARATTERISTICA / MODULO

CARATTERISTICA / MODULO NextWare Doc è il prodotto che consente di amministrare semplicemente tutte le p roblematiche inerenti la gestione dei documenti; è rivolto sia la settore privato che alla Pubblica Amministrazione, e copre

Dettagli

*** QUESTO DOCUMENTO E' INCOMPLETO ED IN FASE AMPLIAMENTO CONTINUO. ***

*** QUESTO DOCUMENTO E' INCOMPLETO ED IN FASE AMPLIAMENTO CONTINUO. *** *** QUESTO DOCUMENTO E' INCOMPLETO ED IN FASE AMPLIAMENTO CONTINUO. *** PREFAZIONE Questo progetto nasce perchè mi sono reso conto dell'importanza che i motori di ricerca hanno su Internet. Internet rappresenta

Dettagli

Architetture Web. parte 1. Programmazione in Ambienti Distribuiti A.A. 2003-04

Architetture Web. parte 1. Programmazione in Ambienti Distribuiti A.A. 2003-04 Architetture Web parte 1 Programmazione in Ambienti Distribuiti A.A. 2003-04 Architetture Web (1) Modello a tre livelli in cui le interazioni tra livello presentazione e livello applicazione sono mediate

Dettagli

Novità di Crystal Reports XI

Novità di Crystal Reports XI Introduzione Introduzione Questa sezione offre una panoramica di dettagliata dei componenti, delle funzioni e dei vantaggi forniti dalla versione più recente di Crystal Reports. Alcuni tra i più importanti

Dettagli

Un architettura per lo streaming multimediale in ambiente distribuito

Un architettura per lo streaming multimediale in ambiente distribuito tesi di laurea Anno Accademico 2012/2013 relatore Ch.mo prof. Simon Pietro Romano correlatori Ing. Tobia Castaldi candidato Alessandro Arrichiello Matr. M63/43 Contesto: o Content Distribution Networks

Dettagli

CAPITOLO 1 I SISTEMI OPERATIVI

CAPITOLO 1 I SISTEMI OPERATIVI CAPITOLO 1 I SISTEMI OPERATIVI Introduzione ai sistemi operativi pag. 3 La shell pag. 3 Tipi di sistemi operativi pag. 4 I servizi del sistema operativo pag. 4 La gestione dei file e il file system Il

Dettagli

Macchine per l elaborazione dell informazion e. Sistemi di Elaborazione delle Informazioni. Informatica II

Macchine per l elaborazione dell informazion e. Sistemi di Elaborazione delle Informazioni. Informatica II Macchine per l elaborazione dell informazion e Sistemi di Elaborazione delle Informazioni Informatica II Ing. Mauro Iacono Seconda Università degli Studi di Napoli Facoltà di Studi Politici e per l Alta

Dettagli

Uso di un browser (con riferimento a Microsoft Internet Explorer 6.0)

Uso di un browser (con riferimento a Microsoft Internet Explorer 6.0) Uso di un browser (con riferimento a Microsoft Internet Explorer 6.0) Nota Bene: Si raccomanda di leggere queste dispense di fronte al computer, provando passo dopo passo le funzionalità descritte. Per

Dettagli

corrispondente server Web (l applicazione server) viene inviata una richiesta, alla quale il server normalmente risponde inviando la pagina HTML che

corrispondente server Web (l applicazione server) viene inviata una richiesta, alla quale il server normalmente risponde inviando la pagina HTML che Prefazione In questo volume completiamo l esplorazione del linguaggio Java che abbiamo iniziato in Java Fondamenti di programmazione. I due testi fanno parte di un percorso didattico unitario, come testimoniano

Dettagli

Sistemi operativi I: Windows. Lezione I

Sistemi operativi I: Windows. Lezione I Sistemi operativi I: Windows Lezione I Scopo della lezione Richiamare le principali funzionalità di un sistema operativo Esemplificarle descrivendo la loro implementazione in Windows Introdurre alcuni

Dettagli

Primi passi con Jamio Composer. Dall idea applicativa alla soluzione in pochi minuti

Primi passi con Jamio Composer. Dall idea applicativa alla soluzione in pochi minuti Primi passi con Jamio Composer Dall idea applicativa alla soluzione in pochi minuti Comporre una nuova soluzione applicativa Jamio Composer è l ambiente di modellazione della piattaforma Jamio. Le soluzioni

Dettagli

PeCo-Graph. Manuale per l utente

PeCo-Graph. Manuale per l utente PeCo-Graph Manuale per l utente 1. INTRODUZIONE...2 2. INSTALLAZIONE...3 2.1 REQUISITI...3 2.2 INSTALLAZIONE ED AVVIO...3 3. FUNZIONALITÀ ED UTILIZZO DEL PROGRAMMA...4 3.1 FUNZIONALITÀ...4 3.2 USO DEL

Dettagli

Progetto NIR e ai suoi strumenti di sviluppo

Progetto NIR e ai suoi strumenti di sviluppo Introduzione al Progetto NIR e ai suoi strumenti di sviluppo Costantino Ciampi ITTIG-CNR URL: http://www.ittig ittig.cnr.it e-mail: c.ciampi ciampi@ittig.cnr.it 1 Il progetto NIR Accesso alle Norme in

Dettagli

Introduzione ai database I concetti fondamentali Database e DBMS Per comprendere appieno cos'è un Database e quali sono i vantaggi legati al suo impiego, soprattutto nel settore gestionale, è necessario

Dettagli

Progetto Febbraio 2013 - Appello 1: Diffusione di tweets sul grafo di Twitter

Progetto Febbraio 2013 - Appello 1: Diffusione di tweets sul grafo di Twitter UNIVERSITÀ DEGLI STUDI DI MILANO, DIPARTIMENTO DI INFORMATICA LAUREA TRIENNALE IN COMUNICAZIONE DIGITALE CORSO DI RETI DI CALCOLATORI ANNO ACCADEMICO 2011/2012 Progetto Febbraio 2013 - Appello 1: Diffusione

Dettagli

2.1 Introduzione ai linguaggi di marcatura

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

Dettagli

APPENDICE A Servlet e Java Server Page

APPENDICE A Servlet e Java Server Page APPENDICE A Servlet e Java Server Page A.1 Cosa è una Servlet e come funziona Una servlet è un particolare tipo di applicazione Java, in grado di essere eseguita all'interno di un web server e di estenderne

Dettagli

Nota Tecnica Premium HMI 4.0.1152 TN0022

Nota Tecnica Premium HMI 4.0.1152 TN0022 Premium HMI 4.0.1152 Introduzione Il documento raccoglie le note di rilascio per la versione 4.0.1152 di Premium HMI. Le principali novità introdotte riguardano i seguenti aspetti: Nuove funzioni per una

Dettagli

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

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

Dettagli

Informativa e consenso per l utilizzo delle Google Apps for Education ISMC ALLEGATO 2 ALLEGATO 2 PRIVACY DI GOOGLE

Informativa e consenso per l utilizzo delle Google Apps for Education ISMC ALLEGATO 2 ALLEGATO 2 PRIVACY DI GOOGLE Pag. 1 di 8 PRIVACY DI GOOGLE (http://www.google.com/intl/it/policies/privacy/ Ultima modifica: 19 agosto 2015) I nostri servizi possono essere utilizzati in tanti modi diversi: per cercare e condividere

Dettagli

Tesi disponibili nell ambito del progetto FP7 ARISTOTELE. Tesi disponibili nell ambito del progetto INDUSTRIA 2015 KITE.it

Tesi disponibili nell ambito del progetto FP7 ARISTOTELE. Tesi disponibili nell ambito del progetto INDUSTRIA 2015 KITE.it Tesi disponibili nell ambito del progetto FP7 ARISTOTELE Ambiente collaborativo per il design e l innovazione Il lavoro si concentrerà sullo sviluppo di specifici componenti di un ambiente collaborativo

Dettagli

Manuale Utente CryptoClient

Manuale Utente CryptoClient Codice Documento: CERTMOB1.TT.DPMU12005.01 Firma Sicura Mobile Telecom Italia Trust Technologies S.r.l. - Documento Pubblico Tutti i diritti riservati Indice degli argomenti... 1 Firma Sicura Mobile...

Dettagli

Tecniche Multimediali

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

Dettagli

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

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

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Programmazione L attività con cui si predispone l elaboratore ad eseguire un particolare insieme di azioni su particolari dati, allo scopo di risolvere un problema Dati Input

Dettagli

Compilare e gestire bibliografie: i software gratuiti. a cura di Laura Perillo Sistema Bibliotecario di Ateneo Agg. ottobre 2014

Compilare e gestire bibliografie: i software gratuiti. a cura di Laura Perillo Sistema Bibliotecario di Ateneo Agg. ottobre 2014 Compilare e gestire bibliografie: i software gratuiti a cura di Laura Perillo Sistema Bibliotecario di Ateneo Agg. ottobre 2014 I software per la gestione di bibliografie Chiamati reference managers o

Dettagli

Copyright Università degli Studi di Torino, Progetto Atlante delle Professioni 2009 IT PROCESS EXPERT

Copyright Università degli Studi di Torino, Progetto Atlante delle Professioni 2009 IT PROCESS EXPERT IT PROCESS EXPERT 1. CARTA D IDENTITÀ... 2 2. CHE COSA FA... 3 3. DOVE LAVORA... 4 4. CONDIZIONI DI LAVORO... 5 5. COMPETENZE... 6 Quali competenze sono necessarie... 6 Conoscenze... 8 Abilità... 9 Comportamenti

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica CL3 - Biotecnologie Orientarsi nel Web Prof. Mauro Giacomini Dott. Josiane Tcheuko Informatica - 2006-2007 1 Obiettivi Internet e WWW Usare ed impostare il browser Navigare in internet

Dettagli

Sistemi di supporto alle decisioni Ing. Valerio Lacagnina

Sistemi di supporto alle decisioni Ing. Valerio Lacagnina Cosa è il DSS L elevato sviluppo dei personal computer, delle reti di calcolatori, dei sistemi database di grandi dimensioni, e la forte espansione di modelli basati sui calcolatori rappresentano gli sviluppi

Dettagli

ACRL Association of College and Research Libraries

ACRL Association of College and Research Libraries ACRL Association of College and Research Libraries Standard delle competenze per il possesso dell informazione (information literacy) nell educazione superiore Standard, indicatori di performance, obiettivi

Dettagli

Formazione sistema editoriale CMS

Formazione sistema editoriale CMS Ufficio Società dell'informazione Nome del Progetto Acronimo del Progetto Formazione sistema editoriale CMS Documento Data di stesura Maggio 2010 Versione 1.2 Sommario 1 Scopo... 3 2 Campo di applicazione...

Dettagli

Webinar. Usabilità a parole: valorizzare i contenuti delle PA per i motori di ricerca

Webinar. Usabilità a parole: valorizzare i contenuti delle PA per i motori di ricerca Webinar Usabilità a parole: valorizzare i contenuti delle PA per i motori di ricerca Webinar Usabilità a parole: valorizzare i contenuti delle PA per i motori di ricerca Scenario Scenario: I risultati

Dettagli

Code Architects S.r.l. SWOP Semantic Web-service Oriented Platform B2SO201

Code Architects S.r.l. SWOP Semantic Web-service Oriented Platform B2SO201 UNIONE EUROPEA FONDO EUROPEO DI SVILUPPO REGIONALE. REGIONE PUGLIA AREA POLITICHE PER LO SVILUPPO IL LAVORO E L INNOVAZIONE Modello M14 Allegati RTA POR PUGLIA 2007-2013 - Asse I Linea 1.1 Azione 1.1.2

Dettagli

LEZIONE 3. Il pannello di amministrazione di Drupal, configurazione del sito

LEZIONE 3. Il pannello di amministrazione di Drupal, configurazione del sito LEZIONE 3 Il pannello di amministrazione di Drupal, configurazione del sito Figura 12 pannello di controllo di Drupal il back-end Come già descritto nella lezione precedente il pannello di amministrazione

Dettagli

WEB 2.0 PER CRESCERE. Sfruttare le potenzialità del Web 2.0 per far conoscere la Lunigiana

WEB 2.0 PER CRESCERE. Sfruttare le potenzialità del Web 2.0 per far conoscere la Lunigiana WEB 2.0 PER CRESCERE Sfruttare le potenzialità del Web 2.0 per far conoscere la Lunigiana Web 2.0 L'insieme di tutte quelle applicazioni online che permettono uno spiccato livello di interazione tra il

Dettagli

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

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

Dettagli

anthericacms Il sistema professionale per la gestione dei contenuti del tuo sito web Versione 2.0

anthericacms Il sistema professionale per la gestione dei contenuti del tuo sito web Versione 2.0 anthericacms Il sistema professionale per la gestione dei contenuti del tuo sito web Versione 2.0 Email: info@antherica.com Web: www.antherica.com Tel: +39 0522 436912 Fax: +39 0522 445638 Indice 1. Introduzione

Dettagli

Termini e condizioni d utilizzo

Termini e condizioni d utilizzo Termini e condizioni d utilizzo Condizioni di utilizzo dei servizi del sito www.bioops.it 1. Regole Generali e definizioni Utilizzando i servizi informativi connessi al sito www.bioops.it (qui di seguito

Dettagli

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN)

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) System Overview di Mattia Bargellini 1 CAPITOLO 1 1.1 Introduzione Il seguente progetto intende estendere

Dettagli

31/05/2013. Sistemi Web Distribuiti (parte 2) - Indice dei Contenuti - Naming. Corso Sistemi Distribuiti 6 cfu Docente: Prof. Marcello Castellano

31/05/2013. Sistemi Web Distribuiti (parte 2) - Indice dei Contenuti - Naming. Corso Sistemi Distribuiti 6 cfu Docente: Prof. Marcello Castellano Corso Sistemi Distribuiti 6 cfu Docente: Prof. Marcello Castellano /28 Sistemi Web Distribuiti (parte 2) - Indice dei Contenuti - Naming 3 Sincronizzazione 4 Consistenza e Replica 5 Replica di sistemi

Dettagli

Internet WWW ISP Protocolli di Rete

Internet WWW ISP Protocolli di Rete Internet Internet è un sistema di reti di computer interconnessi tra loro che facilita l'utilizzo di servizi di comunicazione dati come la posta elettronica, il Word Wide Web (WWW), il trasferimento dati

Dettagli

La ricerca delle informazioni nei siti web di Ateneo con Google Search Appliance Progetto, implementazione e sviluppi

La ricerca delle informazioni nei siti web di Ateneo con Google Search Appliance Progetto, implementazione e sviluppi La ricerca delle informazioni nei siti web di Ateneo con Google Search Appliance Progetto, implementazione e sviluppi Il progetto del sistema di ricerca delle informazioni L'esigenza del sistema di ricerca

Dettagli

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

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

Dettagli

@Giusi Castagnetta tutti i diritti riservati. Seo e contenuti video

@Giusi Castagnetta tutti i diritti riservati. Seo e contenuti video @Giusi Castagnetta tutti i diritti riservati Seo e contenuti video SEO facile Quando cerchiamo qualcosa sui motori di ricerca, ci aspettiamo di trovare per primi i risultati migliori, cioè quelli più pertinenti

Dettagli

HTML 1. HyperText Markup Language

HTML 1. HyperText Markup Language HTML 1 HyperText Markup Language Introduzione ad HTML Documenti HTML Tag di markup Formattazione del testo Collegamenti ipertestuali Immagini Tabelle Form in linea (moduli) Tecnologie di Sviluppo per il

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

Seminario di Sistemi Distribuiti: RPC su SOAP

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

Dettagli

Sviluppo di applicazioni web con il pattern Model-View-Controller. Gabriele Pellegrinetti

Sviluppo di applicazioni web con il pattern Model-View-Controller. Gabriele Pellegrinetti Sviluppo di applicazioni web con il pattern Model-View-Controller Gabriele Pellegrinetti 2 MVC: come funziona e quali sono vantaggi che derivano dal suo utilizzo? La grande diffusione della tecnologia

Dettagli

Progettazione di Sistemi Interattivi. Gli strati e la rete. Struttura e supporti all implementazione di applicazioni in rete (cenni)

Progettazione di Sistemi Interattivi. Gli strati e la rete. Struttura e supporti all implementazione di applicazioni in rete (cenni) Progettazione di Sistemi Interattivi Struttura e supporti all implementazione di applicazioni in rete (cenni) Docente: Daniela Fogli Gli strati e la rete Stratificazione da un altro punto di vista: i calcolatori

Dettagli

Breve descrizione del prodotto

Breve descrizione del prodotto Breve descrizione del prodotto 1. Il software AquaBrowser Library...2 1.1 Le funzioni di Search Discover Refine...3 1.2 Search: la funzione di ricerca e di presentazione dei risultati...3 1.2.1 La configurazione

Dettagli

4. Requisiti del Software

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

Dettagli

Appendice D. D. Web Services

Appendice D. D. Web Services D. D.1 : cosa sono I cosiddetti sono diventati uno degli argomenti più attuali nel panorama dello sviluppo in ambiente Internet. Posti al centro delle più recenti strategie di aziende del calibro di IBM,

Dettagli

Text mining ed analisi di dati codificati in linguaggio naturale. Analisi esplorative di dati testuali

Text mining ed analisi di dati codificati in linguaggio naturale. Analisi esplorative di dati testuali Text mining ed analisi di dati codificati in linguaggio naturale Analisi esplorative di dati testuali Il text mining: una definizione Data mining per dati destrutturati ovvero documenti codificati in linguaggio

Dettagli

Soluzione Immobiliare

Soluzione Immobiliare SOLUZIONE IMMOBILIARE SOLUZIONE IMMOBILIARE è un software studiato appositamente per la gestione di una Agenzia. Creato in collaborazione con operatori del settore, Soluzione si pone sul mercato con l

Dettagli

PROGETTO DI UN MIDDLEWARE PER L ACCESSO REMOTO A UN REPOSITORY

PROGETTO DI UN MIDDLEWARE PER L ACCESSO REMOTO A UN REPOSITORY Giampiero Allamprese 0000260193 PROGETTO DI UN MIDDLEWARE PER L ACCESSO REMOTO A UN REPOSITORY Reti di Calcolatori LS prof. Antonio Corradi A.A. 2007/2008 ABSTRACT L obiettivo di questo progetto è la realizzazione

Dettagli

STANDARD A AFFRONTA GLI STRUMENTI INFORMATICI E DI COMUNICAZIONE NEL LORO USO

STANDARD A AFFRONTA GLI STRUMENTI INFORMATICI E DI COMUNICAZIONE NEL LORO USO 3.5 Area Tecnologica STANDARD A AFFRONTA GLI STRUMENTI INFORMATICI E DI COMUNICAZIONE NEL LORO USO E NELLA LORO FUNZIONE. Livello 1 1.1 Esplicita i propri bisogni di comunicazione e di organizzazione di

Dettagli

CONTENT MANAGEMENT SYSTEM

CONTENT MANAGEMENT SYSTEM CONTENT MANAGEMENT SYSTEM P-2 PARLARE IN MULTICANALE Creare un portale complesso e ricco di informazioni continuamente aggiornate, disponibile su più canali (web, mobile, iphone, ipad) richiede competenze

Dettagli

Indice. settembre 2008 Il File System 2

Indice. settembre 2008 Il File System 2 Il File System Indice 4. Il File System 5. Vantaggi del FS 6. Protezione 7. Condivisione 8. I file - 1 9. I file - 2 10. Attributi dei file 11. Directory 12. Livelli di astrazione - 1 13. Livelli di astrazione

Dettagli

Introduzione a Wordpress. Corso completo alla conoscenza e all uso del CMS Open Source WP (incontro 1/6)

Introduzione a Wordpress. Corso completo alla conoscenza e all uso del CMS Open Source WP (incontro 1/6) Introduzione a Wordpress Corso completo alla conoscenza e all uso del CMS Open Source WP (incontro 1/6) Indice Rilevazione aspettative e competenze in ingresso Patto formativo Presentazione di WP Premesse

Dettagli

INTRODUZIONE: ALL INCLUSIVE

INTRODUZIONE: ALL INCLUSIVE INTRODUZIONE: ALL INCLUSIVE è l insieme di servizi, strumenti e tecniche che rendono un sito web accessibile e ottimizzato per assicurare che venga rinvenuto nelle prime posizioni sui motori di ricerca.

Dettagli

CORSO DI FORMAZIONE PER: TECNICO DELLE ATTIVITA' DI PROGETTAZIONE, SVILUPPO E AGGIORNAMENTO DI SITI WEB

CORSO DI FORMAZIONE PER: TECNICO DELLE ATTIVITA' DI PROGETTAZIONE, SVILUPPO E AGGIORNAMENTO DI SITI WEB Avviso Pubblico PROV-BR 02/2013 PO FSE 2007/2013 ASSE II OCCUPABILITA' Formazione per Inserimento-Reinserimento Lavorativo Approvato con D.D. n.85 del 24/01/2014, pubblicata sul BURP n. 17 del 06/02/2014

Dettagli

Archiviazione ed accesso all'informazione (I. Zangara)

Archiviazione ed accesso all'informazione (I. Zangara) Università degli studi di Catania Archiviazione ed accesso all informazione Archivio Insieme di documenti, dello stesso tipo o di tipi diversi, che per esigenze specifiche informative costituisce una raccolta

Dettagli

ALLEGATO TECNICO SUL MODELLO DI SICUREZZA IN INTERNET IL PRODOTTO VORTAL

ALLEGATO TECNICO SUL MODELLO DI SICUREZZA IN INTERNET IL PRODOTTO VORTAL ALLEGATO TECNICO SUL MODELLO DI SICUREZZA IN INTERNET IL PRODOTTO VORTAL 1 Introduzione Il mondo del Web ha assunto negli ultimi anni una forza dirompente su tutti i fronti della comunicazione e della

Dettagli

EIPASS Web. Programma analitico d esame. ver. 3.0

EIPASS Web. Programma analitico d esame. ver. 3.0 EIPASS Web Programma analitico d esame ver. 3.0 Pagina 2 di 21 Premessa Questa pubblicazione, riservata ai Candidati agli esami per il conseguimento del titolo EIPASS nel profilo di riferimento, intende

Dettagli

"TileStudio: tutto il mondo ceramico in un unico prodotto "

TileStudio: tutto il mondo ceramico in un unico prodotto "TileStudio: tutto il mondo ceramico in un unico prodotto " TileStudio-Web Cos'è TileStudio-Web? TileStudio Web è la risposta più completa a tutte le esigenze del settore ceramico. Un potentissimo strumento

Dettagli

PicoWeb è un sistema di monitoraggio Web e Social, in tempo reale, basato su tecnologia proprietaria che aiuta l'utente finale a fare ordine nella

PicoWeb è un sistema di monitoraggio Web e Social, in tempo reale, basato su tecnologia proprietaria che aiuta l'utente finale a fare ordine nella PicoWeb è un sistema di monitoraggio Web e Social, in tempo reale, basato su tecnologia proprietaria che aiuta l'utente finale a fare ordine nella gran mole di dati disomogenei provenienti dalla rete.

Dettagli

Contenuti. Applicazioni di rete e protocolli applicativi

Contenuti. Applicazioni di rete e protocolli applicativi Contenuti Architettura di Internet Principi di interconnessione e trasmissione World Wide Web Posta elettronica Motori di ricerca Tecnologie delle reti di calcolatori Servizi Internet (come funzionano

Dettagli

Mp3 Organizer Progetto d esame per il corso di Fondamenti di Informatica C

Mp3 Organizer Progetto d esame per il corso di Fondamenti di Informatica C Mp3 Organizer Progetto d esame per il corso di Fondamenti di Informatica C Prof. Giacomo Cabri, Ing. Raffaele Quitadamo Corso di Laurea Triennale in Ingegneria Informatica Università di Modena e R.Emilia

Dettagli

PROGRAMMAZIONE INFORMATICA PRIMO BIENNIO. Opzione Scienze Applicate

PROGRAMMAZIONE INFORMATICA PRIMO BIENNIO. Opzione Scienze Applicate PROGRAMMAZIONE INFORMATICA PRIMO BIENNIO Opzione Scienze Applicate Anno scolastico 2015-2016 Programmazione di Informatica pag. 2 / 8 INFORMATICA - PRIMO BIENNIO OBIETTIVI SPECIFICI DI APPRENDIMENTO DELL

Dettagli

Indicazioni pratiche per realizzare una campagna marketing digitale

Indicazioni pratiche per realizzare una campagna marketing digitale Indicazioni pratiche per realizzare una campagna marketing digitale La fase strategia SEO: la scelta delle keyword Questa fase è fondamentale, qualunque attività SEO risulta essere priva di senso se non

Dettagli

PRESENTAZIONE N #9 OLTRE LA SCRITTURA: IL COMPORTAMENTO NELLA RETE SUI BLOG

PRESENTAZIONE N #9 OLTRE LA SCRITTURA: IL COMPORTAMENTO NELLA RETE SUI BLOG PRESENTAZIONE N #9 OLTRE LA SCRITTURA: IL COMPORTAMENTO NELLA RETE SUI BLOG 16 gennaio 2015 OLTRE LA SCRITTURA: IL COMPORTAMENTO NELLA RETE SUI BLOG Introduzione Le attività dei blogger I social influencer

Dettagli

Funzioni del Sistema Operativo

Funzioni del Sistema Operativo Il Software I componenti fisici del calcolatore (unità centrale e periferiche) costituiscono il cosiddetto Hardware (ferramenta). La struttura del calcolatore può essere schematizzata come una serie di

Dettagli

FONDAMENTI di INFORMATICA Prof. Lorenzo Mezzalira

FONDAMENTI di INFORMATICA Prof. Lorenzo Mezzalira FONDAMENTI di INFORMATICA Prof. Lorenzo Mezzalira Appunti del corso 1 Introduzione all informatica: algoritmi, linguaggi e programmi Indice 1. Introduzione 2. Risoluzione automatica di problemi - Algoritmi

Dettagli

Smart. SUAP Area Tecnico Territoriale. Descrizione sintetica. Funzionalità principali SCHEDA PRODOTTO. Dematerializzazione. Sistema.

Smart. SUAP Area Tecnico Territoriale. Descrizione sintetica. Funzionalità principali SCHEDA PRODOTTO. Dematerializzazione. Sistema. SCHEDA PRODOTTO Descrizione sintetica Il modulo consente di gestire i procedimenti amministrativi legati alle sportello unico per le attività produttive. Fa parte dell area dedicata alla componente tecnico

Dettagli

L applicazione del Nuovo Soggettario in SBN

L applicazione del Nuovo Soggettario in SBN L applicazione del Nuovo Soggettario in SBN Introduzione L obiettivo del Gruppo è stato quello di individuare le modalità per rendere possibile la più ampia diffusione ed applicazione nella rete SBN del

Dettagli

principalmente un programma per la gestione di bibliografie: dalla raccolta dei riferimenti alla formattazione delle citazioni

principalmente un programma per la gestione di bibliografie: dalla raccolta dei riferimenti alla formattazione delle citazioni COS È? principalmente un programma per la gestione di bibliografie: dalla raccolta dei riferimenti alla formattazione delle citazioni un programma gratuito: la versione base offre 300 MB di spazio disco

Dettagli

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50 Guida all uso dell ambiente di sviluppo 1 integrato o IDE JCreator LE 4.50 Inizializzazione: creazione del nuovo progetto e del file sorgente in ambiente JCreator Al lancio del programma si apre la finestra

Dettagli

Sistemi Web! per il turismo! - lezione 9 -

Sistemi Web! per il turismo! - lezione 9 - Sistemi Web per il turismo - lezione 9 - I siti Web per il turismo Come li scopriamo sul Web? Negli esercizi in classe delle lezioni precedenti, come hanno gli studenti selezionato i siti Web da analizzare?

Dettagli

Approfondimento: i sistemi di gestione delle basi di dati (DBMS)

Approfondimento: i sistemi di gestione delle basi di dati (DBMS) Approfondimento: i sistemi di gestione delle basi di dati (DBMS) Prerequisito essenziale della funzionalità delle basi di dati è il controllo e la fruibilità dell informazione in esse contenuta: a tale

Dettagli

Gestione dei contenuti web Ultimi eventi

Gestione dei contenuti web Ultimi eventi Gestione dei contenuti web Ultimi eventi Questo manuale illustra le operazioni più comuni per la manutenzione e aggiornamento del sito web http://terremoti.ingv.it/ultimi eventi/ tramite l interfaccia

Dettagli