OpenARS: una prima esplorazione dei dati

A meno di un mese da Open Data Sicilia 2018, che si terrà a Palermo il 9 e 10 novembre, entriamo adesso più nel vivo nel progetto OpenARS, i linked data dell’Assemblea Regionale Siciliana (ARS), che verrà presentato nel corso dell’evento.
Nell’ultimo post ci eravamo lasciati con la presentazione dell’ontologia OpenARS, creata per descrivere in modo formale le diverse tipologie di dati dell’ARS e le loro interconnessioni.
L’ontologia sviluppata consente di dare ad ogni risorsa un significato e di trasformare i dati dell’ARS in un enorme grafo direttamente interrogabile, esplorabile e riutilizzabile in altri contesti.
Ma come li interroghiamo i dati?
Per farlo è necessario introdurre il linguaggio principe usato nel Web Semantico per le interrogazioni, cioè il linguaggio SPARQL.
Il linguaggio SPARQL è una raccomandazione W3C che definisce in modo standard come interrogare i dati, a partire da grafi RDF distribuiti nel Web. Il criterio di interrogazione è basato su un meccanismo di pattern matching, nello specifico dal costrutto triple pattern, che riflette il modello di asserzioni RDF delle triple e fornisce un modello flessibile per le ricerche.
Lo schema generico di un’interrogazione SPARQL è il seguente:

dove
  • PREFIX è la clausola che definisce prefissi e namespace, comoda per abbreviare le URI;
  • SELECT è la clausola che definisce le informazioni che vogliamo estrarre dal repository;
  • FROM è la clausola che definisce il grafo (o i grafi) da esplorare. Può essere sia locale sia remoto. Possiamo anche inserire clausole come FROM NAMED e GRAPH per specificare sorgenti dati multipli;
  • WHERE è la clausola che definisce il pattern del grafo che intendiamo cercare nel dataset; rappresenta la parte più importante della query;
  • ORDER BY è la clausola che mi consente di ordinare i risultati della ricerca.
Immaginiamo di avere un dataset contenente un insieme di libri (risorse) descritti da una specifica ontologia nel file book.rdf, pubblicato nel Web secondo i principi dei Linked Data. Immaginiamo di identificare il dataset nel Web col seguente URL:
http://example.org/books.rdf .
Il nostro obiettivo è conoscere tutti i libri presenti del dataset con i relativi autori; per fare questo dobbiamo estrarre tutte le risorse di tipo libro (?book) e tutte le persone (?person) che sono autori (ex:hasAuthor) dei libri. Dei libri vogliamo conoscere i titoli (?book_title) e i nomi e cognomi degli autori (?person_name, ?person_surname).
La query di interrogazione sarà la seguente:

e questo un ipotetico risultato
Passiamo adesso ad OpenARS e proviamo ad effettuare un’interrogazione reale direttamente sul suo repository. A differenza del file pubblicato nell’esempio precedente i dati di OpenARS sono caricati su un server di storage dedicato che contiene l’intera base di conoscenza nella forma di triple/asserzioni . Per poter effettuare delle interrogazioni sui dati  è necessario conoscere l’URL punto di ingresso, conosciuto con il nome di SPARQL endpoint.
E’ possibile effettuare l’interrogazione direttamente dal client Web fornito dal triple store, come nella figura sottostante oppure è possibile eseguire query SPARQL da codice sorgente di un qualsiasi linguaggio di programmazione se si vogliono sviluppare applicazioni che interagiscono con i dati.
Prima di effettuare qualsiasi tipo di ricerca è fondamentale conoscere l’ontologia di riferimento al fine di poter interrogare correttamente i dati per tipologie di classi e per connessioni esistenti tra le risorse.
Facciamo adesso qualche esempio di interrogazione relativa a statistiche sull’attività legislativa dell’ARS. Per esempio, vogliamo sapere quanti disegni di legge sono stati presentati nel corso della 16° legislatura.
La query SPARQL è la seguente:

che restituirà come risultato il valore 1346.  Provare per credere.
La query assomiglia molto al linguaggio SQL e risulta di per sé molto leggibile. Nel campo WHERE selezioniamo tutte le risorse dello store di tipo ars:DisegnoDiLegge che sono collegate, tramite la proprietà ars:legislatura, alla risorsa che identifica la sedicesima legislatura ( http://dati.openars.org/legislatura/xvi ).
La selezione restituisce un certo numero di istanze e nel campo SELECT decidiamo di calcolare il numero totale di tali istanze, tramite l’operatore di aggregazione count, che corrisponde al numero totale di disegni di legge della 16° legislatura.
Vediamo adesso qualcosa un pò più complesso.
Voglio sapere la classifica top ten  dei disegni di legge presentati nella 16° legislatura suddivisa per materia. 
La query SPARQL è la seguente:

Questo il risultato:

Alcune considerazioni finali:
  • questi sono solo piccoli esempi che si possono fare con i dati ARS, nel prossimo post presenteremo casi molto più complessi che prenderanno in considerazione interrogazioni a sorgenti dati multipli;
  • passando dal Web di documenti al Web di dati (linked-data), il Web diventa machine-understandable e il tutto risulta esponenzialmente vantaggioso in termini di flessibilità e di interoperabilità semantica;
  • con la pubblicazione dei dati in modalità linked il Web diventa data-centric e le possibili interrogazioni dei dati, grazie alle loro interconnessioni, sia dentro che fuori al dataset, diventano pressoché infinite e delle più disparate;
  • non ci credete? provate a reperire nel Web tradizionale i nomi di TUTTI i sindaci le cui città hanno lo stesso patrono della città collegio di elezione di un qualsiasi deputato dell’ARS

    Nel prossimo post vedremo quanto sarà facile farlo con OpenARS.

Alcuni link per approfondire il linguaggio SPARQL
p.s. le iscrizioni al raduno sono ancora aperte. I posti sono gratuiti ma limitati. Per maggiori informazioni questo è il sito dell’evento.
Alla prossima

Alla scoperta di OpenARS – i Linked Data dell’Assemblea Regionale Siciliana

Come già anticipato nel precedente post, al raduno Open Data Sicilia 2018 verrà presentato il progetto OpenARS – i linked datadell’Assemblea Regionale Siciliana. Il progetto OpenARS ha l’obiettivo di pubblicare il patrimonio informativo dell’ARS in un modo completamente nuovo, abbracciando il mondo dei Linked Data, sfruttando le potenzialità del Web Semantico, consentendo la fruizione dei dati dell’ARS in modo flessibile e dinamico.

Vediamo adesso qualche dettaglio in più sul progetto.

Come primo passo sono stati estratti i dati dell’ARS dal sito istituzionale www.ars.sicilia.it attraverso appositi programmi, chiamati scraper, in grado di “grattare il testo dalle pagine Web e di salvare il contenuto in maniera strutturata, cioè individuando per ogni dato estratto la tipologia di appartenenza. Attraverso questi tool sono state estratte informazioni relative a tutte le legislature su deputati, assessori, incarichi e gruppi parlamentari mentre è stata estratta, invece, tutta l’attività parlamentare della 16° legislatura relativa ai disegni di legge, alle risoluzioni, alle interpellanze, alle interrogazioni, agli ordini del giorno, agli iter legislativi e alle sedute.

Applicare i principi Linked Data vuol dire passare da un Web di documenti a un Web di dati. Nel Web semantico non ci sono più documenti ma dati o risorse. Ogni dato è indipendente, collegato agli altri dati e definito formalmente da un’ontologia.
Per i dati ARS è stata sviluppata infatti un’apposita ontologia, chiamata OpenARS, in grado di descrivere in modo formale, sfruttando le potenzialità del Web semantico, le diverse tipologie di dati dell’Assemblea Regionale Siciliana e le interconnessioni che intercorrono tra gli stessi.

L’ontologia ha consentito di dare ad ogni risorsa un significato e di trasformare i dati dell’ARS in un enorme grafo direttamente interrogabile, esplorabile, riutilizzabile in altri contesti, in modo da arricchire il valore dei dati presenti sul sito ARS, abilitare e facilitare l’analisi dati, creare nuova conoscenza dai dati.

Questo è stato reso possibile applicando i principi dei Linked Data che prevedono la definizione univoca di ogni risorsa sul Web, la descrizione di ciascuna risorsa e l’interconnessione delle risorse con altri dataset, apportando così un importante contributo al progetto  LOD – Linked Open Data.

Con OpenARS sono state raggiunte le “5 stelle” di Tim Berners-Lee, cioè il livello più alto nella classificazione degli Open Data in termini di apertura e fruibilità.

 

Nei prossimi post vedremo più nel concreto cosa sono i LOD e come interrogare direttamente  i dati di OpenARS, esploreremo il grafo dei dati per capire come sia possibile iniziare a sviluppare applicazioni, report, ricerche, monitoraggi e statistiche.

Non dimenticatevi di iscrivervi al raduno Open Data Sicilia 2018. L’ingresso è gratuito ma i posti sono limitati.

OpenARS – i Linked Data dell’Assemblea Regionale Siciliana

All’interno del raduno di Open Data Sicilia 2018, che si terrà a Palermo giorno 9-10 novembre, verrà presentato ufficialmente il progetto OpenARS – i Linked Data dell’ARS – ed è per noi motivo di orgoglio presentare il progetto proprio nella sede istituzionale in cui l’attività legislativa del Parlamento siciliano produce questi dati.

Il progetto OpenARS ha l’obiettivo di pubblicare il patrimonio informativo dell’Assemblea Regionale Siciliana in un modo completamente nuovo. Il progetto abbraccia il mondo dei Linked Data e, sfruttando le potenzialità del Web Semantico, consente la fruizione dei dati dell’ARS in modo flessibile e dinamico.

I dati aperti sono lo strumento abilitante per eccellenza per tutte quelle iniziative relative al monitoraggio, alla trasparenza, alla partecipazione civica e all’ open-government in generale.

Con OpenARS raggiungiamo il livello più alto nella classificazione degli Open Data in termini di apertura e fruibilità e mostreremo perché gli open data sono così importanti, soprattutto in un settore chiave come quello legislativo.

Volete sapere il trend delle quote rosa nell’ARS in tutte le legislature? Confrontarlo con quello nazionale? Volete sapere il numero dei disegni di legge di una particolare legislatura relativi ad una particole materia? Volete sapere solo i ddl presentati dai deputati eletti in un particolare collegio? Volete conoscere l’iter parlamentare di un particolare disegno di legge?

Grazie ad OpenARS tutto ciò è possibile.

E allora che aspetti? Prenota subito un posto (numero limitati) al raduno Open Data Sicilia 2018. Il primo giorno verrà presentato il progetto, come è stato ideato e come è stato sviluppato. Verranno mostrati diversi casi d’uso e applicazioni funzionanti che fanno uso dei dati linked dell’ARS e ne mostrano tutto il potenziale grazie alla loro fruibilità aperta e standard.

Il secondo giorno ci sporcheremo le mani insieme, infatti saranno allestiti dei tavoli di lavoro in cui verranno organizzati dei workshop per le seguenti attività:

  • migliorare la qualità dei dati esistenti in OpenARS;
  • sviluppare applicazioni con i dati linked;
  • scrivere articoli giornalistici a partire dai dati dell’Assemblea;
  • creare visualizzazioni, mashup, dashboard dei dati di OpenARS

Se sei studente, ricercatore, giornalista, azienda o semplice appassionato di opendata, di trasparenza, di monitoraggio e di open-government in generale, che aspetti?
Corri
a prenotare un posto al raduno Open Data Sicilia 2018.

Sull’organizzazione del raduno di Open Data Sicilia 2018

Ogni anno Open Data Sicilia organizza due eventi sul territorio siciliano, uno in estate e uno in inverno, nei quali vengono coordinate giornate di confronto, incontri formativi e workshop ad accesso gratuito, gruppi di lavoro e di sviluppo progettuale per lavorare sugli open data.

Quest’anno la scelta della location del raduno è stata fortemente influenzata dall’intenzione di voler organizzare al Palazzo dei Normanni di Palermo, sia il raduno classico Open Data Sicilia, sia l’OpenARS Hackathon, cioè un’iniziativa di civic hacking collaborativa che ha come obiettivo quello di promuovere il riuso, da parte della comunità degli sviluppatori, giornalisti, studenti, etc, dei dati dell’Assemblea Regionale Siciliana, relativi alla istituzione e all’attività parlamentare.

Analogamente a quanto fatto nell’Hackathon code4italy sui dati aperti della Camera, organizzato a Montecitorio nel 2014, l’obiettivo dell’iniziativa OpenARS Hackathon è aumentare la conoscenza dei dati aperti parlamentari siciliani, mostrare a una platea ampia perché gli open data sono così importanti, soprattutto in un settore chiave come quello legislativo.

I dati aperti, infatti, sono lo strumento abilitante per eccellenza, per tutte quelle iniziative relative al monitoraggio, alla trasparenza, alla partecipazione civica e all’ open-government in generale.

Per poter instaurare un confronto con l’ARS abbiamo inviato giorno 30/05/2018 questo testo al presidente dell’Assemblea Regionale Siciliana, on. Gianfranco Miccichè e a tutto il consiglio di Presidenza.

Siamo stati contattati dall’on. Giancarlo Cancelleri prima e dall’on. Claudia La Rocca dopo e, dopo una fase interlocutoria, abbiamo concordato un primo incontro all’ARS giorno 27 giugno 2018.

E’ un primo passo importante perché pensiamo che l’ARS sia la giusta sede per la diffusione di un progetto che riteniamo di estrema importanza per la collettività.

FoiaPop.it…e adesso…chiediamo(li) tutti

Succede tutto in 6 mesi, da inizio Gennaio 2017.
Ci eravamo appena lasciati, rinforzati nell’entusiasmo dal raduno estivo di Castelbuono.

Decidiamo (Giuseppe Ragusa e Giovanni Pirrotta) di darci presto un appuntamento “virtuale” perché avevamo l’impressione che su alcuni dati si potesse lavorare insieme per produrre qualcosa di utile, ma entrambi non avevamo in alcun modo un’idea precisa.

Avevamo solo, con modalità e con obiettivi diversi, approfondito gli stessi temi e cioè: l’Indice delle Pubbliche Amministrazioni (IPA), i dati sui contratti pubblici dell’Autorità Nazionale Anticorruzione (ANAC), il Sistema Informativo delle operazioni degli enti pubblici (SIOPE).

Partiamo:

  • Uno scambio di idee (confuse);
  • Non demordiamo perché qualcosa ci dice che siamo sulla strada giusta;
  • Dobbiamo dimenticarci di “noi” piccoli e diventare per un po’ un grande “NOI”. Dobbiamo cioè ripartire dai bisogni del cittadino. Sta lì la risposta che cerchiamo.

Abbiamo deciso di “ascoltare” il più possibile. Giorni di “ascolto” ci fanno comprendere che:

  • Il diritto di accesso civico, sia semplice che generalizzato (FOIA), è per molti cittadini uno sconosciuto;
  • Chi ne conosce l’esistenza ha difficoltà a porre domande fondate e non opponibili dalla PA. Ci sarebbe bisogno di “dati da cui partire”;
  • Gli “eventi/manifestazioni/azioni amministrative” più importanti e che destano maggiore interesse all’interno di una PA sono quelle su cui ruotano i flussi monetari e cioè i pagamenti, gli incassi, gli appalti, etc. E, guarda caso, ci sono già disponibili dei dati aperti.

Ora le idee sono molto più chiare. Ma non è che siamo davvero sulla strada giusta?

Si inizia a mettere nero su bianco e mettiamo gli “open data” a sistema. Gli open data, uno strumento chiave di volta per aprire uno scrigno impolverato e incompreso sotto gli occhi di tutti. Un approccio nuovo, diverso, creativo, in grado di far emergere un potenziale finora inesplorato, di conciliare semplicità e facilità di utilizzo, per essere alla portata di tutti e fruibile senza libretto di istruzioni.

Nasce FoiaPop.it, il portale degli accessi civici data-driven (cioè guidato dall’uso dei dati). Una guida passo-passo alla compilazione online degli accessi civici semplici e generalizzati a partire dai flussi monetari delle Pubbliche Amministrazioni, dai contratti pubblici e dagli obblighi di pubblicazione imposti dal D. Lgs 33/2013.

Gli open data che ci “guidano” sono attualmente:

Con FoiaPop non dovrai fare altro che selezionare una pubblica amministrazione, visualizzarne i pagamenti, gli incassi e/o gli appalti, esplorare il patrimonio informativo fornito dagli open data, generare il documento/richiesta di accesso civico per chiedere un dettaglio, un approfondimento, una spiegazione, o dei dati, quindi firmare e inviare la richiesta alla pubblica amministrazione, anche via email o via Posta Elettronica Certificata.

Il nostro augurio è che FoiaPop.it possa realmente contribuire a diffondere in modo capillare la conoscenza e l’esercizio del diritto di accesso civico ai dati, ai documenti e alle informazioni delle Pubbliche Amministrazioni.

Su coraggio. Si può fare! 
Chiediamo(li) tutti!

Trasporti AMAT di Palermo? C’è un Telegram per Te!

Post pubblicato originariamente su giovanni.pirrotta.it.

In questi ultimi tempi in rete si fa un gran parlare di BOT (abbreviazione di robot), ovvero quei programmi che fanno credere all’utente di parlare con una persona reale ma che di fatto sono risponditori automatici utili per fornire servizi vari come ad esempio il meteo, news, quiz, sondaggi, giochi, etc.

Il motivo di tutto questo proliferare di BOT è dovuto principalmente all’apertura di Telegram, nella sua versione 3, al mondo degli sviluppatori. Attraverso l’utilizzo di API ufficiali, infatti, è ora possibile creare, gestire e interagire con programmi BOT, personalizzandoli secondo le proprie esigenze.

Ho sempre visto un alto potenziale nell’uso di questo tipo di applicazioni e la scelta di Telegram potrebbe rivelarsi particolarmente azzeccata in questo senso.

Esattamente due anni fa anch’io ho iniziato a interessarmi di BOT, ad immaginarmi il mio smartphone come un telecomando da pigiare per ottenere specifici servizi: informazioni sui programmi televisivi, previsioni meteo, eventi serali della mia città, orari di apertura degli uffici pubblici, etc. Ho sviluppato quindi un BOT su Twitter grazie al quale, con un semplice tweet e una microgrammatica, riuscivo ad inviare richieste ad un’applicazione per ottenere informazioni sui programmi televisivi della serata. Descrivo nel dettaglio l’implementazione del progetto, che si chiama per l’appunto cosaceintv, in questo post; il sito del progetto è cosaceintv.it.

Tuttavia Twitter non consente di creare BOT in modo nativo per cui, per raggiungere lo scopo, sono dovuto scendere a compromessi, chiamateli workaround.

Vero è che l’app non è diffusa come WhatsApp, l’attuale killer application nel settore dell’instant messaging, (molti si aspettavano dei segnali di apertura API da WhatsApp in occasione dell’ultima conferenza F8 di Facebook, ma invece nisba) ma è anche vero che Telegram sta guadagnando sempre più terreno grazie soprattutto a scelte aziendali che si stanno rivelando strategicamente vincenti, come ad esempio

  • il rilascio del sorgente in opensource,
  • l’alta attenzione nei confronti della sicurezza e della privacy degli utenti,
  • la possibilità di creare chat segrete e autodistruggenti dopo un tempo prestabilito,
  • un design pulito e gradevole,
  • la totale gratuita,
  • l’assenza di pubblicità
  • ed infine, non meno importante, l’ultima feature aggiunta cioè la possibilità di creare BOT per la gestione di servizi personalizzati e l’interazione in modo programmatico attraverso API.

Più che una semplice app di messaggistica Telegram è di fatto una vera e propria piattaforma e in rete si trovano già applicazioni BOT di qualsiasi tipo; le più popolari si possono trovare al seguente link.

Ma anche in Italia cominciano a vedersi progetti interessanti.

A Prato Matteo Tempestini ha sviluppato il BOT Emergenze Prato per essere aggiornati in tempo reale su condizioni meteo, possibili allerte e segnalazioni. A Lecce, utilizzando gli opendata del comune e non solo, Pier Paolo Paolicelli (piersoft) ha sviluppato OpenDataLecceBot con il quale è possibile ottenere informazioni su meteo, temperatura, qualità dell’aria, orari delle scuole, tariffe aree ZTL, eventi culturali, etc. Il servizio trasporti bus TPER fornisce informazioni aggiornate sui bus di Bologna usando i servizi informativi e gli opendata. (tperbot.)

Incuriosito quindi da tutto questo fermento mi è venuta voglia di rimettermi in gioco anch’io con i BOT e smanettare un pò con questa piattaforma. Ho accolto, quindi, il suggerimento di piersoft  che consigliava di replicare il servizio offerto dalla TPER di Bologna sui trasporti anche per la città di Palermo, dato che i dati sui trasporti palermitani sono rilasciati dall’ azienda AMAT in formato GTFS con licenza OpenData.

La specifica GTFS (General Transit Feed Specification) è stata sviluppata da Google e definisce un formato comune per rappresentare informazioni orarie di un sistema di trasporti (bus, metro, treno, etc) associandole ad informazioni geografiche.

La specifica struttura i dati organizzandoli in un insieme di file CSV.

I più importanti sono i seguenti:

  • agency – informazioni inerenti l’azienda che gestisce i trasporti;
  • routes – informazioni sulle linee dei trasporti;
  • trips – informazioni inerenti le corse per ciascuna linea;
  • stops – le fermate geolocalizzate;
  • stop_times – l’orario di arrivo e partenza e la sequenza per ogni corsa in ciascuna fermata;
  • calendar – periodo del servizio trasporti su base settimanale;
  • calendar_dates – date in cui vi sono delle eccezioni rispetto a quanto descritto incalendar (ad. es. feste)

Per la specifica completa si rimanda alla pagina ufficiale GTFS

Quindi mettiamoci al lavoro e scarichiamo i dati dal sito AMAT di Palermo.

Per prima cosa scarico il file zippato GTFS dalla pagina OpenData del Comune di Palermo.

Decido di caricare tutti i file CSV all’interno di un dabatase Mysql, per cui inizio a cercare in rete degli statement DDL in modo da risparmiarmi il creare tutto a manina. Uno potrebbe pensare che, essendo GTFS un formato ben definito, uno schema DDL vale l’altro.

Errore!!!

Quelli che seguono sono alcuni consigli che vi potrebbero farvi risparmiare tempo e mal di testa quando decidete di creare uno schema GTFS trovato in rete.

REGOLE D’ORO

  1. Analizzare sempre e bene la qualità dei dati da importare prima di importarli
  2. GOTO 1 ;–)

