tesi 1 2 rdt no commenti

124
UNIVERSITA’ DEGLI STUDI DI SALERNO FACOLTA’ DI INGEGNERIA Tesi di laurea in INGEGNERIA INFORMATICA Utilizzo di banche dati bibliometriche per migliorare la collaborazione durante eventi scientifici Relatore: Ch. mo Prof. Pierluigi Ritrovato Candidato: Raffaele Di Taranto Matr. 0612700665 Anno Accademico 2012/2013

Upload: raffaele-di-taranto

Post on 05-Aug-2015

30 views

Category:

Engineering


2 download

TRANSCRIPT

Page 1: Tesi 1 2 rdt   no commenti

UNIVERSITA’ DEGLI STUDI DI SALERNO

FACOLTA’ DI INGEGNERIA

Tesi di laurea

in

INGEGNERIA INFORMATICA

Utilizzo di banche dati bibliometriche per

migliorare la collaborazione durante eventi

scientifici

Relatore:

Ch. mo Prof. Pierluigi Ritrovato

Candidato:

Raffaele Di Taranto

Matr. 0612700665

Anno Accademico 2012/2013

Page 2: Tesi 1 2 rdt   no commenti

Ringraziamenti

Alla mia famiglia che mi ha dato la possibilità

ed il sostegno morale per affrontare

il corso di studi,

A chi mi è stato vicino

e mi ha stimolato durante il percorso,

Al Professor Ritrovato per la disponibilità,

l’affidabilità e la pazienza dimostrata.

Page 3: Tesi 1 2 rdt   no commenti

Indice

Introduzione……………………………………………………………………….....1

Capitolo 1 ..................................................................................................................... 3

1 Introduzione .............................................................................................................. 3

2 Database e database scientifici .................................................................................. 4

Capitolo 2 ..................................................................................................................... 6

1 Introduzione ......................................................................................................... 6

2 Piattaforme ed indicatori bibliometrici ................................................................ 7

2.1 Bibliometria ................................................................................................... 8

2.2 Indicatori bibliometrici .................................................................................. 9

2.2.1 Impact Factor ......................................................................................... 9

2.2.2 H Index ................................................................................................. 10

2.2.3 G Index ................................................................................................. 11

3 Modalità di funzionamento ed interfacce verso l’esterno delle banche dati

scientifiche ................................................................................................................. 11

3.1 Scopus di Elsevier ............................................................................................ 11

3.1.1 Esempio di funzionamento Scopus ...................................................... 12

3.1.2 API Scopus: Scopus Integration .......................................................... 17

3.2 Mendeley ..................................................................................................... 20

3.2.1 Esempio di funzionamento Mendeley .................................................. 21

3.2.2 API Mendeley e protocollo OAuth 2.0 ................................................ 23

3.3 Arnetminer ................................................................................................... 30

3.3.1 Esempio di funzionamento Arnetminer ............................................... 33

3.3.2 API Arnetminer e REST ...................................................................... 37

3.4 Google Scholar ............................................................................................ 41

3.4.1 Esempio di funzionamento Google Scholar ......................................... 42

3.5 Web of Science (Web of Knowledge ) ........................................................ 44

3.5.1 Esempio di funzionamento Web of Science ........................................ 45

Page 4: Tesi 1 2 rdt   no commenti

4 Confronto tra sistemi .......................................................................................... 48

Capitolo 3 ................................................................................................................... 49

1 Introduzione e linee guida di sviluppo ............................................................... 49

2 Registrazione all’applicazione ........................................................................... 50

2.1 Estrapolazione dati da Scopus ..................................................................... 54

2.2 Estrazione dati social network ..................................................................... 61

3 Applicazione: lato Server ................................................................................... 62

3.1 Organizzazione dei dati e tools di sviluppo ................................................. 62

3.1.1 Rappresentazione Java ......................................................................... 65

3.1.2 Strumenti di sviluppo ........................................................................... 66

3.2 Server e Database ........................................................................................ 68

3.2.1 Classe ManageIO ................................................................................. 68

3.3 Server e il mondo esterno: WebService ...................................................... 71

3.3.1 Classe ServerInterface .......................................................................... 74

4 Applicazione: lato Client.................................................................................... 81

4.1 Organizzazione dei dati e tools di sviluppo ................................................. 81

4.1.1 Strumenti di sviluppo Android ............................................................. 83

4.2 Funzionalità e codice ................................................................................... 85

4.2.1 Connessione al Web Service ................................................................ 96

Conclusioni ................................................................................................................ 98

Appendice A ............................................................................................................. 100

A.1 Tabella dei metodi API Scopus ..................................................................... 100

A.2 Tabella dei metodi pubblici API Mendeley .................................................. 102

A.3 Tabella dei metodi privati API Mendeley ..................................................... 104

Appendice B ............................................................................................................. 108

B.1 Classe Manage Scopus .................................................................................. 108

B.2 Query creazione DataBase ............................................................................ 113

B.3 Metodi di matching sulla classe User con KSOAP ...................................... 116

Bibliografia .............................................................................................................. 120

Page 5: Tesi 1 2 rdt   no commenti

1

Introduzione

Nel corso degli ultimi anni la tecnologia informatica ha permesso lo sviluppo di un

gran numero di applicazioni e servizi, questi ultimi incentrati per lo più sulla base

della oramai tanto celebrata rete Internet. Proprio sulla base di questi concetti, anche

la comunità scientifica ha iniziato ad evolvere il proprio modo di comunicare

riuscendo a muovere, dal formato cartaceo, quasi l’intera totalità dei dati sul Web.

Dal 1665, anno in cui la divulgazione scientifica è iniziata a fiorire su carta stampata,

ad oggi, l’aspetto che è stato più curato nelle comunicazioni di carattere scientifico è

stato di sicuro quello dell’internazionalizzazione, al fine di rendere partecipi delle

scoperte e delle innovazioni quante più persone possibili. Inoltre, è importante

ricordare che, secondo le ricerche dell’istituto “Eurostat”, la mole di opere

scientifiche negli ultimi anni è in grande aumento, e perciò rendere fruibili i dati ad

un pubblico quanto più vasto possibile, mantenendo il supporto cartaceo, è divenuto

praticamente impossibile. E’ per i motivi appena elencati che le pubblicazioni si

sono spostate verso gli “e-journal” mentre le raccolte di articoli, papers e lectures

sono state compiute, a partire dagli anni 2000, su apposite banche dati definite

appunto banche dati scientifiche. Sul Web sono nate, così, circa un centinaio di

piattaforme volte ad un pubblico di diverse proporzioni e categorie; per esempio,

molte di queste sono specializzate in ambito medico, il quale, come risaputo, ha un

ambito di ricerca praticamente sconfinato. La fruizione dei dati su questo tipo di

database avviene con modalità differenti in termini sia tipologici sia economici.

Infatti, alcuni database propongono un accesso a pagamento, altri accesso libero, altri

ancora, invece, permettono un ingresso libero con funzionalità limitate comunque

espandibili previo pagamento. Emblematico è il caso di “Scopus”, una piattaforma

che prevede un accesso a pagamento ma l’accesso stesso è reso disponibile solo sotto

la specifica rete dell’ente (o del privato) che acquista i diritti per la fruizione dei dati

del sistema. Un altro aspetto da ricordare è la modalità di indicizzazione dei dati che

avviene in modo automatico per gran parte delle piattaforme, nonostante venga data

all’utente la possibilità di poter modificare i propri dati nel caso di

Page 6: Tesi 1 2 rdt   no commenti

2

“misunderstanding”. Detto questo, si può affermare che l’obiettivo di rendere

disponibili, ad un pubblico molto ampio, i dati scientifici raccolti nel tempo, è

riuscito alla perfezione, ed ha semplificato la vita della comunità scientifica; per

questo motivo le scientific platform hanno assunto una grande importanza. Tutto

questo ci ha guidato nel nostro lavoro di tesi, il cui obiettivo è stato quello di,

innanzitutto, scendere nel dettaglio dell’analisi dei sistemi scientifici; poi, rendere le

informazioni “portatili”, creando un’applicazione per sistemi Android che nasce nel

contesto di un congresso di ricercatori. Nel corso della prima fase, ossia in quella

d’analisi, vengono affrontate le problematiche, oltre che della semplice

visualizzazione dei dati contenuti, anche di accesso a questi ultimi; le interfacce

messe a disposizione sui differenti sistemi prevedono, infatti, modalità di

autorizzazione e di accesso differenti. Questi aspetti si sono rivelati, in alcuni casi, di

difficile utilizzo e fruizione; in altri casi, seppure si è riusciti ad accedere ai database,

i dati reperibili dall’esterno si sono rivelati davvero pochi o di scarsa rilevanza.

Dall’unione dei dati scientifici estrapolati da queste piattaforme, con i dati sociali

ottenuti, invece, da sistemi appunto sociali quali Facebook, LinkedIn e Twitter, si è

proceduto a creare un software su dispositivi mobili, basato su un’architettura client-

server, che nasce nel contesto, come prima accennato, di una conferenza (congresso)

di ricercatori e permette di avere un supporto di facile utilizzo e di indubbia utilità

per ogni partecipante. Anche nella seconda parte del lavoro svolto non sono mancate

incertezze, si è dovuto analizzare nel dettaglio la parte teorica, ma anche quella

pratica, riguardante sia la creazione dei web service, sia la programmazione di un

client mobile Android da mettere in comunicazione con i servizi creati sul server

stesso. Il frutto del nostro lavoro, nonché ultimo obiettivo, è stato il creare

un’applicazione dove abbiamo messo a disposizione di qualsiasi utente informazioni

quali la rilevanza del singolo nella comunità scientifica o ancora il numero dei

followers di Twitter, o semplicemente il contatto telefonico. Si è permesso così, a

tutti i presenti alla conferenza, di avere cognizione dei dati pubblici di ogni singolo

utente, di poter effettuare ricerche mirate su aspetti scientifici e/o sociali e di ricevere

suggerimenti personalizzati sulla base degli ambiti di studio, nazionalità, affiliazione,

popolarità.

Page 7: Tesi 1 2 rdt   no commenti

3

Capitolo 1

Introduzione alle Banche Dati Scientifiche

1 Introduzione

Negli ultimi decenni, grazie all’esponenziale incremento di utenti che utilizzano il

PC, è diventata una vera e propria necessità riuscire ad accedere ai dati in modo

flessibile, ordinato e fluido. Proprio per rispondere a queste esigenze, soprattutto su

grossa scala, sono nati i database, questi infatti sono gli strumenti più utilizzati per

conservare i dati in modo strutturale e consentirne la loro condivisione. In realtà, la

nascita dei database in sé per sé risale già agli anni ’60-’70 con i primi database

organizzati secondo modelli di tipo gerarchico. La rivoluzione è avvenuta con

l’avvento dei database relazionali, per opera di Edgar Frank Todd che propose il

modello “Entità-Relazione” il quale proponeva un modello praticamente matematico

per quanto riguarda la modellazione, la strutturazione e l’archiviazione dei dati. In

tempi molto più recenti, dal ’95 in poi, grazie allo sviluppo delle tecnologie Web, è

divenuto di fondamentale importanza riuscire ad accedere alle informazioni in modo

sicuro e semplice ma soprattutto raggiungerle in ogni istante e da qualsiasi posizione,

da qui la necessità di mettere in comunicazione i database con il mondo esterno e

rendere disponibile anche un’interfaccia d’accesso. La naturale conseguenza di tutto

Page 8: Tesi 1 2 rdt   no commenti

4

ciò è proprio lo sviluppo dei database online. Unendo gli archivi scientifici, già

esistenti in formato cartaceo, con questa nascente tecnologia ne vengono

naturalmente fuori le banche dati scientifiche.

2 Database e database scientifici

Le banche dati che abbiamo analizzato nel corso degli studi non differiscono molto

da quelle che ci ritroviamo di fronte ogni qualvolta decidiamo di accedere ad un

database scientifico, sia per quanto riguarda l’accesso ai dati, sia per quanto riguarda

l’organizzazione dei dati stessi. C’è però da ricordare che non tutte le banche dati

scientifiche che abbiamo potuto osservare sono modellate allo stesso modo, infatti, in

alcuni casi queste differiscono tra di loro per quanto riguarda le modalità di risposta e

di rappresentazione degli oggetti contenuti. In generale, dunque, si può affermare che

siano banche dati relazionali, ed è per questo motivo che è molto semplice

interrogarle. Ovviamente non è possibile effettuare query SQL, cioè interrogazioni

finalizzate ad operare sui dati contenuti, in modo diretto al database, ma tramite le

interfacce messe a disposizione da ogni piattaforma si riescono ad effettuare ricerche

specifiche e mirate per poi recuperare il record desiderato, sempre con grande

precisione e velocità. I database scientifici, entrando nello specifico, si caratterizzano

nel loro compito per il fatto che contengono informazioni prettamente relative a

personaggi di scienza, che siano illustri o meno. I contenuti che queste banche dati

mettono a disposizione sono di vario tipo, dalle informazioni di tipo anagrafico a

quelle di contatto, ma il cardine dell’intero sistema sono le informazioni attinenti al

lavoro che essi svolgono, dunque, al contributo che apportano alla comunità

scientifica; sono, infatti, presenti documenti, pubblicazioni stilate dai vari utenti ed

edite su periodici scientifici, il titolo di questi ultimi, e ancora le parole chiave che

indicano l’ambito specifico di studio del ricercatore/scienziato in analisi, i suoi

indicatori bibliometrici i quali, come vedremo, ne indicano il peso specifico

Page 9: Tesi 1 2 rdt   no commenti

5

all’interno della società scientifica, il suo percorso formativo e quello lavorativo, le

collaborazioni alle quali aderisce sempre il profilo dell’utente in analisi. Oltre alle

funzionalità di base appena illustrate, i database scientifici mettono a disposizione

dell’utente anche differenti servizi, i quali si occupano di: inviare degli avvisi mail

riguardanti le nuove pubblicazioni effettuate da parte di uno specifico autore, inviare

dei feed RSS ad un sottoscrittore, salvare le ricerche, creare delle liste di utenti da

seguire, visualizzare statistiche relative a pubblicazioni, periodici e autori. Le banche

dati scientifiche consentono, dunque, la visualizzazione di una grande quantità di

informazioni riguardo autori di pubblicazioni e pubblicazioni stesse, fornendo tutti i

servizi necessari in una forma intellegibile sia ad un utente con conoscenze di

informatica elementari, sia ad un utente più esperto.

Page 10: Tesi 1 2 rdt   no commenti

6

Capitolo 2

Analisi banche dati scientifiche

1 Introduzione

Nel capitolo precedente abbiamo presentato i principi base delle banche dati

scientifiche, ora il nostro compito di tesi si accentra in modo più evidente su

un’analisi tecnica e specifica delle stesse; procediamo, quindi, proponendo una

visione generale di ogni singola piattaforma per poi andare ad analizzare in dettaglio

ognuna di esse. Per quanto riguarda questo ultimo aspetto è importante, come

vedremo, dare uno sguardo approfondito alle modalità di comunicazione con

l’esterno, in sostanza come interrogare i vari sistemi e quali dati siano effettivamente

reperibili. Ci soffermeremo anche su aspetti di autenticazione, proponendo e testando

come effettivamente questo aspetto sia stato realizzato in questi ambienti. Verranno

trattate le limitazioni all’utilizzo delle suddette interfacce verso l’esterno, in modo

tale da poter capire quali siano i limiti reali esistenti su questo tipo di data base.

Quanto accennato sulla fase di testing, come vedremo, sarà realizzato grazie al

