Tecnologie

Il sito del progetto Confiscati Bene è basato su DKAN, una distribuzione dedicata di Drupal, ideale per la pubblicazione di dati e dataset. Di seguita una serie di considerazioni sulle funzionalità della piattaforma.

Risorse preliminari

Risorse web:

Note: i paragrafi in corsivo contengono informazioni leggermente più tecniche.

In principio era Drupal...

Tutti conoscete Wordpress. Si tratta di una piattaforma che gestisce la produzione e pubblicazione di contenuti su web, tipicamente blog. Tecnicamente questo famiglia di software è conosciuta con il nome di CMS: Content Management System. Ce ne sono moltissimi oltre Wordpress e Drupal è uno di questi: si tratta di un progetto open-source nato nel 2001 e con alla base una delle più grandi e attive comunità di sviluppatori, sparsi un po’ in tutto il mondo. La sua storia è emblematica e interessante (se non avvincente) da leggere...

Si tratta di un’applicazione scritta in PHP (linguaggio server-side), che si appoggia a database relazionali come MySQL o PostgreSQL, molto adatta a essere usata in ambienti LAMP (linux, apache, mysql, php).

Come Wordpress (.org, quindi la versione da scaricare e installare su un server), anche Drupal ha una versione base installabile, ma estendibile in un secondo momento mediante temi (personalizzazione dell’interfaccia) e moduli o plugin (personalizzazione delle funzionalità). Ma in più Drupal viene rilasciato anche sotto forma di distribuzioni, quindi pacchetti in cui sono già integrati temi, moduli e plugin utili per un certo fine.

DKAN, la piattaforma su cui è costruito Confiscati Bene, è proprio una distribuzione di Drupal 7.

… e DKAN fu!

DKAN è quindi un’installazione personalizzata di Drupal in cui sono preinstallati molti moduli utili per il suo obiettivo: fornire una piattaforma di gestione e pubblicazione di dataset, ispirata alla piattaforma CKAN della Open Knowledge Foundation.

CKAN è una piattaforma sviluppata da zero per quel fine e dedicata solo a quello. DKAN è un minestrone di moduli sviluppati un po’ indipendentemente e un po’ ad-hoc, che collaborano e coesistono per quello stesso fine: pubblicare dataset. Questo significa che una volta installato DKAN, nulla vieta di estenderne le funzionalità e personalizzarlo come una qualsiasi installazione di Drupal. Le possibilità sono infinite, anzi limitate solo dalla fantasia degli sviluppatori, così come i sapori di un classico minestrone della nonna.

DKAN è stata ideata e prodotta ed è distribuita e mantenuta da Nüams, nell'ambito del progetto Nücivic. Al suo sviluppo partecipano direttamente anche molti sviluppatori indipendenti, tra cui i nostri, e indirettamente tutta la comunità di Drupal.

Il DKAN di Confiscati Bene

Il nuovo sito di Confiscati Bene è un’installazione di DKAN, cucinata a regola d’arte da quei fenomeni di Twinbit. Ha per ora due funzionalità primarie: gestione dei dataset sui beni confiscati e un blog (oltre alle classiche pagine statiche, tipo quella di About). Eccone una breve panoramica.

Blog

C'è ben poco da spiegare: chi ha i privilegi per farlo può creare un nuovo post, riempirlo di contenuti multimediali (ipertesto, immagini, video, embeds, ecc.) e pubblicarlo a suo nome.

Dati

In DKAN i dati vengono pubblicati in contenuti chiamati Dataset (esempio). Ogni dataset può essere composto da varie tabelle, che vengono chiamate Risorse (esempio). Dataset e risorse, poi, possono essere aggregati liberamente in collezioni chiamate Gruppi (nel nostro caso rinominati in Temi).

Info: http://docs.getdkan.com/dkan-documentation/dkan-users/what-dataset-what-resource.

Dataset

Sono collezioni di tabelle, caratterizzate da un titolo, una descrizione, una licenza, un elenco di link esterni e una serie di metadati compatibili con il vocabolario standard DCAT del W3C. Questo perché così queste informazioni possono essere pubblicate e usate anche in ambito linked data e semantic web. Il metadato più importante è la licenza, che si applica a tutte le risorse all'interno del dataset.

Esempio: http://www.confiscatibene.it/it/dataset/beni-confiscati-dal-sito-ufficiale-anbsc.

Risorse

I dati veri e propri sono pubblicati come risorse, sotto forma di singole tabelle. Oltre a titolo e descrizione, all'interno di una risorsa è sempre allegato un file contenente i dati. La pubblicazione di una risorsa permette all'utente di scaricare i dati nella forma del file originario (se si tratta di un CSV, si scarica un CSV).

Esempio: http://www.confiscatibene.it/it/dataset/beni-confiscati-dal-sito-ufficiale-anbsc/resource/e5b4d63a-e1e8-40a3-acec-1d351f03ee56.

