I tracciati ICCD con la shell Unix e Python

Il trasferimento delle schede di catalogo ICCD avviene usando file di testo chiamati tracciati. Può essere utile sapere come trattare questi tracciati con gli strumenti più semplici a disposizione in un ambiente Unix.

L’argomento non è particolarmente eccitante e fortunatamente sembra destinato a diventare presto obsoleto con l’introduzione di un formato XML (peraltro, già obsoleto), ma qualche appunto tecnico può essere utile. I comandi della shell Unix permettono di ricavare informazioni di base e poi possiamo procedere con passaggi più elaborati in Python.

Nel caso di un singolo file di tracciato, per contare il numero di schede contenute possiamo fare riferimento al paragrafo CD, obbligatorio, che introduce ogni scheda:

$ cat tracciato.trc | grep -c -e "^CD:"
1527

La parte principale del comando è l’espressione regolare ^CD: che unita all’opzione -c di grep permette di contare il numero di schede (nel nostro caso, 1527). L’espressione regolare è necessaria per evitare di includere nei risultati anche altre parti del tracciato, inclusi altri campi (ad esempio DSCD), come mostrato nell’esempio successivo:

$ cat tracciato.trc | grep -c "CD:"
2680

Ricaviamo un elenco dei numeri NCTN delle schede, usando un’espressione regolare analoga e il comando cut, indicando lo spazio come carattere delimitatore e selezionando solo il secondo campo:

cat tracciato.trc | grep -e "^NCTN:" | 
cut -d " " -f 2

La lista prodotta dal comando sarà piuttosto lunga ed è meglio salvarla in un file a parte, usando una semplice pipe:

cat tracciato.trc | grep -e "^NCTN:" | cut -d " " -f 2 > nctn.txt

È importante controllare la correttezza dei dati. Secondo la normativa ICCD (sia la vecchia versione 2.00 del 1992, sia la nuova versione 3.00) il campo NCTN deve essere composto da 8 cifre, quindi al numero vero e proprio devono essere aggiunti zeri. In questo modo il numero 13887 diventa nel campo NCTN 00013887 e così via.

Di fatto, dal punto di vista informatico, 00013887 non è un numero intero (che sarebbe invariabilmente memorizzato come 13887) ma una stringa di 8 caratteri in cui i singoli caratteri sono numerici (una considerazione analoga vale, ad esempio, per i CAP). Purtroppo spesso accade che questa prescrizione rimanga disattesa, perché il campo NCTN viene erroneamente interpretato come un campo numerico, ad esempio nella creazione di un database.

Nel caso a cui stavo lavorando nei giorni scorsi effettivamente abbiamo un po’ di tutto: 5 cifre, 7 cifre, 8 cifre.

Nella seconda parte di questo post ci trasferiamo in una sessione IPyhon (in inglese) dove vediamo come elaborare ulteriormente i dati che abbiamo salvato nel file nctn.txt per ottenere un elenco leggibile dei numeri NCTN: prosegui la lettura su nbviewer.

Ricordo infine che una introduzione molto leggibile alla catalogazione ICCD è quella di Diego Gnesi Bartolani, che si può scaricare in PDF dal suo sito web.

 

Pubblicato da

Stefano Costa

Archaeologist, I study the Late Antique and Early Medieval/Byzantine period on the northern side of the Mediterranean, focusing on pottery usage patterns. I'm also involved in open source and open knowledge communities, like OSGeo, the IOSA project and the Open Knowledge Foundation.

4 pensieri riguardo “I tracciati ICCD con la shell Unix e Python”

  1. Ciao, il formato di trasferimento dei dati è definito nei documenti che trovi qui http://www.iccd.beniculturali.it/index.php?it/489/normative-per-il-trasferimento-dei-dati e negli altri che si trovano nella sezione Standard catalografici sul sito ICCD. TRC era semplicemente l’estensione di quel file, ma è semplicemente un file di testo (e i nomi dei file hanno una loro struttura che dipende dal tipo di schede trasmesse e dall’ente schedatore).

    È un file di testo quindi per quanto non sia agevole si può manipolare con qualunque software libero. Sulla storia di questo formato ci sono molte pagine da scrivere, non necessariamente appassionanti ma ormai è questo, anche nella sua variante (non del tutto operativa) in XML. Il CSV semplicemente non è proponibile visto che la struttura dati è ad albero. Se vuoi possiamo discuterne più in dettaglio, magari davanti a qualche riga di codice .. https://gitlab.com/archeoliguria/csv2iccd/tree/master 😉

  2. Lo so. Ho una copia del PDF se ti interessa (Diego sa che il suo sito non è più disponibile ma non lo ripristinerà). L’offerta vale per chiunque altro leggesse questo articolo.

Rispondi