• Non ci sono risultati.

EpiDoc-Creator Uno strumento per diffondere le iscrizioni epigrafiche

N/A
N/A
Protected

Academic year: 2021

Condividi "EpiDoc-Creator Uno strumento per diffondere le iscrizioni epigrafiche"

Copied!
108
0
0

Testo completo

(1)

Università di Pisa

Corso di Laurea in Informatica Umanistica

Tesi Magistrale

RELAZIONE:

EpiDoc-Creator

Uno strumento per diffondere le iscrizioni epigrafiche

Candidato:

Teresa Meini

Relatore:

Enrica Salvatori

Realizzato sotto la supervisione del Dott.

​Davide Costanza

(2)

Tesi Magistrale di ​Teresa Meini

Sommario

1 INTRODUZIONE 4

1.1 L’obiettivo iniziale 4

1.2 EpiDoc-Creator: cos’è e come funziona 5

1.3 Lo sviluppo 8

1.4 Perché è una tesi di Informatica Umanistica? 9

2 LE EPIGRAFI 11

2.1 Perché codificare e diffondere 12

3 LO STATO DELL’ARTE 13

3.1 Analisi del problema 14

4 LA CODIFICA DEL TESTO 16

4.1 Il linguaggio XML 16

4.1.1 Lo XML Schema 17

4.2 Il consorzio TEI 18

4.2.1 Le linee guida EpiDoc 18

4.2.2 Le Convenzioni di Leiden in Epidoc 20

5 STRUMENTI E TECNOLOGIE UTILIZZATE 21

6 LO SVILUPPO 23

6.1 Creazione del Database 25

6.1.1 PostgreSQL 25

6.1.1.1 PostgreSQL e l’XML 26

6.1.1.1.1 Funzionalità utilizzate 26

6.1.2 La struttura del Database 28

6.2 La struttura MVC 31

6.2.1 Perché utilizzare questa struttura? 34

6.2.2 Come è stato creato il progetto 34

6.3 La trasformazione da XML a Java e viceversa 35

6.3.1 Lo strumento XJC 37

6.3.2 Marshal e Unmarshal 40

6.3.3 Le annotazioni JAXB 42

6.4 La struttura del progetto 43

7 GESTIONE DEI CONTENUTI 44

7.1 Aggiunta dei contenuti 44

(3)

Tesi Magistrale di ​Teresa Meini

7.1.1.1 Gestione delle date 51

7.1.1.2 Personaggi ricordati 53

7.1.2 Aggiunta dei contenuti: approfondimento del lato view 55 7.1.2.1 Inserimento di informazioni potenzialmente illimitate 58 7.1.2.2 Facilitazione della codifica per l’utente 60

7.2 Modifica dei contenuti 61

7.2.1 Ancora sulla modifica dell’xml 63

7.3 Presentazione dei contenuti 64

7.3.1 Pagina dell’epigrafe 64

7.3.2 Mappa condivisa 67

7.3.3 Timeline 68

7.3.4 Grafici automatici 70

7.3.5 Pagina delle persone 74

7.3.6 Gestione delle liste 76

7.3.7 Meccanismo di ricerca 77

7.3.8 Scarica il progetto 78

7.4 Sicurezza 79

7.4.1 Accesso personalizzato per gli utenti 79

7.4.2 Protezione della password 81

7.4.3 Conseguenze dell’aggiunta della dipendenza Security 82

7.5 Gestione degli errori 82

7.5.1 Gestione degli errori all’interno delle pagine 84

7.6 Adattività 84 7.6.1 Bootstrap 85 7.6.2 Menù laterale 86 7.6.3 Logo 87 7.7 Legalità 88 8 IL RISULTATO 90

9 POSSIBILI SVILUPPI FUTURI 92

9.1 Possibili sviluppi tecnologici 92

9.2 Sviluppi di codifica 94 10 CONCLUSIONI 96 11 NOTE BIBLIOGRAFICHE 97 11.1 Bibliografia 97 11.1.1 Bibliografia primaria 97 11.1.2 Bibliografia secondaria 98 11.2 Sitografia 98

(4)

Tesi Magistrale di ​Teresa Meini

(5)

Tesi Magistrale di ​Teresa Meini

EpiDoc-Creator

Uno strumento per diffondere le iscrizioni epigrafiche

1 INTRODUZIONE

1.1 L’obiettivo iniziale

Lo sviluppo di EpiDoc-Creator aveva come obiettivo la creazione di un’applicazione web che fosse qualcosa di più che un semplice tramite per diffondere lo studio e la fruizione delle epigrafi e della loro codifica, a differenza di quanto accade quando viene realizzato un classico sito attraverso l’utilizzo di un CMS, dove lo scopo è soltanto quello di presentare dei contenuti e non di elaborarli.

La volontà era di realizzare uno strumento che permettesse di inserire informazioni riguardanti le epigrafi ad utenti non specializzati nel campo della codifica di testi, creando per ogni epigrafe inserita un relativo documento codificato in maniera appropriata.

Il sito doveva avere la possibilità di vivere da solo, senza l’intermediazione di terzi a gestire la pubblicazione dei dati.

La codifica dei testi doveva seguire lo schema Epidoc , una serie di linee guida 1 standardizzate per la codifica delle epigrafi generata a sua volta dalle linee guida della TEI , il consorzio per la creazione di standard nella codifica dei testi in formato2 digitale.

L’applicazione doveva essere facile da usare, intuitiva e adattiva; questo per tenere il passo con le innovazioni tecnologiche e l’utilizzo sempre più frequente di apparecchi alternativi al classico pc per la fruizione di conoscenza e contenuti.

1 Approfondimenti sullo schema di codifica Epidoc nella sezione 4.2.1 EpiDoc. 2 Approfondimenti riguardanti il consorzio TEI nella sezione 4.2 Il consorzio TEI.

(6)

Tesi Magistrale di ​Teresa Meini

1.2 EpiDoc-Creator: cos’è e come funziona

EpiDoc-Creator basa il suo funzionamento sulle informazioni inserite da parte degli utenti.

Tramite le informazioni inserite viene creata automaticamente una pagina che presenta le informazioni appena digitate e permette di visualizzare o scaricare il corrispondente documento XML generato automaticamente dall'applicazione . 3

EpiDoc-Creator non richiede la conoscenza del linguaggio XML ed è in grado di generare il documento XML in modo automatico. L'utente può comunque marcare esplicitamente alcuni tipi di testo all’interno di certe aree interessate tramite pratici pulsanti; in particolare è possibile marcare il testo epigrafico osservando alcune delle Convenzioni Leiden, sempre seguendo lo standard Epidoc . 4

L’applicazione web inserisce l'epigrafe appena prodotta nel sistema che permette di navigare attraverso le epigrafi e produce delle liste dedicate per eventuali personaggi collegati alle epigrafi stesse . 5

L’applicazione produce per ogni eventuale personaggio una pagina dedicata dove vengono messe in evidenza le relazioni che lo caratterizzano: quella con l’epigrafe dove viene citato e quelle con i personaggi a lui collegati . 6

L’epigrafe verrà anche inserita istantaneamente all’interno di una mappa geografica ‘comune’ . 7

Dopo aver immesso le informazioni otteniamo dei risultati immediati e intuitivamente navigabili, senza intermediari a gestire la pubblicazione dei contenuti.

Epidoc-Creator crea automaticamente delle relazioni tra le informazioni immesse dall’utente e il modo di presentarle all’interno dell’applicazione: inserendo ad esempio la latitudine e la longitudine per indicare dove è sita una epigrafe, verrà creata in maniera automatica una mappa partendo da queste informazioni.

Durante la realizzazione di un sito web standard, ad esempio tramite l’utilizzo di un CMS, è necessario che un intermediario umano compia diverse operazioni. Ovvero è

3 Vedi 4 LA CODIFICA DEL TESTO.

4 Vedi 7.1.2.2 Facilitazione della codifica per l’utente. 5 Vedi 7.3.6 Gestione delle liste.

6 Vedi 7.1.1.2 Personaggi ricordati. 7 Vedi 7.3.2 Mappa condivisa.

(7)

Tesi Magistrale di ​Teresa Meini

necessaria una persona persona che recuperi, interpreti e smisti i dati all’interno delle varie pagine, occupandosi personalmente della loro pubblicazione all’interno degli ambiti preposti.

