• Non ci sono risultati.

2.1 Architettura del Museo Virtuale in VR

2.1.2 Recupero delle risorse

Una volta che viene passata la stringa contenente i parametri scelti dall’utente e codificati nella maniera corretta, si passa al recupero delle risorse che coincide con l’avvio del software XVR per la generazione dell’ambiente virtuale. Tuttavia, la fase preliminare consiste nel recupero delle

41

informazioni attraverso l’uso di librerie esterne e di strumenti forniti dalle repository di opere d’arte.

In base alle scelte fatte dall’utente si effettuano diverse operazioni di recupero delle informazioni: per Wikimedia Commons ed Europeana i passaggi sono simili, mentre diverso è il procedimento per Google Images.

Verranno illustrate adesso le diverse metodologie per il recupero delle informazioni.

2.1.2.1 Recupero delle risorse per Google Images

Per Google Images il recupero delle informazioni non è un processo molto laborioso, in quanto le uniche informazioni da recuperare sono quelle relative agli URL delle immagini da scaricare.

Per recuperare la lista dei collegamenti diretti delle immagini è necessario per prima cosa creare un pattern di ricerca per effettuare una HTTP request valida per Google. Il pattern non è altro che una stringa composta da vari elementi, come è possibile osservare nella figura di sotto. Nella figura qua sotto viene spiegata la composizione della stringa:

La soluzione adottata per il recupero delle informazioni consiste nell’effettuare una GET Request ai server di Google per restituire la pagina HTML contenente i collegamenti delle immagini ad alta risoluzione. Una volta creato il pattern di ricerca viene avviata una funzione all’interno di XVR, che carica una libreria esterna che si occupa di effettuare la richiesta al server. Se l’operazione va a buon fine, viene restituita una stringa contenente la pagina HTML completa contenente i collegamenti per le immagini ad alta risoluzione. Il body che ci viene rimandato contiene, oltre al codice HTML, degli oggetti JSON che comprendono dei metadati relativi alle immagini.

42 2.1.2.1.1 Architettura dei metadati in Google Images

I metadati contenuti negli oggetti in JSON provenienti da Google Images sono strutturati più o meno in questo modo:

Per poter dividere la parte HTML da quella JSON e potervi accedere è necessario effettuare un’esplorazione manuale della pagina dividendo la stringa in piccole parti per raggiungere i metadati interessati.

2.1.2.1.2 Scaricamento delle immagini

Una volta effettuato il parsing, si ottiene un array contenente tutti i link delle immagini ad alta risoluzione. Per scaricare le immagini bisogna passare l’array dei link a una funzione che chiama nuovamente una libreria esterna in C++ che esamina ogni link e provvede alla verifica e allo scaricamento dell’immagine.

43

Figura 6: Ciclo che raffigura le operazioni effettuate per lo scaricamento delle immagini.

Lo scaricamento delle immagini deve seguire delle regole:

1. La prima è che la risorsa deve essere raggiungibile e restituire un codice di risposta pari a 0;

2. la seconda è che l’immagine che deve essere scaricata non deve essere vuota (pena l’arresto del programma);

3. la terza condizione è che l’immagine scaricata deve pesare almeno un 10 kilobyte per poter essere utilizzata dal programma.

La funzione effettua delle operazioni di scrittura su disco, dopo che gli è stato fornito un path (un percorso) dove scaricare le immagini, e in seguito restituisce un numero intero: 0 sta ad indicare che il download è stato eseguito con successo, 1 invece sta ad indicare che il download è fallito.

Il fatto che la funzione restituisca un intero serve soltanto a fini di controllo, per capire quali immagini vengono scaricate e capire perché altre non sono state scaricate correttamente.

2.1.2.2 Recupero delle risorse per Wikimedia Commons

Per il recupero delle risorse provenienti da repository come Wikimedia Commons si utilizza un processo molto diverso rispetto a quello presentato nel paragrafo precedente. Infatti è possibile

44

interfacciarsi con un’API per poter richiedere, oltre ai link delle immagini ad alta risoluzione, anche dei metadati contenenti le informazioni delle opere. Inoltre, invece che ricevere una pagina HTML in risposta alla GET REQUEST si riceve un oggetto JSON che è facilmente “parsabile” attraverso metodi di librerie aggiuntive.

Inizialmente si utilizza sempre un pattern, che deve essere costruito in base alla richiesta che si vuole fare. Le fasi per il recupero delle informazioni sono due: la prima fase consiste nel

recupero dei file presenti in una data collezione; la seconda fase, invece, consiste nel recupero del collegamento delle immagini ad alta risoluzione e degli altri metadati.

2.1.2.2.1 Struttura delle API per il recupero dei file

Per effettuare le interrogazioni al server, Wikimedia Commons mette a disposizione delle API (Application Program Interface) per poter richiedere eventuali informazioni. Il codice per effettuare delle richieste al software di Wikimedia è composta da una stringa base che rappresenta l’indirizzo della pagina principale dell’API62 e delle variabili da passare alla pagina PHP. Nella pagina seguente verranno presentati due schemi che rappresentano rispettivamente:

 La struttura di un’API per la richiesta dei file presenti in una galleria d’arte (figura 7)  La struttura del file XML in risposta dai server di Wikimedia Commons (figura 8)

45

Figura 7: Schema dell’API per il recupero file da Wikimedia Commons.

46