supporto del linguaggio di programmazione ad oggetti Java, questa scelta è stata

effettuata soprattutto tenendo presente il fatto che l’applicazione, che poi è stata

sviluppata, è ideata per essere utilizzata su sistemi operativi Android; quest’ultimo

presenta un ambiente di sviluppo anch’esso ad oggetti ed ancora una volta “Java”.

Page 11: Tesi 1 2 rdt   no commenti

7

Dunque già in fase di analisi abbiamo ritenuto utile iniziare a pensare con un passo

d’anticipo all’applicativo per sistema Android.

2 Piattaforme ed indicatori bibliometrici

L’analisi che ci siamo preposti di svolgere riguarda un numero di banche dati non

eccessivo, ma sicuramente sufficiente a coprire gran parte del materiale scientifico

disponibile. Nella prima fase abbiamo effettuato una preventiva raccolta di

informazioni, al fine di riuscire ad effettuare una cernita accurata delle piattaforme e

si è proceduto, dunque, all’analisi dei vari aspetti: le differenze tra i sistemi,

l’importanza relativa di ogni singola piattaforma nel senso di mole di dati che mette a

disposizione, il funzionamento corretto da intendersi nello specifico anche

nell’indicizzazione dei documenti e degli utenti; infine, la disponibilità, da parte delle

stesse piattaforme, di fornire indici bibliometrici sulle pubblicazioni dei vari autori.

Da questa analisi preliminare siamo riusciti, dunque, ad effettuare una selezione delle

piattaforme arrivando a decidere di esaminare nello specifico:

Scopus

Mendeley

Arnetminer

Google Scholar

Web of Science

Tra queste piattaforme vi sono differenze in alcuni casi sottili, in altri invece più

evidenti, come vedremo a breve. Ora procediamo nel dettaglio con i singoli sistemi,

solo dopo aver analizzato dei semplici concetti propedeutici al prosieguo della

lettura.

Page 12: Tesi 1 2 rdt   no commenti

8

2.1 Bibliometria

La nozione di bibliometria è stata usata, negli ultimi decenni, in riferimento ad un

tipo di studio che utilizza tecniche matematiche e statistiche per analizzare i modelli

di distribuzione dell'informazione, ed in particolar modo delle pubblicazioni. Con più

precisione si può affermare che essa è un insieme di metodi utilizzati per studiare e

misurare testi e informazioni. Il suo sviluppo ha avuto come presupposto

l'elaborazione automatica delle bibliografie, confluite nelle precedentemente

presentate banche dati, il suo grandioso successo è dovuto alla ricerca, da parte della

comunità scientifica mondiale, di criteri oggettivi per la misurazione, detti indicatori

bibliometrici, e la conseguente valutazione della scienza e degli scienziati. La

bibliometria ha prestato ampie applicazioni in svariate aree dello scibile e della

scienza, in modo particolarmente estensivo laddove si usano metodi, appunto,

bibliometrici per esaminare l’impatto all’interno delle comunità scientifiche di un

gruppo di ricercatori o di un lavoro scientifico in particolare. Da sempre i metodi

bibliometrici sono stati usati per tracciare le relazioni tra le varie citazioni dei

periodici accademici, per questa ragione i suddetti - più che la bibliometria in senso

lato - rientrano nei campi della LIS: “Library and Information Science” e discipline

ad essa connessa. Tra i metodi bibliometrici troviamo dunque:

L’analisi citazionale che è il metodo più noto ed usa citazioni nelle

produzioni intellettuali scientifiche per definire connessioni ad altri elaborati

o altri ricercatori. Gli accoppiamenti di co-citazioni e accoppiamenti

bibliografici sono modelli specifici dell’analisi citazionale.

L’analisi di contenuto invece, mette in condizione i ricercatori di includere

grandi quantità di informazioni in forma testuale e di identificare

sistematicamente le loro proprietà, in grande rilievo troviamo le frequenze di

apparizione delle parole chiave, o keywords, più usate per individuare i

concetti più importanti del loro contenuto informativo. Queste aggregazioni

di informazioni testuali dovrebbero poi essere categorizzate in accordo a

Page 13: Tesi 1 2 rdt   no commenti

9

determinati framework teorici, i quali informano i sistemi di data analysis,

fornendo in linea di massima una lettura con significato logico del contenuto

analizzato.

2.2 Indicatori bibliometrici

Gli indicatori bibliometrici, accanto all’uso di strumenti di ricerca propri di ogni

disciplina, sono utilizzati in modo sempre più crescente nelle politiche dei comitati o

delle agenzie che hanno il compito di valutare la ricerca per determinare la qualità e

la produttività di enti ed istituzioni di ricerca. Tra questi indicatori ne ricordiamo in

modo particolare due: l’ “Impact Factor” e l’ “H-Index”.

2.2.1 Impact Factor

L’impact Factor (IF) permette di effettuare misurazioni sul livello della ricerca delle

pubblicazioni scientifiche, sia a livello nazionale sia internazionale. E’ un indice che

risente molto del fattore geografico, è influenzato, infatti, dall’area nella quale la

misurazione viene effettuata; l’IF è una misura del numero di citazioni dei lavori

pubblicati da una certa rivista rispetto al numero totale di lavori pubblicati dalla

stessa negli anni precedenti; risulta, quindi, molto influente sulla misurazione anche

la diffusione del giornale in questione; è scontato che, essendo più vasta la diffusione

in alcune aree di interesse, è presente una certa disparità di giudizio fra le diverse

discipline. Questo indicatore risente, inoltre, di un’ulteriore critica, questa è mossa

dal fatto che non vengono prese in considerazione, nel calcolo dell’Impact Factor

stesso, le riviste che vengono pubblicate in modo poco regolare; in questo modo l’

ISI, l’ente che ha dato i natali all’IF, non ha fatto altro che favorire i grandi editori.

Page 14: Tesi 1 2 rdt   no commenti

10

2.2.2 H Index

L'H-index o indice di Hirsch, famoso anche con il nome di “indice H39”, si basa sul

numero delle pubblicazioni di un autore e sul numero di citazioni da esse ricevute. Fu

proposto nel 2005 da Jorge E. Hirsch, ricercatore della University of California di

San Diego, per quantificare la prolificità e l'impatto del lavoro di studiosi e

ricercatori. Funziona in modo molto diverso rispetto all'Impact Factor. L’ideatore

infatti spiega così questa sua intuizione riguardo la creazione di questo nuovo indice:

“Uno scienziato possiede un indice H se H dei suoi N lavori hanno almeno H

citazioni ciascuno e i rimanenti (N - H) lavori hanno ognuno meno di H citazioni . ”

Il calcolo dell'indice H viene effettuato in base alla distribuzione delle citazioni che

le pubblicazioni di un ricercatore ricevono, nonostante questo, è possibile applicarlo

anche a piccoli gruppi di ricerca entro un ateneo. Il sistema è abbastanza semplice,

dato un autore (o un gruppo di autori, se si vuole applicare tale indice ad un gruppo

di ricerca) si può procedere come segue:

1. Si definisce un lasso temporale, ad esempio dal 2000 al 2013.

2. Si ordinano le pubblicazioni in senso decrescente in base al numero di

citazioni, mettendo in cima quell’opera, dell’autore in questione, che ha ricevuto

un maggior numero di citazioni.

3. L'indice H è riscontrabile dal numero sequenziale della pubblicazione che

precede quella dove il numero di citazioni risulta più basso rispetto al numero

sequenziale della pubblicazione.

Ma bisogna tuttavia prestare attenzione perché l'indice H è meno superficiale di

quanto potrebbe apparire a prima vista. Per quanto riguarda le pecche dell’indice H

Page 15: Tesi 1 2 rdt   no commenti

11

possiamo dire che questo indicatore risulta basso per studiosi che hanno avuto una

breve carriera, seppure influente.

2.2.3 G Index

Questo indice è stato introdotto al fine di superare i limiti dell’indice H; infatti,

quest’ultimo non permette di considerare gli articoli più citati, cosa che ovviamente

avviene con l’indice G. Infatti esso viene definito cosi :

“Un numero di articoli ha indice g se gli “g” articoli più citati hanno

complessivamente un numero di citazioni pari ad almeno g^2, con g maggiore o

uguale ad h ossia valore di h-index.”

3 Modalità di funzionamento ed interfacce verso

l’esterno delle banche dati scientifiche

3.1 Scopus di Elsevier

SciVerse Scopus è il più grande database di abstract e citazioni di SciVerse; SciVerse

di Elsevier, a sua volta, è un vivace ecosistema scientifico che facilita la

collaborazione, premia l’innovazione e accelera il processo di ricerca. SciVerse

integra i contenuti noti e affidabili di SciVerse Scopus, della letteratura sottoposta a

revisione paritetica, degli articoli di SciVerse ScienceDirect (in base al tipo di

abbonamento) e del Web con innovative applicazioni sviluppate dalla community

che contribuiscono ad arricchire e accrescere il valore dei contenuti.[1] La piattaforma

in questione, dunque, permette la visita di riassunti, articoli accademici e profili di

Page 16: Tesi 1 2 rdt   no commenti

12

autori. Dal punto di vista della classificazione degli autori sulla base degli indicatori

bibliometrici, Scopus fa riferimento all’indice Hirish (indice H). Questa scelta è stata

dettata anche da motivazioni di tipo commerciale, infatti l’ente che propose

originariamente l’Impact Factor, l’ISI, ha strette relazioni con uno dei principali

concorrenti di Scopus: Web Of Knowledge. Dal punto di vista economico, o meglio,

per quanto riguarda il corrispettivo in denaro per poter accedere al sistema, Scopus si

rivela molto chiuso, infatti, l’accesso alla piattaforma è possibile solo con la

sottoscrizione di un abbonamento. Traendo le somme da questa analisi è semplice

dedurre che Scopus nasce soprattutto come sistema rivolto ad ambienti universitari o

comunque in ambiti di ricerca e studio.

3.1.1 Esempio di funzionamento Scopus

Il nostro compito ora è quello presentare in modo rapido e semplice un esempio di

ricerca sulla piattaforma in esame. Proseguiremo, quindi, proponendo immagini

corredate da didascalie quanto più dettagliate possibile. Ricordiamo inoltre che è

possibile accedere al sistema dal nostro ateneo, dato che esso ha sottoscritto un

abbonamento.

Nel primo esempio che presentiamo, effettuiamo una ricerca in base ad una parola

chiave, come si può notare possiamo filtrare la ricerca in base a criteri di: range di

pubblicazione, area di appartenenza, tipologia di documento.

Page 17: Tesi 1 2 rdt   no commenti

13

Esempio di ricerca per parola chiave su Scopus

Dopo aver cliccato su “Search” possiamo ottenere i risultati come di seguito

mostrato.

Page 18: Tesi 1 2 rdt   no commenti

14

Esempio di ricerca per parola chiave su Scopus, risultato

Come si può notare, è possibile apporre anche dei filtri ai risultati al momento della

loro apparizione; si possono ordinare gli stessi anche in base a numero di citazioni,

rilevanza o in base all’ordine alfabetico dei titoli o degli autori. D’altro canto,

possiamo notare che in alto a sinistra è possibile effettuare anche delle ricerche

sull’autore, sull’affiliazione o effettuare una ricerca avanzata, specificando più filtri

in modo esplicito, come possiamo vedere nel secondo esempio, di seguito riportato.

Page 19: Tesi 1 2 rdt   no commenti

15

Esempio di ricerca avanzata su Scopus

In questo caso, invece, abbiamo specificato come keyword la stringa “grid”,

selezionato come affiliazione “Salerno”, infine, abbiamo filtrato ulteriormente i

risultati, scegliendo di evitare i documenti nei quali come autore comparisse

“Ritrovato”. E’ possibile, in questo tipo di ricerca, effettuare delle query molto

specializzate, sono inoltre presenti predicati logici tipici dell’algebra booleana (AND,

NOT, OR) che semplificano la scrematura dei risultati. I risultati della ricerca qui

effettuata sono di seguito visualizzabili.

Page 20: Tesi 1 2 rdt   no commenti

16

Esempio di ricerca avanzata su Scopus, risultato

Come ci aspettavamo la ricerca ha dato i risultati attesi, applicando alla perfezione i

criteri di selezione sul set delle risposte ottenute dal database.

Page 21: Tesi 1 2 rdt   no commenti

17

3.1.2 API Scopus: Scopus Integration

Dal punto di vista dell’interfacciamento con il mondo della programmazione per la

fruizione dei contenuti, la piattaforma Scopus mette a disposizione delle apposite

API, raccolte sotto il nome di Scopus Integration, queste sono volte allo sviluppo su

applicazioni esterne al network in analisi. Per quanto riguarda il contesto della

programmazione, possiamo dire che l’integrazione di Scopus (Scopus Integration) su

siti Web esterni al framework della piattaforma stessa, si basa sull’utilizzo di

chiamate a funzioni in linguaggio di scripting per fogli HTML: JavaScript. L’accesso

alle API è garantito in modo rapido, inoltre l’accesso ai dati è possibile anche se la

sottoscrizione a Scopus non è totale da parte dell’utente che effettua le richieste; nel

caso in cui l’utente invece abbia la sottoscrizione totale al sistema, è possibile,

tramite le API in considerazione, ottenere una quantità maggiore di informazioni. Per

quanto riguarda la sezione Scopus Integration dobbiamo necessariamente ricordare

che le funzionalità di ricerca messe a disposizione dello sviluppatore riguardano solo

il contesto dei documenti, ovvero, i metodi permettono di effettuare ricerche accurate

su papers, lectures e su tutti i documenti della piattaforma. Infatti, le API di Scopus

Integration non ci consentono di effettuare ricerche sugli autori, ne sulle keywords,

ne sui journal sui quali vengono pubblicati gli articoli scientifici. I metodi che

andremo a presentare, in Appendice A, sono validi per entrambi i tipi di ricerca:

“Cited By Count Search” e “Scopus Search”. La prima tipologia elencata permette di

estrapolare informazioni di citazioni contenute in un singolo documento facente parte

di una raccolta più ampia; quest’ultima a sua volta è rintracciabile per intero solo con

l’invocazione alle seconde API sopra citate, ossia le “Scopus Search”. In Appendice

A, al paragrafo A.1, è disponibile l’elenco dettagliato dei metodi messi a

disposizione dall’interfaccia di programmazione di Scopus. Si ricorda che per

effettuare l’integrazione si necessita di ottenere l’API Key per l’utilizzo delle Scopus

Integration API, ottenibile registrando il proprio sito nell’area “Development” di

Scopus. Una volta effettuato questo primo passo bisognerà procedere inserendo nel

proprio foglio di programmazione HTML, più precisamente nell’header, la chiave

Page 22: Tesi 1 2 rdt   no commenti

18

API. In questo modo ogni qualvolta vogliamo effettuare delle chiamate alle funzioni

messe a disposizione da Scopus, possiamo autenticarci in modo automatico.

A corredo dei contenuti presentati, ora si riporta di seguito un esempio di utilizzo

delle API per effettuare una ricerca sui documenti in base a delle keywords. Il tutto è

stato effettuato creando un documento HTML ed invocando le librerie di Scopus

tramite JavaScript.

Esempio di utilizzo API Scopus Integration

Page 23: Tesi 1 2 rdt   no commenti

19

Il risultato che otteniamo, visibile di seguito, ci permette di ottenere i seguenti dati: il

numero di volte che è stata effettuata sul network la ricerca specifica, il numero di

risultati che abbiamo scelto di visualizzare ed i risultati.