L’applicazione invece non necessita di questo tipo di intermediari: una volta che l’utente ha immesso dei dati, gli inserimenti che essa compie nelle varie pagine sono automatici.

figura 1.2.1

L’applicazione gestisce durante la compilazione della form le informazioni riguardanti un personaggio e crea automaticamente una relazione tra i dati sull’epigrafe appena immessa e il personaggio in questione; lo stesso avviene inserendo una correlazione tra delle persone.

Inserendo delle informazioni su delle date, queste saranno a loro volta correlate all’epigrafe stessa . 8

Queste relazioni sono messe in evidenza da ulteriori grafici (anch’essi creati in maniera automatica):

● la linea temporale evidenzia le date rilevanti all’interno delle epigrafi e come si dispongono l’una rispetto all’altra ; 9

8 Vedi le sezioni sulla formazione del database 6.1.2 La struttura del Database e sulla gestione dei

contenuti ​7 GESTIONE DEI CONTENUTI​.

(8)

Tesi Magistrale di ​Teresa Meini

● altri grafici mostrano le relazioni tra le varie persone citate nelle epigrafi con altre che vi sono correlate e tra le persone e le epigrafi che le ricordano. Un grafico riassuntivo, infine, riunisce queste relazioni . 10

Ogni informazione inserita dall’utente viene riportata all’interno del documento XML creato: informazioni su eventuali media, di localizzazione, informazioni bibliografiche; questo per permettere la massima trasportabilità di queste informazioni, sempre rispettando gli standard delle linee guida del progetto Epidoc.

EpiDoc-Creator permette a qualsiasi utente di navigare liberamente attraverso le informazioni inserite da altri: per poter invece partecipare all’inserimento delle informazioni è necessario iscriversi.

Gli utenti possono essere gestiti da parte degli amministratori del sito, i quali hanno a disposizione gli strumenti per impedire che qualcuno abusi delle caratteristiche partecipative di EpiDoc Creator.

Il sito che in misura maggiore ha ispirato la creazione di Epidoc-Creator è Epigrapisa : 11

questo, oltre a spiegazioni, mappe, foto, ​podcast e video, presenta ogni epigrafe insieme ad un documento di approfondimento correlato di bibliografia.

Sebbene questo sito sia di natura partecipativa, per poter inserire delle informazioni su una epigrafe è necessario contattarne i gestori (come è possibile vedere nella loro pagina collabora ) e inviare loro i dati che verranno letti e immessi nel sito. 12

Questo procedimento, al contrario di quanto avviene nell’applicazione, non permette di usufruire dei risultati del proprio lavoro direttamente.

Epidoc-Creator ha lo scopo di ospitare informazioni sulle epigrafi a fini di studio, e permette di acquisire maggiori informazioni sull’opera in questione; sono presenti spiegazioni dell’avvenimento storico ricordato, mappe attuali per l’individuazione delle iscrizioni epigrafiche, bibliografia per eventuali approfondimenti, eccetera.

Un altro requisito essenziale deciso prima della creazione dell’applicazione è costituito dalla codifica delle informazioni inserite seguendo le linee guida di Epidoc: in questo modo viene permessa la creazione automatica di documenti XML che riassumono i dati inseriti in modo standardizzato, trasportabile e ri-utilizzabile.

10 Vedi 7.3.4 Grafici automatici.

11 Collegamento web: http://epigrapisa.labcd.unipi.it/.

(9)

Tesi Magistrale di ​Teresa Meini

1.3 Lo sviluppo

L’applicazione web è basata sull’utilizzo del linguaggio Java e sulle logiche del modello MVC, ovvero ​M​odel ​V​iew ​C​ontroller , che separa concettualmente le13 applicazioni in:

● gestione dei dati, della loro persistenza e della logica di programma; ● presentazione all’utente delle elaborazioni ottenute dai dati;

● logica di controllo che coordina le due parti precedenti.

Per creare l’applicazione è stato utilizzato Spring Boot, uno strumento che semplifica la creazione di applicazioni basate su Spring, un framework open-source scritto in linguaggio Java . 14

Il database scelto per archiviare le informazioni dell'applicazione è il database relazionale Postgresql, un sistema open-source capace non solo di storicizzare i dati in tabelle relazionali e all'interno di documenti in formato XML, ma anche di gestirli ed eventualmente interrogarli tramite il linguaggio Xpath.

I documenti XML vengono gestiti grazie ai meccanismi di ​marshal e ​unmarshal di JAXB, ovvero il sistema di trasformazione da oggetti Java a elementi XML e viceversa

.

15

JAXB, ovvero ​J​ava ​A​rchitecture for ​X​ML ​B​inding, è una libreria nativa di Java che permette di tradurre in classi Java l’albero dei tag XML utilizzati all’interno del documento partendo da uno schema di descrizione del linguaggio XML, ovvero un file XSD.

Tramite l’utilizzo del tool XJC vengono automaticamente create le classi Java capaci di mappare la struttura XML necessaria a sviluppare l’applicazione.

Utilizzando inizialmente lo schema di Epidoc completo per la traduzione tramite XJC sono state generate più di 340 classi Java, una quantità davvero difficile da gestire, per cui si è reso necessario studiare un'alternativa.

13 Vedi 6.2 La struttura MVC.

14 Vedi 6.2.2 Come è stato creato il progetto.

(10)

Tesi Magistrale di ​Teresa Meini

Lo schema Epidoc considera anche molte possibili casistiche di codifica con la quale un editore critico di epigrafi non viene a contatto, dal momento che lo stesso schema è utilizzato per codificare altri elementi storici quali i manoscritti.

È stato necessario creare quindi uno schema di codifica ridotto adatto alle esigenze del contesto che permettesse di produrre documenti di codifica delle epigrafi in XML validi per lo standard Epidoc.

Con questi strumenti è stato possibile iniziare a sviluppare l’applicazione vera e propria, che recupera ed elabora sotto forma di pagine, mappe o grafici di vario genere le informazioni inserite.

Viene così eliminata la necessità della presenza di una persona o un team di persone che si occupi di raccogliere le informazioni inserite e di pubblicarle all’interno delle pagine.

Per rendere il sito adattabile al dispositivo con il quale viene visualizzato, sia questo un pc, tablet o smartphone, è stato aggiunto il framework Bootstrap.

Le librerie jQuery UI hanno permesso di dare al sito una veste grafica moderna e di renderne l'utilizzo più intuitivo agli utenti.

1.4 Perché è una tesi di Informatica Umanistica?

Questo progetto è stato pensato con uno scopo ben preciso: gestire delle informazioni significative a livello umanistico, cioè quelle riguardanti le epigrafi, e creare automaticamente la relativa codifica in codice XML di tali informazioni.

L’impronta per la realizzazione di questo progetto è necessariamente molto informatica, dato che tratta della creazione automatica di contenuti partendo da informazioni immesse dagli utenti in maniera diretta.

Non avrebbe avuto senso creare un sito statico impossibilitato a crescere, ad auto-aggiornarsi e a gestire le informazioni in maniera dinamica, per quanto ugualmente valido per la diffusione delle informazioni di ambito umanistico e specialistico.

(11)

Tesi Magistrale di ​Teresa Meini

Sarebbe diventato un progetto limitato e fine a se stesso, o avrebbe dovuto comunque essere trasformato in seguito in uno strumento più potente, in modo da andare incontro a un eventuale interessamento da parte delle varie comunità di ricerca e appassionati. Il tentativo di diffondere l’importanza storica delle epigrafi e di far interessare gli utenti non specializzati all’argomento non deve distaccarsi dalle esigenze di ricerca né escludere altri ambiti; proprio questo è lo scopo del corso di Informatica Umanistica, e Epidoc-Creator vuole infatti dimostrare che alcuni strumenti utilizzati principalmente in ambito informatico possono venire invece sfruttati per le discipline umanistiche, ad esempio la generazione e la gestione automatica dei documenti in formato XML e la rappresentazione dei dati geolocalizzati.

Concludo questa introduzione specificando quelli che considero i principali punti di forza di questo progetto e che lo qualificano come tesi significativa di Informatica Umanistica:

● è la realizzazione di uno strumento, o di un prototipo di strumento, importante per lo studio e la diffusione delle epigrafi, sia a livello specialistico che “da profani”;

