Recentemente sono stato coinvolto nel gruppo che sta curando la conversione di alcuni dataset in formati pubblicabili come opendata. Partendo da tabelle esportate in .CSV dal Sistema Informativo di Ateneo, sto valutando come convertirle in formato RDF così da esporre set di dati classificati con 4 stelle (come proposto dal comitato W3C).

Definizione 4 Stelle, estratto da Vademecum OpenData pubblicato dalla FunzionePubblica.gov.it

Uno strumento interessante, disponibile dal mondo OpenSource è il pacchetto Tarql che converte files CSV in RDF tramite un file di mappatura delle colonne scritto in SPARQL.
Il tool è utilizzabile solo via command-line, questa è la caratteristica più interessante per risolvere il mio problema.
Lo svantaggio principale è che non viene messo a disposizione un pacchetto installabile, ma la generazione dell'applicazione Java è affidata a Maven. Apache Maven è un gestore di progetti software basato sul concetto di POM (Project Object Model ). Provvede ad eseguire le istruzioni che il team di sviluppo descrive nei file pom.xml e assembly.xml definendo dipendenze e struttura delle directory in cui l'applicazione viene assemblata.
Non desiderando aggiungere l'ennesimo tool di sviluppo software nella mia workstation ho provato strade alternative, cercando su Docker Hub. In questo caso sono stato fortunato; su Docker Hub è disponibile una sorta di Maven-chiavi in mano con cui generare velocemente l'applicazione partendo da una struttura già pronta. Scorrendo la pagina di documentazione, vediamo che già il semplice comando:

$ docker run -it --rm --name my-maven-project \
-v "$PWD":/usr/src/mymaven \
-w /usr/src/mymaven maven:3.2-jdk-7 mvn clean install

è sufficente a:

  • costruire il container presso il nodo docker ed eseguirlo in modalità interattiva (-it);
  • distruggerlo alla fine del batch (--rm);
  • collegare la directory in cui siamo al run, nello spazio di lavoro del container
    (-v "$PWD":/usr/src/mymaven);
  • definire la working-dir del container
    (-w /usr/src/mymaven);
  • lanciare il comando di costruzione dell'applicazione (mvn clean install) aspettandosi nella root della working-dir i files pom.xml e assembly.xml da cui ricavare dipendenze e organizzazione del target da costruire;

Giunti a questo punto, per costruire l'applicazione:

  • ho eseguito il git clone del repository in uno spazio presso il filesystem del nodo docker:
    git clone https://github.com/tarql/tarql.git;
  • sono entrato nella directory prodotta: cd tarql;
  • ho lanciato il comando precedentemente descritto:
    docker run...

Alla fine del run, nella cartella di target troviamo un *.tar.gz e un *.zip contenente la cartella con l'applicazione pronta da eseguire.