Il feed RSS migliore di sempre

Quello per sapere quando un dataset ISTAT viene aggiornato

Andrea Borruso
5 min readJan 26, 2018

Originally published at blog.ondata.it.

L’Istituto nazionale di statistica è forse la fonte più seguita da chi usa i dati per comprendere, rappresentare, analizzare e monitorare il nostro paese. Tra questi, ricercatori, giornalisti, sviluppatori, aziende, decisori, liberi professionisti, cittadini, ecc..

Sarebbe di grande comodità e utilità avere un sistema “per tutti” per essere informati tutte le volte che c’è un aggiornamento sul catalogo dei dati dell’istituto, in particolare sul cosiddetto data warehouse I.Stat.

Visto che non c’è, abbiamo creato un feed RSSdisponibile per il riuso secondo questa licenza aperta — che consente di farlo: http://feeds.feedburner.com/istatdataset

Una premessa sui web service di ISTAT

L’ISTAT pubblica i propri dati (anche) tramite web service SDMX (Statistical Data and Metadata eXchange). È un servizio interrogabile che restituisce in output delle strutture XML, secondo il formato omonimo (è uno standard ISO).

È attivo da diversi anni e l’homepage è http://www.istat.it/it/strumenti/web-service.
Sono disponibili una pagina di FAQ e una di tool. In quest’ultima un plug-in Excel (per selezionare i dataset di interesse, effettuare query e salvare il risultato) e alcuni esempi di codice sorgente di un client web per accedere al data warehouse e interrgarlo, sviluppati nei linguaggi VB .NET, C#, PHP e Java.

E sopratutto c’è la pagina che da conto degli aggiornamenti dei dataset avvenuti negli ultimi cinque giorni.

Ma questa non è pienamente utile ai tanti portatori di interesse, perché non offre un modo “per tutti” per ricevere un avviso automatico per ogni aggiornamento.