● utilizza degli standard approvati e utilizzati a livello di codifica, permettendo una maggiore diffusione dei prodotti ottenuti dallo strumento stesso ; 16

● il progetto si presta a ampliamenti di vario tipo, sia a livello applicativo che a livello concettuale : infatti oltre ad essere possibile potenziare gli strumenti per17 l’elaborazione dei dati, è possibile ampliare gli ambiti che questi dati trattano. È possibile ri-applicare il metodo che viene utilizzato all’interno del progetto per la creazione automatica di documenti codificati in linguaggio XML in una moltitudine di progetti analoghi riguardanti la codifica di testi, siano questi epigrafici o di altro genere.

16 Vedi 4 LA CODIFICA DEL TESTO. 17 Vedi 9 POSSIBILI SVILUPPI FUTURI.

(12)
(13)

Tesi Magistrale di ​Teresa Meini

2 LE EPIGRAFI

Cosa sono le epigrafi? Ponendo questa domanda per strada ben pochi saprebbero rispondere correttamente e di getto.

Le epigrafi sono delle iscrizioni esposte al pubblico, molto spesso collocate sui muri degli edifici, in materiale non deperibile quali marmo, pietra o metallo; servono a tramandare la storia di un evento o di una persona, ricordare un momento particolare, onorare una persona trapassata, come mezzo di propaganda, o comunque ad inviare un messaggio riconoscibile e di importanza storica.

Il contenuto delle iscrizioni era recepito dalla maggior parte delle persone alla quale era indirizzato, o almeno quelle che erano in grado di accedervi in quanto alfabetizzate o in contatto con altre persone alfabetizzate . 18

A parte quelle più recenti, e quindi scritte in italiano corrente, è molto difficile che una persona riesca a comprendere cosa è scritto su una epigrafe e l’evento alla quale fa riferimento, a meno che non sia uno specialista in materia: per questo motivo sono spesso presenti come elementi architettonici ma sono assenti nella vita delle persone e nella creazione di una memoria collettiva.

Invece la comprensione del loro contenuto è molto importante: non tanto per quello che vi è riportato sopra letteralmente, ma per quello che rappresenta all’interno di una serie di eventi ed avvenimenti.

Se una epigrafe è stata prodotta ed esposta, sicuramente qualcuno aveva l’interesse a diffonderne il messaggio e i mezzi per farlo: anche la sua sola esistenza rappresenta un elemento importante per la storia. La loro quasi assenza all’interno del periodo del Medioevo, ad esempio, denota in maniera molto evidente quanto fossero decadute le istituzioni pubbliche e l’alfabetizzazione a quel tempo . 19

Le epigrafi sono quindi delle fonti storiche molto preziose, ma la loro importanza non viene riconosciuta dalla maggior parte delle persone al di fuori degli studi specialistici.

18Eɴʀɪᴄᴀ Sᴀʟᴠᴀᴛᴏʀɪ,​L’epigrafia: un ponte tra la ricerca e la condivisione della storia , Pisa, ETS, 2014,

pp. 159-172.

19 Un breve accenno alla storia dell’evoluzione epigrafica è possibile averlo dalla pagina Wikipedia: https://it.wikipedia.org/wiki/Epigrafe#Storia​.

(14)

Tesi Magistrale di ​Teresa Meini

2.1 Perché codificare e diffondere

Nella sezione 2 LE EPIGRAFI viene evidenziata l’importanza delle epigrafi e perché è importante renderle più accessibili al grande pubblico: per farlo si utilizzano tecniche quali la digitalizzazione e la codifica , in maniera tale da aumentare la diffusione delle 20 informazioni al loro riguardo e la facilità con la quale vi si accede.

Producendo delle versioni digitali e codificate di questi testi si hanno una serie di vantaggi non indifferenti anche per la ricerca stessa, quali:

● maggiore possibilità di condividere informazioni;

● l’ampliamento della capacità di lavorare in maniera collaborativa e partecipativa;

● maggiore facilità di aggiornare i dati in proprio possesso;

● la possibilità di creare strumenti per la gestione e la presentazione articolata (es.: grafici, mappe, ricerche complesse, eccetera) delle informazioni, meccanismi di presentazione dei dati che sfrutta appunto anche Epidoc-Creator.

Tutte queste possibilità non sono presenti all’interno di un panorama di edizione critica tradizionale, che prevede l’attività di stesura della critica effettuata in isolamento dallo studioso e condivisa soltanto negli ambiti scientifici.

Per rendere davvero raggiungibili i contenuti epigrafici alle persone al di fuori del contesto specialistico sono necessari degli elementi che li rendano interessanti al pubblico, ovvero la multimedialità - immagini, podcast, video capaci di divulgare correttamente e in maniera accattivante i contenuti e di attirare l’attenzione dello spettatore - e l’interazione dell’utente con strumenti che gli permettano di discernere e appropriarsi delle informazioni in maniera diretta e non passiva . 21

Lo scopo di questa tesi è proprio quella di offrire uno strumento di questo tipo, o almeno un prototipo di strumento, capace di ampliarsi ed evolversi all'aggiornarsi delle tecnologie e degli strumenti di codifica.

20 Vedi 4 LA CODIFICA DEL TESTO.

21 Eɴʀɪᴄᴀ Sᴀʟᴠᴀᴛᴏʀɪ, L’edizione digitale di fonti storiche: nuove opportunità, nuovi problemi, nuove

figure, video pubblicato sul sito Academia.edu e raggiungibile al collegamento web: https://www.academia.edu/27893565/L_edizione_digitale_di_fonti_storiche_nuove_opportunità_nuovi_ problemi_nuove_figure​.

(15)

Tesi Magistrale di ​Teresa Meini

3 LO STATO DELL’ARTE

Nell’ambito delle Digital Humanities ci sono diverse iniziative riguardanti le epigrafi, di cui la più importante di tutte è forse EAGLE, l'Archivio elettronico di Epigrafia greca e latina . 22

La maggior parte del progetto è però dedicata soltanto alla ricerca accademica e focalizzata su epigrafi antiche (latino, greco, egiziano, etc.); è difficile venirne persino a conoscenza, se non si fa parte della ristretta cerchia dei ricercatori.

Allo stato attuale infatti, cercando la parola chiave ‘epigrafe’ su Google, il motore di ricerca più utilizzato, oltre ai vari libri specialistici sull’argomento (spesso troppo complessi per un pubblico più ampio), si ottengono pochi risultati che indirizzino a progetti di diffusione e studio delle epigrafi. È molto riproposto il significato diretto della parola, ma non c'è niente che permetta di approfondire o appassionarsi in qualche modo all’argomento.

È possibile trovare LacusCurtius , sito web ormai datato (2005) di ambito presentativo,23 che tra le varie sculture storiche mostra e spiega qualche epigrafe; la sua navigazione non è per niente intuitiva e non permette di partecipare attivamente al progetto.

Di qualità parecchio più avanzata possiamo trovare pisaeislam , sito web adattivo che24

presenta le testimonianze dei contatti passati tra la città di Pisa e la cultura islamica, fornito di foto e documentari correlati. Dispone anche di una mappa con la localizzazione esatta delle iscrizioni ma, sebbene questa sia graficamente ben realizzata, è basata su un disegno antico, e quindi di carattere più grafico che esplicativo. Inoltre ha come limite la natura soltanto presentativa dei contenuti, che non permette la partecipazione alla crescita degli stessi agli utenti.

Un altro sito degno di interesse è Epigrapisa , il quale oltre a spiegazioni, mappe, foto, 25 tracce audio e video, presenta ogni epigrafe corredata da un documento di approfondimento completo di bibliografia.

Sebbene questo sia di natura partecipativa, per poter inserire delle informazioni su una

22 Consultabile seguendo il collegamento web: http://www.edr-edr.it/en/present_en.php.

23 Collegamento web: http://penelope.uchicago.edu/Thayer/E/Roman/Texts/Inscriptions/home.html. 24 Consultabile seguendo il collegamento web: http://pisaeislam.humnet.unipi.it/.

(16)

Tesi Magistrale di ​Teresa Meini

epigrafe è necessario contattare i gestori del sito (come è possibile vedere nella loro pagina collabora ) e inviare loro i dati che verranno letti e immessi nel sito. Questo26 procedimento limita l'interazione e non permette di vedere i risultati del proprio lavoro realizzati in tempo reale.

