JSON for Linked Data JSON-LD Giuseppe Santaniello Giuseppe Pietravalle Web Semantico A.A. 2015/2016
Linked Data Insiemi di dati interconnessi sul Web Esempio: DBpedia DBpedia contiene i dati di Wikipedia ma fornisce link ad altri insiemi di dati sul web, come Geonames In virtù dell integrazione da diversi set di dati, le applicazioni garantiscono una migliore esperienza utente 2
Linked Data (2008) 3
Linked Data (2014) 4
JSON JavaScript Object Notation è un formato per lo scambio di dati Di facile comprensione per gli esseri umani Facile generazione ed analisi della sintassi da parte delle macchine E indipendente dal linguaggio di programmazione 5
Strutture dati Object: insieme non ordinato di coppie nome:valore Array: insieme ordinato di valori 6
Valori Possibili valori: 7
Esempi Array Oggetto Struttura nidificata 8
RDF/JSON Un grafo RDF è costituito da triple RDF, composte da un soggetto, un predicato ed un oggetto Le triple RDF vengono serializzate in un documento RDF/JSON come una serie di strutture dati annidate Un documento RDF/JSON conforme è costituito da un singolo oggetto JSON chiamato root object 9
RDF/JSON Una tripla RDF ( soggetto S, predicato P, oggetto O) è rappresentata nella seguente struttura: { S": { P : [O]}} Ogni soggetto (S) di una tripla è rappresentato come una chiave nel root object Ogni chiave (S) può apparire una sola volta Il valore di ogni soggetto (S) è un oggetto le cui chiavi sono gli URI dei predicati presenti nelle triple 10
RDF/JSON Il valore di ogni predicato (P) è un array di oggetti JSON L oggetto (O) della tripla è rappresentato come un oggetto JSON con le seguenti chiavi: type: uri, literal o bnode (obbligatorio) value: l URI dell oggetto, il suo valore lessicale o un etichetta di nodo vuoto (obbligatorio) lang: lingua del value (opzionale) datatype: URI che rappresenta il tipo di un literal (opzionale) 11
Esempio Due triple con lo stesso soggetto e predicato ma con oggetti diversi Equivalente in N-Triples 12
Esempio Triple che hanno un blank node Equivalente in N-Triples 13
JSON-LD E un formato di interscambio di dati collegati che utilizza JSON E una W3C Recommendation RDF Working Group raccomanda JSON-LD e non RDF/JSON Permette di trasformare file JSON esistenti in Linked Data con minime modifiche 14
Caratteristiche Semplicità: bisogna conoscere JSON e due keywords (@context e @id) per utilizzare le funzionalità di base Compatibilità: è compatibile con le librerie JSON esistenti, perché un documento JSON-LD è un documento JSON valido Espressività: è possibile esprimere qualsiasi modello di dati reale Utilizzabile come RDF 15
Data Model Il Data model usato per JSON-LD è un grafo diretto etichettato ed è un estensione dell RDF data model Il grafo contiene nodi che rappresentano: una stringa, un numero o un IRI Blank node usato per esprimere dati che non hanno un IRI Un blank node identifier inizia con _: 16
Data Model 17
Ambiguità JSON E difficile integrare dati provenienti da file JSON differenti Ambiguità fra chiavi e concetti che potrebbero essere correlati? 18
Soluzione (1) Utilizzo di IRI per l identificazione univoca IRI dereferencing Ogni proprietà è identificata da un IRI La keyword @id rappresenta che il valore è un IRI Svantaggio: formato specifico ma genera documenti eccessivamente prolissi 19
Soluzione (2) Si utilizza @context per mappare termini in IRI termine: short-hand per esprimere un IRI o un identificatore di nodo vuoto. Non deve essere una keyword di JSON-LD o una stringa vuota, non dovrebbe iniziare con @ ed è case-sensitive short-hand per 'http://schema.org/name' il tipo del valore associato a image è un IRI 20
@context I context possono essere incorporati direttamente nel documento o referenziati Vantaggio: concisione 21
@context Vantaggio: i documenti possono essere elaborati anche senza una connessione al Web 22
Sintassi In JSON-LD sono presenti le seguenti keywords: @contex @id @value @language @type @container @list @set @reverse @index @base @vocab @graph 23
@id Identifica in modo univoco ciò che è descritto nel documento tramite IRI o identificatori di blank node 24
@type Specifica il tipo di dato di un particolare nodo I tipi sono identificati con un IRI Ad un nodo possono essere assegnati più tipi 25
Esempio @type Ulteriore esempio con l ausilio di @context: 26
@value Specifica il valore associato ad una particolare struttura nel grafo 27
Aliasing keyword Ad ogni keywords, tranne per @context, può essere associato un alias Vantaggio: riutilizzo di chiavi già presenti nel file JSON 28
Processing Algorithms Ci sono diversi modi per esprimere i Linked Data utilizzando JSON-LD E utile trasformare i documenti JSON-LD in modo da facilitare la condivisione dei dati Esistono algoritmi che permettono di eliminare o specificare un determinato contesto 29
Processing Algorithms I principali sono: Expansion Compaction Flattening RDF serialization/deserialization 30
Expansion Questo algoritmo espande un documento JSON-LD: rimozione dei contesti tutti i termini e gli IRI compatti sono espansi in IRI assoluti gli identificatori di blank node o le keywords e tutti i valori di JSON-LD sono espressi in array in forma estesa IRI compatto: modo di esprimere un IRI usando un prefisso e un suffisso separati dai : 31
Esempio Expansion 32
Compaction Effettua l operazione inversa dell algoritmo Expansion (viene applicato un contesto) 1 2 3 33
Flattening Questo algoritmo appiattisce un documento JSON- LD espanso: tutte le proprietà di un nodo sono raccolte in un unico oggetto JSON tutti i blank node sono etichettati con un blank node identifier Vantaggio: facilità di elaborazione da parte delle applicazioni 34
Flattening 35
Flattening Per rendere il documento più comprensibile è possibile applicare un contesto 36
RDF Deserialization La deserealizzazione di un documento JSON-LD in RDF prevede i seguenti passi: 1. Esecuzione Expansion algorithm 2. Esecuzione Flattening algorithm 3. Trasformazione di ciascun nodo oggetto in triple RDF 37
Esempio Deserialization 1 2 3 38
RDF Serialization A partire da un documento RDF è possibile crearne uno in JSON-LD espanso: mappando attentamente le triple RDF usando un singolo oggetto nodo per tutte le triple che hanno un soggetto comune usando una singola proprietà per le triple aventi un predicato in comune 39
Esempio Serialization 40
API JSON-LD Forniscono un meccanismo per convertire documenti JSON-LD in diversi formati con cui è facile lavorare JSON-LD è disponibile per i più popolari ambienti di programmazione: Java, Python, C#, Javascript, PHP, Ruby JSON-LD Playground è un tool per comprendere e per verificare la correttezza di un documento 41
JSON-LD Playground 42