JSON
as
an
XML
Alterna3ve
l JSON
is
a
light-‐weight
alterna3ve
to
XML
for
data-‐
JSON-‐LD
interchange
l JSON
=
JavaScript
Object
Nota3on
– It’s
really
language
independent
– most
programming
languages
can
easily
read
it
and
instan3ate
objects
or
some
other
data
structure
l Defined
in
RFC
4627
l Started
gaining
trac3on
~2006
and
now
widely
used
l hQp://json.org/has
more
informa3on
Example
The
BNF
is
simple
{"firstName":
"John",
l This
is
a
JSON
object
with
"lastName"
:
"Smith",
five
key-‐value
pairs
"age"
:
25,
"address"
:
l Objects
are
wrapped
by
{"streetAdr”
:
"21
2nd
Street",
curly
braces
"city"
:
"New
York",
l There
are
no
object
IDs
"state"
:
"NY",
”zip"
:
"10021"},
l Keys
are
strings
"phoneNumber":
l Values
are
numbers,
[{"type"
:
"home",
strings,
objects
or
arrays
"number":
"212
555-‐1234"},
{"type"
:
"fax",
l Arrays
are
wrapped
by
"number”
:
"646
555-‐4567"}]
square
brackets
}
1
Evalua3on
JSON-‐LD
l JSON
is
simpler
than
XML
and
more
compact
JSON-‐LD
is
a
W3C
recommenda3on
for
represen3ng
– No
closing
tags,
but
if
you
compress
XML
and
JSON
the
RDF
data
as
JSON
objects
difference
is
not
so
great
{"@context":
{
– XML
parsing
is
hard
because
of
its
complexity
"name":
"hQp://xmlns.com/foaf/0.1/name",
"homepage":
{
l JSON
has
a
beQer
fit
for
OO
systems
than
XML,
but
"@id":
"hQp://xmlns.com/foaf/0.1/workplaceHomepage",
not
as
extensible
"@type":
"@id"
},
l Preferred
for
simple
data
exchange
by
many
"Person":
"hQp://xmlns.com/foaf/0.1/Person"
l MongoDB
is
a
very
popular
open-‐source
‘NoSQL’
},
database
for
JSON
objects
"@id":
"hQp://me.markus-‐lanthaler.com",
"@type":
"Person",
"name":
"Markus
Lanthaler",
"homepage":
"hQp://www.tugraz.at/"
}
In
the
beginning
A
bit
beCer
{
{
"name":
"Manu
Sporny",
"hQp://schema.org/name":
"Manu
Sporny",
"hQp://schema.org/url":
{
"@id":
"hQp://manu.sporny.org/"
}
"homepage":
"hQp://manu.sporny.org/",
"hQp://schema.org/image":
"image":
"hQp://manu.sporny.org/images/manu.png"
{
"@id":
"hQp://manu.sporny.org/images/manu.png"
}
}
}
l The
'@id'
keyword
means
'This
value
is
an
iden3fier
that
is
an
IRI'
2
Define
a
context
Reference
an
external
context
{
"@context":
{
"name":
"hQp://schema.org/name",
%
[1]
{
"image":
{
"@context":
"hQp://json-‐ld.org/contexts/person.jsonld",
"@id":
"hQp://schema.org/image",
%
[2]
"@type":
"@id"
%
[3]
"name":
"Manu
Sporny",
},
"homepage":
{
"homepage":
"hQp://manu.sporny.org/",
"@id":
"hQp://schema.org/url",
%
[4]
"@type":
"@id"
%
[5]
"image":
"hQp://manu.sporny.org/images/manu.png"
}
}
}
}
[1]
This
means
that
'name'
is
shorthand
for
'hQp://schema.org/name'
[2]
This
means
that
'image'
is
shorthand
for
'hQp://schema.org/image'
[3]
This
means
that
a
string
value
associated
with
'image'
should
be
interpreted
as
an
iden3fier
that
is
an
IRI
[4]
This
means
that
'homepage'
is
shorthand
for
'hQp://schema.org/url'
[5]
This
means
that
a
string
value
associated
with
'homepage'
should
be
interpreted
as
an
iden3fier
that
is
an
IRI
Add
context
inline
Making
asser3ons
about
things
{"@context":
{
{
"name":
"hQp://schema.org/name",
"@context":
{
"image":
{
"@id":
"hQp://schema.org/image",
...
"@type":
"@id"
"Restaurant":
"hQp://schema.org/Restaurant",
},
"homepage":
{
"Brewery":
"hQp://schema.org/Brewery"
"@id":
"hQp://schema.org/url",
}
"@type":
"@id"
}
"@id":
"hQp://example.org/places#BrewEats",
},
"@type":
[
"Restaurant",
"Brewery"
],
"name":
"Manu
Sporny",
"homepage":
"hQp://manu.sporny.org/",
...
"image":
"hQp://manu.sporny.org/images/manu.png"
}
}
3
Adding
a
default
vocabulary
Mixing
vocabularies
{
{
"@context":
"@context":
{
{
"@vocab":
"hQp://schema.org/"
"xsd":
"hQp://www.w3.org/2001/XMLSchema#",
"foaf":
"hQp://xmlns.com/foaf/0.1/",
}
"foaf:homepage":
{
"@type":
"@id"
},
"@id":
"hQp://example.org/places#BrewEats",
"picture":
{
"@id":
"foaf:depic3on",
"@type":
"@id"
}
"@type":
"Restaurant",
},
"@id":
"hQp://me.markus-‐lanthaler.com/",
"name":
"Brew
Eats"
"@type":
"foaf:Person",
...
"foaf:name":
"Markus
Lanthaler",
"foaf:homepage":
"hQp://www.markus-‐lanthaler.com/",
}
"picture":
"hQp://twiQer.com/account/profile_image/markuslanthaler"
}
Embedding
other
objects
Google
looks
for
JSON-‐LD
{
l Google
looks
for
and
uses
some
JSON-‐LD
markup
(e.g.,
...
for
organiza3ons)
"name":
"Manu
Sporny",
l Put
a
JSON-‐LD
object
in
the
head
of
a
web
page
"foaf:knows":
wrapped
with
script
tags:
{
<script
type="applica3on/ld+json">
"@type":
"Person",
{...}
</script>
"name":
"Gregg
Kellogg",
}
...
}
4
hCp://json-‐ld.org/
Conclusion
l JSON-‐LD
is
a
good
solu3on
to
puzng
blocks
of
seman3c
data
on
web
pages
l It’s
aimed
at
publish
linked
data,
not
ontologies,
i.e..
ABOX
not
TBOX
l Tools
are
available
for
extrac3ng
their
content
as
RDF
triples
l Search
companies
are
beginning
to
look
for
and
JSON-‐
LD
in
web
pages
that
uses
vocabularies
they
understand
(i.e.,
schema.org)
l Look
for
more
of
this
in
the
future
5
hCp://json-‐ld.org/playground/
6