3.1 Analisi del problema

I contenuti di questi siti sono interessanti e ben presentati ma manca continuità all’interno dei progetti, ovvero si presentano come progetti totalmente distinti, con stili, presentazione, modo di raccontare le epigrafi, storie raccontate e contesti completamente differenti.

Sebbene sia comprensibile la natura distinta dei vari siti, data dai vari ambiti di studio differenti (che variano a seconda del luogo e periodo storico), non c’è un collegamento tra di essi e non c’è un modo standardizzato di trattare le informazioni.

Questo diminuisce l’interoperabilità delle informazioni stesse, obbligando lo studioso/utente ad affrontare ogni argomento con un approccio e uno schema mentale differente.

Non viene consentita ai possibili utenti la totale partecipazione ai vari progetti, dato che manca il passaggio mediante il quale vengono generati automaticamente contenuti all’inserimento dei dati; coloro che sono interessati a contribuire devono forzatamente contattare i realizzatori dei siti web. Manca uno scopo partecipativo, oltre che enciclopedico, che permetta di interessare ulteriormente l’utente, sia esso studente, ricercatore o appassionato.

Non è presente inoltre una codifica standard del testo epigrafico: manca quindi il passaggio che permette di strutturare l’informazione per permettere studi futuri sulle stesse epigrafi.

Per ovviare a queste mancanze Epidoc-Creator è una applicazione web realizzata in maniera tale da essere adattiva: mostra le informazioni in maniera comprensibile e accattivante per tutti gli utenti e permette di creare e ricavare dalle pagine stesse del sito

(17)

Tesi Magistrale di ​Teresa Meini

un insieme di informazioni più specialistiche, come la codifica del testo dell’epigrafe e la mappa delle zone di influenza della stessa.

Essa si differenzia da un sito web creato tramite un CMS, o un qualsivoglia sito web statico, per le potenzialità di ampliamento che offre : ad esempio all’interno di un sito 27 web realizzato da un CMS sarà difficile creare uno strumento di ricerca più sofisticato rispetto alla semplice ricerca letterale all’interno di un testo, come ad esempio la ricerca di contenuti (in questo caso epigrafi) compresi all’interno di un periodo storico ben definito.

Epidoc-Creator offre le seguenti funzionalità::

● permette di inserire (e ricavare) informazioni correttamente strutturate e ben formate anche a personale non specializzato ; 28

● crea automaticamente i contenuti desiderati e li posiziona nelle sezioni predisposte del sito senza intervento di terzi a governarne la pubblicazione ; 29

● permette all’utente di estrarre informazioni codificate;

● è utilizzabile da diversi dispositivi, dato che dispone di una grafica che si adatta allo strumento utilizzato;

● può potenzialmente crescere ed evolversi, permettendo la continuità degli studi relativi alle epigrafi.

Nello specifico, l’utente che deve inserire le informazioni di una nuova epigrafe si trova davanti a una form che richiede la compilazione di serie di campi.

Questi permettono di inserire le informazioni necessarie a generare il documento XML in formato standard TEI.

Il perché di questo approccio è semplice: per evitare che un utente non specializzato debba studiare la codifica di testi, è importante offrire degli strumenti che aiutino la produzione del documento in maniera standard e corretta.

27 Vedi 9 POSSIBILI SVILUPPI FUTURI. 28 Vedi 7.1 Aggiunta dei contenuti. 29 Vedi 7.3 Presentazione dei contenuti.

(18)

Tesi Magistrale di ​Teresa Meini

4 LA CODIFICA DEL TESTO

4.1 Il linguaggio XML

L’XML, acronimo di Extensible Markup Language, è un metodo per descrivere del testo in linguaggio-macchina comprensibile agli umani: si tratta di un metalinguaggio che funziona attraverso l’atto di circondare del testo semplice con dei tag che hanno un significato definito e riconoscibile . 30

I tag sono delle etichette composte da una prima parte e una seconda parte: entrambe sono parole racchiuse tra parentesi angolate, ma il tag di chiusura, ovvero il secondo, ha anche una barra obliqua per indicare la sua funzione. Non è possibile mischiare l’apertura e la chiusura dei tag, anche se è possibile inserire un tag dentro un altro. L’XML è il linguaggio maggiormente utilizzato per la codifica dei testi per via della sua usabilità: infatti, pur seguendo degli standard ben definiti, offre la possibilità di codificare testi di ambiti e contesti differenti; ad esempio si possono codificare degli scambi epistolari antichi nella stessa maniera in cui si possono codificare delle email moderne.

Le regole del linguaggio XML per codificare il testo sono semplici, strutturate e indipendenti dalla piattaforma sulla quale vengono utilizzate; il linguaggio XML è interoperabile, rendendolo lo strumento ideale per la codifica e lo scambio di informazioni tra le applicazioni più disparate.

Un tag XML è chiamato anche elemento e può avere più o meno attributi:

<elemento attributo1=”contenuto dell’attributo 1” attributo2=”contenuto dell’attributo 2”>contenuto dell’elemento</elemento>

figura 4.1.1

Nel linguaggio XML viene utilizzato il namespace , che serve ad associare gli elementi 31 e gli attributi a stesso nome, il cosiddetto URI (Uniform Resource Identifier), in modo

30 Mᴀ ɪᴍᴏ Cᴀɴᴅᴜᴄᴄɪ, ​Xml Pocket, Apogeo, cap. 1. 31​Ibidem, cap. 6.

(19)

Tesi Magistrale di ​Teresa Meini

da identificarli e distinguerli da eventuali elementi e attributi che possono presentarsi in far parte di insiemi associati ad altri nomi.

In questo caso viene specificato l’URI designato dalla TEI mediante l'attributo​xmlns (xml-namespace) indicato nella root del documento XML, ovvero il primo elemento. Dato che il documento - opportunamente modificato per codificare correttamente le informazioni in formato Epidoc - utilizza le specifiche TEI, l’elemento root si chiama obbligatoriamente anch’esso TEI:

<TEI xmlns="http://www.tei-c.org/ns/1.0">

figura 4.1.2

4.1.1 Lo XML Schema

Un documento XML può essere descritto mediante uno schema XML, che può essere un file di tipo DTD o un documento di tipo XML Schema . 32

Questo tipo di documenti specificano la struttura, gli elementi e gli attributi ammessi per una determinata codifica, limitando il contenuto ammesso all'interno dei documenti XML, ma anche fornendogli una gerarchia.

Nel nostro caso viene utilizzato un documento di tipo XML Schema (più recente e tecnologicamente più avanzato rispetto alla DTD) per descrivere la struttura della codifica usata, pertanto d'ora in poi verrà fatto riferimento soltanto a questo.

Un documento XML è considerato valido rispetto a uno schema se è conforme alla struttura definita dallo stesso; non basta infatti che sia ben formato, cioè senza tag annidati in maniera illegale, deve essere valido rispetto alla descrizione che gli viene assegnata (ovvero l’XML Schema).

Uno schema XML è a sua volta un documento XML: in questo caso non è stato necessario inventarne e scriverne uno specifico, dato che il consorzio TEI già ne 33

condivide uno per la codifica delle epigrafi, ovvero EpiDoc . 34

32 Sito ufficiale del consorzio TEI: http://www.tei-c.org/. 33 Vedi 4.2 Il consorzio TEI.

(20)

Tesi Magistrale di ​Teresa Meini

Il parser, cioè il programma che ha il compito di analizzare il documento XML, deve verificare che il documento sia ben formato e valido, in maniera tale da accedere agli elementi e agli attributi del documento.

Per comprendere se il documento XML creato o utilizzato è valido è necessario verificare che sia conforme alle regole specificate all’interno dello schema XML.

4.2 Il consorzio TEI

La Text Encoding Initiative (TEI) è un'associazione no-profit, composta da istituzioni accademiche, ricercatori e studiosi di tutto il mondo . Questa collettività di persone 35 definisce gli standard della rappresentazione dei testi in forma digitale, in maniera tale che coloro che digitalizzano e codificano testi possano seguire le stesse regole, ottenendo risultati conformi, riutilizzabili e scambiabili. L’associazione offre all’interno del suo sito le linee guida che descrivono schemi di codifica sfruttabili da qualunque utente si voglia cimentare nel loro utilizzo. L'obiettivo che si prefigge è creare e mantenere degli standard per la rappresentazione di testi digitali utilizzabili per la ricerca online, per l'insegnamento o la preservazione degli stessi e per rendere più agevole l'interscambio, la riutilizzazione e l'integrazione dei dati.