Analizzandola con gli strumenti di sviluppo presenti nei browser abbiamo riscontrato l’accesso a una risorsa con un nome interessante: rsssep.php (vedi sotto). L’abbiamo aperta (https://www.istat.it/js/rsssep.php) e ci sembrava proprio il feed RSS che cercavamo.

Ci sono due elementi però da sottolineare. Il primo è che questo feed RSS è “nascosto”.
Il secondo è che, se anche non fosse così e fosse ben visibile, contiene informazioni utilizzabili soltanto da “specialisti” e sopratutto manca il <link>.

Qui sotto un esempio, in cui si vede come ci sia il titolo (<title>, informazione preziosa) e la data di pubblicazione (<pubDate>), ma non c’è un link, un URL, che consenta un accesso diretto all’elemento (nel caso di sotto agli “Indici dei costi di costruzione – dati mensili”).

<item>
<title>Indici dei costi di costruzione - dati mensili</title>
<pubDate>2018-01-18T10:12:40 AM</pubDate>
<guid>145_361</guid>
<content:encoded>
<![CDATA[
<?xml version="1.0" encoding="iso-8859-1"?><QueryMessage
xmlns="http://www.SDMX.org/resources/SDMXML/schemas/v2_0/message"
xmlns:query="http://www.SDMX.org/resources/SDMXML/schemas/v2_0/query"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:schemaLocation="http://www.SDMX.org/resources/SDMXML/schemas/v2_0/message SDMXMessage.xsd"><Header><ID>145_361</ID><Test>false</Test><Name xml:lang="en">Indici dei costi di costruzione - dati mensili</Name><Prepared>2018-01-20</Prepared><Sender id="IT1" /><Receiver id="4D0" /></Header><Query><query:DataWhere><query:And><query:Time><query:StartTime>2017</query:StartTime><query:EndTime>2017</query:EndTime></query:Time><query:Dataflow>145_361</query:Dataflow></query:And></query:DataWhere></Query></QueryMessage>]]>
</content:encoded>
</item>

L’accesso tramite API

Ai dati del warehouse di ISTAT si può accedere anche tramite API. Ce l’ha ben descritto Vincenzo Patruno (che lavora a ISTAT) in questo post (leggetelo è interessante e utile).
Averlo tra i soci di onData, ci ha consentito di fargli più agilmente qualche domanda su queste API (le ha fra l’altro sviluppate lui).

Gli abbiamo chiesto se ci fosse una qualche query diretta che esponesse come risultato proprio l’elenco dei dataset aggiornati. Non c’è, ma c’è un comodo endpoint (per chi sa “maneggiare” un file JSON) con l’elenco di tutte le risorse esposte, un vero e proprio catalogo di dati: http://apistat.istat.it/?q=getdslistdatagov.

In questo le informazioni su un dataset contengono elementi utili a una platea molto più larga. Sotto l’esempio sempre di Indici dei costi di costruzione - dati mensili in cui appare la proprietà landingPage, che è proprio il link, l’URL, per puntare direttamente alla pagina della risorsa nel data warehouse. Potete provare con:
http://dati.istat.it/Index.aspx?DataSetCode=DCSC_FABBRESID_1&Lang=it

{
"accesslevel": "public",
"landingPage": "http://dati.istat.it/Index.aspx?DataSetCode=DCSC_FABBRESID_1&Lang=it",
"issued": "",
"@type": "dcat:Dataset",
"modified": "",
"keyword": [],
"contactPoint": {
"@type": "vcard:Contact",
"fn": "<Nobody>",
"hasEmail": ""
},
"publisher": {
"@type": "org:Organization",
"Name": "Istat"
},
"identifier": "http://dati.istat.it/Index.aspx?DataSetCode=DCSC_FABBRESID_1&Lang=it",
"description": "",
"title": "Indici dei costi di costruzione - dati mensili ",
"distribution": [
{
"@type": "dcat:Distribution",
"downloadURL": "http://dati.istat.it/Index.aspx?DataSetCode=DCSC_FABBRESID_1&Lang=it",
"mediaType": "text/html"
}
],
"licence": "CC-BY 4.0",
"theme": [
"Prezzi"
]
}

NOTA IMPORTANTE: questo elenco, questo catalogo, è in un formato che potrebbe essere usato per l’indicizzazione nel portale nazionale italiano sui dati aperti. Non sarebbe male che AgID lo indicizzasse, sottoponendolo ad harvesting.

Riepilogando:

  • il web service SDMX consente di avere l’elenco sugli ultimi aggiornamenti, ma non da la possibilità di risalire facilmente alla risorsa aggiornata;
  • il catalogo delle risorse esposto via API contiene l’URL per risalire alla pagina della risorsa.

Abbiamo pensato allora di “mescolare” queste informazioni e produrre il feed RSS migliore di sempre 🤣.

È stato costruito con uno script bash che:

  • scarica i dati contenuti nel feed RSS esposto via web service SDMX;
  • da questi estrae titoli e date degli elementi pubblicati;
  • scarica il catalogo dati esposto via API;
  • da questo estrae titoli e identificatore del dataset (nel caso di sopra è DCSC_FABBRESID_1)
  • fa il JOIN via “titolo” e crea un unica risorsa che contiene titolo, URL della pagina del dataset e data di pubblicazione;
  • sfrutta questa risorsa per creare il feed RSS.

Gli strumenti utilizzati sono cURL (per l’accesso alle risorse web), jq (per elaborare i dati JSON), csvkit (per l’elaborazione di alcuni file creati nello script) e XMLStarlet (per creare il feed RSS).

L’URL del feed è: http://feeds.feedburner.com/istatdataset

È pubblicato in con Licenza Creative Commons Attribuzione — Condividi allo stesso modo 4.0. Citateci 🖖

Cosa c’è nel feed

L’output di base è quello sottostante. Al titolo, al link, e alla data di pubblicazione sono stati aggiunti alcuni elementi aggiuntivi:

  • a livello di <channel>, in <docs>, l’URL del post di Vincenzo. Non è una vera e propria documentazione della struttura del feed, ma è la cosa che al momento gli si avvicina di più;
  • a livello di <item>
  • l’identifier di ogni dataset;
  • una <description> con l’endpoint che consente di identificare le “dimensioni” che compongono ciascun dataset.
<?xml version="1.0" encoding="utf-8"?>
<rss
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" version="2.0">
<channel>
<language>it</language>
<title>ISTAT - Aggiornamento dataset del data warehouse I.Stat | Non ufficiale</title>
<description>Un RSS costruito a partire dai web service SDMX e dalle API di ISTAT</description>
<link>http://dev.ondata.it/projs/istatDataRSS/feed.xml</link>
<atom:link rel="self" href="http://dev.ondata.it/projs/istatDataRSS/feed.xml" type="application/rss+xml"/>
<docs>https://medium.com/@vincpatruno/come-accedere-ai-dati-statistici-pubblicati-dallistituto-nazionale-di-statistica-istat-ca874316f5a9</docs>
<creativeCommons:license>http://creativecommons.org/licenses/by-sa/4.0/</creativeCommons:license>
<item>
<title>Indici dei costi di costruzione - dati mensili</title>
<link>http://dati.istat.it/Index.aspx?DataSetCode=DCSC_FABBRESID_1&amp;Lang=it</link>
<pubDate>Thu, 18 Jan 2018 10:12:40 +0100</pubDate>
<description>DATA URI: http://apistat.istat.it/?q=getdim&amp;dataset=DCSC_FABBRESID_1&amp;lang=0</description>
<guid>http://dati.istat.it/Index.aspx?DataSetCode=DCSC_FABBRESID_1&amp;Lang=it</guid>
<category domain="http://apistat.istat.it/specs#identifier">DCSC_FABBRESID_1</category>
</item>
</channel>
</rss>

L’identifier è prezioso per interrogare le API (c’è da leggere il post). Nell’esempio di sopra è DCSC_FABBRESID_1.

Per avere le dimensioni di questo:
http://apistat.istat.it/?q=getdim&dataset=DCSC_FABBRESID_1&lang=0

Qui le dimensioni sono “Territorio”, “Tipo di indicatore”, “Correzione”, “Gruppo e categoria di costo” e “Seleziona periodo” (qui un esempio di output con estrazione delle dimesioni).

Come usare il feed RSS

I feed RSS sono basati su uno vecchio e buon standard, quindi esistono centinaia di modalità per leggerli, adatti a qualsiasi tipo di utente.
Vi potrete “iscrivere” con un lettore dedicato, attivare delle notifiche automatiche via email magari filtrate su una parola chiave (con strumenti come IFTTT), scrivere del codice per produrre nuovi output, ecc..

Nota finale “personale”

Lo stimolo che ci ha portato alla scoperta e all’approfondimento di queste risorse nasce da questo messaggio di Alice Corona e da questo stimolo di Andria Tzedda. Ringraziamo entrambi 🙏

--

--

Andrea Borruso

#data #maps #GIS #baci #condivisione. Orgoglioso di essere presidente di @ondatait