La maggior parte dei campi id degli schemi che ho trovano in rete è in formato intero mentre nella maggior parte dei record dei dati GTFS AMAT il campo idcontiene anche valori alfanumerici, ergo trasformate tutti gli id da int a varchar.

Per importare i dati automaticamente ho usato uno script in python scaricato da github. Trovate un fork sul mio repository github in quanto lo script conteneva un bug relativo al caricamento di codici alfanumerici contenenti il carattere E. Lo script erroneamente parsava i codici contenenti il carattere E come formato esadecimale considerandoli interi invece di stringa. Trovate la versione fixata nel mio repo.

A questo punto iniziamo a scrivere un pò di codice. La documentazione di riferimento per creare BOT con Telegram è fatta benissimo e la trovate al seguente link. Per lo sviluppo del codice ho usato questa libreria PHP a sua volta descritta in modo molto chiaro qui. La libreria è stata sviluppata per il framework PHP Laravel ma può essere utilizzata anche in modalità standalone.

La prima cosa da fare è creare il bot. Per fare questo bisogna aggiungere sul proprio client Telegram l’utente @BotFather e inviargli il seguente comando /newbot. Dopo aver risposto ad alcune domande, ad esempio nome ed username del BOT, viene generato un TOKEN che rappresenta il ponte di collegamento tra il nostro software e Telegram. Per maggiori dettagli sulla creazione dei bot fate riferimento alla documentazione ufficiale.