4.2.1 Le linee guida EpiDoc

EpiDoc36 è il risultato della collaborazione internazionale di ricercatori, studenti e persone facenti parte dell’associazione TEI: fornisce le linee guida e gli strumenti per la codifica digitale di testi antichi di vario tipo, che siano questi edizioni erudite, scolastiche, papiri o epigrafi, estendendo altre linee guida già esistenti, come ad esempio ​Papyri.info.

Epidoc riunisce un sottoinsieme ragionato delle linee guida TEI adatte alla digitalizzazione di questi testi o iscrizioni particolari. La comunità Epidoc si occupa sia della definizione dello standard in questione, sia di preparare e trascrivere i testi

35 Collegamento web alla pagina del consorzio: http://www.tei-c.org/index.xml. 36 Collegamento web al progetto Epidoc: https://sourceforge.net/p/epidoc/wiki/Home/.

(21)

Tesi Magistrale di ​Teresa Meini

interessati, tenendo conto della storia e del contesto in cui un documento appare nel tempo . 37

Insieme a queste linee guida viene anche offerto un foglio di stile in formato XSL per 38

trasformare la codifica Epidoc in pagine HTML, ODF o di semplice testo.

In questo caso è stato ignorato il foglio di stile che viene suggerito di usare insieme ai documenti XML prodotti con la codifica Epidoc . Questa scelta è stata compiuta per 39 differenti ragioni:

● il prodotto finale dell'elaborazione dell'XML non è una semplice pagina HTML, meno che mai un documento ODF o di semplice testo;

● l’intenzione non era quella di presentare solamente il documento XML, ma di gestire le informazioni in maniera più complessa, ad esempio recuperando la latitudine e la longitudine di una locazione per creare una mappa;

● i fogli di stile Epidoc si basano su quelli originariamente scritti per le iscrizioni dei progetti ​Afrodisia e ​Duke Databank, non risultando adatti allo scopo di questo progetto. Dato che non era necessario utilizzare un documento XSL per presentare i dati, la sua esistenza è stata ignorata per evitare di crearne uno personalizzato e, di conseguenza, poco sfruttato . 40

Nel sito ufficiale Epidoc viene condiviso lo schema XML solamente in versione ODD, il modello TEI standard per descrivere modelli, guide linea ed esempi.

È stato necessario quindi utilizzare lo strumento online TEI Roma e generare tramite 41 lo schema in formato ODD una versione di questo in formato W3C Schema, uno zip contenente dei documenti in formato XSD (XML Schema).

figura 4.2.1.1

37 Maggiori informazioni sul progetto Epidoc: http://www.stoa.org/epidoc/gl/latest/intro-eps.html. 38 Maggiori informazioni sul linguaggio XSL: https://www.w3schools.com/xml/xsl_intro.asp. 39 Trovabile all’indirizzo: https://sourceforge.net/projects/epidoc/files/Example%20Stylesheets/. 40 Vedi il collegamento web: https://sourceforge.net/p/epidoc/wiki/Stylesheets/, sezione ​“Limitations”. 41 Utilizzabile seguendo il link http://www.tei-c.org/Roma/.

(22)

Tesi Magistrale di ​Teresa Meini

I documenti XSD ricavati in questo modo sono stati usati per produrre il codice Java necessario a gestire i file XML, come spiegato nella sezione 6.3.1 Lo strumento XJC.

4.2.2 Le Convenzioni di Leiden in Epidoc

Le convenzioni di Leiden sono un sistema standard per compilare le edizioni di testi 42 antichi, tra cui anche quelli epigrafici; definiscono una serie di regole per segnalare cancellature, omissioni, abbreviazioni, divergenze di versioni, parti mancanti o altro all’interno di un testo.

Queste regole sono state poi studiate e re-interpretate per essere utilizzate all’interno della codifica in XML dalla TEI: sono state sfruttate all’interno del progetto per permettere all’utente di inserire delle codifiche specifiche al testo.

Dato che le informazioni inseribili da parte dell’utente sono molte e le casistiche particolari che si potrebbero incontrare all’interno del panorama epigrafico sono altrettanto numerose, viene permesso di codificare solo alcuni casi che sono stati ritenuti di carattere maggiormente generale.

Di seguito viene riportato il sottoinsieme di tag facenti parte di quelli legati alle Convenzioni di Leiden che agli utenti è permesso inserire: 43

● <unclear></unclear>

○ per codificare quando una parte del testo non è chiara;

● <del></del>

○ per marcare le parti del testo che sono cancellate;

● <damage></damage>

○ per codificare quando il testo è danneggiato;

● <gap reason='illegible' unit='character'> <strike>_</strike> </gap>

○ per codificare i caratteri mancanti all’interno di un testo;

● <gap reason='illegible' unit='line'><strike> linea mancante</strike></gap>

○ per marcare linee mancanti all’interno di un testo.

42 Vedi http://www.stoa.org/epidoc/gl/latest/intro-intro-it.html e le 11 NOTE BIBLIOGRAFICHE per

approfondimenti.

43 Una lista degli elementi per la codifica di testi epigrafici e manoscritti più completa è raggiungibile

(23)

Tesi Magistrale di ​Teresa Meini

5 STRUMENTI E TECNOLOGIE UTILIZZATE

È stato sfruttato il programma oXygen XML Editor per manipolare e validare il documento XML, dato che permette di effettuare la validazione in maniera semplice e immediata. La versione del software utilizzata durante i test è la 15.1 . 44

Il programma per lo sviluppo principale dell’applicazione è Eclipse Java Neon, una versione del software Eclipse: questo è un ambiente per lo sviluppo particolarmente adatto alla scrittura di programmi in linguaggio Java, ma permette di gestire anche linguaggi come il JavaScript e tanti altri ancora, rendendolo perfetto come strumento di sviluppo di applicazioni web non banali . 45

Altri punti forti di questo software sono la sua estensibilità e il supporto che offre per progetti simili a questo: tra le varie estensioni spicca il ​tool Spring Tool Suite (STS) ,46

che offre supporto per progetti realizzati utilizzando Spring: è stato particolarmente utile per rendere facile e immediato compilare l’applicazione.

Durante la stesura della tesi saranno trattati principalmente diversi linguaggi di programmazione che sono di ambito più particolare rispetto ai linguaggi ben più noti ed utilizzati all’interno del corso di Informatica Umanistica, come il linguaggio XML, CSS e HTML . 47

Tra questi:

● il linguaggio Java, con la quale è stata sviluppata la parte di ​back-end, utilizzato in maniera più approfondita rispetto a quanto trattato all'interno del relativo corso della magistrale ; 48

● JSTL (​J​SP ​S​tandard ​T​ag ​L​ibrary), un'estensione delle pagine JSP (​J​ava ​S​erver

P​ages). Si tratta di un insieme di tag speciali che permettono di eseguire una

44 È possibile trovarla seguendo questo collegamento: https://www.oxygenxml.com/.

45 Collegamento dove scaricare il programma Eclipse: https://eclipse.org/downloads/; riferimenti per

studiare i linguaggi citati all’interno delle 11 NOTE BIBLIOGRAFICHE e nel proseguo del testo.

46 Scaricabile al link https://marketplace.eclipse.org/content/spring-tool-suite-sts-eclipse o dal

marketplace del software Eclipse.

47 La W3School offre ottimi tutorial per iniziare a studiare questi linguaggi.

- XML: ​https://www.w3schools.com/xml/​; - CSS: ​https://www.w3schools.com/css/​; - HTML: ​https://www.w3schools.com/html/​.

48 Un primo approccio al linguaggio Java: https://en.wikipedia.org/wiki/Java_(programming_language);

maggiori testi di studio per approfondire le conoscenze sul linguaggio Java all’interno delle ​11 NOTE BIBLIOGRAFICHE​.

(24)

Tesi Magistrale di ​Teresa Meini

serie di operazioni aggiuntive rispetto al semplice linguaggio HTML, come recuperare una serie di risultati di un certo tipo ed iterare sopra di essi ; 49

● jQuery, una libreria per il linguaggio Javascript che permette di scrivere codice in maniera più semplice e veloce . 50

