JSON for Linked Data: a standard for serializing RDF using JSON

Slides:



Advertisements
Similar presentations
Steffen Staab 1WeST Web Science & Technologies University of Koblenz ▪ Landau, Germany Structured Data on the Web Introduction to.
Advertisements

XML: text format Dr Andy Evans. Text-based data formats As data space has become cheaper, people have moved away from binary data formats. Text easier.
RDFa: Embedding RDF Knowledge in HTML Some content from a presentation by Ivan Herman of the W3c, Introduction to RDFa, given at the 2011 Semantic Technologies.
RDF Tutorial.
RDF formats for Linked Data by Mabi Harandi. RDF is not a format, it is a model for data So: It will provide supports for different formats like :  Turtle.
Embedding Knowledge in HTML Some content from a presentations by Ivan Herman of the W3c.
RDFa Lite. RDFa 1.1 Lite is a subset of RDFa 1.1 Five simple attributes: vocab, typeof, property, resource, and prefix Completely upwards compatible RDFa.
Sematic Web Microdata, Microformat and RDF Advanced Web-based Systems | Misbhauddin.
Chapter 3 Querying RDF stores with SPARQL. TL;DR We will want to query large RDF datasets, e.g. LOD SPARQL is the SQL of RDF SPARQL is a language to query.
The Web of data with meaning... By Michael Griffiths.
Chapter 3 RDF Syntax 1. Topics Basic concepts of RDF resources, properties, values, statements, triples URIs and URIrefs RDF graphs Literals and Qnames.
Dr. Alexandra I. Cristea RDF.
Semantic Web Presented by: Edward Cheng Wayne Choi Tony Deng Peter Kuc-Pittet Anita Yong.
Semantic Web Andrejs Lesovskis. Publishing on the Web Making information available without knowing the eventual use; reuse, collaboration; reproduction.
Semantic Web Bootcamp Dominic DiFranzo PhD Student/Research Assistant Rensselaer Polytechnic Institute Tetherless World Constellation.
Metadata Standards and Applications 4. Metadata Syntaxes and Containers.
Semantic Web Series 1 Mohammad M. R. Cowdhury UniK, Kjeller.
RDF (Resource Description Framework) Why?. XML XML is a metalanguage that allows users to define markup XML separates content and structure from formatting.
Introduction to SPARQL. Acknowledgements This presentation is based on the W3C Candidate Recommendation “SPARQL Query Language for RDF” from
NetTech Solutions Working with Web Elements Lesson 6.
Lecture 13 – XML and JSON SFDV3011 – Advanced Web Development Reference: 1.
Master Informatique 1 Semantic Technologies Part 11Direct Mapping Werner Nutt.
JSON-LD. JSON as an XML Alternative JSON is a light-weight alternative to XML for data- interchange JSON = JavaScript Object Notation – It’s really language.
ICOM 4035 – Data Structures Lecture 11 – Map ADT Manuel Rodriguez Martinez Electrical and Computer Engineering University of Puerto Rico, Mayagüez ©Manuel.
1 Metadata –Information about information – Different objects, different forms – e.g. Library catalogue record Property:Value: Author Ian Beardwell Publisher.
Turtle – RDF Graph. Turtle – Basic Syntax Triples are terminated with a full stop URLs are encoded in angle brackets ( ) Literals are enclosed by double.
Google Data Protocol Guy Mark Lifshitz. Motivation Google’s Mission: – Organize the world’s information – Make information universally accessible – Provide.
Embedding Knowledge in HTML Some content from a presentations by Ivan Herman of the W3c.
Introduction to the Semantic Web and Linked Data Module 1 - Unit 2 The Semantic Web and Linked Data Concepts 1-1 Library of Congress BIBFRAME Pilot Training.
Introduction to Web Services
RDFa Lite. RDFa 1.1 Lite is a subset of RDFa 1.1 Five simple attributes: vocab, typeof, property, resource, and prefix Completely upwards compatible RDFa.
AJAX. Ajax  $.get  $.post  $.getJSON  $.ajax  json and xml  Looping over data results, success and error callbacks.
Semantic Web 06 T 0006 YOSHIYUKI Osawa. Problem of current web  limits of search engines Most web pages are only groups of character strings. Most web.
JSON. JSON as an XML Alternative JSON is a light-weight alternative to XML for data- interchange JSON = JavaScript Object Notation It’s really language.
Semantic Web In Depth Resource Description Framework Dr Nicholas Gibbins –
Setting the stage: linked data concepts Moving-Away-From-MARC-a-thon.
Semantic Web in Depth Schema.org RDFa, JSON-LD, Microdata Professor Steffen Staab 2016, Many slides courtesy by Dr. Nick Gibbins.
Introduction to RDF Sandro Hawke, Semantic Web Tutorial ISWC 2010.
What's New in RDF 1.1 Cambridge Semantic Web Gathering 9 April 2013
OWL (Ontology Web Language and Applications) Maw-Sheng Horng Department of Mathematics and Information Education National Taipei University of Education.
The Fat-Free Alternative to XML
JSON and JSON-Schema for XML Developers
Web-Technology Lecture 13.
Embedding Knowledge in HTML
Service-Oriented Computing: Semantics, Processes, Agents
Stanford University, Stanford, CA, USA
SPARQL.
The Fat-Free Alternative to XML
Service-Oriented Computing: Semantics, Processes, Agents
Introduction to SPARQL
JSON.
Resource Description Framework
Introduction to the Semantic Web (tutorial) 2009 Semantic Technology Conference San Jose, California, USA June 15, 2009 Ivan Herman, W3C
SPARQL SPARQL Protocol and RDF Query Language
A Lightweight Structured Data Implementation Using JSON-LD and Schema
JSON-LD.
Database Systems Week 12 by Zohaib Jan.
Consuming Java Script Object Notation (JSON) feeds
Embedding Knowledge in HTML
Presented by ebiqity UMBC Nov, 2004
JSON-LD 1.0 Yanan Zhang.
Microdata and schema.org
Embedding Knowledge in HTML
RDFa: Embedding RDF Knowledge in HTML
Resource Description Framework (RDF)
CSE591: Data Mining by H. Liu
The Fat-Free Alternative to XML
Gregg Kellogg – Spec Ops
JSON: JavaScript Object Notation
JSON-LD.
Presentation transcript:

JSON for Linked Data: a standard for serializing RDF using JSON JSON-LD JSON for Linked Data: a standard for serializing RDF using JSON

JSON as an XML Alternative Light-weight XML alternative for data-interchange JSON = JavaScript Object Notation It’s really language independent Most programming languages can easily read it and instantiate objects Defined in RFC 4627 Started gaining traction ~2006, now widely used http://json.org/ has more information

Example This is a JSON object with five key-value pairs {"firstName": "John", "lastName" : "Smith", "age" : 25, "address" : {"streetAdr” : "21 2nd Street", "city" : "New York", "state" : "NY", ”zip" : "10021"}, "phoneNumber": [{"type" : "home", "number": "212 555-1234"}, {"type" : "fax", "number” : "646 555-4567"}] } This is a JSON object with five key-value pairs Objects are wrapped by curly braces There are no object IDs Keys are strings Values are numbers, strings, objects or arrays Arrays are wrapped by square brackets

The BNF is simple

Evaluation JSON is simpler than XML and more compact No closing tags, but after compressing XML and JSON the difference is not so great XML parsing is hard because of its complexity JSON has a better fit for OO systems than XML, but not as extensible Preferred for simple data exchange by many MongoDB: ‘NoSQL’ database for JSON objects ElasticSearch: Lucene-based IR system using JSON to represent documents

Dict to Graph (1) JSON objects: like key-value stores where the values can be atomic, lists or JSON objects These map to Python simple types, lists and dictionaries >>> j_string = """{"firstName":"John", "lastName":"Smith" ... }""" >>> j_obj = json.loads(j_string) >>> j_obj {'firstName':'John','lastName':'Smith','age':25,'address':{'streetAdr':'21 2ndStreet','city':’NewYork','state':'NY','zip':'10021’},'phoneNumber':[{'type':'home','number':'212-555-1234'},{'type':'fax','number':'646-555-4567'}]} >>> j_obj['phoneNumber'][0]['number'] '212-555-1234'

Dict to Graph (2) Using JSON for knowledge graphs requires us to develop conventions to: Represent a general graph structure with this tree-oriented data structure Encode aspects for a RDF knowledge graph, like namespaces, prefixes, distinguishing URI representing objects from those representing web pages

JSON-LD Status JSON-LD: 2014 W3C recommendation for representing RDF data as JSON objects See JSON-LD 1.1 for a draft of a new version Google, Bing and Yandex look for embedded JSON-LD data in web pages and use the information they understand, e.g., statements using schema.org terms Google now recommends using JSON-LD for structured data whenever possible

JSON-LD JSON-LD: 2014 W3C recommendation for representing RDF data as JSON objects {"@context": { "name": "http://xmlns.com/foaf/0.1/name", "homepage": { "@id": "http://xmlns.com/foaf/0.1/workplaceHomepage", "@type": "@id" }, "Person": "http://xmlns.com/foaf/0.1/Person" "@id": "http://me.markus-lanthaler.com", "@type": "Person", "name": "Markus Lanthaler", "homepage": "http://www.tugraz.at/" } @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . <http://me.markus-lanthaler.com> a foaf:Person ; foaf:name "Markus Lanthaler"^^xsd:string ; foaf:workplaceHomepage <http://www.tugraz.at/> .

In the beginning { "name": "Manu Sporny", "homepage": "http://manu.sporny.org/", "image": "http://manu.sporny.org/images/manu.png" }

A bit better { "http://schema.org/name": "Manu Sporny", "http://schema.org/url": { "@id": "http://manu.sporny.org/" } "http://schema.org/image": { "@id": "http://manu.sporny.org/images/manu.png" } } The '@id' keyword means 'This value is an identifier that is an IRI’ i.e., it’s not just a reference to a web page

Define a context A context lets you define things that apply to the entire JSON object, such as full versions of some terms and (we will see) namespace prefixes and other properties { "@context": { "name": "http://schema.org/name", % [1] "image": { "@id": "http://schema.org/image", % [2] "@type": "@id" % [3] }, "homepage": { "@id": "http://schema.org/url", % [4] "@type": "@id" % [5] } } } [1] means 'name' is short for 'http://schema.org/name' [2] means 'image' is short for 'http://schema.org/image' [3] means a string value associated with 'image' should be interpreted as an identifier that is an IRI [4] means 'homepage' short for 'http://schema.org/url' [5] means string value associated with 'homepage’ to be interpreted as an identifier that is an IRI

Reference an external context A context can be specified by a URL that points to a JSON object { "@context": "http://json-ld.org/contexts/person.jsonld", "name": "Manu Sporny", "homepage": "http://manu.sporny.org/", "image": "http://manu.sporny.org/images/manu.png" }

More typically: add context inline {"@context": { "name": "http://schema.org/name", "image": { "@id": "http://schema.org/image", "@type": "@id" }, "homepage": { "@id": "http://schema.org/url", } "name": "Manu Sporny", "homepage": "http://manu.sporny.org/", "image": "http://manu.sporny.org/images/manu.png"

Making assertions about things The "@id" JSON property means value is (1) a reference to an RDF object, not a literal, and (2) the subject of all other property/values pairs in this object. @type is rdf:type {"@context": { ... "Restaurant": "http://schema.org/Restaurant", "Brewery": "http://schema.org/Brewery" } "@id": "http://example.org/places#BrewEats", "@type": [ "Restaurant", "Brewery" ], ...}

Adding a default vocabulary The "@vocab" JSON property means any unqualified properties (e.g., “name”) or objects (e.g., “Restaurant”) come from its value’s vocabulary {"@context": { "@vocab": "http://schema.org/" } "@id": "http://example.org/places#BrewEats", "@type": "Restaurant", "name": "Brew Eats" ...}

Mixing vocabularies {"@context": { "xsd": "http://www.w3.org/2001/XMLSchema#", "foaf": "http://xmlns.com/foaf/0.1/", "foaf:homepage": { "@type": "@id" }, "picture": { "@id": "foaf:depiction", "@type": "@id" } }, "@id": "http://me.markus-lanthaler.com/", "@type": "foaf:Person", "foaf:name": "Markus Lanthaler", "foaf:homepage": "http://www.markus-lanthaler.com/", "picture": "http://twitter.com/account/profile_image/mlanthaler" }

Mixing vocabularies @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . <http://me.markus-lanthaler.com/> a foaf:Person ; foaf:depiction <http://twitter.com/account/profile_image/mlanthaler> ; foaf:homepage <http://www.markus-lanthaler.com/> ; foaf:name "Markus Lanthaler"^^xsd:string . {"@context": { "xsd": "http://www.w3.org/2001/XMLSchema#", "foaf": "http://xmlns.com/foaf/0.1/", "foaf:homepage": { "@type": "@id" }, "picture": { "@id": "foaf:depiction", "@type": "@id" } }, "@id": "http://me.markus-lanthaler.com/", "@type": "foaf:Person", "foaf:name": "Markus Lanthaler", "foaf:homepage": "http://www.markus-lanthaler.com/", "picture": http://twitter.com/account/profile_image/mlanthaler }

Embedding other objects { ... "name": "Manu Sporny", "foaf:knows": "@type": "Person", "name": "Gregg Kellogg", } Produces a blank node

Search Engines looks for JSON-LD Google, Bing and Yandex all looks for and use JSON-LD markup Only schema.org vocabulary is “understood” Put a JSON-LD object in head or body of web page wrapped with script tags: <script type="application/ld+json"> {...} </script>

https://search.google.com/structured-data/testing-tool

http://json-ld.org/

JSON-LD Playground

Conclusion JSON-LD is a good solution to putting blocks of semantic data on web pages Aimed at publishing linked data, not ontologies, i.e., ABOX not TBOX Tools available for extracting RDF triples Search engines look for and use JSON-LD that use vocabularies they understand (i.e., schema.org)