Datastore

Per abilitare la preview dei dati direttamente in pagina, le funzionalità di filtro e ordinamento, la visualizzazione dei dati mediante grafici e l’accesso mediante API, il semplice file originario non basta. Bisogna importare i dati nel Datastore.

Info: http://docs.getdkan.com/dkan-documentation/dkan-users/managing-datastore.

Le tabelle dei dati si caricano all’interno delle risorse sotto forma di file, tipicamente CSV. Nel Datastore questi dati vengono importati in tabelle MySQL, che quindi sono interrogabili mediante il linguaggio standard SQL tipico dei database relazionali. Importare un CSV in una tabella MySQL non è banale, perché un database relazionale pone molti paletti alla coerenza interna dei dati e al loro formato. È quindi fondamentale che il file originario sia pulito: numeri in notazione anglosassone, date nel formato yyyy-mm-dd, ecc. Il risultato finale e le opportunità che si aprono dopo questa operazione ripagano abbondantemente questo lavoro di pulizia e normalizzazione.

Preview delle risorse

Ciò che l’utente si trova davanti quando accede a una risorsa dipende dai widget che sono stati abilitati in fase di pubblicazione.

  • Grid: la tabella è mostrata direttamente all'utente, che può filtrare le righe, ordinarle e scorrerle pagina dopo pagina, oltre che effettuare ricerche libere.
  • Graph: se i dati lo permettono, l’utente può visualizzarli sotto forma di grafici a linee, colonne, barre, punti, ecc.
  • Map: se sono presenti dati geografici (coordinate puntuali, se si hanno latitudine e longitudine, oppure percorsi e superfici, se presenti in formato geojson), l’utente può visualizzarli e navigarli su una mappa.
  • Embed: l’utente può accedere al codice di embedding della tabella, del grafico o della mappa sotto forma di tag iframe, in modo da includerla in una propria pagina.

La visualizzazione interattiva dei dati è gestita dalla libreria javascript Recline.js, che a sua volta si appoggia a numerose altre librerie open-source specializzate. Se i dati originari contengono delle entità geografiche (come nomi di città), in fase di importazione nel Datastore è possibile attivare la loro geocodifica automatica, mediante servizi esterni come Google od Openstreetmap.

API

Oltre a navigarli direttamente in pagina, l’utente può scaricare il file originario cliccando su un semplice pulsante di download. Ma i dati importati nel Datastore possono essere richiesti anche in formato JSON e usati così direttamente in applicazioni esterne mediante uno speciale indirizzo che contiene opportuni parametri di selezione e aggregazione.

Info: http://docs.getdkan.com/docs/dkan-documentation/dkan-api/datastore-api.

L'URL di base ha questa forma:

  • http://confiscatibene.it/api/action/datastore/search.json?
  • resource_id=[ID-DELLA-RISORSA]
  • &parameter1=value1
  • &parameter2=value2
  • ecc.

L’[ID-DELLA-RISORSA] è il codice alfanumerico che trovate nel link alla pagina della risorsa stessa. Esempio: http://www.confiscatibene.it/it/dataset/beni-confiscati-dal-sito-ufficiale-anbsc/resource/e5b4d63a-e1e8-40a3-acec-1d351f03ee56. Si ottiene anche cliccando sul pulsante Data API presente nella pagina della risorsa.

I parametri supportati e la loro sintassi sono spiegati nella documentazione ufficiale.

La risposta in JSON contiene molte informazioni sui dati richiesti e i dati stessi. Questi ultimi sono accessibili sotto forma di array di oggetti nella variabile result[“records”].

Esempio: http://www.confiscatibene.it/it/api/action/datastore/search.json?resource_id=e5b4d63a-e1e8-40a3-acec-1d351f03ee56&limit=5.

In questo modo è costruita la mappa tematica di regioni, province e comuni italiani: al caricamento della pagina la mappa interroga i dataset del sito e li usa per colorare opportunamente i territori. Scelto poi un territorio mediante un click, l'utente può scaricare l'elenco dei beni presenti su quel determinato territorio inviando una richiesta come l'esempio precedente, ma con filtro.

Esempio: http://www.confiscatibene.it/it/api/action/datastore/search.json?resource_id=e5b4d63a-e1e8-40a3-acec-1d351f03ee56&filters[Regione]=Piemonte&limit=5000.

Le opzioni disponibili sono numerose: oltre al filtro (filters), si possono richiedere solo alcune colonne in un determinato ordine (fields), si possono ordinare i risultati (sort), fare una ricerca libera su una specifica colonna (q). È anche possibile fare un'interrogazione sull'unione di più tabelle (join). Queste opzioni e la loro sintassi sono compatibili con quelle di CKAN, permettendo così ai due sistemi di parlarsi tra loro.