Durante la spiegazione delle funzionalità dell’applicazione verrà illustrato come viene utilizzato ogni linguaggio a seconda delle necessità e secondo quale logica sono state realizzate le funzionalità stesse.

Maggiori riferimenti per ognuno di questi sono consultabili all’interno della

bibliografia e nell’appendice allegata alla tesi.

49 Un buon modo per iniziare a studiare le pagine JSP e il linguaggio JSTL è seguendo il tutorial del sito

TutorialPoint: ​https://www.tutorialspoint.com/jsp/jsp_standard_tag_library.htm​; maggiori approfondimenti nelle ​11 NOTE BIBLIOGRAFICHE​.

(25)

Tesi Magistrale di ​Teresa Meini

6 LO SVILUPPO

Introduzione: cos’è Epidoc-Creator e come è stato creato

EpiDoc-creator è una applicazione web, ovvero un’applicazione che è in grado di “ascoltare” le richieste dei browser web e dare la risposta adeguata di conseguenza . 51

La differenza tra una applicazione web e un sito web statico è che la prima non è 52 pensata secondo una struttura rigida, dove il programmatore ha già prestabilito le domande che è possibile porre e le risposte che è possibile ottenere (impedendo quindi di porre domande “più personalizzate”).

Epidoc-Creator possiede quella che viene definita una struttura ​multi-tier: i ​tier in questione sono solitamente tre e interagiscono tra di loro.

La struttura multi-tier si compone così:

1. logica di presentazione - l'interfaccia utente (UI) che visualizza dati all'utente e accetta input da parte dell'utente. In un'applicazione web questa è la parte che riceve la richiesta HTTP e restituisce la risposta HTML;

2. logica di business - gestisce la convalida dei dati, regole di business e il comportamento specifico a seconda del compito svolto;

3. logica di accesso ai dati - comunica con il database mediante la costruzione di query SQL e la loro esecuzione tramite l'API Java JDBC.

I ​tier di logica sono composti dal codice del programma, ovvero le istruzioni che possono essere eseguite.

I dati non fanno parte della logica: sono le informazioni che possono essere manipolate o trasformate dal codice del programma. Questi sono variabili e vengono elaborati dal codice, ma non ne fanno parte; i dati navigano attraverso diversi strati di un'applicazione ma non fanno mai parte della logica di questi strati.

L’ordine sopra menzionato con il quale sono presentati i tier non è casuale: infatti all’interno di questa struttura la logica di presentazione (1) comunica con la logica di business (2) che comunica con la logica di accesso ai dati (3). I ​tier 1 e 3 non

51 Un pdf online di introduzione al concetto di applicazione web:

http://www.cs.unipr.it/Informatica/Corsi/2003-04/ICT_Azienda_D05_ApplicazioniWeb.pdf​; maggiori riferimenti all’interno delle ​11 NOTE BIBLIOGRAFICHE​.

(26)

Tesi Magistrale di ​Teresa Meini

comunicano direttamente tra di loro, ma si servono della logica di business per passarsi i dati.

figura 6.1

Per mettere in relazione i ​tier è stata utilizzata una struttura logica ben precisa, la struttura MVC . 53

Prima di fare ciò però è stato necessario progettare e creare il database destinato a contenere le informazioni desiderate, per poi proseguire con la realizzazione della struttura sovrastante capace di gestire queste informazioni.

Nel seguito viene spiegato come è stata creata l'applicazione partendo appunto dal database, per poi giungere alla sua struttura e specificare per ogni funzionalità sviluppata i vari collegamenti e giri di informazioni che si scambiano le parti in gioco. È necessario qui puntualizzare che non è stato possibile, per ovvi motivi, inserire tutte le parti di codice interessate o sviluppate: per questo rimando alla bibliografiaper ogni approfondimento, all’approfondimento di stampo più manualistico in allegato alla tesi come appendice e alle note a piè di pagina all’interno del testo.

Il progetto stesso è depositato presso la segreteria dell’Università di Pisa, richiedibile per la consultazione secondo le regole dell’Università stessa, ed è scaricabile dalla versione web dell’applicazione alla pagina “Scarica Progetto”.

(27)

Tesi Magistrale di ​Teresa Meini

6.1 Creazione del Database

6.1.1 PostgreSQL

Il primo problema che si è nella creazione del progetto è stato quello di scegliere il database adatto alla gestione dei dati che andavano inseriti al suo interno: la scelta finale è ricaduta su PostgreSQL , sia per la sua natura 54 ​opensource, sia per le interessanti funzionalità di gestione dei documenti XML descritte nella sezione a seguire 6.1.1.1 PostgreSQL e l’XML.

PostgreSQL prevede la presenza di un programma eseguito in background sempre in ascolto: quando riceve una richiesta di connessione la affida al server reale che viene attivato al momento e genera una risposta.

PostgreSQL è un ​Object-relational DBMS, abbreviato in ORDBMS, cioè un Database management system relazionale a oggetti. Offre una serie di funzioni che fanno parte dello standard SQL, assieme ad altre non standard che però sono ampiamente diffuse e di grande utilità.

Tra queste spicca la possibilità di conservare all’interno del database documenti XML 55

, con la possibilità di effettuare ricerche su di essi utilizzando il linguaggio XPath. Questo linguaggio serve ad individuare i nodi all’interno di un documento tramite il percorso della loro localizzazione, in maniera analoga alla navigazione attraverso le cartelle di un sistema operativo.

Ad esempio in un documento XML strutturato come nel seguente esempio:

<?xml version="1.0"?> <listautenti> <account user="fabio"> <mail>fabio@esempio.com</mail> <nome>Fabio V.</nome> … </listautenti> figura 6.1.1.1

54 Collegamento web al sito ufficiale: https://www.postgresql.org/.

55 Queste e maggiori informazioni sono raggiungibili attraverso il sito ufficiale, nella sezione ​about: https://www.postgresql.org/about/​.

(28)

Tesi Magistrale di ​Teresa Meini

Si può recuperare il nome dell’utente utilizzando questo comando XPath:

/listautenti/account/nome/text()

figura 6.1.1.2

Dove la funzione ​text() serve a recuperare il testo trovato nel nodo ricercato.

6.1.1.1 PostgreSQL e l’XML

A causa della natura dei dati da gestire, ovvero documenti XML, è stato necessario trovare un metodo efficiente per salvarli all’interno del database, tenendo di conto che il testo codificato sarebbe stato oggetto di ricerca e sarebbe stato necessario estrarre dati dallo stesso documento XML per ri-proporli all’utente.

PostgreSQL implementa al suo interno dei meccanismi per gestire testo codificato in XML, permettendo di non dividere l’informazione inserita dall’utente all’interno di varie tabelle, procedimento che avrebbe richiesto successivamente di rigenerare il documento stesso; in questa maniera non vengono alterati i documenti inseriti, dato che conservati nella loro interezza . 56

È possibile inserire un intero documento XML all’interno di un campo di una generica tabella: questo ha permesso di gestire in maniera più efficiente le informazioni estratte dalle epigrafi.

6.1.1.1.1 Funzionalità utilizzate

Le funzionalità di PostgreSQL sono state sfruttate principalmente per contenere i documenti XML, evitando di estrarre ogni singola informazione utilizzando il linguaggio Xpath nella maniera indicata nella sezione 57 6.1.1 PostgreSQL.

Utilizzando questo linguaggio l’applicazione sarebbe stata costretta ad estrarre le informazioni una per una dal documento XML, rischiando di ricreare il documento con

56 Maggiori informazioni sulle funzionalità di gestione del linguaggio XML da parte del database

PostgreSQL: ​https://www.postgresql.org/docs/9.1/static/functions-xml.html​.

(29)

Tesi Magistrale di ​Teresa Meini

una serie di potenziali errori di malformazione e prolungando inutilmente il processo di recupero dei dati.

Sfruttando il linguaggio Java è stato possibile invece utilizzare la trasformazione tra tag XML e classi Java: attraverso questo metodo viene creato automaticamente un oggetto Java con le informazioni contenute all’interno del documento XML, lasciandolo inalterato; verrà approfondito questo procedimento più avanti nella sezione 6.3 La

trasformazione da XML a Java e viceversa.