Per poter interagire con Telegram scriviamo quindi:

Nella response troveremo informazioni sul bot creato. Per poter inviare messaggi all’utente bisognerà indicare, oltre al messaggio, anche l’ID della chat in modo che solo l’utente che ha fatto la richiesta possa ricevere il messaggio di ritorno.

Oltre a messaggi di testo il nostro BOT può rispondere anche con immagini, audio, video, allegati, etc.:

Ma come fa l’utente a chiedere le informazioni al BOT? Inviando dei comandi.

Per creare un comando, usando la libreria PHP, è necessario estendere la classe Command e implementare il metodo handle. Creare un comando è un’operazione veramente banale, è infatti necessario inizializzare semplicemente la variabile namecon il nome del comando che si vuole creare. Nell’esempio si sta creando il comando /start.

Nell’esempio che segue, digitando da Telegram il comando /start il BOT risponderà con Hello World!

 

Non mi soffermerò oltre su questa libreria perchè, come già detto, è presente una documentazione completa ed esaustiva.

Vediamo adesso le feature più importanti che dovrà avere il nostro BOT. Verranno descritte le più importanti scelte adottate per la logica applicativa. Si tratta essenzialmente di recuperare informazioni dal database e di formattare l’output, ci soffermeremo quindi solo sulle query SQL più importanti.