Risultato della ricerca usando le API di Scopus Integration

Page 24: Tesi 1 2 rdt   no commenti

20

3.2 Mendeley

Mendeley è un social network molto innovativo, permette di organizzare documenti,

citare e collaborare con altri utenti. Questa piattaforma mette a disposizione

dell’utente anche un utile tool, per la consultazione della piattaforma da desktop,

denominato “Mendeley Desktop”. Esso si presenta come in figura qui sotto.

Mendeley Desktop

Esplorando questo strumento possiamo anche capire meglio come funziona

Mendeley. Come è facile intuire, il tool mette a disposizione funzionalità

organizzative dei documenti, è possibile importare file dal sito ufficiale, che rimane,

comunque, consultabile anche senza l’utilizzo dello strumento succitato. Inoltre, è

possibile far riferimento e salvare gli utenti preferiti, rimanendo aggiornati su ogni

loro nuova pubblicazione. Utilissimo si rivela anche il “Web Import”, plugin di

“Mendeley Desktop” per l’importazione di documenti selezionati tra oltre 30

database accademici. Sono messe a disposizione dell’utente anche funzionalità

manageriali sotto l’aspetto dei gruppi di lavoro, è possibile, infatti, effettuare

Page 25: Tesi 1 2 rdt   no commenti

21

collaborazioni e scambiare dati in tutta sicurezza all’interno di gruppi privati, quindi,

il sistema in analisi in sostanza permette anche di sfruttare funzionalità di cloud

system. Questo significa che è possibile effettuare lo storage, cioè l’archiviazione;

infatti, sono a disposizione di ogni utente 2GigaByte di memoria per la

memorizzazione dei propri documenti. Ogni modifica viene, inoltre, referenziata in

modo semplice, in modo tale che in un lavoro di gruppo si capisca dove e come siano

stati realizzati delle modifiche ai documenti. Per ciò che riguarda il supporto ad

indici bibliometrici Mendeley si rivela scadente, o meglio questi sono del tutto

assenti; non è possibile, dunque, capire l’importanza dell’autore semplicemente

visualizzando il profilo dello stesso. Sotto l’aspetto economico, inoltre, Mendeley si

rivela del tutto gratuito. Dopo questa prima visione d’insieme, che sembrerebbe

attribuire alla piattaforma in questione grandi elementi di vantaggio nonostante la

mancanza di indicatori bibliometrici, andiamo a scoprire più nel dettaglio come

funziona e se realmente mantiene le aspettative.

3.2.1 Esempio di funzionamento Mendeley

Così come abbiamo proceduto nel caso del network Scopus, anche con Mendeley

presentiamo degli esempi di fruizione dei servizi offerti. Andiamo, infatti, ad

effettuare la medesima richiesta effettuata per Scopus, ossia una ricerca sui papers

relativi alla keyword “E-Learning”.

Page 26: Tesi 1 2 rdt   no commenti

22

Esempio di ricerca su papers in base alla keyword “E-Learning”

Come possiamo notare dallo screen-shot, è possibile selezionare l’elemento da

ricercare, la gamma di ricerca è ristretta a sole tre tipologie: ricerca su papers, gruppi

e infine autori. Il risultato della nostra ricerca è il seguente.

Page 27: Tesi 1 2 rdt   no commenti

23

Esempio di ricerca su papers in base alla keyword “E-Learning”, risultato

E’ facile notare che la piattaforma Mendeley è uno strumento un po’ acerbo rispetto

a quelle che potrebbero essere le richieste di utenti appartenenti a categorie più

elevate rispetto al semplice studente, il quale solitamente compie ricerche più mirate

e ristrette. Oltre a questo aspetto, bisogna tener presente il fatto che non è possibile

raffinare la ricerca, non vi sono infatti strumenti adatti per soddisfare questi requisiti.

In ultima analisi si può facilmente affermare che la piattaforma Mendeley non

soddisfa a pieno sotto molti aspetti, ma sicuramente presenta ampi margini di

miglioramento.

3.2.2 API Mendeley e protocollo OAuth 2.0

Per quanto riguarda l’aspetto di developement, Mendeley mette a disposizione

un’interfaccia di tipo RESTful consultabile dall’area “Developers Portal”. Come nel

caso di Scopus, anche Mendeley presenta queste interfacce come funzioni di

linguaggio Javascript, dunque invocabili da pagine HTML. Volendo utilizzare,

invece, un linguaggio di programmazione ad oggetti per applicazioni desktop,

Page 28: Tesi 1 2 rdt   no commenti

24

Mendeley propone anche una SDK da integrare in Java. Questo kit di sviluppo è

comunque completo, infatti mette a disposizione tutti i metodi invocabili anche da

Javascript, oltre ad un completo supporto all’autenticazione. Proprio questa, su

Mendeley, avviene tramite il protocollo OAuth 2.0. Prima di procedere alla

presentazione delle API in questione, preferiamo procedere con dei cenni teorici[2] al

protocollo di autenticazione sopra citato, questo è dettato anche dal fatto che ad oggi

OAuth 2.0 è senza dubbio il più utilizzato. Open Authorization o più comunemente

chiamato, appunto, OAuth, è un protocollo di comunicazione open mediante il quale

un’applicazione (o un servizio web) può gestire in modo sicuro l’accesso autorizzato

ai dati sensibili. Il protocollo è compatibile con qualsiasi tipologia di applicazione:

desktop, web e mobile. Il protocollo OAuth è stato ideato da Blaine Cook nel 2006,

mentre lavorava all’implementazione Twitter di OpenID, proponendosi come

alternativa aperta ai molti protocolli proprietari già esistenti, come Google AuthSub,

AOL OpenAuth, Yahoo BBAuth, Flickr API e tanti altri. Dalla versione 1.0

(pubblicata nel 2007) OAuth, ha subìto diverse revisioni, recependo via via le RFC

(Request For Comments) proposte dai vari esperti. In generale le RFC sono un

insieme di documenti di riferimento per la Comunità Internet che riportano

informazioni o specifiche riguardanti nuove ricerche, innovazioni e metodologie

dell’ambito informatico. Gli esperti possono pubblicare dei memorandum per esporre

nuove idee da includere negli standard: seguendo questo iter è stata pubblicata la

prima bozza del protocollo OAuth 2.0. Gli attori coinvolti sono 3:

1. L’applicazione che richiede le informazioni, o Consumer (la nostra applicazione)

2. Il servizio web che fornisce le informazioni, o Service Provider (in questo caso

Mendeley)

3. L’utente dell’applicazione iscritto sulla piattaforma del ServiceProvider

Per poter usufruire del servizio predisposto dal Service Provider, è necessario che

il Consumer registri la sua applicazione nell’area “Developer” ossia “Sviluppo”.

Con quest’operazione, il Service Provider fornisce al consumer le chiavi segrete

Page 29: Tesi 1 2 rdt   no commenti

25

(Consumer Key e Consumer Secret) le quali verranno utilizzate per lo scambio

dei dati. I principali step della comunicazione Consumer – Service Provider sono i

seguenti:

1. Il Consumer redirige l’utente ad un URL predisposto dal Service Provider per

la fase di autenticazione. Nella richiesta HTTP sono presenti le due chiavi

ricevute in fase di registrazione (Consumer Key e Consumer Secret) e

un’URL alla quale l’utente deve essere reindirizzato al termine

dell’operazione.

2. L’utente accede alla pagina di autenticazione predisposta dal Service Provider

dove inserisce le proprie credenziali di accesso, di solito username e

password. La pagina di autenticazione lavora con il protocollo HTTPS, il

quale garantisce che i dati scambiati tra browser e web server siano codificati

e non vengano trasferiti in chiaro come invece avviene nel protocollo HTTP.

In questo caso la comunicazione risulta molto più sicura in caso di

intercettazione.

3. Il Service Provider verifica l’identità dell’utente. Se la verifica ha esito

positivo, gli presenta il tipo di richiesta avanzata dal Consumer che l’utente

deve approvare. Tale richiesta riguarda, di solito, la durata dell’accesso e la

tipologia di informazioni che verranno rese disponibili al Consumer.

4. Il Service Provider redirige l’utente all’URL inviata precedentemente dal

Consumer (al punto 1). Nella richiesta HTTP è presente una stringa (detta

token) la quale deve essere utilizzata successivamente dal Consumer per

richiedere eventuali informazioni al Service Provider.

5. L’utente accede nuovamente alla pagina del Consumer. Per l’utente meno

esperto, il passaggio da un server ad un altro, è praticamente trasparente.

6. Il Consumer invia una richiesta HTTP al Service Provider nella quale

richiede, ad esempio, i dati dell’utente corrente. Nella richiesta deve anche

fornire il token precedentemente ricevuto. Le informazioni disponibili,

dipendono dal Service Provider.

Page 30: Tesi 1 2 rdt   no commenti

26

A differenza del protocollo Client/Server, il protocollo OAuth, come abbiamo

potuto notare, non obbliga l’utente a fornire le credenziali di accesso al provider

(il sistema esterno). L’utente viene rediretto sul server del Service Provider per

l’autenticazione al sistema.

Per quanto riguarda le API di Mendeley, in esse troviamo dei metodi suddivisi in

pubblici e privati. Analizzando queste funzionalità possiamo notare che: i metodi

pubblici sono definiti tali perché permettono di accedere a risorse di dominio

pubblico, quelli definiti come privati invece permettono l’accesso a dati privati

visibili solo dall’utente che ha compiuto l’accesso al sistema. Possiamo dare uno

sguardo a quelli che sono i metodi pubblici, riferendoci all’Appendice A, al punto

A.2 di questa tesi, in una tabella che esplica l’indirizzo del metodo e la risposta

attesa. Ricordiamo inoltre che i dati ottenuti saranno rappresentati in formato

JSON, un formato per lo scambio di dati. Quest’ultimo si basa su due strutture

principali : un insieme formato da chiavi/valori e un elenco ordinato di valori.[3]

Per quanto riguarda invece i metodi privati, dobbiamo ricordare che per questi si

farà riferimento sempre all’utente nel senso di user che ha compiuto l’accesso al

sistema. Per utilizzare queste API sarà necessario aver compiuto l’accesso con

l’utilizzo del protocollo di autenticazione prima descritto: OAuth 2.0. Anche i

metodi privati, come quelli pubblici, sono fruibili nell’Appendice A nel punto

A.3. Di seguito presentiamo, invece, degli esempi per la fruizione dei contenuti

della base dati Mendeley tramite l’utilizzo della SDK per linguaggio di

programmazione Java. Il primo passo da effettuare è, come già detto teoricamente

in precedenza, registrare sul network la nostra applicazione e ricevere la

Consumer Key (ossia chiave API) e la Consumer Secret, fatto questo possiamo

autenticarci come di seguito mostrato. Ci siamo, inoltre, avvalsi di un parser

Html: HtmlUnit . Questo, al fine di effettuare il login sul network, necessario per

l’autenticazione dell’applicazione. Si riportano le due classi tramite le quali è

stato possibile effettuare quanto appena detto. Ricordiamo che il parser è uno

strumento che permette di estrapolare dati da pagine HTML analizzandone in

modo automatizzato il sorgente.

Page 31: Tesi 1 2 rdt   no commenti

27

Classe che realizza l’accesso a Mendeley

Page 32: Tesi 1 2 rdt   no commenti

28

Classe per ottenere pin, necessario per recuperare il Token di autorizzazione

Una volta realizzato l’accesso è possibile fruire di tutte le funzionalità messe a

disposizione dalle API Mendeley, nonché dall’ SDK in uso. Per esempio, come

Page 33: Tesi 1 2 rdt   no commenti

29

vediamo di seguito, proviamo a ottenere una lista che indica il numero di

pubblicazioni presenti in ogni categoria del sistema preso in esame.

Classe per il recupero del numero di pubblicazioni per categorie

Risultato della richiesta effettuata tramite PrivateStatsApiSample

Page 34: Tesi 1 2 rdt   no commenti

30

3.3 Arnetminer

Arnetminer è uno strumento di ricerca e servizio di mining per ricercatori. Sul

sistema sono messe a disposizione servizi automatizzati per: creare un profilo basato

sulla semantica per ogni ricercatore tramite l’estrazione di informazioni da più

piattaforme Web, integrare dati accademici (ad esempio i dati bibliografici) da varie

fonti, effettuare ricerche su reti eterogenee, analizzare e scoprire modelli d’interesse

creati sulla base dei profili dei ricercatori estrapolati dai social network. Le principali

funzioni a disposizione in Arnetminer sono di seguito elencate. [4]

Ricerca profilo: si inserisce un nome di una persona da ricercare e il sistema

permetterà di visualizzare il profilo creato in base alle informazioni ricercate

tramite tecniche di estrapolazione di dati dal Web, nello specifico provenienti

da varie piattaforme. Le informazioni qui integrate e disponibili sono le

seguenti: informazioni di contatto, foto, statistiche di citazioni, valutazioni

accademiche, interessi di ricerca, percorso formativo, grafico personale

indicativo di statistiche di supporto, pubblicazioni.

Ricerca esperta: inserendo una query il sistema permetterà di recuperare i

profili delle persone più rilevanti rispetto al topic ricercato. Inoltre, la

piattaforma suggerisce la conferenza più importante e gli articoli più influenti

sempre inerenti al topic di ricerca. Esistono, inoltre, due algoritmi di

classificazione dell’importanza: VSM e ACT. Gli utenti possono anche

provvedere a recapitare un feedback per i risultati di ricerca in modo da

segnalare errori di ricerca e permettere lo sviluppo del sistema.

Analisi di conferenze: inserendo il nome di una conferenza, il sistema

permetterà di visualizzare gli autori più rilevanti che vi hanno preso parte, in

aggiunta sono presenti, tra i risultati, anche i documenti (papers) di maggiore

importanza presentati alla conferenza ricercata.

Page 35: Tesi 1 2 rdt   no commenti

31

Ricerca di un corso: inserendo un corso di studi, Arnetminer provvederà a

segnalare gli insegnanti più rilevanti.

Ricerca associati: inserendo il nome di due ricercatori sarà possibile

visualizzare la relazione che esiste tra i due.

Ricerca sotto-grafici: inserendo in questa ricerca una keyword, il sistema

innanzitutto ci farà visualizzare i topic più rilevanti, relativi alla stessa

keyword, quindi, mostrerà il sotto-grafico più importante connesso alla

ricerca.

Browser di topic: è basato sul modello Author-Conference-Topic (ACT),

Arnetminer, così, permette di scegliere tra i 200 topic più ricercati. Per

ognuno di essi, automaticamente viene assegnata un’etichetta nell’intento di

rappresentarne il significato. Inoltre, il browser presenta i ricercatori più

attivi, i documenti e le pubblicazioni più importanti e il trend di evoluzione

del topic.

Classifica accademica: sono definite 8 misure nell’intento di valutare il

lavoro dei ricercatori. Gli indicatori presenti sono: H-index, numero di

citazioni, uptrend, attività, longevità, diversità, socialità, nuove leve. Per ogni

indicatore si effettuano delle classifiche su domini differenti.

Modifica utente: una volta registratosi un utente generico può: modificare le

informazioni estratte su di esso in modo automatico, fornire feedback sui

risultati di ricerca ottenuti, seguire un ricercatore su Arnetminer, creare una

pagina Arnetminer (utilizzabile per organizzare conferenze, pubblicare

materiale).

Page 36: Tesi 1 2 rdt   no commenti

32

Le informazioni sono organizzate in una base dati ben specificata e strutturata, essa