Un altro problema che ha impedito lo sfruttamento del linguaggio Xpath in PostgreSQL per la gestione dei dati è stato la sua incapacità nel gestire il metodo ​last() ​proprio di questo linguaggio , metodo necessario in presenza di numerosi nodi con lo stesso58 nome per estrarre l’ultimo senza doverli necessariamente distinguere mediante attributi. Viene comunque sfruttata una funzione PostgreSQL in linguaggio Xpath all’interno di una query per la ricerca; l’obiettivo era specificare la lingua dell’epigrafe all’interno della ricerca in maniera tale da restituire solo i risultati che presentassero la lingua ricercata:

SELECT [... omissione per abbreviare il codice],

cast(xpath('/n:TEI/n:teiHeader/n:profileDesc/n:langUsage/n:language/ text()', xml_doc, '{{n,http://www.tei-c.org/ns/1.0}}') as text[]) AS lingua

FROM public.date as d JOIN public.data_epigrafe as de ON d.data_id = de.data_id

JOIN public.xml as x ON de.xml_id = x.xml_id JOIN public.persona_epigrafe as pe

ON x.xml_id = pe.xml_id

JOIN public.persona as p ON pe.persona_id = p.persona_id WHERE

[... omissione per abbreviare il codice] AND

cast(xpath('/n:TEI/n:teiHeader/n:profileDesc/n:langUsage/n:language/ text()',

xml_doc, '{{n,http://www.tei-c.org/ns/1.0}}') as text[]) != '{?}'

GROUP BY

[... omissione per abbreviare il codice]

figura 6.1.1.1.1.1

In questa query viene selezionato, all’interno del codice presente su db, il contenuto del tag ​<language>​.

(30)

Tesi Magistrale di ​Teresa Meini

Da notare come sia necessario indicare il namespace utilizzato dal documento XML, che è possibile rinominare e riferire con un alias per evitare ripetizioni (in questo caso nominato ​n e applicato a tutti gli elementi mettendolo davanti agli stessi).

Il metodo ​text() in fondo al percorso serve a restituire come risultato il testo interno al tag e non il tag stesso: non specificando il tipo di risposta desiderata si potrebbe ottenere, ad esempio "{"<language xmlns=\"http://www.tei-c.org/ns/1.0\" ident=\"it\">italian</language>"}" figura 6.1.1.1.1.2 invece di "{italian}" figura 6.1.1.1.1.3

(31)

Tesi Magistrale di ​Teresa Meini

6.1.2 La struttura del Database

La struttura del database creato è descritta nell’immagine seguente:

Fotografia della struttura del Database creata con lo strumento DeZign

figura 6.1.2.1

Come è norma per descrivere i database, PK sta a indicare la Primary Key, FK indica la Foreign Key e PF indica una colonna che è sia Primary Key che Foreign Key . 59

La tabella ​xml è quella che contiene i documenti XML (nella colonna ​xml_doc , di tipo xml). Essa è strutturata nel seguente modo:

xml_id bigint NOT NULL DEFAULT nextval('xml_xml_id_seq'::regclass), xml_doc xml NOT NULL,

xml_titolo character varying(160), xml_date date,

CONSTRAINT xml_id_pk PRIMARY KEY (xml_id)

figura 6.1.2.2

59 Una veloce introduzione per capire il funzionamento dei collegamenti tra tabelle e le varie chiavi: https://msdn.microsoft.com/en-us/library/ms179610.aspx​.

(32)

Tesi Magistrale di ​Teresa Meini

Nella colonna xml_doc risiedono i documenti xml effettivi (sarà spiegato successivamente come vengono inseriti e recuperati); la colonna ​xml_id genera automaticamente e in maniera sequenziale un id univoco per la riga inserita.

La colonna ​xml_titolo contiene solamente il titolo del documento, mentre la colonna xml_date contiene la data di inserimento o modifica della riga; queste due ultime informazioni servono principalmente per permettere di presentare in maniera coerente gli elementi quando vengono visualizzati come lista all'interno di una tabella a video, consentendo di ordinare per titolo o data di ultima modifica la lista ottenuta:

Esempio di Lista delle epigrafi

figura 6.1.2.3

La tabella ​date ​contiene le date ricavate dall’input dell’utente: include in primis la colonna ​data_id, che ha lo stesso comportamento della colonna ​xml_idall’interno della tabella ​xml.

Le altre colonne servono a identificare le date:

● data_inizio, per indicare l’inizio di un periodo storico; ● data_fine, per indicare la fine del periodo;

● descrizione, per associare al periodo una etichetta. Il risultato ottenuto è una struttura come questa:

(33)

Tesi Magistrale di ​Teresa Meini

Dove per indicare una data puntuale viene inserita la stessa data nelle colonne data_inizio e ​data_fine, mentre per intervalli di tempo viene fatta distinzione tra le due. La descrizione è opzionale e permette di contestualizzare le date, quando presentate, a seconda di come le ha volute descrivere l’utente.

La tabella ​persona ​contiene le informazioni per storicizzare le informazioni sulle persone inserite: è importante notare come la colonna ​ruolo non si riferisca a ruoli astratti come “persona citata”, ruoli di tipo familiare o altro; si riferisce piuttosto alla codifica ​roleName che, come il sito ufficiale della TEI indica: 60

“contiene una componente del nome che indica un ruolo o una posizione

specifici a livello sociale, come nel caso di titoli ufficiali o grado

militare”.

È comunque un contenuto opzionale, in quanto la colonna ammette valori nulli; anche le colonne ​nome e ​cognome possono essere lasciate nulle, per permettere di inserire informazioni anche quando non si ha il nome completo della persona ma è necessario inserirlo perché comunque parte integrante della storia dell’epigrafe.

Le tabelle ​collegamento_persona​, ​data_epigrafe ​e ​persona_epigrafe ​sono semplici

tabelle di collegamento che permettono di mettere in unione le tabelle principali o le loro colonne nelle ricerche: sono infatti costituite da Foreign Key, ovvero dalle chiavi di riferimento che sono principali in altre tabelle.

Nella tabella ​persona_epigrafe ​viene specificato il tipo di collegamento che ha una persona rispetto ad una epigrafe: le persone segnalate con un ​flag “R” sono quelle ricordate, mentre le persone segnate con il ​flag “C” sono collegate al personaggio ricordato nell’epigrafe.

Data_epigrafe ​è la tabella utilizzata per connettere ogni data con l’epigrafe dove viene

citata (ovvero con la tabella ​xml​), ​persona_epigrafe ​connette una persona citata dentro un’epigrafe all’epigrafe stessa, mentre la tabella ​collegamento_persona ​collega una persona con un’altra, mettendo in relazione due righe della tabella ​persona​.

Le tabelle ​utente ​e ​ruoli_utente ​sono slegate dalle tabelle che contengono le informazioni dedicate alle epigrafi e servono per gestire gli utenti iscritti. Contengono

60 Collegamento web dove si trova la spiegazione dell’utilizzo del tag ​roleName: http://www.tei-c.org/release/doc/tei-p5-doc/en/html/ref-roleName.html​.

(34)

Tesi Magistrale di ​Teresa Meini

le informazioni che questi inseriscono durante la loro iscrizione nel primo caso e i ruoli che hanno (admin o semplice utente) nel secondo.

Quest’ultima distinzione è particolarmente importante perché l'accesso ad alcune pagine è riservato agli utenti di tipo admin.

Questo aspetto e le varie tipologie di accesso verranno descritte in maniera più approfondita nella sezione dedicata a 7.4 Spring Security e alla sicurezza.

6.2 La struttura MVC

L’applicazione web si basa sull’utilizzo delle logiche del modello MVC, ovvero ​M​odel

V​iew ​C​ontroller, che separa concettualmente le applicazioni in:

● gestione dei dati e delle logiche interne;

● presentazione delle elaborazioni ottenute dai dati all’utente;

● l’infrastruttura che permette la comunicazione tra le due parti precedenti.

Viene ottenuta così una separazione fra la logica applicativa, di cui si occupano il controller e il model, e l'interfaccia utente della quale si occupa la parte view.

In questo modo è possibile fare una chiara distinzione tra oggetti di dominio che modellano il mondo reale e gli oggetti utilizzati per presentare gli elementi che sono visibili sullo schermo.

Nello specifico il controller riceve i comandi dall’utente mentre il model fornisce i metodi per accedere ai dati . 61