La prima versione di amatPABot, questo il nome del BOT, implementa due funzionalità:

  • Orario Linee
  • Fermata più vicina

Orario Linee

Le informazioni sono tutte presenti nel db per cui all’interno del metodo handleviene gestita la logica per estrarre le informazioni relative alle linee AMAT di Palermo.

La query SQL utilizzata per mostrare le linee:

 

 

A questo punto viene mostrato l’elenco delle linee AMAT. L’utente può scegliere la linea di cui vuole sapere gli orari. Una volta scelta la linea un nuovo comando recupererà il nome delle fermate della linea (Andata e ritorno) e gli orari relativi.

Per recuperare gli orari delle corse uso la seguente query SQL, passandogli l’id della linea e l’id del servizio, cioè del periodo di riferimento nel calendario.

A questo punto l’output ottenuto è il seguente:

Passiamo adesso all’altra funzionalità.

Fermata più vicina

Per ottenere informazioni sulla fermata più vicina dobbiamo per prima cosa cliccare sulla graffetta e inviare la nostra posizione geografica

Fatto ciò un comando calcolerà le 5 fermate più vicine recuperandole dalla tabellastops eseguendo la seguente query:

Il valore 6371 è la lunghezza del raggio della terra. La formula utilizzata calcola la distanza in KM tra due punti espressi in latitudine e longitudine. Per maggiori informazioni fate riferimento qui e qui.