esplica campo per campo i dati presenti nella singola tupla. La tabella di seguito ci fa

capire meglio.

Section Annotation Subtasks

Basic Information

Person Photo Position

Affiliation Research Interest

Homepage

Contact Information

Email Address Postal Address

Phone

Fax

Educational History

University, Major, Date, and Advisor for Ph.D. Degree University, Major, Date, and Advisor for M.S. Degree

University, Major, Date, and Advisor for B.S. Degree Publication Authored Papers and Technique Reports

Relationship

Co-authorship Work-in-the-same-place

PC-Member-in-the-same-conference

Tabella che mostra l’organizzazione dei dati su Arnetminer

Quindi nella sezione “Basic Information” troviamo, come suggerisce anche la

traduzione, le informazioni di base del profilo utente. Nella “Contact Information”,

invece, sono presenti le informazioni di contatto come la mail o il fax al quale è

raggiungibile il ricercatore. Per quanto riguarda “Educational History”, qui troviamo

un rapido elenco della formazione accademica dell’utente ricercato, nella sezione

“Pubblication”, ovviamente, sono raccolte tutte le pubblicazioni ed i documenti

pubblicati dal suddetto. Infine nella “Relationship” troviamo tutti i dati di relazioni

sociali e di studio del profilo ricercato. In conclusione di questa prima analisi sui

contenuti e l’organizzazione dei dati possiamo facilmente dedurre che Arnetminer ha

un carattere molto incentrato sul ranking, ossia sulla classificazione, dei profili

presenti sul sistema in base ad indici bibliometrici o di altra natura; è molto curato

quindi questo ultimo aspetto analizzato, il che rende la piattaforma in analisi molto

rilevante in ambito accademico e scientifico. Inoltre, la piattaforma Arnetminer mette

Page 37: Tesi 1 2 rdt   no commenti

33

a disposizione una quantità di pubblicazioni superiori sia a quelle presenti su Scopus,

sia a quelle disponibili su Mendeley. Per quanto riguarda l’aspetto economico,

Arnetminer è del tutto gratuito, il che è un altro punto a favore di questa piattaforma.

Ora, così come abbiamo fatto per le altre piattaforme presentate, procediamo con

esempi di fruizione dei contenuti sul database scientifico, mostrando prove di

richieste al sistema in questione.

3.3.1 Esempio di funzionamento Arnetminer

Le tipologie d’esempio che andiamo a presentare, rispecchiano quelli che già

abbiamo realizzato per quanto riguarda le piattaforme precedentemente analizzate.

Innanzitutto, effettuiamo una ricerca in base al profilo utente, ossia andiamo a

ricercare un autore indicizzato dal sistema Arnetminer. In questo caso abbiamo

effettuato una query del tipo “Expert”, ossia la ricerca letteralmente di un “esperto”

cioè un autore. E’ disponibile, come possiamo osservare in figura, anche una forma

di suggerimento sulla base delle lettere inserite, infatti, vengono consigliati dei profili

che contengono quella serie di caratteri.

Page 38: Tesi 1 2 rdt   no commenti

34

Esempio di ricerca profilo su Arnetminer

Cliccando su “Search” otteniamo un set di risultati, selezionandone uno, possiamo

visualizzare il profilo dell’utente corredato di tutte le statistiche di tipo sia

bibliometrico sia bibliografico, come vediamo di seguito.

Page 39: Tesi 1 2 rdt   no commenti

35

Profilo utente su Arnetminer

Sono disponibili, dunque, i valori di H-Index e G-Index; quest’ultimo è un nuovo

indice bibliometrico disponibile al giorno d'oggi solo su poche piattaforme, come già

detto, è volto a superare i limiti dell’indice H. Arnetminer si mostra dunque

all’avanguardia sotto l’aspetto bibliometrico.

Page 40: Tesi 1 2 rdt   no commenti

36

Un'altra tipologia di ricerca, che distingue Arnetminer dal resto delle piattaforme, è

la ricerca per topic ; ne presentiamo di seguito un rapido utilizzo, ricordando che

basterà cliccare su “Topic” nella home page della piattaforma, senza inserire alcun

carattere nella barra di ricerca. Otteniamo dunque la seguente schermata.

Esempio di ricerca Topic su Arnetminer

Ora interpretriamo i risultati: i topic sono ordinati in base al numero di ricerche

effettuate su di essi (Mechanism design è il più ricercato); i profili presenti, indicati

dalle immagini dei vari profili, indicano i personaggi più influenti su quel

determinato topic; i suggerimenti sulla destra indicano, invece, le conferenze relative.

Page 41: Tesi 1 2 rdt   no commenti

37

3.3.2 API Arnetminer e REST

Andiamo ora a dare un’occhiata a come Arnetminer si interfaccia all’esterno,

proponendo i propri dati, comprendendo come fruirli e in che modo essi sono

rappresentati. La piattaforma ora in analisi, a differenza delle precedenti, non pone

limiti di autorizzazione; infatti, l’interfaccia di programmazione è liberamente

raggiungibile, l’unica costrizione è quella di essere registrati al database. Arnetminer

anche sotto questo aspetto si mostra dunque molto aperto e flessibile. Dobbiamo però

capire quali sono i dati che possiamo richiedere al sistema, per fare ciò abbiamo

consultato la documentazione delle API, fatto ciò, si è facilmente inteso che i metodi

sono di tipo RESTful. Una API della tipologia appena citata (REpresentational State

Transfer) presenta un’architettura con risorse definite ed indirizzate, permette infatti

di trasferire informazioni direttamente sul livello applicativo di internet, senza

ricorrere a strati ulteriori come invece avviene con il modello SOAP, quest’ultimo

sarà presentato in dettaglio più avanti. Nelle interfacce REST l’accesso ad ogni

risorsa avviene tramite un identificativo univoco definito URI, lo scambio di

rappresentazioni di informazioni avviene su HTTP, la richiesta viene mediata sulla

base di connettori: tunnel, server, cache. Inoltre non è previsto in alcun modo il

mantenimento dello stato, detto questo, dunque, un’applicazione può connettersi ad

una risorsa conoscendo semplicemente l’URI e l’azione richiesta, quest’ultima server

per poter interpretrare il formato della risposta (HTML, XML, JSON). Dopo questo

piccolo excursus riguardo le interfacce REST, passiamo a mostrare le API di

Arnetminer, ricordando che, per effettuare delle richieste, si necessita di inserire il

nome utente, all’interno dell’URI, con il quale si vuole procedere nella richiesta. La

prima che presentiamo rispecchia la ricerca di un profilo presente sulla pagina della

piattaforma: “Ricerca Esperta”.

Page 42: Tesi 1 2 rdt   no commenti

38

L’URI di riferimento è la seguente:

arnetminer.org/services/searchexpert?q=[q]&u=[u]&start=[start]&num=[num]

&outputjs=[outputjs]&varname=[varname]

Tabella dei parametri per la ricerca esperta

La seconda query di ricerca che possiamo effettuare su Arnetminer è la ricerca per

pubblicazione, raggiungibile all’URI seguente:

arnetminer.org/services/search-

publication?q=[q]&u=[u]&start=[start]&num=[num]

Tabella dei parametri per la ricerca pubblicazioni

Nome

Descrizione Tipo

ricerca esperta Ritorna una lista di esperti

relative ad una keyword

Stringa (formato JSON)

u

Username per accesso Stringa

q

Keyword Stringa

start

Indice di partenza dei risultati Intero

num

Numero dei risultati Intero

outputjs Variabile JavaScript vera se la

ricerca da risultati

Booleano

varname

Nome variabile per i risultati Stringa

Nome

Descrizione Tipo

ricerca pubblicazioni Ritorna una lista di

pubblicazioni relative ad una

keyword

Stringa (formato JSON)

u

Username per accesso Stringa

q

Keyword Stringa

start

Indice di partenza dei risultati Intero

num

Numero dei risultati Intero

Page 43: Tesi 1 2 rdt   no commenti

39

Successivamente troviamo la ricerca di conferenze e congressi. L’URI in questo

caso:

arnetminer.org/services/search-

conference?q=[q]&u=[u]&start=[start]&num=[num]

Tabella dei parametri per la ricerca conferenze

Di grande importanza è anche la possibilità di accedere ai dati del profilo di un

utente, l’URI per fare ciò è la seguente:

arnetminer.org/services/person/[name]?u=[u]&o=[o] oppure

arnetminer.org/services/person/[id]?u=[u]&o=[o]

Tabella dei parametri per la ricerca profilo

Nome

Descrizione Tipo

ricerca conferenze Ritorna una lista di conferenze

relative ad una keyword

Stringa (formato JSON)

u

Username per accesso Stringa

q

Keyword Stringa

start

Indice di partenza dei risultati Intero

num

Numero dei risultati Intero

Nome

Descrizione Tipo

ricerca profilo Ritorna il profilo di un utente

oppure un id

Stringa (formato JSON)

u

Username per accesso Stringa

o

Opzioni di dettaglio profilo Stringa

name

Nome del profilo ricercato Stringa

id

Id identificativo profilo

ricercato

Intero

Page 44: Tesi 1 2 rdt   no commenti

40

Dunque se Arnetminer finora si era presentato come il più completo tra i sistemi

analizzati, mostra delle grosse lacune per quanto riguarda i dati fruibili in fase di

programmazione; ha un numero di metodi nelle sue API davvero ristretto, tale da non

permettere la fruizione completa dei dati, nello specifico di quelli bibliometrici. A

titolo d’esempio, nell’ immagine successiva vedremo come interrogare il database di

Arnetminer, effettuando una ricerca “Expert” alla ricerca di profili relativi ad una

keyword specificata nell’URI.

La query che creiamo è la seguente:

http://arnetminer.org/services/search-expert?q=e-

learning&u=oyster&start=3&num=2&outputjs=true&varname=esresult

dove i parametri specificati sono:

q (keyword) = e-learning

u (utente che effettua ricerca) = oyster

start (indice di partenza dei risultati) = 3

num (numero risultati) = 2

varname (variabile Javascript che contiene risultati) = esresult

outputjs (booleano che indica se è valida la ricerca) = true

Otteniamo così la risposta, in formato JSON, sul nostro browser, come di seguito

mostrato.

Page 45: Tesi 1 2 rdt   no commenti

41

Risultato query Expert

Quello mostrato è il primo risultato, ossia il profilo ed i dati relativi a “Giovanni

Tummarello”, un autore collegato alla keyword ricercata (E-learning).

3.4 Google Scholar

Il sistema di supporto scientifico e accademico, creato dal colosso di Mountain View,

si presenta più come un motore di ricerca che come un vero e proprio database. Esso

consente di individuare testi della cosiddetta letteratura accademica come articoli

sottoposti a revisione paritaria, tesi di laurea e dottorato, libri, sommari, recensioni e

rapporti tecnici di tutti i settori della ricerca scientifica. Google Scholar consente di

reperire articoli da una vasta gamma di case editrici che si rivolgono al mondo dello

studio e della ricerca da associazioni scientifiche e professionali, oltre che dalla

galassia di articoli scientifici e culturali distribuiti sul Web. Gli articoli indicizzati in

Scholar comprendono anche quelli pubblicati da Elsevier, e nella sua funzione è

simile al motore di ricerca interno di Elsevier Scopus. Come sistema è molto simile a

Page 46: Tesi 1 2 rdt   no commenti

42

quelli a pagamento: Scopus e Thomson ISI Web of Science. Il motto di questa

piattaforma è “Sali sulle spalle dei giganti” ed è un'espressione ricavata dalla famosa

frase di Isaac Newton "Se ho visto più lontano è perché sono salito sulle spalle dei

giganti che mi hanno preceduto". Il motto si riferisce alla possibilità di elevarsi nelle

conoscenze e nelle competenze aperta dalla migliore accessibilità della letteratura

accademica, termine questo da intendersi nel senso lato consentito dal World Wide

Web. In termini di caratteristiche, Google Scholar permette agli utenti di ricercare

per copie fisiche e/o digitali di articoli anche se questi appartengono a biblioteche

online. Se l'articolo è disponibile liberamente sul web, questi collegamenti verranno

mostrati. Dal punto di vista economico bisogna ricordare che esso è del tutto gratuito.

Il numero di documenti presenti, gli indicatori bibliometrici ed il fattore di gratuità

sono tutti elementi a favore della piattaforma in analisi, d’altro canto non è possibile

interrogare il sistema stesso dall’esterno dato che non presenta alcuna interfaccia di

programmazione pubblica.

3.4.1 Esempio di funzionamento Google Scholar

Google Scholar non permette in alcun modo di effettuare ricerche mirate, non è

possibile, infatti, selezionare il tipo di ricerca, come invece era possibile per i sistemi

precedenti; questo potrebbe sembrare un fattore negativo, ma in realtà ogni

interrogazione che andiamo a sottoporre al sistema viene automaticamente

ottimizzata ed indirizzata ai risultati corretti. Nell’esempio che segue effettuiamo la

ricerca in base alla keyword “e-learning”, per equità di trattamento, come già fatto

per i precedenti sistemi.

Page 47: Tesi 1 2 rdt   no commenti

43

Esempio di ricerca su Google Scholar per keyword “E-Learning”

La ricerca appena effettuata ci permette di accedere ai seguenti risultati che

successivamente commenteremo.

Page 48: Tesi 1 2 rdt   no commenti

44

Risultati per la ricerca su keyword “e-learning” su Google Scholar

Il set di risultati ottenuti ci permette di visualizzare i documenti più rilevanti rispetto

alla parola inserita nella barra di ricerca; questi risultati possono essere ulteriormente

filtrati in base all’anno di pubblicazione, oppure ordinati per data o ancora

escludendo brevetti e/o citazioni. Nel caso in cui la ricerca fosse stata effettuata su un

autore e non su una keyword, sarebbe stato possibile accedere al profilo dello stesso.

3.5 Web of Science (Web of Knowledge )

L’ultima piattaforma che andiamo ad analizzare è Web of Science, spesso abbreviata

in WoS, proprietà del gruppo Thomson Reuters. Questo sistema si presenta come un

Page 49: Tesi 1 2 rdt   no commenti

45

punto nevralgico tra le banche dati scientifiche online, ciò è dovuto, ovviamente, alla

sua relativa vecchiaia. WoS infatti nasce all’inizio degli anni 2000 grazie a forti

rapporti di collaborazione tra l’azienda Reuters e l’ISI, quest’ultimo, come sappiamo,

è l’ente per l’informazione scientifica. WoS infatti è una costola di Web of

Knowledge, un database online nato per raccogliere proprio i dati dell’ente sopra

citato. Fatte queste premesse storiche, non bisogna assolutamente sottovalutare la

piattaforma che abbiamo di fronte. Essa presenta infatti un numero di documenti

estesissimo, raccoglie più di 12˙000 journals, 148˙000 proceedings e svariate

migliaia di pubblicazioni.[5] Il funzionamento, in linea di massima, dell’intero

sistema, ricalca quello già analizzato sulla piattaforma Scopus, seppure emergono

delle differenze. Per quanto riguarda i dati a disposizione, abbiamo già parlato delle

quantità, ora possiamo anche analizzarne le qualità. I dati raggiungibili, infatti,

comprendono anche informazioni relative a database di dimensioni inferiori ma nati

per il supporto a specifici settori scientifici, vedi “Chemical Reactions”. Inoltre, per

quanto riguarda l’accesso, questo non è libero come invece avviene per Mendeley o

Arnetminer, ma, come per Scopus, è richiesto un corrispettivo per poter usufruire

delle risorse. Anche in questo caso il nostro ateneo ha sottoscritto un abbonamento

