Semantic Lifting of OpenStreetMap Data

Tipo di attività: 
(SOD15) Hackathon 28/03/2015
Livello di difficoltà: 
Avanzato
Durata: 
120 minuti

Gli utenti di OpenStreetMap possono esportare dati in formato XML. Per integrare questi dati con altri provenienti da sorgenti diverse occorre eseguire diverse operazioni. In breve 
1) identificare il significato dei metadati utilizzati da ciascuna sorgente per descrivere i dati
2) mappare i metadati su una o piu' ontologie  
3) collegare i record delle diverse sorgenti al fine di integrare le descrizioni di entità identiche (luoghi, edifici, punti di interesse)
 
La sessione consiste nelle fasi:
 
1) acquisire i dati di OSM di un'area di interesse,
2) mappare i dati su un'ontologia in formato RDF attraverso trasformazioni XSLT
3) importare i dati RDF in un triple store e interrogare la base dati attraverso query SPARQL
4) linkare i dati con altri data set RDF
5) visualizzare il risultato su una mappa
 
Chi vuole partecipare attivamente deve aver installato di base sul proprio pc Java. Gli altri tool consigliati sono indicati per ciascuna fase
 
--------------------------------------- Fase 1 - Acquisizione dei dati da OpenStreetMap----------------------------
 
Si seleziona un area di interesse da OpenStreetMap e con jOSM scarichiamo i dati OSM/XML 
 
  --------------------------------------- Fase 2 - Mapping da XML a RDF (Semantic Lifting ) ------------------------
 
Usiamo un file XSLT che legge il file OSM XML e mappa in RDF fermate dell'autobus, scuole, chiese, musei e ristoranti. Vengono usate per lo piu' classi e proprietà definite in schema.org. Il file XSL è facilmente modificabile per mappare altre tipologie di oggetti. La URL del file è 
https://raw.githubusercontent.com/fusepoolP3/p3-transformer-configs/mast...
Per questa fase occore avere il parser XSLT a cui dare in pasto i dati OSM/XML e il foglio di stile XSL di cui sopra. Quello consigliato è Saxon, versione opensource, scaricabile da http://sourceforge.net/projects/saxon/files/Saxon-HE/
 
------------------------------------------ Fase 3 - Import dei dati RDF in un triple store Jena -------------------------
 
A questo punto avremo un data set RDF con istanze delle classi di oggetti che avremo mappato con le relative coordinate geografiche e altre informazioni come un etichetta o nome, il link alla pagina del nodo o way su openstreetmap. 
Vedremo in dettaglio cosa sono le URI, gli identificativi usati per nella comunità Semantic Web e Linked Data per dare un nome agli oggetti. Importeremo i dati RDF in un triple store Jena e scriveremo alcune query SPARQL
Jena con il server Fuseki ( versione 2 ) puo essere scaricato al link https://jena.apache.org/documentation/fuseki2/index.html
 
------------------------------------------- Fase 4 - Interlinking dei dati con altri dataset --------------------------------
 
Proveremo a collegare alcuni degli oggetti estratti da OSM con altri disponibili in altre banche dati attraverso endpoint SPARQL. Lo scopo è quello di connettere identificativi diversi di oggetti uguali nella realtà, ad esempio i comuni
presenti all'interno di una regione, allo scopo di integrare le informazioni. Vedremo anche come esplorare un endpoint SPARQL per vedere se contiene dati interessanti e quali vocabolari sono utilizzati. Alcuni di questi sono
DBpedia   (  http://dbpedia.org/sparql   )
Agenzia per l'Italia Digitale ( http://spcdata.digitpa.gov.it:8899/sparql  )
Per riconoscere se due descrizioni corrispondono allo stesso oggetto occorre confrontare i dati. In RDF cio' si traduce nel confrontare le proprietà di ciascun oggetto della nostra base dati con quelle degli oggetti nella base dati remota.
Utilizzeremo un componente sviluppato nell'ambito del progetto Fusepool P3 scaricabile al link  https://github.com/fusepoolP3/p3-silkdedup
L'applicazione è basata sul tool open source Silk ( http://wifo5-03.informatik.uni-mannheim.de/bizer/silk/ )
Vedremo le problematiche di questa specifica attività, dalla definizione delle regole per confrontare oggetti, al problema della dipendenza del tempo di esecuzione dal prodotto del numero degli oggetti da confrontare.  
 
------------------------------------------ Fase 5 - Visualizzazione dei dati su una mappa -------------------------
 
Visualizziamo i dati RDF su una mappa Google .. :) ovviamente su una mappa OSM. L'applicazione prototipo che useremo è basata su leaflet.js e Jena e permette la ricerca di eventi o oggetti all'interno di un raggio.  
Il codice dell'applicazione è disponibile su Github al link https://github.com/fusepoolP3/p3-spatialsearch-demo
 
Per concludere vedremo quali ulteriori passi occorre fare per pubblicare i nostri dati RDF come Linked Data e come tutto cio' puo' essere reso piu semplice utilizzando una Linked Data Platform come quella presentata nell'hackathon 
"Riuso di dati LOD ovvero Linked Open Data - [Fusepool P3 Project]"
Disclaimer: partecipo al progetto Fusepool P3.