Per ogni fermata recupero anche il nome delle linee passanti.

 

Vengono mostrate a video le 5 fermate più vicine con le relative linee passanti. La prima fermata viene visualizzata su una mappa (si lo so, è Google Maps e non OpenStreetMap; nativamente Telegram usa le mappe di Google per inviare al client le posizioni geografiche; per usare OSM si potrebbero, ad esempio, creare al volo immagini statiche e inviarle all’utente per la posizione delle fermate).

Per il deploy del BOT ho usato Cloudflare per avere una connessione SSL, condizione necessaria per poter utilizzare il WebHook in Telegram, invece del metodo manuale getUpdates.

Ricapitolando

  • Il BOT è funzionante con i dati aggiornati al 2015;
  • Sulla correttezza e consistenza dei dati non garantisco. Non prendetevela con me per eventuali inesattezze e/o sbagli :–)
  • Il BOT sviluppato è ancora una demo. E’ possibile aggiungere altre funzionalità, il limite è la fantasia.

Per interagire con il bot dovete aggiungere al vostro client Telegram il contatto: @amatPABot.

Il codice sorgente lo trovate qui.

Attenzione, è’ una versione ancora poco stabile, non pronta per andare in produzione.

Se questo lavoro vi è piaciuto un pò, potreste contribuire a farlo conoscere in giro sui social, grazie.

Twittami

 

 

Idee, critiche e suggerimenti sono benvenuti.

That’s all folks! Stay tuned!