per permettere a studenti e ricercatori di godere dell’immenso database di WoS. Oltre

a questo ultimo fattore negativo, sulla piattaforma in analisi non esistono reali pagine

del profilo, infatti, sono indicizzati solo i documenti, citando gli autori. Cercando di

raggiungere il profilo di un utente ci si ritrova solo dinnanzi all’elenco di tutte le sue

pubblicazioni, conseguenza immediata di ciò è la mancanza di indicatori

bibliometrici relativi agli utenti. A questi aspetti negativi bisogna inoltre aggiungere

che Web of Science non mette a disposizione dei programmatori alcuna interfaccia di

programmazione.

3.5.1 Esempio di funzionamento Web of Science

Ancora una volta, dopo l’analisi generale della piattaforma, scendiamo nel

particolare, mostrando degli esempi semplici di ricerca e illustrando le possibilità che

Page 50: Tesi 1 2 rdt   no commenti

46

WoS ci offre. Il sistema in questione permette di effettuare ricerche specifiche su:

topic di rilievo, titoli, autori, nome delle pubblicazioni, conferenze, editori, journals,

lingua, stato o nazionalità. Oltre a queste funzionalità, ovviamente, vi sono tutte

quelle di supporto per il filtro dei risultati delle ricerche, ad esempio interessandosi

solo di dati relativi ad un certo arco temporale, o ancora estendendo la ricerca ad altri

database della famiglia Thomson Reuters. La pagina di ricerca che si apre ai nostri

occhi al primo accesso al sistema è quella mostrata nella figura successiva, in questo

caso abbiamo compilato come sempre il campo di ricerca con la keyword

“e-learning”.

Esempio di ricerca su WoS per keyword “e-learning”

Come già anticipato, possiamo aggiungere dei filtri di ricerca, riducendola per lassi

temporali, estendendo la ricerca ad altri database o aggiungendo altri campi alla

ricerca: si può scegliere oltre alla keyword anche un autore o il nome di una

pubblicazione. Detto questo, procediamo mostrando i risultati della ricerca effettuata

nella figura sopra.

Page 51: Tesi 1 2 rdt   no commenti

47

Risultati per la ricerca su keyword “e-learning” su WoS

Possiamo, come intuibile dal menù sulla sinistra, filtrare i risultati in base a vari

criteri: tipologia di pubblicazione, autore, categoria ed altri ancora.

Page 52: Tesi 1 2 rdt   no commenti

48

4 Confronto tra sistemi

Dopo aver analizzato le varie piattaforme, esaminando sia l’aspetto quantitativo sia

qualitativo dei dati che esse forniscono, possiamo stilare una tabella che ci permette

di avere un rapido riepilogo visivo dei pregi e dei difetti di ognuna delle suddette.

H-

Index

G-

index

API Autorizzazione

uso Api

Gratuito Cloud

Scopus Si No Si Si No No

Mendeley No No Si Si Si Si

Arnetminer Si Si Si

(poche)

Si Si No

WoS No No No - No No

Google

Scholar

Si No No - Si No

Tabella di confronto tra database scientifici

Quello che emerge è il fatto che nessuna tra le piattaforme, in precedenza analizzate,

può ritenersi completa. Arnetminer, tra i quattro sistemi, offre sicuramente più

servizi per quanto riguarda l’indicizzazione dei profili degli utenti, ma allo stesso

tempo offre scarse opportunità di interfacciamento con l’esterno. Scopus e Mendeley

sono classificabili nel mezzo, non offrono API complete per la fruizione piena dei

dati che contengono, presentano comunque caratteri positivi: Mendeley con il cloud

e la gratuità, Scopus con la presenza di H-index e discrete API. In ultima posizione

possiamo sicuramente porre Web of Science, non è gratuito, non presenta alcun

profilo utente ma solo documenti, di conseguenza non offre alcun indicatore

bibliometrico; a precederlo troviamo Google Scholar il quale, rispetto a Web of

Science, presenta il fattore di gratuità e l’indicatore bibliometrico H index.

Page 53: Tesi 1 2 rdt   no commenti

49

Capitolo 3

Estrazione dei dati da Scopus e sviluppo

applicazione per sistemi Android

1 Introduzione e linee guida di sviluppo

Nel capitolo 2 di questo documento abbiamo analizzato il comportamento delle

banche dati scientifiche, scovando pregi e difetti di ognuna, soprattutto spostando

l’attenzione verso le interfacce di programmazione invocabili dall’esterno dei vari

sistemi. Una volta completata questa fase, si è deciso di sviluppare un’applicazione

per terminali mobili dotati di sistema operativo Android. Il contesto che è stato

immaginato, al fine di sviluppare al meglio il programma, è quello di un convegno di

ricercatori in ambito scientifico. Sarà capitato praticamente a tutti i ricercatori e

professori di prendere parte ad una conferenza e di non conoscere i campi di ricerca

di un collega o ancora volerne capire il valore bibliometrico (H-Index), oppure di

volersi incontrare con altre persone, magari sconosciute, dello stesso paese e presenti

alla conferenza. Al fine di soddisfare questi quesiti, raccogliendo i suggerimenti del

professore che ci ha guidato durante il percorso di tesi, abbiamo deciso di

intraprendere lo sviluppo di questa applicazione. Ovviamente il fulcro della stessa, la

quale necessita di una struttura client-server, risiede proprio sul server stesso.

Page 54: Tesi 1 2 rdt   no commenti

50

Ed è per semplificare la lettura del testo che dividiamo il restante capitolo in una

prima parte che mostra il funzionamento del server, ed una seconda dedicata al

client, il tutto non prima di aver presentato la fase preliminare di registrazione.

2 Registrazione all’applicazione

L’applicazione, come già accennato, nasce nel contesto di un congresso scientifico di

ricercatori; in questo tipo di eventi, da prassi, è richiesta una registrazione

preliminare. Analizzando quest’ultimo fattore, abbiamo definito un form di

registrazione che permette all’utente di registrarsi all’evento e di conseguenza

all’applicazione. La realizzazione di questo form ha richiesto lo studio del linguaggio

di programmazione HTML di base e del linguaggio di scripting Javascript, dunque è

stato cosi creato.

Page 55: Tesi 1 2 rdt   no commenti

51

Form registrazione conferenza

Oltre ai campi tradizionali, sono presenti le opzioni di contatto, ossia indirizzo e-mail

e numero di telefono. L’affiliazione è un campo importante, non c’è bisogno inoltre

che l’inserimento sia preciso (ad esempio: Università degli studi di Salerno) ma basta

anche un’informazione indicativa (del tipo: Salerno); sarà compito delle funzionalità

del server riuscire a reperire l’informazione corretta di affiliazione dell’utente che sta

effettuando la registrazione, ciò avviene, come vedremo, tramite la piattaforma

Scopus. Troviamo, sempre all’interno del form, il campo “Twitter Nickname”,

questa informazione richiesta, ma non obbligatoria, ci permette, tramite delle servlet

Page 56: Tesi 1 2 rdt   no commenti

52

appositamente studiate in fase di progetto, di recuperare dato il nickname dell’utente

su Twitter, il numero e l’elenco delle persone che seguono e sono seguite da esso.

Come è possibile vedere dalla figura sopra, sono presenti anche due bottoni per la

registrazione tramite Facebook e LinkedIn. Analizziamo ora cosa accade nei due

casi.

Nel caso di Facebook, provando a registrarsi all’applicazione tramite il supporto di

questo social, ci comparirà la pagina di accesso e autorizzazione al prelievo dei dati

dalla social platform da parte della nostra applicazione.

Registrazione tramite Facebook

La registrazione tramite questo social network permette, sempre tramite un’apposita

servlet, di accedere alla lista degli amici dell’utente. A tal proposito vale la pena

ricordare di cosa si intende per servlet: è un programma che viene eseguito su un

server web, scritto in linguaggio Java, il quale potenzia le funzionalità del server

stesso. Per quanto riguarda la registrazione tramite il social network LinkedIn la

situazione è molto simile a quella appena presentata con la prima piattaforma sociale.

I dati rintracciabili sono: nome, cognome, foto del profilo, lista connessioni (molto

simile alla lista degli amici di Facebook). Anche in questo caso abbiamo creato

un’apposita servlet per mettere in comunicazione il server con la pagina di

Page 57: Tesi 1 2 rdt   no commenti

53

autenticazione. Il protocollo utilizzato per l’autenticazione, sia nel caso di LinkedIn

sia in quello di Facebook è l’OAuth 2.0.

Autorizzazione alla registrazione tramite LinkedIn

Una volta effettuata la registrazione dell’utente alla conferenza, si può procedere nel

comprendere su quali basi è stato progettato il server, analizzando sia la creazione sia

il suo interfacciamento con l’esterno.

Page 58: Tesi 1 2 rdt   no commenti

54

2.1 Estrapolazione dati da Scopus

La piattaforma che è stata scelta per l’estrapolazione di dati indicizzati è Scopus. La

selezione è stata dettata dal fatto che nessuna piattaforma ci ha permesso di estrarre i

dati in modo completo tramite le API a disposizione, inoltre, Scopus presenta una

quantità di informazioni notevoli e permette di accedere facilmente ai profili degli

utenti, dato che presenta un’apposita pagina di ricerca in base al nome completo

dell’autore. L’estrazione vera e propria è stata realizzata con lo sviluppo di una

classe Java appositamente studiata per effettuare il parsing sulle pagine HTML del

dominio di Scopus. Il parsing è un processo volto ad analizzare uno stream in input

in modo da determinare la sua forma grammaticale. Per creare questa classe ci siamo

avvalsi del supporto di tre librerie gratuite: HTMLUnit, JSoup, Selenium RC Server.

Le prime due sono semplici strumenti di parsing che permettono di analizzare il

contenuto delle pagine HTML ed estrarre i dati da esse. La terza invece è un tool più

completo e in un certo senso complesso, infatti, esso permette di automatizzare la

navigazione tra le pagine; si è reso necessario l’utilizzo di Selenium dato che sulle

pagine di Scopus sono presenti dei controlli nei campi dei vari form di ricerca, questo

rende impossibile il parsing, quindi per effettuare l’interazione abbiamo dovuto

simulare l’inserimento manuale dei dati nel form stesso, per fare ciò la libreria in

questione è stata di vitale importanza. Sempre a tale riguardo, all’avvio del server si

necessita di avviare il server standalone Selenium RC. Per automatizzare il problema

è stato creato un file di estensione .bat che viene eseguito all’avvio del server stesso;

il codice è riportato di seguito.

Page 59: Tesi 1 2 rdt   no commenti

55

La fase di reperimento dati entra in azione nel momento in cui viene sottoscritto il

form di registrazione, il server è capace di recepire i dati da questo e li invia alla

classe Java che ha il compito di interrogare il database scientifico online Scopus. La

classe elaborata, appena menzionata, rintracciabile, in quanto codice Java, in

Appendice B al punto B.1 è stata rinominata come ManageScopus ed estende la

classe “SeleneseTestBase”, quest’ultima è una classe presente nella libreria

Selenium. Nello specifico in ManageScopus troviamo i seguenti metodi.

public boolean SearchAuthorOnScopus(User user)

Questo metodo permette di effettuare una ricerca di un utente su Scopus, in

modo automatico, inserendo nome, cognome e affiliazione. Questi dati sono

sintetizzati, insieme ad altre informazioni, nella classe User, la quale ha un

ruolo fondamentale nello sviluppo dell’intera applicazione. Se la ricerca su

Scopus tramite browser dà esito positivo, il metodo andrà a completare le

variabili dell’istanza della classe User passatagli e fornirà come valore di

ritorno “vero”, avremo invece “falso” se la ricerca non è andata a buon fine.

Tramite questo metodo, inoltre, è possibile ricavare l’H-index, le keywords e

i journal relativi all’utente in questione.

public String[ ] SearchAuthorsByKey(String k1 , String k2 , String k3)

Codesto metodo a differenza del precedenti, viene richiamato durante

l’esecuzione dell’applicazione e non in fase di registrazione alla conferenza.

Inserendo tre keywords, il metodo permetterà di rintracciare gli autori relativi

ai primi duecento documenti più rilevanti in base al numero di citazioni.

Questa lista di autori viene poi archiviata nella variabile di ritorno.

Per poter usufruire dei dati messi a disposizione da Scopus, la messa in opera e il

successivo esercizio del server, ci siamo serviti della connessione al proxy server del

nostro ateneo, il quale ha effettuato la sottoscrizione al sistema Scopus al fine di

beneficiarne delle informazioni contenute. Dopo questa piccola premessa vediamo

come e quali dati vengono estratti, tramite lo strumento di testing Selenium, dalla

Page 60: Tesi 1 2 rdt   no commenti

56

piattaforma al momento dell’invio dei dati dal form di registrazione verso il server.

Innanzitutto, viene effettuata una ricerca autore sulla base di tre delle informazioni

inserite nel form di registrazione prima presentato: nome, cognome, affiliazione.

Questo primo step è mostrato nella figura successiva.

Recupero dati Scopus

Questo form di ricerca compilato, ricordiamo, in modo automatico ci porta ad un

risultato preciso, questo perché è stato selezionato il checkbox di matching perfetto

tra i dati inseriti e quelli presenti sul database. Giungiamo, quindi, ai risultati della

ricerca, qui, dato che abbiamo selezionato il match perfetto, riusciamo ad evitare

ambiguità ed omonimie, avendo specificato anche l’affiliazione. Ricordiamo inoltre

che, nel caso in cui non viene trovata corrispondenza tra i dati inseriti e quelli

presenti su Scopus, il server chiuderà il processo di esecuzione del browser senza

Page 61: Tesi 1 2 rdt   no commenti

57

effettuare la raccolta dei dati dalla piattaforma scientifica, ma permetterà comunque

di inserire nel database le informazioni immesse dall’utente nel form di registrazione.

Di seguito il risultato della ricerca.

Risultato ricerca profilo

Da questa schermata, si procede, automaticamente, cliccando sull’utente trovato nel

database; questo ci porta alla pagina del profilo dell’autore in questione dove

estrapoleremo una parte delle informazioni.

Profilo utente Scopus parte 1

Page 62: Tesi 1 2 rdt   no commenti

58

Profilo utente Scopus parte 2

La fase di estrazione inizia tramite il prelievo dei dati seguenti: H index, affiliazione

e source history, ossia storia dei journal sui quali l’autore ha effettuato almeno una

pubblicazione. Per quanto riguarda l’affiliazione, questo dato viene prelevato perché

in fase di inserimento potrebbero essere state inserite stringhe che non individuano in

modo preciso la corrispondente rappresentazione dell’affiliazione sul database;

l’estrazione di questa informazione (affiliazione) serve per uniformare i dati. Invece,

per quanto concerne i cosiddetti journal, il prelievo dei dati avviene effettuando una

selezione, non vengono perciò presi in considerazione quei titoli che contengono le

parole “proceeding” oppure “conference”, questa scelta è dettata dal fatto che i

documenti in questione sono relativi a conferenze e congressi, per cui non sono stati

effettivamente pubblicati su alcun journal. L’ultimo dato che ci interessa estrarre

Page 63: Tesi 1 2 rdt   no commenti

59

sono le keywords relative ad un autore, ossia le parole chiave collegate al profilo

utente, queste indicano i campi di studio dell’autore, sono perciò un dato di grande

rilievo soprattutto sotto il profilo della socializzazione tra ricercatori. Al fine di

prelevare questi ultimi dati, proseguiamo nella navigazione, automatizzata da