Anche in questo caso, per recuperare il titolo dei file presenti nella galleria, è necessario effettuare un parsing manuale all’interno del documento e conservare la lista dei file in un array di dati, da essere poi usato per la fase successiva, ovvero quella inerente il recupero dei dati relativi ai collegamenti diretti delle immagini delle opere d’arte e ai loro metadati.

2.1.2.2.2 Accesso casuale ai file di Wikimedia Commons

La fase successiva consiste nell’accedere a ognuno dei file contenuti nell’array precedentemente realizzato e prelevare le informazioni più importanti. Prima di ciò però verrà fatta una scelta casuale fra le diverse opere per via della vastità dei risultati che spesso sono presenti nelle collezioni e per garantire la generazione di diversi contenuti ogni volta che viene generato un museo virtuale prendendo opere da Wikimedia Commons. Verranno prelevate informazioni che riguardano: il collegamento diretto con l’immagine ad alta risoluzione, il nome dell’artista, il titolo dell’opera, la data di realizzazione dell’opera e la descrizione dell’opera. Per accedere a ogni file si usa, come nel caso precedente del recupero dei file, una stringa che contiene delle istruzioni dell’API di Wikimedia Commons per interfacciarsi col server. L’API è strutturata in questo modo63:

63 Un esempio di query per ottenere informazioni su un’opera d’arte di Adam Pynacker:

https://commons.wikimedia.org/w/api.php?action=query&format=json&prop=imageinfo&titles=File%3AAdam%20 Pynacker%20-%20Landscape%20with%20enraged%20ox%20-

47

2.1.2.2.3 Architettura dei metadati di Wikimedia Commons

Il server di Wikimedia risponde con un oggetto JSON contenente diverse informazioni utili per la realizzazione della galleria virtuale. Per l’estrazione dei valori viene utilizzata una libreria esterna in C++ adatta per l’esplorazione dell’oggetto JSON. L’architettura dei metadati è configurata in questo modo:

Tuttavia i metadati possono essere variabili e non tutti possono contenere le stesse informazioni.64 Dopo aver recuperato le informazioni, la libreria esterna si occupa di creare una stringa contenente tutte le informazioni rilevanti che verrà poi memorizzata in un array.

48

2.1.2.3 Recupero delle risorse per Europeana

Il procedimento di recupero delle risorse in Europeana è per certi versi simile a quello per il recupero delle informazioni per Wikimedia Commons. Anche qui, si procede inizialmente con il recupero di una lista dei file, che però invece che provenire da una lista appartenente a una galleria d’arte essa viene ricavata da una lista ottenuta attraverso il motore di ricerca di Europeana e, successivamente, si passa in rassegna ogni file per il recupero dei metadati e della risorsa multimediale.

2.1.2.3.1 Struttura delle API per il recupero dei file

Europeana mette a disposizione diversi strumenti per il reperimento di informazioni per via programmatica: è possibile interfacciarsi con l’infrastruttura attraverso delle API che effettuano ricerche all’interno di database o attraverso altri strumenti per la ricerca di registrazioni, entità e altri open data. Tuttavia lo strumento utilizzato per il recupero dei file è la Search API65. La struttura dell’API utilizzata per questa fase del progetto è la seguente:

Anche in questo caso il server risponderà con un oggetto JSON contenente tutti i file che sono stati ricavati dalla ricerca, memorizzati a sua volta in un array con il nome di items. Ogni oggetto ha tutte le informazioni che riguardano il titolo dell’opera, l’autore, la descrizione, la data di realizzazione e moltissimi altri metadati offerti dal servizio di Europeana.

49

Qui sotto viene riportato uno schema che rappresenta in maniera un po’ sommaria la struttura dell’oggetto JSON66:

Dopo il recupero dei collegamenti67 si passa al recupero delle informazioni per ogni file recuperato dall’oggetto JSON.

2.1.2.3.2 Architettura dei metadati in Europeana

Ogni link recuperato dalla precedente lista contiene un collegamento a una risorsa presente nel database di Europeana. Ogni risorsa ha un identificativo che verrà usato nella Record API per poter ottenere le informazioni di quel file. I metadati contenuti nell’oggetto JSON possono variare da risorsa a risorsa. Dal punto di vista linguistico, sono spesso presenti metadati scritti in altre lingue, con caratteri diversi da quello italiano e spesso anche da quello europeo. Il trattamento di tali caratteri verrà discusso nel capitolo successivo.

I metadati di Europeana che sono utili per la realizzazione del museo virtuale sono i seguenti:

66 I metadati presenti un oggetto possono arrivare a più di trenta, vengono riportati su questa relazione soltanto quelli

che hanno una certa rilevanza per l’illustrazione del progetto.

50  dcTitle: il nome dell’opera d’arte

 edmIsShownBy: contiene l’indirizzo dell’immagine ad alta risoluzione  dcDescription: descrizione dell’opera d’arte

 dcDate: data di realizzazione dell’opera d’arte  dcCreator: creatore/artista dell’opera d’arte

L’oggetto JSON presenta una struttura un po’ complicata e non sempre è uguale fra tutti i file. Una rappresentazione fedele è riportata qua sotto:

I dati prelevati dall’oggetto JSON verranno inseriti in una stringa che a sua volta sarà memorizzata in un array di stringhe, contenenti tutte le informazioni e gli indirizzi delle risorse.