All’interno della parte model viene operata una ulteriore suddivisione delle classi tramite l’utilizzo dei DAO, ​D​ata ​A​ccess ​O​bject . 62

Questo strato implementa le operazioni di CRUD, così chiamate perché sono le principali operazioni compiute sul database (​C​reate, ​R​ead, ​U​pdate, ​D​elete ). 63

Per permettere alla parte del model e del controller di comunicare correttamente è stato necessario implementare uno strato anch’esso tipico in questa struttura: lo strato del service. Questa parte viene utilizzata per richiamare i metodi del DAO, coordinarli e utilizzarli nella parte del controller.

61 GRAIG WALLS, ​Spring in Action, Shelter Island, Manning Publications, 2015, cap. 5.1. 62​Ibidem, cap. 10.2.

(35)

Tesi Magistrale di ​Teresa Meini

L’applicazione si connette al database attraverso le API JDBC ( ​J​ava ​D​ata​B​ase

C​onnectivity ) del linguaggio Java e i relativi driver. Per accedere basta fornire i nomi64 giusti per avviare la connessione (indirizzo per raggiungere il database, utente, password, nome della tabella, colonna, eccetera).

Per sfruttare al meglio la API JDBC viene utilizzata la classe JdbcTemplate , a quale 65 permette a scrivere meno codice e aiuta a evitare gli errori più comuni.

Per far girare l'applicazione web è stato sfruttato il servlet container Tomcat, una piattaforma software per l'esecuzione di applicazioni Web sviluppate in linguaggio Java. Tomcat implementa il supporto alle pagine JSP, ​J​ava​S​erver ​P​ages , che servono66

a presentare dinamicamente i risultati ottenuti in formato HTML a seconda delle diverse richieste dall’utente.

figura 6.2.1

Tutto ciò è stato realizzato grazie al framework ​open source Spring, che è specializzato per la creazione di applicazioni di tipo J2EE , aiutando a ridurre la complessità di 67 sviluppo di progetti simili grazie all'uso di pattern di programmazione semplici e potenti.

64 GRAIG WALLS, ​Spring in Action, Shelter Island, Manning Publications, 2015, cap. 10.1. 65​Ibidem, cap. 1.1.4.

66 GRAIG WALLS, ​Spring in Action, Shelter Island, Manning Publications, 2015, Part 2. 67​Ibidem, Part 1.

(36)

Tesi Magistrale di ​Teresa Meini

Utilizzando Spring (o meglio, come verrà ricordato successivamente, Spring Boot, framework che facilita ulteriormente la creazione dei progetti basati su Spring ) sono 68

stati ottenuti dei risultati soddisfacenti sfruttando delle librerie consone.

Spring funziona tramite l’iniezione di dipendenze, tecnica chiamata ​D​ependency

I​njection (DI) . 69

La DI è un tipo di IoC ( ​I​nversion ​o​f ​C​ontrol ) che serve a minimizzare il grado di 70 interdipendenza tra i vari moduli e ne massimizza la riusabilità.

Questi meccanismi permettono di iniettare classi direttamente dentro altre classi , in 71 maniera tale da gestirle in maniera indipendente le une dalle altre e senza bisogno di inizializzarle; tutto questo è gestito da Spring senza bisogno di interventi diretti.

6.2.1 Perché utilizzare questa struttura?

MVC è una tipologia di struttura già ben collaudata e ampiamente utilizzata nella creazione di applicazioni web: esistono vari tipi di strutture simili e derivate da questa 72

, ma la scelta della struttura da utilizzare va compiuta basandosi principalmente sui problemi da risolvere e sul tipo di applicazione da sviluppare.

Per creare l’applicazione in maniera funzionale era necessaria una divisione ordinata e precisa delle parti in questione, divisione che non doveva essere eccessiva per evitare problemi di prestazioni . 73

La scelta della struttura MVC è quindi risultata ottimale perché distingue chiaramente tra le parti prese in causa e i loro ruoli all’interno di un progetto

6.2.2 Come è stato creato il progetto

Spring Boot permette la creazione di progetti di tipo Spring in maniera facile e veloce.

68 GRAIG WALLS, ​Spring Boot in Action, Shelter Island, Manning Publications, 2016, cap. 1. 69 GRAIG WALLS, ​Spring Boot in Action, Shelter Island, Manning Publications, 2016, cap. 1. 70 Vedi significato in: https://en.wikipedia.org/wiki/Inversion_of_control.

71​Ibidem, cap. 1.4.2.

72 Collegamento web per approfondire i vari design pattern che è possibile utilizzare: http://www.infoworld.com/article/2926003/microsoft-net/exploring-the-mvc-mvp-and-mvvm-design-patt erns.html​.

(37)

Tesi Magistrale di ​Teresa Meini

Attraverso uno strumento online per generare progetti permette di scegliere le librerie74 più adatte alla creazione del progetto che è inteso realizzare; dentro di esso vengono inseriti gli strumenti per configurare l’applicazione in maniera automatica e senza il bisogno di scrivere documenti di configurazione in linguaggio XML da parte del programmatore.

Epidoc-Creator utilizza la tecnologia Maven , un sistema che permette di gestire la 75 costruzione automatica di un progetto Java e le librerie da cui esso dipende.

Maven si basa sull’utilizzo di un documento chiamato ​pom.xml​, dove vengono descritte le librerie necessarie a descrivere un corretto funzionamento del progetto e i passi necessari per compilarlo ed esportarlo in formato pacchetto per il successivo deploy sull'application server.

In questo caso il documento ​pom.xml viene automaticamente creato dal generatore di progetti di Spring Boot; è possibile ritrovare al suo interno le librerie aggiunte tramite le scelte effettuate durante la generazione via interfaccia web, ovvero JDBC, Web, PostgreSQL e Security.

Lo scopo di queste librerie è dare la possibilità di creare degli oggetti Java e gli oggetti da cui essi a loro volta dipendono per utilizzarli all’interno del progetto.

Il punto focale di Spring, di conseguenza anche di Spring Boot, è l’utilizzo delle annotazioni , meccanismi che permettono di iniettare parti di codice o dichiarare76 l’utilizzo di una classe all’interno delle altre classi, impedendo quindi di ripetere codice ad oltranza.

Quella che viene utilizzata maggiormente è ​@Autowired: essa è usata per configurare l’iniezione di dipendenza in Spring ed è associata a un metodo setter, o a un campo o a un costruttore di una classe; in pratica è l’annotazione che rappresenta il cuore del concetto DI.

74 Collegamento web: https://start.spring.io/.

75 Spiegazione di cosa è maven all’interno del libro online “Maven: The Complete Reference”: http://books.sonatype.com/mvnref-book/reference/introduction-sect-whatIsMaven.html​.

Riferimenti

Documenti correlati

160 (legge di Bilancio 2020), disciplina una detrazione dall'imposta lorda pari al 90 per cento delle.. spese documentate sostenute nell'anno 2020 per interventi finalizzati al

Questo 7 aprile e a seguire, che sia con azioni in strada, nei nostri ospedali o in altri stabilimenti di cura, attraverso le reti sociali o la stampa, noi chiediamo immediatamente

- la presenza del laureato in Scienze Motorie nell’ambito delle società sportive rappresenta una figura di prestigio e di riferimento sia per gli atleti che per le famiglie -

Da giovane, a 17-18 anni, ha iniziato la sua carriera di volon- tario come catechista in parroc- chia, all’Immacolata; in seguito, ha dedicato molto tempo al servizio della

Il punteggio di questa sezione è dato dalla valutazione complessiva delle informazioni fornite nella Domanda 3, del piano media e del lavoro creativo presentato nel filmato e

Per convertire la macchina in modalità Digitale consigliamo di utilizzare i decoder Zimo acquistabili sul nostro sito alla voce prodotti accessori e decoder, infatti i decoder di

D1- PCB ELETTRONICA LATO DECODER X1PZ, D2- PCB ELETTRONICA LATO MOTORE X1PZ, D3- ADESIVO VINILE OSCURANTE LATO MOTORE X1PZ, D4- ADESIVO VINILE OSCURANTE LATO CONDOTTO X1PZ,

Nel campo Servizio si dovrà selezionare un’opzione tra quelle disponibili presenti nel menu a tendina, nel campo Anno si dovrà inserire l’anno scolastico di interesse