Selenium, sulla piattaforma scientifica Scopus, cliccando sulla pagina che mostra i

papers, ossia i documenti scientifici pubblicati dall’autore. Questo passaggio è

indicato, nell’immagine precedente, dalla freccia gialla. La pagina che apriamo è

dunque la seguente.

Estrazione keywords da pubblicazioni autore

L’estrazione delle parole chiave avviene da box segnalato in rosso sulla sinistra.

Quest’ultimo, come i box sopra (Year, Author Name, ecc...), in figura minimizzati,

sono delle applicazioni interne al sistema Scopus. Abbiamo così completato

l’estrazione dei dati in fase di inserimento di un nuovo utente all’interno del nostro

sistema, per completare il quadro delle funzionalità create sulla base della

Page 64: Tesi 1 2 rdt   no commenti

60

piattaforma Scopus, andiamo ad esplorare la sezione relativa alla ricerca in base alla

rilevanza dell’autore. La premessa da fare in questo caso è quella di specificare il

fatto che questa ricerca è fruibile in fase di utilizzo dell’applicazione da terminale

mobile, può essere considerata una ricerca a runtime, ossia a tempo d’esecuzione.

Innanzitutto, andiamo a spiegare che tipo di ricerca effettuiamo e che dati possiamo

rilevare. La query di ricerca è ci fornisce un set di risultati ordinati per rilevanza sui

documenti, l’utente, inserendo da una a tre keywords, indica al server di cercare su

Scopus i nomi degli autori relativi ai primi duecento documenti connessi alle parole

chiave inserite, ordinati per numero di citazioni. Per ognuno dei documenti

analizzati, Selenium, con l’aiuto della libreria HTMLUnit, va ad estrarre il nome

degli autori ed interroga il database al fine di verificare se in esso sia presente quello

stesso nome, solo in questo caso, l’utente corrispondente a quel profilo d’autore

viene inserito in una collezione di utenti che sarà poi inviata al terminale. La

procedura automatizzata può essere osservata di seguito, in questo caso abbiamo

specificato solo una parola chiave.

Ricerca per rilevanza

Da questa pagina, raggiungiamo l’elenco dei primi venti risultati trovati, li andiamo

ad ordinare per numero di citazioni e scorriamo le successive dieci pagine. Nel caso

in questione, abbiamo supponendo di aver già popolato il database, tra i vari profili

inseriti troviamo anche il profilo del prof. Ritrovato, notiamo che avremo la

corrispondenza in un risultato come di seguito mostrato.

Page 65: Tesi 1 2 rdt   no commenti

61

Ordiniamo per Cited-by (numero citazioni)

Risultato della ricerca per citazioni

Abbiamo così terminato la fase di estrapolazione dei dati da Scopus, possiamo

dedicarci al resto dello sviluppo dei server e alle restanti funzionalità da mettere a

disposizione.

2.2 Estrazione dati social network

Ricordiamo, solo per fini di comprensione che, l’estrapolazione dei dati dai social

network avviene con le classi SocialFeatures e ControllerPage e negli script collegati

alla pagina di registrazione: scriptfacebook e scriptlinkedin. Ulteriori dettagli sono

disponibili nella tesi complementare a questa, sviluppata dal mio collega Antonio

Page 66: Tesi 1 2 rdt   no commenti

62

Scaldaferri. Per il prosieguo in una completa lettura ci basti sapere che i dati estratti,

tutti opzionali, relativi all’utente specificato sono il numero e la lista delle

connessioni LinkedIn, la lista degli amici di Facebook, il numero e le liste dei

followers e dei following di Twitter.

3 Applicazione: lato Server

Per quanto concerne lo sviluppo del lato server, abbiamo necessitato di estendere le

nostre conoscenze su molti aspetti di programmazione e progettazione che nel

seguito analizzeremo singolarmente. In generale, possiamo affermare che l’idea di

base che caratterizza questa parte dell’applicazione risiede nell’estrapolare i dati da

una sorgente, scelta sulla base dell’analisi effettuata sui differenti sistemi nel capitolo

2, al momento della registrazione dell’utente alla conferenza. Le informazioni

raccolte devono essere archiviate in modo preciso su una struttura che ne permettesse

un efficiente e rapido accesso, un database. Infine, per quanto concerne il server,

devono essere messi a disposizione del client dei servizi che concedessero di

richiedere i dati alla banca dati, sulla base di un protocollo di comunicazione. E’

stato necessario, quindi, esporre i servizi all’esterno del server tramite Web Service,

il protocollo selezionato per effettuare questo scambio di informazioni con l’esterno

è il SOAP.

3.1 Organizzazione dei dati e tools di sviluppo

Quello che ora ci preme di mostrare è la rappresentazione dei dati in un formato di

semplice comprensione; le informazioni estrapolate con il supporto di Scopus,

Facebook, LinkedIn e Twitter, così come le credenziali di accesso, i dati anagrafici e

Page 67: Tesi 1 2 rdt   no commenti

63

quelli di recapito vengono archiviati sul server in una struttura di rapido accesso: la

banca dati. La banca dati è un archivio dove le informazioni contenute sono collegate

e strutturate secondo un preciso modello logico: il modello relazionale. La loro

architettura, grazie alla presenza del DataBase Management System (DBMS), è di

tipo client-server quindi interrogabile da un utente generico. Fatta questa premessa,

ci è stato utile ricorrere agli studi fatti durante il percorso accademico, riprendendo i

concetti teorici e gli strumenti necessari al fine di creare il nostro semplice database.

E’ stato così creata una banca dati, a partire dal modello relazionale di seguito

rappresentato, utilizzando il tool Sybase che permette di creare il modello

concettuale, ne ricava quello logico e mette in fine a disposizione dell’utente tutte le

query di creazione delle varie tabelle.

Modello relazionale del database da noi creato

Page 68: Tesi 1 2 rdt   no commenti

64

Sono state generate così otto tabelle, di cui una principale per il login denominata,

per l’appunto, “login_table”. Questa contiene la corrispondenza tra nome utente e

password. La struttura permette di identificare in modo univoco un utente sulla base

del suo username, le restanti tabelle, infatti, presentano tutte dei vincoli di integrità

referenziale; questo vuol dire, considerando ad esempio la “info_table”, che sarà

necessaria l’esistenza di una tupla, ossia il generico elemento di una relazione con

attributi, relativa ad uno specifico username nella login_table, per rendere possibile

l’esistenza di una tupla, riferita sempre allo stesso username, nella “info_table”.

Un’altra importante osservazione da fare sta nel fatto che le tabelle “info_table” e

“login_table” presentano ambedue come chiave primaria, ossia un insieme, in questo

caso solo uno, di attributi che permettono di identificare univocamente la tupla,

questa è di fatto l’attributo username; nelle restanti tabelle invece la chiave primaria

è identificata dalla coppia formata da un attributo differente di tabella in tabella

(nick_following, nick_followers, ecc…) e l’username, questo vuol dire che in queste

tabelle originariamente avevamo bisogno di un attributo multivalore, in questo modo

ad un utente possono corrispondere più di uno degli altri attributi che in coppia con

l’username fungono da chiave primaria. Tutto questo può essere anche sintetizzato

nel fatto che ad un utente possono corrispondere più keywords, più journals, più

followers di Twitter. Avendo fatto queste premesse, ora possiamo analizzare in modo

rapido quelli che sono i dati contenuti nelle varie tabelle. La “login_table” contiene

la corrispondenza nome utente – password, necessaria in fase di autenticazione per

l’accesso all’applicazione. La “info_table”, invece, presenta tutte quelle informazioni

relative all’utente che hanno un valore unico ma ovviamente non univoco: i dati di

recapito, nome, cognome, Hindex, foto, nazionalità, affiliazione, numero di followers

e following sul social network Twitter, numero di connessioni LinkedIn. La lista dei

followers, dei following, delle connessioni LinkedIn e degli amici di Facebook sono

contenute rispettivamente in: ”Twitter_followers_table”, ”Twitter_following_table”,

“Connection_table” e ”Facebook_Friends_table”. Infine, alcune informazioni estratte

da Scopus: keywords e journals sono immagazzinate nelle tabelle “Keywords_table”

e “Journal_table”. A corredo del lavoro svolto sul database, si allega in Appendice B,

nel paragrafo B.2, le query di creazione.

Page 69: Tesi 1 2 rdt   no commenti

65

3.1.1 Rappresentazione Java

Avendo pienamente rappresentato la struttura del nostro database, ora dobbiamo

capire come rappresentare i dati in linguaggio Java. Per fare ciò, ci siamo

appositamente creati una classe che permette di racchiudere le informazioni prelevate

dal database: la classe User. Questa classe presenta tutte le informazioni relative al

singolo utente, ad esempio: le parole chiave ad esso correlate, i journals, le

connessioni di LinkedIn, l’H Index e così via. Di seguito vengono mostrati gli

attributi che la compongono.

Classe user

Questa classe presenta attributi privati, infatti, non è qui rappresentato l’intero codice

per motivi di semplificazione, ma è importante sapere che è corredata dei metodi

“getter” e “setter” su ognuno dei suoi attributi, al fine di poter prelevarne e

rispettivamente impostarne il valore per ogni istanza eventualmente allocata. Al fine

Page 70: Tesi 1 2 rdt   no commenti

66

di permettere la comunicazione su una connessione, la classe necessita di

implementare la classe “Serializable”, la quale permette di non incorrere in problemi

durante la comunicazione in rete; inoltre, la classe presenta, seppure non presente in

figura, un costruttore vuoto, questa è una necessità, dettata dall’utilizzo della libreria

KSOAP, per garantire la corretta comunicazione client-server. Le classi che seguono

queste specifiche, serializzabile, presenza di “getter” e “setter”, costruttore senza

argomenti, sono definite in linguaggio tecnico come JavaBean e servono per

racchiudere oggetti semplici al loro interno, come appunto nel caso sopra in esame.

3.1.2 Strumenti di sviluppo

Per quanto riguarda la creazione dei servizi web che abbiamo dovuto mettere a

disposizione sul server, ci siamo serviti di developer tool molto diffusi. La

programmazione del server è basata su linguaggio Java, visto che il progetto è di

natura prettamente dinamica e basata su un framework web, l’ambiente di sviluppo

designato a risolvere le problematiche in questione è Eclipse con distribuzione

Enterprise (Java Eclipse EE). Con Eclipse EE è infatti possibile automatizzare la

creazione del foglio WSDL, di conseguenza il lavoro che abbiamo svolto ha

riguardato soprattutto il lato della programmazione ad oggetti, ed è bastato dare uno

sguardo al WSDL generato in automatico per capirne la correttezza realizzativa. Per

quanto riguarda il server, come struttura di comunicazione, abbiamo selezionato uno

strumento completo: XAMPP. Questo tool contiene tutti gli strumenti utili per il

mantenimento di un progetto web dinamico: un database MySql, una piattaforma

server web Apache HTTP server ed i linguaggi di scripting PHP e Pearl, questi ultimi

non utilizzati nel nostro caso.

Page 71: Tesi 1 2 rdt   no commenti

67

Visione in Eclipse del progetto

Page 72: Tesi 1 2 rdt   no commenti

68

3.2 Server e Database

Andiamo ora ad approfondire quello che è il lavoro che il server deve svolgere,

analizzando come esso si interfaccia per quanto riguarda le operazioni da compiere

sul database mostrato nel sottoparagrafo 2.1. Abbiamo, per i fini appena citati, creato

un’apposita classe che permette di effettuare le operazioni sul database: ManageIO.

La classe in questione effettua, in ognuno dei suoi metodi, delle query al database,

come vedremo tra poco. L’interazione tra banca dati e server avviene sulla base del

JDBC ossia di un connettore, svincolato dallo specifico DBMS, questo supporta due

tipi di istruzioni: statement, la quale viene inviata volta per volta dal programma al

database, e il prepared statement, compilata una sola volta per motivi di efficienza.

Da questa connessione-ponte tra server e database riusciamo ad avere una

comunicazione bidirezionale, query che vanno dal primo al secondo e i result set che

si muovono in direzione opposta. La presenza di un iteratore sul result set permette,

poi, di estrarne i singoli dati da fornire all’ambiente di sviluppo prima, e al client

successivamente.

3.2.1 Classe ManageIO

Non ci preme dilungarci su questa classe, ne facciamo una trattazione sintetica,

seppure essa sia molto rilevante. Innanzitutto presentiamo l’interfaccia di seguito.

Page 73: Tesi 1 2 rdt   no commenti

69

Page 74: Tesi 1 2 rdt   no commenti

70

Interfacce classe ManageIO

Fatte queste premesse, entriamo nel merito dell’argomento: ManageIO permette di

interrogare il database. Concede l’inserimento di nuovi record relativi ad una singola

istanza della classe User tramite il metodo “insert”. Troviamo ancora metodi di

controllo: “isUsernameUsed” che viene utilizzato per verificare la presenza nel

database di un utente con uno specifico username, “checkPassword” controlla la

correttezza della password d’accesso all’applicazione da parte di un utente. Oltre a

queste funzionalità di controllo troviamo tutte quelle di ricerca in base a vari criteri,

per nome utente, per cognome, per keyword, per affiliazione, per nazione e, in base

all’username, per aspetti sociali: amici di Facebook, connessioni LinkedIn, followers

Page 75: Tesi 1 2 rdt   no commenti

71

e following su Twitter, tutte relative ad uno specifico utente. Per quanto riguarda i

metodi privati, la maggior parte di questi sono di supporto a quelli pubblici, di

grande importanza sono i metodi per la creazione e la chiusura della connessione con

il database, rispettivamente: “createConnection” e “closeConnection”.

3.3 Server e il mondo esterno: WebService

La parte consistente dello sviluppo dell’applicazione sul server-side risiede nello

sviluppo dei web service che abbiamo deciso di mettere a disposizione del client. Un

web service è un sistema software, creato sul server, che viene sviluppato per

garantire l’operabilità tra differenti tipi di elaboratori, in poche parole è un insieme di

programmi che serve a permettere l’accesso ai servizi del server a tipologie differenti

di terminali; da questa dichiarazione si evince che, per i nostri fini, è necessaria una

struttura di interfaccia dal server verso l’esterno composta in questo modo. Il

problema che ci siamo posti è stato quello di riuscire a far comunicare un dispositivo

Android ed un software con un’architettura e un sistema operativo differente, si è

reso necessario superare, dunque, i limiti imposti dai cosidetti middleware, infatti, in

un contesto generico potremmo immaginare che per ogni richiesta di un servizio

dall’esterno verso il server, vi sia la necessità di installare un apposito middleware;

ovviamente una situazione di questo tipo non garantirebbe un accesso alle

informazioni sul server ad un numero molto elevato di dispositivi. La comunicazione

tra il web service e l’applicazione mobile che abbiamo sviluppato è avvenuta sulla

base di una delle tre famiglie protocollari disponibili: RPC Oriented, nello specifico

abbiamo scelto il protocollo SOAP, accompagnato da WSDL, appartenente alla

famiglia appena citata. E’ sicuramente di grande interesse approfondire questo

argomento, presentando le tre architetture in questione [6] :

Page 76: Tesi 1 2 rdt   no commenti

72

RPC Oriented

E’ l’architettura più datata, presenta infatti delle peculiarietà tipiche dei

middleware tradizionali; il suo funzionamento si basa su una richiesta HTTP

di tipo POST del client su una URL che specifica l’intera applicazione server,

nella richiesta sono specificati il nome della procedura remota da invocare ed

i parametri da passare. Il server risponde sempre tramite protocollo HTTP.

