JSON for Linked Data JSON-LD

Documenti analoghi
Argomenti XML JSON. Linguaggi per la definizione e lo scambio di dati strutturati, semi-strutturati, non strutturati. XML Data Model JSON

Parte 6 JSON, Web Storage API, funzioni JavaScript e user script

RDF. Resource Description Framework

Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1

Linguaggi e Ambienti di Programmazione

Tecnologie semantiche per lo sviluppo di conoscenza e servizi Evento W3C LOD 2014

Tecnologie informatiche multimediali

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Introduzione alla programmazione

Introduzione allo Studio dei Linguaggi di Programmazione. Corso di Linguaggi di Programmazione Informatica e Tecnologie Produzione Software

Strumenti per l automazione del testing di applicazioni web Javascript-based

Sommario Obiettivo della programmazione e ciclo di sviluppo di programmi. Programmi. Ciclo di sviluppo di programmi. Obiettivo

Il linguaggio C. Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1

Linguaggi, Traduttori e le Basi della Programmazione

G2Music. Gestione Avanzata dei Dati Giuseppe Pietravalle, Giuseppe Santaniello, Marco Mannara

Analizzatore lessicale o scanner. Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser.

Espressioni aritmetiche

STORIA E CARATTERISTICHE

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova

Grammatiche. Grammatiche libere da contesto Grammatiche regolari Potenza delle grammatiche libere e regolari Struttura di frase: Alberi di derivazione

TCL PAD: UN EDITOR DI TESTO ESTENDIBILE, INCORPORABILE E CON INTERFACCE DI TEXT-PROCESSING

LE BASI DI DATI. Prima parte Premesse introduttive I MODELLI DEI DATI

L etichetta logistica per il settore bancario

Università degli Studi di L Aquila Facoltà di Scienze M.F.N. Corso di Laurea in Informatica. Modulo di Laboratorio di Algoritmi e Strutture Dati

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a

Informatica Generale Andrea Corradini I linguaggi di programmazione

SISTEMI OPERATIVI, RETI, INTERNET

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali:

FONDAMENTI DI INFORMATICA

Librerie digitali. Uso di XML per memorizzare i metadati. Descrizione generale. XML per memorizzare i metadati. Motivi dell uso di XML

CdL in Medicina Veterinaria - STPA AA

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Linguaggio C: introduzione

2011 Politecnico di Torino 1

I Linguaggi di Programmazione

PROBLEMI ALGORITMI E PROGRAMMAZIONE

Alberi binari e alberi binari di ricerca

Linguaggio C: le funzioni. Introduzione e sintassi

I file utente sistema operativo nome

Programmazione C Massimo Callisto De Donato

Indice. Prefazione. 3 Oggetti e Java 53

Internet of Things & Wireless Sensor Networks

Alberi. Strutture dati: Alberi. Alberi: Alcuni concetti. Alberi: definizione ricorsiva. Alberi: Una prima realizzazione. Alberi: prima Realizzazione

Costanti e Variabili

CHE COSA FA? P.S. io comunque dissento sul 4. Ing. Luca Frigerio

Riconoscitori e analizzatori sintattici. Scanning e parsing. Funzionamento di un parser: la tecnica Shift/Reduce. Esempio

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione

Esercizi su strutture dati

PIANO DI LAVORO. Programmazione Didattica per Competenze. Indirizzo Informatica e Telecomunicazioni. Articolazione Informatica DOCENTE:

Cosa è l Informatica?

5.2. Il linguaggio XML

TRIE (albero digitale di ricerca)

Concetti base programmazione. Antonio Gallo

Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007

Interfaccia del file system

Introduzione alle stringhe e algoritmi collegati

Programmazione Procedurale in Linguaggio C++

Linguaggi di Programmazione

Linguaggi di programmazione

Funzioni, Stack e Visibilità delle Variabili in C

SAX e DOM. Analisi di un documento

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

Linguaggi di Programmazione

Introduzione a Java. Riferimenti

Corso di Ingegneria del Software. Modelli di produzione del software

Tipi di Dati Astratti

3.3.6 Gli operatori Le funzioni di accesso al tipo Le strutture di controllo Le funzioni

Università degli Studi di Roma La Sapienza, Facoltà di Ingegneria. Corso di INGEGNERIA DEL SOFTWARE (Ing. Informatica, Nuovo Ordinamento)

Corso di Informatica. Problemi ed algoritmi. Ing Pasquale Rota

A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas

Ingegneria del Software 4. Introduzione a UML. Dipartimento di Informatica Università di Pisa A.A. 2014/15

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

Sistemi Mobili e Wireless Android - Risorse

Descrizione delle operazioni di calcolo. Espressioni costanti semplici

Analizzatore Lessicale Parte I Scanner

Tutorial: come ti faccio una app sugli opendata

CORSO DI PROGRAMMAZIONE JAVA STANDARD + ENTERPRISE EDITION

Algoritmi e Programmi

JSON JavaScript Object Notation. Sistemi Informativi Aziendali A.A. 2012/2013

Introduzione alla programmazione

STRUTTURE DATI: OLTRE GLI ARRAY LISTE

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

Calcolatori Elettronici Parte VIII: linguaggi assemblativi

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Linguaggio C: le funzioni. Introduzione e sintassi

I Clip Filmato. I marker. Informatica Grafica per le arti. I marker. I marker. I marker. I marker. gotoandplay("inizio");

4. I moduli in Access 2000/2003

Indice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX

LA SINTASSI DEI LINGUAGGI DI PROGRAMMAZIONE. Ivan Lanese

Programmazione Procedurale in Linguaggio C++

Linguaggi di Programmazione

Davide Cervi Classe : 3E I.T.E Agostino Bassi - Lodi

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Introduzione alla programmazione

Programmazione Procedurale in Linguaggio C++

Unità di apprendimento 6. Dal problema al programma

Fondamenti d Informatica: linguaggi formali. Barbara Re, Phd

HIGHCHARTS. Federico Martinelli

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi

Yet Another Compiler-Compiler. Generazione automatica di analizzatori sintattici

Transcript:

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