Alla famiglia RPC appartiene quello che d’ora in poi citiamo come SOAP,

ma che in realtà è l’unione di due protocolli di comunicazione: SOAP e

WSDL. SOAP nasce come acronimo di Simple Object Access Protocol, e

supera i limiti di RPC-XML, permette dunque di eliminare le problematiche

relative ai tipi di dati trasmissibili su un canale di comunicazione (parametri e

valori di ritorno). Agli esordi, nel 1998, SOAP non presentava alcuna

definizione formale della sua interfaccia, per questo l’IBM introduce, a

partire dal 2000, il WSDL, un linguaggio basato su XML per definire le

interfacce dei web service; un documento WSDL è in sostanza composto da

tutti i protocolli utilizzati, le operazioni disponibili ed i relativi parametri, i

valori di ritorno, i punti di accesso o endpoint dei web service e tutti i tipi non

predefiniti utilizzati dalle varie operazioni disponibili. Questo tipo di file è

disponibile online sul sito che ospita il web service sia perché deve essere

possibile visualizzare eventuali modifiche alle interfacce, sia perché i

linguaggi di tipo dinamico, come Java, possano creare le classi che

rappresentano la comunicazione con il client a tempo di esecuzione. L’unione

tra SOAP e WSDL demanda allo sviluppatore un carico di lavoro molto

leggero sia sul lato server che su quello client, al fine di permettere la

comunicazione, appunto, tra server e client, viene garantita l’interoperabilità

tra i sistemi in comunicazione ed infine è bene ricordare che questo

protocollo non è vincolato al trasporto dei dati solo su HTTP ma anche su

altri protocolli come SMTP.

Page 77: Tesi 1 2 rdt   no commenti

73

Message Oriented

In questa tipologia di protocolli le applicazioni si scambiano messaggi

unidirezionali, per cui ogni comunicazione di risposta è indipendente da

quella di richiesta, di conseguenza non è importante conoscere l’ordine delle

richieste da parte del server che risponde; l’architettura in questione va ad

alleviare la distinzione netta tra client e server proponendo un modello molto

simile al peer-to-peer. Conseguenza di ciò è sia il disaccoppiamento tra server

e client, sia la difficoltà nel gestire operazioni prettamente sincrone ed

emerge, dunque, la necessità di un livello di trasporto affidabile.

Architettura REST

Nell’architettura di tipo REST acronimo di REpresentational State Transfer,

ogni singolo elemento dell’informazione ha una sua URL, vengono sfruttate

tutte le operazioni disponibili per il protocollo HTTP: DELETE, GET, POST,

PUT per intervenire sui dati. Il tutto porta ad una maggiore semplicità di

implementazione e ad un utilizzo migliore della banda disponibile.

Per la creazione del nostro web service è stato scelto il primo modello tra i tre appena

presentati, questa selezione è stata dettata dalla scelta del linguaggio di

programmazione utilizzato sul server: Java. Il protocollo SOAP infatti si presta bene

in ambiti di programmazione ad oggetti. In fase di programmazione server questo

aspetto viene ben celato da Eclipse EE, il quale, come già detto, automatizza il tutto;

ciò che, fortunatamente, non viene nascosta è la classe che permette al server di

interagire con l’esterno: ServerInterface. Quest’ultima mette a disposizione tutti i

metodi raggiungibili da remoto, in pratica è il punto di appoggio tra il client, che

usufruisce della nostra applicazione, e le informazioni immagazzinate nel database.

Page 78: Tesi 1 2 rdt   no commenti

74

3.3.1 Classe ServerInterface

Presentiamo ora degli screen-shot autoesplicativi per mostrare la classe

ServerInterface. Innanzitutto mettiamo in evidenza il file WSDL modellato in modo

grafico, successivamente presenteremo la classe in questione ed infine i commenti a

riguardo.

Page 79: Tesi 1 2 rdt   no commenti

75

f

File Wsdl relativo al web service

Page 80: Tesi 1 2 rdt   no commenti

76

Page 81: Tesi 1 2 rdt   no commenti

77

Page 82: Tesi 1 2 rdt   no commenti

78

Page 83: Tesi 1 2 rdt   no commenti

79

Page 84: Tesi 1 2 rdt   no commenti

80

Classe ServerInterface

Page 85: Tesi 1 2 rdt   no commenti

81

Nella fase iniziale della classe sono presenti istanze delle classi ManageScopus e

ManageIO, al fine di richiamarne le funzionalità nei metodi contenuti dalla

ServerInterface; per quanto riguarda le funzionalità sociali, invece, si è deciso di

creare una classe che presenta metodi invocabili staticamente, dunque, non abbiamo

allocato delle istanze di essa. Come si può notare, i metodi a disposizione sono

numerosi ed ognuno di essi può essere raggiunto da un terminale qualsiasi, purché

l’accesso sia indirizzato dal file WSDL, presente sul server e disponibile

pubblicamente all’endpoint.

4 Applicazione: lato Client

Lo sviluppo di un’applicazione, che permettesse di recuperare i dati presenti sul

database del server, si è rivelato molto stimolante dal punto di vista della

programmazione. I problemi affrontati sono vari: comunicativi, di programmazione,

di design. Come già avvenuto per quanto riguarda la programmazione lato server,

ripercorriamo la stessa strada, introducendo una rappresentazione dei dati e

successivamente entrando nel merito del codice Java. Premettiamo che l’intera

applicazione necessita di una connessione internet per funzionare, questo è dovuto al

fatto che le richieste e le risposte, da e verso il server, ovviamente avvengono a

tempo di esecuzione, ma non si è ritenuto utile salvare alcun dato sul dispositivo

mobile.

4.1 Organizzazione dei dati e tools di sviluppo

Sul dispositivo mobile non vengono archiviati dati, avviene tutto a runtime,

conseguenza di ciò è la necessità di istanziare numerosi oggetti della classe User. La

Page 86: Tesi 1 2 rdt   no commenti

82

classe in questione rispetta praticamente la stessa classe presente sul server, ma con

alcune particolarità. Innanzitutto ne mostriamo una rappresentazione dal codice.

Attributi classe User sul client

Come possiamo notare, in questo caso la classe User implementa un’altra classe

“KvmSerializable” rispetto alla stessa classe presente sul server, la quale

implementava “Serializable”. Tutto ciò è dovuto al fatto che si è scelto di usare la

libreria KSOAP per lo scambio dei dati tra client e server, dunque, è richiesto che il

dato scambiabile tra le due parti sia un oggetto di un tipo o primitivo oppure

complesso creato come JavaBean che implementi questa classe (KvmSerializable) e,

nello specifico, dei metodi, che permettano di ottenere e settare le variabili presenti

Page 87: Tesi 1 2 rdt   no commenti

83

nelle istanze della classe User di ritorno, provenienti dalle chiamate ai web service;

sono insomma, quelle funzioni che permettono il matching: getPropertyInfo,

getProperty, getPropertyCount, setPropertyInfo. L’implementazione realizzata per i

metodi appena illustrati è visionabile in Appendice B al paragrafo B.3.

4.1.1 Strumenti di sviluppo Android

La strumentazione necessaria per lo sviluppo di applicazioni per sistema operativo

Android è disponibile presso la pagina ufficiale per sviluppatori del sistema mobile

creato da Google. I tools che abbiamo deciso di considerare per realizzare il nostro

compito sono sostanzialmente due: la distribuzione dell’ambiente di sviluppo Eclipse

per progettazione Android detta Android Developers Tool (ADT) e la libreria nata

per la comunicazione client-server in Java su protocollo SOAP: KSOAP. La prima

contiene tutte le librerie Android per lo sviluppo di applicazioni complete su sistema

mobileed è inoltre molto semplice da utilizzare dato che sono pubblici sia tutta la

documentazione a riguardo sia vari esempi di utilizzo della stessa.

Page 88: Tesi 1 2 rdt   no commenti

84

Visione d’insieme del progetto

In questa schermata possiamo osservare la composizione del nostro progetto

Android, possiamo notare le varie classi e tra queste focalizzeremo la nostra

attenzione in particolar modo sulla classe “WebServiceInterface”, la quale funge da

interfaccia tra il client mobile stesso e il server.

Page 89: Tesi 1 2 rdt   no commenti

85

4.2 Funzionalità e codice

L’applicazione che abbiamo sviluppato, ed ora in analisi, si propone di mettere a

disposizione dell’utente tutte quelle funzionalità che possano servire ad avere

informazioni riguardo gli altri utenti presenti alla conferenza. Dopo la prima fase di

registrazione e di archiviazione dei dati, la quale come abbiamo visto avviene sul

server, troviamo la possibilità di visualizzare i dati da sistema mobile. Per

sintetizzare il funzionamento dell’applicazione ci conviene far riferimento

direttamente all’interfaccia disponibile all’utente. Bisogna prima capire però quali

sono le piccole differenze tra la programmazione Java e la programmazione Android,

infatti, quest’ultimo permette di usufruire di molte potenzialità di Java in modo molto

più semplice. L’esempio lampante, che abbiamo largamente utilizzato, è

l’AsyncTask, esso altro non è che un thread separato. Programmando in Android,

infatti, è necessario eseguire qualsiasi operazione in un thread separato da quello

principale, questo ha l’obiettivo di impedire che l’interfaccia grafica rimanga

bloccata nell’attesa dell’operazione in esecuzione. Altre differenze tra le due

tipologie di programmazione risiedono nel modo di progettare, ogni operazione in

Android deve essere pensata per essere racchiusa in un’ “Activity”, ogni pagina della

nostra applicazione corrisponde infatti ad una di queste. Tra le varie activity ne

troviamo alcune specifiche per la visualizzazione di liste di oggetti: le “ListActivity”,

queste, sulla base di un oggetto definito “Adapter”, impostato sulla base della lista

stessa, permettono di selezionare uno tra gli elementi e permettere l’inizio di una

nuova attività collegata ad esso. Dopo questi primi cenni teorici riguardo alcune

caratteristiche che abbiamo utilizzato in fase di sviluppo, procediamo, dunque, passo

dopo passo nella fruizione dei contenuti, partendo dall’accesso al sistema tramite

l’apposita pagina di login.

Page 90: Tesi 1 2 rdt   no commenti

86

Login applicazione

L’utente qui inserirà le proprie credenziali d’accesso e potrà accedere al menù

principale dell’applicazione.

Menù applicazione

Page 91: Tesi 1 2 rdt   no commenti

87

Dal menù possiamo selezionare varie opzioni:

My profile

Permette l’accesso al profilo personale dell’utente che sta utilizzando

l’applicazione, presentandone i vari dati.

Profilo

Top 10 HIndex

Mostra i dieci profili degli utenti che hanno H Index più elevato

Top 10 HIndex

Page 92: Tesi 1 2 rdt   no commenti

88

Search by Name

Permette di ricercare un utente in base al nome e al cognome oppure solo in

base al cognome, in questo ultimo caso potremmo trovare un insieme di

utenti. Selezionando uno di questi ultimi è possibile visualizzarne il profilo.

Inserimento dati Risultato della ricerca

Search by Nation

Presenta prima l’elenco delle nazioni presenti nel database e, selezionandone

una, ci permette di visualizzare tutti gli utenti provenienti da quella.

Lista nazioni Risultato per Gran Bretagna

Page 93: Tesi 1 2 rdt   no commenti

89

Search by Affiliation

Presenta prima l’elenco delle affiliazioni presenti nel database e,

selezionandone una, ci permette di visualizzare tutti gli utenti provenienti da

essa. Selezionando un utente è possibile visualizzarne il profilo.

Lista affiliazioni Risultato selezionando Università di Salerno

Search by Keyword

Mostra innanzitutto l’elenco delle keywords presenti nel database e,

selezionandone una, ci permette di visualizzare tutti gli utenti relativi ad essa.

Selezionando un utente tra questi, è possibile visualizzarne il profilo.

Lista keywords Risultato selezionando “E-Learning”

Page 94: Tesi 1 2 rdt   no commenti

90

Search by Relevance on Papers

E’ una ricerca a runtime sulle pagine del database scientifico Scopus,

permette di visualizzare gli utenti che presentano un numero elevato di

citazioni su documenti relativi ad una o più, massimo tre, keywords.

Inserimento keywords

Sul server intanto avviene in modo automatico la ricerca come mostrato di

seguito.

Ricerca per keyword “e-learning”

Page 95: Tesi 1 2 rdt   no commenti

91

Il server estrae quei nomi già presenti nel database

Una volta trovati e collezionati gli utenti in questione, viene creata una

collezione che sarà presentata sul terminale mobile.

Risultato della ricerca effettuata

Page 96: Tesi 1 2 rdt   no commenti

92

Suggestions…

Dal bottone suggerimenti si accede ad un ulteriore menù che permette di

ricevere suggerimenti personalizzati in base ai dati relativi all’utente che sta

utilizzando l’applicazione.

Menù suggerimenti

By your Keywords

Vengono qui visualizzate prima tutte le keywords dell’utente, poi,

selezionandone una si accede alla lista degli utenti che sono relativi ad essa.

Selezionando un utente dall’elenco si accede al suo profilo.

Keywords per Pierluigi Ritrovato Risultato per “Learning systems”

Page 97: Tesi 1 2 rdt   no commenti

93

Your Country

Suggerisce tutti gli utenti provenienti dalla stessa nazione dell’utente che sta

utilizzando il programma Android. Selezionandone uno si accede al profilo.

Lista persone stesso paese per Ritrovato

Your Affiliation

Suggerisce tutti gli utenti provenienti dalla stessa affiliazione dell’utente che

sta fruendo i dati. Selezionandone uno si accede al profilo.

Suggerimenti per affiliazione per Ritrovato

Page 98: Tesi 1 2 rdt   no commenti

94

Facebook

Suggerisce tutte le persone che sono amiche su Facebook dell’utente

registrato e che sono presenti alla conferenza. Come sempre, selezionando un

utente si può accedere al suo profilo.

Suggerimenti Facebook per Antonio Scaldaferri

LinkedIn

Suggerisce tutte le persone che sono nelle connessioni LinkedIn dell’utente

registrato e che sono presenti alla conferenza. Selezionando un utente si può

accedere al suo profilo.

Suggerimenti LinkedIn per Raffaele Di Taranto

Page 99: Tesi 1 2 rdt   no commenti

95

Your Followers

Suggerisce tutte le persone che sono tra i followers di Twitter dell’utente

registrato e che sono presenti alla conferenza. Cliccando su un utente si può

accedere al suo profilo.

Suggerimenti Twitter followers per Antonio Scaldaferri

Your Following

Suggerisce tutte le persone che sono tra i following di Twitter dell’utente

registrato e che sono presenti alla conferenza. Selezionando un utente si può

accedere al suo profilo.

Suggerimenti Twitter following per Antonio Scaldaferri

Page 100: Tesi 1 2 rdt   no commenti

96

4.2.1 Connessione al Web Service

Abbiamo appena mostrato come funziona il sistema, quali sono le funzionalità e il

modo nel quale esso presenta i dati che alloggiano sul server remoto; proprio a

questo punto riteniamo di grande importanza capire come avviene la richiesta di

connessione dal client verso il server. Come accennato precedentemente, la classe di

riferimento è composta da metodi statici ed è denominata: “WebServiceInterface”.

Essa presenta tutte le funzionalità per la connessione al server, sfrutta l’architettura di

riferimento imposta da KSOAP. Per comprendere meglio l’intero funzionamento,

prendiamo in considerazione uno dei metodi contenuti nella classe in analisi, ad

esempio il metodo “searchUsersByKey”, presentiamo, dunque, il codice in più

frammenti e lo commentiamo.

Il metodo in questione invoca l’operazione sul web service detta

“searchUsersByKeyword”, per permettere il raggiungimento del server bisogna

specificare l’URL componendola dall’indirizzo IP del server seguito dall’URI che

permette l’accesso al file WSDL presente.

Page 101: Tesi 1 2 rdt   no commenti

97

Viene creata quindi un’istanza di SoapObject che serve ad effettuare la richiesta al

server, viene, ad essa stessa, aggiunto un oggetto che specifica il parametro che viene

passato al metodo sul web service. Ancora, viene specificato un mapping ossia un

matching, una corrispondenza, tra la classe User presente sul client e quella presente

sul server. Infine, avviene la chiamata al web service tramite il metodo “call”

sull’istanza della classe HttpTransportSE.

Nell’ultima parte di codice che compone il metodo in analisi, viene prelevata la

risposta dall’ ”Envelope” e vengono estratti i singoli dati, che compongono la

risposta stessa, tramite un iteratore su istanze della classe SoapObject; in questo caso

viene prelevata la singola istanza del set di risposta proveniente dal web service,

ossia un array di User.

Page 102: Tesi 1 2 rdt   no commenti

98

Conclusioni

Al termine di questo lungo percorso, tanto esteso quanto formativo, possiamo trarre

le conclusioni del lavoro svolto, analizzando gli aspetti che hanno caratterizzato la

realizzazione del compito assegnato. Innanzitutto, compiamo un breve riepilogo:

abbiamo analizzato le banche dati scientifiche, per i nostri obiettivi di estrazione dei

dati è stato scelto il database di Scopus, sono state sviluppate le funzionalità per

svolgere tale compito e dunque, creando una banca dati supportata da un web

service, sono stati messi a disposizione tali dati all’esterno. Infine, è stata sviluppata

un’applicazione per sistemi Android, la quale nasce nel contesto di una conferenza,

ai fini di visualizzare i dati sul nostro database e suggerire eventuali profili

d’interesse. Il lavoro assegnato si è rivelato molto formativo ed interessante, oltre a

permetterci una consolidazione delle conoscenze sia del linguaggio di

programmazione ad oggetti Java, sia della creazione e dell’interrogazione dei

database, ci ha concesso di acquisire nuove conoscenze per quanto riguarda la

programmazione di pagine Internet. Si è rivelato necessario conseguire i fondamenti

di HTML e del linguaggio di scripting Javascript, sia per la realizzazione di parsing

automatici, sia per la fruizione delle API sia dei sistemi sociali coinvolti.

Successivamente, ci sono stati forniti i concetti per la realizzazione e la

comunicazione tra client e server, per cui abbiamo dovuto approfondire le nostre basi

teoriche riguardo i protocolli coinvolti. Una volta creati i web service, abbiamo

dovuto preoccuparci di testare gli stessi; per farlo abbiamo utilizzato uno strumento

molto importante e già conosciuto: la libreria Java Selenium, tra l’altro già utilizzata

in fase di estrapolazione dei dati. Infine, si è proceduto con la creazione di

un’applicazione per dispositivi mobili con sistema operativo Android, abbiamo,

dunque, dovuto rielaborare i concetti già conosciuti del linguaggio Java, ed adattarli

al contesto in esame. La programmazione Android alleggerisce il carico di lavoro

dello sviluppatore, ma allo stesso tempo presuppone che i concetti di base come i

layout e la loro realizzazione, gli AsyncTask, le Activity e il linguaggio di supporto

XML siano ben consolidati; ci siamo dunque impegnati per comprendere tutti questi

Page 103: Tesi 1 2 rdt   no commenti

99

aspetti e riuscire a realizzare in modo adeguato l’applicazione “InCongress”, la quale

permette di presentare i dati archiviati sulla banca dati creata in modo davvero user-

friendly, mettendo a disposizione tutte quelle funzionalità di suggerimento in base

agli interessi dell’utente registrato. Bisogna dunque rendere merito della buona

riuscita dell’intero lavoro al corso di laurea, il quale ci ha fornito i fondamenti del

pensiero informatico ed ingegneristico, inculcandoci la forma mentis necessaria per

affrontare problemi e tematiche come quella illustrata in questo documento, con

questa filosofia abbiamo affrontato l’argomento in analisi; in questo modo ci è stato

possibile comprendere in modo rapido tutti i nuovi concetti, dei quali avevamo una

conoscenza insufficiente o in alcuni casi inesistente, esaminati in questo capitolo

conclusivo.

Page 104: Tesi 1 2 rdt   no commenti

100

Appendice A

A.1 Tabella dei metodi API Scopus

Metodi

Descrizione

Informazioni suppletive

areSearchResultsValid () Ritorna vero o falso in base al

fatto che la ricerca sia stata

completata o meno

getContent ()

Ritorna il contenuto del set

ricercato

getField (position, field)

Ritorna un singolo campo di un

documento nella specifica

posizione

Valido solo se

areSearchResultsValid() è vera

getFields ()

Ritorna i campi del set

(stringhe) separati da comma.

getLastSearchRequest()

Torna searchObj per la ricerca

precedente, null se non vi è

stata una ricerca precedente

getNumResults ()

Ritorna il numero dei risultati

trovati

Valido solo se

areSearchResultsValid() è vera

getSearch ()

Ritorna il set di ricerca

getSearchResults ()

Ritorna l’oggetto o meglio I

risultati della ricerca

Valido solo se

areSearchResultsValid() è vera

getOffset ()

Ritorna il corrente set d’offset

getPosition ()

Ritorna l’offset Valido solo se

areSearchResultsValid() è vera

getSort () Ritorna il corrente set ordinato

Page 105: Tesi 1 2 rdt   no commenti

101

getSortDirection ()

Ritorna la direzione di

ordinamento del set ordinato

getTotalHits ()

Ritorna il numero delle volte

che è stata effettuata la ricerca

corrente

Valido solo se

areSearchResultsValid() è vera

renderDocument (position)

Restituisce il documento alla

specifica posizione nel

documento HTML e lo mostra

tramite renderer

Valido solo se

areSearchResultsValid() è vera

runSearch (searchObj)

Effettua una ricerca in base alla

stringa che gli viene passata;

permette di visualizzare i

risultati senza invocare il

renderer

search (searchObj)

Effettua una ricerca in base alla

stringa passatagli. In questo

caso viene invocato il renderer

selectRenderer (renderer)

Permette di selezionare il

renderer tra una lista proposta

da Elsiever. Al momento

l’unico supportato è il “list”

setCallback

(functionJavascript)

Setta il metodo Javascript da

invocare al termine

dell’esecuzione della ricerca

opzionale

setAPIKey (APIKey)

Setta l’APIKey necessaria per

poter effettuare la chiamata alle

funzioni di Scopus Integration

setFields (fields)

Permette di selezionare i campi

da ritornare nelle operazioni di

ricerca. Per gli

utenti/sviluppatori non

registrati non è possibile

ottenere i campi: abstract e

firstauth.

setNumResult (numResult)

Permette di selezionare il

numero di risultati che ci

aspettiamo dalla ricerca.

Page 106: Tesi 1 2 rdt   no commenti

102

Intervallo (1-20) per utenti non

registrati, (1-2000) per utenti

registrati

setSearch (search)

Setta la stringa di ricerca, è

valida ogni stringa anche

proveniente da form avanzati

Tabella di consultazione delle API di Scopus Integration

A.2 Tabella dei metodi pubblici API Mendeley

Indirizzo metodo Risposta Requisiti

http://api.mendeley.com/oapi/stats/authors/ Lista degli autori

più rilevanti tra le varie discipline

GET

http://api.mendeley.com/oapi/stats/papers/ Lista dei

documenti più

rilevanti tra le varie discipline

GET

http://api.mendeley.com/oapi/stats/publications/ Lista delle

pubblicazioni più

rilevanti tra le varie discipline

GET

http://api.mendeley.com/oapi/stats/tags/<discipline id>/ Lista delle

discipline più

cercate nelle

ultime tre

settimane

Id_disciplina

/ GET

http://api.mendeley.com/oapi/documents

/search/<terms>/

Lista di

documenti

ricercati in base

ai parametri

specificati in

<terms> (anno,

autore, ecc..)

Terms / GET

http://api.mendeley.com/oapi/documents/details/<id>/ Informazioni di

citazione per un

documento

specifico

identificato in

id (del

documento) / GET

Page 107: Tesi 1 2 rdt   no commenti

103

<id>

http://api.mendeley.com/oapi/documents/related/<id>/ Lista di 20

documenti in

relazione con

quello specificato

in <id>

id (del

documento) / GET

http://api.mendeley.com/oapi/documents/authored/<name>/

Lista delle

pubblicazioni

relative all’

autore specificato in <name>

Name / GET

http://api.mendeley.com/oapi/documents/tagged/<tag>/ Lista di

documenti

relative ad uno specificato <tag>

Tag / GET

http://api.mendeley.com/oapi/documents/categories/ Lista delle

categorie

http://api.mendeley.com/oapi/documents

/subcategories/<category id>/

Lista delle

sottocategorie

relative ad una

categoria

specificata in <category_id>

Catogory_id / GET

http://api.mendeley.com/oapi/documents/groups/ Lista di gruppi

presenti su Mendeley

GET

http://api.mendeley.com/oapi/documents/groups/<id>/ Dettagli relativi

ad un gruppo,

come URL

pubblico ecc.. ,

specificato in <id>

Id / GET

http://api.mendeley.com/oapi/documents/

groups/<id>/docs/?details=true

Lista di

documenti

relativi al gruppo

specificato in <id>

Id / GET

http://api.mendeley.com/oapi/documents/groups/<id>/people/ Lista degli utenti

appartententi ad

un gruppo

identificato in

<id>

Id / GET

Tabella metodi pubblici Mendeley API

Page 108: Tesi 1 2 rdt   no commenti

104

A.3 Tabella dei metodi privati API Mendeley

Indirizzo metodo Risposta Requisiti/

Metodo

http://api.mendeley.com/oapi/library/authors/ Lista dei 5

miglior

autori nella

libreria dell’utente

GET

http://api.mendeley.com/oapi/library/tags/ Tag recenti

utilizzati

nella

libreria

dell’utente

GET

http://api.mendeley.com/oapi/library/publications/ Top 20

papers in libreria

GET

http://api.mendeley.com/oapi/library/ Lista di

tutti i

documenti in libreria

GET

http://api.mendeley.com/oapi/library/documents/authored/ Lista dei

documenti

pubblicati

dall’utente

GET

http://api.mendeley.com/oapi/library/documents/<id>/ Dettagli a

riguardo di

un

documento

identificato in <id>

Id / GET

http://api.mendeley.com/oapi/library/documents/ Crea un

nuovo

documento

da passare

tramite un

oggetto JSON

Oggetto

JSON / POST

http://api.mendeley.com/oapi/library/documents/<id>/ Modifica

ad un

documento

specificato in <id>

Oggetto

JSON, id / POST

http://www.mendeley.com/oapi/library/documents/<id>/ Upload di

un file

id ,

oauth_body

Page 109: Tesi 1 2 rdt   no commenti

105

specificato in <id>

_hash / PUT

http://api.mendeley.com/oapi/library/documents/<id>/file/<file_hash>/

<group_id>/

Download

di un file

specificato in <id>

id ,

file_hash / GET

http://api.mendeley.com/oapi/library/documents/<id>/ Rimozione

di un file,

specificato

in <id>

dalla

libreria

id /

DELETE

http://api.mendeley.com/oapi/library/groups/ Lista dei

gruppi

presenti in libreria\

GET

http://api.mendeley.com/oapi/library/groups/<group_id>/people/ Lista

persone

registrate

al gruppo

specificato

in

<group_id>

group_id /

GET

http://api.mendeley.com/oapi/library/groups/<group_id>/ Documenti

relativi al

gruppo

specificato

in

<group_id>

group_id /

GET

http://api.mendeley.com/oapi/library/groups/<group_id>/<document_i

d>/

Dettagli

relativi ad

un

documento

,

specificato

in

<document

_id>,

pubblicato

da un

gruppo

identificato

da

<group_id>

group_id ,

document_id / GET

http://api.mendeley.com/oapi/library/groups/<group_id>/folders/ Crea nuova

cartella nel

group_id /

POST

Page 110: Tesi 1 2 rdt   no commenti

106

gruppo

specificato

in <group_id>

http://api.mendeley.com/oapi/library/groups/<group_id>/folders/<folder_id>/<document_id>/

Cancella

documento

specifico

<document

_id> in una

cartella

specifica di

un gruppo

group_id,

folder_id,

document_i

d /DELETE

http://api.mendeley.com/oapi/library/groups/ Crea nuovo

gruppo

nella libreria

POST

http://api.mendeley.com/oapi/library/groups/<group_id>/ Cancella

gruppo

group_id /

DELETE

http://api.mendeley.com/oapi/library/folders/ Cartelle in

libreria

GET

http://api.mendeley.com/oapi/library/folders/<id>/ Documenti

presenti in

una cartella

specificata

in <id>

id / GET

http://api.mendeley.com/oapi/library/folders/<folder_id>/<doc_id>/ Aggiunge

documento

specificato

in

<document

_id> ad una cartella

folder_id,

document_id / POST

http://api.mendeley.com/oapi/library/folders/ Crea

cartella

POST

http://api.mendeley.com/oapi/library/folders/<id>/ Cancella

cartella

specificata in <id>

id /

DELETE

http://api.mendeley.com/oapi/library/folders/<folder_id>/<doc_id>/ Cancella

un

documento

da una

cartella

folder_id,

doc_id / DELETE

http://api.mendeley.com/oapi/profiles/contacts/ Lista

contatti dell’utente

GET

Page 111: Tesi 1 2 rdt   no commenti

107

http://api.mendeley.com/oapi/profiles/contacts/<id>/ Permette

all’utente

di

aggiungere

un utente

specificato

in <id> alla

lista

contatti

POST

http://api.mendeley.com/oapi/profiles/info/<profile_id>/ Informazio

ni del

profilo

dell’utente

specificato

in

<profile_id>

GET

Tabella metodi privati Mendeley API

Page 112: Tesi 1 2 rdt   no commenti

108

Appendice B

B.1 Classe Manage Scopus

Page 113: Tesi 1 2 rdt   no commenti

109

Page 114: Tesi 1 2 rdt   no commenti

110

Page 115: Tesi 1 2 rdt   no commenti

111

Page 116: Tesi 1 2 rdt   no commenti

112

Page 117: Tesi 1 2 rdt   no commenti

113

B.2 Query creazione DataBase

Page 118: Tesi 1 2 rdt   no commenti

114

Page 119: Tesi 1 2 rdt   no commenti

115

Page 120: Tesi 1 2 rdt   no commenti

116

B.3 Metodi di matching sulla classe User con KSOAP

Page 121: Tesi 1 2 rdt   no commenti

117

d c

Page 122: Tesi 1 2 rdt   no commenti

118

Page 123: Tesi 1 2 rdt   no commenti

119

Page 124: Tesi 1 2 rdt   no commenti

120

Bibliografia

[1] Scopus Guida Utenti

[2] http://www.html.it/articoli/introduzione-ad-oauth-20-con-java-1/

[3] http://www.json.org/json-it.html

[4] http://arnetminer.org/introduction#b363

[5] http://wokinfo.com/media/pdf/WoSFS_08_7050.pdf

[6] Corso di programmazione in rete, prof. Pasquale Foggia