Added diff-marked copy of 2013 JSON-LD 1.0 Final Community Group Spec.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/spec/FCGS/json-ld-syntax/20130202/diff-20121225.html Sat Feb 02 14:43:29 2013 -0500
@@ -0,0 +1,22752 @@
+<!DOCTYPE html>
+<html lang="en" dir="ltr" prefix="bibo: http://purl.org/ontology/bibo/" typeof="bibo:Document">
+<head>
+<title>JSON-LD 1.0</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
+<!--
+ === NOTA BENE ===
+ For the three scripts below, if your spec resides on dev.w3 you can check them
+ out in the same tree and use relative links so that they'll work offline,
+ -->
+
+
+
+<style type="text/css">
+ .diff { font-weight:bold; color:#0a3; }
+ table, thead, tr, td { padding: 5px; border-width: 1px; border-spacing: 0px; border-style: solid; border-collapse: collapse;}
+</style>
+<style>/*****************************************************************
+ * ReSpec 3 CSS
+ * Robin Berjon - http://berjon.com/
+ *****************************************************************/
+
+/* --- INLINES --- */
+em.rfc2119 {
+ text-transform: lowercase;
+ font-variant: small-caps;
+ font-style: normal;
+ color: #900;
+}
+
+h1 acronym, h2 acronym, h3 acronym, h4 acronym, h5 acronym, h6 acronym, a acronym,
+h1 abbr, h2 abbr, h3 abbr, h4 abbr, h5 abbr, h6 abbr, a abbr {
+ border: none;
+}
+
+dfn {
+ font-weight: bold;
+}
+
+a.internalDFN {
+ color: inherit;
+ border-bottom: 1px solid #99c;
+ text-decoration: none;
+}
+
+a.externalDFN {
+ color: inherit;
+ border-bottom: 1px dotted #ccc;
+ text-decoration: none;
+}
+
+a.bibref {
+ text-decoration: none;
+}
+
+cite .bibref {
+ font-style: normal;
+}
+
+code {
+ color: #ff4500;
+}
+
+
+/* --- --- */
+ol.algorithm { counter-reset:numsection; list-style-type: none; }
+ol.algorithm li { margin: 0.5em 0; }
+ol.algorithm li:before { font-weight: bold; counter-increment: numsection; content: counters(numsection, ".") ") "; }
+
+/* --- TOC --- */
+.toc a, .tof a {
+ text-decoration: none;
+}
+
+a .secno, a .figno {
+ color: #000;
+}
+
+ul.tof, ol.tof {
+ list-style: none outside none;
+}
+
+.caption {
+ margin-top: 0.5em;
+ font-style: italic;
+}
+
+/* --- TABLE --- */
+table.simple {
+ border-spacing: 0;
+ border-collapse: collapse;
+ border-bottom: 3px solid #005a9c;
+}
+
+.simple th {
+ background: #005a9c;
+ color: #fff;
+ padding: 3px 5px;
+ text-align: left;
+}
+
+.simple th[scope="row"] {
+ background: inherit;
+ color: inherit;
+ border-top: 1px solid #ddd;
+}
+
+.simple td {
+ padding: 3px 10px;
+ border-top: 1px solid #ddd;
+}
+
+.simple tr:nth-child(even) {
+ background: #f0f6ff;
+}
+
+/* --- DL --- */
+.section dd > p:first-child {
+ margin-top: 0;
+}
+
+.section dd > p:last-child {
+ margin-bottom: 0;
+}
+
+.section dd {
+ margin-bottom: 1em;
+}
+
+.section dl.attrs dd, .section dl.eldef dd {
+ margin-bottom: 0;
+}
+</style><style>/* --- EXAMPLES --- */
+div.example-title {
+ min-width: 7.5em;
+ color: #b9ab2d;
+}
+div.example-title span {
+ text-transform: uppercase;
+}
+aside.example, div.example, div.illegal-example {
+ padding: 0.5em;
+ margin: 1em 0;
+ position: relative;
+ clear: both;
+}
+div.illegal-example { color: red }
+div.illegal-example p { color: black }
+aside.example, div.example {
+ padding: .5em;
+ border-left-width: .5em;
+ border-left-style: solid;
+ border-color: #e0cb52;
+ background: #fcfaee;
+}
+
+aside.example div.example {
+ border-left-width: .1em;
+ border-color: #999;
+ background: #fff;
+}
+aside.example div.example div.example-title {
+ color: #999;
+}
+</style><style>/* --- ISSUES/NOTES --- */
+div.issue-title, div.note-title {
+ padding-right: 1em;
+ min-width: 7.5em;
+ color: #b9ab2d;
+}
+div.issue-title { color: #e05252; }
+div.note-title { color: #52e052; }
+div.issue-title span, div.note-title span {
+ text-transform: uppercase;
+}
+div.note, div.issue {
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+.note > p:first-child, .issue > p:first-child { margin-top: 0 }
+.issue, .note {
+ padding: .5em;
+ border-left-width: .5em;
+ border-left-style: solid;
+}
+div.issue, div.note {
+ padding: 0.5em;
+ margin: 1em 0;
+ position: relative;
+ clear: both;
+}
+span.note, span.issue { padding: .1em .5em .15em; }
+
+.issue {
+ border-color: #e05252;
+ background: #fbe9e9;
+}
+.note {
+ border-color: #52e052;
+ background: #e9fbe9;
+}
+
+
+</style><link rel="stylesheet" href="http://www.w3.org/community/src/css/spec/cg-final.css"><!--[if lt IE 9]><script src='http://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]--><style type='text/css'>
+.diff-old-a {
+ font-size: smaller;
+ color: red;
+}
+
+.diff-new { background-color: yellow; }
+.diff-chg { background-color: lime; }
+.diff-new:before,
+.diff-new:after
+ { content: "\2191" }
+.diff-chg:before, .diff-chg:after
+ { content: "\2195" }
+.diff-old { text-decoration: line-through; background-color: #FBB; }
+.diff-old:before,
+.diff-old:after
+ { content: "\2193" }
+:focus { border: thin red solid}
+</style>
+</head>
+
+
+<body>
+<div class="head">
+<p>
+<a href="http://www.w3.org/">
+<img width="72" height="48" src="http://www.w3.org/Icons/w3c_home" alt="W3C">
+</a>
+</p>
+<h1 class="title" id="title">
+JSON-LD
+<del class="diff-old">Syntax
+</del>
+1.0
+</h1>
+<h2 id="subtitle">
+A
+<del class="diff-old">JSON
+</del>
+<ins class="diff-chg">JSON-based
+</ins>
+Serialization
+for
+<del class="diff-old">Linking
+</del>
+<ins class="diff-chg">Linked
+</ins>
+Data
+</h2>
+<del class="diff-old">W3C
+Editor's
+Draft
+25
+December
+2012
+</del>
+<h2 id="final-community-group-specification-02-february-2013">
+<ins class="diff-chg">Final
+Community
+Group
+Specification
+02
+February
+2013
+</ins>
+</h2>
+<dl>
+<dt>
+<del class="diff-old">This
+version:
+http://dvcs.w3.org/hg/json-ld/raw-file/default/spec/ED/json-ld-syntax/20121225/index.html
+Latest
+published
+version:
+http://www.w3.org/TR/json-ld-syntax/
+</del>
+Latest
+editor's
+draft:
+</dt>
+<dd>
+<a href="http://dvcs.w3.org/hg/json-ld/raw-file/default/spec/latest/json-ld-syntax/index.html">
+http://dvcs.w3.org/hg/json-ld/raw-file/default/spec/latest/json-ld-syntax/index.html
+</a>
+</dd>
+<dt>
+Editors:
+</dt>
+<dd rel="bibo:editor" inlist="">
+<span typeof="foaf:Person">
+<a rel="foaf:homepage" property="foaf:name" content="Manu Sporny" href="http://manu.sporny.org/">
+Manu
+Sporny
+</a>,
+<a rel="foaf:workplaceHomepage" href="http://digitalbazaar.com/">
+Digital
+Bazaar
+</a>
+</span>
+</dd>
+<dd rel="bibo:editor" inlist="">
+<span typeof="foaf:Person">
+<a rel="foaf:homepage" property="foaf:name" content="Gregg Kellogg" href="http://greggkellogg.net/">
+Gregg
+Kellogg
+</a>,
+<a rel="foaf:workplaceHomepage" href="http://kellogg-assoc.com/">
+Kellogg
+Associates
+</a>
+</span>
+</dd>
+<dd rel="bibo:editor" inlist="">
+<span typeof="foaf:Person">
+<a rel="foaf:homepage" property="foaf:name" content="Markus Lanthaler" href="http://www.markus-lanthaler.com/">
+Markus
+Lanthaler
+</a>,
+<a rel="foaf:workplaceHomepage" href="http://www.tugraz.at/">
+Graz
+University
+of
+Technology
+</a>
+</span>
+</dd>
+<dt>
+Authors:
+</dt>
+<dd rel="dcterms:contributor">
+<span typeof="foaf:Person">
+<a rel="foaf:homepage" property="foaf:name" content="Manu Sporny" href="http://digitalbazaar.com/">
+Manu
+Sporny
+</a>,
+<a rel="foaf:workplaceHomepage" href="http://digitalbazaar.com/">
+Digital
+Bazaar
+</a>
+</span>
+</dd>
+<dd rel="dcterms:contributor">
+<span typeof="foaf:Person">
+<a rel="foaf:homepage" property="foaf:name" content="Dave Longley" href="http://digitalbazaar.com/">
+Dave
+Longley
+</a>,
+<a rel="foaf:workplaceHomepage" href="http://digitalbazaar.com/">
+Digital
+Bazaar
+</a>
+</span>
+</dd>
+<dd rel="dcterms:contributor">
+<span typeof="foaf:Person">
+<a rel="foaf:homepage" property="foaf:name" content="Gregg Kellogg" href="http://greggkellogg.net/">
+Gregg
+Kellogg
+</a>,
+<a rel="foaf:workplaceHomepage" href="http://kellogg-assoc.com/">
+Kellogg
+Associates
+</a>
+</span>
+</dd>
+<dd rel="dcterms:contributor">
+<span typeof="foaf:Person">
+<a rel="foaf:homepage" property="foaf:name" content="Markus Lanthaler" href="http://www.markus-lanthaler.com/">
+Markus
+Lanthaler
+</a>,
+<a rel="foaf:workplaceHomepage" href="http://www.tugraz.at/">
+Graz
+University
+of
+Technology
+</a>
+</span>
+</dd>
+<dd rel="dcterms:contributor">
+<span typeof="foaf:Person">
+<del class="diff-old">Mark
+Birbeck
+,
+Backplane
+Ltd.
+</del>
+<a rel="foaf:homepage" property="foaf:name" content="Niklas Lindström" href="http://neverspace.net/">
+<ins class="diff-chg">Niklas
+Lindström
+</ins>
+</a>
+</span>
+</dd>
+</dl>
+<p>
+This
+document
+is
+also
+available
+in
+this
+non-normative
+format:
+<a href="diff-20121225.html">
+diff
+to
+previous
+version
+</a>
+</p>
+<p class="copyright">
+<a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">
+Copyright
+</a>
+©
+<del class="diff-old">2010-2012
+W3C
+®
+(
+MIT
+,
+ERCIM
+,
+Keio
+</del>
+<ins class="diff-chg">2010-2013
+the
+Contributors
+to
+the
+JSON-LD
+1.0
+Specification,
+published
+by
+the
+</ins><a href="http://www.w3.org/2011/rdf-wg/"><ins class="diff-chg">
+RDF
+Working
+Group
+</ins>
+</a>
+<del class="diff-old">),
+All
+Rights
+Reserved.
+</del>
+<ins class="diff-chg">under
+the
+</ins><a href="https://www.w3.org/community/about/agreements/fsa/">
+W3C
+<del class="diff-old">liability
+,
+trademark
+and
+document
+use
+</del>
+<ins class="diff-chg">Community
+Final
+Specification
+Agreement
+(FSA)
+</ins></a>.<ins class="diff-chg">
+A
+human-readable
+</ins><a href="http://www.w3.org/community/about/agreements/fsa-deed/"><ins class="diff-chg">
+summary
+</ins>
+</a>
+<del class="diff-old">rules
+apply.
+</del>
+<ins class="diff-chg">is
+available.
+</ins>
+</p>
+<hr>
+</div>
+<section id="abstract" class="introductory" property="dcterms:abstract" datatype="" typeof="bibo:Chapter" resource="#abstract" rel="bibo:chapter">
+<h2>
+Abstract
+</h2>
+<p>
+JSON
+has
+proven
+to
+be
+a
+highly
+useful
+object
+serialization
+and
+messaging
+format.
+In
+an
+attempt
+to
+harmonize
+the
+representation
+of
+<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
+Linked
+Data
+</a>
+in
+JSON,
+this
+specification
+outlines
+a
+common
+JSON
+representation
+format
+for
+expressing
+directed
+graphs;
+mixing
+both
+Linked
+Data
+and
+non-Linked
+Data
+in
+a
+single
+document.
+</p>
+</section>
+<section id="sotd" class="introductory" typeof="bibo:Chapter" resource="#sotd" rel="bibo:chapter">
+<h2>
+Status
+of
+This
+Document
+</h2>
+<p>
+This
+<del class="diff-old">section
+describes
+the
+status
+of
+this
+document
+at
+</del>
+<ins class="diff-chg">specification
+was
+published
+by
+</ins>
+the
+<del class="diff-old">time
+of
+its
+publication.
+Other
+documents
+may
+supersede
+this
+document.
+A
+list
+of
+current
+</del>
+<a href="http://www.w3.org/2011/rdf-wg/">
+<ins class="diff-chg">RDF
+Working
+Group
+</ins></a>.<ins class="diff-chg">
+It
+is
+not
+a
+</ins>
+W3C
+<del class="diff-old">publications
+and
+</del>
+<ins class="diff-chg">Standard
+nor
+is
+it
+on
+</ins>
+the
+<del class="diff-old">latest
+revision
+of
+this
+technical
+report
+can
+be
+found
+in
+</del>
+<ins class="diff-chg">W3C
+Standards
+Track.
+Please
+note
+that
+under
+</ins>
+the
+<a href="https://www.w3.org/community/about/agreements/final/">
+W3C
+<del class="diff-old">technical
+reports
+index
+</del>
+<ins class="diff-chg">Community
+Final
+Specification
+Agreement
+(FSA)
+</ins>
+</a>
+<del class="diff-old">at
+http://www.w3.org/TR/.
+</del>
+<ins class="diff-chg">other
+conditions
+apply.
+Learn
+more
+about
+</ins><a href="http://www.w3.org/community/"><ins class="diff-chg">
+W3C
+Community
+and
+Business
+Groups
+</ins></a>.
+</p>
+<p>
+This
+document
+has
+been
+under
+development
+for
+over
+<del class="diff-old">20
+</del>
+<ins class="diff-chg">25
+</ins>
+months
+in
+the
+JSON
+for
+Linking
+Data
+Community
+Group.
+The
+document
+has
+recently
+been
+transferred
+to
+the
+RDF
+Working
+Group
+for
+review,
+improvement,
+and
+<del class="diff-old">publication
+along
+the
+Recommendation
+track.
+</del>
+<ins class="diff-chg">publication.
+</ins>
+The
+specification
+has
+undergone
+significant
+development,
+review,
+and
+changes
+during
+the
+course
+of
+the
+last
+<del class="diff-old">20
+</del>
+<ins class="diff-chg">25
+</ins>
+months.
+</p>
+<p>
+There
+are
+several
+independent
+<a href="http://json-ld.org/#impl">
+interoperable
+implementations
+</a>
+of
+this
+specification.
+There
+is
+a
+<a href="https://github.com/json-ld/json-ld.org/tree/master/test-suite">
+fairly
+complete
+test
+suite
+</a>
+and
+a
+<a href="http://json-ld.org/playground/">
+live
+JSON-LD
+editor
+</a>
+that
+is
+capable
+of
+demonstrating
+the
+features
+described
+in
+this
+document.
+While
+development
+on
+implementations,
+the
+test
+suite
+and
+the
+live
+editor
+will
+continue,
+they
+are
+believed
+to
+be
+mature
+enough
+to
+be
+integrated
+into
+a
+non-production
+system
+at
+this
+point
+in
+time
+with
+the
+expectation
+that
+they
+could
+be
+used
+in
+a
+production
+system
+within
+the
+next
+year.
+</p>
+<p>
+There
+are
+a
+number
+of
+ways
+that
+one
+may
+participate
+in
+the
+development
+of
+this
+specification:
+</p>
+<ul>
+<li>
+If
+you
+want
+to
+make
+sure
+that
+your
+feedback
+is
+formally
+addressed
+by
+the
+RDF
+Working
+Group,
+you
+should
+send
+it
+to
+public-rdf-comments:
+<a href="http://lists.w3.org/Archives/Public/public-rdf-comments/">
+public-rdf-comments@w3.org
+</a>
+</li>
+<li>
+Ad-hoc
+technical
+discussion
+primarily
+occurs
+on
+the
+public
+community
+mailing
+list:
+<a href="http://lists.w3.org/Archives/Public/public-linked-json/">
+public-linked-json@w3.org
+</a>
+</li>
+<li>
+<a href="http://json-ld.org/minutes/">
+Public
+JSON-LD
+Community
+Group
+teleconferences
+</a>
+are
+held
+on
+Tuesdays
+at
+1500UTC
+every
+week.
+</li>
+<li>
+RDF
+Working
+Group
+teleconferences
+are
+held
+on
+Wednesdays
+at
+1500UTC
+every
+week.
+Participation
+is
+limited
+to
+RDF
+Working
+Group
+members.
+</li>
+<li>
+Specification
+bugs
+and
+issues
+should
+be
+reported
+in
+the
+<a href="https://github.com/json-ld/json-ld.org/issues">
+issue
+tracker
+</a>
+if
+you
+do
+not
+want
+to
+send
+an
+e-mail
+to
+the
+public-rdf-comments
+mailing
+list.
+</li>
+<li>
+<a href="https://github.com/json-ld/json-ld.org/tree/master/spec">
+Source
+code
+</a>
+for
+the
+specification
+can
+be
+found
+on
+Github.
+</li>
+<li>
+The
+<a href="http://webchat.freenode.net/?channels=json-ld">
+#json-ld
+</a>
+IRC
+channel
+is
+available
+for
+real-time
+discussion
+on
+irc.freenode.net.
+</li>
+</ul>
+<del class="diff-old">This
+document
+was
+published
+by
+the
+RDF
+Working
+Group
+as
+an
+Editor's
+Draft.
+If
+you
+wish
+to
+make
+comments
+regarding
+this
+document,
+please
+send
+them
+to
+public-rdf-comments@w3.org
+(
+subscribe
+,
+archives
+).
+All
+feedback
+is
+welcome.
+Publication
+as
+an
+Editor's
+Draft
+does
+not
+imply
+endorsement
+by
+the
+W3C
+Membership.
+This
+is
+a
+draft
+document
+and
+may
+be
+updated,
+replaced
+or
+obsoleted
+by
+other
+documents
+at
+any
+time.
+It
+is
+inappropriate
+to
+cite
+this
+document
+as
+other
+than
+work
+in
+progress.
+This
+document
+was
+produced
+by
+a
+group
+operating
+under
+the
+5
+February
+2004
+W3C
+Patent
+Policy
+.
+W3C
+maintains
+a
+public
+list
+of
+any
+patent
+disclosures
+made
+in
+connection
+with
+the
+deliverables
+of
+the
+group;
+that
+page
+also
+includes
+instructions
+for
+disclosing
+a
+patent.
+An
+individual
+who
+has
+actual
+knowledge
+of
+a
+patent
+which
+the
+individual
+believes
+contains
+Essential
+Claim(s)
+must
+disclose
+the
+information
+in
+accordance
+with
+section
+6
+of
+the
+W3C
+Patent
+Policy
+.
+</del>
+</section>
+<section id="toc">
+<h2 class="introductory">
+Table
+of
+Contents
+</h2>
+<ul class="toc">
+<li class="tocline">
+<a href="#introduction" class="tocxref">
+<span class="secno">
+1.
+</span>
+Introduction
+</a>
+<ul class="toc">
+<li class="tocline">
+<a href="#how-to-read-this-document" class="tocxref">
+<span class="secno">
+1.1
+</span>
+How
+to
+Read
+this
+Document
+</a>
+</li>
+</ul>
+</li>
+<li class="tocline">
+<a href="#design-goals-and-rationale" class="tocxref">
+<span class="secno">
+2.
+</span>
+Design
+Goals
+and
+Rationale
+</a>
+</li>
+<li class="tocline">
+<a href="#terminology" class="tocxref">
+<span class="secno">
+3.
+</span>
+Terminology
+</a>
+<ul class="toc">
+<li class="tocline">
+<a href="#general-terminology" class="tocxref">
+<span class="secno">
+3.1
+</span>
+General
+Terminology
+</a>
+</li>
+<li class="tocline">
+<a href="#syntax-tokens-and-keywords" class="tocxref">
+<span class="secno">
+3.2
+</span>
+Syntax
+Tokens
+and
+Keywords
+</a>
+</li>
+</ul>
+</li>
+<li class="tocline">
+<a href="#conformance" class="tocxref">
+<span class="secno">
+4.
+</span>
+Conformance
+</a>
+</li>
+<li class="tocline">
+<a href="#basic-concepts" class="tocxref">
+<span class="secno">
+5.
+</span>
+Basic
+Concepts
+</a>
+<ul class="toc">
+<li class="tocline">
+<a href="#the-context" class="tocxref">
+<span class="secno">
+5.1
+</span>
+The
+Context
+</a>
+</li>
+<li class="tocline">
+<del class="diff-old">5.2
+From
+JSON
+to
+JSON-LD
+</del>
+<a href="#iris" class="tocxref">
+<span class="secno">
+<del class="diff-old">5.3
+</del>
+<ins class="diff-chg">5.2
+</ins>
+</span>
+IRIs
+</a>
+</li>
+<li class="tocline">
+<a href="#node-identifiers" class="tocxref">
+<span class="secno">
+<del class="diff-old">5.4
+</del>
+<ins class="diff-chg">5.3
+</ins>
+</span>
+Node
+Identifiers
+</a>
+</li>
+<li class="tocline">
+<a href="#specifying-the-type" class="tocxref">
+<span class="secno">
+<del class="diff-old">5.5
+</del>
+<ins class="diff-chg">5.4
+</ins>
+</span>
+Specifying
+the
+Type
+</a>
+</li>
+<del class="diff-old">5.6
+String
+Internationalization
+5.7
+JSON-LD
+Syntax
+</del>
+</ul>
+</li>
+<li class="tocline">
+<a href="#advanced-concepts" class="tocxref">
+<span class="secno">
+6.
+</span>
+Advanced
+Concepts
+</a>
+<ul class="toc">
+<li class="tocline">
+<a href="#compact-iris" class="tocxref">
+<span class="secno">
+6.1
+</span>
+Compact
+IRIs
+</a>
+</li>
+<li class="tocline">
+<a href="#typed-values" class="tocxref">
+<span class="secno">
+6.2
+</span>
+Typed
+Values
+</a>
+</li>
+<li class="tocline">
+<a href="#type-coercion" class="tocxref">
+<span class="secno">
+6.3
+</span>
+<del class="diff-old">Language-tagged
+Strings
+</del>
+<ins class="diff-chg">Type
+Coercion
+</ins>
+</a>
+</li>
+<li class="tocline">
+<a href="#advanced-context-usage" class="tocxref">
+<span class="secno">
+6.4
+</span>
+<del class="diff-old">Referencing
+Contexts
+from
+</del>
+<ins class="diff-chg">Advanced
+Context
+Usage
+</ins></a><ul class="toc"><li class="tocline"><a href="#interpreting-json-as-json-ld" class="tocxref"><span class="secno"><ins class="diff-chg">
+6.4.1
+</ins></span><ins class="diff-chg">
+Interpreting
+</ins>
+JSON
+<del class="diff-old">Documents
+</del>
+<ins class="diff-chg">as
+JSON-LD
+</ins>
+</a>
+</li>
+</ul>
+</li>
+<li class="tocline">
+<a href="#string-internationalization" class="tocxref">
+<span class="secno">
+6.5
+</span>
+<del class="diff-old">Expanded
+Term
+Definition
+</del>
+<ins class="diff-chg">String
+Internationalization
+</ins>
+</a>
+</li>
+<li class="tocline">
+<a href="#overriding-vocab" class="tocxref">
+<span class="secno">
+6.6
+</span>
+<del class="diff-old">Type
+Coercion
+</del>
+<ins class="diff-chg">Overriding
+@vocab
+</ins>
+</a>
+</li>
+<li class="tocline">
+<a href="#property-generators" class="tocxref">
+<span class="secno">
+6.7
+</span>
+Property
+Generators
+</a>
+</li>
+<li class="tocline">
+<a href="#iri-expansion-within-a-context" class="tocxref">
+<span class="secno">
+6.8
+</span>
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+Expansion
+Within
+a
+Context
+</a>
+</li>
+<li class="tocline">
+<a href="#sets-and-lists" class="tocxref">
+<span class="secno">
+6.9
+</span>
+Sets
+and
+Lists
+</a>
+</li>
+<li class="tocline">
+<a href="#embedding" class="tocxref">
+<span class="secno">
+6.10
+</span>
+Embedding
+</a>
+</li>
+<li class="tocline">
+<a href="#named-graphs" class="tocxref">
+<span class="secno">
+6.11
+</span>
+Named
+Graphs
+</a>
+</li>
+<li class="tocline">
+<a href="#identifying-blank-nodes" class="tocxref">
+<span class="secno">
+6.12
+</span>
+Identifying
+Blank
+Nodes
+</a>
+</li>
+<li class="tocline">
+<a href="#aliasing-keywords" class="tocxref">
+<span class="secno">
+6.13
+</span>
+Aliasing
+Keywords
+</a>
+</li>
+<li class="tocline">
+<a href="#expanded-document-form" class="tocxref">
+<span class="secno">
+6.14
+</span>
+<del class="diff-old">Data
+Annotations
+</del>
+<ins class="diff-chg">Expanded
+Document
+Form
+</ins>
+</a>
+</li>
+<li class="tocline">
+<a href="#compact-document-form" class="tocxref">
+<span class="secno">
+6.15
+</span>
+<del class="diff-old">Explicitly
+Ignoring
+Data
+6.16
+Expanded
+</del>
+<ins class="diff-chg">Compact
+</ins>
+Document
+Form
+</a>
+</li>
+<li class="tocline">
+<a href="#data-indexing" class="tocxref">
+<span class="secno">
+<del class="diff-old">6.17
+</del>
+<ins class="diff-chg">6.16
+</ins>
+</span>
+<del class="diff-old">Compact
+Document
+Form
+</del>
+<ins class="diff-chg">Data
+Indexing
+</ins>
+</a>
+</li>
+</ul>
+</li>
+<li class="tocline">
+<a href="#data-model" class="tocxref">
+<span class="secno">
+A.
+</span>
+Data
+Model
+</a>
+</li>
+<li class="tocline">
+<a href="#json-ld-grammar" class="tocxref">
+<span class="secno">
+B.
+</span>
+JSON-LD
+Grammar
+</a>
+<ul class="toc">
+<li class="tocline">
+<a href="#grammar-node-object" class="tocxref">
+<span class="secno">
+B.1
+</span>
+Node
+Object
+</a>
+</li>
+<li class="tocline">
+<a href="#grammar-term-reference" class="tocxref">
+<span class="secno">
+B.2
+</span>
+Term
+</a>
+</li>
+<li class="tocline">
+<a href="#grammar-language-map" class="tocxref">
+<span class="secno">
+B.3
+</span>
+Language
+Map
+</a>
+</li>
+<li class="tocline">
+<a href="#grammar-index-map" class="tocxref">
+<span class="secno">
+B.4
+</span>
+<del class="diff-old">Annotation
+</del>
+<ins class="diff-chg">Index
+</ins>
+Map
+</a>
+</li>
+<li class="tocline">
+<a href="#grammar-expanded-values" class="tocxref">
+<span class="secno">
+B.5
+</span>
+Expanded
+Values
+</a>
+</li>
+<li class="tocline">
+<a href="#grammar-set-list" class="tocxref">
+<span class="secno">
+B.6
+</span>
+List
+and
+Set
+Values
+</a>
+</li>
+<li class="tocline">
+<a href="#grammar-context" class="tocxref">
+<span class="secno">
+B.7
+</span>
+Context
+Definition
+</a>
+</li>
+</ul>
+</li>
+<li class="tocline">
+<a href="#relationship-to-rdf" class="tocxref">
+<span class="secno">
+C.
+</span>
+Relationship
+to
+RDF
+</a>
+</li>
+<li class="tocline">
+<a href="#relationship-to-other-linked-data-formats" class="tocxref">
+<span class="secno">
+D.
+</span>
+Relationship
+to
+Other
+Linked
+Data
+Formats
+</a>
+<ul class="toc">
+<li class="tocline">
+<a href="#turtle" class="tocxref">
+<span class="secno">
+D.1
+</span>
+Turtle
+</a>
+<ul class="toc">
+<li class="tocline">
+<a href="#prefix-definitions" class="tocxref">
+<span class="secno">
+D.1.1
+</span>
+Prefix
+definitions
+</a>
+</li>
+<li class="tocline">
+<a href="#embedding-1" class="tocxref">
+<span class="secno">
+D.1.2
+</span>
+Embedding
+</a>
+</li>
+<li class="tocline">
+<a href="#lists" class="tocxref">
+<span class="secno">
+D.1.3
+</span>
+Lists
+</a>
+</li>
+</ul>
+</li>
+<li class="tocline">
+<a href="#rdfa" class="tocxref">
+<span class="secno">
+D.2
+</span>
+RDFa
+</a>
+</li>
+<li class="tocline">
+<a href="#microformats" class="tocxref">
+<span class="secno">
+D.3
+</span>
+Microformats
+</a>
+</li>
+<li class="tocline">
+<a href="#microdata" class="tocxref">
+<span class="secno">
+D.4
+</span>
+Microdata
+</a>
+</li>
+</ul>
+</li>
+<li class="tocline">
+<a href="#iana-considerations" class="tocxref">
+<span class="secno">
+E.
+</span>
+IANA
+Considerations
+</a>
+</li>
+<li class="tocline">
+<a href="#acknowledgements" class="tocxref">
+<span class="secno">
+F.
+</span>
+Acknowledgements
+</a>
+</li>
+<li class="tocline">
+<a href="#references" class="tocxref">
+<span class="secno">
+G.
+</span>
+References
+</a>
+<ul class="toc">
+<li class="tocline">
+<a href="#normative-references" class="tocxref">
+<span class="secno">
+G.1
+</span>
+Normative
+references
+</a>
+</li>
+<li class="tocline">
+<a href="#informative-references" class="tocxref">
+<span class="secno">
+G.2
+</span>
+Informative
+references
+</a>
+</li>
+</ul>
+</li>
+</ul>
+</section>
+<section class="informative" id="introduction">
+<h2>
+<span class="secno">
+1.
+</span>
+Introduction
+</h2>
+<p>
+<em>
+This
+section
+is
+non-normative.
+</em>
+</p>
+<p>
+<dfn title="linked_data" id="dfn-linked_data">
+Linked
+Data
+</dfn>
+is
+a
+technique
+for
+creating
+a
+network
+of
+inter-connected
+data
+across
+different
+documents
+and
+Web
+sites.
+In
+general,
+Linked
+Data
+has
+four
+properties:
+<del class="diff-old">1)
+it
+</del>
+<ins class="diff-chg">1) it
+</ins>
+uses
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+IRIs
+</a>
+to
+name
+things;
+<del class="diff-old">2)
+it
+</del>
+<ins class="diff-chg">2) it
+</ins>
+uses
+HTTP
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+IRIs
+</a>
+for
+those
+names;
+<del class="diff-old">3)
+the
+</del>
+<ins class="diff-chg">3) the
+</ins>
+name
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+IRIs
+</a>,
+when
+dereferenced,
+provide
+more
+information
+about
+the
+name;
+and
+<del class="diff-old">4)
+the
+</del>
+<ins class="diff-chg">4) the
+</ins>
+data
+expresses
+links
+to
+data
+on
+other
+Web
+sites.
+These
+properties
+allow
+data
+published
+on
+the
+Web
+to
+work
+much
+like
+Web
+pages
+do
+today.
+One
+can
+start
+at
+one
+piece
+of
+Linked
+Data,
+and
+follow
+the
+links
+to
+other
+pieces
+of
+data
+that
+are
+hosted
+on
+different
+sites
+across
+the
+Web.
+</p>
+<p>
+JSON-LD
+is
+designed
+as
+a
+lightweight
+syntax
+to
+express
+<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
+Linked
+Data
+</a>
+in
+JSON
+[
+<cite>
+<a class="bibref" href="#bib-RFC4627">
+RFC4627
+</a>
+</cite>
+].
+It
+is
+primarily
+intended
+to
+be
+a
+way
+to
+use
+Linked
+Data
+in
+Web-based
+programming
+environments.
+It
+is
+also
+useful
+when
+building
+interoperable
+Web
+services
+and
+when
+storing
+Linked
+Data
+in
+JSON-based
+storage
+engines.
+Since
+JSON-LD
+is
+100%
+compatible
+with
+JSON
+the
+large
+number
+of
+JSON
+parsers
+and
+libraries
+available
+today
+can
+be
+reused.
+Additionally
+to
+all
+the
+features
+JSON
+provides,
+JSON-LD
+introduces:
+</p>
+<ul>
+<li>
+a
+universal
+identifier
+mechanism
+for
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+objects
+</a>
+via
+the
+use
+of
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+IRIs
+</a>,
+</li>
+<li>
+a
+way
+to
+disambiguate
+the
+keys
+used
+between
+multiple
+JSON
+documents
+by
+mapping
+them
+to
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+IRIs
+</a>
+via
+a
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>,
+</li>
+<li>
+a
+mechanism
+in
+which
+a
+value
+in
+a
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+</a>
+may
+refer
+to
+a
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+</a>
+on
+a
+different
+site
+on
+the
+Web,
+</li>
+<li>
+the
+ability
+to
+express
+the
+language
+associated
+with
+a
+<a class="tref internalDFN" title="string" href="#dfn-string">
+string
+</a>
+</li>
+<li>
+a
+way
+to
+associate
+datatypes
+with
+values
+such
+as
+dates,
+times,
+weights,
+and
+distances,
+</li>
+<li>
+and
+a
+facility
+to
+express
+one
+or
+more
+directed
+graphs,
+such
+as
+a
+social
+network,
+in
+a
+single
+document.
+</li>
+</ul>
+<p>
+Developers
+that
+require
+any
+of
+the
+facilities
+listed
+above
+or
+need
+to
+serialize
+an
+RDF
+graph
+or
+dataset
+[
+<cite>
+<a class="bibref" href="#bib-RDF-CONCEPTS">
+RDF-CONCEPTS
+</a>
+</cite>
+]
+in
+a
+JSON-based
+syntax
+will
+find
+JSON-LD
+of
+interest.
+The
+syntax
+is
+designed
+to
+not
+disturb
+already
+deployed
+systems
+running
+on
+JSON,
+but
+provide
+a
+smooth
+upgrade
+path
+from
+JSON
+to
+JSON-LD.
+</p>
+<section id="how-to-read-this-document">
+<h3>
+<span class="secno">
+1.1
+</span>
+How
+to
+Read
+this
+Document
+</h3>
+<p>
+<em>
+This
+section
+is
+non-normative.
+</em>
+</p>
+<p>
+This
+document
+is
+a
+detailed
+specification
+for
+a
+serialization
+of
+Linked
+Data
+in
+JSON.
+The
+document
+is
+primarily
+intended
+for
+the
+following
+audiences:
+</p>
+<ul>
+<li>
+Software
+developers
+that
+want
+to
+encode
+Linked
+Data
+in
+a
+variety
+of
+<del class="diff-old">programing
+</del>
+<ins class="diff-chg">programming
+</ins>
+languages
+that
+can
+use
+JSON.
+</li>
+<li>
+Software
+developers
+that
+want
+to
+understand
+the
+design
+decisions
+and
+language
+syntax
+for
+JSON-LD.
+</li>
+<li>
+Software
+developers
+that
+want
+to
+implement
+processors
+and
+APIs
+for
+JSON-LD.
+</li>
+</ul>
+<p>
+This
+specification
+does
+not
+describe
+the
+programming
+interfaces
+for
+the
+JSON-LD
+Syntax.
+The
+specification
+that
+describes
+the
+programming
+interfaces
+for
+JSON-LD
+documents
+is
+the
+JSON-LD
+Application
+Programming
+Interface
+[
+<cite>
+<a class="bibref" href="#bib-JSON-LD-API">
+JSON-LD-API
+</a>
+</cite>
+].
+</p>
+<p>
+To
+understand
+the
+basics
+in
+this
+specification
+you
+must
+first
+be
+familiar
+with
+JSON,
+which
+is
+detailed
+in
+[
+<cite>
+<a class="bibref" href="#bib-RFC4627">
+RFC4627
+</a>
+</cite>
+].
+</p>
+</section>
+</section>
+<section class="informative" id="design-goals-and-rationale">
+<h2>
+<span class="secno">
+2.
+</span>
+Design
+Goals
+and
+Rationale
+</h2>
+<p>
+<em>
+This
+section
+is
+non-normative.
+</em>
+</p>
+<p>
+A
+number
+of
+design
+goals
+were
+established
+before
+the
+creation
+of
+this
+markup
+language:
+</p>
+<dl>
+<dt>
+Simplicity
+</dt>
+<dd>
+No
+extra
+processors
+or
+software
+libraries
+should
+be
+necessary
+to
+use
+JSON-LD
+in
+its
+most
+basic
+form.
+The
+language
+will
+provide
+developers
+with
+a
+very
+easy
+learning
+curve.
+Developers
+only
+need
+to
+know
+JSON
+and
+two
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keywords
+</a>
+(
+<code>
+@context
+</code>
+and
+<code>
+@id
+</code>
+)
+to
+use
+the
+basic
+functionality
+in
+JSON-LD.
+</dd>
+<dt>
+Compatibility
+</dt>
+<dd>
+The
+JSON-LD
+markup
+must
+be
+100%
+compatible
+with
+JSON.
+This
+ensures
+that
+all
+of
+the
+standard
+JSON
+libraries
+work
+seamlessly
+with
+JSON-LD
+documents.
+</dd>
+<dt>
+Expressiveness
+</dt>
+<dd>
+The
+syntax
+must
+be
+able
+to
+express
+directed
+graphs,
+which
+have
+been
+proven
+to
+be
+able
+to
+express
+almost
+every
+real
+world
+data
+model.
+</dd>
+<dt>
+Terseness
+</dt>
+<dd>
+The
+JSON-LD
+syntax
+must
+be
+very
+terse
+and
+human
+readable,
+requiring
+as
+little
+effort
+as
+possible
+from
+the
+developer.
+</dd>
+<dt>
+Zero
+Edits,
+most
+of
+the
+time
+</dt>
+<dd>
+JSON-LD
+must
+<del class="diff-old">provide
+a
+mechanism
+that
+allows
+developers
+</del>
+<ins class="diff-chg">make
+the
+transition
+</ins>
+to
+<del class="diff-old">reference
+contexts
+</del>
+<ins class="diff-chg">JSON-LD
+as
+simple
+as
+possible.
+In
+many
+cases,
+zero
+edits
+to
+the
+JSON
+document
+and
+the
+addition
+of
+one
+line
+to
+the
+HTTP
+response
+should
+suffice
+(see
+</ins><a href="#referencing-contexts-from-json-documents">
+</a>
+<del class="diff-old">in
+responses
+using
+plain
+old
+JSON.
+</del>
+<ins class="diff-chg">).
+</ins>
+This
+allows
+organizations
+that
+have
+already
+deployed
+large
+JSON-based
+infrastructure
+to
+use
+JSON-LD's
+features
+in
+a
+way
+that
+is
+not
+disruptive
+to
+their
+day-to-day
+operations
+and
+is
+transparent
+to
+their
+current
+customers.
+<del class="diff-old">At
+times,
+</del>
+<ins class="diff-chg">However,
+there
+are
+times
+where
+</ins>
+mapping
+JSON
+to
+a
+graph
+representation
+<del class="diff-old">can
+become
+difficult.
+</del>
+<ins class="diff-chg">is
+more
+complex
+than
+a
+simple
+one-line
+change.
+</ins>
+In
+these
+instances,
+rather
+than
+<del class="diff-old">having
+</del>
+<ins class="diff-chg">extending
+</ins>
+JSON-LD
+<ins class="diff-new">to
+</ins>
+support
+an
+esoteric
+use
+case,
+we
+chose
+not
+to
+support
+the
+use
+<del class="diff-old">case
+and
+support
+a
+simplified
+syntax
+instead.
+So,
+while
+</del>
+<ins class="diff-chg">case.
+While
+</ins>
+Zero
+Edits
+is
+a
+design
+goal,
+it
+is
+not
+always
+possible
+without
+adding
+great
+complexity
+to
+the
+language.
+<del class="diff-old">One-pass
+Processing
+JSON-LD
+supports
+one-pass
+processing,
+which
+results
+in
+a
+very
+small
+memory
+footprint
+</del>
+<ins class="diff-chg">We
+should
+focus
+on
+simplicity
+</ins>
+when
+<del class="diff-old">processing
+documents.
+For
+example,
+to
+expand
+a
+JSON-LD
+document
+from
+a
+compacted
+form,
+only
+one
+pass
+is
+required
+over
+the
+data.
+</del>
+<ins class="diff-chg">possible.
+</ins>
+</dd>
+</dl>
+</section>
+<section class="normative" id="terminology">
+<h2>
+<span class="secno">
+3.
+</span>
+Terminology
+</h2>
+<section id="general-terminology">
+<h3>
+<span class="secno">
+3.1
+</span>
+General
+Terminology
+</h3>
+<p>
+This
+document
+uses
+the
+following
+terms
+as
+defined
+in
+JSON
+[
+<cite>
+<a class="bibref" href="#bib-RFC4627">
+RFC4627
+</a>
+</cite>
+].
+Refer
+to
+the
+<em>
+JSON
+Grammar
+</em>
+section
+in
+[
+<cite>
+<a class="bibref" href="#bib-RFC4627">
+RFC4627
+</a>
+</cite>
+]
+for
+formal
+definitions.
+</p>
+<dl>
+<dt>
+<dfn title="json_object" id="dfn-json_object">
+JSON
+object
+</dfn>
+</dt>
+<dd>
+An
+object
+structure
+is
+represented
+as
+a
+pair
+of
+curly
+brackets
+surrounding
+zero
+or
+more
+key-value
+pairs.
+A
+key
+is
+a
+<a class="tref internalDFN" title="string" href="#dfn-string">
+string
+</a>.
+A
+single
+colon
+comes
+after
+each
+key,
+separating
+the
+key
+from
+the
+value.
+A
+single
+comma
+separates
+a
+value
+from
+a
+following
+key.
+</dd>
+<dt>
+<dfn title="array" id="dfn-array">
+array
+</dfn>
+</dt>
+<dd>
+An
+array
+structure
+is
+represented
+as
+square
+brackets
+surrounding
+zero
+or
+more
+<del class="diff-old">values
+(or
+elements).
+Elements
+</del>
+<ins class="diff-chg">values.
+Values
+</ins>
+are
+separated
+by
+commas.
+In
+JSON,
+an
+array
+is
+an
+<em>
+ordered
+</em>
+sequence
+of
+zero
+or
+more
+values.
+While
+JSON-LD
+uses
+the
+same
+array
+representation
+as
+JSON,
+the
+collection
+is
+<em>
+unordered
+</em>
+by
+default.
+While
+order
+is
+preserved
+in
+regular
+JSON
+arrays,
+it
+is
+not
+in
+regular
+JSON-LD
+arrays
+unless
+specific
+markup
+is
+provided
+(see
+<a href="#sets-and-lists" class="sec-ref">
+<span class="secno">
+6.9
+</span>
+<span class="sec-title">
+Sets
+and
+Lists
+</span>
+</a>
+).
+</dd>
+<dt>
+<dfn title="string" id="dfn-string">
+string
+</dfn>
+</dt>
+<dd>
+A
+string
+is
+a
+sequence
+of
+zero
+or
+more
+Unicode
+characters,
+wrapped
+in
+double
+quotes,
+using
+backslash
+escapes
+(if
+necessary).
+A
+character
+is
+represented
+as
+a
+single
+character
+string.
+</dd>
+<dt>
+<dfn title="number" id="dfn-number">
+number
+</dfn>
+</dt>
+<dd>
+A
+number
+is
+similar
+to
+that
+used
+in
+most
+programming
+languages,
+except
+that
+the
+octal
+and
+hexadecimal
+formats
+are
+not
+used
+and
+that
+leading
+zeros
+are
+not
+allowed.
+</dd>
+<dt>
+<dfn title="true" id="dfn-true">
+true
+</dfn>
+and
+<dfn title="false" id="dfn-false">
+false
+</dfn>
+</dt>
+<dd>
+Values
+that
+are
+used
+to
+express
+one
+of
+two
+possible
+boolean
+states.
+</dd>
+<dt>
+<dfn title="null" id="dfn-null">
+null
+</dfn>
+</dt>
+<dd>
+The
+<a class="tref internalDFN" title="null" href="#dfn-null">
+null
+</a>
+<del class="diff-old">value.
+</del>
+<ins class="diff-chg">value,
+which
+is
+typically
+used
+to
+clear
+or
+forget
+data.
+For
+example,
+</ins>
+A
+key-value
+pair
+in
+the
+<code>
+@context
+</code>
+where
+the
+<del class="diff-old">value,
+or
+the
+@id
+of
+the
+value,
+</del>
+<ins class="diff-chg">value
+</ins>
+is
+<a class="tref internalDFN" title="null" href="#dfn-null">
+null
+</a>
+explicitly
+decouples
+a
+<del class="diff-old">term's
+</del>
+<a class="tref internalDFN" title="term" href="#dfn-term">
+<ins class="diff-chg">term
+</ins></a><ins class="diff-chg">
+'s
+</ins>
+association
+with
+an
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+<del class="diff-old">.
+</del>
+</abbr>
+</a>.
+A
+key-value
+pair
+in
+the
+body
+of
+a
+JSON-LD
+document
+whose
+value
+is
+<a class="tref internalDFN" title="null" href="#dfn-null">
+null
+</a>
+has
+the
+same
+meaning
+as
+if
+the
+key-value
+pair
+was
+not
+defined.
+If
+<code>
+@value
+</code>,
+<code>
+@list
+</code>,
+or
+<code>
+@set
+</code>
+is
+set
+to
+<a class="tref internalDFN" title="null" href="#dfn-null">
+null
+</a>
+in
+expanded
+form,
+then
+the
+entire
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+</a>
+is
+ignored.
+</dd>
+</dl>
+</section>
+<section id="syntax-tokens-and-keywords">
+<h3>
+<span class="secno">
+3.2
+</span>
+Syntax
+Tokens
+and
+Keywords
+</h3>
+<p>
+JSON-LD
+specifies
+a
+number
+of
+syntax
+tokens
+and
+<dfn title="keyword" id="dfn-keyword">
+keywords
+</dfn>
+that
+are
+a
+core
+part
+of
+the
+language:
+</p>
+<dl>
+<dt>
+<code>
+@context
+</code>
+</dt>
+<dd>
+Used
+to
+define
+the
+short-hand
+names
+that
+are
+used
+throughout
+a
+JSON-LD
+document.
+These
+short-hand
+names
+are
+called
+<a class="tref internalDFN" title="term" href="#dfn-term">
+terms
+</a>
+and
+help
+developers
+to
+express
+specific
+identifiers
+in
+a
+compact
+manner.
+The
+<code>
+@context
+</code>
+keyword
+is
+described
+in
+detail
+in
+the
+section
+titled
+<a href="#the-context" class="sec-ref">
+<span class="secno">
+5.1
+</span>
+<span class="sec-title">
+The
+Context
+</span>
+</a>.
+</dd>
+<dt>
+<code>
+@id
+</code>
+</dt>
+<dd>
+Used
+to
+uniquely
+identify
+<em>
+things
+</em>
+that
+are
+being
+described
+in
+the
+document.
+This
+keyword
+is
+described
+in
+<a href="#node-identifiers" class="sec-ref">
+<span class="secno">
+<del class="diff-old">5.4
+</del>
+<ins class="diff-chg">5.3
+</ins>
+</span>
+<span class="sec-title">
+Node
+Identifiers
+</span>
+</a>.
+</dd>
+<dt>
+<code>
+@value
+</code>
+</dt>
+<dd>
+Used
+to
+specify
+the
+data
+that
+is
+associated
+with
+a
+particular
+<a class="tref internalDFN" title="property" href="#dfn-property">
+property
+</a>
+in
+the
+graph.
+This
+keyword
+is
+described
+in
+<a href="#string-internationalization" class="sec-ref">
+<span class="secno">
+<del class="diff-old">5.6
+</del>
+<ins class="diff-chg">6.5
+</ins>
+</span>
+<span class="sec-title">
+String
+Internationalization
+</span>
+</a>
+and
+<a href="#typed-values" class="sec-ref">
+<span class="secno">
+6.2
+</span>
+<span class="sec-title">
+Typed
+Values
+</span>
+</a>.
+</dd>
+<dt>
+<code>
+@language
+</code>
+</dt>
+<dd>
+Used
+to
+specify
+the
+native
+language
+for
+a
+particular
+value
+or
+the
+default
+language
+of
+a
+JSON-LD
+document.
+This
+keyword
+is
+described
+in
+the
+section
+titled
+<a href="#string-internationalization" class="sec-ref">
+<span class="secno">
+<del class="diff-old">5.6
+</del>
+<ins class="diff-chg">6.5
+</ins>
+</span>
+<span class="sec-title">
+String
+Internationalization
+</span>
+</a>.
+</dd>
+<dt>
+<code>
+@type
+</code>
+</dt>
+<dd>
+Used
+to
+set
+the
+data
+type
+of
+a
+<a class="tref internalDFN" title="node" href="#dfn-node">
+node
+</a>
+or
+<a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">
+typed
+value
+</a>.
+This
+keyword
+is
+described
+in
+the
+section
+titled
+<a href="#typed-values" class="sec-ref">
+<span class="secno">
+6.2
+</span>
+<span class="sec-title">
+Typed
+Values
+</span>
+</a>.
+</dd>
+<dt>
+<code>
+@container
+</code>
+</dt>
+<dd>
+Used
+to
+set
+the
+<ins class="diff-new">default
+</ins>
+container
+<del class="diff-old">of
+</del>
+<ins class="diff-chg">type
+for
+</ins>
+a
+<del class="diff-old">particular
+value.
+</del>
+<a class="tref internalDFN" title="term" href="#dfn-term">
+<ins class="diff-chg">term
+</ins></a>.
+This
+keyword
+is
+described
+in
+the
+section
+titled
+<a href="#sets-and-lists" class="sec-ref">
+<span class="secno">
+6.9
+</span>
+<span class="sec-title">
+Sets
+and
+Lists
+</span>
+</a>.
+</dd>
+<dt>
+<code>
+@list
+</code>
+</dt>
+<dd>
+Used
+to
+express
+an
+ordered
+set
+of
+data.
+This
+keyword
+is
+described
+in
+the
+section
+titled
+<a href="#sets-and-lists" class="sec-ref">
+<span class="secno">
+6.9
+</span>
+<span class="sec-title">
+Sets
+and
+Lists
+</span>
+</a>.
+</dd>
+<dt>
+<code>
+@set
+</code>
+</dt>
+<dd>
+Used
+to
+express
+an
+unordered
+set
+of
+data
+and
+to
+ensure
+that
+values
+are
+always
+represented
+as
+arrays.
+This
+keyword
+is
+described
+in
+the
+section
+titled
+<a href="#sets-and-lists" class="sec-ref">
+<span class="secno">
+6.9
+</span>
+<span class="sec-title">
+Sets
+and
+Lists
+</span>
+</a>.
+</dd>
+<dt>
+<code>
+<del class="diff-old">@annotation
+</del>
+<ins class="diff-chg">@index
+</ins>
+</code>
+</dt>
+<dd>
+Used
+to
+specify
+that
+a
+container
+is
+used
+to
+index
+information
+and
+that
+processing
+should
+continue
+deeper
+into
+a
+JSON
+data
+structure.
+This
+keyword
+is
+described
+in
+the
+section
+titled
+<a href="#data-indexing" class="sec-ref">
+<span class="secno">
+<del class="diff-old">6.14
+</del>
+<ins class="diff-chg">6.16
+</ins>
+</span>
+<span class="sec-title">
+Data
+<del class="diff-old">Annotations
+</del>
+<ins class="diff-chg">Indexing
+</ins>
+</span>
+</a>.
+</dd>
+<dt>
+<code>
+@vocab
+</code>
+</dt>
+<dd>
+Used
+to
+expand
+properties
+and
+values
+in
+<code>
+@type
+</code>
+with
+a
+common
+prefix
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+This
+keyword
+is
+described
+in
+section
+<a href="#iris" class="sec-ref">
+<span class="secno">
+<del class="diff-old">5.3
+</del>
+<ins class="diff-chg">5.2
+</ins>
+</span>
+<span class="sec-title">
+IRIs
+</span>
+</a>.
+</dd>
+<dt>
+<code>
+@graph
+</code>
+</dt>
+<dd>
+Used
+to
+explicitly
+label
+a
+<a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">
+JSON-LD
+graph
+</a>.
+This
+keyword
+is
+described
+in
+<a href="#named-graphs" class="sec-ref">
+<span class="secno">
+6.11
+</span>
+<span class="sec-title">
+Named
+Graphs
+</span>
+</a>.
+</dd>
+<dt>
+<code>:
+</code>
+</dt>
+<dd>
+The
+separator
+for
+JSON
+keys
+and
+values
+that
+use
+<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
+compact
+IRIs
+</a>.
+</dd>
+</dl>
+<p>
+For
+the
+avoidance
+of
+doubt,
+all
+keys,
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keywords
+</a>,
+and
+values
+in
+JSON-LD
+are
+case-sensitive.
+</p>
+</section>
+</section>
+<section class="normative" id="conformance">
+<h2>
+<span class="secno">
+4.
+</span>
+Conformance
+</h2>
+<p>
+<del class="diff-old">The
+JSON-LD
+Syntax
+</del>
+<ins class="diff-chg">This
+</ins>
+specification
+describes
+the
+conformance
+criteria
+for
+JSON-LD
+<del class="diff-old">documents
+(relevant
+</del>
+<ins class="diff-chg">documents.
+This
+criteria
+is
+relevant
+</ins>
+to
+authors
+and
+authoring
+tool
+<del class="diff-old">implementors).
+</del>
+<ins class="diff-chg">implementers.
+</ins>
+</p>
+<p>
+A
+<a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">
+JSON-LD
+document
+</a>
+complies
+with
+this
+specification
+if
+it
+follows
+the
+normative
+statements
+<del class="diff-old">for
+documents
+defined
+</del>
+in
+<del class="diff-old">sections
+6.4
+Referencing
+Contexts
+from
+JSON
+Documents
+and
+</del>
+<ins class="diff-chg">section
+</ins>
+<a href="#json-ld-grammar" class="sec-ref">
+<span class="secno">
+B.
+</span>
+<span class="sec-title">
+JSON-LD
+Grammar
+</span>
+</a>.
+<ins class="diff-new">JSON
+documents
+can
+be
+interpreted
+as
+JSON-LD
+by
+following
+the
+normative
+statements
+in
+section
+</ins><a href="#referencing-contexts-from-json-documents"></a>.
+For
+convenience,
+normative
+statements
+for
+documents
+are
+often
+phrased
+as
+statements
+on
+the
+properties
+of
+the
+document.
+</p>
+<p>
+The
+key
+words
+<em class="rfc2119" title="must">
+must
+</em>,
+<em class="rfc2119" title="must not">
+must
+not
+</em>,
+<em class="rfc2119" title="required">
+required
+</em>,
+<em class="rfc2119" title="shall">
+shall
+</em>,
+<em class="rfc2119" title="shall not">
+shall
+not
+</em>,
+<em class="rfc2119" title="should">
+should
+</em>,
+<em class="rfc2119" title="should not">
+should
+not
+</em>,
+<em class="rfc2119" title="recommended">
+recommended
+</em>,
+<em class="rfc2119" title="not recommended">
+not
+recommended
+</em>,
+<em class="rfc2119" title="may">
+may
+</em>,
+and
+<em class="rfc2119" title="optional">
+optional
+</em>
+in
+this
+<del class="diff-old">Recommendation
+</del>
+<ins class="diff-chg">specification
+</ins>
+have
+the
+meaning
+defined
+in
+[
+<cite>
+<a class="bibref" href="#bib-RFC2119">
+RFC2119
+</a>
+</cite>
+].
+</p>
+</section>
+<section class="normative" id="basic-concepts">
+<h2>
+<span class="secno">
+5.
+</span>
+Basic
+Concepts
+</h2>
+<p>
+<ins class="diff-chg">JSON
+[
+</ins><cite>
+<del class="diff-old">5.1
+The
+Context
+</del>
+<a class="bibref" href="#bib-RFC4627">
+<ins class="diff-chg">RFC4627
+</ins></a></cite><ins class="diff-chg">
+]
+is
+a
+lightweight,
+language-independent
+data-interchange
+format.
+It
+is
+easy
+to
+parse
+and
+easy
+to
+generate.
+However,
+it
+is
+difficult
+to
+integrate
+JSON
+from
+different
+sources
+as
+the
+data
+has
+just
+local
+meaning.
+Furthermore,
+JSON
+has
+no
+built-in
+support
+for
+hyperlinks
+-
+a
+fundamental
+building
+block
+on
+the
+Web.
+Let's
+look
+at
+an
+example
+that
+we
+will
+be
+using
+for
+the
+rest
+of
+this
+section:
+</ins></p> <div class="example"><div class="example-title"><span>Example 1</span>: Sample JSON document</div><pre class="example">{<ins class="diff-chg">
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "image": "http://manu.sporny.org/images/manu.png"
+}
+</ins></pre></div>
+<p>
+<del class="diff-old">In
+JSON-LD,
+</del>
+<ins class="diff-chg">It's
+obvious
+for
+humans
+that
+the
+data
+is
+about
+</ins>
+a
+<del class="diff-old">context
+</del>
+<ins class="diff-chg">person
+whose
+name
+</ins>
+is
+<del class="diff-old">used
+</del>
+<ins class="diff-chg">"Manu
+Sporny"
+and
+that
+the
+</ins><code><ins class="diff-chg">
+homepage
+</ins></code><ins class="diff-chg">
+property
+contains
+the
+URL
+of
+that
+person's
+homepage.
+A
+machine
+doesn't
+have
+such
+an
+intuitive
+understanding
+and
+sometimes,
+even
+for
+humans,
+it
+is
+difficult
+</ins>
+to
+<del class="diff-old">map
+terms
+,
+i.e.,
+properties
+with
+associated
+values
+</del>
+<ins class="diff-chg">resolve
+ambiguities
+</ins>
+in
+<del class="diff-old">an
+JSON
+document,
+</del>
+<ins class="diff-chg">such
+representations.
+This
+problem
+can
+be
+solved
+by
+using
+unambiguous
+identifiers
+</ins>
+to
+<del class="diff-old">IRIs
+.
+</del>
+<ins class="diff-chg">denote
+the
+different
+concepts
+instead
+of
+</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
+terms
+</ins></a><ins class="diff-chg">
+such
+as
+"name",
+"homepage",
+etc.
+</ins>
+</p>
+<p>
+<del class="diff-old">The
+</del>
+<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
+<ins class="diff-chg">Linked
+Data
+</ins></a>,<ins class="diff-chg">
+and
+the
+</ins>
+Web
+<ins class="diff-new">in
+general,
+</ins>
+uses
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+IRIs
+</a>
+<ins class="diff-new">(Internationalized
+Resource
+Identifiers
+as
+described
+in
+[
+</ins><cite><a class="bibref" href="#bib-RFC3987"><ins class="diff-new">
+RFC3987
+</ins></a></cite><ins class="diff-new">
+])
+</ins>
+for
+unambiguous
+identification.
+The
+idea
+is
+<del class="diff-old">that
+these
+terms
+</del>
+<ins class="diff-chg">to
+assign
+</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><ins class="diff-chg">
+IRIs
+</ins>
+</a>
+<del class="diff-old">mean
+</del>
+<ins class="diff-chg">to
+</ins>
+something
+that
+may
+be
+of
+use
+to
+other
+developers
+and
+that
+it
+is
+useful
+to
+give
+them
+an
+unambiguous
+identifier.
+That
+is,
+it
+is
+useful
+for
+<a class="tref internalDFN" title="term" href="#dfn-term">
+terms
+</a>
+to
+expand
+to
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+IRIs
+</a>
+so
+that
+developers
+don't
+accidentally
+step
+on
+each
+other's
+<del class="diff-old">vocabulary
+terms
+and
+other
+resources.
+</del>
+<ins class="diff-chg">terms.
+</ins>
+Furthermore,
+<del class="diff-old">developers,
+</del>
+<ins class="diff-chg">developers
+</ins>
+and
+<del class="diff-old">machines,
+</del>
+<ins class="diff-chg">machines
+</ins>
+are
+able
+to
+use
+this
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+(by
+<del class="diff-old">plugging
+it
+directly
+into
+</del>
+<ins class="diff-chg">using
+</ins>
+a
+web
+browser,
+for
+instance)
+to
+go
+to
+the
+term
+and
+get
+a
+definition
+of
+what
+the
+term
+means.
+<del class="diff-old">This
+mechanism
+is
+analogous
+to
+</del>
+</p>
+<p>
+<ins class="diff-chg">Leveraging
+</ins>
+the
+<del class="diff-old">way
+we
+can
+use
+WordNet
+today
+to
+see
+</del>
+<ins class="diff-chg">well-known
+</ins><a href="http://schema.org/"><ins class="diff-chg">
+schema.org
+vocabulary
+</ins></a>,
+the
+<del class="diff-old">definition
+of
+words
+in
+</del>
+<ins class="diff-chg">example
+above
+could
+be
+unambiguously
+expressed
+as
+follows:
+</ins></p> <div class="example"><div class="example-title"><span>Example 2</span>: Sample JSON-LD document using full IRIs instead of terms</div><pre class="example">{<ins class="diff-chg">
+ "<span class="diff">http://schema.org/name</span>": "Manu Sporny",
+ "<span class="diff">http://schema.org/url</span>": <span class="diff">{ "@id": </span>"http://manu.sporny.org/" <span class="diff">}</span>,
+ "<span class="diff">http://schema.org/image</span>": <span class="diff">{ "@id": </span>"http://manu.sporny.org/images/manu.png" <span class="diff">}</span>
+}
+</ins></pre></div><p><ins class="diff-chg">
+In
+</ins>
+the
+<del class="diff-old">English
+language.
+Developers
+</del>
+<ins class="diff-chg">example
+above,
+every
+property
+is
+unambiguously
+identified
+by
+an
+</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
+IRI
+</ins></abbr></a>
+and
+<del class="diff-old">machines
+need
+the
+same
+sort
+of
+definition
+of
+terms.
+</del>
+<ins class="diff-chg">all
+values
+representing
+</ins>
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+IRIs
+</a>
+<del class="diff-old">provide
+a
+way
+to
+ensure
+that
+these
+terms
+</del>
+are
+<del class="diff-old">unambiguous.
+For
+example,
+</del>
+<ins class="diff-chg">explicitly
+marked
+as
+such
+by
+</ins>
+the
+<del class="diff-old">term
+</del>
+<code>
+<del class="diff-old">name
+</del>
+<ins class="diff-chg">@id
+</ins>
+</code>
+<del class="diff-old">may
+map
+directly
+to
+the
+IRI
+http://xmlns.com/foaf/0.1/name
+.
+This
+allows
+</del>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<ins class="diff-chg">keyword
+</ins></a>.<ins class="diff-chg">
+While
+this
+is
+a
+valid
+</ins>
+JSON-LD
+<del class="diff-old">documents
+to
+be
+constructed
+using
+the
+common
+JSON
+practice
+of
+simple
+key-value
+pairs
+while
+ensuring
+</del>
+<ins class="diff-chg">document
+</ins>
+that
+<del class="diff-old">the
+data
+</del>
+is
+<del class="diff-old">useful
+outside
+of
+</del>
+<ins class="diff-chg">very
+specific
+about
+its
+data,
+</ins>
+the
+<del class="diff-old">page,
+API
+or
+database
+in
+which
+it
+resides.
+Note
+that,
+</del>
+<ins class="diff-chg">document
+is
+also
+overly
+verbose
+and
+difficult
+</ins>
+to
+<del class="diff-old">avoid
+forward-compatibility
+issues,
+terms
+starting
+</del>
+<ins class="diff-chg">work
+</ins>
+with
+<del class="diff-old">an
+@
+character
+are
+to
+be
+avoided
+as
+they
+might
+be
+used
+as
+keywords
+in
+future
+versions
+of
+JSON-LD.
+Furthermore,
+</del>
+<ins class="diff-chg">for
+human
+developers.
+To
+address
+this
+issue,
+JSON-LD
+introduces
+</ins>
+the
+<del class="diff-old">use
+</del>
+<ins class="diff-chg">notion
+</ins>
+of
+<del class="diff-old">empty
+terms
+</del>
+<ins class="diff-chg">a
+</ins><a class="tref internalDFN" title="context" href="#dfn-context"><ins class="diff-chg">
+context
+</ins>
+</a>
+<del class="diff-old">(
+""
+)
+is
+discouraged
+</del>
+as
+<del class="diff-old">not
+all
+programming
+languages
+are
+able
+to
+handle
+empty
+property
+names.
+</del>
+<ins class="diff-chg">described
+in
+the
+next
+section.
+</ins>
+</p>
+<section id="the-context">
+<h3>
+<span class="secno">
+<ins class="diff-new">5.1
+</ins></span><ins class="diff-new">
+The
+Context
+</ins></h3>
+<p>
+<del class="diff-old">In
+</del>
+<ins class="diff-chg">Simply
+speaking,
+</ins>
+a
+<del class="diff-old">JSON-LD
+document,
+the
+mapping
+between
+</del>
+<dfn title="context" id="dfn-context">
+<ins class="diff-chg">context
+</ins></dfn><ins class="diff-chg">
+is
+used
+to
+map
+</ins>
+<a class="tref internalDFN" title="term" href="#dfn-term">
+terms
+</a>,
+<ins class="diff-new">i.e.,
+</ins><a class="tref internalDFN" title="property" href="#dfn-property"><ins class="diff-new">
+properties
+</ins>
+</a>
+<del class="diff-old">and
+</del>
+<ins class="diff-chg">with
+associated
+values,
+to
+</ins>
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+IRIs
+</a>.
+<a class="tref internalDFN" title="term" href="#dfn-term">
+<ins class="diff-new">Terms
+</ins></a><ins class="diff-new">
+are
+case
+sensitive
+and
+any
+valid
+</ins><a class="tref internalDFN" title="string" href="#dfn-string"><ins class="diff-new">
+string
+</ins>
+</a>
+<ins class="diff-new">that
+</ins>
+is
+<del class="diff-old">typically
+collected
+</del>
+<ins class="diff-chg">not
+a
+reserved
+JSON-LD
+</ins><a class="tref internalDFN" title="keyword" href="#dfn-keyword"><ins class="diff-chg">
+keyword
+</ins></a><ins class="diff-chg">
+can
+be
+used
+as
+a
+</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
+term
+</ins></a>.</p><p><ins class="diff-chg">
+For
+the
+sample
+document
+</ins>
+in
+<ins class="diff-new">the
+previous
+section,
+</ins>
+a
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+<del class="diff-old">definition
+</del>
+</a>
+<del class="diff-old">that
+</del>
+would
+look
+something
+like
+this:
+</p>
+<del class="diff-old">{
+ "@context":
+</del>
+ <div class="example"><div class="example-title"><span>Example 3</span>: Context for the sample document in the previous section</div><pre class="example">{
+ <span class="diff">"@context":
+ {
+<del class="diff-old"> "name": "http://xmlns.com/foaf/0.1/name",
+ "depiction":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/depiction",
+ "@type": "@id"
+ },
+ "homepage":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+</del>
+<ins class="diff-chg"> "name": "http://schema.org/name",
+ "image": {
+ "@id": "http://schema.org/image",
+ "@type": "@id"
+</ins>
+ },
+<del class="diff-old"> }
+</del>
+<ins class="diff-chg"> "homepage": {
+ "@id": "http://schema.org/url",
+ "@type": "@id"
+ }
+ }</span>
+</ins>
+}
+</pre>
+</div>
+<p>
+<del class="diff-old">Let's
+assume
+that
+</del>
+<ins class="diff-chg">As
+the
+</ins><a class="tref internalDFN" title="context" href="#dfn-context"><ins class="diff-chg">
+context
+</ins></a><ins class="diff-chg">
+above
+shows,
+the
+value
+of
+</ins>
+a
+<del class="diff-old">developer
+starts
+with
+</del>
+<dfn title="term_definition" id="dfn-term_definition">
+<ins class="diff-chg">term
+definition
+</ins></dfn><ins class="diff-chg">
+can
+either
+be
+a
+simple
+string,
+mapping
+</ins>
+the
+<del class="diff-old">following
+</del>
+<a class="tref internalDFN" title="term" href="#dfn-term">
+<ins class="diff-chg">term
+</ins></a><ins class="diff-chg">
+to
+an
+</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
+IRI
+</ins></abbr></a>,<ins class="diff-chg">
+or
+a
+</ins><a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+<del class="diff-old">document:
+</del>
+<ins class="diff-chg">object
+</ins></a>.
+</p>
+<del class="diff-old">{
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "depiction": "http://twitter.com/account/profile_image/manusporny"
+}
+</del>
+<p>
+<del class="diff-old">The
+developer
+can
+add
+</del>
+<ins class="diff-chg">When
+</ins>
+a
+<del class="diff-old">single
+line
+to
+the
+</del>
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+<del class="diff-old">document
+</del>
+<ins class="diff-chg">object
+</ins></a><ins class="diff-chg">
+is
+associated
+with
+a
+term,
+it
+is
+called
+an
+</ins><a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition"><ins class="diff-chg">
+expanded
+term
+definition
+</ins></a>.<dfn title="expanded_term_definition" id="dfn-expanded_term_definition"><ins class="diff-chg">
+Expanded
+term
+definitions
+</ins></dfn><ins class="diff-chg">
+may
+be
+used
+to
+associate
+</ins><a href="#type-coercion"><ins class="diff-chg">
+type
+</ins></a><ins class="diff-chg">
+or
+</ins><a href="#string-internationalization"><ins class="diff-chg">
+language
+information
+</ins></a><ins class="diff-chg">
+with
+a
+term.
+The
+example
+</ins>
+above
+<ins class="diff-new">specifies
+that
+the
+values
+of
+</ins><code><ins class="diff-new">
+image
+</ins></code><ins class="diff-new">
+and
+</ins><code><ins class="diff-new">
+homepage
+</ins></code><ins class="diff-new">
+terms
+are
+</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><ins class="diff-new">
+IRIs
+</ins></a>.<ins class="diff-new">
+They
+also
+allow
+terms
+</ins>
+to
+<del class="diff-old">reference
+</del>
+<ins class="diff-chg">be
+used
+for
+</ins><a href="#data-indexing"><ins class="diff-chg">
+index
+maps
+</ins></a><ins class="diff-chg">
+and
+to
+specify
+whether
+</ins><a class="tref internalDFN" title="array" href="#dfn-array"><ins class="diff-chg">
+array
+</ins></a><ins class="diff-chg">
+values
+are
+to
+be
+interpreted
+as
+</ins><a href="#sets-and-lists"><ins class="diff-chg">
+sets
+or
+lists
+</ins></a>.<a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition"><ins class="diff-chg">
+Expanded
+term
+definitions
+</ins></a><ins class="diff-chg">
+may
+be
+defined
+using
+</ins><a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri"><ins class="diff-chg">
+absolute
+</ins></a><ins class="diff-chg">
+or
+</ins><a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri"><ins class="diff-chg">
+compact
+IRIs
+</ins></a><ins class="diff-chg">
+as
+keys,
+which
+is
+mainly
+used
+to
+associate
+type
+or
+language
+information
+with
+an
+</ins><a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri"><ins class="diff-chg">
+absolute
+</ins></a><ins class="diff-chg">
+or
+</ins><a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri"><ins class="diff-chg">
+compact
+</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
+IRI
+</ins></abbr></a>.</p><p><a class="tref internalDFN" title="context" href="#dfn-context"><ins class="diff-chg">
+Contexts
+</ins></a><ins class="diff-chg">
+can
+either
+be
+directly
+embedded
+into
+the
+document
+or
+be
+referenced.
+Assuming
+</ins>
+the
+context
+<del class="diff-old">and
+transform
+</del>
+<ins class="diff-chg">document
+in
+the
+previous
+example
+can
+be
+retrieved
+at
+</ins><code><ins class="diff-chg">
+http://json-ld.org/contexts/person.jsonld
+</ins></code>,
+it
+<del class="diff-old">into
+</del>
+<ins class="diff-chg">can
+be
+referenced
+by
+adding
+a
+single
+line
+and
+allows
+</ins>
+a
+JSON-LD
+<del class="diff-old">document:
+</del>
+<ins class="diff-chg">document
+to
+be
+expressed
+much
+more
+concisely
+as
+shown
+in
+the
+example
+below:
+</ins>
+</p>
+<del class="diff-old">{
+
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "depiction": "http://twitter.com/account/profile_image/manusporny"
+</del>
+ <div class="example"><div class="example-title"><span>Example 4</span>: Referencing a JSON-LD context</div><pre class="example">{
+ <span class="diff">"@context": "http://json-ld.org/contexts/person.jsonld",</span>
+<ins class="diff-chg"> "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "image": "http://manu.sporny.org/images/manu.png"
+</ins>
+}
+</pre>
+</div>
+<p>
+The
+<del class="diff-old">additions
+above
+transform
+the
+previous
+JSON
+document
+into
+a
+JSON
+document
+with
+added
+semantics
+because
+the
+@context
+</del>
+<ins class="diff-chg">referenced
+context
+not
+only
+</ins>
+specifies
+how
+the
+<del class="diff-old">name
+,
+homepage
+,
+and
+depiction
+</del>
+terms
+map
+to
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+IRIs
+<del class="diff-old">.
+Mapping
+those
+keys
+to
+IRIs
+gives
+</del>
+</a>
+<ins class="diff-chg">in
+</ins>
+the
+<del class="diff-old">data
+global
+context.
+If
+two
+developers
+use
+</del>
+<ins class="diff-chg">Schema.org
+vocabulary
+but
+also
+specifies
+that
+</ins>
+the
+<del class="diff-old">same
+</del>
+<ins class="diff-chg">values
+of
+the
+</ins><code><ins class="diff-chg">
+homepage
+</ins></code><ins class="diff-chg">
+and
+</ins><code><ins class="diff-chg">
+image
+</ins></code><ins class="diff-chg">
+property
+can
+be
+interpreted
+as
+an
+</ins><a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+<del class="diff-old">to
+describe
+a
+property,
+they
+are
+</del>
+</a>
+<ins class="diff-chg">(e.g.
+</ins><code><ins class="diff-chg">
+"@type":
+"@id"
+</ins></code>,<ins class="diff-chg">
+see
+section
+</ins><a href="#iris" class="sec-ref"><span class="secno"><ins class="diff-chg">
+5.2
+</ins></span><span class="sec-title"><ins class="diff-chg">
+IRIs
+</ins></span></a><ins class="diff-chg">
+for
+</ins>
+more
+<del class="diff-old">than
+likely
+expressing
+the
+same
+concept.
+</del>
+<ins class="diff-chg">details).
+</ins>
+This
+<ins class="diff-new">information
+gives
+the
+data
+global
+context
+and
+</ins>
+allows
+<del class="diff-old">both
+</del>
+developers
+to
+re-use
+each
+<del class="diff-old">others'
+</del>
+<ins class="diff-chg">other's
+</ins>
+data
+without
+having
+to
+agree
+to
+how
+their
+data
+will
+interoperate
+on
+a
+site-by-site
+basis.
+<del class="diff-old">Contexts
+may
+also
+contain
+type,
+language
+or
+additional
+information
+for
+certain
+terms
+.
+</del>
+External
+JSON-LD
+context
+documents
+may
+contain
+extra
+information
+located
+outside
+of
+the
+<code>
+@context
+</code>
+key,
+such
+as
+documentation
+about
+the
+<a class="tref internalDFN" title="term" href="#dfn-term">
+terms
+</a>
+declared
+in
+the
+document.
+Information
+contained
+outside
+of
+the
+<code>
+@context
+</code>
+value
+is
+<del class="diff-old">simply
+discarded
+</del>
+<ins class="diff-chg">ignored
+</ins>
+when
+the
+document
+is
+used
+as
+an
+external
+JSON-LD
+context
+<del class="diff-old">document
+(see
+6.4
+Referencing
+Contexts
+from
+JSON
+Documents
+).
+</del>
+<ins class="diff-chg">document.
+</ins>
+</p>
+<p>
+Contexts
+may
+also
+be
+specified
+in-line.
+This
+<del class="diff-old">ensures
+</del>
+<ins class="diff-chg">has
+the
+advantage
+</ins>
+that
+<a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">
+JSON-LD
+documents
+</a>
+can
+be
+<del class="diff-old">understood
+</del>
+<ins class="diff-chg">processed
+</ins>
+even
+in
+the
+absence
+of
+a
+connection
+to
+the
+Web.
+</p>
+<del class="diff-old">{
+ "@context":
+</del>
+ <div class="example"><div class="example-title"><span>Example 5</span>: In-line context definition</div><pre class="example">{
+ <span class="diff">"@context":
+ {
+<del class="diff-old"> "name": "http://xmlns.com/foaf/0.1/name",
+ "depiction":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/depiction",
+ "@type": "@id"
+ },
+ "homepage":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+</del>
+<ins class="diff-chg"> "name": "http://schema.org/name",
+ "image": {
+ "@id": "http://schema.org/image",
+ "@type": "@id"
+</ins>
+ },
+<del class="diff-old"> },
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "depiction": "http://twitter.com/account/profile_image/manusporny"
+}
+Contexts
+may
+be
+used
+at
+any
+time
+a
+node
+object
+is
+defined.
+In
+particular,
+a
+JSON-LD
+document
+may
+define
+more
+than
+one
+context,
+as
+in
+the
+following
+example:
+[
+ {
+
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "depiction": "http://twitter.com/account/profile_image/manusporny"
+ },
+ {
+
+ "name": "The Empire State Building",
+ "description": "The Empire State Building is a 102-story landmark in New York City.",
+ "geo": {
+ "latitude": "40.75",
+ "longitude": "73.98"
+</del>
+<ins class="diff-chg"> "homepage": {
+ "@id": "http://schema.org/url",
+ "@type": "@id"
+</ins>
+ }
+<del class="diff-old"> }
+]
+This
+is
+useful
+when
+an
+author
+would
+like
+to
+use
+an
+existing
+context
+and
+add
+application-specific
+terms
+to
+the
+existing
+context.
+Duplicate
+context
+terms
+are
+overridden
+using
+a
+last-defined-overrides
+mechanism.
+{
+ "@context":
+ {
+ "name": "http://example.com/person#name",
+ "details": "http://example.com/person#details"
+</del>
+ },</span>
+<del class="diff-old"> "": "Markus Lanthaler",
+ ...
+ "details":
+ {
+ "@context": {
+ "name": "http://example.com/organization#name"
+ },
+ "": "Graz University of Technology"
+ }
+}
+In
+the
+example
+above,
+the
+name
+prefix
+is
+overridden
+in
+the
+more
+deeply
+nested
+details
+structure.
+Note
+that
+this
+is
+rarely
+a
+good
+authoring
+practice
+and
+is
+typically
+used
+when
+there
+exist
+legacy
+applications
+that
+depend
+on
+the
+specific
+structure
+of
+the
+JSON
+object
+.
+If
+a
+term
+is
+re-defined
+within
+a
+context,
+all
+previous
+rules
+associated
+with
+the
+previous
+definition
+are
+removed.
+If
+that
+term
+is
+re-defined
+to
+null
+,
+the
+term
+is
+effectively
+removed
+from
+the
+list
+of
+terms
+defined
+in
+the
+active
+context
+.
+A
+node
+object
+may
+specify
+multiple
+contexts,
+using
+an
+array
+,
+processed
+in
+order.
+The
+set
+of
+contexts
+defined
+within
+a
+specific
+node
+object
+are
+referred
+to
+as
+local
+contexts
+.
+Setting
+the
+context
+to
+null
+effectively
+resets
+the
+active
+context
+to
+an
+empty
+context.
+The
+active
+context
+refers
+to
+the
+accumulation
+of
+local
+contexts
+that
+are
+in
+scope
+at
+a
+specific
+point
+within
+the
+document.
+The
+following
+example
+specifies
+an
+external
+context
+and
+then
+layers
+a
+local
+context
+on
+top
+of
+the
+external
+context:
+{
+ "@context": [
+ "http://json-ld.org/contexts/person.jsonld",
+ {
+ "pic": "http://xmlns.com/foaf/0.1/depiction"
+ }
+ ],
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+
+}
+Note
+To
+ensure
+the
+best
+possible
+performance,
+it
+is
+a
+best
+practice
+to
+put
+the
+context
+definition
+at
+the
+top
+of
+the
+JSON-LD
+document.
+If
+it
+isn't
+listed
+first,
+processors
+have
+to
+save
+each
+key-value
+pair
+until
+the
+context
+is
+processed.
+This
+creates
+a
+memory
+and
+complexity
+burden
+for
+certain
+types
+of
+low-memory
+footprint
+JSON-LD
+processors.
+5.2
+From
+JSON
+to
+JSON-LD
+If
+a
+set
+of
+terms
+such
+as,
+name
+,
+homepage
+,
+and
+depiction
+,
+are
+defined
+in
+a
+context
+,
+and
+that
+context
+is
+used
+to
+resolve
+the
+names
+in
+JSON
+objects
+,
+machines
+are
+able
+to
+automatically
+expand
+the
+terms
+to
+something
+unambiguous
+like
+this:
+ {
+ "": "Manu Sporny",
+ "": "http://manu.sporny.org"
+ "": "http://twitter.com/account/profile_image/manusporny"
+</del>
+<ins class="diff-chg"> "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "image": "http://manu.sporny.org/images/manu.png"
+</ins>
+}
+</pre>
+</div>
+<del class="diff-old">Doing
+this
+allows
+JSON
+to
+be
+unambiguously
+machine-readable
+without
+requiring
+developers
+to
+drastically
+change
+their
+workflow.
+A
+JSON
+object
+used
+to
+define
+property
+values
+of
+a
+node
+is
+called
+a
+node
+object
+.
+Note
+The
+example
+above
+does
+not
+use
+the
+@id
+keyword
+to
+identify
+the
+node
+being
+described
+above.
+This
+type
+of
+node
+is
+called
+a
+blank
+node
+.
+It
+is
+advised
+that
+all
+node
+objects
+in
+JSON-LD
+are
+identified
+by
+IRIs
+via
+the
+@id
+keyword
+unless
+the
+data
+is
+not
+intended
+to
+be
+linked
+to
+from
+other
+data
+sets.
+</del>
+</section>
+<section id="iris">
+<h3>
+<span class="secno">
+<del class="diff-old">5.3
+</del>
+<ins class="diff-chg">5.2
+</ins>
+</span>
+IRIs
+</h3>
+<p>
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+IRIs
+</a>
+(Internationalized
+Resource
+<del class="diff-old">Identifiers)
+</del>
+<ins class="diff-chg">Identifiers
+[
+</ins><cite><a class="bibref" href="#bib-RFC3987"><ins class="diff-chg">
+RFC3987
+</ins></a></cite><ins class="diff-chg">
+])
+</ins>
+are
+fundamental
+to
+<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
+Linked
+Data
+</a>
+as
+that
+is
+how
+most
+<a class="tref internalDFN" title="node" href="#dfn-node">
+nodes
+</a>
+and
+<a class="tref internalDFN" title="property" href="#dfn-property">
+properties
+</a>
+are
+identified.
+<del class="diff-old">IRIs
+can
+be
+expressed
+in
+a
+variety
+of
+different
+ways
+in
+JSON-LD:
+Except
+within
+a
+context
+definition,
+terms
+in
+the
+key
+position
+in
+a
+JSON
+object
+that
+have
+a
+mapping
+in
+the
+active
+context
+expand
+to
+an
+IRI
+.
+If
+there's
+a
+@vocab
+mapping
+in
+the
+active
+context
+also
+terms
+without
+an
+explicit
+mapping
+in
+the
+active
+context
+are
+expanded
+to
+an
+IRI
+.
+An
+IRI
+is
+generated
+for
+the
+string
+value
+specified
+using
+@id
+or
+@type
+.
+An
+IRI
+is
+generated
+for
+the
+string
+value
+of
+any
+key
+for
+which
+there
+are
+coercion
+rules
+in
+effect
+that
+identify
+the
+value
+as
+an
+@id
+.
+</del>
+<ins class="diff-chg">In
+JSON-LD,
+</ins>
+IRIs
+may
+be
+represented
+as
+an
+<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+a
+<a class="tref internalDFN" title="relative_iri" href="#dfn-relative_iri">
+relative
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+An
+<dfn title="absolute_iri" id="dfn-absolute_iri">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</dfn>
+is
+defined
+in
+[
+<cite>
+<a class="bibref" href="#bib-RFC3987">
+RFC3987
+</a>
+</cite>
+]
+<ins class="diff-new">as
+</ins>
+containing
+a
+<em>
+scheme
+</em>
+along
+with
+<em>
+path
+</em>
+and
+optional
+<em>
+query
+</em>
+and
+<em>
+fragment
+</em>
+segments.
+A
+<dfn title="relative_iri" id="dfn-relative_iri">
+relative
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</dfn>
+is
+an
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+that
+is
+relative
+to
+some
+other
+<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+In
+JSON-LD
+all
+<a class="tref internalDFN" title="relative_iri" href="#dfn-relative_iri">
+relative
+IRIs
+</a>
+are
+resolved
+relative
+to
+the
+<dfn title="base_iri" id="dfn-base_iri">
+base
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</dfn>
+associated
+with
+the
+<del class="diff-old">document
+(typically,
+</del>
+<ins class="diff-chg">document,
+which
+is
+typically
+</ins>
+the
+directory
+<del class="diff-old">that
+contains
+the
+document
+or
+</del>
+<ins class="diff-chg">path
+containing
+</ins>
+the
+<del class="diff-old">document
+itself).
+</del>
+<ins class="diff-chg">document.
+</ins>
+</p>
+<p>
+<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
+IRIs
+</a>
+can
+be
+expressed
+directly
+in
+the
+key
+position
+like
+so:
+</p>
+<del class="diff-old">{
+</del>
+ <div class="example"><div class="example-title"><span>Example 6</span>: IRI as a key</div><pre class="example">{
+...
+<del class="diff-old"> "": "Manu Sporny",
+</del>
+<ins class="diff-chg"> "<span class="diff">http://schema.org/name</span>": "Manu Sporny",
+</ins>
+...
+}
+</pre>
+</div>
+<p>
+In
+the
+example
+above,
+the
+key
+<code>
+<del class="diff-old">http://xmlns.com/foaf/0.1/name
+</del>
+<ins class="diff-chg">http://schema.org/name
+</ins>
+</code>
+is
+interpreted
+as
+an
+<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
+<ins class="diff-chg">absolute
+</ins>
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+because
+it
+contains
+a
+colon
+(
+<code>:
+</code>
+)
+and
+the
+<del class="diff-old">'http'
+</del>
+<ins class="diff-chg">"http"
+</ins>
+<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
+prefix
+</a>
+does
+not
+exist
+in
+the
+context.
+</p>
+<p>
+<del class="diff-old">Term
+</del>
+<ins class="diff-chg">Term-to-
+</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
+IRI
+</ins></abbr>
+expansion
+occurs
+<del class="diff-old">for
+IRIs
+</del>
+if
+the
+<del class="diff-old">value
+</del>
+<ins class="diff-chg">key
+</ins>
+matches
+a
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+defined
+within
+the
+<a class="tref internalDFN" title="active_context" href="#dfn-active_context">
+active
+context
+</a>:
+</p>
+<del class="diff-old">{
+ "":
+</del>
+ <div class="example"><div class="example-title"><span>Example 7</span>: Term expansion from context definition</div><pre class="example">{
+<ins class="diff-chg"> "<span class="diff">@context</span>":
+</ins>
+ {
+<del class="diff-old"> ""
+</del>
+<ins class="diff-chg"> "<span class="diff">name</span>": "<span class="diff">http://schema.org/name</span>"
+</ins>
+...
+ },
+<del class="diff-old"> "": "Manu Sporny",
+ "status": "trollin'",
+</del>
+<ins class="diff-chg"> "<span class="diff">name</span>": "Manu Sporny",
+ "status": "trollin'",
+</ins>
+...
+}
+</pre>
+</div>
+<p>
+<del class="diff-old">Terms
+are
+case
+sensitive.
+</del>
+JSON
+keys
+that
+do
+not
+expand
+to
+an
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+are
+ignored,
+or
+removed
+in
+some
+cases,
+by
+the
+[
+<cite>
+<a class="bibref" href="#bib-JSON-LD-API">
+JSON-LD-API
+</a>
+</cite>
+].
+However,
+JSON
+keys
+that
+do
+not
+include
+a
+mapping
+in
+the
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>
+are
+still
+considered
+valid
+expressions
+in
+JSON-LD
+<del class="diff-old">documents
+-
+the
+</del>
+<ins class="diff-chg">documents—the
+</ins>
+keys
+just
+don't
+expand
+to
+unambiguous
+identifiers.
+</p>
+<p>
+<del class="diff-old">Prefixes
+are
+expanded
+when
+the
+form
+of
+the
+value
+is
+a
+compact
+IRI
+represented
+as
+a
+prefix:suffix
+combination,
+and
+the
+prefix
+matches
+a
+term
+defined
+within
+the
+active
+context
+:
+{
+ "":
+ {
+ ""
+...
+ },
+ "": "Manu Sporny",
+...
+}
+foaf:name
+above
+will
+automatically
+expand
+out
+to
+the
+IRI
+http://xmlns.com/foaf/0.1/name
+.
+See
+6.1
+Compact
+IRIs
+for
+more
+details.
+It
+is
+often
+common
+that
+</del>
+<ins class="diff-chg">At
+times,
+</ins>
+all
+<del class="diff-old">types
+and
+</del>
+properties
+<ins class="diff-new">and
+types
+may
+</ins>
+come
+from
+the
+same
+vocabulary.
+JSON-LD's
+<code>
+@vocab
+</code>
+keyword
+allows
+<ins class="diff-new">an
+author
+</ins>
+to
+set
+a
+common
+prefix
+to
+be
+used
+for
+all
+properties
+and
+types
+that
+<del class="diff-old">neither
+</del>
+<ins class="diff-chg">do
+not
+</ins>
+match
+a
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+<del class="diff-old">nor
+</del>
+<ins class="diff-chg">or
+are
+neither
+</ins>
+a
+<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
+compact
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+<del class="diff-old">or
+</del>
+<ins class="diff-chg">nor
+</ins>
+an
+<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+(i.e.,
+<ins class="diff-new">they
+</ins>
+do
+not
+contain
+a
+colon).
+</p>
+<del class="diff-old">{
+ "@context": {
+ "@vocab": "http://xmlns.com/foaf/1.0/"
+</del>
+ <div class="example"><div class="example-title"><span>Example 8</span>: Using a common vocabulary prefix</div><pre class="example">{
+ <span class="diff">"@context": {
+<ins class="diff-chg"> "@vocab": "http://schema.org/"
+</ins>
+ },</span>
+<del class="diff-old"> "@type": ,
+ : "Manu Sporny",
+</del>
+<ins class="diff-chg"> "@type": <span class="diff">"Person"</span>,
+</ins> <span class="diff">"name"</span>: "Manu Sporny",
+}
+</pre>
+</div>
+<p>
+An
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+is
+generated
+when
+a
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+</a>
+is
+used
+in
+the
+value
+position
+<del class="diff-old">that
+</del>
+<ins class="diff-chg">and
+</ins>
+contains
+an
+<code>
+@id
+</code>
+keyword:
+</p>
+<del class="diff-old">{
+</del>
+ <div class="example"><div class="example-title"><span>Example 9</span>: Expanded IRI definition</div><pre class="example">{
+...
+<del class="diff-old"> "homepage": { "": "http://manu.sporny.org" }
+</del>
+<ins class="diff-chg"> "homepage": { "<span class="diff">@id</span>": "http://manu.sporny.org" }
+</ins>
+...
+}
+</pre>
+</div>
+<p>
+Specifying
+a
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+</a>
+with
+an
+<code>
+@id
+</code>
+key
+is
+used
+to
+identify
+that
+<a class="tref internalDFN" title="node" href="#dfn-node">
+node
+</a>
+using
+an
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+<del class="diff-old">When
+the
+object
+has
+only
+the
+@id
+,
+it
+is
+called
+a
+node
+object
+.
+</del>
+This
+facility
+may
+also
+be
+used
+to
+link
+to
+another
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+object
+</a>
+using
+a
+mechanism
+called
+<a class="tref internalDFN" title="embedding" href="#dfn-embedding">
+embedding
+</a>,
+which
+is
+covered
+in
+the
+section
+titled
+<a href="#embedding" class="sec-ref">
+<span class="secno">
+6.10
+</span>
+<span class="sec-title">
+Embedding
+</span>
+</a>.
+</p>
+<p>
+If
+type
+<a class="tref internalDFN" title="coercion" href="#dfn-coercion">
+coercion
+</a>
+rules
+are
+specified
+in
+the
+<code>
+@context
+</code>
+for
+a
+particular
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+or
+property
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>,
+an
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+is
+generated:
+</p>
+<del class="diff-old"> "@context":
+</del>
+ <div class="example"><div class="example-title"><span>Example 10</span>: Type coercion</div><pre class="example">{<span class="diff">
+<ins class="diff-chg"> "@context":
+</ins>
+ {
+ ...
+<del class="diff-old"> "homepage":
+</del>
+<ins class="diff-chg"> "homepage":
+</ins>
+ {
+<del class="diff-old"> "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+</del>
+<ins class="diff-chg"> "@id": "http://schema.org/homepage",
+ "@type": "@id"
+</ins>
+ }
+ ...
+ }</span>
+...
+<del class="diff-old"> "homepage": "http://manu.sporny.org/",
+</del>
+<ins class="diff-chg"> "homepage": "http://manu.sporny.org/",
+</ins>
+...
+}
+</pre>
+</div>
+<p>
+In
+the
+example
+above,
+even
+though
+the
+value
+<code>
+http://manu.sporny.org/
+</code>
+is
+expressed
+as
+a
+JSON
+<a class="tref internalDFN" title="string" href="#dfn-string">
+string
+</a>,
+the
+type
+<a class="tref internalDFN" title="coercion" href="#dfn-coercion">
+coercion
+</a>
+rules
+will
+transform
+the
+value
+into
+an
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+when
+generating
+the
+<a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">
+JSON-LD
+graph
+</a>.
+<ins class="diff-new">See
+</ins><a href="#type-coercion" class="sec-ref"><span class="secno"><ins class="diff-new">
+6.3
+</ins></span><span class="sec-title"><ins class="diff-new">
+Type
+Coercion
+</ins></span></a><ins class="diff-new">
+for
+more
+details
+about
+this
+feature.
+</ins>
+</p>
+<p>
+<ins class="diff-new">In
+summary,
+</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><ins class="diff-new">
+IRIs
+</ins></a><ins class="diff-new">
+can
+be
+expressed
+in
+a
+variety
+of
+different
+ways
+in
+JSON-LD:
+</ins></p><ol><li><a class="tref internalDFN" title="json_object" href="#dfn-json_object"><ins class="diff-new">
+JSON
+object
+</ins></a><ins class="diff-new">
+keys
+that
+have
+a
+</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-new">
+term
+</ins></a><ins class="diff-new">
+mapping
+in
+the
+</ins><a class="tref internalDFN" title="active_context" href="#dfn-active_context"><ins class="diff-new">
+active
+context
+</ins></a><ins class="diff-new">
+expand
+to
+an
+</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
+IRI
+</ins></abbr></a><ins class="diff-new">
+(only
+applies
+outside
+of
+the
+</ins><a class="tref internalDFN" title="context_definition" href="#dfn-context_definition"><ins class="diff-new">
+context
+definition
+</ins></a><ins class="diff-new">
+).
+</ins></li><li><ins class="diff-new">
+If
+there
+is
+a
+</ins><code><ins class="diff-new">
+@vocab
+</ins></code><ins class="diff-new">
+mapping
+in
+the
+active
+context,
+</ins><a class="tref internalDFN" title="json_object" href="#dfn-json_object"><ins class="diff-new">
+JSON
+object
+</ins></a><ins class="diff-new">
+keys
+without
+an
+explicit
+mapping
+in
+the
+</ins><a class="tref internalDFN" title="active_context" href="#dfn-active_context"><ins class="diff-new">
+active
+context
+</ins></a><ins class="diff-new">
+are
+expanded
+to
+an
+</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
+IRI
+</ins></abbr></a>.</li><li><ins class="diff-new">
+An
+</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
+IRI
+</ins></abbr></a><ins class="diff-new">
+is
+generated
+for
+the
+</ins><a class="tref internalDFN" title="string" href="#dfn-string"><ins class="diff-new">
+string
+</ins></a><ins class="diff-new">
+value
+specified
+using
+</ins><code><ins class="diff-new">
+@id
+</ins></code><ins class="diff-new">
+or
+</ins><code><ins class="diff-new">
+@type
+</ins></code>.</li><li><ins class="diff-new">
+An
+</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
+IRI
+</ins></abbr></a><ins class="diff-new">
+is
+generated
+for
+the
+</ins><a class="tref internalDFN" title="string" href="#dfn-string"><ins class="diff-new">
+string
+</ins></a><ins class="diff-new">
+value
+of
+any
+key
+for
+which
+there
+are
+</ins><a class="tref internalDFN" title="coercion" href="#dfn-coercion"><ins class="diff-new">
+coercion
+</ins></a><ins class="diff-new">
+rules
+that
+contain
+a
+</ins><code><ins class="diff-new">
+@type
+</ins></code><ins class="diff-new">
+key
+that
+is
+set
+to
+a
+value
+of
+</ins><code><ins class="diff-new">
+@id
+</ins></code>.</li></ol>
+</section>
+<section id="node-identifiers">
+<h3>
+<span class="secno">
+<del class="diff-old">5.4
+</del>
+<ins class="diff-chg">5.3
+</ins>
+</span>
+Node
+Identifiers
+</h3>
+<p>
+To
+be
+able
+to
+externally
+reference
+<a class="tref internalDFN" title="node" href="#dfn-node">
+nodes
+</a>
+in
+a
+<del class="diff-old">graph,
+</del>
+<a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">
+<ins class="diff-chg">graph
+</ins></a>,
+it
+is
+important
+that
+each
+<a class="tref internalDFN" title="node" href="#dfn-node">
+node
+</a>
+<del class="diff-old">has
+</del>
+<ins class="diff-chg">have
+</ins>
+an
+unambiguous
+identifier.
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+IRIs
+</a>
+are
+a
+fundamental
+concept
+of
+<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
+Linked
+Data
+</a>,
+and
+<a class="tref internalDFN" title="node" href="#dfn-node">
+nodes
+</a>
+should
+have
+a
+<del class="diff-old">de-referencable
+</del>
+<ins class="diff-chg">de-referenceable
+</ins>
+identifier
+used
+to
+name
+and
+locate
+them.
+For
+<a class="tref internalDFN" title="node" href="#dfn-node">
+nodes
+</a>
+to
+be
+truly
+linked,
+de-referencing
+the
+identifier
+should
+result
+in
+a
+representation
+of
+that
+<a class="tref internalDFN" title="node" href="#dfn-node">
+node
+<del class="diff-old">(for
+example,
+using
+a
+URL
+to
+retrieve
+a
+web
+page).
+</del>
+</a>.
+Associating
+an
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+with
+a
+<a class="tref internalDFN" title="node" href="#dfn-node">
+node
+</a>
+tells
+an
+application
+that
+<ins class="diff-new">it
+can
+fetch
+</ins>
+the
+<del class="diff-old">returned
+document
+contains
+</del>
+<ins class="diff-chg">resource
+associated
+with
+the
+</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
+IRI
+</ins></abbr><ins class="diff-chg">
+and
+get
+back
+</ins>
+a
+description
+of
+the
+<a class="tref internalDFN" title="node" href="#dfn-node">
+node
+<del class="diff-old">requested.
+</del>
+</a>.
+</p>
+<p>
+<a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">
+JSON-LD
+documents
+</a>
+may
+also
+contain
+descriptions
+of
+other
+<del class="diff-old">nodes,
+</del>
+<a class="tref internalDFN" title="node" href="#dfn-node">
+<ins class="diff-chg">nodes
+</ins></a>,
+so
+it
+is
+necessary
+to
+be
+able
+to
+uniquely
+identify
+each
+<a class="tref internalDFN" title="node" href="#dfn-node">
+node
+<del class="diff-old">which
+may
+be
+externally
+referenced.
+</del>
+</a>
+<ins class="diff-chg">so
+that
+the
+data
+is
+associated
+with
+the
+correct
+</ins><a class="tref internalDFN" title="node" href="#dfn-node"><ins class="diff-chg">
+node
+</ins></a><ins class="diff-chg">
+in
+an
+unambiguous
+way.
+</ins>
+</p>
+<p>
+<del class="diff-old">The
+</del>
+<ins class="diff-chg">A
+</ins><a class="tref internalDFN" title="node" href="#dfn-node">
+node
+<del class="diff-old">of
+a
+JSON
+object
+</del>
+</a>
+is
+identified
+using
+the
+<code>
+@id
+</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>:
+</p>
+<del class="diff-old">{
+ "@context":
+</del>
+ <div class="example"><div class="example-title"><span>Example 11</span>: Identifying a node</div><pre class="example">{
+<ins class="diff-chg"> "@context":
+</ins>
+ {
+ ...
+<del class="diff-old"> "homepage":
+</del>
+<ins class="diff-chg"> "homepage":
+</ins>
+ {
+<del class="diff-old"> "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+</del>
+<ins class="diff-chg"> "@id": "http://schema.org/homepage",
+ "@type": "@id"
+</ins>
+ }
+<del class="diff-old"> ...
+</del>
+ },
+<del class="diff-old"> "",
+ "homepage": "http://manu.sporny.org/",
+...
+</del>
+<ins class="diff-chg"> "<span class="diff">@id</span>": "<span class="diff">http://example.org/people#joebob</span>",
+ "homepage": "http://joebob.example.com/",
+ ...
+</ins>
+}
+</pre>
+</div>
+<p>
+The
+example
+above
+contains
+a
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+object
+</a>
+identified
+by
+the
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+<code>
+http://example.org/people#joebob
+</code>.
+</p>
+<del class="diff-old">Once
+defined,
+the
+node
+'s
+unique
+identifier
+can
+be
+used
+to
+refer
+to
+it
+from
+other
+parts
+of
+the
+document
+or
+from
+external
+documents,
+using
+a
+node
+object
+that
+only
+contains
+an
+@id
+key:
+{
+ "@context": ...,
+ "@graph": [
+ {
+ "@id": "http://example.org/library",
+ "@type": "ex:Library",
+
+ }, {
+ "@id": "http://example.org/library/the-republic",
+ "@type": "ex:Book",
+ "dc:creator": "Plato",
+ "dc:title": "The Republic",
+
+ }, {
+ "@id": "http://example.org/library/the-republic#introduction",
+ "@type": "ex:Chapter",
+ "dc:description": "An introductory chapter on The Republic.",
+ "dc:title": "The Introduction"
+ }
+ ]
+}
+}
+</del>
+</section>
+<section id="specifying-the-type">
+<h3>
+<span class="secno">
+<del class="diff-old">5.5
+</del>
+<ins class="diff-chg">5.4
+</ins>
+</span>
+Specifying
+the
+Type
+</h3>
+<p>
+The
+type
+of
+a
+particular
+node
+can
+be
+specified
+using
+the
+<code>
+@type
+</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>.
+In
+<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
+Linked
+Data
+</a>,
+types
+are
+uniquely
+identified
+with
+an
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+</p>
+<del class="diff-old">{
+</del>
+<div class="example"><div class="example-title"><span>Example 12</span>: Specifying the type for a node</div><pre class="example">{
+...
+<del class="diff-old"> "@id": "http://example.org/people#joebob",
+ "",
+</del>
+<ins class="diff-chg"> "@id": "http://example.org/places#BrewEats",
+ "<span class="diff">@type</span>": "<span class="diff">http://schema.org/Restaurant</span>",
+</ins>
+...
+}
+</pre>
+</div>
+<p>
+A
+node
+can
+be
+assigned
+more
+than
+one
+type
+by
+using
+<del class="diff-old">the
+following
+markup
+pattern:
+</del>
+<ins class="diff-chg">an
+</ins><a class="tref internalDFN" title="array" href="#dfn-array"><ins class="diff-chg">
+array
+</ins></a>:
+</p>
+<del class="diff-old">{
+</del>
+<div class="example"><div class="example-title"><span>Example 13</span>: Specifying multiple types for a node</div><pre class="example">{
+...
+<del class="diff-old"> "@id": "http://example.org/places#BrewEats",
+ "
+</del>
+<ins class="diff-chg"> "@id": "http://example.org/places#BrewEats",
+ "<span class="diff">@type</span>": <span class="diff">[ "http://schema.org/Restaurant", "http://schema.org/Brewery" ],</span>
+</ins>
+...
+}
+</pre>
+</div>
+<p>
+The
+value
+of
+a
+<code>
+@type
+</code>
+key
+may
+also
+be
+a
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+defined
+in
+the
+<a class="tref internalDFN" title="active_context" href="#dfn-active_context">
+active
+context
+</a>:
+</p>
+<del class="diff-old">{
+ "@context": "http://json-ld.org/contexts/person.jsonld",
+ "@id": "http://manu.sporny.org/i/public",
+ ,
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "depiction": "http://twitter.com/account/profile_image/manusporny"
+}
+5.6
+String
+Internationalization
+At
+times,
+it
+is
+important
+to
+annotate
+a
+string
+with
+its
+language.
+In
+JSON-LD
+this
+is
+possible
+in
+a
+variety
+of
+ways.
+Firstly,
+it
+is
+possible
+to
+define
+a
+default
+language
+for
+a
+JSON-LD
+document
+by
+setting
+the
+@language
+key
+in
+the
+@context
+or
+in
+a
+term
+definition:
+{
+ "@context":
+ {
+ ...
+ "@language": "ja"
+ },
+ "name": ,
+ "occupation":
+}
+The
+example
+above
+would
+associate
+the
+ja
+language
+code
+with
+the
+two
+strings
+花澄
+and
+科学者
+.
+Languages
+codes
+are
+defined
+in
+[
+BCP47
+].
+It
+is
+possible
+to
+override
+the
+default
+language
+by
+using
+an
+expanded
+value
+:
+{
+ "@context": {
+ ...
+ "@language": "ja"
+ },
+ "name": "花澄",
+ "occupation": {
+ "@value": "Scientist",
+ "@language": "en"
+ }
+}
+It
+is
+also
+possible
+to
+override
+the
+default
+language
+or
+specify
+a
+plain
+value
+by
+omitting
+the
+@language
+tag
+or
+setting
+it
+to
+null
+when
+expressing
+the
+expanded
+value
+:
+{
+ "@context": {
+ ...
+ "@language": "ja"
+ },
+ "name": {
+ "@value": "Frank"
+ },
+ "occupation": {
+ "@value": "Ninja",
+ "@language": "en"
+ },
+ "speciality": "手裏剣"
+}
+Please
+note
+that
+language
+associations
+can
+only
+be
+applied
+to
+plain
+literal
+strings
+.
+That
+is,
+typed
+values
+or
+values
+that
+are
+subject
+to
+6.6
+Type
+Coercion
+cannot
+be
+language
+tagged.
+To
+clear
+the
+default
+language
+for
+a
+subtree,
+@language
+can
+be
+set
+to
+null
+in
+a
+local
+context
+as
+follows:
+{
+ "@context": {
+</del>
+<div class="example"><div class="example-title"><span>Example 14</span>: Using a term to specify the type</div><pre class="example">{
+<ins class="diff-chg"> "@context": {
+</ins>
+ ...
+<del class="diff-old"> "@language": "ja"
+ },
+ "name": "花澄",
+ "details": {
+ "@context": {
+ "@language": null
+ },
+ "occupation": "Ninja"
+</del>
+ <span class="diff">"Restaurant": "http://schema.org/Restaurant", </span>
+ <span class="diff">"Brewery": "http://schema.org/Brewery"</span>
+ }
+<ins class="diff-new"> "@id": "http://example.org/places#BrewEats",
+</ins> <span class="diff">"@type": ["Restaurant", "Brewery"]</span>,<ins class="diff-new">
+ ...
+</ins>
+}
+</pre>
+</div>
+<del class="diff-old">Note
+JSON-LD
+allows
+one
+to
+associate
+language
+information
+with
+terms
+.
+See
+6.5
+Expanded
+Term
+Definition
+for
+more
+details.
+5.7
+JSON-LD
+Syntax
+A
+JSON-LD
+document
+is
+first,
+and
+foremost,
+a
+JSON
+document
+(as
+defined
+in
+[
+RFC4627
+]).
+However,
+JSON-LD
+describes
+a
+specific
+syntax
+to
+use
+for
+expressing
+Linked
+Data.
+This
+includes
+the
+use
+of
+specific
+keywords,
+as
+identified
+in
+3.2
+Syntax
+Tokens
+and
+Keywords
+for
+expressing
+node
+objects
+,
+values,
+and
+the
+context
+.
+See
+B.
+JSON-LD
+Grammar
+for
+authoring
+guidelines.
+</del>
+</section>
+</section>
+<section id="advanced-concepts">
+<h2>
+<span class="secno">
+6.
+</span>
+Advanced
+Concepts
+</h2>
+<em>
+This
+section
+is
+normative.
+</em>
+<p>
+JSON-LD
+has
+a
+number
+of
+features
+that
+provide
+functionality
+above
+and
+beyond
+the
+core
+functionality
+described
+above.
+The
+following
+section
+describes
+this
+advanced
+functionality
+in
+more
+detail.
+</p>
+<section id="compact-iris">
+<h3>
+<span class="secno">
+6.1
+</span>
+Compact
+IRIs
+</h3>
+<p>
+<ins class="diff-new">A
+document
+on
+the
+Web
+that
+defines
+one
+or
+more
+IRIs
+for
+use
+as
+</ins><a class="tref internalDFN" title="property" href="#dfn-property"><ins class="diff-new">
+properties
+</ins></a><ins class="diff-new">
+in
+Linked
+Data
+is
+called
+a
+</ins><dfn title="vocabulary" id="dfn-vocabulary"><ins class="diff-new">
+vocabulary
+</ins></dfn>.
+<a class="tref internalDFN" title="term" href="#dfn-term">
+Terms
+</a>
+in
+<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
+Linked
+Data
+</a>
+documents
+may
+draw
+from
+a
+number
+of
+different
+<a class="tref internalDFN" title="vocabulary" href="#dfn-vocabulary">
+vocabularies
+<del class="diff-old">.
+</del>
+</a>
+<ins class="diff-chg">s.
+</ins>
+At
+times,
+declaring
+every
+single
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+that
+a
+document
+uses
+can
+require
+the
+developer
+to
+declare
+tens,
+if
+not
+hundreds
+of
+potential
+vocabulary
+<a class="tref internalDFN" title="term" href="#dfn-term">
+terms
+</a>
+that
+are
+used
+across
+an
+application.
+This
+is
+a
+concern
+for
+at
+least
+two
+reasons:
+the
+first
+is
+the
+cognitive
+load
+on
+the
+developer
+of
+remembering
+all
+of
+the
+<a class="tref internalDFN" title="term" href="#dfn-term">
+terms
+</a>,
+and
+the
+second
+is
+the
+serialized
+size
+of
+the
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>
+if
+it
+is
+specified
+inline.
+In
+order
+to
+address
+these
+issues,
+the
+concept
+of
+a
+<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
+compact
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+is
+introduced.
+</p>
+<p>
+A
+<dfn title="compact_iri" id="dfn-compact_iri">
+compact
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</dfn>
+is
+a
+way
+of
+expressing
+an
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+using
+a
+<em>
+prefix
+</em>
+and
+<em>
+suffix
+</em>
+separated
+by
+a
+colon
+(
+<code>:
+</code>
+)
+which
+is
+similar
+to
+the
+<cite>
+<a href="http://www.w3.org/TR/rdfa-core/#s_curies">
+CURIE
+Syntax
+</a>
+</cite>
+in
+[
+<cite>
+<a class="bibref" href="#bib-RDFA-CORE">
+RDFA-CORE
+</a>
+</cite>
+].
+The
+<dfn title="prefix" id="dfn-prefix">
+prefix
+</dfn>
+is
+a
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+taken
+from
+the
+<a class="tref internalDFN" title="active_context" href="#dfn-active_context">
+active
+context
+</a>
+and
+is
+a
+short
+string
+identifying
+a
+particular
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+in
+a
+JSON-LD
+document.
+For
+example,
+the
+prefix
+<code>
+foaf
+</code>
+may
+be
+used
+as
+a
+short
+hand
+for
+the
+Friend-of-a-Friend
+vocabulary,
+which
+is
+identified
+using
+the
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+<code>
+http://xmlns.com/foaf/0.1/
+</code>.
+A
+developer
+may
+append
+any
+of
+the
+FOAF
+vocabulary
+terms
+to
+the
+end
+of
+the
+prefix
+to
+specify
+a
+short-hand
+version
+of
+the
+<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+for
+the
+vocabulary
+term.
+For
+example,
+<code>
+foaf:name
+</code>
+would
+be
+expanded
+out
+to
+the
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+<code>
+http://xmlns.com/foaf/0.1/name
+</code>.
+Instead
+of
+having
+to
+remember
+and
+type
+out
+the
+entire
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>,
+the
+developer
+can
+instead
+use
+the
+prefix
+in
+their
+JSON-LD
+markup.
+</p>
+<p>
+<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
+<ins class="diff-new">Prefixes
+</ins></a><ins class="diff-new">
+are
+expanded
+when
+the
+form
+of
+the
+value
+is
+a
+</ins><a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri"><ins class="diff-new">
+compact
+</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
+IRI
+</ins></abbr></a><ins class="diff-new">
+represented
+as
+a
+</ins><code><ins class="diff-new">
+prefix:suffix
+</ins></code><ins class="diff-new">
+combination,
+and
+the
+prefix
+matches
+a
+</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-new">
+term
+</ins></a><ins class="diff-new">
+defined
+within
+the
+</ins><a class="tref internalDFN" title="active_context" href="#dfn-active_context"><ins class="diff-new">
+active
+context
+</ins></a>:</p> <div class="example"><div class="example-title"><span>Example 15</span>: Prefix expansion</div><pre class="example">{<ins class="diff-new">
+ "<span class="diff">@context</span>":
+ {
+ "<span class="diff">foaf</span>": "<span class="diff">http://xmlns.com/foaf/0.1/</span>"
+...
+ },
+ "<span class="diff">foaf:name</span>": "Dave Longley",
+...
+}
+</ins></pre></div><p><code><ins class="diff-new">
+foaf:name
+</ins></code><ins class="diff-new">
+above
+will
+automatically
+expand
+out
+to
+the
+</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
+IRI
+</ins></abbr><code><ins class="diff-new">
+http://xmlns.com/foaf/0.1/name
+</ins></code>.</p><p>
+Terms
+are
+interpreted
+as
+<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
+compact
+IRIs
+</a>
+if
+they
+contain
+at
+least
+one
+colon
+and
+the
+first
+colon
+is
+not
+followed
+by
+two
+slashes
+(
+<code>
+//
+</code>,
+as
+in
+<code>
+http://example.com
+</code>
+).
+To
+generate
+the
+full
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+the
+value
+is
+first
+split
+into
+a
+<em>
+prefix
+</em>
+and
+<em>
+suffix
+</em>
+at
+the
+first
+occurrence
+of
+a
+colon
+(
+<code>:
+</code>
+).
+If
+the
+<a class="tref internalDFN" title="active_context" href="#dfn-active_context">
+active
+context
+</a>
+contains
+a
+term
+mapping
+for
+<em>
+prefix
+</em>,
+an
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+is
+generated
+by
+prepending
+the
+mapped
+<em>
+prefix
+</em>
+to
+the
+(possibly
+empty)
+<em>
+suffix
+</em>
+using
+textual
+concatenation.
+If
+no
+prefix
+mapping
+is
+defined,
+the
+value
+is
+interpreted
+as
+an
+<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+If
+the
+prefix
+is
+an
+underscore
+(
+<code>
+_
+</code>
+),
+the
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+remains
+unchanged.
+</p>
+<p>
+Consider
+the
+following
+example:
+</p>
+<del class="diff-old"> {
+ "@context":
+</del>
+ <div class="example"><div class="example-title"><span>Example 16</span>: Compact IRIs</div><pre class="example">{
+<ins class="diff-chg"> "@context":
+</ins>
+ {
+<del class="diff-old">
+
+</del>
+ <span class="diff">"dc": "http://purl.org/dc/elements/1.1/",</span>
+ <span class="diff">"ex": "http://example.org/vocab#"</span>
+ },
+<del class="diff-old"> "@id": "http://example.org/library",
+ "@type": ,
+ :
+</del>
+<ins class="diff-chg"> "@id": "http://example.org/library",
+ "@type": <span class="diff">"ex:Library"</span>,
+</ins> <span class="diff">"ex:contains"</span>:
+ {
+<del class="diff-old"> "@id": "http://example.org/library/the-republic",
+ "@type": ,
+ : "Plato",
+ : "The Republic",
+ :
+</del>
+<ins class="diff-chg"> "@id": "http://example.org/library/the-republic",
+ "@type": <span class="diff">"ex:Book"</span>,
+</ins> <span class="diff">"dc:creator"</span>: "Plato", <span class="diff">"dc:title"</span>: "The Republic", <span class="diff">"ex:contains"</span>:
+ {
+<del class="diff-old"> "@id": "http://example.org/library/the-republic#introduction",
+ "@type": ,
+ : "An introductory chapter on The Republic.",
+ : "The Introduction"
+</del>
+<ins class="diff-chg"> "@id": "http://example.org/library/the-republic#introduction",
+ "@type": <span class="diff">"ex:Chapter"</span>,
+</ins> <span class="diff">"dc:description"</span>: "An introductory chapter on The Republic.", <span class="diff">"dc:title"</span>: "The Introduction"
+ }
+ }
+}
+</pre>
+</div>
+<p>
+In
+this
+example,
+two
+different
+vocabularies
+are
+referred
+to
+using
+prefixes.
+Those
+prefixes
+are
+then
+used
+as
+type
+and
+property
+values
+using
+the
+compact
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+<code>
+prefix:suffix
+</code>
+notation.
+</p>
+<p>
+It's
+also
+possible
+to
+use
+compact
+IRIs
+within
+the
+context
+as
+shown
+in
+the
+following
+example:
+</p>
+<del class="diff-old"> {
+ "@context":
+</del>
+ <div class="example"><div class="example-title"><span>Example 17</span>: Using vocabularies</div><pre class="example">{
+<ins class="diff-chg"> "@context":
+</ins>
+ {
+<del class="diff-old"> "xsd": "http://www.w3.org/2001/XMLSchema#",
+ "foaf": "http://xmlns.com/foaf/0.1/",
+ : { "@type": "@id" },
+ "picture": { "@id": , "@type": "@id" }
+</del>
+<ins class="diff-chg"> "xsd": "http://www.w3.org/2001/XMLSchema#",
+</ins> <span class="diff">"foaf": "http://xmlns.com/foaf/0.1/"</span>, <span class="diff">"foaf:homepage"</span>: { "@type": "@id" },<ins class="diff-chg">
+ "picture": { "@id": <span class="diff">"foaf:depiction"</span>, "@type": "@id" }
+</ins>
+ },
+<del class="diff-old"> "@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/markuslanthaler"
+</del>
+<ins class="diff-chg"> "@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/markuslanthaler"
+</ins>
+}
+</pre>
+</div>
+</section>
+<section id="typed-values">
+<h3>
+<span class="secno">
+6.2
+</span>
+Typed
+Values
+</h3>
+<p>
+A
+value
+with
+an
+associated
+type,
+also
+known
+as
+a
+<a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">
+typed
+value
+</a>,
+is
+indicated
+by
+associating
+a
+value
+with
+an
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+which
+indicates
+the
+value's
+type.
+Typed
+values
+may
+be
+expressed
+in
+JSON-LD
+in
+three
+ways:
+</p>
+<ol>
+<li>
+By
+utilizing
+the
+<code>
+@type
+</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>
+when
+defining
+a
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+within
+a
+<code>
+@context
+</code>
+section.
+</li>
+<li>
+By
+utilizing
+an
+<a class="tref internalDFN" title="expanded_typed_value" href="#dfn-expanded_typed_value">
+expanded
+typed
+value
+</a>.
+</li>
+<li>
+By
+using
+a
+native
+JSON
+type
+such
+as
+<a class="tref internalDFN" title="number" href="#dfn-number">
+number
+</a>,
+<a class="tref internalDFN" title="true" href="#dfn-true">
+true
+</a>,
+or
+<a class="tref internalDFN" title="false" href="#dfn-false">
+false
+</a>.
+</li>
+</ol>
+<p>
+The
+first
+example
+uses
+the
+<code>
+@type
+</code>
+keyword
+to
+associate
+a
+type
+with
+a
+particular
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+in
+the
+<code>
+@context
+</code>:
+</p>
+<del class="diff-old">{
+ "@context":
+</del>
+<div class="example"><div class="example-title"><span>Example 18</span>: Expanded term definition with type coercion</div><pre class="example">{
+ <span class="diff">"@context":
+ {
+<del class="diff-old"> "modified":
+</del>
+<ins class="diff-chg"> "modified":
+</ins>
+ {
+<del class="diff-old"> "@id": "http://purl.org/dc/terms/modified",
+ "@type": "http://www.w3.org/2001/XMLSchema#dateTime"
+</del>
+<ins class="diff-chg"> "@id": "http://purl.org/dc/terms/modified",
+ "@type": "http://www.w3.org/2001/XMLSchema#dateTime"
+</ins>
+ }
+ },</span>
+...
+<del class="diff-old"> "modified": "2010-05-29T14:17:39+02:00",
+</del>
+<ins class="diff-chg"> "@id": "http://example.com/docs/1",
+ "modified": "2010-05-29T14:17:39+02:00",
+</ins>
+...
+}
+</pre>
+</div>
+<p>
+The
+<em>
+modified
+</em>
+key's
+value
+above
+is
+automatically
+type
+coerced
+to
+a
+<del class="diff-old">datetime
+</del>
+<ins class="diff-chg">dateTime
+</ins>
+value
+because
+of
+the
+information
+specified
+in
+the
+<code>
+@context
+</code>.
+<ins class="diff-new">A
+JSON-LD
+processor
+will
+interpret
+the
+markup
+above
+like
+so:
+</ins>
+</p>
+<table class="example">
+<thead>
+<tr>
+<th>
+<ins class="diff-new">Subject
+</ins></th><th><ins class="diff-new">
+Property
+</ins></th><th><ins class="diff-new">
+Value
+</ins></th><th><ins class="diff-new">
+Value
+Type
+</ins></th></tr></thead><tbody><tr><td><ins class="diff-new">
+http://example.com/docs/1
+</ins></td><td><ins class="diff-new">
+http://purl.org/dc/terms/modified
+</ins></td><td><ins class="diff-new">
+2010-05-29T14:17:39+02:00
+</ins></td><td><ins class="diff-new">
+http://www.w3.org/2001/XMLSchema#dateTime
+</ins></td></tr></tbody></table>
+<p>
+The
+second
+example
+uses
+the
+expanded
+form
+of
+setting
+the
+type
+information
+in
+the
+body
+of
+a
+JSON-LD
+document:
+</p>
+<del class="diff-old">{
+ "@context":
+</del>
+<div class="example"><div class="example-title"><span>Example 19</span>: Expanded value with type</div><pre class="example">{
+<ins class="diff-chg"> "@context":
+</ins>
+ {
+<del class="diff-old"> "modified":
+</del>
+<ins class="diff-chg"> "modified":
+</ins>
+ {
+<del class="diff-old"> "@id": "http://purl.org/dc/terms/modified"
+</del>
+<ins class="diff-chg"> "@id": "http://purl.org/dc/terms/modified"
+</ins>
+ }
+ },
+...
+<del class="diff-old"> "modified":
+</del>
+<ins class="diff-chg"> "modified":
+</ins>
+ <span class="diff">{
+<del class="diff-old"> "@value": "2010-05-29T14:17:39+02:00",
+ "@type": "http://www.w3.org/2001/XMLSchema#dateTime"
+</del>
+<ins class="diff-chg"> "@value": "2010-05-29T14:17:39+02:00",
+ "@type": "http://www.w3.org/2001/XMLSchema#dateTime"
+</ins>
+ }</span>
+...
+}
+</pre>
+</div>
+<p>
+Both
+examples
+above
+would
+generate
+the
+value
+<code>
+2010-05-29T14:17:39+02:00
+</code>
+with
+the
+type
+<code>
+http://www.w3.org/2001/XMLSchema#dateTime
+</code>.
+Note
+that
+it
+is
+also
+possible
+to
+use
+a
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+or
+a
+<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
+compact
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+to
+express
+the
+value
+of
+a
+type.
+</p>
+<p>
+The
+<code>
+@type
+</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>
+is
+also
+used
+to
+associate
+a
+type
+with
+a
+<a class="tref internalDFN" title="node" href="#dfn-node">
+node
+</a>.
+The
+concept
+of
+a
+<a class="tref internalDFN" title="node_type" href="#dfn-node_type">
+node
+type
+</a>
+and
+a
+<a class="tref internalDFN" title="value_type" href="#dfn-value_type">
+value
+type
+</a>
+are
+different.
+<del class="diff-old">This
+</del>
+</p>
+<p>
+<ins class="diff-chg">Generally
+speaking,
+a
+</ins><dfn title="node_type" id="dfn-node_type"><ins class="diff-chg">
+node
+type
+</ins></dfn><ins class="diff-chg">
+specifies
+the
+type
+of
+thing
+that
+</ins>
+is
+<del class="diff-old">similar
+to
+object-oriented
+programming
+languages
+where
+both
+scalar
+and
+structured
+types
+use
+</del>
+<ins class="diff-chg">being
+described,
+like
+a
+person,
+place,
+event,
+or
+web
+page.
+A
+</ins><dfn title="value_type" id="dfn-value_type"><ins class="diff-chg">
+value
+type
+</ins></dfn><ins class="diff-chg">
+specifies
+</ins>
+the
+<del class="diff-old">same
+class
+inheritance
+mechanism,
+even
+though
+scalar
+types
+and
+structured
+types
+are
+inherently
+different.
+</del>
+<ins class="diff-chg">unit
+of
+measurement
+for
+a
+particular
+value,
+such
+as
+a
+date,
+meter,
+or
+light
+year.
+</ins>
+</p>
+<del class="diff-old">{
+</del>
+<div class="example"><div class="example-title"><span>Example 20</span>: Example demonstrating the context-sensitivity for @type</div><pre class="example">{
+...
+<del class="diff-old"> "@id": "http://example.org/posts#TripToWestVirginia",
+ ,
+ "modified":
+</del>
+<ins class="diff-chg"> "@id": "http://example.org/posts#TripToWestVirginia",
+</ins> <span class="diff">"@type": "http://schema.org/BlogPosting"</span>, <--- This is a node type<ins class="diff-chg">
+ "modified":
+</ins>
+ {
+<del class="diff-old"> "@value": "2010-05-29T14:17:39+02:00",
+
+</del>
+<ins class="diff-chg"> "@value": "2010-05-29T14:17:39+02:00",
+</ins> <span class="diff">"@type": "http://www.w3.org/2001/XMLSchema#dateTime"</span> <--- This is a value type
+ }
+...
+}
+</pre>
+</div>
+<p>
+The
+first
+use
+of
+<code>
+@type
+</code>
+associates
+a
+<a class="tref internalDFN" title="node_type" href="#dfn-node_type">
+node
+type
+</a>
+(
+<code>
+http://schema.org/BlogPosting
+</code>
+)
+with
+the
+<a class="tref internalDFN" title="node" href="#dfn-node">
+node
+</a>,
+which
+is
+expressed
+using
+the
+<code>
+@id
+</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>.
+The
+second
+use
+of
+<code>
+@type
+</code>
+associates
+a
+<a class="tref internalDFN" title="value_type" href="#dfn-value_type">
+value
+type
+</a>
+(
+<code>
+http://www.w3.org/2001/XMLSchema#dateTime
+</code>
+)
+with
+the
+value
+expressed
+using
+the
+<code>
+@value
+</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>.
+As
+a
+general
+rule,
+when
+<code>
+@value
+</code>
+and
+<code>
+@type
+</code>
+are
+used
+in
+the
+same
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+</a>,
+the
+<code>
+@type
+</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>
+is
+expressing
+a
+<a class="tref internalDFN" title="value_type" href="#dfn-value_type">
+value
+type
+</a>.
+Otherwise,
+the
+<code>
+@type
+</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>
+is
+expressing
+a
+<a class="tref internalDFN" title="node_type" href="#dfn-node_type">
+node
+type
+</a>.
+<ins class="diff-new">The
+markup
+above
+expresses
+the
+following
+data:
+</ins>
+</p>
+<table class="example">
+<thead>
+<tr>
+<th>
+<ins class="diff-new">Subject
+</ins></th><th><ins class="diff-new">
+Property
+</ins></th><th><ins class="diff-new">
+Value
+</ins></th><th><ins class="diff-new">
+Value
+Type
+</ins></th></tr></thead><tbody><tr><td><ins class="diff-new">
+http://example.org/posts#TripToWestVirginia
+</ins></td><td><ins class="diff-new">
+http://www.w3.org/1999/02/22-rdf-syntax-ns#type
+</ins></td><td><ins class="diff-new">
+http://schema.org/BlogPosting
+</ins></td><td style="text-align:center;"><ins class="diff-new">
+-
+</ins></td></tr><tr><td><ins class="diff-new">
+http://example.org/posts#TripToWestVirginia
+</ins></td><td><ins class="diff-new">
+http://purl.org/dc/terms/modified
+</ins></td><td><ins class="diff-new">
+2010-05-29T14:17:39+02:00
+</ins></td><td><ins class="diff-new">
+http://www.w3.org/2001/XMLSchema#dateTime
+</ins></td></tr></tbody></table>
+</section>
+<section id="type-coercion">
+<h3>
+<span class="secno">
+6.3
+</span>
+<del class="diff-old">Language-tagged
+Strings
+</del>
+<ins class="diff-chg">Type
+Coercion
+</ins>
+</h3>
+<p>
+<del class="diff-old">A
+string
+with
+an
+associated
+language,
+also
+known
+as
+a
+language-tagged
+string
+,
+is
+indicated
+by
+associating
+a
+string
+with
+</del>
+<ins class="diff-chg">JSON-LD
+supports
+the
+coercion
+of
+values
+to
+particular
+data
+types.
+Type
+</ins><dfn title="coercion" id="dfn-coercion"><ins class="diff-chg">
+coercion
+</ins></dfn><ins class="diff-chg">
+allows
+someone
+deploying
+JSON-LD
+to
+coerce
+the
+incoming
+or
+outgoing
+values
+to
+the
+proper
+data
+type
+based
+on
+</ins>
+a
+<del class="diff-old">language
+code
+as
+defined
+in
+[
+BCP47
+</del>
+<ins class="diff-chg">mapping
+of
+data
+type
+</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><ins class="diff-chg">
+IRIs
+</ins>
+</a>
+<del class="diff-old">].
+Language-tagged
+strings
+may
+</del>
+<ins class="diff-chg">to
+</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
+terms
+</ins></a>.<ins class="diff-chg">
+Using
+type
+coercion,
+value
+representation
+is
+preserved
+without
+requiring
+the
+data
+type
+to
+</ins>
+be
+<del class="diff-old">expressed
+in
+JSON-LD
+in
+four
+ways:
+</del>
+<ins class="diff-chg">specified
+with
+each
+piece
+of
+data.
+</ins>
+</p>
+<del class="diff-old">By
+defining
+a
+global
+language
+</del>
+<p>
+<ins class="diff-chg">Type
+coercion
+is
+specified
+within
+an
+</ins><a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition"><ins class="diff-chg">
+expanded
+term
+definition
+</ins></a>
+using
+the
+<code>
+<del class="diff-old">@language
+</del>
+<ins class="diff-chg">@type
+</ins>
+</code>
+<ins class="diff-new">key.
+The
+value
+of
+this
+key
+expands
+to
+an
+</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
+IRI
+</ins></abbr></a>.<ins class="diff-new">
+Alternatively,
+the
+</ins>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>
+<del class="diff-old">within
+a
+</del>
+<code>
+<del class="diff-old">@context
+</del>
+<ins class="diff-chg">@id
+</ins>
+</code>
+<del class="diff-old">section.
+By
+utilizing
+</del>
+<ins class="diff-chg">may
+be
+used
+as
+value
+to
+indicate
+that
+within
+</ins>
+the
+<del class="diff-old">@language
+keyword
+when
+defining
+</del>
+<ins class="diff-chg">body
+of
+a
+JSON-LD
+document,
+a
+string
+value
+of
+</ins>
+a
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+<del class="diff-old">within
+a
+</del>
+<ins class="diff-chg">coerced
+to
+</ins>
+<code>
+<del class="diff-old">@context
+</del>
+<ins class="diff-chg">@id
+</ins>
+</code>
+<del class="diff-old">section.
+By
+utilizing
+</del>
+<ins class="diff-chg">is
+to
+be
+interpreted
+as
+</ins>
+an
+<del class="diff-old">expanded
+language-tagged
+string
+</del>
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+<ins class="diff-chg">IRI
+</ins></abbr>
+</a>.
+<del class="diff-old">By
+utilizing
+a
+language
+map
+,
+provided
+</del>
+</p>
+<p>
+<a class="tref internalDFN" title="term" href="#dfn-term">
+<ins class="diff-chg">Terms
+</ins></a><ins class="diff-chg">
+or
+</ins><a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri"><ins class="diff-chg">
+compact
+IRIs
+</ins></a><ins class="diff-chg">
+used
+as
+</ins>
+the
+<del class="diff-old">underlying
+</del>
+<ins class="diff-chg">value
+of
+a
+</ins>
+<code>
+<del class="diff-old">term
+</del>
+<ins class="diff-chg">@type
+</ins>
+</code>
+<del class="diff-old">is
+</del>
+<ins class="diff-chg">key
+may
+be
+</ins>
+defined
+<del class="diff-old">with
+</del>
+<ins class="diff-chg">within
+the
+same
+context.
+This
+means
+that
+one
+may
+specify
+</ins>
+a
+<del class="diff-old">@container
+keyword
+</del>
+<a class="tref internalDFN" title="term" href="#dfn-term">
+<ins class="diff-chg">term
+</ins>
+</a>
+<del class="diff-old">whose
+value
+is
+</del>
+<ins class="diff-chg">like
+</ins>
+<code>
+<del class="diff-old">@language
+</del>
+<ins class="diff-chg">xsd
+</ins>
+</code>
+<del class="diff-old">within
+a
+</del>
+<ins class="diff-chg">and
+then
+use
+</ins>
+<code>
+<del class="diff-old">@context
+</del>
+<ins class="diff-chg">xsd:integer
+</ins>
+</code>
+<del class="diff-old">section.
+</del>
+<ins class="diff-chg">within
+the
+same
+context
+definition.
+</ins></p>
+<p>
+The
+<del class="diff-old">first
+</del>
+example
+<del class="diff-old">uses
+the
+@language
+keyword
+to
+associate
+a
+type
+with
+</del>
+<ins class="diff-chg">below
+demonstrates
+how
+</ins>
+a
+<del class="diff-old">particular
+term
+in
+the
+@context
+:
+</del>
+<ins class="diff-chg">JSON-LD
+author
+can
+coerce
+values
+to
+</ins><a class="tref internalDFN" title="typed_value" href="#dfn-typed_value"><ins class="diff-chg">
+typed
+values
+</ins></a>,<ins class="diff-chg">
+IRIs,
+and
+lists.
+</ins>
+</p>
+<del class="diff-old">{
+ "@context":
+</del>
+<div class="example"><div class="example-title"><span>Example 21</span>: Expanded term definition with types</div><pre class="example">{
+<ins class="diff-chg"> "@context":
+</ins>
+ {
+<del class="diff-old"> "title":
+ {
+ "@id": "http://purl.org/dc/terms/title",
+ "@language": "en"
+ }
+ },
+...
+ "title": "JSON-LD Syntax",
+...
+</del>
+<ins class="diff-chg"> "xsd": "http://www.w3.org/2001/XMLSchema#",
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "age":
+</ins> <span class="diff">{<ins class="diff-chg">
+ "@id": "http://xmlns.com/foaf/0.1/age",
+ "@type": "xsd:integer"
+ }</span>,
+ "homepage":
+</ins> <span class="diff">{<ins class="diff-chg">
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id",
+ "@container": "@list"
+ }</span>
+ },
+ "@id": "http://example.com/people#john",
+ "name": "John Smith",
+ "age": <span class="diff">"41"</span>,
+ "homepage":
+</ins> <span class="diff">[<ins class="diff-chg">
+ "http://personal.example.org/",
+ "http://work.example.com/jsmith/"
+ ]</span>
+</ins>
+}
+</pre>
+</div>
+<p>
+The
+<del class="diff-old">modified
+key's
+value
+</del>
+<ins class="diff-chg">markup
+shown
+</ins>
+above
+<del class="diff-old">is
+automatically
+language
+coerced
+to
+a
+English
+value
+because
+of
+the
+information
+specified
+in
+</del>
+<ins class="diff-chg">would
+generate
+</ins>
+the
+<del class="diff-old">@context
+.
+</del>
+<ins class="diff-chg">following
+data.
+</ins>
+The
+<del class="diff-old">second
+example
+uses
+</del>
+<ins class="diff-chg">data
+has
+no
+inherent
+order
+except
+for
+</ins>
+the
+<del class="diff-old">expanded
+form
+</del>
+<ins class="diff-chg">values
+</ins>
+of
+<del class="diff-old">setting
+the
+language
+information
+in
+</del>
+the
+<del class="diff-old">body
+of
+</del>
+<code>
+<ins class="diff-chg">http://schema.org/homepage
+</ins></code><ins class="diff-chg">
+property
+which
+represent
+an
+ordered
+list.
+</ins></p><table class="example"><thead><tr><th><ins class="diff-chg">
+Subject
+</ins></th><th><ins class="diff-chg">
+Property
+</ins></th><th><ins class="diff-chg">
+Value
+</ins></th><th><ins class="diff-chg">
+Value
+Type
+</ins></th></tr></thead><tbody><tr><td><ins class="diff-chg">
+http://example.com/people#john
+</ins></td><td><ins class="diff-chg">
+http://xmlns.com/foaf/0.1/name
+</ins></td><td><ins class="diff-chg">
+John
+Smith
+</ins></td><td><ins class="diff-chg">
+
+</ins></td></tr><tr><td><ins class="diff-chg">
+http://example.com/people#john
+</ins></td><td><ins class="diff-chg">
+http://xmlns.com/foaf/0.1/age
+</ins></td><td><ins class="diff-chg">
+41
+</ins></td><td><ins class="diff-chg">
+http://www.w3.org/2001/XMLSchema#integer
+</ins></td></tr><tr><td rowspan="2"><ins class="diff-chg">
+http://example.com/people#john
+</ins></td><td rowspan="2"><ins class="diff-chg">
+http://xmlns.com/foaf/0.1/homepage
+</ins></td><td><ins class="diff-chg">
+http://personal.example.org/
+</ins></td><td><ins class="diff-chg">
+
+</ins></td></tr><tr><td><ins class="diff-chg">
+http://work.example.com/jsmith/
+</ins></td><td><ins class="diff-chg">
+
+</ins></td></tr></tbody></table><p><ins class="diff-chg">
+Terms
+may
+also
+be
+defined
+using
+</ins><a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri"><ins class="diff-chg">
+absolute
+IRIs
+</ins></a><ins class="diff-chg">
+or
+</ins><a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri"><ins class="diff-chg">
+compact
+IRIs
+</ins></a>.<ins class="diff-chg">
+This
+allows
+coercion
+rules
+to
+be
+applied
+to
+keys
+which
+are
+not
+represented
+as
+</ins>
+a
+<del class="diff-old">JSON-LD
+document:
+</del>
+<ins class="diff-chg">simple
+</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
+term
+</ins></a>.<ins class="diff-chg">
+For
+example:
+</ins>
+</p>
+<del class="diff-old">{
+ "@context":
+</del>
+<div class="example"><div class="example-title"><span>Example 22</span>: Term definitions using compact and absolute IRIs</div><pre class="example">{
+<ins class="diff-chg"> "@context":
+</ins>
+ {
+<del class="diff-old"> "title":
+</del>
+<ins class="diff-chg"> "foaf": "http://xmlns.com/foaf/0.1/",
+ "<span class="diff">foaf:age</span>":
+</ins>
+ {
+<del class="diff-old"> "@id": "http://purl.org/dc/terms/title"
+</del>
+ <span class="diff">"@id": "http://xmlns.com/foaf/0.1/age"</span>,
+<ins class="diff-chg"> "@type": "xsd:integer"
+ },
+ "<span class="diff">http://xmlns.com/foaf/0.1/homepage</span>":
+ {
+ "@type": "@id"
+</ins>
+ }
+ },
+<del class="diff-old">...
+ "title":
+ {
+ "@value": "JSON-LD Syntax",
+ "@language": "en"
+ }
+...
+</del>
+<ins class="diff-chg"> "foaf:name": "John Smith",
+ "<span class="diff">foaf:age</span>": "41",
+ "<span class="diff">http://xmlns.com/foaf/0.1/homepage</span>":
+ [
+ "http://personal.example.org/",
+ "http://work.example.com/jsmith/"
+ ]
+</ins>
+}
+</pre>
+</div>
+<p>
+<del class="diff-old">Both
+examples
+above
+would
+generate
+</del>
+<ins class="diff-chg">In
+this
+case
+</ins>
+the
+<del class="diff-old">value
+</del>
+<code>
+<del class="diff-old">JSON-LD
+Syntax
+</del>
+<ins class="diff-chg">@id
+</ins>
+</code>
+<del class="diff-old">tagged
+with
+</del>
+<ins class="diff-chg">definition
+in
+</ins>
+the
+<del class="diff-old">language
+en
+;
+which
+</del>
+<ins class="diff-chg">term
+definition
+</ins>
+is
+<ins class="diff-new">optional,
+but
+if
+it
+does
+exist,
+</ins>
+the
+<del class="diff-old">[
+</del>
+<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
+<ins class="diff-chg">compact
+</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
+IRI
+</ins></abbr>
+<del class="diff-old">BCP47
+</del>
+</a>
+<ins class="diff-new">or
+</ins><a class="tref internalDFN" title="iri" href="#dfn-iri">
+<del class="diff-old">]
+code
+</del>
+<abbr title="Internationalized Resource Identifier">
+<ins class="diff-chg">IRI
+</ins></abbr></a><ins class="diff-chg">
+is
+treated
+as
+a
+</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
+term
+</ins></a><ins class="diff-chg">
+(not
+a
+</ins><code><ins class="diff-chg">
+prefix:suffix
+</ins></code><ins class="diff-chg">
+construct)
+so
+that
+the
+actual
+definition
+of
+a
+</ins><a class="tref internalDFN" title="prefix" href="#dfn-prefix"><ins class="diff-chg">
+prefix
+</ins></a><ins class="diff-chg">
+becomes
+unnecessary.
+Type
+coercion
+is
+performed
+using
+the
+unexpanded
+value
+of
+the
+key
+if
+there
+is
+an
+exact
+match
+</ins>
+for
+the
+<del class="diff-old">English
+language.
+</del>
+<ins class="diff-chg">key
+in
+the
+</ins><a class="tref internalDFN" title="active_context" href="#dfn-active_context"><ins class="diff-chg">
+active
+context
+</ins></a>.
+</p>
+<del class="diff-old">Systems
+that
+support
+</del>
+<div class="note">
+<div class="note-title">
+<span>
+<ins class="diff-chg">Note
+</ins></span></div><p class=""><ins class="diff-chg">
+Keys
+in
+the
+context
+are
+treated
+as
+</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
+terms
+</ins></a><ins class="diff-chg">
+for
+the
+purpose
+of
+expansion
+and
+value
+coercion.
+At
+times,
+this
+may
+result
+in
+</ins>
+multiple
+<del class="diff-old">languages
+often
+need
+</del>
+<ins class="diff-chg">representations
+for
+the
+same
+expanded
+</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
+IRI
+</ins></abbr>.<ins class="diff-chg">
+For
+example,
+one
+could
+specify
+that
+</ins><code><ins class="diff-chg">
+dog
+</ins></code><ins class="diff-chg">
+and
+</ins><code><ins class="diff-chg">
+cat
+</ins></code><ins class="diff-chg">
+both
+expanded
+</ins>
+to
+<del class="diff-old">express
+data
+values
+in
+each
+language.
+Typically,
+such
+systems
+</del>
+<code>
+<ins class="diff-chg">http://example.com/vocab#animal
+</ins></code>.<ins class="diff-chg">
+Doing
+this
+could
+be
+useful
+for
+establishing
+different
+type
+coercion
+or
+language
+specification
+rules.
+It
+</ins>
+also
+<del class="diff-old">try
+</del>
+<ins class="diff-chg">allows
+a
+</ins><a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri"><ins class="diff-chg">
+compact
+</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
+IRI
+</ins></abbr></a><ins class="diff-chg">
+(or
+even
+an
+absolute
+</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
+IRI
+</ins></abbr></a><ins class="diff-chg">
+)
+</ins>
+to
+<del class="diff-old">ensure
+</del>
+<ins class="diff-chg">be
+defined
+as
+something
+else
+entirely.
+For
+example,
+one
+could
+specify
+</ins>
+that
+<del class="diff-old">developers
+have
+</del>
+<ins class="diff-chg">the
+</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
+term
+</ins></a><code><ins class="diff-chg">
+http://example.org/zoo
+</ins></code><ins class="diff-chg">
+should
+expand
+to
+</ins><code><ins class="diff-chg">
+http://example.org/river
+</ins></code>,<ins class="diff-chg">
+but
+this
+usage
+is
+discouraged
+because
+it
+would
+lead
+to
+</ins>
+a
+<del class="diff-old">programatically
+easy
+way
+</del>
+<ins class="diff-chg">great
+deal
+of
+confusion
+among
+developers
+attempting
+</ins>
+to
+<del class="diff-old">navigate
+</del>
+<ins class="diff-chg">understand
+</ins>
+the
+<del class="diff-old">datastructures
+for
+</del>
+<ins class="diff-chg">JSON-LD
+document.
+</ins></p></div></section><section id="advanced-context-usage"><h3><span class="secno"><ins class="diff-chg">
+6.4
+</ins></span><ins class="diff-chg">
+Advanced
+Context
+Usage
+</ins></h3><p><ins class="diff-chg">
+Section
+</ins><a href="#the-context" class="sec-ref"><span class="secno"><ins class="diff-chg">
+5.1
+</ins></span><span class="sec-title"><ins class="diff-chg">
+The
+Context
+</ins></span></a><ins class="diff-chg">
+introduced
+</ins>
+the
+<del class="diff-old">language-specific
+data.
+In
+this
+case,
+language
+maps
+</del>
+<ins class="diff-chg">basics
+of
+what
+makes
+JSON-LD
+work.
+This
+section
+expands
+on
+the
+basic
+principles
+of
+the
+</ins><a class="tref internalDFN" title="context" href="#dfn-context"><ins class="diff-chg">
+context
+</ins>
+</a>
+<ins class="diff-new">and
+demonstrates
+how
+more
+advanced
+use
+cases
+can
+be
+achieved
+using
+JSON-LD.
+</ins></p><p><ins class="diff-new">
+In
+general,
+contexts
+</ins>
+may
+be
+<del class="diff-old">utilized.
+</del>
+<ins class="diff-chg">used
+at
+any
+time
+a
+</ins><a class="tref internalDFN" title="json_object" href="#dfn-json_object"><ins class="diff-chg">
+JSON
+object
+</ins></a><ins class="diff-chg">
+is
+defined.
+The
+only
+time
+that
+one
+cannot
+express
+a
+context
+is
+inside
+a
+context
+definition
+itself.
+For
+example,
+a
+</ins><a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document"><ins class="diff-chg">
+JSON-LD
+document
+</ins></a><ins class="diff-chg">
+may
+use
+more
+than
+one
+context
+at
+different
+points
+in
+a
+document:
+</ins>
+</p>
+<del class="diff-old">{
+ "@context":
+</del>
+ <div class="example"><div class="example-title"><span>Example 23</span>: Using multiple contexts</div><pre class="example">[
+ {
+<del class="diff-old"> "title":
+ {
+ "@id": "http://purl.org/dc/terms/title",
+
+ }
+</del>
+ <span class="diff">"@context": "http://example.org/contexts/person.jsonld",</span>
+<ins class="diff-chg"> "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "depiction": "http://twitter.com/account/profile_image/manusporny"
+</ins>
+ },
+<del class="diff-old">...
+ "title":
+ {
+ "en": "JSON-LD Syntax",
+ "ru": "JSON-LD Синтаксис",
+ "ja": "JSON-LDの構文"
+ }
+...
+</del>
+<ins class="diff-chg"> {
+</ins> <span class="diff">"@context": "http://example.org/contexts/place.jsonld",</span><ins class="diff-chg">
+ "name": "The Empire State Building",
+ "description": "The Empire State Building is a 102-story landmark in New York City.",
+ "geo": {
+ "latitude": "40.75",
+ "longitude": "73.98"
+ }
+ }
+]
+</ins></pre></div><p><ins class="diff-chg">
+Duplicate
+context
+</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
+terms
+</ins></a><ins class="diff-chg">
+are
+overridden
+using
+a
+last-defined-wins
+mechanism.
+</ins></p> <div class="example"><div class="example-title"><span>Example 24</span>: Scoped contexts within node objects</div><pre class="example">{ <span class="diff">"@context":<ins class="diff-chg">
+ {
+ "name": "http://example.com/person#name",
+ "details": "http://example.com/person#details"
+ },</span>
+ "<span class="diff">name</span>": "Markus Lanthaler",
+ ...
+ "details":
+ {
+</ins> <span class="diff">"@context": {<ins class="diff-chg">
+ "name": "http://example.com/organization#name"
+ },</span>
+ "<span class="diff">name</span>": "Graz University of Technology"
+ }
+</ins>
+}
+</pre>
+</div>
+<p>
+In
+the
+example
+above,
+the
+<del class="diff-old">title
+</del>
+<code>
+<ins class="diff-chg">name
+</ins></code><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
+term
+</ins></a>
+is
+<del class="diff-old">expressed
+</del>
+<ins class="diff-chg">overridden
+</ins>
+in
+<del class="diff-old">three
+languages;
+English,
+Russian,
+</del>
+<ins class="diff-chg">the
+more
+deeply
+nested
+</ins><code><ins class="diff-chg">
+details
+</ins></code><ins class="diff-chg">
+structure.
+Note
+that
+this
+is
+rarely
+a
+good
+authoring
+practice
+</ins>
+and
+<del class="diff-old">Japanese.
+To
+access
+</del>
+<ins class="diff-chg">is
+typically
+used
+when
+working
+with
+legacy
+applications
+that
+depend
+on
+a
+specific
+structure
+of
+</ins>
+the
+<del class="diff-old">data
+above
+</del>
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+<ins class="diff-chg">JSON
+object
+</ins></a>.<ins class="diff-chg">
+If
+a
+</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
+term
+</ins></a><ins class="diff-chg">
+is
+redefined
+within
+a
+context,
+all
+previous
+rules
+associated
+with
+the
+previous
+definition
+are
+removed.
+If
+a
+</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
+term
+</ins></a><ins class="diff-chg">
+is
+redefined
+to
+</ins><code><ins class="diff-chg">
+null
+</ins></code>,<ins class="diff-chg">
+the
+</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
+term
+</ins></a><ins class="diff-chg">
+is
+effectively
+removed
+from
+the
+list
+of
+</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
+terms
+</ins></a><ins class="diff-chg">
+defined
+in
+the
+</ins><a class="tref internalDFN" title="active_context" href="#dfn-active_context"><ins class="diff-chg">
+active
+context
+</ins></a>.</p><p><ins class="diff-chg">
+Multiple
+contexts
+may
+be
+combined
+using
+an
+</ins><a class="tref internalDFN" title="array" href="#dfn-array"><ins class="diff-chg">
+array
+</ins></a>,<ins class="diff-chg">
+which
+is
+processed
+</ins>
+in
+<ins class="diff-new">order.
+The
+set
+of
+contexts
+defined
+within
+</ins>
+a
+<del class="diff-old">programming
+language
+supporting
+dot-notation
+accessors
+for
+</del>
+<ins class="diff-chg">specific
+</ins><a class="tref internalDFN" title="json_object" href="#dfn-json_object"><ins class="diff-chg">
+JSON
+</ins>
+object
+<del class="diff-old">properties,
+</del>
+</a>
+<ins class="diff-chg">are
+referred
+to
+as
+</ins><dfn title="local_context" id="dfn-local_context"><ins class="diff-chg">
+local
+contexts
+</ins></dfn>.<ins class="diff-chg">
+The
+</ins><dfn title="active_context" id="dfn-active_context"><ins class="diff-chg">
+active
+context
+</ins></dfn><ins class="diff-chg">
+refers
+to
+the
+accumulation
+of
+</ins><a class="tref internalDFN" title="local_context" href="#dfn-local_context"><ins class="diff-chg">
+local
+contexts
+</ins></a><ins class="diff-chg">
+that
+are
+in
+scope
+at
+</ins>
+a
+<del class="diff-old">developer
+may
+use
+</del>
+<ins class="diff-chg">specific
+point
+within
+</ins>
+the
+<ins class="diff-new">document.
+Setting
+a
+</ins><a class="tref internalDFN" title="local_context" href="#dfn-local_context"><ins class="diff-new">
+local
+context
+</ins></a><ins class="diff-new">
+to
+</ins>
+<code>
+<del class="diff-old">property.language
+</del>
+<ins class="diff-chg">null
+</ins>
+</code>
+<del class="diff-old">pattern.
+For
+example,
+</del>
+<ins class="diff-chg">effectively
+resets
+the
+</ins><a class="tref internalDFN" title="active_context" href="#dfn-active_context"><ins class="diff-chg">
+active
+context
+</ins></a>
+to
+<del class="diff-old">access
+</del>
+<ins class="diff-chg">an
+empty
+context.
+The
+following
+example
+specifies
+an
+external
+context
+and
+then
+layers
+an
+embedded
+context
+on
+top
+of
+</ins>
+the
+<del class="diff-old">Japanese
+version
+</del>
+<ins class="diff-chg">external
+context:
+</ins></p> <div class="example"><div class="example-title"><span>Example 25</span>: Combining external and local contexts</div><pre class="example">{ <span class="diff">"@context": [<ins class="diff-chg">
+ "http://json-ld.org/contexts/person.jsonld",
+ {
+ "pic": "http://xmlns.com/foaf/0.1/depiction"
+ }
+ ],</span>
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+</ins> <span class="diff">"pic": "http://twitter.com/account/profile_image/manusporny"</span><ins class="diff-chg">
+}
+</ins></pre></div><div class="note"><div class="note-title"><span><ins class="diff-chg">
+Note
+</ins></span></div><p class=""><ins class="diff-chg">
+It
+is
+a
+best
+practice
+to
+put
+the
+</ins><a class="tref internalDFN" title="context" href="#dfn-context"><ins class="diff-chg">
+context
+</ins></a><ins class="diff-chg">
+definition
+at
+the
+top
+</ins>
+of
+the
+<del class="diff-old">title,
+</del>
+<ins class="diff-chg">JSON-LD
+document.
+</ins></p></div><div class="note"><div class="note-title"><span><ins class="diff-chg">
+Note
+</ins></span></div><p class=""><ins class="diff-chg">
+While
+it
+is
+possible
+to
+define
+</ins>
+a
+<del class="diff-old">developer
+would
+use
+</del>
+<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
+<ins class="diff-chg">compact
+</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
+IRI
+</ins></abbr></a>,<ins class="diff-chg">
+or
+an
+</ins><a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri"><ins class="diff-chg">
+absolute
+</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
+IRI
+</ins></abbr></a><ins class="diff-chg">
+to
+expand
+to
+some
+other
+unrelated
+</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
+IRI
+</ins></abbr></a><ins class="diff-chg">
+(for
+example,
+</ins><code><ins class="diff-chg">
+foaf:name
+</ins></code><ins class="diff-chg">
+expanding
+to
+</ins><code><ins class="diff-chg">
+http://example.org/unrelated#species
+</ins></code><ins class="diff-chg">
+),
+such
+usage
+is
+strongly
+discouraged.
+</ins></p></div><div class="note"><div class="note-title"><span><ins class="diff-chg">
+Note
+</ins></span></div><p class=""><ins class="diff-chg">
+To
+avoid
+forward-compatibility
+issues,
+</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
+terms
+</ins></a><ins class="diff-chg">
+starting
+with
+an
+</ins><code><ins class="diff-chg">
+@
+</ins></code><ins class="diff-chg">
+character
+are
+to
+be
+avoided
+as
+they
+might
+be
+used
+as
+</ins><a class="tref internalDFN" title="keyword" href="#dfn-keyword"><ins class="diff-chg">
+keywords
+</ins></a><ins class="diff-chg">
+in
+future
+versions
+of
+JSON-LD.
+Furthermore,
+</ins>
+the
+<del class="diff-old">following
+code
+snippet:
+</del>
+<ins class="diff-chg">use
+of
+empty
+</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
+terms
+</ins></a><ins class="diff-chg">
+(
+</ins>
+<code>
+<del class="diff-old">obj.title.ja
+.
+</del>
+<ins class="diff-chg">""
+</ins></code><ins class="diff-chg">
+)
+is
+discouraged
+as
+not
+all
+programming
+languages
+are
+able
+to
+handle
+empty
+property
+names.
+</ins>
+</p>
+</div>
+<section id="interpreting-json-as-json-ld">
+<h4>
+<span class="secno">
+<del class="diff-old">6.4
+</del>
+<ins class="diff-chg">6.4.1
+</ins>
+</span>
+<del class="diff-old">Referencing
+Contexts
+from
+</del>
+<ins class="diff-chg">Interpreting
+</ins>
+JSON
+<del class="diff-old">Documents
+</del>
+<ins class="diff-chg">as
+JSON-LD
+</ins></h4>
+<p>
+Ordinary
+JSON
+documents
+can
+be
+<del class="diff-old">transformed
+into
+</del>
+<ins class="diff-chg">interpreted
+as
+</ins>
+JSON-LD
+<del class="diff-old">documents
+</del>
+by
+referencing
+<del class="diff-old">to
+an
+external
+</del>
+<ins class="diff-chg">a
+</ins>
+JSON-LD
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>
+<ins class="diff-new">document
+</ins>
+in
+an
+HTTP
+Link
+Header.
+Doing
+<del class="diff-old">this
+</del>
+<ins class="diff-chg">so
+</ins>
+allows
+JSON
+to
+be
+unambiguously
+machine-readable
+without
+requiring
+developers
+to
+drastically
+change
+their
+<del class="diff-old">workflow
+</del>
+<ins class="diff-chg">markup
+</ins>
+and
+provides
+an
+upgrade
+path
+for
+existing
+infrastructure
+without
+breaking
+existing
+clients
+that
+rely
+on
+the
+<code>
+application/json
+</code>
+media
+type.
+</p>
+<p>
+In
+order
+to
+use
+an
+external
+context
+with
+an
+ordinary
+JSON
+document,
+an
+author
+<em class="rfc2119" title="must">
+must
+</em>
+specify
+an
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+to
+a
+valid
+<a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">
+JSON-LD
+document
+</a>
+in
+an
+HTTP
+Link
+Header
+[
+<cite>
+<a class="bibref" href="#bib-RFC5988">
+RFC5988
+</a>
+</cite>
+]
+using
+the
+<code>
+http://www.w3.org/ns/json-ld#context
+</code>
+link
+relation.
+The
+referenced
+document
+<em class="rfc2119" title="must">
+must
+</em>
+have
+a
+top-level
+<del class="diff-old">node
+</del>
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+<ins class="diff-chg">JSON
+</ins>
+object
+</a>.
+The
+<code>
+@context
+</code>
+subtree
+within
+that
+object
+is
+added
+to
+the
+top-level
+<del class="diff-old">node
+</del>
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+<ins class="diff-chg">JSON
+</ins>
+object
+</a>
+of
+the
+referencing
+document.
+If
+an
+<a class="tref internalDFN" title="array" href="#dfn-array">
+array
+</a>
+is
+at
+the
+top-level
+of
+the
+referencing
+document
+and
+its
+items
+are
+<del class="diff-old">node
+</del>
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+<ins class="diff-chg">JSON
+</ins>
+objects
+</a>,
+the
+<code>
+@context
+</code>
+subtree
+is
+added
+to
+all
+<a class="tref internalDFN" title="array" href="#dfn-array">
+array
+</a>
+items.
+All
+extra
+information
+located
+outside
+of
+the
+<code>
+@context
+</code>
+subtree
+in
+the
+referenced
+document
+<em class="rfc2119" title="must">
+must
+</em>
+be
+discarded.
+<ins class="diff-new">Effectively
+this
+means
+that
+the
+</ins><a class="tref internalDFN" title="active_context" href="#dfn-active_context"><ins class="diff-new">
+active
+context
+</ins></a><ins class="diff-new">
+is
+initialized
+with
+the
+referenced
+external
+</ins><a class="tref internalDFN" title="context" href="#dfn-context"><ins class="diff-new">
+context
+</ins></a>.
+</p>
+<p>
+The
+following
+example
+demonstrates
+the
+use
+of
+an
+external
+context
+with
+an
+ordinary
+JSON
+document:
+</p>
+<del class="diff-old">GET /ordinary-json-document.json HTTP/1.1
+</del>
+ <div class="example"><div class="example-title"><span>Example 26</span>: Referencing a JSON-LD context from a JSON document via an HTTP Link Header</div><pre class="example">GET /ordinary-json-document.json HTTP/1.1
+Host: example.com
+Accept: application/ld+json,application/json,*/*;q=0.1
+====================================
+HTTP/1.0 200 OK
+...
+Content-Type: <span class="diff">application/json</span>
+<span class="diff">Link: <http://json-ld.org/contexts/person.jsonld>; rel="http://www.w3.org/ns/json-ld#context"; type="application/ld+json"</span>
+{
+<del class="diff-old"> "name": "Markus Lanthaler",
+ "homepage": "http://www.markus-lanthaler.com/",
+ "depiction": "http://twitter.com/account/profile_image/markuslanthaler"
+</del>
+<ins class="diff-chg"> "name": "Markus Lanthaler",
+ "homepage": "http://www.markus-lanthaler.com/",
+ "image": "http://twitter.com/account/profile_image/markuslanthaler"
+</ins>
+}
+</pre>
+</div>
+<p>
+Please
+note
+that
+<a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">
+JSON-LD
+documents
+</a>
+served
+with
+the
+<code>
+application/ld+json
+</code>
+media
+type
+<em class="rfc2119" title="must">
+must
+</em>
+have
+all
+context
+information,
+including
+references
+to
+external
+contexts,
+within
+the
+body
+of
+the
+document.
+Contexts
+linked
+via
+a
+<code>
+http://www.w3.org/ns/json-ld#context
+</code>
+HTTP
+Link
+Header
+<em class="rfc2119" title="must">
+must
+</em>
+be
+ignored
+for
+such
+documents.
+</p>
+</section>
+</section>
+<section id="string-internationalization">
+<h3>
+<span class="secno">
+6.5
+</span>
+<del class="diff-old">Expanded
+Term
+Definition
+</del>
+<ins class="diff-chg">String
+Internationalization
+</ins>
+</h3>
+<p>
+<del class="diff-old">Within
+</del>
+<ins class="diff-chg">At
+times,
+it
+is
+important
+to
+annotate
+</ins>
+a
+<del class="diff-old">context
+definition,
+terms
+may
+be
+defined
+using
+an
+expanded
+term
+definition
+</del>
+<a class="tref internalDFN" title="string" href="#dfn-string">
+<ins class="diff-chg">string
+</ins>
+</a>
+<ins class="diff-new">with
+its
+language.
+In
+JSON-LD
+this
+is
+possible
+in
+a
+variety
+of
+ways.
+First,
+it
+is
+possible
+</ins>
+to
+<del class="diff-old">allow
+</del>
+<ins class="diff-chg">define
+a
+default
+language
+</ins>
+for
+<del class="diff-old">additional
+information
+associated
+with
+</del>
+<ins class="diff-chg">a
+JSON-LD
+document
+by
+setting
+</ins>
+the
+<del class="diff-old">term
+to
+be
+specified
+(see
+also
+6.6
+Type
+Coercion
+</del>
+<code>
+<ins class="diff-chg">@language
+</ins></code><ins class="diff-chg">
+key
+in
+the
+</ins><a class="tref internalDFN" title="context" href="#dfn-context"><ins class="diff-chg">
+context
+</ins></a>:</p> <div class="example"><div class="example-title"><span>Example 27</span>: Setting the default language of a JSON-LD document</div><pre class="example">{ <span class="diff">"@context":<ins class="diff-chg">
+ {
+ ...
+ "@language": "ja"
+ }</span>,
+ "name": <span class="diff">"花澄"</span>,
+ "occupation": <span class="diff">"科学者"</span>
+}
+</ins></pre>
+</div>
+<p>
+<ins class="diff-new">The
+example
+above
+would
+associate
+the
+</ins><code><ins class="diff-new">
+ja
+</ins></code><ins class="diff-new">
+language
+code
+with
+the
+two
+</ins><a class="tref internalDFN" title="string" href="#dfn-string"><ins class="diff-new">
+strings
+</ins>
+</a>
+<em>
+<ins class="diff-new">花澄
+</ins></em>
+and
+<del class="diff-old">6.9
+Sets
+and
+Lists
+</del>
+<em>
+<ins class="diff-chg">科学者
+</ins></em>.<ins class="diff-chg">
+Languages
+codes
+are
+defined
+in
+[
+</ins><cite>
+<a class="bibref" href="#bib-BCP47">
+<ins class="diff-new">BCP47
+</ins>
+</a>
+<del class="diff-old">).
+</del>
+</cite>
+<ins class="diff-chg">].
+</ins>
+</p>
+<p>
+<del class="diff-old">Instead
+of
+using
+a
+string
+representation
+of
+an
+IRI
+,
+</del>
+<ins class="diff-chg">To
+clear
+</ins>
+the
+<del class="diff-old">IRI
+may
+be
+specified
+using
+</del>
+<ins class="diff-chg">default
+language
+for
+</ins>
+a
+<del class="diff-old">JSON
+object
+having
+an
+</del>
+<ins class="diff-chg">subtree,
+</ins>
+<code>
+<del class="diff-old">@id
+</del>
+<ins class="diff-chg">@language
+</ins>
+</code>
+<del class="diff-old">key,
+and
+a
+term
+,
+</del>
+<ins class="diff-chg">can
+be
+set
+to
+</ins><code><ins class="diff-chg">
+null
+</ins></code><ins class="diff-chg">
+in
+</ins>
+a
+<del class="diff-old">compact
+IRI
+,
+or
+an
+absolute
+IRI
+</del>
+<a class="tref internalDFN" title="local_context" href="#dfn-local_context">
+<ins class="diff-chg">local
+context
+</ins>
+</a>
+as
+<del class="diff-old">value.
+</del>
+<ins class="diff-chg">follows:
+</ins>
+</p>
+<del class="diff-old">{
+ "@context":
+ {
+ "foaf": ,
+ "name": ,
+ "homepage": ,
+ "depiction":
+</del>
+ <div class="example"><div class="example-title"><span>Example 28</span>: Clearing default language</div><pre class="example">{
+<ins class="diff-chg"> "@context": {
+ ...
+ "@language": "ja"
+</ins>
+ },
+<del class="diff-old"> "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "depiction": "http://twitter.com/account/profile_image/manusporny"
+</del>
+<ins class="diff-chg"> "name": "花澄",
+ "details": {
+</ins><span class="diff"> "@context": {<ins class="diff-chg">
+ "@language": null
+ }</span>,
+ "occupation": "Ninja"
+ }
+</ins>
+}
+</pre>
+</div>
+<p>
+<del class="diff-old">This
+allows
+additional
+information
+to
+be
+associated
+with
+the
+term.
+This
+may
+be
+used
+for
+6.6
+Type
+Coercion
+,
+6.9
+Sets
+and
+Lists
+,
+or
+</del>
+<ins class="diff-chg">Second,
+it
+is
+possible
+</ins>
+to
+associate
+<ins class="diff-new">a
+</ins>
+language
+<del class="diff-old">information
+</del>
+with
+a
+<ins class="diff-new">specific
+</ins>
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+<del class="diff-old">as
+shown
+in
+the
+following
+example:
+</del>
+<ins class="diff-chg">using
+an
+</ins><a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition"><ins class="diff-chg">
+expanded
+term
+definition
+</ins></a>:
+</p>
+<del class="diff-old">{
+ "@context": {
+</del>
+ <div class="example"><div class="example-title"><span>Example 29</span>: Expanded term definition with language</div><pre class="example">{
+<ins class="diff-chg"> "@context": {
+</ins>
+ ...
+<del class="diff-old"> "ex": "http://example.com/",
+ "@language": "ja",
+ "name": { "@id": "ex:name", },
+ "occupation": { "@id": "ex:occupation" },
+ "occupation_en": { "@id": "ex:occupation", },
+ "occupation_cs": { "@id": "ex:occupation", }
+</del>
+<ins class="diff-chg"> "ex": "http://example.com/vocab/",
+ "@language": "ja",
+ "name": { "@id": "ex:name", <span class="diff">"@language": null</span> },
+ "occupation": { "@id": "ex:occupation" },
+ "occupation_en": { "@id": "ex:occupation", <span class="diff">"@language": "en"</span> },
+ "occupation_cs": { "@id": "ex:occupation", <span class="diff">"@language": "cs"</span> }
+</ins>
+ },
+<del class="diff-old"> "name": "Yagyū Muneyoshi",
+ "occupation": "忍者",
+ "occupation_en": "Ninja",
+ "occupation_cs": "Nindža",
+</del>
+ <span class="diff">"name": "Yagyū Muneyoshi",
+<ins class="diff-chg"> "occupation": "忍者",
+ "occupation_en": "Ninja",
+ "occupation_cs": "Nindža",</span>
+</ins>
+ ...
+}
+</pre>
+</div>
+<p>
+The
+example
+above
+would
+associate
+<em>
+忍者
+</em>
+with
+the
+specified
+default
+language
+code
+<code>
+ja
+</code>,
+<em>
+Ninja
+</em>
+with
+the
+language
+code
+<code>
+en
+</code>,
+and
+<em>
+Nindža
+</em>
+with
+the
+language
+code
+<code>
+cs
+</code>.
+The
+value
+of
+<code>
+name
+</code>,
+<em>
+Yagyū
+Muneyoshi
+</em>
+wouldn't
+be
+associated
+with
+any
+language
+code
+since
+<code>
+@language
+</code>
+was
+reset
+to
+<a class="tref internalDFN" title="null" href="#dfn-null">
+null
+</a>
+in
+the
+<a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">
+expanded
+term
+definition
+</a>.
+</p>
+<del class="diff-old">Expanded
+terms
+may
+also
+be
+defined
+using
+compact
+IRIs
+or
+absolute
+IRIs
+as
+keys.
+If
+the
+definition
+does
+not
+include
+an
+@id
+key,
+the
+expanded
+IRI
+is
+determined
+by
+performing
+expansion
+of
+the
+key
+within
+the
+current
+active
+context
+.
+This
+mechanism
+is
+mainly
+used
+to
+associate
+type
+or
+language
+information
+with
+a
+compact
+IRI
+or
+an
+absolute
+IRI
+.
+</del>
+<div class="note">
+<div class="note-title">
+<span>
+Note
+</span>
+</div>
+<p class="">
+<del class="diff-old">While
+it
+is
+possible
+to
+define
+a
+compact
+IRI
+,
+or
+an
+absolute
+IRI
+to
+expand
+to
+some
+other
+unrelated
+IRI
+(for
+example,
+foaf:name
+expanding
+</del>
+<ins class="diff-chg">Language
+associations
+can
+only
+be
+applied
+</ins>
+to
+<del class="diff-old">http://example.org/unrelated#species
+),
+such
+usage
+is
+strongly
+discouraged.
+6.6
+Type
+Coercion
+JSON-LD
+supports
+the
+coercion
+of
+</del>
+<ins class="diff-chg">plain
+literal
+</ins><a class="tref internalDFN" title="string" href="#dfn-string"><ins class="diff-chg">
+strings
+</ins></a>.<a class="tref internalDFN" title="typed_value" href="#dfn-typed_value"><ins class="diff-chg">
+Typed
+</ins>
+values
+<del class="diff-old">to
+particular
+data
+types.
+Type
+coercion
+allows
+someone
+deploying
+JSON-LD
+to
+coerce
+the
+incoming
+</del>
+</a>
+or
+<del class="diff-old">outgoing
+</del>
+values
+<ins class="diff-new">that
+are
+subject
+</ins>
+to
+<del class="diff-old">the
+proper
+data
+type
+based
+on
+a
+mapping
+of
+data
+type
+IRIs
+to
+terms
+.
+Using
+type
+coercion,
+value
+representation
+is
+preserved
+without
+requiring
+the
+data
+type
+to
+be
+specified
+with
+each
+piece
+of
+data.
+Type
+coercion
+is
+specified
+within
+an
+</del>
+<a href="#type-coercion" class="sec-ref">
+<span class="secno">
+<del class="diff-old">6.5
+</del>
+<ins class="diff-chg">6.3
+</ins>
+</span>
+<span class="sec-title">
+<del class="diff-old">Expanded
+Term
+Definition
+</del>
+<ins class="diff-chg">Type
+Coercion
+</ins>
+</span>
+</a>
+<del class="diff-old">using
+the
+@type
+key.
+The
+value
+of
+this
+key
+expands
+to
+an
+IRI
+.
+Alternatively,
+the
+keyword
+@id
+may
+</del>
+<ins class="diff-chg">cannot
+</ins>
+be
+<del class="diff-old">used
+</del>
+<ins class="diff-chg">language
+tagged.
+</ins></p></div><p><ins class="diff-chg">
+Just
+</ins>
+as
+<del class="diff-old">value
+</del>
+<ins class="diff-chg">in
+the
+example
+above,
+systems
+often
+need
+</ins>
+to
+<del class="diff-old">indicate
+that
+within
+</del>
+<ins class="diff-chg">express
+</ins>
+the
+<del class="diff-old">body
+of
+a
+JSON-LD
+document,
+a
+string
+</del>
+value
+of
+a
+<del class="diff-old">term
+coerced
+</del>
+<ins class="diff-chg">property
+in
+multiple
+languages.
+Typically,
+such
+systems
+also
+try
+</ins>
+to
+<del class="diff-old">@id
+is
+</del>
+<ins class="diff-chg">ensure
+that
+developers
+have
+a
+programmatically
+easy
+way
+</ins>
+to
+<ins class="diff-new">navigate
+the
+data
+structures
+for
+the
+language-specific
+data.
+In
+this
+case,
+</ins><a class="tref internalDFN" title="language_map" href="#dfn-language_map"><ins class="diff-new">
+language
+maps
+</ins></a><ins class="diff-new">
+may
+</ins>
+be
+<del class="diff-old">interpreted
+as
+an
+IRI
+.
+</del>
+<ins class="diff-chg">utilized.
+</ins>
+</p>
+ <div class="example"><div class="example-title"><span>Example 30</span>: Language map expressing a property in three languages</div><pre class="example">{
+<ins class="diff-chg"> "@context":
+ {
+ ...
+ "occupation": { "@id": "ex:occupation", <span class="diff">"@container": "@language"</span> }
+ },
+ "name": "Yagyū Muneyoshi",
+ "occupation":
+</ins> <span class="diff">{<ins class="diff-chg">
+ "ja": "忍者",
+ "en": "Ninja",
+ "cs": "Nindža"
+ }</span>
+ ...
+}
+</ins></pre>
+<del class="diff-old">Terms
+or
+compact
+IRIs
+used
+</del>
+</div>
+<p>
+<ins class="diff-chg">The
+example
+above
+expresses
+exactly
+the
+same
+information
+</ins>
+as
+the
+<ins class="diff-new">previous
+example
+but
+consolidates
+all
+values
+in
+a
+single
+property.
+To
+access
+the
+</ins>
+value
+<del class="diff-old">of
+</del>
+<ins class="diff-chg">in
+</ins>
+a
+<del class="diff-old">@type
+key
+</del>
+<ins class="diff-chg">specific
+language
+in
+a
+programming
+language
+supporting
+dot-notation
+accessors
+for
+object
+properties,
+a
+developer
+</ins>
+may
+<del class="diff-old">be
+defined
+within
+</del>
+<ins class="diff-chg">use
+</ins>
+the
+<del class="diff-old">same
+context.
+This
+means
+that
+one
+may
+specify
+a
+term
+like
+</del>
+<code>
+<del class="diff-old">xsd
+</del>
+<ins class="diff-chg">property.language
+</ins>
+</code>
+<del class="diff-old">and
+then
+</del>
+<ins class="diff-chg">pattern.
+For
+example,
+to
+access
+the
+occupation
+in
+English,
+a
+developer
+would
+</ins>
+use
+<del class="diff-old">xsd:integer
+within
+</del>
+the
+<del class="diff-old">same
+context
+definition.
+</del>
+<ins class="diff-chg">following
+code
+snippet:
+</ins><code><ins class="diff-chg">
+obj.occupation.en
+</ins></code>.
+</p>
+<p>
+<del class="diff-old">The
+example
+below
+demonstrates
+how
+a
+JSON-LD
+author
+can
+coerce
+values
+</del>
+<ins class="diff-chg">Third,
+it
+is
+possible
+</ins>
+to
+<del class="diff-old">typed
+values
+,
+IRIs
+and
+lists.
+</del>
+<ins class="diff-chg">override
+the
+default
+language
+by
+using
+an
+</ins><a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value"><ins class="diff-chg">
+expanded
+value
+</ins></a>:
+</p>
+<del class="diff-old">{
+ "@context":
+ {
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "age":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/age",
+ "@type": "xsd:integer"
+ },
+ "homepage":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id",
+ "@container": "@list"
+ }
+</del>
+ <div class="example"><div class="example-title"><span>Example 31</span>: Overriding default language using an expanded value</div><pre class="example">{
+<ins class="diff-chg"> "@context": {
+ ...
+ "@language": "ja"
+</ins>
+ },
+<del class="diff-old"> "@id": "http://example.com/people#john",
+ "name": "John Smith",
+ "age": ,
+ "homepage":
+ [
+ "http://personal.example.org/",
+ "http://work.example.com/jsmith/"
+ ]
+</del>
+<ins class="diff-chg"> "name": "花澄",
+ "occupation": <span class="diff">{
+ "@value": "Scientist",
+ "@language": "en"
+ }</span>
+</ins>
+}
+</pre>
+</div>
+<p>
+<del class="diff-old">The
+markup
+shown
+above
+would
+generate
+the
+following
+data.
+The
+data
+has
+no
+inherent
+order
+except
+for
+the
+values
+</del>
+<ins class="diff-chg">This
+makes
+it
+possible
+to
+specify
+a
+plain
+string
+by
+omitting
+</ins>
+the
+<code>
+<del class="diff-old">http://xmlns.com/foaf/0.1/homepage
+</del>
+<ins class="diff-chg">@language
+</ins>
+</code>
+<del class="diff-old">property
+which
+represent
+an
+ordered
+list.
+Subject
+Property
+Object
+Datatype
+http://example.com/people#john
+http://xmlns.com/foaf/0.1/name
+John
+Smith
+http://example.com/people#john
+http://xmlns.com/foaf/0.1/age
+41
+http://www.w3.org/2001/XMLSchema#integer
+http://example.com/people#john
+http://xmlns.com/foaf/0.1/homepage
+http://personal.example.org/
+http://work.example.com/jsmith/
+Terms
+may
+also
+be
+defined
+using
+absolute
+IRIs
+</del>
+<ins class="diff-chg">tag
+</ins>
+or
+<del class="diff-old">compact
+IRIs
+.
+This
+allows
+coercion
+rules
+to
+be
+applied
+</del>
+<ins class="diff-chg">setting
+it
+</ins>
+to
+<del class="diff-old">keys
+which
+are
+not
+represented
+as
+a
+simple
+term
+.
+For
+example:
+</del>
+<code>
+<ins class="diff-chg">null
+</ins></code><ins class="diff-chg">
+when
+expressing
+it
+using
+an
+</ins><a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value"><ins class="diff-chg">
+expanded
+value
+</ins></a>:
+</p>
+<del class="diff-old">{
+ "@context":
+ {
+ "foaf": "http://xmlns.com/foaf/0.1/",
+ "":
+ {
+ ,
+ "@type": "xsd:integer"
+ },
+ "":
+ {
+ "@type": "@id"
+ }
+</del>
+ <div class="example"><div class="example-title"><span>Example 32</span>: Removing language information using an expanded value</div><pre class="example">{
+<ins class="diff-chg"> "@context": {
+ ...
+ "@language": "ja"
+</ins>
+ },
+<del class="diff-old"> "foaf:name": "John Smith",
+ "": "41",
+ "":
+ [
+ "http://personal.example.org/",
+ "http://work.example.com/jsmith/"
+ ]
+</del>
+<ins class="diff-chg"> "name": <span class="diff">{
+ "@value": "Frank"
+ }</span>,
+ "occupation": {
+ "@value": "Ninja",
+ "@language": "en"
+ },
+ "speciality": "手裏剣"
+</ins>
+}
+</pre>
+</div>
+</section>
+<section id="overriding-vocab">
+<h3>
+<span class="secno">
+<ins class="diff-new">6.6
+</ins></span><ins class="diff-new">
+Overriding
+@vocab
+</ins></h3>
+<p>
+<del class="diff-old">In
+this
+case
+the
+</del>
+<ins class="diff-chg">If
+</ins>
+<code>
+<del class="diff-old">@id
+</del>
+<ins class="diff-chg">@vocab
+</ins>
+</code>
+<del class="diff-old">definition
+in
+the
+term
+definition
+</del>
+is
+<del class="diff-old">optional,
+</del>
+<ins class="diff-chg">used
+</ins>
+but
+<del class="diff-old">if
+it
+does
+exist,
+the
+compact
+IRI
+</del>
+<ins class="diff-chg">certain
+keys
+in
+an
+</ins><a class="tref internalDFN" title="json_object" href="#dfn-json_object"><ins class="diff-chg">
+object
+</ins>
+</a>
+<del class="diff-old">or
+</del>
+<ins class="diff-chg">should
+not
+be
+expanded
+using
+the
+vocabulary
+</ins>
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+<del class="diff-old">is
+treated
+as
+</del>
+</a>,
+a
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+<del class="diff-old">(not
+a
+prefix:suffix
+construct)
+so
+that
+the
+actual
+definition
+of
+a
+prefix
+becomes
+unnecessary.
+Type
+coercion
+is
+performed
+using
+the
+unexpanded
+value
+of
+the
+key,
+which
+has
+</del>
+<ins class="diff-chg">can
+be
+explicitly
+set
+</ins>
+to
+<del class="diff-old">match
+exactly
+an
+entry
+</del>
+<a class="tref internalDFN" title="null" href="#dfn-null">
+<ins class="diff-chg">null
+</ins></a>
+in
+the
+<del class="diff-old">active
+</del>
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>.
+<del class="diff-old">Note
+Keys
+</del>
+<ins class="diff-chg">For
+instance,
+</ins>
+in
+the
+<del class="diff-old">context
+are
+treated
+as
+terms
+for
+the
+purpose
+of
+expansion
+and
+value
+coercion.
+At
+times,
+this
+may
+result
+in
+multiple
+representations
+for
+</del>
+<ins class="diff-chg">example
+below
+</ins>
+the
+<del class="diff-old">same
+expanded
+IRI
+.
+For
+example,
+one
+could
+specify
+that
+dog
+and
+</del>
+<code>
+<del class="diff-old">cat
+</del>
+<ins class="diff-chg">databaseId
+</ins>
+</code>
+<del class="diff-old">both
+expanded
+to
+http://example.com/vocab#animal
+.
+Doing
+this
+could
+</del>
+<ins class="diff-chg">member
+would
+</ins>
+be
+<del class="diff-old">useful
+for
+establishing
+different
+type
+coercion
+or
+language
+specification
+rules.
+It
+also
+allows
+</del>
+<ins class="diff-chg">ignored
+by
+</ins>
+a
+<del class="diff-old">compact
+IRI
+(or
+even
+an
+absolute
+</del>
+<ins class="diff-chg">JSON-LD
+processor.
+</ins></p>
+<del class="diff-old">IRI
+</del>
+<p>
+<del class="diff-old">)
+to
+be
+defined
+as
+something
+else
+entirely.
+For
+example,
+one
+could
+specify
+that
+the
+term
+http://example.org/zoo
+should
+expand
+to
+http://example.org/river
+,
+but
+this
+usage
+is
+discouraged
+because
+it
+would
+lead
+to
+a
+great
+deal
+of
+confusion
+among
+developers
+attempting
+to
+understand
+the
+JSON-LD
+document.
+</del>
+</p>
+ <div class="example"><div class="example-title"><span>Example 33</span>: Using the null keyword to ignore data</div><pre class="example">{
+<ins class="diff-new"> "@context":
+ {
+ "@vocab": "http://schema.org/",
+</ins> <span class="diff">"databaseId": null</span><ins class="diff-new">
+ },
+ "name": "Gregg Kellogg",
+</ins> <span class="diff">"databaseId": "23987520"</span><ins class="diff-new">
+}
+</ins></pre>
+</div>
+</section>
+<section id="property-generators">
+<h3>
+<span class="secno">
+6.7
+</span>
+Property
+Generators
+</h3>
+<p>
+At
+times,
+an
+author
+may
+find
+that
+they
+need
+to
+express
+the
+same
+value
+for
+multiple
+properties.
+The
+simplest
+approach
+to
+accomplish
+this
+goal
+would
+be
+to
+do
+the
+following:
+</p>
+<del class="diff-old">{
+ "@context":
+</del>
+<div class="example"><div class="example-title"><span>Example 34</span>: Verbose expression of multiple properties with the same value</div><pre class="example">{
+<ins class="diff-chg"> "@context":
+</ins>
+ {
+<del class="diff-old"> ,
+ ,
+
+</del>
+ <span class="diff">"title1": "http://purl.org/dc/terms/title"</span>,
+ <span class="diff">"title2": "http://schema.org/name"</span>,
+ <span class="diff">"title3": "http://www.w3.org/2000/01/rdf-schema#label"</span>
+ },
+<del class="diff-old"> "@id": "http://example.com/book",
+ ,
+ ,
+
+</del>
+<ins class="diff-chg"> "@id": "http://example.com/book",
+</ins> <span class="diff">"title1": "The Count of Monte Cristo"</span>, <span class="diff">"title2": "The Count of Monte Cristo"</span>, <span class="diff">"title3": "The Count of Monte Cristo"</span>
+}
+</pre>
+</div>
+<p>
+Unfortunately,
+the
+approach
+above
+produces
+redundant
+data
+and
+would
+become
+a
+publishing
+burden
+for
+large
+data
+sets.
+In
+these
+situations,
+the
+author
+may
+use
+a
+<dfn title="property_generator" id="dfn-property_generator">
+property
+generator
+</dfn>
+to
+express
+a
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+that
+maps
+to
+multiple
+<a class="tref internalDFN" title="property" href="#dfn-property">
+properties
+</a>
+in
+the
+<a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">
+JSON-LD
+graph
+</a>.
+This
+method
+can
+be
+accomplished
+by
+using
+the
+following
+markup
+pattern:
+</p>
+<del class="diff-old">{
+ "@context":
+</del>
+<div class="example"><div class="example-title"><span>Example 35</span>: Generating multiple properties using a single term</div><pre class="example">{
+<ins class="diff-chg"> "@context":
+</ins>
+ {
+<del class="diff-old"> "title": { "@id": [ "http://purl.org/dc/terms/title",
+ "http://schema.org/name",
+ "http://www.w3.org/2000/01/rdf-schema#label" ] }
+</del>
+ <span class="diff">"title": { "@id": [ "http://purl.org/dc/terms/title",
+<ins class="diff-chg"> "http://schema.org/name",
+ "http://www.w3.org/2000/01/rdf-schema#label" ] }</span>
+</ins>
+ },
+<del class="diff-old"> "@id": "http://example.com/book",
+
+</del>
+<ins class="diff-chg"> "@id": "http://example.com/book",
+</ins> <span class="diff">"title": "The Count of Monte Cristo"</span>
+}
+</pre>
+</div>
+<p>
+While
+the
+term
+above
+is
+only
+used
+once
+outside
+of
+the
+<code>
+@context
+</code>,
+the
+document
+above
+<del class="diff-old">is
+equivalent
+to
+the
+following:
+</del>
+<ins class="diff-chg">will
+be
+interpreted
+like
+so:
+</ins>
+</p>
+<table class="example">
+<thead>
+<tr>
+<th>
+Subject
+</th>
+<th>
+Property
+</th>
+<th>
+<del class="diff-old">Object
+</del>
+<ins class="diff-chg">Value
+</ins>
+</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+http://example.com/book
+</td>
+<td>
+http://purl.org/dc/terms/title
+</td>
+<td>
+The
+Count
+of
+Monte
+Cristo
+</td>
+</tr>
+<tr>
+<td>
+http://example.com/book
+</td>
+<td>
+http://schema.org/name
+</td>
+<td>
+The
+Count
+of
+Monte
+Cristo
+</td>
+</tr>
+<tr>
+<td>
+http://example.com/book
+</td>
+<td>
+http://www.w3.org/2000/01/rdf-schema#label
+</td>
+<td>
+The
+Count
+of
+Monte
+Cristo
+</td>
+</tr>
+</tbody>
+</table>
+</section>
+<section id="iri-expansion-within-a-context">
+<h3>
+<span class="secno">
+6.8
+</span>
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+Expansion
+Within
+a
+Context
+</h3>
+<p>
+In
+general,
+normal
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+expansion
+rules
+apply
+anywhere
+an
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+is
+expected
+(see
+<a href="#iris" class="sec-ref">
+<span class="secno">
+<del class="diff-old">5.3
+</del>
+<ins class="diff-chg">5.2
+</ins>
+</span>
+<span class="sec-title">
+IRIs
+</span>
+</a>
+).
+Within
+a
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>
+definition,
+this
+can
+mean
+that
+terms
+defined
+within
+the
+context
+may
+also
+be
+used
+within
+that
+context
+as
+long
+as
+there
+are
+no
+circular
+dependencies.
+For
+example,
+it
+is
+common
+to
+use
+the
+<code>
+xsd
+</code>
+namespace
+when
+defining
+<a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">
+typed
+value
+</a>
+s:
+</p>
+<del class="diff-old">{
+ "@context":
+</del>
+<div class="example"><div class="example-title"><span>Example 36</span>: IRI expansion within a context</div><pre class="example">{
+<ins class="diff-chg"> "@context":
+</ins>
+ {
+<del class="diff-old"> ,
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "age":
+</del>
+ <span class="diff">"xsd": "http://www.w3.org/2001/XMLSchema#"</span>,
+<ins class="diff-chg"> "name": "http://xmlns.com/foaf/0.1/name",
+ "age":
+</ins>
+ {
+<del class="diff-old"> "@id": "http://xmlns.com/foaf/0.1/age",
+ "@type":
+</del>
+<ins class="diff-chg"> "@id": "http://xmlns.com/foaf/0.1/age",
+ "@type": <span class="diff">"xsd:integer"</span>
+</ins>
+ },
+<del class="diff-old"> "homepage":
+</del>
+<ins class="diff-chg"> "homepage":
+</ins>
+ {
+<del class="diff-old"> "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+</del>
+<ins class="diff-chg"> "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+</ins>
+ }
+ },
+ ...
+}
+</pre>
+</div>
+<p>
+In
+this
+example,
+the
+<code>
+xsd
+</code>
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+is
+defined
+and
+used
+as
+a
+<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
+prefix
+</a>
+for
+the
+<code>
+@type
+</code>
+coercion
+of
+the
+<code>
+age
+</code>
+property.
+</p>
+<p>
+<a class="tref internalDFN" title="term" href="#dfn-term">
+Terms
+</a>
+may
+also
+be
+used
+when
+defining
+the
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+of
+another
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>:
+</p>
+<del class="diff-old">{
+ "@context":
+</del>
+<div class="example"><div class="example-title"><span>Example 37</span>: Using a term to define the IRI of another term within a context</div><pre class="example">{
+<ins class="diff-chg"> "@context":
+</ins>
+ {
+<del class="diff-old"> ,
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
+ "name": ,
+ "age":
+</del>
+ <span class="diff">"foaf": "http://xmlns.com/foaf/0.1/"</span>,
+<ins class="diff-chg"> "xsd": "http://www.w3.org/2001/XMLSchema#",
+ "name": <span class="diff">"foaf:name"</span>,
+ "age":
+</ins>
+ {
+<del class="diff-old"> "@id": ,
+ "@type": "xsd:integer"
+</del>
+<ins class="diff-chg"> "@id": <span class="diff">"foaf:age"</span>,
+ "@type": "xsd:integer"
+</ins>
+ },
+<del class="diff-old"> "homepage":
+</del>
+<ins class="diff-chg"> "homepage":
+</ins>
+ {
+<del class="diff-old"> "@id": ,
+ "@type": "@id"
+</del>
+<ins class="diff-chg"> "@id": <span class="diff">"foaf:homepage"</span>,
+ "@type": "@id"
+</ins>
+ }
+ },
+ ...
+}
+</pre>
+</div>
+<p>
+<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
+Compact
+IRIs
+</a>
+and
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+IRIs
+</a>
+may
+be
+used
+on
+the
+left-hand
+side
+of
+a
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+definition.
+</p>
+<del class="diff-old">{
+ "@context":
+</del>
+<div class="example"><div class="example-title"><span>Example 38</span>: Using a compact IRI as a term</div><pre class="example">{
+<ins class="diff-chg"> "@context":
+</ins>
+ {
+<del class="diff-old"> ,
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
+ "name": "foaf:name",
+ "":
+</del>
+ <span class="diff">"foaf": "http://xmlns.com/foaf/0.1/"</span>,
+<ins class="diff-chg"> "xsd": "http://www.w3.org/2001/XMLSchema#",
+ "name": "foaf:name",
+ "<span class="diff">foaf:age</span>":
+</ins>
+ {
+<del class="diff-old"> "@type": "xsd:integer"
+</del>
+<ins class="diff-chg"> "@type": "xsd:integer"
+</ins>
+ },
+<del class="diff-old"> "":
+</del>
+<ins class="diff-chg"> "<span class="diff">foaf:homepage</span>":
+</ins>
+ <span class="diff">{
+<del class="diff-old"> "@type": "@id"
+</del>
+<ins class="diff-chg"> "@type": "@id"
+</ins>
+ }</span>
+ },
+ ...
+}
+</pre>
+</div>
+<p>
+In
+this
+example,
+the
+<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
+compact
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+form
+is
+used
+in
+two
+different
+ways.
+In
+the
+first
+approach,
+<code>
+foaf:age
+</code>
+declares
+both
+the
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+for
+the
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+(using
+short-form)
+as
+well
+as
+the
+<code>
+@type
+</code>
+associated
+with
+the
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>.
+In
+the
+second
+approach,
+only
+the
+<code>
+@type
+</code>
+associated
+with
+the
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+is
+specified.
+The
+full
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+for
+<code>
+foaf:homepage
+</code>
+is
+determined
+by
+looking
+up
+the
+<code>
+foaf
+</code>
+<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
+prefix
+</a>
+in
+the
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>.
+</p>
+<p>
+<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
+Absolute
+IRIs
+</a>
+may
+also
+be
+used
+in
+the
+key
+position
+in
+a
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>:
+</p>
+<del class="diff-old">{
+ "@context":
+</del>
+<div class="example"><div class="example-title"><span>Example 39</span>: Associating context definitions with absolute IRIs</div><pre class="example">{
+<ins class="diff-chg"> "@context":
+</ins>
+ {
+<del class="diff-old"> "foaf": "http://xmlns.com/foaf/0.1/",
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
+ "name": "foaf:name",
+ "foaf:age":
+</del>
+<ins class="diff-chg"> "foaf": "http://xmlns.com/foaf/0.1/",
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
+ "name": "foaf:name",
+ "foaf:age":
+</ins>
+ {
+<del class="diff-old"> "@id": "foaf:age",
+ "@type": "xsd:integer"
+</del>
+<ins class="diff-chg"> "@id": "foaf:age",
+ "@type": "xsd:integer"
+</ins>
+ },
+<del class="diff-old"> "":
+</del>
+<ins class="diff-chg"> "<span class="diff">http://xmlns.com/foaf/0.1/homepage</span>":
+</ins>
+ {
+<del class="diff-old"> "@type": "@id"
+</del>
+<ins class="diff-chg"> "@type": "@id"
+</ins>
+ }
+ },
+ ...
+}
+</pre>
+</div>
+<p>
+In
+order
+for
+the
+<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+to
+match
+above,
+the
+<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+needs
+to
+be
+used
+in
+the
+<a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">
+JSON-LD
+document
+</a>.
+Also
+note
+that
+<code>
+foaf:homepage
+</code>
+will
+not
+use
+the
+<code>
+{
+<del class="diff-old">"@type":
+"@id"
+</del>
+<ins class="diff-chg">"@type":
+"@id"
+</ins>
+}
+</code>
+declaration
+because
+<code>
+foaf:homepage
+</code>
+is
+not
+the
+same
+as
+<code>
+http://xmlns.com/foaf/0.1/homepage
+</code>.
+That
+is,
+<a class="tref internalDFN" title="term" href="#dfn-term">
+terms
+</a>
+are
+looked
+up
+in
+a
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>
+using
+direct
+string
+comparison
+before
+the
+<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
+prefix
+</a>
+lookup
+mechanism
+is
+applied.
+</p>
+<p>
+The
+only
+exception
+for
+using
+terms
+in
+the
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>
+is
+that
+circular
+definitions
+are
+not
+allowed.
+That
+is,
+a
+definition
+of
+<em>
+<del class="diff-old">term-1
+</del>
+<ins class="diff-chg">term1
+</ins>
+</em>
+cannot
+depend
+on
+the
+definition
+of
+<em>
+<del class="diff-old">term-2
+</del>
+<ins class="diff-chg">term2
+</ins>
+</em>
+if
+<em>
+<del class="diff-old">term-2
+</del>
+<ins class="diff-chg">term2
+</ins>
+</em>
+also
+depends
+on
+<em>
+<del class="diff-old">term-1
+</del>
+<ins class="diff-chg">term1
+</ins>
+</em>.
+For
+example,
+the
+following
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>
+definition
+is
+illegal:
+</p>
+<del class="diff-old">{
+ "@context":
+</del>
+<div class="example"><div class="example-title"><span>Example 40</span>: Illegal circular definition of terms within a context</div><pre class="example">{
+<ins class="diff-chg"> "@context":
+</ins>
+ {
+<del class="diff-old"> "term1": "term2:foo",
+ "term2": "term1:bar"
+</del>
+ <span class="diff">"term1": "term2:foo",
+<ins class="diff-chg"> "term2": "term1:bar"</span>
+</ins>
+ },
+ ...
+}
+</pre>
+</div>
+</section>
+<section id="sets-and-lists">
+<h3>
+<span class="secno">
+6.9
+</span>
+Sets
+and
+Lists
+</h3>
+<p>
+A
+JSON-LD
+author
+can
+express
+multiple
+values
+in
+a
+compact
+way
+by
+using
+<a class="tref internalDFN" title="array" href="#dfn-array">
+arrays
+</a>.
+Since
+graphs
+do
+not
+describe
+ordering
+for
+links
+between
+nodes,
+arrays
+in
+JSON-LD
+do
+not
+provide
+an
+ordering
+of
+the
+contained
+elements
+by
+default.
+This
+is
+exactly
+the
+opposite
+from
+regular
+JSON
+arrays,
+which
+are
+ordered
+by
+default.
+For
+example,
+consider
+the
+following
+simple
+document:
+</p>
+<del class="diff-old">{
+</del>
+<div class="example"><div class="example-title"><span>Example 41</span>: Multiple values with no inherent order</div><pre class="example">{
+...
+<del class="diff-old"> "@id": "http://example.org/people#joebob",
+ "nick": ,
+</del>
+<ins class="diff-chg"> "@id": "http://example.org/people#joebob",
+ "nick": <span class="diff">[ "joe", "bob", "JB" ]</span>,
+</ins>
+...
+}
+</pre>
+</div>
+<p>
+The
+markup
+shown
+above
+would
+result
+in
+the
+following
+data
+being
+generated,
+each
+relating
+the
+node
+to
+an
+individual
+value,
+with
+no
+inherent
+order:
+</p>
+<table class="example">
+<thead>
+<tr>
+<th>
+Subject
+</th>
+<th>
+Property
+</th>
+<th>
+<del class="diff-old">Object
+</del>
+<ins class="diff-chg">Value
+</ins>
+</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+http://example.org/people#joebob
+</td>
+<td>
+http://xmlns.com/foaf/0.1/nick
+</td>
+<td>
+joe
+</td>
+</tr>
+<tr>
+<td>
+http://example.org/people#joebob
+</td>
+<td>
+http://xmlns.com/foaf/0.1/nick
+</td>
+<td>
+bob
+</td>
+</tr>
+<tr>
+<td>
+http://example.org/people#joebob
+</td>
+<td>
+http://xmlns.com/foaf/0.1/nick
+</td>
+<td>
+<del class="diff-old">jaybee
+</del>
+<ins class="diff-chg">JB
+</ins>
+</td>
+</tr>
+</tbody>
+</table>
+<p>
+Multiple
+values
+may
+also
+be
+expressed
+using
+the
+expanded
+form:
+</p>
+<del class="diff-old">{
+ "@id": "http://example.org/articles/8",
+ "dc:title":
+</del>
+<div class="example"><div class="example-title"><span>Example 42</span>: Using an expanded form to set multiple values</div><pre class="example">{
+<ins class="diff-chg"> "@id": "http://example.org/articles/8",
+ "dc:title": <span class="diff">
+</ins>
+ [
+ {
+<del class="diff-old"> "@value": "Das Kapital",
+ "@language": "de"
+</del>
+<ins class="diff-chg"> "@value": "Das Kapital",
+ "@language": "de"
+</ins>
+ },
+ {
+<del class="diff-old"> "@value": "Capital",
+ "@language": "en"
+</del>
+<ins class="diff-chg"> "@value": "Capital",
+ "@language": "en"
+</ins>
+ }
+ ]</span>
+}
+</pre>
+</div>
+<p>
+The
+markup
+shown
+above
+would
+generate
+the
+following
+data,
+again
+with
+no
+inherent
+order:
+</p>
+<table class="example">
+<thead>
+<tr>
+<th>
+Subject
+</th>
+<th>
+Property
+</th>
+<th>
+<del class="diff-old">Object
+</del>
+<ins class="diff-chg">Value
+</ins>
+</th>
+<th>
+Language
+</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+http://example.org/articles/8
+</td>
+<td>
+http://purl.org/dc/terms/title
+</td>
+<td>
+Das
+Kapital
+</td>
+<td>
+de
+</td>
+</tr>
+<tr>
+<td>
+http://example.org/articles/8
+</td>
+<td>
+http://purl.org/dc/terms/title
+</td>
+<td>
+Capital
+</td>
+<td>
+en
+</td>
+</tr>
+</tbody>
+</table>
+<p>
+As
+the
+notion
+of
+ordered
+collections
+is
+rather
+important
+in
+data
+modeling,
+it
+is
+useful
+to
+have
+specific
+language
+support.
+In
+JSON-LD,
+a
+list
+may
+be
+represented
+using
+the
+<code>
+@list
+</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>
+as
+follows:
+</p>
+<del class="diff-old">{
+</del>
+<div class="example"><div class="example-title"><span>Example 43</span>: An ordered collection of values in JSON-LD</div><pre class="example">{
+...
+<del class="diff-old"> "@id": "http://example.org/people#joebob",
+ "foaf:nick":
+</del>
+<ins class="diff-chg"> "@id": "http://example.org/people#joebob",
+ "foaf:nick":
+</ins>
+ <span class="diff">{
+<del class="diff-old"> "@list": [ "joe", "bob", "jaybee" ]
+</del>
+<ins class="diff-chg"> "@list": [ "joe", "bob", "jaybee" ]
+</ins>
+ }</span>,
+...
+}
+</pre>
+</div>
+<p>
+This
+describes
+the
+use
+of
+this
+<a class="tref internalDFN" title="array" href="#dfn-array">
+array
+</a>
+as
+being
+ordered,
+and
+order
+is
+maintained
+when
+processing
+a
+document.
+If
+every
+use
+of
+a
+given
+multi-valued
+property
+is
+a
+list,
+this
+may
+be
+abbreviated
+by
+setting
+<code>
+@container
+</code>
+to
+<code>
+@list
+</code>
+in
+the
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>:
+</p>
+<del class="diff-old">{
+ "@context":
+</del>
+<div class="example"><div class="example-title"><span>Example 44</span>: Specifying that a collection is ordered in the context</div><pre class="example">{
+ <span class="diff">"@context":
+ {
+ ...
+<del class="diff-old"> "nick":
+</del>
+<ins class="diff-chg"> "nick":
+</ins>
+ {
+<del class="diff-old"> "@id": "http://xmlns.com/foaf/0.1/nick",
+ "@container": "@list"
+</del>
+<ins class="diff-chg"> "@id": "http://xmlns.com/foaf/0.1/nick",
+ "@container": "@list"
+</ins>
+ }
+ }</span>,
+...
+<del class="diff-old"> "@id": "http://example.org/people#joebob",
+ "nick": ,
+</del>
+<ins class="diff-chg"> "@id": "http://example.org/people#joebob",
+ "nick": <span class="diff">[ "joe", "bob", "jaybee" ]</span>,
+</ins>
+...
+}
+</pre>
+</div>
+<div class="note">
+<div class="note-title">
+<span>
+Note
+</span>
+</div>
+<p class="">
+List
+of
+lists
+are
+not
+allowed
+in
+this
+version
+of
+JSON-LD.
+This
+decision
+was
+made
+due
+to
+the
+extreme
+amount
+of
+added
+complexity
+when
+processing
+lists
+of
+lists.
+</p>
+</div>
+<p>
+<del class="diff-old">Similarly
+to
+</del>
+<ins class="diff-chg">While
+</ins>
+<code>
+@list
+<del class="diff-old">,
+there
+exists
+</del>
+</code>
+<ins class="diff-chg">is
+used
+to
+describe
+</ins><em><ins class="diff-chg">
+ordered
+sets
+</ins></em>,
+the
+<del class="diff-old">keyword
+</del>
+<code>
+@set
+</code>
+<ins class="diff-new">keyword
+is
+used
+</ins>
+to
+describe
+<em>
+unordered
+<del class="diff-old">sets.
+While
+its
+</del>
+<ins class="diff-chg">sets
+</ins></em>.<ins class="diff-chg">
+The
+</ins>
+use
+<ins class="diff-new">of
+</ins><code><ins class="diff-new">
+@set
+</ins></code>
+in
+the
+body
+of
+a
+JSON-LD
+document
+<del class="diff-old">represents
+just
+syntactic
+sugar
+</del>
+<ins class="diff-chg">is
+</ins>
+optimized
+away
+when
+processing
+the
+document,
+<ins class="diff-new">as
+</ins>
+it
+is
+<del class="diff-old">very
+</del>
+<ins class="diff-chg">just
+syntactic
+sugar.
+However,
+</ins><code><ins class="diff-chg">
+@set
+</ins></code><ins class="diff-chg">
+is
+</ins>
+helpful
+when
+used
+within
+the
+context
+of
+a
+document.
+Values
+of
+terms
+associated
+with
+a
+<code>
+@set
+</code>
+or
+<code>
+@list
+</code>
+container
+are
+always
+represented
+in
+the
+form
+of
+an
+<a class="tref internalDFN" title="array" href="#dfn-array">
+array
+<del class="diff-old">-
+</del>
+</a>,
+even
+if
+there
+is
+just
+a
+single
+value
+that
+would
+otherwise
+be
+optimized
+to
+a
+non-array
+form
+in
+<del class="diff-old">a
+</del>
+<ins class="diff-chg">compact
+form
+(see
+</ins>
+<a href="#compact-document-form" class="sec-ref">
+<span class="secno">
+<del class="diff-old">6.17
+</del>
+<ins class="diff-chg">6.15
+</ins>
+</span>
+<span class="sec-title">
+Compact
+Document
+Form
+</span>
+<del class="diff-old">.
+</del>
+</a>
+<ins class="diff-chg">).
+</ins>
+This
+makes
+post-processing
+of
+<del class="diff-old">the
+data
+</del>
+<ins class="diff-chg">JSON-LD
+documents
+</ins>
+easier
+as
+the
+data
+is
+always
+in
+array
+form,
+even
+if
+the
+array
+only
+contains
+a
+single
+value.
+</p>
+<div class="note">
+<div class="note-title">
+<span>
+Note
+</span>
+</div>
+<p class="">
+The
+use
+of
+<code>
+@container
+</code>
+in
+the
+body
+of
+a
+JSON-LD
+document
+has
+no
+meaning
+and
+is
+not
+allowed
+by
+the
+JSON-LD
+grammar
+(see
+<a href="#json-ld-grammar" class="sec-ref">
+<span class="secno">
+B.
+</span>
+<span class="sec-title">
+JSON-LD
+Grammar
+</span>
+</a>
+).
+</p>
+</div>
+</section>
+<section id="embedding">
+<h3>
+<span class="secno">
+6.10
+</span>
+Embedding
+</h3>
+<p>
+<dfn title="embedding" id="dfn-embedding">
+Embedding
+</dfn>
+is
+a
+JSON-LD
+feature
+that
+allows
+an
+author
+to
+use
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+objects
+</a>
+as
+<a class="tref internalDFN" title="property" href="#dfn-property">
+property
+</a>
+values.
+This
+is
+a
+commonly
+used
+mechanism
+for
+creating
+a
+parent-child
+relationship
+between
+two
+<a class="tref internalDFN" title="node" href="#dfn-node">
+nodes
+</a>.
+</p>
+<p>
+The
+example
+shows
+two
+nodes
+related
+by
+a
+property
+from
+the
+first
+node:
+</p>
+<del class="diff-old"> {
+</del>
+ <div class="example"><div class="example-title"><span>Example 45</span>: Embedding a node object as property value of another node object</div><pre class="example">{
+...
+<del class="diff-old"> "name": "Manu Sporny",
+ "":
+</del>
+<ins class="diff-chg"> "name": "Manu Sporny",
+ "<span class="diff">knows</span>":
+</ins>
+ {
+<del class="diff-old"> "",
+ "",
+</del>
+<ins class="diff-chg"> "<span class="diff">@type</span>": "<span class="diff">Person</span>",
+ "<span class="diff">name</span>": "<span class="diff">Gregg Kellogg</span>",
+</ins>
+ }
+...
+}
+</pre>
+</div>
+<p>
+A
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+object
+</a>,
+like
+the
+one
+used
+above,
+may
+be
+used
+in
+any
+value
+position
+in
+the
+body
+of
+a
+JSON-LD
+document.
+</p>
+</section>
+<section id="named-graphs">
+<h3>
+<span class="secno">
+6.11
+</span>
+Named
+Graphs
+</h3>
+<p>
+At
+times,
+it
+is
+necessary
+to
+make
+statements
+about
+a
+<a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">
+JSON-LD
+graph
+</a>
+itself,
+rather
+than
+just
+a
+single
+<a class="tref internalDFN" title="node" href="#dfn-node">
+node
+</a>.
+This
+can
+be
+done
+by
+grouping
+a
+set
+of
+<a class="tref internalDFN" title="node" href="#dfn-node">
+nodes
+</a>
+using
+the
+<code>
+@graph
+</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>.
+A
+developer
+may
+also
+name
+data
+expressed
+using
+the
+<code>
+@graph
+</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>
+by
+pairing
+it
+with
+an
+<code>
+@id
+</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>
+as
+shown
+in
+the
+following
+example:
+</p>
+<del class="diff-old"> {
+ "@context": {
+ "generatedAt": "http://www.w3.org/ns/prov#generatedAtTime",
+ "Person": "http://xmlns.com/foaf/0.1/Person",
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "knows": "http://xmlns.com/foaf/0.1/knows",
+ "xsd": "http://www.w3.org/2001/XMLSchema#"
+</del>
+ <div class="example"><div class="example-title"><span>Example 46</span>: Identifying and making statements about a graph</div><pre class="example">{
+<ins class="diff-chg"> "@context": {
+ "generatedAt": "http://www.w3.org/ns/prov#generatedAtTime",
+ "Person": "http://xmlns.com/foaf/0.1/Person",
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "knows": "http://xmlns.com/foaf/0.1/knows",
+ "xsd": "http://www.w3.org/2001/XMLSchema#"
+</ins>
+ },
+<del class="diff-old"> "@id": "http://example.org/graphs/73",
+ "generatedAt": { "@value": "2012-04-09", "@type": "xsd:date" },
+ "@graph":
+</del>
+ <span class="diff">"@id": "http://example.org/graphs/73",
+<ins class="diff-chg"> "generatedAt": { "@value": "2012-04-09", "@type": "xsd:date" },
+ "@graph":</span>
+</ins>
+ [
+ {
+<del class="diff-old"> "@id": "http://manu.sporny.org/i/public",
+ "@type": "Person",
+ "name": "Manu Sporny",
+ "knows": "http://greggkellogg.net/foaf#me"
+</del>
+<ins class="diff-chg"> "@id": "http://manu.sporny.org/i/public",
+ "@type": "Person",
+ "name": "Manu Sporny",
+ "knows": "http://greggkellogg.net/foaf#me"
+</ins>
+ },
+ {
+<del class="diff-old"> "@id": "http://greggkellogg.net/foaf#me",
+ "@type": "Person",
+ "name": "Gregg Kellogg",
+ "knows": "http://manu.sporny.org/i/public"
+</del>
+<ins class="diff-chg"> "@id": "http://greggkellogg.net/foaf#me",
+ "@type": "Person",
+ "name": "Gregg Kellogg",
+ "knows": "http://manu.sporny.org/i/public"
+</ins>
+ }
+ ]
+}
+</pre>
+</div>
+<p>
+The
+example
+above
+expresses
+a
+<em>
+named
+</em>
+<a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">
+JSON-LD
+graph
+</a>
+that
+is
+identified
+by
+the
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+<code>
+http://example.org/graphs/73
+</code>.
+That
+graph
+is
+composed
+of
+the
+statements
+about
+Manu
+and
+Gregg.
+Metadata
+about
+the
+graph
+itself
+is
+also
+expressed
+via
+the
+<code>
+generatedAt
+</code>
+property,
+which
+specifies
+when
+the
+graph
+was
+generated.
+An
+alternative
+view
+of
+the
+information
+above
+is
+represented
+in
+table
+form
+below:
+</p>
+<table class="example">
+<thead>
+<tr>
+<th>
+Graph
+</th>
+<th>
+Subject
+</th>
+<th>
+Property
+</th>
+<th>
+<del class="diff-old">Object
+</del>
+<ins class="diff-chg">Value
+</ins>
+</th>
+<th>
+<del class="diff-old">Datatype
+</del>
+<ins class="diff-chg">Value
+Type
+</ins>
+</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>
+http://example.org/graphs/73
+</td>
+<td>
+http://example.org/graphs/73
+</td>
+<td>
+http://www.w3.org/ns/prov#generatedAtTime
+</td>
+<td>
+2012-04-09
+</td>
+<td>
+http://www.w3.org/2001/XMLSchema#date
+</td>
+</tr>
+<tr>
+<td>
+http://example.org/graphs/73
+</td>
+<td>
+http://manu.sporny.org/i/public
+</td>
+<td>
+http://www.w3.org/2001/XMLSchema#type
+</td>
+<td>
+http://xmlns.com/foaf/0.1/Person
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+http://example.org/graphs/73
+</td>
+<td>
+http://manu.sporny.org/i/public
+</td>
+<td>
+http://xmlns.com/foaf/0.1/name
+</td>
+<td>
+Manu
+Sporny
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+http://example.org/graphs/73
+</td>
+<td>
+http://manu.sporny.org/i/public
+</td>
+<td>
+http://xmlns.com/foaf/0.1/knows
+</td>
+<td>
+http://greggkellogg.net/foaf#me
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+http://example.org/graphs/73
+</td>
+<td>
+http://greggkellogg.net/foaf#me
+</td>
+<td>
+http://www.w3.org/2001/XMLSchema#type
+</td>
+<td>
+http://xmlns.com/foaf/0.1/Person
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+http://example.org/graphs/73
+</td>
+<td>
+http://greggkellogg.net/foaf#me
+</td>
+<td>
+http://xmlns.com/foaf/0.1/name
+</td>
+<td>
+Gregg
+Kellogg
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+http://example.org/graphs/73
+</td>
+<td>
+http://greggkellogg.net/foaf#me
+</td>
+<td>
+http://xmlns.com/foaf/0.1/knows
+</td>
+<td>
+http://manu.sporny.org/i/public
+</td>
+<td>
+</td>
+</tr>
+</tbody>
+</table>
+<p>
+When
+<code>
+@graph
+</code>
+is
+used
+in
+a
+document's
+top-level
+object
+which
+has
+no
+other
+<a class="tref internalDFN" title="property" href="#dfn-property">
+properties
+</a>
+that
+are
+mapped
+to
+an
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+a
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>
+it
+is
+considered
+to
+express
+the
+otherwise
+implicit
+default
+graph.
+This
+mechanism
+can
+be
+useful
+when
+a
+number
+of
+<a class="tref internalDFN" title="node" href="#dfn-node">
+nodes
+</a>
+<del class="diff-old">thay
+may
+</del>
+<ins class="diff-chg">do
+</ins>
+not
+directly
+relate
+to
+one
+another
+through
+a
+property
+or
+where
+<a class="tref internalDFN" title="embedding" href="#dfn-embedding">
+embedding
+</a>
+is
+not
+desirable
+to
+the
+application.
+For
+example:
+</p>
+<del class="diff-old"> {
+ "@context": ...,
+ "":
+</del>
+ <div class="example"><div class="example-title"><span>Example 47</span>: Using @graph to explicitly express the default graph</div><pre class="example">{
+<ins class="diff-chg"> "@context": ...,
+ "<span class="diff">@graph</span>":
+</ins>
+ [
+ {
+<del class="diff-old"> "@id": "http://manu.sporny.org/i/public",
+ "@type": "foaf:Person",
+ "name": "Manu Sporny",
+ "knows": "http://greggkellogg.net/foaf#me"
+</del>
+<ins class="diff-chg"> "@id": "http://manu.sporny.org/i/public",
+ "@type": "foaf:Person",
+ "name": "Manu Sporny",
+ "knows": "http://greggkellogg.net/foaf#me"
+</ins>
+ },
+ {
+<del class="diff-old"> "@id": "http://greggkellogg.net/foaf#me",
+ "@type": "foaf:Person",
+ "name": "Gregg Kellogg",
+ "knows": "http://manu.sporny.org/i/public"
+</del>
+<ins class="diff-chg"> "@id": "http://greggkellogg.net/foaf#me",
+ "@type": "foaf:Person",
+ "name": "Gregg Kellogg",
+ "knows": "http://manu.sporny.org/i/public"
+</ins>
+ }
+ ]
+}
+</pre>
+</div>
+<p>
+In
+this
+case,
+embedding
+doesn't
+work
+as
+each
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+object
+</a>
+references
+the
+other.
+Using
+the
+<code>
+@graph
+</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>
+allows
+multiple
+<a class="tref internalDFN" title="node" href="#dfn-node">
+nodes
+</a>
+to
+be
+defined
+within
+an
+<a class="tref internalDFN" title="array" href="#dfn-array">
+array
+</a>,
+and
+allows
+the
+use
+of
+a
+shared
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>.
+This
+is
+equivalent
+to
+using
+multiple
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+objects
+</a>
+in
+array
+and
+defining
+the
+<code>
+@context
+</code>
+within
+each
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+object
+</a>:
+</p>
+<del class="diff-old"> [
+</del>
+ <div class="example"><div class="example-title"><span>Example 48</span>: Context needs to be duplicated if @graph is not used</div><pre class="example">[
+ {
+<del class="diff-old">
+ "@id": "http://manu.sporny.org/i/public",
+ "@type": "foaf:Person",
+ "name": "Manu Sporny",
+ "knows": "http://greggkellogg.net/foaf#me"
+</del>
+ <span class="diff">"@context": ...,</span>
+<ins class="diff-chg"> "@id": "http://manu.sporny.org/i/public",
+ "@type": "foaf:Person",
+ "name": "Manu Sporny",
+ "knows": "http://greggkellogg.net/foaf#me"
+</ins>
+ },
+ {
+<del class="diff-old">
+ "@id": "http://greggkellogg.net/foaf#me",
+ "@type": "foaf:Person",
+ "name": "Gregg Kellogg",
+ "knows": "http://manu.sporny.org/i/public"
+</del>
+ <span class="diff">"@context": ...,</span>
+<ins class="diff-chg"> "@id": "http://greggkellogg.net/foaf#me",
+ "@type": "foaf:Person",
+ "name": "Gregg Kellogg",
+ "knows": "http://manu.sporny.org/i/public"
+</ins>
+ }
+]
+</pre>
+</div>
+</section>
+<section id="identifying-blank-nodes">
+<h3>
+<span class="secno">
+6.12
+</span>
+Identifying
+Blank
+Nodes
+</h3>
+<p>
+At
+times,
+it
+becomes
+necessary
+to
+be
+able
+to
+express
+information
+without
+being
+able
+to
+<del class="diff-old">specify
+</del>
+<ins class="diff-chg">uniquely
+identify
+</ins>
+the
+<del class="diff-old">node.
+</del>
+<a class="tref internalDFN" title="node" href="#dfn-node">
+<ins class="diff-chg">node
+</ins></a>.
+This
+type
+of
+node
+is
+called
+a
+<a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">
+blank
+node
+</a>
+(see
+<cite>
+<a href="http://www.w3.org/TR/rdf11-concepts/#section-blank-nodes">
+Section
+3.4:
+Blank
+Nodes
+</a>
+</cite>
+of
+[
+<cite>
+<a class="bibref" href="#bib-RDF-CONCEPTS">
+RDF-CONCEPTS
+</a>
+</cite>
+]).
+In
+JSON-LD,
+<a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">
+blank
+node
+identifiers
+</a>
+are
+automatically
+created
+if
+<del class="diff-old">a
+node
+</del>
+<ins class="diff-chg">an
+</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
+IRI
+</ins></abbr></a>
+is
+not
+specified
+using
+the
+<code>
+@id
+</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>.
+However,
+authors
+may
+provide
+identifiers
+for
+<a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">
+blank
+nodes
+</a>
+by
+using
+the
+special
+<code>
+_
+</code>
+(underscore)
+<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
+prefix
+</a>.
+This
+allows
+one
+to
+reference
+the
+node
+locally
+within
+the
+document,
+but
+makes
+it
+impossible
+to
+reference
+the
+node
+from
+an
+external
+document.
+The
+<a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">
+blank
+node
+identifier
+</a>
+is
+scoped
+to
+the
+document
+in
+which
+it
+is
+used.
+</p>
+<del class="diff-old"> {
+</del>
+ <div class="example"><div class="example-title"><span>Example 49</span>: Specifying a local blank node identifier</div><pre class="example">{
+...
+<del class="diff-old"> "@id": "",
+</del>
+<ins class="diff-chg"> "@id": "<span class="diff">_:foo</span>",
+</ins>
+...
+}
+</pre>
+</div>
+<p>
+The
+example
+above
+would
+set
+the
+node
+to
+<code>
+_:foo
+</code>,
+which
+can
+then
+be
+used
+elsewhere
+in
+the
+JSON-LD
+document
+to
+refer
+back
+to
+the
+<a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">
+blank
+node
+</a>.
+If
+a
+developer
+finds
+that
+they
+refer
+to
+the
+<a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">
+blank
+node
+</a>
+more
+than
+once,
+they
+should
+consider
+naming
+the
+node
+using
+a
+dereferenceable
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+so
+that
+it
+can
+also
+be
+referenced
+from
+other
+documents.
+</p>
+</section>
+<section id="aliasing-keywords">
+<h3>
+<span class="secno">
+6.13
+</span>
+Aliasing
+Keywords
+</h3>
+<p>
+Each
+of
+the
+JSON-LD
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keywords
+</a>,
+except
+for
+<code>
+@context
+</code>,
+may
+be
+aliased
+to
+application-specific
+keywords.
+This
+feature
+allows
+legacy
+JSON
+content
+to
+be
+utilized
+by
+JSON-LD
+by
+re-using
+JSON
+keys
+that
+already
+exist
+in
+legacy
+documents.
+This
+feature
+also
+allows
+developers
+to
+design
+domain-specific
+implementations
+using
+only
+the
+JSON-LD
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>.
+</p>
+<del class="diff-old">{
+ "@context":
+</del>
+ <div class="example"><div class="example-title"><span>Example 50</span>: Aliasing keywords</div><pre class="example">{
+<ins class="diff-chg"> "@context":
+</ins>
+ {
+<del class="diff-old"> ,
+ ,
+ "name": "http://schema.org/name"
+</del>
+ <span class="diff">"url": "@id"</span>,
+ <span class="diff">"a": "@type"</span>,
+<ins class="diff-chg"> "name": "http://xmlns.com/foaf/0.1/name"
+</ins>
+ },
+<del class="diff-old"> "": "http://example.com/about#gregg",
+ "": "http://schema.org/Person",
+ "name": "Gregg Kellogg"
+</del>
+<ins class="diff-chg"> "<span class="diff">url</span>": "http://example.com/about#gregg",
+ "<span class="diff">a</span>": "http://xmlns.com/foaf/0.1/Person",
+ "name": "Gregg Kellogg"
+</ins>
+}
+</pre>
+</div>
+<p>
+In
+the
+example
+above,
+the
+<code>
+@id
+</code>
+and
+<code>
+@type
+</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keywords
+</a>
+have
+been
+given
+the
+aliases
+<strong>
+url
+</strong>
+and
+<strong>
+a
+</strong>,
+respectively.
+</p>
+<del class="diff-old">6.14
+Data
+Annotations
+It
+is
+common
+for
+developers
+using
+JSON
+to
+organize
+their
+data
+in
+ways
+that
+makes
+working
+with
+the
+data
+more
+efficient.
+It
+is
+often
+that
+these
+methods
+of
+organizing
+data
+are
+not
+meant
+to
+express
+Linked
+Data,
+but
+should
+survive
+transformation
+by
+JSON-LD.
+For
+example,
+if
+a
+developer
+organizes
+employees
+in
+a
+JSON-LD
+document
+by
+a
+company-issued
+ID
+number,
+JSON-LD
+should
+not
+destroy
+that
+'database
+index'
+when
+transforming
+the
+data.
+Data
+annotations
+allow
+content
+that
+would
+otherwise
+be
+removed
+from
+a
+JSON-LD
+graph
+to
+be
+preserved
+by
+instructing
+the
+JSON-LD
+processor
+to
+syntactically
+preserve
+the
+annotation
+information
+and
+continue
+processing
+deeper
+into
+the
+JSON
+data
+structure.
+{
+ "@context":
+ {
+ "schema": "http://schema.org/",
+ "Article": "schema:Blog",
+ "name": "schema:name",
+ "articleBody": "schema:articleBody",
+ "wordCount": "schema:wordCount",
+ "commentCount": "http://example.com/schema/wordCount",
+ "blogPost": {
+ "@id": "schema:blogPost",
+
+ },
+ "@id": "http://example.com/",
+ "@type": "Blog",
+ "name": "World Financial News",
+ "blogPost": {
+ "en": {
+ "@id": "http://example.com/posts/1/en",
+ "articleBody": "World commodities were up today with heavy trading of crude oil...",
+ "wordCount": 1539,
+ "commentCount": 64
+ },
+ "de": {
+ "@id": "http://example.com/posts/1/de",
+ "articleBody": "Welt Rohstoffe waren bis heute mit schweren Handel mit Rohöl...",
+ "wordCount": 1204,
+ "commentCount": 23
+ }
+ }
+}
+</del>
+<p>
+<del class="diff-old">In
+the
+example
+above,
+the
+blogPost
+term
+has
+been
+marked
+as
+a
+data
+annotation
+container
+.
+The
+en
+,
+de
+,
+and
+ja
+keys
+will
+effectively
+</del>
+<ins class="diff-chg">Since
+keywords
+cannot
+</ins>
+be
+<del class="diff-old">ignored
+semantically,
+but
+preserved
+syntactically,
+by
+the
+JSON-LD
+Processor
+as
+annotations
+.
+The
+interpretation
+of
+the
+data
+above
+is
+expressed
+in
+the
+table
+below.
+Note
+how
+the
+annotations
+do
+</del>
+<ins class="diff-chg">redefined,
+they
+can
+also
+</ins>
+not
+<del class="diff-old">appear
+in
+the
+Linked
+Data
+below,
+but
+would
+continue
+to
+exist
+if
+the
+document
+were
+compacted
+or
+expanded
+using
+a
+JSON-LD
+processor:
+Subject
+Property
+Object
+Datatype
+http://example.com/
+http://www.w3.org/1999/02/22-rdf-syntax-ns#type
+http://schema.org/Blog
+http://example.com/
+http://schema.org/name
+World
+Financial
+News
+http://example.com/
+http://schema.org/blogPost
+http://example.com/posts/1/en
+http://example.com/
+http://schema.org/blogPost
+http://example.com/posts/1/de
+http://example.com/posts/1/en
+http://schema.org/articleBody
+World
+commodities
+were
+up
+today
+with
+heavy
+trading
+of
+crude
+oil...
+http://example.com/posts/1/en
+http://schema.org/wordCount
+1539
+http://www.w3.org/2001/XMLSchema#integer
+http://example.com/posts/1/en
+http://example.com/schema/commentCount
+64
+http://www.w3.org/2001/XMLSchema#integer
+http://example.com/posts/1/de
+http://schema.org/articleBody
+Welt
+Rohstoffe
+waren
+bis
+heute
+mit
+schweren
+Handel
+mit
+Rohöl...
+http://example.com/posts/1/de
+http://schema.org/wordCount
+1204
+http://www.w3.org/2001/XMLSchema#integer
+http://example.com/posts/1/de
+http://example.com/schema/commentCount
+23
+http://www.w3.org/2001/XMLSchema#integer
+6.15
+Explicitly
+Ignoring
+Data
+At
+times,
+it
+becomes
+necessary
+</del>
+<ins class="diff-chg">be
+aliased
+</ins>
+to
+<del class="diff-old">explicitly
+ignore
+data
+expressed
+</del>
+<ins class="diff-chg">other
+keywords.
+Every
+statement
+</ins>
+in
+<del class="diff-old">JSON
+documents
+because
+it
+has
+no
+semantic
+meaning.
+For
+example,
+when
+</del>
+the
+<del class="diff-old">@vocab
+keyword
+is
+used,
+every
+key
+in
+</del>
+<ins class="diff-chg">context
+having
+</ins>
+a
+<del class="diff-old">JSON-LD
+object
+is
+appended
+to
+the
+vocabulary
+IRI
+.
+The
+author
+may
+not
+want
+that
+behavior
+to
+apply
+to
+every
+key,
+and
+it
+may
+be
+easier
+to
+specify
+just
+the
+keys
+that
+they
+want
+the
+JSON-LD
+processor
+to
+ignore.
+For
+this
+purpose,
+an
+author
+may
+associate
+the
+null
+</del>
+keyword
+<del class="diff-old">with
+a
+term
+in
+the
+JSON-LD
+Context.
+{
+ "@context":
+ {
+ "@vocab": "http://schema.org/",
+
+ },
+ "name": "Manu Sporny",
+ "description": "That guy",
+ "gender": "Male",
+
+}
+In
+the
+example
+above,
+the
+author
+has
+used
+@vocab
+</del>
+as
+the
+<del class="diff-old">base
+IRI
+for
+all
+terms
+</del>
+<ins class="diff-chg">key
+(as
+</ins>
+in
+<del class="diff-old">the
+document,
+but
+has
+expressed
+that
+the
+databaseId
+</del>
+<code style="white-space: nowrap">
+<ins class="diff-chg">{
+"@type":
+...
+}
+</ins>
+</code>
+<del class="diff-old">value
+should
+not
+</del>
+<ins class="diff-chg">)
+will
+</ins>
+be
+<del class="diff-old">processed
+by
+the
+JSON-LD
+processor
+by
+associating
+it
+with
+the
+null
+keyword
+in
+the
+JSON-LD
+Context.
+</del>
+<ins class="diff-chg">ignored
+when
+being
+processed.
+</ins>
+</p>
+</section>
+<section id="expanded-document-form">
+<h3>
+<span class="secno">
+<del class="diff-old">6.16
+</del>
+<ins class="diff-chg">6.14
+</ins>
+</span>
+Expanded
+Document
+Form
+</h3>
+<p>
+The
+JSON-LD
+<ins class="diff-new">Algorithms
+and
+</ins>
+API
+<ins class="diff-new">specification
+</ins>
+[
+<cite>
+<a class="bibref" href="#bib-JSON-LD-API">
+JSON-LD-API
+</a>
+</cite>
+]
+defines
+<del class="diff-old">an
+</del>
+<ins class="diff-chg">a
+</ins>
+method
+for
+<em>
+expanding
+</em>
+a
+JSON-LD
+document.
+Expansion
+is
+the
+process
+of
+taking
+a
+JSON-LD
+document
+and
+applying
+a
+<code>
+@context
+</code>
+such
+that
+all
+IRIs,
+types,
+and
+values
+are
+expanded
+so
+that
+the
+<code>
+@context
+</code>
+is
+no
+longer
+necessary.
+</p>
+<p>
+For
+example,
+assume
+the
+following
+JSON-LD
+input
+document:
+</p>
+<del class="diff-old">{
+ "@context":
+</del>
+<div class="example"><div class="example-title"><span>Example 51</span>: Sample JSON-LD document</div><pre class="example">{
+<ins class="diff-chg"> "@context":
+</ins>
+ {
+<del class="diff-old"> "name": "http://xmlns.com/foaf/0.1/name",
+ "homepage": {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+</del>
+<ins class="diff-chg"> "name": "http://xmlns.com/foaf/0.1/name",
+ "homepage": {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+</ins>
+ }
+ },
+<del class="diff-old"> "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/"
+</del>
+<ins class="diff-chg"> "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/"
+</ins>
+}
+</pre>
+</div>
+<p>
+Running
+the
+JSON-LD
+Expansion
+algorithm
+against
+the
+JSON-LD
+input
+document
+provided
+above
+would
+result
+in
+the
+following
+output:
+</p>
+<del class="diff-old">[
+</del>
+<div class="example"><div class="example-title"><span>Example 52</span>: Expanded form for the previous example</div><pre class="example">[
+ {
+<del class="diff-old"> "http://xmlns.com/foaf/0.1/name": [
+ { "@value": "Manu Sporny" }
+</del>
+<ins class="diff-chg"> "http://xmlns.com/foaf/0.1/name": [
+ { "@value": "Manu Sporny" }
+</ins>
+ ],
+<del class="diff-old"> "http://xmlns.com/foaf/0.1/homepage": [
+ { "@id": "http://manu.sporny.org/" }
+</del>
+<ins class="diff-chg"> "http://xmlns.com/foaf/0.1/homepage": [
+ { "@id": "http://manu.sporny.org/" }
+</ins>
+ ]
+ }
+]
+</pre>
+</div>
+<p>
+Expanded
+document
+form
+is
+useful
+when
+an
+application
+has
+to
+process
+input
+data
+in
+a
+deterministic
+form.
+It
+has
+been
+optimized
+to
+ensure
+that
+the
+code
+that
+developers
+have
+to
+write
+is
+minimized
+compared
+to
+the
+code
+that
+would
+have
+to
+be
+written
+to
+operate
+on
+<a href="#compact-document-form" class="sec-ref">
+<span class="secno">
+<del class="diff-old">6.17
+</del>
+<ins class="diff-chg">6.15
+</ins>
+</span>
+<span class="sec-title">
+Compact
+Document
+Form
+</span>
+</a>.
+</p>
+</section>
+<section id="compact-document-form">
+<h3>
+<span class="secno">
+<del class="diff-old">6.17
+</del>
+<ins class="diff-chg">6.15
+</ins>
+</span>
+Compact
+Document
+Form
+</h3>
+<p>
+The
+JSON-LD
+<ins class="diff-new">Algorithms
+and
+</ins>
+API
+<ins class="diff-new">specification
+</ins>
+[
+<cite>
+<a class="bibref" href="#bib-JSON-LD-API">
+JSON-LD-API
+</a>
+</cite>
+]
+defines
+a
+method
+for
+<em>
+compacting
+</em>
+a
+JSON-LD
+document.
+Compaction
+is
+the
+process
+of
+taking
+a
+JSON-LD
+document
+and
+applying
+a
+context
+such
+that
+<del class="diff-old">the
+most
+</del>
+<ins class="diff-chg">a
+very
+</ins>
+compact
+form
+of
+the
+document
+is
+generated.
+<del class="diff-old">JSON
+is
+typically
+expressed
+in
+a
+very
+compact,
+key-value
+format.
+That
+is,
+full
+IRIs
+are
+rarely
+used
+as
+keys.
+</del>
+At
+times,
+a
+JSON-LD
+document
+may
+be
+received
+that
+is
+not
+in
+its
+most
+compact
+form.
+<del class="diff-old">JSON-LD,
+</del>
+<ins class="diff-chg">The
+JSON-LD
+Algorithms,
+</ins>
+via
+<del class="diff-old">the
+</del>
+<ins class="diff-chg">an
+</ins>
+API,
+provides
+a
+way
+to
+compact
+a
+JSON-LD
+document.
+</p>
+<p>
+For
+example,
+assume
+the
+following
+JSON-LD
+input
+document:
+</p>
+<del class="diff-old">[
+</del>
+<div class="example"><div class="example-title"><span>Example 53</span>: Sample expanded JSON-LD document</div><pre class="example">[
+ {
+<del class="diff-old"> "http://xmlns.com/foaf/0.1/name": [ "Manu Sporny" ],
+ "http://xmlns.com/foaf/0.1/homepage": [
+</del>
+<ins class="diff-chg"> "http://xmlns.com/foaf/0.1/name": [ "Manu Sporny" ],
+ "http://xmlns.com/foaf/0.1/homepage": [
+</ins>
+ {
+<del class="diff-old"> "@id": "http://manu.sporny.org/"
+</del>
+<ins class="diff-chg"> "@id": "http://manu.sporny.org/"
+</ins>
+ }
+ ]
+ }
+]
+</pre>
+</div>
+<p>
+Additionally,
+assume
+the
+following
+developer-supplied
+JSON-LD
+context:
+</p>
+<del class="diff-old">{
+ "@context": {
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "homepage": {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+</del>
+<div class="example"><div class="example-title"><span>Example 54</span>: Sample context</div><pre class="example">{
+<ins class="diff-chg"> "@context": {
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "homepage": {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+</ins>
+ }
+ }
+}
+</pre>
+</div>
+<p>
+Running
+the
+JSON-LD
+Compaction
+algorithm
+given
+the
+context
+supplied
+above
+against
+the
+JSON-LD
+input
+document
+provided
+above
+would
+result
+in
+the
+following
+output:
+</p>
+<del class="diff-old">{
+ "@context": {
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "homepage": {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+</del>
+<div class="example"><div class="example-title"><span>Example 55</span>: Compact form of the sample document once sample context has been applied</div><pre class="example">{
+<ins class="diff-chg"> "@context": {
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "homepage": {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+</ins>
+ }
+ },
+<del class="diff-old"> "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/"
+</del>
+<ins class="diff-chg"> "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/"
+</ins>
+}
+</pre>
+</div>
+<p>
+The
+compaction
+algorithm
+enables
+a
+developer
+to
+map
+any
+document
+into
+an
+application-specific
+compacted
+<del class="diff-old">form
+by
+first
+</del>
+<ins class="diff-chg">form.
+The
+process
+consists
+of
+expanding
+the
+document
+(see
+</ins>
+<a href="#expanded-document-form" class="sec-ref">
+<span class="secno">
+<del class="diff-old">6.16
+</del>
+<ins class="diff-chg">6.14
+</ins>
+</span>
+<span class="sec-title">
+Expanded
+Document
+Form
+</span>
+<del class="diff-old">.
+</del>
+</a>
+<ins class="diff-chg">)
+and
+then
+using
+a
+developer-supplied
+context
+to
+compact
+the
+expanded
+document.
+</ins>
+While
+the
+context
+provided
+above
+mapped
+<code>
+http://xmlns.com/foaf/0.1/name
+</code>
+to
+<strong>
+name
+</strong>,
+it
+could
+have
+also
+mapped
+it
+to
+any
+arbitrary
+<del class="diff-old">string
+</del>
+<a class="tref internalDFN" title="term" href="#dfn-term">
+<ins class="diff-chg">term
+</ins></a>
+provided
+by
+the
+developer.
+This
+powerful
+mechanism
+allows
+the
+developer
+to
+re-shape
+the
+incoming
+JSON
+data
+into
+a
+format
+that
+is
+optimized
+for
+their
+application.
+</p>
+</section>
+<section id="data-indexing">
+<h3>
+<span class="secno">
+<ins class="diff-new">6.16
+</ins></span><ins class="diff-new">
+Data
+Indexing
+</ins></h3><p><ins class="diff-new">
+Databases
+are
+typically
+used
+to
+make
+access
+to
+data
+more
+efficient.
+Developers
+often
+extend
+this
+sort
+of
+functionality
+into
+their
+application
+data
+to
+deliver
+similar
+performance
+gains.
+Often
+this
+data
+does
+not
+have
+any
+meaning
+from
+a
+Linked
+Data
+standpoint,
+but
+is
+still
+useful
+for
+an
+application.
+</ins></p><p><ins class="diff-new">
+JSON-LD
+introduces
+the
+notion
+of
+</ins><a class="tref internalDFN" title="index_map" href="#dfn-index_map"><ins class="diff-new">
+index
+maps
+</ins></a><ins class="diff-new">
+that
+can
+be
+used
+to
+structure
+data
+into
+a
+form
+that
+is
+more
+efficient
+to
+access.
+The
+data
+indexing
+feature
+allows
+an
+author
+to
+structure
+data
+using
+a
+simpley
+key-value
+map
+where
+the
+keys
+do
+not
+map
+to
+</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><ins class="diff-new">
+IRIs
+</ins></a>.<ins class="diff-new">
+This
+enables
+direct
+access
+to
+data
+instead
+of
+having
+to
+scan
+an
+array
+in
+search
+of
+a
+specific
+item.
+In
+JSON-LD
+such
+data
+can
+be
+specified
+by
+associating
+the
+</ins><code><ins class="diff-new">
+@index
+</ins></code><a class="tref internalDFN" title="keyword" href="#dfn-keyword"><ins class="diff-new">
+keyword
+</ins></a><ins class="diff-new">
+with
+a
+</ins><code><ins class="diff-new">
+@container
+</ins></code><ins class="diff-new">
+declaration
+in
+the
+context:
+</ins></p> <div class="example"><div class="example-title"><span>Example 56</span>: Indexing data in JSON-LD</div><pre class="example">{<ins class="diff-new">
+ "@context":
+ {
+ "schema": "http://schema.org/",
+ "name": "schema:name",
+ "body": "schema:articleBody",
+ "words": "schema:wordCount",
+ "post": {
+ "@id": "schema:blogPost",
+</ins> <span class="diff">"@container": "@index"</span><ins class="diff-new">
+ }
+ },
+ "@id": "http://example.com/",
+ "@type": "schema:Blog",
+ "name": "World Financial News",
+</ins> <span class="diff">"post": {<ins class="diff-new">
+ "en": {
+ "@id": "http://example.com/posts/1/en",
+ "body": "World commodities were up today with heavy trading of crude oil...",
+ "words": 1539
+ },
+ "de": {
+ "@id": "http://example.com/posts/1/de",
+ "body": "Die Werte an Warenbörsen stiegen im Sog eines starken Handels von Rohöl...",
+ "words": 1204
+ }</span>
+ }
+}
+</ins></pre></div><p><ins class="diff-new">
+In
+the
+example
+above,
+the
+</ins><strong><ins class="diff-new">
+blogPost
+</ins></strong><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-new">
+term
+</ins></a><ins class="diff-new">
+has
+been
+marked
+as
+an
+</ins><a class="tref internalDFN" title="index_map" href="#dfn-index_map"><ins class="diff-new">
+index
+map
+</ins></a>.<ins class="diff-new">
+The
+</ins><strong><ins class="diff-new">
+en
+</ins></strong>,<strong><ins class="diff-new">
+de
+</ins></strong>,<ins class="diff-new">
+and
+</ins><strong><ins class="diff-new">
+ja
+</ins></strong><ins class="diff-new">
+keys
+will
+be
+ignored
+semantically,
+but
+preserved
+syntactically,
+by
+the
+JSON-LD
+Processor.
+This
+allows
+a
+developer
+to
+access
+the
+German
+version
+of
+the
+</ins><strong><ins class="diff-new">
+blogPost
+</ins></strong><ins class="diff-new">
+using
+the
+following
+code
+snippet:
+</ins><code><ins class="diff-new">
+obj.blogPost.de
+</ins></code>.</p><p><ins class="diff-new">
+The
+interpretation
+of
+the
+data
+above
+is
+expressed
+in
+the
+table
+below.
+Note
+how
+the
+index
+keys
+do
+not
+appear
+in
+the
+Linked
+Data
+below,
+but
+would
+continue
+to
+exist
+if
+the
+document
+were
+compacted
+or
+expanded
+(see
+</ins><a href="#compact-document-form" class="sec-ref"><span class="secno"><ins class="diff-new">
+6.15
+</ins></span><span class="sec-title"><ins class="diff-new">
+Compact
+Document
+Form
+</ins></span></a><ins class="diff-new">
+and
+</ins><a href="#expanded-document-form" class="sec-ref"><span class="secno"><ins class="diff-new">
+6.14
+</ins></span><span class="sec-title"><ins class="diff-new">
+Expanded
+Document
+Form
+</ins></span></a><ins class="diff-new">
+)
+using
+a
+JSON-LD
+processor:
+</ins></p><table class="example"><thead><tr><th><ins class="diff-new">
+Subject
+</ins></th><th><ins class="diff-new">
+Property
+</ins></th><th><ins class="diff-new">
+Value
+</ins></th></tr></thead><tbody><tr><td><ins class="diff-new">
+http://example.com/
+</ins></td><td><ins class="diff-new">
+http://www.w3.org/1999/02/22-rdf-syntax-ns#type
+</ins></td><td><ins class="diff-new">
+http://schema.org/Blog
+</ins></td></tr><tr><td><ins class="diff-new">
+http://example.com/
+</ins></td><td><ins class="diff-new">
+http://schema.org/name
+</ins></td><td><ins class="diff-new">
+World
+Financial
+News
+</ins></td></tr><tr><td><ins class="diff-new">
+http://example.com/
+</ins></td><td><ins class="diff-new">
+http://schema.org/blogPost
+</ins></td><td><ins class="diff-new">
+http://example.com/posts/1/en
+</ins></td></tr><tr><td><ins class="diff-new">
+http://example.com/
+</ins></td><td><ins class="diff-new">
+http://schema.org/blogPost
+</ins></td><td><ins class="diff-new">
+http://example.com/posts/1/de
+</ins></td></tr><tr><td><ins class="diff-new">
+http://example.com/posts/1/en
+</ins></td><td><ins class="diff-new">
+http://schema.org/articleBody
+</ins></td><td><ins class="diff-new">
+World
+commodities
+were
+up
+today
+with
+heavy
+trading
+of
+crude
+oil...
+</ins></td></tr><tr><td><ins class="diff-new">
+http://example.com/posts/1/en
+</ins></td><td><ins class="diff-new">
+http://schema.org/wordCount
+</ins></td><td><ins class="diff-new">
+1539
+</ins></td></tr><tr><td><ins class="diff-new">
+http://example.com/posts/1/de
+</ins></td><td><ins class="diff-new">
+http://schema.org/articleBody
+</ins></td><td><ins class="diff-new">
+Die
+Werte
+an
+Warenbörsen
+stiegen
+im
+Sog
+eines
+starken
+Handels
+von
+Rohöl...
+</ins></td></tr><tr><td><ins class="diff-new">
+http://example.com/posts/1/de
+</ins></td><td><ins class="diff-new">
+http://schema.org/wordCount
+</ins></td><td><ins class="diff-new">
+1204
+</ins></td></tr></tbody></table></section>
+</section>
+<section class="appendix normative" id="data-model">
+<h2>
+<span class="secno">
+A.
+</span>
+Data
+Model
+</h2>
+<p>
+JSON-LD
+is
+a
+serialization
+format
+for
+<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
+Linked
+Data
+</a>
+based
+on
+JSON.
+It
+is
+therefore
+important
+to
+distinguish
+between
+the
+syntax,
+which
+is
+defined
+by
+JSON
+in
+[
+<cite>
+<a class="bibref" href="#bib-RFC4627">
+RFC4627
+</a>
+</cite>
+],
+and
+<dfn title="json-ld_data_model" id="dfn-json-ld_data_model">
+JSON-LD's
+data
+model
+</dfn>
+which
+is
+defined
+as
+follows:
+</p>
+<ul>
+<li>
+A
+<dfn title="json-ld_document" id="dfn-json-ld_document">
+JSON-LD
+document
+</dfn>
+serializes
+a
+collection
+of
+<a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">
+JSON-LD
+graphs
+</a>
+and
+comprises
+exactly
+one
+<dfn title="default_graph" id="dfn-default_graph">
+default
+graph
+</dfn>
+and
+zero
+or
+more
+<dfn title="named_graph" id="dfn-named_graph">
+named
+graphs
+</dfn>.
+</li>
+<li>
+The
+<a class="tref internalDFN" title="default_graph" href="#dfn-default_graph">
+default
+graph
+</a>
+does
+not
+have
+a
+name
+and
+<em class="rfc2119" title="may">
+may
+</em>
+be
+empty.
+</li>
+<li>
+Each
+<a class="tref internalDFN" title="named_graph" href="#dfn-named_graph">
+named
+graph
+</a>
+is
+a
+pair
+consisting
+of
+<del class="diff-old">an
+IRI
+or
+blank
+node
+(the
+</del>
+<ins class="diff-chg">a
+</ins>
+<dfn title="graph_name" id="dfn-graph_name">
+graph
+name
+</dfn>
+<del class="diff-old">)
+</del>
+and
+a
+<a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">
+JSON-LD
+graph
+</a>.
+<del class="diff-old">Whenever
+possible,
+the
+</del>
+<ins class="diff-chg">The
+</ins>
+<a class="tref internalDFN" title="graph_name" href="#dfn-graph_name">
+graph
+name
+</a>
+<em class="rfc2119" title="should">
+should
+</em>
+be
+an
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+<ins class="diff-new">or
+</ins><a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier"><ins class="diff-new">
+blank
+node
+identifier
+</ins>
+</a>.
+</li>
+<li>
+A
+<dfn title="json-ld_graph" id="dfn-json-ld_graph">
+JSON-LD
+graph
+</dfn>
+is
+a
+labeled
+directed
+<del class="diff-old">graph,
+i.e.,
+</del>
+<ins class="diff-chg">graph
+containing
+</ins>
+a
+set
+of
+<ins class="diff-new">zero
+or
+more
+</ins>
+<a class="tref internalDFN" title="node" href="#dfn-node">
+nodes
+</a>
+connected
+by
+<a class="tref internalDFN" title="edge" href="#dfn-edge">
+edges
+</a>.
+</li>
+<li>
+Every
+<dfn title="edge" id="dfn-edge">
+edge
+</dfn>
+has
+a
+direction
+associated
+with
+it
+and
+is
+labeled
+with
+an
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+a
+<a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">
+blank
+node
+identifier
+</a>.
+Within
+the
+JSON-LD
+syntax
+these
+edge
+labels
+are
+called
+<dfn title="property" id="dfn-property">
+properties
+</dfn>.
+<del class="diff-old">Whenever
+possible,
+an
+edge
+should
+be
+labeled
+with
+an
+IRI
+.
+</del>
+</li>
+<li>
+Every
+<dfn title="node" id="dfn-node">
+node
+</dfn>
+is
+<ins class="diff-new">either
+</ins>
+an
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+a
+<a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">
+blank
+node
+</a>,
+a
+<a class="tref internalDFN" title="json-ld_value" href="#dfn-json-ld_value">
+JSON-LD
+value
+</a>,
+or
+a
+<a class="tref internalDFN" title="list" href="#dfn-list">
+list
+</a>.
+</li>
+<li>
+A
+<a class="tref internalDFN" title="node" href="#dfn-node">
+node
+</a>
+having
+an
+outgoing
+edge
+<em class="rfc2119" title="must">
+must
+</em>
+be
+an
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+a
+<a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">
+blank
+node
+</a>.
+</li>
+<li>
+A
+<a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">
+JSON-LD
+graph
+</a>
+<del class="diff-old">should
+</del>
+<em class="rfc2119" title="must not">
+<ins class="diff-chg">must
+</ins>
+not
+</em>
+contain
+unconnected
+<a class="tref internalDFN" title="node" href="#dfn-node">
+nodes
+</a>,
+i.e.,
+nodes
+which
+are
+not
+connected
+by
+an
+<a class="tref internalDFN" title="edge" href="#dfn-edge">
+edge
+</a>
+to
+any
+other
+<a class="tref internalDFN" title="node" href="#dfn-node">
+node
+</a>.
+</li>
+<li>
+An
+<dfn title="iri" id="dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</dfn>
+(Internationalized
+Resource
+Identifier)
+is
+a
+string
+that
+conforms
+to
+the
+syntax
+defined
+in
+[
+<cite>
+<a class="bibref" href="#bib-RFC3987">
+RFC3987
+</a>
+</cite>
+].
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+IRIs
+</a>
+used
+within
+a
+<a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">
+JSON-LD
+graph
+</a>
+<em class="rfc2119" title="should">
+should
+</em>
+return
+a
+<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
+Linked
+Data
+</a>
+document
+describing
+the
+resource
+denoted
+by
+that
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+when
+being
+dereferenced.
+</li>
+<li>
+A
+<dfn title="blank_node" id="dfn-blank_node">
+blank
+node
+</dfn>
+is
+a
+<a class="tref internalDFN" title="node" href="#dfn-node">
+node
+</a>
+which
+is
+<del class="diff-old">neither
+</del>
+<ins class="diff-chg">not
+</ins>
+an
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+<del class="diff-old">,
+nor
+a
+JSON-LD
+value
+,
+or
+a
+list
+</del>
+</a>.
+A
+blank
+node
+<em class="rfc2119" title="may">
+may
+</em>
+be
+identified
+<del class="diff-old">by
+</del>
+<ins class="diff-chg">using
+</ins>
+a
+<a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">
+blank
+node
+identifier
+</a>.
+</li>
+<li>
+A
+<dfn title="blank_node_identifier" id="dfn-blank_node_identifier">
+blank
+node
+identifier
+</dfn>
+is
+a
+string
+that
+can
+be
+used
+as
+an
+identifier
+for
+a
+<a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">
+blank
+node
+</a>
+within
+the
+scope
+of
+a
+<a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">
+JSON-LD
+document
+</a>.
+Blank
+node
+identifiers
+begin
+with
+<code>
+_:
+</code>.
+</li>
+<li>
+A
+<dfn title="json-ld_value" id="dfn-json-ld_value">
+JSON-LD
+value
+</dfn>
+is
+a
+<a class="tref internalDFN" title="string" href="#dfn-string">
+string
+</a>,
+a
+<a class="tref internalDFN" title="number" href="#dfn-number">
+number
+</a>,
+<a class="tref internalDFN" title="true" href="#dfn-true">
+true
+</a>
+or
+<a class="tref internalDFN" title="false" href="#dfn-false">
+false
+</a>,
+a
+<a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">
+typed
+value
+</a>,
+or
+a
+<a class="tref internalDFN" title="language-tagged_string" href="#dfn-language-tagged_string">
+language-tagged
+string
+</a>.
+</li>
+<li>
+A
+<dfn title="typed_value" id="dfn-typed_value">
+typed
+value
+</dfn>
+consists
+of
+a
+value,
+which
+is
+a
+string,
+and
+a
+type,
+which
+is
+an
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>.
+</li>
+<li>
+A
+<dfn title="language-tagged_string" id="dfn-language-tagged_string">
+language-tagged
+string
+</dfn>
+consists
+of
+a
+string
+and
+a
+non-empty
+language
+tag
+as
+defined
+by
+[
+<cite>
+<a class="bibref" href="#bib-BCP47">
+BCP47
+</a>
+</cite>
+].
+The
+language
+tag
+<em class="rfc2119" title="must">
+must
+</em>
+be
+well-formed
+according
+to
+section
+<a href="http://tools.ietf.org/html/bcp47#section-2.2.9">
+2.2.9
+</a>
+of
+[
+<cite>
+<a class="bibref" href="#bib-BCP47">
+BCP47
+</a>
+</cite>
+],
+and
+<em class="rfc2119" title="must">
+must
+</em>
+be
+<del class="diff-old">normalized
+to
+</del>
+lowercase.
+</li>
+<li>
+A
+<dfn title="list" id="dfn-list">
+list
+</dfn>
+is
+an
+ordered
+sequence
+of
+<ins class="diff-new">zero
+or
+more
+</ins>
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+IRIs
+</a>,
+<a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">
+blank
+nodes
+</a>,
+and
+<a class="tref internalDFN" title="json-ld_value" href="#dfn-json-ld_value">
+JSON-LD
+values
+</a>.
+</li>
+</ul>
+<div class="issue">
+<div class="issue-title">
+<span>
+Issue
+<ins class="diff-new">1
+</ins>
+</span>
+</div>
+<p class="">
+In
+contrast
+to
+the
+RDF
+data
+model
+as
+defined
+in
+[
+<cite>
+<a class="bibref" href="#bib-RDF-CONCEPTS">
+RDF-CONCEPTS
+</a>
+</cite>
+],
+JSON-LD
+allows
+blank
+nodes
+as
+property
+labels
+and
+graph
+names.
+This
+feature
+is
+controversial
+in
+the
+RDF
+WG
+and
+may
+be
+removed
+in
+the
+future.
+</p>
+</div>
+<p>
+<a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">
+JSON-LD
+documents
+</a>
+<em class="rfc2119" title="may">
+may
+</em>
+contain
+data
+that
+cannot
+be
+represented
+by
+the
+<a class="tref internalDFN" title="json-ld_data_model" href="#dfn-json-ld_data_model">
+data
+model
+</a>
+defined
+above.
+Unless
+otherwise
+specified,
+such
+data
+is
+ignored
+when
+a
+<a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">
+JSON-LD
+document
+</a>
+is
+being
+processed.
+This
+means,
+e.g.,
+that
+properties
+which
+are
+not
+mapped
+to
+an
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+<a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">
+blank
+node
+</a>
+will
+be
+ignored.
+</p>
+<p style="text-align: center">
+<img src="linked-data-graph.png" title="An illustration of JSON-LD's data model">
+</p>
+<p style="text-align: center">
+<del class="diff-old">Figure
+1:
+</del>
+<ins class="diff-chg">Figure 1:
+</ins>
+An
+illustration
+of
+JSON-LD's
+data
+model.
+</p>
+</section>
+<section class="appendix normative" id="json-ld-grammar">
+<h2>
+<span class="secno">
+B.
+</span>
+JSON-LD
+Grammar
+</h2>
+<em>
+This
+section
+is
+normative
+</em>
+<del class="diff-old">Issue
+114
+This
+section
+is
+an
+attempt
+to
+formalize
+a
+normative
+grammar
+for
+JSON-LD.
+</del>
+<p>
+This
+appendix
+restates
+the
+syntactic
+conventions
+described
+in
+the
+previous
+sections
+more
+formally.
+</p>
+<div class="note">
+<div class="note-title">
+<span>
+Note
+</span>
+</div>
+<p class="">
+The
+JSON-LD
+context
+allows
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keywords
+</a>
+<a href="#aliasing-keywords" class="sec-ref">
+<span class="secno">
+6.13
+</span>
+<span class="sec-title">
+Aliasing
+Keywords
+</span>
+</a>
+).
+Whenever
+a
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>
+is
+discussed
+in
+this
+grammar,
+the
+statements
+also
+apply
+to
+an
+alias
+for
+that
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>.
+For
+example,
+if
+the
+<a class="tref internalDFN" title="active_context" href="#dfn-active_context">
+active
+context
+</a>
+defines
+the
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+<code>
+id
+</code>
+as
+an
+alias
+for
+<code>
+@id
+</code>,
+that
+alias
+may
+be
+legitimately
+used
+as
+a
+substitution
+for
+<code>
+@id
+</code>.
+Note
+that
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>
+aliases
+are
+not
+expanded
+during
+context
+processing.
+</p>
+</div>
+<p>
+A
+<a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">
+JSON-LD
+document
+</a>
+<em class="rfc2119" title="must">
+must
+</em>
+be
+a
+valid
+JSON
+document
+as
+described
+in
+[
+<cite>
+<a class="bibref" href="#bib-RFC4627">
+RFC4627
+</a>
+</cite>
+].
+</p>
+<p>
+A
+<a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">
+JSON-LD
+document
+</a>
+<em class="rfc2119" title="must">
+must
+</em>
+be
+a
+single
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+object
+</a>
+or
+a
+JSON
+<a class="tref internalDFN" title="array" href="#dfn-array">
+array
+</a>
+containing
+a
+set
+of
+one
+or
+more
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+objects
+</a>.
+</p>
+<section id="grammar-node-object" typeof="bibo:Chapter" resource="#grammar-node-object" rel="bibo:chapter">
+<h3>
+<span class="secno">
+B.1
+</span>
+Node
+Object
+</h3>
+<p>
+A
+<dfn title="node_object" id="dfn-node_object">
+node
+object
+</dfn>
+represents
+zero
+or
+more
+properties
+of
+a
+<a class="tref internalDFN" title="node" href="#dfn-node">
+node
+</a>
+in
+the
+<a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">
+JSON-LD
+graph
+</a>
+serialized
+by
+the
+<a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">
+JSON-LD
+document
+</a>.
+A
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+<del class="diff-old">Object
+</del>
+<ins class="diff-chg">object
+</ins>
+</a>
+is
+a
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+object
+</a>
+if
+it
+exists
+outside
+of
+<del class="diff-old">the
+</del>
+<ins class="diff-chg">a
+</ins>
+JSON-LD
+<del class="diff-old">Context
+</del>
+<a class="tref internalDFN" title="context" href="#dfn-context">
+<ins class="diff-chg">context
+</ins></a>
+and:
+</p>
+<ul>
+<li>
+it
+does
+not
+contain
+the
+<code>
+@value
+</code>,
+<code>
+@list
+</code>,
+<del class="diff-old">@annotation
+,
+</del>
+or
+<code>
+@set
+</code>
+keywords,
+<del class="diff-old">or
+</del>
+<ins class="diff-chg">and
+</ins>
+</li>
+<li>
+it
+<del class="diff-old">does
+not
+contain
+the
+@graph
+keyword
+and
+</del>
+is
+<ins class="diff-new">not
+</ins>
+the
+top-most
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+<del class="diff-old">Object
+</del>
+<ins class="diff-chg">object
+</ins>
+</a>
+in
+the
+JSON-LD
+<del class="diff-old">document.
+</del>
+<ins class="diff-chg">document
+consisting
+of
+no
+other
+members
+than
+</ins><code><ins class="diff-chg">
+@graph
+</ins></code><ins class="diff-chg">
+and
+</ins><code><ins class="diff-chg">
+@context
+</ins></code>.
+</li>
+</ul>
+<p>
+The
+<a class="tref internalDFN" title="property" href="#dfn-property">
+properties
+</a>
+of
+a
+<a class="tref internalDFN" title="node" href="#dfn-node">
+node
+</a>
+in
+<del class="diff-old">the
+</del>
+<ins class="diff-chg">a
+</ins>
+<a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">
+JSON-LD
+graph
+</a>
+may
+be
+spread
+among
+different
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+objects
+</a>
+within
+a
+document.
+When
+that
+happens,
+the
+keys
+of
+the
+different
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+objects
+</a>
+are
+merged
+to
+create
+the
+properties
+of
+the
+resulting
+<a class="tref internalDFN" title="node" href="#dfn-node">
+node
+</a>.
+</p>
+<p>
+A
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+object
+</a>
+<em class="rfc2119" title="must">
+must
+</em>
+be
+a
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+<del class="diff-old">that
+contains
+one
+or
+more
+key-value
+pairs.
+Keys
+must
+either
+be
+</del>
+</a>.
+<ins class="diff-chg">All
+keys
+which
+are
+not
+</ins>
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+IRIs
+</a>,
+<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
+compact
+IRIs
+</a>,
+<a class="tref internalDFN" title="term" href="#dfn-term">
+terms
+</a>
+valid
+in
+the
+<a class="tref internalDFN" title="active_context" href="#dfn-active_context">
+active
+context
+</a>,
+or
+one
+of
+the
+following
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keywords
+<del class="diff-old">:
+</del>
+</a>
+<em class="rfc2119" title="must">
+<ins class="diff-chg">must
+</ins></em><ins class="diff-chg">
+be
+ignored
+when
+processed:
+</ins>
+</p>
+<ul>
+<li>
+<code>
+@context
+</code>,
+</li>
+<li>
+<code>
+@graph
+</code>,
+</li>
+<li>
+<code>
+@id
+</code>,
+<del class="diff-old">or
+</del>
+</li>
+<li>
+<code>
+@type
+</code>,
+<ins class="diff-new">or
+</ins></li><li><code><ins class="diff-new">
+@index
+</ins>
+</code>
+</li>
+</ul>
+<p>
+If
+the
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+object
+</a>
+contains
+the
+<code>
+@context
+</code>
+key,
+its
+value
+<em class="rfc2119" title="must">
+must
+</em>
+be
+one
+of
+the
+following:
+</p>
+<ul>
+<li>
+<a class="tref internalDFN" title="null" href="#dfn-null">
+<ins class="diff-new">null
+</ins></a>,</li><li>
+an
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+</li>
+<li>
+a
+<a class="tref internalDFN" title="context_definition" href="#dfn-context_definition">
+context
+definition
+</a>,
+or
+</li>
+<li>
+an
+<a class="tref internalDFN" title="array" href="#dfn-array">
+array
+</a>
+composed
+of
+any
+number
+of
+the
+previous
+two
+expressions.
+</li>
+</ul>
+<p>
+If
+the
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+object
+</a>
+contains
+the
+<code>
+@id
+</code>
+key,
+its
+value
+<em class="rfc2119" title="must">
+must
+</em>
+be
+an
+<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
+<ins class="diff-chg">absolute
+</ins>
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+a
+<del class="diff-old">compact
+</del>
+<a class="tref internalDFN" title="relative_iri" href="#dfn-relative_iri">
+<ins class="diff-chg">relative
+</ins>
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+<del class="diff-old">(including
+blank
+node
+identifiers
+),
+</del>
+</a>,
+or
+a
+<del class="diff-old">term
+defined
+in
+the
+active
+context
+expanding
+into
+an
+</del>
+<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
+<ins class="diff-chg">compact
+</ins>
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+<del class="diff-old">or
+a
+</del>
+<ins class="diff-chg">(including
+</ins>
+<a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">
+blank
+node
+<del class="diff-old">identifier
+.
+</del>
+<ins class="diff-chg">identifiers
+</ins></a><ins class="diff-chg">
+).
+</ins>
+See
+<a href="#node-identifiers" class="sec-ref">
+<span class="secno">
+<del class="diff-old">5.4
+</del>
+<ins class="diff-chg">5.3
+</ins>
+</span>
+<span class="sec-title">
+Node
+Identifiers
+</span>
+</a>,
+<a href="#compact-iris" class="sec-ref">
+<span class="secno">
+6.1
+</span>
+<span class="sec-title">
+Compact
+IRIs
+</span>
+</a>,
+and
+<a href="#identifying-blank-nodes" class="sec-ref">
+<span class="secno">
+6.12
+</span>
+<span class="sec-title">
+Identifying
+Blank
+Nodes
+</span>
+</a>
+for
+further
+discussion
+on
+<code>
+@id
+</code>
+values.
+</p>
+<p>
+If
+the
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+object
+</a>
+contains
+the
+<code>
+@type
+</code>
+key,
+its
+value
+<em class="rfc2119" title="must">
+must
+</em>
+be
+either
+an
+<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+a
+<a class="tref internalDFN" title="relative_iri" href="#dfn-relative_iri">
+<ins class="diff-new">relative
+</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
+IRI
+</ins></abbr></a>,<ins class="diff-new">
+a
+</ins>
+<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
+compact
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+<del class="diff-old">(excluding
+</del>
+<ins class="diff-chg">(including
+</ins>
+<a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">
+blank
+node
+<del class="diff-old">identifier
+</del>
+<ins class="diff-chg">identifiers
+</ins>
+</a>
+),
+a
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+defined
+in
+the
+<a class="tref internalDFN" title="active_context" href="#dfn-active_context">
+active
+context
+</a>
+expanding
+into
+an
+<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+or
+an
+<a class="tref internalDFN" title="array" href="#dfn-array">
+array
+</a>
+of
+any
+of
+these.
+See
+<a href="#specifying-the-type" class="sec-ref">
+<span class="secno">
+<del class="diff-old">5.5
+</del>
+<ins class="diff-chg">5.4
+</ins>
+</span>
+<span class="sec-title">
+Specifying
+the
+Type
+</span>
+</a>
+for
+further
+discussion
+on
+<code>
+@type
+</code>
+values.
+</p>
+<p>
+If
+the
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+object
+</a>
+contains
+the
+<code>
+@graph
+</code>
+key,
+its
+value
+<em class="rfc2119" title="must">
+must
+</em>
+be
+a
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+object
+</a>
+or
+an
+<a class="tref internalDFN" title="array" href="#dfn-array">
+array
+</a>
+of
+zero
+or
+more
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+objects
+</a>.
+If
+the
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+object
+</a>
+contains
+an
+<code>
+@id
+</code>
+keyword,
+its
+value
+is
+used
+as
+the
+label
+of
+a
+named
+graph.
+See
+<a href="#named-graphs" class="sec-ref">
+<span class="secno">
+6.11
+</span>
+<span class="sec-title">
+Named
+Graphs
+</span>
+</a>
+for
+further
+discussion
+on
+<code>
+@graph
+</code>
+values.
+<del class="diff-old">Note
+</del>
+As
+a
+special
+case,
+if
+a
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+</a>
+contains
+no
+keys
+other
+than
+<code>
+@graph
+</code>
+and
+<code>
+@context
+</code>,
+and
+the
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+</a>
+is
+the
+root
+of
+the
+JSON-LD
+document,
+the
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+</a>
+is
+not
+treated
+as
+a
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+object
+</a>
+;
+this
+is
+used
+as
+a
+way
+of
+defining
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+definitions
+</a>
+that
+may
+not
+form
+a
+connected
+graph.
+This
+allows
+a
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>
+to
+be
+defined
+which
+is
+shared
+by
+all
+of
+the
+constituent
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+objects
+</a>.
+</p>
+<p>
+<del class="diff-old">A
+JSON-LD
+document
+</del>
+<ins class="diff-chg">If
+the
+</ins><a class="tref internalDFN" title="node_object" href="#dfn-node_object"><ins class="diff-chg">
+node
+object
+</ins>
+</a>
+<ins class="diff-chg">contains
+the
+</ins><code><ins class="diff-chg">
+@index
+</ins></code><ins class="diff-chg">
+key,
+its
+value
+</ins><em class="rfc2119" title="must">
+must
+<del class="diff-old">not
+</del>
+</em>
+<del class="diff-old">contain
+any
+keyword
+</del>
+<ins class="diff-chg">be
+a
+</ins><a class="tref internalDFN" title="string" href="#dfn-string"><ins class="diff-chg">
+string
+</ins></a>.<ins class="diff-chg">
+See
+section
+</ins><a href="#data-indexing" class="sec-ref"><span class="secno"><ins class="diff-chg">
+6.16
+</ins></span><span class="sec-title"><ins class="diff-chg">
+Data
+Indexing
+</ins></span>
+</a>
+<del class="diff-old">that
+expands
+to
+another
+keyword.
+</del>
+<ins class="diff-chg">for
+further
+discussion
+on
+</ins><code><ins class="diff-chg">
+@index
+</ins></code><ins class="diff-chg">
+values.
+</ins>
+</p>
+<p>
+Keys
+in
+a
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+object
+</a>
+that
+are
+not
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keywords
+</a>
+<em class="rfc2119" title="must">
+must
+</em>
+expand
+to
+an
+<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+using
+the
+<a class="tref internalDFN" title="active_context" href="#dfn-active_context">
+active
+context
+</a>.
+The
+values
+associated
+with
+these
+keys
+<em class="rfc2119" title="must">
+must
+</em>
+be
+one
+of
+the
+following:
+</p>
+<ul>
+<li>
+<a class="tref internalDFN" title="string" href="#dfn-string">
+string
+</a>,
+</li>
+<li>
+<a class="tref internalDFN" title="number" href="#dfn-number">
+number
+</a>,
+</li>
+<li>
+<a class="tref internalDFN" title="true" href="#dfn-true">
+true
+</a>,
+</li>
+<li>
+<a class="tref internalDFN" title="false" href="#dfn-false">
+false
+</a>,
+</li>
+<li>
+<a class="tref internalDFN" title="null" href="#dfn-null">
+null
+</a>,
+</li>
+<li>
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+object
+</a>,
+</li>
+<li>
+<a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">
+expanded
+<del class="diff-old">typed
+</del>
+value
+</a>,
+</li>
+<li>
+<del class="diff-old">expanded
+language-tagged
+string
+,
+</del>
+<a class="tref internalDFN" title="list" href="#dfn-list">
+list
+</a>
+or
+<a class="tref internalDFN" title="set" href="#dfn-set">
+set
+</a>,
+</li>
+<li>
+an
+<a class="tref internalDFN" title="array" href="#dfn-array">
+array
+</a>
+of
+zero
+or
+more
+of
+the
+possibilities
+above,
+</li>
+<li>
+a
+<a class="tref internalDFN" title="language_map" href="#dfn-language_map">
+language
+map
+</a>,
+or
+</li>
+<li>
+an
+<del class="diff-old">annotation
+</del>
+<a class="tref internalDFN" title="index_map" href="#dfn-index_map">
+<ins class="diff-chg">index
+</ins>
+map
+</a>
+</li>
+</ul>
+</section>
+<section id="grammar-term-reference" typeof="bibo:Chapter" resource="#grammar-term-reference" rel="bibo:chapter">
+<h3>
+<span class="secno">
+B.2
+</span>
+Term
+</h3>
+<p>
+A
+<dfn title="term" id="dfn-term">
+term
+</dfn>
+is
+a
+short-hand
+<a class="tref internalDFN" title="string" href="#dfn-string">
+string
+</a>
+that
+expands
+to
+an
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+a
+<a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">
+blank
+node
+identifier
+</a>.
+</p>
+<p>
+A
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+<em class="rfc2119" title="must not">
+must
+not
+</em>
+equal
+any
+of
+the
+JSON-LD
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keywords
+</a>.
+</p>
+<p>
+To
+avoid
+forward-compatibility
+issues,
+a
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+<em class="rfc2119" title="should not">
+should
+not
+</em>
+start
+with
+an
+<code>
+@
+</code>
+character
+as
+future
+versions
+of
+JSON-LD
+may
+introduce
+additional
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keywords
+</a>.
+Furthermore,
+the
+use
+of
+empty
+terms
+(
+<code>
+<del class="diff-old">""
+</del>
+<ins class="diff-chg">""
+</ins>
+</code>
+)
+is
+discouraged
+as
+not
+all
+programming
+languages
+are
+able
+to
+handle
+empty
+property
+names.
+</p>
+<p>
+See
+<a href="#the-context" class="sec-ref">
+<span class="secno">
+5.1
+</span>
+<span class="sec-title">
+The
+Context
+</span>
+</a>
+and
+<a href="#iris" class="sec-ref">
+<span class="secno">
+<del class="diff-old">5.3
+</del>
+<ins class="diff-chg">5.2
+</ins>
+</span>
+<span class="sec-title">
+IRIs
+</span>
+</a>
+for
+further
+discussion
+on
+mapping
+<a class="tref internalDFN" title="term" href="#dfn-term">
+terms
+</a>
+to
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+IRIs
+</a>.
+</p>
+</section>
+<section id="grammar-language-map" typeof="bibo:Chapter" resource="#grammar-language-map" rel="bibo:chapter">
+<h3>
+<span class="secno">
+B.3
+</span>
+Language
+Map
+</h3>
+<p>
+A
+<dfn title="language_map" id="dfn-language_map">
+language
+map
+</dfn>
+is
+used
+to
+associate
+a
+language
+with
+a
+value
+in
+a
+way
+that
+allows
+easy
+programmatic
+access.
+A
+<a class="tref internalDFN" title="language_map" href="#dfn-language_map">
+language
+map
+</a>
+may
+be
+used
+as
+a
+term
+value
+within
+a
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+object
+</a>
+if
+the
+term
+is
+defined
+with
+<code>
+@container
+</code>
+set
+to
+<code>
+@language
+</code>.
+The
+keys
+of
+a
+<a class="tref internalDFN" title="language_map" href="#dfn-language_map">
+language
+map
+</a>
+<em class="rfc2119" title="must">
+must
+</em>
+be
+lowercase
+[
+<cite>
+<a class="bibref" href="#bib-BCP47">
+BCP47
+</a>
+</cite>
+]
+<a class="tref internalDFN" title="string" href="#dfn-string">
+strings
+</a>
+with
+an
+associated
+value
+that
+is
+any
+of
+the
+following
+types:
+</p>
+<ul>
+<li>
+<a class="tref internalDFN" title="string" href="#dfn-string">
+string
+</a>,
+or
+</li>
+<li>
+an
+<a class="tref internalDFN" title="array" href="#dfn-array">
+array
+</a>
+of
+zero
+or
+more
+strings
+</li>
+</ul>
+<p>
+See
+<del class="diff-old">6.3
+Language-tagged
+Strings
+</del>
+<a href="#language-tagged-strings">
+</a>
+for
+further
+discussion
+on
+language
+maps.
+</p>
+</section>
+<section id="grammar-index-map" typeof="bibo:Chapter" resource="#grammar-index-map" rel="bibo:chapter">
+<h3>
+<span class="secno">
+B.4
+</span>
+<del class="diff-old">Annotation
+</del>
+<ins class="diff-chg">Index
+</ins>
+Map
+</h3>
+<p>
+An
+<del class="diff-old">annotation
+</del>
+<dfn title="index_map" id="dfn-index_map">
+<ins class="diff-chg">index
+</ins>
+map
+</dfn>
+allows
+keys
+that
+have
+no
+semantic
+meaning,
+but
+should
+be
+preserved
+regardless,
+to
+be
+used
+in
+JSON-LD
+documents.
+An
+<del class="diff-old">annotation
+</del>
+<a class="tref internalDFN" title="index_map" href="#dfn-index_map">
+<ins class="diff-chg">index
+</ins>
+map
+</a>
+may
+be
+used
+as
+a
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+value
+within
+a
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+object
+</a>
+if
+the
+term
+is
+defined
+with
+<code>
+@container
+</code>
+set
+to
+<code>
+<del class="diff-old">@annotation
+</del>
+<ins class="diff-chg">@index
+</ins>
+</code>.
+The
+<del class="diff-old">keys
+</del>
+<ins class="diff-chg">values
+</ins>
+of
+<del class="diff-old">a
+annotation
+</del>
+<ins class="diff-chg">the
+members
+of
+an
+</ins><a class="tref internalDFN" title="index_map" href="#dfn-index_map"><ins class="diff-chg">
+index
+</ins>
+map
+</a>
+<em class="rfc2119" title="must">
+must
+</em>
+be
+<del class="diff-old">strings
+with
+an
+associated
+value
+that
+is
+any
+</del>
+<ins class="diff-chg">one
+</ins>
+of
+the
+following
+types:
+</p>
+<ul>
+<li>
+<a class="tref internalDFN" title="string" href="#dfn-string">
+string
+</a>,
+</li>
+<li>
+<a class="tref internalDFN" title="number" href="#dfn-number">
+number
+</a>,
+</li>
+<li>
+<a class="tref internalDFN" title="true" href="#dfn-true">
+true
+</a>,
+</li>
+<li>
+<a class="tref internalDFN" title="false" href="#dfn-false">
+false
+</a>,
+</li>
+<li>
+<a class="tref internalDFN" title="null" href="#dfn-null">
+null
+</a>,
+</li>
+<li>
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+object
+</a>,
+</li>
+<li>
+<a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">
+expanded
+value
+</a>,
+</li>
+<li>
+an
+<a class="tref internalDFN" title="array" href="#dfn-array">
+array
+</a>
+of
+zero
+or
+more
+of
+the
+above
+possibilities
+</li>
+</ul>
+<p>
+See
+<a href="#data-indexing" class="sec-ref">
+<span class="secno">
+<del class="diff-old">6.14
+</del>
+<ins class="diff-chg">6.16
+</ins>
+</span>
+<span class="sec-title">
+Data
+<del class="diff-old">Annotations
+</del>
+<ins class="diff-chg">Indexing
+</ins>
+</span>
+</a>
+for
+further
+information
+on
+this
+topic.
+</p>
+</section>
+<section id="grammar-expanded-values" typeof="bibo:Chapter" resource="#grammar-expanded-values" rel="bibo:chapter">
+<h3>
+<span class="secno">
+B.5
+</span>
+Expanded
+Values
+</h3>
+<p>
+An
+<dfn title="expanded_value" id="dfn-expanded_value">
+expanded
+value
+</dfn>
+is
+used
+to
+explicitly
+associate
+a
+type
+or
+a
+language
+with
+a
+value
+to
+create
+a
+<a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">
+typed
+value
+</a>
+or
+a
+<a class="tref internalDFN" title="language-tagged_string" href="#dfn-language-tagged_string">
+language-tagged
+string
+</a>.
+</p>
+<p>
+An
+<a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">
+expanded
+value
+</a>
+<em class="rfc2119" title="must">
+must
+</em>
+be
+a
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+</a>
+containing
+the
+<code>
+@value
+</code>
+key.
+It
+<em class="rfc2119" title="may">
+may
+</em>
+also
+contain
+a
+<code>
+@type
+<del class="diff-old">or
+</del>
+</code>,
+a
+<code>
+@language
+</code>,
+<ins class="diff-new">or
+an
+</ins><code><ins class="diff-new">
+@index
+</ins>
+</code>
+key
+but
+<em class="rfc2119" title="must not">
+must
+not
+</em>
+contain
+both
+a
+<code>
+@type
+</code>
+and
+a
+<code>
+@language
+</code>
+<del class="diff-old">key.
+</del>
+<ins class="diff-chg">key
+at
+the
+same
+time.
+</ins>
+An
+<a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">
+expanded
+value
+</a>
+<em class="rfc2119" title="must not">
+must
+not
+</em>
+contain
+keys
+other
+than
+<code>
+@value
+</code>,
+<code>
+<ins class="diff-new">@type
+</ins></code>,<code>
+@language
+</code>,
+and
+<code>
+<del class="diff-old">@type
+</del>
+<ins class="diff-chg">@index
+</ins>
+</code>.
+An
+<a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">
+expanded
+value
+</a>
+that
+contains
+a
+<code>
+@type
+</code>
+key
+is
+called
+an
+<dfn title="expanded_typed_value" id="dfn-expanded_typed_value">
+expanded
+typed
+value
+</dfn>.
+An
+<a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">
+expanded
+value
+</a>
+that
+contains
+a
+<code>
+@language
+</code>
+key
+is
+called
+an
+<dfn title="expanded_language-tagged_string" id="dfn-expanded_language-tagged_string">
+expanded
+language-tagged
+string
+</dfn>.
+</p>
+<p>
+The
+value
+associated
+with
+the
+<code>
+@value
+</code>
+key
+<em class="rfc2119" title="must">
+must
+</em>
+be
+either
+a
+<a class="tref internalDFN" title="string" href="#dfn-string">
+string
+</a>,
+<a class="tref internalDFN" title="number" href="#dfn-number">
+number
+</a>,
+<a class="tref internalDFN" title="true" href="#dfn-true">
+true
+</a>,
+<a class="tref internalDFN" title="false" href="#dfn-false">
+false
+</a>
+or
+<a class="tref internalDFN" title="null" href="#dfn-null">
+null
+</a>.
+</p>
+<p>
+The
+value
+associated
+with
+the
+<code>
+<ins class="diff-new">@type
+</ins></code><ins class="diff-new">
+key
+</ins><em class="rfc2119" title="must"><ins class="diff-new">
+must
+</ins></em><ins class="diff-new">
+be
+a
+</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-new">
+term
+</ins></a>,<ins class="diff-new">
+a
+</ins><a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri"><ins class="diff-new">
+compact
+</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
+IRI
+</ins></abbr></a>,<ins class="diff-new">
+an
+</ins><a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri"><ins class="diff-new">
+absolute
+</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
+IRI
+</ins></abbr></a>,<ins class="diff-new">
+a
+</ins><a class="tref internalDFN" title="relative_iri" href="#dfn-relative_iri"><ins class="diff-new">
+relative
+</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
+IRI
+</ins></abbr></a>,<ins class="diff-new">
+or
+</ins><a class="tref internalDFN" title="null" href="#dfn-null"><ins class="diff-new">
+null
+</ins></a>.</p><p><ins class="diff-new">
+The
+value
+associated
+with
+the
+</ins><code>
+@language
+</code>
+key
+<em class="rfc2119" title="must">
+must
+</em>
+have
+the
+lexical
+form
+described
+in
+[
+<cite>
+<a class="bibref" href="#bib-BCP47">
+BCP47
+</a>
+</cite>
+],
+or
+be
+<a class="tref internalDFN" title="null" href="#dfn-null">
+null
+</a>.
+</p>
+<p>
+The
+value
+associated
+with
+the
+<code>
+<del class="diff-old">@annotation
+</del>
+<ins class="diff-chg">@index
+</ins>
+</code>
+key
+<em class="rfc2119" title="must">
+must
+</em>
+be
+a
+<a class="tref internalDFN" title="string" href="#dfn-string">
+string
+</a>.
+</p>
+<p>
+<del class="diff-old">The
+value
+associated
+with
+the
+@type
+key
+must
+be
+a
+term
+,
+a
+compact
+IRI
+,
+an
+absolute
+IRI
+,
+or
+null
+.
+</del>
+See
+<a href="#typed-values" class="sec-ref">
+<span class="secno">
+6.2
+</span>
+<span class="sec-title">
+Typed
+Values
+</span>
+</a>
+and
+<del class="diff-old">6.3
+Language-tagged
+Strings
+</del>
+<a href="#language-tagged-strings">
+</a>
+for
+more
+information
+on
+<a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">
+expanded
+values
+</a>.
+</p>
+</section>
+<section id="grammar-set-list" typeof="bibo:Chapter" resource="#grammar-set-list" rel="bibo:chapter">
+<h3>
+<span class="secno">
+B.6
+</span>
+List
+and
+Set
+Values
+</h3>
+<p>
+A
+<a class="tref internalDFN" title="list" href="#dfn-list">
+list
+</a>
+represents
+an
+<em>
+ordered
+</em>
+set
+of
+values.
+A
+<dfn title="set" id="dfn-set">
+set
+</dfn>
+represents
+an
+<em>
+unordered
+</em>
+set
+of
+values.
+Unless
+otherwise
+<del class="diff-old">specified
+(typically
+through
+the
+use
+of
+a
+list
+),
+</del>
+<ins class="diff-chg">specified,
+</ins>
+<a class="tref internalDFN" title="array" href="#dfn-array">
+arrays
+</a>
+are
+unordered
+in
+JSON-LD.
+As
+such,
+the
+<code>
+@set
+</code>
+keyword,
+when
+used
+in
+the
+body
+of
+a
+JSON-LD
+document,
+represents
+just
+syntactic
+sugar
+which
+is
+optimized
+away
+when
+processing
+the
+document.
+However,
+it
+is
+very
+helpful
+when
+used
+within
+the
+context
+of
+a
+document.
+Values
+of
+terms
+associated
+with
+a
+<code>
+@set
+</code>
+or
+<code>
+@list
+</code>
+container
+will
+always
+be
+represented
+in
+the
+form
+of
+an
+array
+when
+a
+document
+is
+processed
+-
+even
+if
+there
+is
+just
+a
+single
+value
+that
+would
+otherwise
+be
+optimized
+to
+a
+non-array
+form
+in
+<a href="#compact-document-form">
+compact
+document
+form
+</a>.
+This
+simplifies
+post-processing
+of
+the
+data
+as
+the
+data
+is
+always
+in
+array
+form.
+</p>
+<p>
+A
+<a class="tref internalDFN" title="list" href="#dfn-list">
+list
+</a>
+<em class="rfc2119" title="must">
+must
+</em>
+be
+a
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+</a>
+that
+contains
+<del class="diff-old">a
+single
+key-value
+pair
+where
+the
+key
+is
+</del>
+<ins class="diff-chg">no
+other
+keys
+than
+</ins>
+<code>
+@list
+</code>,
+<code>
+<ins class="diff-new">@context
+</ins></code>,<ins class="diff-new">
+and
+</ins><code><ins class="diff-new">
+@index
+</ins>
+</code>.
+</p>
+<p>
+A
+<a class="tref internalDFN" title="set" href="#dfn-set">
+set
+</a>
+<em class="rfc2119" title="must">
+must
+</em>
+be
+a
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+</a>
+that
+<ins class="diff-new">that
+</ins>
+contains
+<del class="diff-old">a
+single
+key-value
+pair
+where
+the
+key
+is
+</del>
+<ins class="diff-chg">no
+other
+keys
+than
+</ins>
+<code>
+@set
+</code>,
+<code>
+<ins class="diff-new">@context
+</ins></code>,<ins class="diff-new">
+and
+</ins><code><ins class="diff-new">
+@index
+</ins>
+</code>.
+<ins class="diff-new">Please
+note
+that
+the
+</ins><code><ins class="diff-new">
+@index
+</ins></code><ins class="diff-new">
+key
+will
+be
+ignored,
+and
+thus
+be
+dropped,
+when
+being
+processed.
+</ins>
+</p>
+<p>
+In
+both
+cases,
+the
+value
+associated
+with
+the
+<del class="diff-old">key
+</del>
+<ins class="diff-chg">keys
+</ins><code><ins class="diff-chg">
+@list
+</ins></code><ins class="diff-chg">
+and
+</ins><code><ins class="diff-chg">
+@set
+</ins></code>
+<em class="rfc2119" title="must">
+must
+</em>
+be
+an
+<a class="tref internalDFN" title="array" href="#dfn-array">
+array
+</a>
+of
+any
+of
+the
+following:
+</p>
+<ul>
+<li>
+<a class="tref internalDFN" title="string" href="#dfn-string">
+string
+</a>,
+</li>
+<li>
+<a class="tref internalDFN" title="number" href="#dfn-number">
+number
+</a>,
+</li>
+<li>
+<a class="tref internalDFN" title="true" href="#dfn-true">
+true
+</a>,
+</li>
+<li>
+<a class="tref internalDFN" title="false" href="#dfn-false">
+false
+</a>,
+</li>
+<li>
+<a class="tref internalDFN" title="null" href="#dfn-null">
+null
+</a>,
+</li>
+<li>
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+object
+</a>,
+<del class="diff-old">expanded
+typed
+value
+,
+</del>
+or
+</li>
+<li>
+<a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">
+expanded
+<del class="diff-old">language-tagged
+string
+</del>
+<ins class="diff-chg">value
+</ins>
+</a>
+</li>
+</ul>
+<p>
+See
+<a href="#sets-and-lists" class="sec-ref">
+<span class="secno">
+6.9
+</span>
+<span class="sec-title">
+Sets
+and
+Lists
+</span>
+</a>
+for
+further
+discussion
+on
+List
+and
+Set
+Values.
+</p>
+</section>
+<section id="grammar-context" typeof="bibo:Chapter" resource="#grammar-context" rel="bibo:chapter">
+<h3>
+<span class="secno">
+B.7
+</span>
+Context
+Definition
+</h3>
+<p>
+A
+<dfn title="context_definition" id="dfn-context_definition">
+context
+definition
+</dfn>
+defines
+a
+<a class="tref internalDFN" title="local_context" href="#dfn-local_context">
+local
+context
+</a>
+in
+a
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+object
+</a>.
+</p>
+<p>
+A
+<a class="tref internalDFN" title="context_definition" href="#dfn-context_definition">
+context
+definition
+</a>
+<em class="rfc2119" title="must">
+must
+</em>
+be
+a
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+</a>
+containing
+one
+or
+more
+key-value
+pairs.
+Keys
+<em class="rfc2119" title="must">
+must
+</em>
+either
+be
+<a class="tref internalDFN" title="term" href="#dfn-term">
+terms
+</a>
+or
+<code>
+@language
+</code>
+or
+<code>
+@vocab
+</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keywords
+</a>.
+</p>
+<p>
+If
+the
+<a class="tref internalDFN" title="context_definition" href="#dfn-context_definition">
+context
+definition
+</a>
+has
+a
+<code>
+@language
+</code>
+key,
+its
+value
+<em class="rfc2119" title="must">
+must
+</em>
+have
+the
+lexical
+form
+described
+in
+[
+<cite>
+<a class="bibref" href="#bib-BCP47">
+BCP47
+</a>
+</cite>
+]
+or
+be
+<a class="tref internalDFN" title="null" href="#dfn-null">
+null
+</a>.
+</p>
+<p>
+If
+the
+<a class="tref internalDFN" title="context_definition" href="#dfn-context_definition">
+context
+definition
+</a>
+has
+a
+<code>
+@vocab
+</code>
+key,
+its
+value
+<em class="rfc2119" title="must">
+must
+</em>
+have
+the
+lexical
+form
+of
+<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+be
+<a class="tref internalDFN" title="null" href="#dfn-null">
+null
+</a>.
+</p>
+<p>
+<a class="tref internalDFN" title="term" href="#dfn-term">
+Term
+</a>
+values
+<em class="rfc2119" title="must">
+must
+</em>
+be
+either
+a
+<a class="tref internalDFN" title="string" href="#dfn-string">
+string
+</a>,
+<a class="tref internalDFN" title="null" href="#dfn-null">
+null
+<del class="diff-old">,
+</del>
+</a>,
+or
+an
+<a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">
+expanded
+term
+definition
+</a>.
+</p>
+<p>
+An
+<a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">
+expanded
+term
+definition
+</a>
+is
+used
+to
+describe
+the
+mapping
+between
+a
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+and
+its
+expanded
+identifier,
+as
+well
+as
+other
+properties
+of
+the
+value
+associated
+with
+the
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+when
+it
+is
+used
+as
+key
+in
+a
+<a class="tref internalDFN" title="node_object" href="#dfn-node_object">
+node
+object
+</a>.
+</p>
+<p>
+An
+<a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">
+expanded
+term
+definition
+</a>
+<em class="rfc2119" title="should">
+should
+</em>
+be
+a
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+</a>
+composed
+of
+zero
+or
+more
+keys
+from
+<code>
+@id
+</code>,
+<code>
+@type
+</code>,
+<code>
+@language
+</code>
+or
+<code>
+@container
+</code>.
+An
+<a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">
+expanded
+term
+definition
+</a>
+<em class="rfc2119" title="should not">
+should
+not
+</em>
+contain
+any
+other
+keys.
+</p>
+<p>
+If
+the
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+definition
+is
+not
+<a class="tref internalDFN" title="null" href="#dfn-null">
+null
+<del class="diff-old">,
+</del>
+</a>,
+a
+<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
+compact
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+or
+an
+<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+<del class="diff-old">,
+</del>
+</a>
+<ins class="diff-chg">and
+the
+</ins><a class="tref internalDFN" title="active_context" href="#dfn-active_context"><ins class="diff-chg">
+active
+context
+</ins></a><ins class="diff-chg">
+does
+not
+have
+an
+</ins><code><ins class="diff-chg">
+@vocab
+</ins></code><ins class="diff-chg">
+mapping,
+</ins>
+the
+<a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">
+expanded
+term
+definition
+</a>
+<em class="rfc2119" title="must">
+must
+</em>
+include
+the
+<code>
+@id
+</code>
+key.
+</p>
+<p>
+If
+the
+<a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">
+expanded
+term
+definition
+</a>
+contains
+the
+<code>
+@id
+</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>,
+its
+value
+<em class="rfc2119" title="must">
+must
+</em>
+be
+<a class="tref internalDFN" title="null" href="#dfn-null">
+null
+<del class="diff-old">,
+</del>
+</a>,
+an
+<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
+<ins class="diff-chg">absolute
+</ins>
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+a
+<a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">
+<ins class="diff-new">blank
+node
+identifier
+</ins></a>,<ins class="diff-new">
+a
+</ins>
+<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
+compact
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+a
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+defined
+in
+the
+defining
+<a class="tref internalDFN" title="context_definition" href="#dfn-context_definition">
+context
+definition
+</a>
+or
+the
+<a class="tref internalDFN" title="active_context" href="#dfn-active_context">
+active
+context
+</a>,
+or
+an
+<a class="tref internalDFN" title="array" href="#dfn-array">
+array
+</a>
+composed
+of
+any
+of
+the
+previous
+allowed
+<del class="diff-old">values.
+</del>
+<ins class="diff-chg">values
+except
+</ins><a class="tref internalDFN" title="null" href="#dfn-null"><ins class="diff-chg">
+null
+</ins></a>.
+</p>
+<p>
+If
+the
+<a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">
+expanded
+term
+definition
+</a>
+contains
+the
+<code>
+@type
+</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>,
+its
+value
+<em class="rfc2119" title="must">
+must
+</em>
+be
+an
+<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+a
+<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
+compact
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+a
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+defined
+in
+the
+defining
+<a class="tref internalDFN" title="context_definition" href="#dfn-context_definition">
+context
+definition
+</a>
+or
+the
+<a class="tref internalDFN" title="active_context" href="#dfn-active_context">
+active
+context
+</a>,
+or
+the
+<code>
+@id
+</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>.
+</p>
+<p>
+If
+the
+<a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">
+expanded
+term
+definition
+</a>
+contains
+the
+<code>
+@language
+</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>,
+its
+value
+<em class="rfc2119" title="must">
+must
+</em>
+have
+the
+lexical
+form
+described
+in
+[
+<cite>
+<a class="bibref" href="#bib-BCP47">
+BCP47
+</a>
+</cite>
+]
+or
+be
+<a class="tref internalDFN" title="null" href="#dfn-null">
+null
+</a>.
+</p>
+<p>
+If
+the
+<a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">
+expanded
+term
+definition
+</a>
+contains
+the
+<code>
+@container
+</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>,
+its
+value
+<em class="rfc2119" title="must">
+must
+</em>
+be
+either
+<code>
+@list
+</code>,
+<code>
+@set
+</code>,
+<code>
+@language
+</code>,
+<code>
+<del class="diff-old">@annotation
+</del>
+<ins class="diff-chg">@index
+</ins>
+</code>,
+or
+be
+<a class="tref internalDFN" title="null" href="#dfn-null">
+null
+</a>.
+If
+the
+value
+is
+<code>
+@language
+</code>,
+when
+the
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+is
+used
+outside
+of
+the
+<code>
+@context
+</code>,
+the
+associated
+value
+<em class="rfc2119" title="must">
+must
+</em>
+be
+a
+<a class="tref internalDFN" title="language_map" href="#dfn-language_map">
+language
+map
+</a>.
+If
+the
+value
+is
+<code>
+<del class="diff-old">@annotation
+</del>
+<ins class="diff-chg">@index
+</ins>
+</code>,
+when
+the
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+is
+used
+outside
+of
+the
+<code>
+@context
+</code>,
+the
+associated
+value
+<em class="rfc2119" title="must">
+must
+</em>
+be
+an
+<del class="diff-old">annotation
+</del>
+<a class="tref internalDFN" title="index_map" href="#dfn-index_map">
+<ins class="diff-chg">index
+</ins>
+map
+</a>.
+</p>
+<p>
+<a class="tref internalDFN" title="term" href="#dfn-term">
+Terms
+</a>
+<em class="rfc2119" title="must not">
+must
+not
+</em>
+be
+used
+in
+a
+circular
+manner.
+That
+is,
+the
+definition
+of
+a
+term
+cannot
+depend
+on
+the
+definition
+of
+another
+term
+if
+that
+other
+term
+also
+depends
+on
+the
+first
+term.
+</p>
+<p>
+See
+<a href="#the-context" class="sec-ref">
+<span class="secno">
+5.1
+</span>
+<span class="sec-title">
+The
+Context
+</span>
+</a>
+<del class="diff-old">and
+6.5
+Expanded
+Term
+Definition
+</del>
+for
+further
+discussion
+on
+contexts.
+</p>
+</section>
+</section>
+<section class="appendix normative" id="relationship-to-rdf">
+<h2>
+<span class="secno">
+C.
+</span>
+Relationship
+to
+RDF
+</h2>
+<p>
+The
+RDF
+data
+model,
+as
+outlined
+in
+[
+<cite>
+<a class="bibref" href="#bib-RDF-CONCEPTS">
+RDF-CONCEPTS
+</a>
+</cite>
+],
+is
+an
+abstract
+syntax
+for
+representing
+a
+directed
+graph
+of
+information.
+It
+is
+a
+subset
+of
+<a class="tref internalDFN" title="json-ld_data_model" href="#dfn-json-ld_data_model">
+JSON-LD's
+data
+model
+</a>
+with
+a
+few
+additional
+constraints.
+The
+differences
+between
+the
+two
+data
+models
+are:
+</p>
+<ul>
+<li>
+In
+JSON-LD
+<a class="tref internalDFN" title="graph_name" href="#dfn-graph_name">
+graph
+names
+</a>
+can
+be
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+IRIs
+</a>
+or
+<a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">
+blank
+nodes
+</a>
+whereas
+in
+RDF
+graph
+names
+have
+to
+be
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+IRIs
+</a>.
+</li>
+<li>
+In
+JSON-LD
+<a class="tref internalDFN" title="property" href="#dfn-property">
+properties
+</a>
+can
+be
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+IRIs
+</a>
+or
+<a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">
+blank
+nodes
+</a>
+whereas
+in
+RDF
+properties
+(predicates)
+have
+to
+be
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+IRIs
+</a>.
+</li>
+<li>
+In
+<del class="diff-old">contrast
+to
+RDF
+graphs
+JSON-LD
+graphs
+support
+unconnected
+nodes
+,
+i.e.,
+nodes
+which
+are
+not
+connected
+to
+any
+other
+node.
+In
+</del>
+JSON-LD
+lists
+are
+part
+of
+the
+data
+model
+whereas
+in
+RDF
+they
+are
+part
+of
+a
+vocabulary,
+namely
+[
+<cite>
+<a class="bibref" href="#bib-RDF-SCHEMA">
+RDF-SCHEMA
+</a>
+</cite>
+].
+</li>
+<li>
+RDF
+values
+are
+either
+typed
+<em>
+literals
+</em>
+(
+<a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">
+typed
+values
+</a>
+)
+or
+<em>
+language-tagged
+strings
+</em>
+(
+<a class="tref internalDFN" title="language-tagged_string" href="#dfn-language-tagged_string">
+language-tagged
+strings
+</a>
+)
+whereas
+JSON-LD
+also
+supports
+JSON's
+native
+data
+types,
+i.e.,
+<a class="tref internalDFN" title="number" href="#dfn-number">
+number
+</a>,
+<a class="tref internalDFN" title="string" href="#dfn-string">
+strings
+</a>,
+and
+the
+boolean
+values
+<a class="tref internalDFN" title="true" href="#dfn-true">
+true
+</a>
+and
+<a class="tref internalDFN" title="false" href="#dfn-false">
+false
+</a>.
+The
+JSON-LD
+<ins class="diff-new">Algorithms
+and
+</ins>
+API
+<ins class="diff-new">specification
+</ins>
+[
+<cite>
+<a class="bibref" href="#bib-JSON-LD-API">
+JSON-LD-API
+</a>
+</cite>
+]
+<del class="diff-old">specification
+</del>
+defines
+the
+conversion
+rules
+between
+JSON's
+native
+data
+types
+and
+RDF's
+counterparts
+to
+allow
+full
+round-tripping.
+</li>
+</ul>
+<p>
+Summarized
+these
+differences
+mean
+that
+JSON-LD
+is
+capable
+of
+serializing
+any
+RDF
+graph
+or
+dataset
+and
+most,
+but
+not
+all,
+JSON-LD
+documents
+can
+be
+transformed
+to
+RDF.
+A
+complete
+description
+of
+the
+algorithms
+to
+convert
+from
+RDF
+to
+JSON-LD
+and
+from
+JSON-LD
+to
+RDF
+is
+included
+in
+the
+JSON-LD
+<ins class="diff-new">Algorithms
+and
+</ins>
+API
+<ins class="diff-new">specification
+</ins>
+[
+<cite>
+<a class="bibref" href="#bib-JSON-LD-API">
+JSON-LD-API
+</a>
+</cite>
+<del class="diff-old">]
+specification.
+</del>
+<ins class="diff-chg">].
+</ins>
+</p>
+<p>
+Even
+though
+JSON-LD
+serializes
+RDF
+datasets,
+it
+can
+also
+be
+used
+as
+a
+RDF
+graph
+source.
+In
+that
+case,
+a
+consumer
+<em class="rfc2119" title="must">
+must
+</em>
+only
+use
+the
+default
+graph
+and
+ignore
+all
+named
+graphs.
+This
+allows
+servers
+to
+expose
+data
+in,
+e.g.,
+both
+Turtle
+and
+JSON-LD
+using
+content
+negotiation.
+</p>
+<div class="note">
+<div class="note-title">
+<span>
+Note
+</span>
+</div>
+<p class="">
+Publishers
+supporting
+both
+dataset
+and
+graph
+syntaxes
+have
+to
+ensure
+that
+the
+primary
+data
+is
+stored
+in
+the
+default
+graph
+to
+enable
+consumers
+that
+do
+not
+support
+datasets
+to
+process
+the
+information.
+</p>
+</div>
+</section>
+<section class="appendix informative" id="relationship-to-other-linked-data-formats">
+<h2>
+<span class="secno">
+D.
+</span>
+Relationship
+to
+Other
+Linked
+Data
+Formats
+</h2>
+<p>
+<em>
+This
+section
+is
+non-normative.
+</em>
+</p>
+<p>
+The
+JSON-LD
+markup
+examples
+below
+demonstrate
+how
+JSON-LD
+can
+be
+used
+to
+express
+semantic
+data
+marked
+up
+in
+other
+linked
+data
+formats
+such
+as
+Turtle,
+RDFa,
+Microformats,
+and
+Microdata.
+These
+sections
+are
+merely
+provided
+as
+evidence
+that
+JSON-LD
+is
+very
+flexible
+in
+what
+it
+can
+express
+across
+different
+<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
+Linked
+Data
+</a>
+approaches.
+</p>
+<section id="turtle">
+<h3>
+<span class="secno">
+D.1
+</span>
+Turtle
+</h3>
+<p>
+<em>
+This
+section
+is
+non-normative.
+</em>
+</p>
+<p>
+The
+following
+are
+examples
+of
+converting
+RDF
+expressed
+in
+[
+<cite>
+<a class="bibref" href="#bib-TURTLE-TR">
+TURTLE-TR
+</a>
+</cite>
+]
+into
+JSON-LD.
+</p>
+<section id="prefix-definitions">
+<h4>
+<span class="secno">
+D.1.1
+</span>
+Prefix
+definitions
+</h4>
+<p>
+<em>
+This
+section
+is
+non-normative.
+</em>
+</p>
+<p>
+The
+JSON-LD
+context
+has
+direct
+equivalents
+for
+the
+Turtle
+<code>
+@prefix
+</code>
+declaration:
+</p>
+<del class="diff-old">@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+</del>
+<div class="example"><div class="example-title"><span>Example 57</span>: A set of statements serialized in Turtle</div><pre class="example">@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+<http://manu.sporny.org/i/public> a foaf:Person;
+<del class="diff-old"> foaf:name "Manu Sporny";
+</del>
+<ins class="diff-chg"> foaf:name "Manu Sporny";
+</ins>
+foaf:homepage
+<http://manu.sporny.org/>
+.
+</pre>
+</div>
+<del class="diff-old">{
+ "@context":
+</del>
+<div class="example"><div class="example-title"><span>Example 58</span>: The same set of statements serialized in JSON-LD</div><pre class="example">{
+<ins class="diff-chg"> "@context":
+</ins>
+ {
+<del class="diff-old"> "foaf": "http://xmlns.com/foaf/0.1/"
+</del>
+<ins class="diff-chg"> "foaf": "http://xmlns.com/foaf/0.1/"
+</ins>
+ },
+<del class="diff-old"> "@id": "http://manu.sporny.org/i/public",
+ "@type": "foaf:Person",
+ "foaf:name": "Manu Sporny",
+ "foaf:homepage": { "@id": "http://manu.sporny.org/" }
+</del>
+<ins class="diff-chg"> "@id": "http://manu.sporny.org/i/public",
+ "@type": "foaf:Person",
+ "foaf:name": "Manu Sporny",
+ "foaf:homepage": { "@id": "http://manu.sporny.org/" }
+</ins>
+}
+</pre>
+</div>
+<div class="note">
+<div class="note-title">
+<span>
+Note
+</span>
+</div>
+<p class="">
+JSON-LD
+has
+no
+equivalent
+for
+the
+Turtle
+<code>
+@base
+</code>
+<del class="diff-old">declaration.
+</del>
+<ins class="diff-chg">declaration,
+but
+can
+use
+a
+prefix
+such
+as
+</ins><code><ins class="diff-chg">
+base
+</ins></code><ins class="diff-chg">
+to
+encode
+the
+information
+in
+the
+document.
+</ins>
+</p>
+</div>
+</section>
+<section id="embedding-1">
+<h4>
+<span class="secno">
+D.1.2
+</span>
+Embedding
+</h4>
+<p>
+Both
+Turtle
+and
+JSON-LD
+allow
+embedding,
+although
+Turtle
+only
+allows
+embedding
+of
+<a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">
+blank
+nodes
+</a>.
+</p>
+</section>
+<del class="diff-old">@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+</del>
+<div class="example"><div class="example-title"><span>Example 59</span>: Embedding in Turtle</div><pre class="example">@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+<http://manu.sporny.org/i/public>
+ a foaf:Person;
+<del class="diff-old"> foaf:name "Manu Sporny";
+</del>
+<ins class="diff-chg"> foaf:name "Manu Sporny";
+</ins>
+foaf:knows
+[
+a
+foaf:Person;
+foaf:name
+<del class="diff-old">"Gregg
+Kellogg"
+</del>
+<ins class="diff-chg">"Gregg
+Kellogg"
+</ins>
+]
+.
+</pre>
+</div>
+<del class="diff-old">{
+ "@context":
+</del>
+<div class="example"><div class="example-title"><span>Example 60</span>: Same embedding example in JSON-LD</div><pre class="example">{
+<ins class="diff-chg"> "@context":
+</ins>
+ {
+<del class="diff-old"> "foaf": "http://xmlns.com/foaf/0.1/"
+</del>
+<ins class="diff-chg"> "foaf": "http://xmlns.com/foaf/0.1/"
+</ins>
+ },
+<del class="diff-old"> "@id": "http://manu.sporny.org/i/public",
+ "@type": "foaf:Person",
+ "foaf:name": "Manu Sporny",
+ "foaf:knows":
+</del>
+<ins class="diff-chg"> "@id": "http://manu.sporny.org/i/public",
+ "@type": "foaf:Person",
+ "foaf:name": "Manu Sporny",
+ "foaf:knows":
+</ins>
+ {
+<del class="diff-old"> "@type": "foaf:Person",
+ "foaf:name": "Gregg Kellogg"
+</del>
+<ins class="diff-chg"> "@type": "foaf:Person",
+ "foaf:name": "Gregg Kellogg"
+</ins>
+ }
+}
+</pre>
+</div>
+<section id="lists">
+<h4>
+<span class="secno">
+D.1.3
+</span>
+Lists
+</h4>
+<p>
+Both
+JSON-LD
+and
+Turtle
+can
+represent
+sequential
+lists
+of
+values.
+</p>
+<del class="diff-old">@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+</del>
+<div class="example"><div class="example-title"><span>Example 61</span>: A list of values in Turtle</div><pre class="example">@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+<http://example.org/people#joebob> a foaf:Person;
+<del class="diff-old"> foaf:name "Joe Bob";
+</del>
+<ins class="diff-chg"> foaf:name "Joe Bob";
+</ins>
+foaf:nick
+(
+<del class="diff-old">"joe"
+"bob"
+"jaybee"
+</del>
+<ins class="diff-chg">"joe"
+"bob"
+"jaybee"
+</ins>
+)
+.
+</pre>
+</div>
+<del class="diff-old">{
+ "@context":
+</del>
+<div class="example"><div class="example-title"><span>Example 62</span>: Same example with a list of values in JSON-LD</div><pre class="example">{
+<ins class="diff-chg"> "@context":
+</ins>
+ {
+<del class="diff-old"> "foaf": "http://xmlns.com/foaf/0.1/"
+</del>
+<ins class="diff-chg"> "foaf": "http://xmlns.com/foaf/0.1/"
+</ins>
+ },
+<del class="diff-old"> "@id": "http://example.org/people#joebob",
+ "@type": "foaf:Person",
+ "foaf:name": "Joe Bob",
+ "foaf:nick":
+</del>
+<ins class="diff-chg"> "@id": "http://example.org/people#joebob",
+ "@type": "foaf:Person",
+ "foaf:name": "Joe Bob",
+ "foaf:nick":
+</ins>
+ {
+<del class="diff-old"> "@list": [ "joe", "bob", "jaybee" ]
+</del>
+<ins class="diff-chg"> "@list": [ "joe", "bob", "jaybee" ]
+</ins>
+ }
+}
+</pre>
+</div>
+</section>
+</section>
+<section id="rdfa">
+<h3>
+<span class="secno">
+D.2
+</span>
+RDFa
+</h3>
+<p>
+The
+following
+example
+describes
+three
+people
+with
+their
+respective
+names
+and
+<del class="diff-old">homepages.
+</del>
+<ins class="diff-chg">homepages
+in
+[
+</ins><cite><a class="bibref" href="#bib-RDFA-CORE"><ins class="diff-chg">
+RDFA-CORE
+</ins></a></cite><ins class="diff-chg">
+].
+</ins>
+</p>
+<del class="diff-old">>
+</del>
+<div class="example"><div class="example-title"><span>Example 63</span>: RDFa fragment that describes three people</div><pre class="example"><div <span class="diff">prefix="foaf: http://xmlns.com/foaf/0.1/"</span>>
+ <ul>
+<del class="diff-old"> <li >
+ <a >Bob</a>
+</del>
+<ins class="diff-chg"> <li <span class="diff">typeof="foaf:Person"</span>>
+ <a <span class="diff">rel="foaf:homepage" href="http://example.com/bob/" property="foaf:name"</span>>Bob</a>
+</ins>
+ </li>
+<del class="diff-old"> <li >
+ <a >Eve</a>
+</del>
+<ins class="diff-chg"> <li <span class="diff">typeof="foaf:Person"</span>>
+ <a <span class="diff">rel="foaf:homepage" href="http://example.com/eve/" property="foaf:name"</span>>Eve</a>
+</ins>
+ </li>
+<del class="diff-old"> <li >
+ <a >Manu</a>
+</del>
+<ins class="diff-chg"> <li <span class="diff">typeof="foaf:Person"</span>>
+ <a <span class="diff">rel="foaf:homepage" href="http://example.com/manu/" property="foaf:name"</span>>Manu</a>
+</ins>
+ </li>
+ </ul>
+</div>
+</pre>
+</div>
+<p>
+An
+example
+JSON-LD
+implementation
+using
+a
+single
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>
+is
+described
+below.
+</p>
+<del class="diff-old">{
+ "@context":
+</del>
+<div class="example"><div class="example-title"><span>Example 64</span>: Same description in JSON-LD (context shared among node objects)</div><pre class="example">{
+<ins class="diff-chg"> "@context":
+</ins>
+ {
+<del class="diff-old"> "foaf": "http://xmlns.com/foaf/0.1/"
+</del>
+<ins class="diff-chg"> "foaf": "http://xmlns.com/foaf/0.1/"
+</ins>
+ },
+<del class="diff-old"> "@graph":
+</del>
+<ins class="diff-chg"> "@graph":
+</ins>
+ [
+ {
+<del class="diff-old"> "@type": "foaf:Person",
+ "foaf:homepage": "http://example.com/bob/",
+ "foaf:name": "Bob"
+</del>
+<ins class="diff-chg"> "@type": "foaf:Person",
+ "foaf:homepage": "http://example.com/bob/",
+ "foaf:name": "Bob"
+</ins>
+ },
+ {
+<del class="diff-old"> "@type": "foaf:Person",
+ "foaf:homepage": "http://example.com/eve/",
+ "foaf:name": "Eve"
+</del>
+<ins class="diff-chg"> "@type": "foaf:Person",
+ "foaf:homepage": "http://example.com/eve/",
+ "foaf:name": "Eve"
+</ins>
+ },
+ {
+<del class="diff-old"> "@type": "foaf:Person",
+ "foaf:homepage": "http://example.com/manu/",
+ "foaf:name": "Manu"
+</del>
+<ins class="diff-chg"> "@type": "foaf:Person",
+ "foaf:homepage": "http://example.com/manu/",
+ "foaf:name": "Manu"
+</ins>
+ }
+ ]
+}
+</pre>
+</div>
+</section>
+<section id="microformats">
+<h3>
+<span class="secno">
+D.3
+</span>
+Microformats
+</h3>
+<p>
+The
+following
+example
+uses
+a
+simple
+Microformats
+hCard
+<ins class="diff-new">([
+</ins><cite><a class="bibref" href="#bib-MICROFORMATS"><ins class="diff-new">
+MICROFORMATS
+</ins></a></cite><ins class="diff-new">
+])
+</ins>
+example
+to
+express
+how
+the
+Microformat
+is
+represented
+in
+JSON-LD.
+</p>
+<del class="diff-old"><div class="vcard">
+ <a class="url fn" href="http://tantek.com/">Tantek Çelik</a>
+</del>
+<div class="example"><div class="example-title"><span>Example 65</span>: HTML fragment with a simple Microformats hCard</div><pre class="example"><div class="vcard">
+<ins class="diff-chg"> <a class="url fn" href="http://tantek.com/">Tantek Çelik</a>
+</ins>
+</div>
+</pre>
+</div>
+<p>
+The
+representation
+of
+the
+hCard
+expresses
+the
+Microformat
+terms
+in
+the
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>
+and
+uses
+them
+directly
+for
+the
+<code>
+url
+</code>
+and
+<code>
+fn
+</code>
+properties.
+Also
+note
+that
+the
+Microformat
+to
+JSON-LD
+processor
+has
+generated
+the
+proper
+URL
+type
+for
+<code>
+http://tantek.com/
+</code>.
+</p>
+<del class="diff-old">{
+ "@context":
+</del>
+<div class="example"><div class="example-title"><span>Example 66</span>: Same hCard representation in JSON-LD</div><pre class="example">{
+<ins class="diff-chg"> "@context":
+</ins>
+ {
+<del class="diff-old"> "vcard": "http://microformats.org/profile/hcard#vcard",
+ "url":
+</del>
+<ins class="diff-chg"> "vcard": "http://microformats.org/profile/hcard#vcard",
+ "url":
+</ins>
+ {
+<del class="diff-old"> "@id": "http://microformats.org/profile/hcard#url",
+ "@type": "@id"
+</del>
+<ins class="diff-chg"> "@id": "http://microformats.org/profile/hcard#url",
+ "@type": "@id"
+</ins>
+ },
+<del class="diff-old"> "fn": "http://microformats.org/profile/hcard#fn"
+</del>
+<ins class="diff-chg"> "fn": "http://microformats.org/profile/hcard#fn"
+</ins>
+ },
+<del class="diff-old"> "@type": "vcard",
+ "url": "http://tantek.com/",
+ "fn": "Tantek Çelik"
+</del>
+<ins class="diff-chg"> "@type": "vcard",
+ "url": "http://tantek.com/",
+ "fn": "Tantek Çelik"
+</ins>
+}
+</pre>
+</div>
+</section>
+<section id="microdata">
+<h3>
+<span class="secno">
+D.4
+</span>
+Microdata
+</h3>
+<p>
+The
+<del class="diff-old">microdata
+</del>
+<ins class="diff-chg">[
+</ins><cite><a class="bibref" href="#bib-MICRODATA"><ins class="diff-chg">
+MICRODATA
+</ins></a></cite><ins class="diff-chg">
+]
+</ins>
+example
+below
+expresses
+book
+information
+as
+a
+microdata
+Work
+item.
+</p>
+<del class="diff-old"><dl itemscope
+ itemtype="http://purl.org/vocab/frbr/core#Work"
+ itemid="http://purl.oreilly.com/works/45U8QJGZSQKDH8N">
+</del>
+<div class="example"><div class="example-title"><span>Example 67</span>: HTML fragments that describes a book using microdata</div><pre class="example"><dl itemscope
+<ins class="diff-chg"> itemtype="http://purl.org/vocab/frbr/core#Work"
+ itemid="http://purl.oreilly.com/works/45U8QJGZSQKDH8N">
+</ins>
+ <dt>Title</dt>
+<del class="diff-old"> <dd><cite itemprop="http://purl.org/dc/terms/title">Just a Geek</cite></dd>
+</del>
+<ins class="diff-chg"> <dd><cite itemprop="http://purl.org/dc/terms/title">Just a Geek</cite></dd>
+</ins>
+ <dt>By</dt>
+<del class="diff-old"> <dd><span itemprop="http://purl.org/dc/terms/creator">Wil Wheaton</span></dd>
+</del>
+<ins class="diff-chg"> <dd><span itemprop="http://purl.org/dc/terms/creator">Wil Wheaton</span></dd>
+</ins>
+ <dt>Format</dt>
+<del class="diff-old"> <dd itemprop="http://purl.org/vocab/frbr/core#realization"
+</del>
+<ins class="diff-chg"> <dd itemprop="http://purl.org/vocab/frbr/core#realization"
+</ins>
+ itemscope
+<del class="diff-old"> itemtype="http://purl.org/vocab/frbr/core#Expression"
+ itemid="http://purl.oreilly.com/products/9780596007683.BOOK">
+ <link itemprop="http://purl.org/dc/terms/type" href="http://purl.oreilly.com/product-types/BOOK">
+</del>
+<ins class="diff-chg"> itemtype="http://purl.org/vocab/frbr/core#Expression"
+ itemid="http://purl.oreilly.com/products/9780596007683.BOOK">
+ <link itemprop="http://purl.org/dc/terms/type" href="http://purl.oreilly.com/product-types/BOOK">
+</ins>
+ Print
+ </dd>
+<del class="diff-old"> <dd itemprop="http://purl.org/vocab/frbr/core#realization"
+</del>
+<ins class="diff-chg"> <dd itemprop="http://purl.org/vocab/frbr/core#realization"
+</ins>
+ itemscope
+<del class="diff-old"> itemtype="http://purl.org/vocab/frbr/core#Expression"
+ itemid="http://purl.oreilly.com/products/9780596802189.EBOOK">
+ <link itemprop="http://purl.org/dc/terms/type" href="http://purl.oreilly.com/product-types/EBOOK">
+</del>
+<ins class="diff-chg"> itemtype="http://purl.org/vocab/frbr/core#Expression"
+ itemid="http://purl.oreilly.com/products/9780596802189.EBOOK">
+ <link itemprop="http://purl.org/dc/terms/type" href="http://purl.oreilly.com/product-types/EBOOK">
+</ins>
+ Ebook
+ </dd>
+</dl>
+</pre>
+</div>
+<p>
+Note
+that
+the
+JSON-LD
+representation
+of
+the
+Microdata
+information
+stays
+true
+to
+the
+desires
+of
+the
+Microdata
+community
+to
+avoid
+contexts
+and
+instead
+refer
+to
+items
+by
+their
+full
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+</p>
+<del class="diff-old">[
+</del>
+<div class="example"><div class="example-title"><span>Example 68</span>: Same book description in JSON-LD (avoiding contexts)</div><pre class="example">[
+ {
+<del class="diff-old"> "@id": "http://purl.oreilly.com/works/45U8QJGZSQKDH8N",
+ "@type": "http://purl.org/vocab/frbr/core#Work",
+ "http://purl.org/dc/terms/title": "Just a Geek",
+ "http://purl.org/dc/terms/creator": "Whil Wheaton",
+ "http://purl.org/vocab/frbr/core#realization":
+</del>
+<ins class="diff-chg"> "@id": "http://purl.oreilly.com/works/45U8QJGZSQKDH8N",
+ "@type": "http://purl.org/vocab/frbr/core#Work",
+ "http://purl.org/dc/terms/title": "Just a Geek",
+ "http://purl.org/dc/terms/creator": "Whil Wheaton",
+ "http://purl.org/vocab/frbr/core#realization":
+</ins>
+ [
+<del class="diff-old"> "http://purl.oreilly.com/products/9780596007683.BOOK",
+ "http://purl.oreilly.com/products/9780596802189.EBOOK"
+</del>
+<ins class="diff-chg"> "http://purl.oreilly.com/products/9780596007683.BOOK",
+ "http://purl.oreilly.com/products/9780596802189.EBOOK"
+</ins>
+ ]
+ },
+ {
+<del class="diff-old"> "@id": "http://purl.oreilly.com/products/9780596007683.BOOK",
+ "@type": "http://purl.org/vocab/frbr/core#Expression",
+ "http://purl.org/dc/terms/type": "http://purl.oreilly.com/product-types/BOOK"
+</del>
+<ins class="diff-chg"> "@id": "http://purl.oreilly.com/products/9780596007683.BOOK",
+ "@type": "http://purl.org/vocab/frbr/core#Expression",
+ "http://purl.org/dc/terms/type": "http://purl.oreilly.com/product-types/BOOK"
+</ins>
+ },
+ {
+<del class="diff-old"> "@id": "http://purl.oreilly.com/products/9780596802189.EBOOK",
+ "@type": "http://purl.org/vocab/frbr/core#Expression",
+ "http://purl.org/dc/terms/type": "http://purl.oreilly.com/product-types/EBOOK"
+</del>
+<ins class="diff-chg"> "@id": "http://purl.oreilly.com/products/9780596802189.EBOOK",
+ "@type": "http://purl.org/vocab/frbr/core#Expression",
+ "http://purl.org/dc/terms/type": "http://purl.oreilly.com/product-types/EBOOK"
+</ins>
+ }
+]
+</pre>
+</div>
+</section>
+</section>
+<section class="appendix informative" id="iana-considerations">
+<h2>
+<span class="secno">
+E.
+</span>
+IANA
+Considerations
+</h2>
+<p>
+<em>
+This
+section
+is
+non-normative.
+</em>
+</p>
+<p>
+This
+section
+is
+included
+merely
+for
+standards
+community
+review
+and
+will
+be
+submitted
+to
+the
+Internet
+Engineering
+Steering
+Group
+if
+this
+specification
+becomes
+a
+W3C
+Recommendation.
+</p>
+<h2 id="application-ld-json">
+application/ld+json
+</h2>
+<dl>
+<dt>
+Type
+name:
+</dt>
+<dd>
+application
+</dd>
+<dt>
+Subtype
+name:
+</dt>
+<dd>
+ld+json
+</dd>
+<dt>
+Required
+parameters:
+</dt>
+<dd>
+None
+</dd>
+<dt>
+Optional
+parameters:
+</dt>
+<dd>
+<dl>
+<dt>
+<code>
+<del class="diff-old">form
+Determines
+the
+serialization
+form
+for
+the
+JSON-LD
+document.
+The
+only
+valid
+value
+at
+the
+moment
+is
+expanded
+.
+If
+no
+form
+is
+specified
+in
+an
+HTTP
+request
+header
+to
+an
+HTTP
+server,
+the
+server
+may
+choose
+any
+form.
+If
+no
+form
+is
+specified
+in
+an
+HTTP
+response,
+the
+form
+must
+not
+be
+assumed
+to
+take
+any
+particular
+form.
+</del>
+profile
+</code>
+</dt>
+<dd>
+A
+whitespace-separated
+list
+of
+IRIs
+identifying
+specific
+constraints
+or
+conventions
+that
+apply
+to
+a
+JSON-LD
+document.
+A
+profile
+<em class="rfc2119" title="must not">
+must
+not
+</em>
+change
+the
+semantics
+of
+the
+resource
+<del class="diff-old">representation
+when
+processed
+without
+profile
+knowledge,
+so
+that
+clients
+both
+with
+and
+without
+knowledge
+of
+a
+profiled
+resource
+can
+safely
+use
+the
+same
+</del>
+representation.
+The
+<code>
+profile
+</code>
+parameter
+<em class="rfc2119" title="may">
+may
+</em>
+also
+be
+used
+by
+clients
+to
+express
+their
+preferences
+in
+the
+content
+negotiation
+process.
+It
+is
+<em class="rfc2119" title="recommended">
+recommended
+</em>
+that
+profile
+IRIs
+are
+dereferenceable
+and
+provide
+useful
+documentation
+at
+that
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>.
+This
+<del class="diff-old">specification,
+however,
+does
+not
+define
+any
+formats
+</del>
+<ins class="diff-chg">specification
+defines
+four
+values
+</ins>
+for
+<del class="diff-old">such
+</del>
+<ins class="diff-chg">the
+</ins><code>
+profile
+<del class="diff-old">descriptions.
+</del>
+</code>
+<ins class="diff-chg">parameter.
+To
+request
+or
+specify
+Expanded
+JSON-LD
+document
+form,
+the
+</ins><code><ins class="diff-chg">
+http://www.w3.org/ns/json-ld#expanded
+</ins></code><ins class="diff-chg">
+URL
+</ins><em class="rfc2119" title="should"><ins class="diff-chg">
+should
+</ins></em><ins class="diff-chg">
+be
+used.
+To
+request
+or
+specify
+Expanded,
+Flattened
+JSON-LD
+document
+form,
+the
+</ins><code><ins class="diff-chg">
+http://www.w3.org/ns/json-ld#expanded-flattened
+</ins></code><ins class="diff-chg">
+URL
+</ins><em class="rfc2119" title="should"><ins class="diff-chg">
+should
+</ins></em><ins class="diff-chg">
+be
+used.
+To
+request
+or
+specify
+Compacted
+JSON-LD
+document
+form,
+the
+</ins><code><ins class="diff-chg">
+http://www.w3.org/ns/json-ld#compacted
+</ins></code><ins class="diff-chg">
+URL
+</ins><em class="rfc2119" title="should"><ins class="diff-chg">
+should
+</ins></em><ins class="diff-chg">
+be
+used.
+To
+request
+or
+specify
+Compacted,
+Flattened
+JSON-LD
+document
+form,
+the
+</ins><code><ins class="diff-chg">
+http://www.w3.org/ns/json-ld#compacted-flattened
+</ins></code><ins class="diff-chg">
+URL
+</ins><em class="rfc2119" title="should"><ins class="diff-chg">
+should
+</ins></em><ins class="diff-chg">
+be
+used.
+</ins>
+</dd>
+</dl>
+</dd>
+<dt>
+Encoding
+considerations:
+</dt>
+<dd>
+The
+same
+as
+the
+<code>
+application/json
+</code>
+MIME
+media
+type.
+</dd>
+<dt>
+Security
+considerations:
+</dt>
+<dd>
+Since
+JSON-LD
+is
+intended
+to
+be
+a
+pure
+data
+exchange
+format
+for
+directed
+graphs,
+the
+serialization
+<em class="rfc2119" title="should not">
+should
+not
+</em>
+be
+passed
+through
+a
+code
+execution
+mechanism
+such
+as
+JavaScript's
+<code>
+eval()
+</code>
+function.
+It
+is
+<em class="rfc2119" title="recommended">
+recommended
+</em>
+that
+a
+conforming
+parser
+does
+not
+attempt
+to
+directly
+evaluate
+the
+JSON-LD
+serialization
+and
+instead
+purely
+parse
+the
+input
+into
+a
+language-native
+data
+structure.
+<br>
+<ins class="diff-new">JSON-LD
+contexts
+that
+are
+loaded
+from
+the
+Web
+over
+non-secure
+connections,
+such
+as
+HTTP,
+run
+the
+risk
+of
+modifying
+the
+JSON-LD
+</ins><a class="tref internalDFN" title="active_context" href="#dfn-active_context"><ins class="diff-new">
+active
+context
+</ins></a><ins class="diff-new">
+in
+a
+way
+that
+could
+compromise
+security.
+It
+is
+advised
+that
+any
+application
+that
+depends
+on
+a
+remote
+context
+for
+mission
+critical
+purposes
+vet
+and
+cache
+the
+remote
+context
+before
+allowing
+the
+system
+to
+use
+it.
+</ins>
+</dd>
+<dt>
+Interoperability
+considerations:
+</dt>
+<dd>
+Not
+Applicable
+</dd>
+<dt>
+Published
+specification:
+</dt>
+<dd>
+The
+<a href="http://json-ld.org/spec/latest/">
+JSON-LD
+</a>
+specification.
+</dd>
+<dt>
+Applications
+that
+use
+this
+media
+type:
+</dt>
+<dd>
+Any
+programming
+environment
+that
+requires
+the
+exchange
+of
+directed
+graphs.
+Implementations
+of
+JSON-LD
+have
+been
+created
+for
+JavaScript,
+Python,
+Ruby,
+<del class="diff-old">PHP
+</del>
+<ins class="diff-chg">PHP,
+</ins>
+and
+C++.
+</dd>
+<dt>
+Additional
+information:
+</dt>
+<dd>
+<dl>
+<dt>
+Magic
+number(s):
+</dt>
+<dd>
+Not
+Applicable
+</dd>
+<dt>
+File
+extension(s):
+</dt>
+<dd>.jsonld
+</dd>
+<dt>
+Macintosh
+file
+type
+code(s):
+</dt>
+<dd>
+TEXT
+</dd>
+</dl>
+</dd>
+<dt>
+Person
+&
+email
+address
+to
+contact
+for
+further
+information:
+</dt>
+<dd>
+Manu
+Sporny
+<msporny@digitalbazaar.com>
+</dd>
+<dt>
+Intended
+usage:
+</dt>
+<dd>
+Common
+</dd>
+<dt>
+Restrictions
+on
+usage:
+</dt>
+<dd>
+None
+</dd>
+<dt>
+Author(s):
+</dt>
+<dd>
+Manu
+Sporny,
+<ins class="diff-new">Dave
+Longley,
+</ins>
+Gregg
+Kellogg,
+Markus
+Lanthaler,
+<del class="diff-old">Dave
+Longley
+</del>
+<ins class="diff-chg">Niklas
+Lindström
+</ins>
+</dd>
+<dt>
+Change
+controller:
+</dt>
+<dd>
+W3C
+</dd>
+</dl>
+<p>
+Fragment
+identifiers
+used
+with
+<a href="#application-ld-json">
+application/ld+json
+</a>
+resources
+<em class="rfc2119" title="may">
+may
+</em>
+identify
+a
+node
+in
+a
+<a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">
+JSON-LD
+graph
+</a>
+expressed
+in
+the
+resource.
+This
+idiom,
+which
+is
+also
+used
+in
+RDF
+[
+<cite>
+<a class="bibref" href="#bib-RDF-CONCEPTS">
+RDF-CONCEPTS
+</a>
+</cite>
+],
+gives
+a
+simple
+way
+to
+<del class="diff-old">"mint"
+</del>
+<ins class="diff-chg">"mint"
+</ins>
+new,
+document-local
+IRIs
+to
+label
+nodes
+and
+therefore
+contributes
+considerably
+to
+the
+expressive
+power
+of
+JSON-LD.
+</p>
+</section>
+<section class="appendix informative" id="acknowledgements">
+<h2>
+<span class="secno">
+F.
+</span>
+Acknowledgements
+</h2>
+<p>
+<em>
+This
+section
+is
+non-normative.
+</em>
+</p>
+<p>
+<ins class="diff-new">The
+authors
+would
+like
+to
+extend
+a
+deep
+appreciation
+and
+the
+most
+sincere
+thanks
+to
+Mark
+Birbeck,
+who
+contributed
+foundational
+concepts
+to
+JSON-LD
+via
+his
+work
+on
+RDFj.
+JSON-LD
+uses
+a
+number
+of
+core
+concepts
+introduced
+in
+RDFj,
+such
+as
+the
+context
+as
+a
+mechanism
+to
+provide
+an
+environment
+for
+interpreting
+JSON
+data.
+Mark
+had
+also
+been
+very
+involved
+in
+the
+work
+on
+RDFa
+as
+well.
+RDFj
+built
+upon
+that
+work.
+JSON-LD
+exists
+because
+of
+the
+work
+and
+ideas
+he
+started
+nearly
+a
+decade
+ago
+in
+2004.
+</ins></p><p>
+A
+large
+amount
+of
+thanks
+goes
+out
+to
+the
+JSON-LD
+Community
+Group
+participants
+who
+worked
+through
+many
+of
+the
+technical
+issues
+on
+the
+mailing
+list
+and
+the
+weekly
+telecons
+-
+of
+special
+mention
+are
+<del class="diff-old">Niklas
+Lindström,
+</del>
+François
+Daoust,
+<ins class="diff-new">Stéphane
+Corlosquet,
+</ins>
+Lin
+Clark,
+and
+Zdenko
+'Denny'
+Vrandečić.
+<del class="diff-old">The
+editors
+would
+like
+to
+thank
+Mark
+Birbeck,
+who
+provided
+a
+great
+deal
+of
+the
+initial
+push
+behind
+the
+JSON-LD
+work
+via
+his
+work
+on
+RDFj.
+</del>
+</p>
+<p>
+The
+work
+of
+<del class="diff-old">Dave
+</del>
+<ins class="diff-chg">David
+I.
+</ins>
+Lehn
+and
+Mike
+Johnson
+are
+appreciated
+for
+reviewing,
+and
+performing
+several
+<ins class="diff-new">early
+</ins>
+implementations
+of
+the
+specification.
+<ins class="diff-new">Thanks
+also
+to
+</ins>
+Ian
+Davis
+<del class="diff-old">is
+thanked
+</del>
+for
+this
+work
+on
+RDF/JSON.
+</p>
+<p>
+Thanks
+<del class="diff-old">also
+</del>
+to
+<del class="diff-old">Nathan
+Rixham,
+Bradley
+P.
+Allen,
+Kingsley
+Idehen,
+Glenn
+McDonald,
+</del>
+<ins class="diff-chg">the
+following
+individuals,
+in
+order
+of
+their
+first
+name,
+for
+their
+input
+on
+the
+specification:
+Adrian
+Walker,
+</ins>
+Alexandre
+Passant,
+<ins class="diff-new">Andy
+Seaborne,
+Ben
+Adida,
+Blaine
+Cook,
+Bradley
+Allen,
+Brian
+Peterson,
+Bryan
+Thompson,
+Conal
+Tuohy,
+Dan
+Brickley,
+</ins>
+Danny
+Ayers,
+<del class="diff-old">Ted
+Thibodeau
+Jr.,
+Olivier
+Grisel,
+Josh
+Mandel,
+Eric
+Prud'hommeaux,
+</del>
+<ins class="diff-chg">Daniel
+Leja,
+Dave
+Reynolds,
+David
+I.
+Lehn,
+</ins>
+David
+Wood,
+<ins class="diff-new">Dean
+Landolt,
+Ed
+Summers,
+elf
+Pavlik,
+Eric
+Prud'hommeaux,
+Fabian
+Christ,
+Jon
+A.
+Frost,
+Gavin
+Carothers,
+Glenn
+McDonald,
+</ins>
+Guus
+Schreiber,
+<ins class="diff-new">Henri
+Bergius,
+Jose
+María
+Alvarez
+Rodríguez,
+Ivan
+Herman,
+Jack
+Moffitt,
+Josh
+Mandel,
+KANZAKI
+Masahide,
+Kingsley
+Idehen,
+Kuno
+Woudt,
+Larry
+Garfield,
+Mark
+Baker,
+Mark
+MacGillivray,
+Marko
+Rodriguez,
+Melvin
+Carvalho,
+Nathan
+Rixham,
+Olivier
+Grisel,
+Paolo
+Ciccarese,
+</ins>
+Pat
+Hayes,
+<ins class="diff-new">Patrick
+Logan,
+Pelle
+Braendgaard,
+Peter
+Williams,
+Pierre-Antoine
+Champin,
+Richard
+Cyganiak,
+Roy
+T.
+Fielding,
+</ins>
+Sandro
+Hawke,
+<ins class="diff-new">Srecko
+Joksimovic,
+Stephane
+Fellah,
+Steve
+Harris,
+Ted
+Thibodeau
+Jr.,
+Thomas
+Steiner,
+Tim
+Bray,
+Tom
+Morris,
+Tristan
+King,
+Sergio
+Fernández,
+Werner
+Wilms,
+</ins>
+and
+<del class="diff-old">Richard
+Cyganiak
+for
+their
+input
+on
+the
+specification.
+</del>
+<ins class="diff-chg">William
+Waites
+</ins>
+</p>
+</section>
+<section id="references" class="appendix" typeof="bibo:Chapter" resource="#references" rel="bibo:chapter">
+<h2>
+<span class="secno">
+G.
+</span>
+References
+</h2>
+<section id="normative-references" typeof="bibo:Chapter" resource="#normative-references" rel="bibo:chapter">
+<h3>
+<span class="secno">
+G.1
+</span>
+Normative
+references
+</h3>
+<dl class="bibliography" about="">
+<dt id="bib-BCP47">
+[BCP47]
+</dt>
+<dd rel="dcterms:requires">
+A.
+Phillips;
+M.
+Davis.
+<a href="http://tools.ietf.org/html/bcp47">
+<cite>
+Tags
+for
+Identifying
+Languages
+</cite>
+</a>
+September
+2009.
+IETF
+Best
+Current
+Practice.
+URL:
+<a href="http://tools.ietf.org/html/bcp47">
+http://tools.ietf.org/html/bcp47
+</a>
+</dd>
+<dt id="bib-RDF-CONCEPTS">
+[RDF-CONCEPTS]
+</dt>
+<dd rel="dcterms:requires">
+<ins class="diff-chg">Richard
+Cyganiak,
+David
+Wood,
+Editors.
+</ins>
+<cite>
+<a href="http://www.w3.org/TR/2013/WD-rdf11-concepts-20130115/">
+RDF
+1.1
+Concepts
+and
+Abstract
+<del class="diff-old">Syntax
+</del>
+<ins class="diff-chg">Syntax.
+</ins>
+</a>
+</cite>
+<del class="diff-old">Richard
+Cyganiak,
+David
+Wood,
+Editors.
+World
+Wide
+Web
+Consortium
+</del>
+<ins class="diff-chg">15
+January
+2013.
+W3C
+Working
+Draft
+</ins>
+(work
+in
+progress).
+<del class="diff-old">30
+May
+2012.
+Editor's
+Draft.
+This
+edition
+of
+the
+JSON-LD
+Syntax
+specification
+is
+http://www.w3.org/TR/2011/WD-rdf11-concepts-20110830/.
+The
+latest
+edition
+of
+the
+JSON-LD
+Syntax
+</del>
+<ins class="diff-chg">URL:
+</ins><a href="http://www.w3.org/TR/2013/WD-rdf11-concepts-20130115/"><ins class="diff-chg">
+http://www.w3.org/TR/2013/WD-rdf11-concepts-20130115/
+</ins>
+</a>
+<del class="diff-old">is
+available
+at
+http://www.w3.org/TR/rdf11-concepts/
+</del>
+</dd>
+<dt id="bib-RFC2119">
+[RFC2119]
+</dt>
+<dd rel="dcterms:requires">
+S.
+Bradner.
+<a href="http://www.ietf.org/rfc/rfc2119.txt">
+<cite>
+Key
+words
+for
+use
+in
+RFCs
+to
+Indicate
+Requirement
+Levels.
+</cite>
+</a>
+March
+1997.
+Internet
+RFC
+2119.
+URL:
+<a href="http://www.ietf.org/rfc/rfc2119.txt">
+http://www.ietf.org/rfc/rfc2119.txt
+</a>
+</dd>
+<dt id="bib-RFC3987">
+[RFC3987]
+</dt>
+<dd rel="dcterms:requires">
+M.
+Dürst;
+M.
+Suignard.
+<a href="http://www.ietf.org/rfc/rfc3987.txt">
+<cite>
+Internationalized
+Resource
+Identifiers
+(IRIs).
+</cite>
+</a>
+January
+2005.
+Internet
+RFC
+3987.
+URL:
+<a href="http://www.ietf.org/rfc/rfc3987.txt">
+http://www.ietf.org/rfc/rfc3987.txt
+</a>
+</dd>
+<dt id="bib-RFC4627">
+[RFC4627]
+</dt>
+<dd rel="dcterms:requires">
+D.
+Crockford.
+<a href="http://www.ietf.org/rfc/rfc4627.txt">
+<cite>
+The
+application/json
+Media
+Type
+for
+JavaScript
+Object
+Notation
+(JSON)
+</cite>
+</a>
+July
+2006.
+Internet
+RFC
+4627.
+URL:
+<a href="http://www.ietf.org/rfc/rfc4627.txt">
+http://www.ietf.org/rfc/rfc4627.txt
+</a>
+</dd>
+<dt id="bib-RFC5988">
+[RFC5988]
+</dt>
+<dd rel="dcterms:requires">
+<ins class="diff-chg">M.
+Nottingham,
+Editor.
+</ins>
+<cite>
+<a href="http://tools.ietf.org/rfc/rfc5988">
+Web
+Linking
+</a>.
+</cite>
+<del class="diff-old">M.
+Nottingham.
+Editor.
+</del>
+October
+2010.
+<del class="diff-old">IETF
+Standard.
+</del>
+<ins class="diff-chg">Internet
+RFC
+5988.
+</ins>
+URL:
+<a href="http://tools.ietf.org/rfc/rfc5988.txt">
+http://tools.ietf.org/rfc/rfc5988.txt
+</a>
+</dd>
+</dl>
+</section>
+<section id="informative-references" typeof="bibo:Chapter" resource="#informative-references" rel="bibo:chapter">
+<h3>
+<span class="secno">
+G.2
+</span>
+Informative
+references
+</h3>
+<dl class="bibliography" about="">
+<dt id="bib-JSON-LD-API">
+[JSON-LD-API]
+</dt>
+<dd rel="dcterms:references">
+<ins class="diff-chg">Markus
+Lanthaler,
+Gregg
+Kellogg,
+Manu
+Sporny,
+Editors.
+</ins>
+<cite>
+<del class="diff-old">The
+</del>
+<a href="http://json-ld.org/spec/latest/json-ld-api/">
+JSON-LD
+<del class="diff-old">API
+</del>
+1.0
+<ins class="diff-new">Processing
+Algorithms
+and
+API
+</ins></a>.</cite><ins class="diff-new">
+W3C
+Editor's
+Draft
+(work
+in
+progress).
+URL:
+</ins><a href="http://json-ld.org/spec/latest/json-ld-api/"><ins class="diff-new">
+http://json-ld.org/spec/latest/json-ld-api/
+</ins>
+</a>
+</dd>
+<dt id="bib-MICRODATA">
+<ins class="diff-new">[MICRODATA]
+</ins></dt><dd rel="dcterms:references"><ins class="diff-new">
+Ian
+Hickson,
+Editor.
+</ins><cite>
+<a href="http://www.w3.org/TR/2012/WD-microdata-20120329/">
+<ins class="diff-new">HTML
+Microdata
+</ins></a>.
+</cite>
+<del class="diff-old">Manu
+Sporny,
+Gregg
+Kellogg,
+Dave
+Longley,
+Markus
+Lanthaler,
+Editors.
+World
+Wide
+Web
+Consortium
+</del>
+<ins class="diff-chg">29
+March
+2012.
+W3C
+Working
+Draft
+</ins>
+(work
+in
+progress).
+<del class="diff-old">24
+May
+2012.
+Editor's
+Draft.
+This
+edition
+of
+the
+JSON-LD
+Syntax
+specification
+is
+http://json-ld.org/spec/ED/json-ld-api/20120524/.
+The
+latest
+edition
+of
+the
+JSON-LD
+Syntax
+</del>
+<ins class="diff-chg">URL:
+</ins><a href="http://www.w3.org/TR/2012/WD-microdata-20120329/"><ins class="diff-chg">
+http://www.w3.org/TR/2012/WD-microdata-20120329/
+</ins></a></dd><dt id="bib-MICROFORMATS"><ins class="diff-chg">
+[MICROFORMATS]
+</ins></dt><dd rel="dcterms:references"><a href="http://microformats.org"><cite><ins class="diff-chg">
+Microformats
+</ins></cite></a>.<ins class="diff-chg">
+URL:
+</ins><a href="http://microformats.org"><ins class="diff-chg">
+http://microformats.org
+</ins>
+</a>
+<del class="diff-old">is
+available
+at
+http://json-ld.org/spec/latest/json-ld-api/
+</del>
+</dd>
+<dt id="bib-RDF-SCHEMA">
+[RDF-SCHEMA]
+</dt>
+<dd rel="dcterms:references">
+Dan
+Brickley;
+Ramanathan
+V.
+Guha.
+<a href="http://www.w3.org/TR/2004/REC-rdf-schema-20040210">
+<cite>
+RDF
+Vocabulary
+Description
+Language
+1.0:
+RDF
+Schema.
+</cite>
+</a>
+10
+February
+2004.
+W3C
+Recommendation.
+URL:
+<a href="http://www.w3.org/TR/2004/REC-rdf-schema-20040210">
+http://www.w3.org/TR/2004/REC-rdf-schema-20040210
+</a>
+</dd>
+<dt id="bib-RDFA-CORE">
+[RDFA-CORE]
+</dt>
+<dd rel="dcterms:references">
+Shane
+McCarron;
+et
+al.
+<a href="http://www.w3.org/TR/2012/REC-rdfa-core-20120607/">
+<cite>
+RDFa
+Core
+1.1:
+Syntax
+and
+processing
+rules
+for
+embedding
+RDF
+through
+attributes.
+</cite>
+</a>
+7
+June
+2012.
+W3C
+Recommendation.
+URL:
+<a href="http://www.w3.org/TR/2012/REC-rdfa-core-20120607/">
+http://www.w3.org/TR/2012/REC-rdfa-core-20120607/
+</a>
+</dd>
+<dt id="bib-TURTLE-TR">
+[TURTLE-TR]
+</dt>
+<dd rel="dcterms:references">
+Eric
+Prud'hommeaux,
+Gavin
+<del class="diff-old">Carothers.
+</del>
+<ins class="diff-chg">Carothers,
+Editors.
+</ins>
+<cite>
+<a href="http://www.w3.org/TR/2011/WD-turtle-20110809/">
+Turtle:
+Terse
+RDF
+Triple
+Language.
+</a>
+</cite>
+09
+August
+2011.
+W3C
+Working
+<del class="diff-old">Draft.
+</del>
+<ins class="diff-chg">Draft
+(work
+in
+progress).
+</ins>
+URL:
+<a href="http://www.w3.org/TR/2011/WD-turtle-20110809/">
+http://www.w3.org/TR/2011/WD-turtle-20110809/
+</a>
+</dd>
+</dl>
+</section>
+</section>
+</body>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/spec/FCGS/json-ld-syntax/20130202/index.html Sat Feb 02 14:43:29 2013 -0500
@@ -0,0 +1,3234 @@
+<!DOCTYPE html>
+<html lang="en" dir="ltr" prefix="bibo: http://purl.org/ontology/bibo/" typeof="bibo:Document">
+<head>
+<title>JSON-LD 1.0</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
+<!--
+ === NOTA BENE ===
+ For the three scripts below, if your spec resides on dev.w3 you can check them
+ out in the same tree and use relative links so that they'll work offline,
+ -->
+
+
+
+<style type="text/css">
+ .diff { font-weight:bold; color:#0a3; }
+ table, thead, tr, td { padding: 5px; border-width: 1px; border-spacing: 0px; border-style: solid; border-collapse: collapse;}
+</style>
+<style>/*****************************************************************
+ * ReSpec 3 CSS
+ * Robin Berjon - http://berjon.com/
+ *****************************************************************/
+
+/* --- INLINES --- */
+em.rfc2119 {
+ text-transform: lowercase;
+ font-variant: small-caps;
+ font-style: normal;
+ color: #900;
+}
+
+h1 acronym, h2 acronym, h3 acronym, h4 acronym, h5 acronym, h6 acronym, a acronym,
+h1 abbr, h2 abbr, h3 abbr, h4 abbr, h5 abbr, h6 abbr, a abbr {
+ border: none;
+}
+
+dfn {
+ font-weight: bold;
+}
+
+a.internalDFN {
+ color: inherit;
+ border-bottom: 1px solid #99c;
+ text-decoration: none;
+}
+
+a.externalDFN {
+ color: inherit;
+ border-bottom: 1px dotted #ccc;
+ text-decoration: none;
+}
+
+a.bibref {
+ text-decoration: none;
+}
+
+cite .bibref {
+ font-style: normal;
+}
+
+code {
+ color: #ff4500;
+}
+
+
+/* --- --- */
+ol.algorithm { counter-reset:numsection; list-style-type: none; }
+ol.algorithm li { margin: 0.5em 0; }
+ol.algorithm li:before { font-weight: bold; counter-increment: numsection; content: counters(numsection, ".") ") "; }
+
+/* --- TOC --- */
+.toc a, .tof a {
+ text-decoration: none;
+}
+
+a .secno, a .figno {
+ color: #000;
+}
+
+ul.tof, ol.tof {
+ list-style: none outside none;
+}
+
+.caption {
+ margin-top: 0.5em;
+ font-style: italic;
+}
+
+/* --- TABLE --- */
+table.simple {
+ border-spacing: 0;
+ border-collapse: collapse;
+ border-bottom: 3px solid #005a9c;
+}
+
+.simple th {
+ background: #005a9c;
+ color: #fff;
+ padding: 3px 5px;
+ text-align: left;
+}
+
+.simple th[scope="row"] {
+ background: inherit;
+ color: inherit;
+ border-top: 1px solid #ddd;
+}
+
+.simple td {
+ padding: 3px 10px;
+ border-top: 1px solid #ddd;
+}
+
+.simple tr:nth-child(even) {
+ background: #f0f6ff;
+}
+
+/* --- DL --- */
+.section dd > p:first-child {
+ margin-top: 0;
+}
+
+.section dd > p:last-child {
+ margin-bottom: 0;
+}
+
+.section dd {
+ margin-bottom: 1em;
+}
+
+.section dl.attrs dd, .section dl.eldef dd {
+ margin-bottom: 0;
+}
+</style><style>/* --- EXAMPLES --- */
+div.example-title {
+ min-width: 7.5em;
+ color: #b9ab2d;
+}
+div.example-title span {
+ text-transform: uppercase;
+}
+aside.example, div.example, div.illegal-example {
+ padding: 0.5em;
+ margin: 1em 0;
+ position: relative;
+ clear: both;
+}
+div.illegal-example { color: red }
+div.illegal-example p { color: black }
+aside.example, div.example {
+ padding: .5em;
+ border-left-width: .5em;
+ border-left-style: solid;
+ border-color: #e0cb52;
+ background: #fcfaee;
+}
+
+aside.example div.example {
+ border-left-width: .1em;
+ border-color: #999;
+ background: #fff;
+}
+aside.example div.example div.example-title {
+ color: #999;
+}
+</style><style>/* --- ISSUES/NOTES --- */
+div.issue-title, div.note-title {
+ padding-right: 1em;
+ min-width: 7.5em;
+ color: #b9ab2d;
+}
+div.issue-title { color: #e05252; }
+div.note-title { color: #52e052; }
+div.issue-title span, div.note-title span {
+ text-transform: uppercase;
+}
+div.note, div.issue {
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+.note > p:first-child, .issue > p:first-child { margin-top: 0 }
+.issue, .note {
+ padding: .5em;
+ border-left-width: .5em;
+ border-left-style: solid;
+}
+div.issue, div.note {
+ padding: 0.5em;
+ margin: 1em 0;
+ position: relative;
+ clear: both;
+}
+span.note, span.issue { padding: .1em .5em .15em; }
+
+.issue {
+ border-color: #e05252;
+ background: #fbe9e9;
+}
+.note {
+ border-color: #52e052;
+ background: #e9fbe9;
+}
+
+
+</style><link rel="stylesheet" href="http://www.w3.org/community/src/css/spec/cg-final.css"><!--[if lt IE 9]><script src='http://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]--></head>
+
+<body><div class="head">
+ <p>
+ <a href="http://www.w3.org/"><img width="72" height="48" src="http://www.w3.org/Icons/w3c_home" alt="W3C"></a>
+ </p>
+ <h1 class="title" id="title">JSON-LD 1.0</h1>
+ <h2 id="subtitle">A JSON-based Serialization for Linked Data</h2>
+ <h2 id="final-community-group-specification-02-february-2013">Final Community Group Specification 02 February 2013</h2>
+ <dl>
+
+
+
+ <dt>Latest editor's draft:</dt>
+ <dd><a href="http://dvcs.w3.org/hg/json-ld/raw-file/default/spec/latest/json-ld-syntax/index.html">http://dvcs.w3.org/hg/json-ld/raw-file/default/spec/latest/json-ld-syntax/index.html</a></dd>
+
+
+
+
+
+ <dt>Editors:</dt>
+ <dd rel="bibo:editor" inlist=""><span typeof="foaf:Person"><a rel="foaf:homepage" property="foaf:name" content="Manu Sporny" href="http://manu.sporny.org/">Manu Sporny</a>, <a rel="foaf:workplaceHomepage" href="http://digitalbazaar.com/">Digital Bazaar</a></span>
+</dd>
+<dd rel="bibo:editor" inlist=""><span typeof="foaf:Person"><a rel="foaf:homepage" property="foaf:name" content="Gregg Kellogg" href="http://greggkellogg.net/">Gregg Kellogg</a>, <a rel="foaf:workplaceHomepage" href="http://kellogg-assoc.com/">Kellogg Associates</a></span>
+</dd>
+<dd rel="bibo:editor" inlist=""><span typeof="foaf:Person"><a rel="foaf:homepage" property="foaf:name" content="Markus Lanthaler" href="http://www.markus-lanthaler.com/">Markus Lanthaler</a>, <a rel="foaf:workplaceHomepage" href="http://www.tugraz.at/">Graz University of Technology</a></span>
+</dd>
+
+
+ <dt>Authors:</dt>
+ <dd rel="dcterms:contributor"><span typeof="foaf:Person"><a rel="foaf:homepage" property="foaf:name" content="Manu Sporny" href="http://digitalbazaar.com/">Manu Sporny</a>, <a rel="foaf:workplaceHomepage" href="http://digitalbazaar.com/">Digital Bazaar</a></span>
+</dd>
+<dd rel="dcterms:contributor"><span typeof="foaf:Person"><a rel="foaf:homepage" property="foaf:name" content="Dave Longley" href="http://digitalbazaar.com/">Dave Longley</a>, <a rel="foaf:workplaceHomepage" href="http://digitalbazaar.com/">Digital Bazaar</a></span>
+</dd>
+<dd rel="dcterms:contributor"><span typeof="foaf:Person"><a rel="foaf:homepage" property="foaf:name" content="Gregg Kellogg" href="http://greggkellogg.net/">Gregg Kellogg</a>, <a rel="foaf:workplaceHomepage" href="http://kellogg-assoc.com/">Kellogg Associates</a></span>
+</dd>
+<dd rel="dcterms:contributor"><span typeof="foaf:Person"><a rel="foaf:homepage" property="foaf:name" content="Markus Lanthaler" href="http://www.markus-lanthaler.com/">Markus Lanthaler</a>, <a rel="foaf:workplaceHomepage" href="http://www.tugraz.at/">Graz University of Technology</a></span>
+</dd>
+<dd rel="dcterms:contributor"><span typeof="foaf:Person"><a rel="foaf:homepage" property="foaf:name" content="Niklas Lindström" href="http://neverspace.net/">Niklas Lindström</a></span>
+</dd>
+
+
+ </dl>
+
+ <p>
+
+ This document is also available in this non-normative format:
+
+ <a href="diff-20121225.html">diff to previous version</a>
+ </p>
+
+ <p class="copyright">
+ <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> ©
+ 2010-2013
+ the Contributors to the JSON-LD 1.0 Specification, published by the
+ <a href="http://www.w3.org/2011/rdf-wg/">RDF Working Group</a> under the
+
+ <a href="https://www.w3.org/community/about/agreements/fsa/">W3C Community Final Specification Agreement (FSA)</a>.
+ A human-readable <a href="http://www.w3.org/community/about/agreements/fsa-deed/">summary</a> is available.
+
+ </p>
+ <hr>
+</div>
+<section id="abstract" class="introductory" property="dcterms:abstract" datatype="" typeof="bibo:Chapter" resource="#abstract" rel="bibo:chapter"><h2>Abstract</h2>
+ <p>JSON has proven to be a highly useful object serialization and messaging format.
+ In an attempt to harmonize the representation of <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a>
+ in JSON, this specification outlines a common JSON representation format for
+ expressing directed graphs; mixing both Linked Data and non-Linked Data in
+ a single document.</p>
+</section><section id="sotd" class="introductory" typeof="bibo:Chapter" resource="#sotd" rel="bibo:chapter"><h2>Status of This Document</h2>
+ <p>
+ This specification was published by the <a href="http://www.w3.org/2011/rdf-wg/">RDF Working Group</a>.
+ It is not a W3C Standard nor is it on the W3C Standards Track.
+
+ Please note that under the
+ <a href="https://www.w3.org/community/about/agreements/final/">W3C Community Final Specification Agreement (FSA)</a>
+ other conditions apply.
+
+ Learn more about
+ <a href="http://www.w3.org/community/">W3C Community and Business Groups</a>.
+ </p>
+
+ <p>This document has been under development for over 25 months in the
+ JSON for Linking Data Community Group. The document has recently been
+ transferred to the RDF Working Group for review, improvement, and publication.
+ The specification has undergone significant development, review, and changes
+ during the course of the last 25 months.</p>
+
+ <p>There are several independent
+ <a href="http://json-ld.org/#impl">interoperable implementations</a> of
+ this specification. There is a
+ <a href="https://github.com/json-ld/json-ld.org/tree/master/test-suite">fairly complete test suite</a>
+ and a <a href="http://json-ld.org/playground/">live JSON-LD editor</a>
+ that is capable of demonstrating the features described in
+ this document. While development on implementations, the test suite
+ and the live editor will continue, they are believed to be mature enough
+ to be integrated into a non-production system at this point in time with
+ the expectation that they could be used in a production system within the
+ next year.</p>
+
+ <p>There are a number of ways that one may participate in the development of
+ this specification:</p>
+
+ <ul>
+ <li>If you want to make sure that your feedback is formally addressed by
+ the RDF Working Group, you should send it to public-rdf-comments:
+ <a href="http://lists.w3.org/Archives/Public/public-rdf-comments/">public-rdf-comments@w3.org</a></li>
+
+ <li>Ad-hoc technical discussion primarily occurs on the public community mailing list:
+ <a href="http://lists.w3.org/Archives/Public/public-linked-json/">public-linked-json@w3.org</a></li>
+
+ <li><a href="http://json-ld.org/minutes/">Public JSON-LD Community Group teleconferences</a>
+ are held on Tuesdays at 1500UTC every week.</li>
+
+ <li>RDF Working Group teleconferences are held on Wednesdays at 1500UTC
+ every week. Participation is limited to RDF Working Group members.</li>
+
+ <li>Specification bugs and issues should be reported in the
+ <a href="https://github.com/json-ld/json-ld.org/issues">issue tracker</a>
+ if you do not want to send an e-mail to the public-rdf-comments mailing
+ list.</li>
+
+ <li><a href="https://github.com/json-ld/json-ld.org/tree/master/spec">Source code</a>
+ for the specification can be found on Github.</li>
+
+ <li>The <a href="http://webchat.freenode.net/?channels=json-ld">#json-ld</a>
+ IRC channel is available for real-time discussion on irc.freenode.net.</li>
+ </ul>
+
+</section><section id="toc"><h2 class="introductory">Table of Contents</h2><ul class="toc"><li class="tocline"><a href="#introduction" class="tocxref"><span class="secno">1. </span>Introduction</a><ul class="toc"><li class="tocline"><a href="#how-to-read-this-document" class="tocxref"><span class="secno">1.1 </span>How to Read this Document</a></li></ul></li><li class="tocline"><a href="#design-goals-and-rationale" class="tocxref"><span class="secno">2. </span>Design Goals and Rationale</a></li><li class="tocline"><a href="#terminology" class="tocxref"><span class="secno">3. </span>Terminology</a><ul class="toc"><li class="tocline"><a href="#general-terminology" class="tocxref"><span class="secno">3.1 </span>General Terminology</a></li><li class="tocline"><a href="#syntax-tokens-and-keywords" class="tocxref"><span class="secno">3.2 </span>Syntax Tokens and Keywords</a></li></ul></li><li class="tocline"><a href="#conformance" class="tocxref"><span class="secno">4. </span>Conformance</a></li><li class="tocline"><a href="#basic-concepts" class="tocxref"><span class="secno">5. </span>Basic Concepts</a><ul class="toc"><li class="tocline"><a href="#the-context" class="tocxref"><span class="secno">5.1 </span>The Context</a></li><li class="tocline"><a href="#iris" class="tocxref"><span class="secno">5.2 </span>IRIs</a></li><li class="tocline"><a href="#node-identifiers" class="tocxref"><span class="secno">5.3 </span>Node Identifiers</a></li><li class="tocline"><a href="#specifying-the-type" class="tocxref"><span class="secno">5.4 </span>Specifying the Type</a></li></ul></li><li class="tocline"><a href="#advanced-concepts" class="tocxref"><span class="secno">6. </span>Advanced Concepts</a><ul class="toc"><li class="tocline"><a href="#compact-iris" class="tocxref"><span class="secno">6.1 </span>Compact IRIs</a></li><li class="tocline"><a href="#typed-values" class="tocxref"><span class="secno">6.2 </span>Typed Values</a></li><li class="tocline"><a href="#type-coercion" class="tocxref"><span class="secno">6.3 </span>Type Coercion</a></li><li class="tocline"><a href="#advanced-context-usage" class="tocxref"><span class="secno">6.4 </span>Advanced Context Usage</a><ul class="toc"><li class="tocline"><a href="#interpreting-json-as-json-ld" class="tocxref"><span class="secno">6.4.1 </span>Interpreting JSON as JSON-LD</a></li></ul></li><li class="tocline"><a href="#string-internationalization" class="tocxref"><span class="secno">6.5 </span>String Internationalization</a></li><li class="tocline"><a href="#overriding-vocab" class="tocxref"><span class="secno">6.6 </span>Overriding @vocab</a></li><li class="tocline"><a href="#property-generators" class="tocxref"><span class="secno">6.7 </span>Property Generators</a></li><li class="tocline"><a href="#iri-expansion-within-a-context" class="tocxref"><span class="secno">6.8 </span><abbr title="Internationalized Resource Identifier">IRI</abbr> Expansion Within a Context</a></li><li class="tocline"><a href="#sets-and-lists" class="tocxref"><span class="secno">6.9 </span>Sets and Lists</a></li><li class="tocline"><a href="#embedding" class="tocxref"><span class="secno">6.10 </span>Embedding</a></li><li class="tocline"><a href="#named-graphs" class="tocxref"><span class="secno">6.11 </span>Named Graphs</a></li><li class="tocline"><a href="#identifying-blank-nodes" class="tocxref"><span class="secno">6.12 </span>Identifying Blank Nodes</a></li><li class="tocline"><a href="#aliasing-keywords" class="tocxref"><span class="secno">6.13 </span>Aliasing Keywords</a></li><li class="tocline"><a href="#expanded-document-form" class="tocxref"><span class="secno">6.14 </span>Expanded Document Form</a></li><li class="tocline"><a href="#compact-document-form" class="tocxref"><span class="secno">6.15 </span>Compact Document Form</a></li><li class="tocline"><a href="#data-indexing" class="tocxref"><span class="secno">6.16 </span>Data Indexing</a></li></ul></li><li class="tocline"><a href="#data-model" class="tocxref"><span class="secno">A. </span>Data Model</a></li><li class="tocline"><a href="#json-ld-grammar" class="tocxref"><span class="secno">B. </span>JSON-LD Grammar</a><ul class="toc"><li class="tocline"><a href="#grammar-node-object" class="tocxref"><span class="secno">B.1 </span>Node Object</a></li><li class="tocline"><a href="#grammar-term-reference" class="tocxref"><span class="secno">B.2 </span>Term</a></li><li class="tocline"><a href="#grammar-language-map" class="tocxref"><span class="secno">B.3 </span>Language Map</a></li><li class="tocline"><a href="#grammar-index-map" class="tocxref"><span class="secno">B.4 </span>Index Map</a></li><li class="tocline"><a href="#grammar-expanded-values" class="tocxref"><span class="secno">B.5 </span>Expanded Values</a></li><li class="tocline"><a href="#grammar-set-list" class="tocxref"><span class="secno">B.6 </span>List and Set Values</a></li><li class="tocline"><a href="#grammar-context" class="tocxref"><span class="secno">B.7 </span>Context Definition</a></li></ul></li><li class="tocline"><a href="#relationship-to-rdf" class="tocxref"><span class="secno">C. </span>Relationship to RDF</a></li><li class="tocline"><a href="#relationship-to-other-linked-data-formats" class="tocxref"><span class="secno">D. </span>Relationship to Other Linked Data Formats</a><ul class="toc"><li class="tocline"><a href="#turtle" class="tocxref"><span class="secno">D.1 </span>Turtle</a><ul class="toc"><li class="tocline"><a href="#prefix-definitions" class="tocxref"><span class="secno">D.1.1 </span>Prefix definitions</a></li><li class="tocline"><a href="#embedding-1" class="tocxref"><span class="secno">D.1.2 </span>Embedding</a></li><li class="tocline"><a href="#lists" class="tocxref"><span class="secno">D.1.3 </span>Lists</a></li></ul></li><li class="tocline"><a href="#rdfa" class="tocxref"><span class="secno">D.2 </span>RDFa</a></li><li class="tocline"><a href="#microformats" class="tocxref"><span class="secno">D.3 </span>Microformats</a></li><li class="tocline"><a href="#microdata" class="tocxref"><span class="secno">D.4 </span>Microdata</a></li></ul></li><li class="tocline"><a href="#iana-considerations" class="tocxref"><span class="secno">E. </span>IANA Considerations</a></li><li class="tocline"><a href="#acknowledgements" class="tocxref"><span class="secno">F. </span>Acknowledgements</a></li><li class="tocline"><a href="#references" class="tocxref"><span class="secno">G. </span>References</a><ul class="toc"><li class="tocline"><a href="#normative-references" class="tocxref"><span class="secno">G.1 </span>Normative references</a></li><li class="tocline"><a href="#informative-references" class="tocxref"><span class="secno">G.2 </span>Informative references</a></li></ul></li></ul></section>
+
+
+
+<section class="informative" id="introduction">
+ <!--OddPage--><h2><span class="secno">1. </span>Introduction</h2><p><em>This section is non-normative.</em></p>
+
+ <p><dfn title="linked_data" id="dfn-linked_data">Linked Data</dfn> is a technique for creating a network
+ of inter-connected data across different documents and Web sites. In general,
+ Linked Data has four properties: 1) it uses <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>
+ to name things; 2) it uses HTTP <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>
+ for those names; 3) the name <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>, when dereferenced,
+ provide more information about the name; and 4) the data expresses links
+ to data on other Web sites. These properties allow data published on the Web
+ to work much like Web pages do today. One can start at one piece of Linked Data,
+ and follow the links to other pieces of data that are hosted on different
+ sites across the Web.</p>
+
+ <p>JSON-LD is designed as a lightweight syntax to express <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a> in
+ JSON [<cite><a class="bibref" href="#bib-RFC4627">RFC4627</a></cite>]. It is primarily intended to be a way to use Linked Data in
+ Web-based programming environments. It is also useful when building interoperable
+ Web services and when storing Linked Data in JSON-based storage engines. Since
+ JSON-LD is 100% compatible with JSON the large number of JSON parsers and libraries
+ available today can be reused. Additionally to all the features JSON provides,
+ JSON-LD introduces:</p>
+
+ <ul>
+ <li>a universal identifier mechanism for <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON objects</a>
+ via the use of <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>,</li>
+ <li>a way to disambiguate the keys used between multiple JSON documents
+ by mapping them to <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> via a <a class="tref internalDFN" title="context" href="#dfn-context">context</a>,</li>
+ <li>a mechanism in which a value in a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> may refer
+ to a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> on a different site on the Web,</li>
+ <li>the ability to express the language associated with a <a class="tref internalDFN" title="string" href="#dfn-string">string</a></li>
+ <li>a way to associate datatypes with values such as dates, times, weights,
+ and distances,</li>
+ <li>and a facility to express one or more directed graphs, such as a social
+ network, in a single document.</li>
+ </ul>
+
+ <p>Developers that require any of the facilities listed above or need to serialize
+ an RDF graph or dataset [<cite><a class="bibref" href="#bib-RDF-CONCEPTS">RDF-CONCEPTS</a></cite>] in a JSON-based syntax will find
+ JSON-LD of interest. The syntax is designed to not disturb already deployed
+ systems running on JSON, but provide a smooth upgrade path from JSON to
+ JSON-LD.</p>
+
+ <section id="how-to-read-this-document">
+ <h3><span class="secno">1.1 </span>How to Read this Document</h3><p><em>This section is non-normative.</em></p>
+
+ <p>This document is a detailed specification for a serialization of Linked
+ Data in JSON. The document is primarily intended for the following audiences:</p>
+
+ <ul>
+ <li>Software developers that want to encode Linked Data in a variety of
+ programming languages that can use JSON.</li>
+ <li>Software developers that want to understand the design decisions and
+ language syntax for JSON-LD.</li>
+ <li>Software developers that want to implement processors and APIs for
+ JSON-LD.</li>
+ </ul>
+
+ <p>This specification does not describe the programming interfaces for the
+ JSON-LD Syntax. The specification that describes the programming interfaces
+ for JSON-LD documents is the JSON-LD Application Programming Interface
+ [<cite><a class="bibref" href="#bib-JSON-LD-API">JSON-LD-API</a></cite>].</p>
+
+ <p>To understand the basics in this specification you must first be familiar with
+ JSON, which is detailed in [<cite><a class="bibref" href="#bib-RFC4627">RFC4627</a></cite>].</p>
+ </section>
+</section>
+
+<section class="informative" id="design-goals-and-rationale">
+ <!--OddPage--><h2><span class="secno">2. </span>Design Goals and Rationale</h2><p><em>This section is non-normative.</em></p>
+
+ <p>A number of design goals were established before the creation of this
+ markup language:</p>
+
+ <dl>
+ <dt>Simplicity</dt>
+ <dd>No extra processors or software libraries should be necessary to use JSON-LD
+ in its most basic form. The language will provide developers with a very easy
+ learning curve. Developers only need to know JSON and two
+ <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a> (<code>@context</code>
+ and <code>@id</code>) to use the basic functionality in JSON-LD.</dd>
+ <dt>Compatibility</dt>
+ <dd>The JSON-LD markup must be 100% compatible with JSON. This ensures that
+ all of the standard JSON libraries work seamlessly with JSON-LD documents.</dd>
+ <dt>Expressiveness</dt>
+ <dd>The syntax must be able to express directed graphs, which have been proven
+ to be able to express almost every real world data model.</dd>
+ <dt>Terseness</dt>
+ <dd>The JSON-LD syntax must be very terse and human readable, requiring as
+ little effort as possible from the developer.</dd>
+ <dt>Zero Edits, most of the time</dt>
+ <dd>JSON-LD must make the transition to JSON-LD as simple as possible. In many cases,
+ zero edits to the JSON document and the addition of one line to the HTTP response
+ should suffice (see <a href="#referencing-contexts-from-json-documents"></a>).
+ This allows organizations that have
+ already deployed large JSON-based infrastructure to use JSON-LD's features
+ in a way that is not disruptive to their day-to-day operations and is
+ transparent to their current customers. However, there are times where
+ mapping JSON to a graph representation is more complex than a simple one-line
+ change. In these instances, rather than extending JSON-LD to support an
+ esoteric use case, we chose not to support the use case. While Zero Edits is
+ a design goal, it is not always possible without adding great complexity
+ to the language. We should focus on simplicity when possible.</dd>
+ </dl>
+</section>
+
+<section class="normative" id="terminology">
+<!--OddPage--><h2><span class="secno">3. </span>Terminology</h2>
+
+ <section id="general-terminology">
+ <h3><span class="secno">3.1 </span>General Terminology</h3>
+
+ <p>This document uses the following terms as defined in JSON [<cite><a class="bibref" href="#bib-RFC4627">RFC4627</a></cite>]. Refer
+ to the <em>JSON Grammar</em> section in [<cite><a class="bibref" href="#bib-RFC4627">RFC4627</a></cite>] for formal definitions.</p>
+
+ <dl>
+ <dt><dfn title="json_object" id="dfn-json_object">JSON object</dfn></dt><dd>
+ An object structure is represented as a pair of curly brackets
+ surrounding zero or more key-value pairs. A key is a
+ <a class="tref internalDFN" title="string" href="#dfn-string">string</a>. A single colon comes after each key, separating the
+ key from the value. A single comma separates a value from a following
+ key.
+ </dd>
+ <dt><dfn title="array" id="dfn-array">array</dfn></dt>
+ <dd>
+ An array structure is represented as square brackets surrounding zero
+ or more values. Values are separated by commas.
+ In JSON, an array is an <em>ordered</em> sequence of zero or more values.
+ While JSON-LD uses the same array representation as JSON,
+ the collection is <em>unordered</em> by default. While order is
+ preserved in regular JSON arrays, it is not in regular JSON-LD arrays
+ unless specific markup is provided (see <a href="#sets-and-lists" class="sec-ref"><span class="secno">6.9</span> <span class="sec-title">Sets and Lists</span></a>).</dd>
+ <dt><dfn title="string" id="dfn-string">string</dfn></dt><dd>
+ A string is a sequence of zero or more Unicode characters,
+ wrapped in double quotes, using backslash escapes (if necessary). A
+ character is represented as a single character string.</dd>
+ <dt><dfn title="number" id="dfn-number">number</dfn></dt>
+ <dd>
+ A number is similar to that used in most programming languages, except
+ that the octal and hexadecimal formats are not used and that leading
+ zeros are not allowed.</dd>
+ <dt><dfn title="true" id="dfn-true">true</dfn> and <dfn title="false" id="dfn-false">false</dfn></dt><dd>
+ Values that are used to express one of two possible boolean states.</dd>
+ <dt><dfn title="null" id="dfn-null">null</dfn></dt>
+ <dd>The <a class="tref internalDFN" title="null" href="#dfn-null">null</a> value, which is typically used to clear or forget
+ data. For example, A key-value pair in the
+ <code>@context</code> where the value is <a class="tref internalDFN" title="null" href="#dfn-null">null</a> explicitly
+ decouples a <a class="tref internalDFN" title="term" href="#dfn-term">term</a>'s association with an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.
+ A key-value pair in the body of a JSON-LD document whose
+ value is <a class="tref internalDFN" title="null" href="#dfn-null">null</a> has the same meaning as if the key-value pair
+ was not defined. If <code>@value</code>, <code>@list</code>, or
+ <code>@set</code> is set to <a class="tref internalDFN" title="null" href="#dfn-null">null</a> in expanded form, then
+ the entire <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> is ignored.</dd>
+ </dl>
+ </section>
+
+ <section id="syntax-tokens-and-keywords">
+ <h3><span class="secno">3.2 </span>Syntax Tokens and Keywords</h3>
+
+ <p>JSON-LD specifies a number of syntax tokens and <dfn title="keyword" id="dfn-keyword">keywords</dfn>
+ that are a core part of the language:</p>
+
+ <dl>
+ <dt><code>@context</code></dt>
+ <dd>Used to define the short-hand names that are used throughout a JSON-LD
+ document. These short-hand names are called <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> and help
+ developers to express specific identifiers in a compact manner. The
+ <code>@context</code> keyword is described in detail in the section titled
+ <a href="#the-context" class="sec-ref"><span class="secno">5.1</span> <span class="sec-title">The Context</span></a>.</dd>
+ <dt><code>@id</code></dt>
+ <dd>Used to uniquely identify <em>things</em> that are being described in the document.
+ This keyword is described in <a href="#node-identifiers" class="sec-ref"><span class="secno">5.3</span> <span class="sec-title">Node Identifiers</span></a>.</dd>
+ <dt><code>@value</code></dt>
+ <dd>Used to specify the data that is associated with a particular
+ <a class="tref internalDFN" title="property" href="#dfn-property">property</a> in the graph. This keyword is described in
+ <a href="#string-internationalization" class="sec-ref"><span class="secno">6.5</span> <span class="sec-title">String Internationalization</span></a> and
+ <a href="#typed-values" class="sec-ref"><span class="secno">6.2</span> <span class="sec-title">Typed Values</span></a>.</dd>
+ <dt><code>@language</code></dt>
+ <dd>Used to specify the native language for a particular value or the default
+ language of a JSON-LD document. This keyword is described in the section titled
+ <a href="#string-internationalization" class="sec-ref"><span class="secno">6.5</span> <span class="sec-title">String Internationalization</span></a>.</dd>
+ <dt><code>@type</code></dt>
+ <dd>Used to set the data type of a <a class="tref internalDFN" title="node" href="#dfn-node">node</a> or
+ <a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">typed value</a>. This keyword is described in the section titled
+ <a href="#typed-values" class="sec-ref"><span class="secno">6.2</span> <span class="sec-title">Typed Values</span></a>.</dd>
+ <dt><code>@container</code></dt>
+ <dd>Used to set the default container type for a <a class="tref internalDFN" title="term" href="#dfn-term">term</a>.
+ This keyword is described in the section titled <a href="#sets-and-lists" class="sec-ref"><span class="secno">6.9</span> <span class="sec-title">Sets and Lists</span></a>.</dd>
+ <dt><code>@list</code></dt>
+ <dd>Used to express an ordered set of data.
+ This keyword is described in the section titled <a href="#sets-and-lists" class="sec-ref"><span class="secno">6.9</span> <span class="sec-title">Sets and Lists</span></a>.</dd>
+ <dt><code>@set</code></dt>
+ <dd>Used to express an unordered set of data and to ensure that values are always
+ represented as arrays. This keyword is described in the section titled
+ <a href="#sets-and-lists" class="sec-ref"><span class="secno">6.9</span> <span class="sec-title">Sets and Lists</span></a>.</dd>
+ <dt><code>@index</code></dt>
+ <dd>Used to specify that a container is used to index information and
+ that processing should continue deeper into a JSON data structure.
+ This keyword is described in the section titled
+ <a href="#data-indexing" class="sec-ref"><span class="secno">6.16</span> <span class="sec-title">Data Indexing</span></a>.</dd>
+ <dt><code>@vocab</code></dt>
+ <dd>Used to expand properties and values in <code>@type</code> with a common prefix
+ <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>. This keyword is described in section <a href="#iris" class="sec-ref"><span class="secno">5.2</span> <span class="sec-title">IRIs</span></a>.</dd>
+ <dt><code>@graph</code></dt><dd>Used to explicitly label a <a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">JSON-LD graph</a>.
+ This keyword is described in <a href="#named-graphs" class="sec-ref"><span class="secno">6.11</span> <span class="sec-title">Named Graphs</span></a>.</dd>
+ <dt><code>:</code></dt>
+ <dd>The separator for JSON keys and values that use
+ <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact IRIs</a>.</dd>
+ </dl>
+
+ <p>For the avoidance of doubt, all keys, <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a>,
+ and values in JSON-LD are case-sensitive.</p>
+ </section>
+</section>
+
+<section class="normative" id="conformance">
+ <!--OddPage--><h2><span class="secno">4. </span>Conformance</h2>
+
+ <p>This specification describes the conformance criteria for JSON-LD documents.
+ This criteria is relevant to authors and authoring tool implementers.</p>
+
+ <p>A <a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">JSON-LD document</a> complies with this specification if it follows
+ the normative statements in section <a href="#json-ld-grammar" class="sec-ref"><span class="secno">B.</span> <span class="sec-title">JSON-LD Grammar</span></a>. JSON documents
+ can be interpreted as JSON-LD by following the normative statements in section
+ <a href="#referencing-contexts-from-json-documents"></a>. For convenience, normative
+ statements for documents are often phrased as statements on the properties of the document.</p>
+
+ <p>The key words <em class="rfc2119" title="must">must</em>, <em class="rfc2119" title="must not">must not</em>, <em class="rfc2119" title="required">required</em>, <em class="rfc2119" title="shall">shall</em>, <em class="rfc2119" title="shall not">shall not</em>, <em class="rfc2119" title="should">should</em>, <em class="rfc2119" title="should not">should not</em>,
+ <em class="rfc2119" title="recommended">recommended</em>, <em class="rfc2119" title="not recommended">not recommended</em>, <em class="rfc2119" title="may">may</em>, and <em class="rfc2119" title="optional">optional</em> in this specification have the
+ meaning defined in [<cite><a class="bibref" href="#bib-RFC2119">RFC2119</a></cite>].</p>
+</section>
+
+<section class="normative" id="basic-concepts">
+ <!--OddPage--><h2><span class="secno">5. </span>Basic Concepts</h2>
+
+ <p>JSON [<cite><a class="bibref" href="#bib-RFC4627">RFC4627</a></cite>] is a lightweight, language-independent data-interchange format.
+ It is easy to parse and easy to generate. However, it is difficult to integrate JSON
+ from different sources as the data has just local meaning. Furthermore, JSON has no
+ built-in support for hyperlinks - a fundamental building block on the Web. Let's look
+ at an example that we will be using for the rest of this section:</p>
+
+ <div class="example"><div class="example-title"><span>Example 1</span>: Sample JSON document</div><pre class="example">{
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "image": "http://manu.sporny.org/images/manu.png"
+}</pre></div>
+
+ <p>It's obvious for humans that the data is about a person whose name is "Manu Sporny"
+ and that the <code>homepage</code> property contains the URL of that person's homepage.
+ A machine doesn't have such an intuitive understanding and sometimes,
+ even for humans, it is difficult to resolve ambiguities in such representations. This problem
+ can be solved by using unambiguous identifiers to denote the different concepts instead of
+ <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> such as "name", "homepage", etc.</p>
+
+ <p><a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a>, and the Web in general, uses <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>
+ (Internationalized Resource Identifiers as described in [<cite><a class="bibref" href="#bib-RFC3987">RFC3987</a></cite>]) for unambiguous
+ identification. The idea is to assign <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> to something that may
+ be of use to other developers and that it is useful to give them an unambiguous identifier.
+ That is, it is useful for <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> to expand to <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>
+ so that developers don't accidentally step on each other's terms. Furthermore, developers and
+ machines are able to use this <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> (by using a web browser, for instance) to go to
+ the term and get a definition of what the term means.</p>
+
+ <p>Leveraging the well-known <a href="http://schema.org/">schema.org vocabulary</a>,
+ the example above could be unambiguously expressed as follows:</p>
+
+ <div class="example"><div class="example-title"><span>Example 2</span>: Sample JSON-LD document using full IRIs instead of terms</div><pre class="example">{
+ "<span class="diff">http://schema.org/name</span>": "Manu Sporny",
+ "<span class="diff">http://schema.org/url</span>": <span class="diff">{ "@id": </span>"http://manu.sporny.org/" <span class="diff">}</span>,
+ "<span class="diff">http://schema.org/image</span>": <span class="diff">{ "@id": </span>"http://manu.sporny.org/images/manu.png" <span class="diff">}</span>
+}</pre></div>
+
+ <p>In the example above, every property is unambiguously identified by an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> and all values
+ representing <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> are explicitly marked as such by the
+ <code>@id</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>. While this is a valid JSON-LD
+ document that is very specific about its data, the document is also overly verbose and difficult
+ to work with for human developers. To address this issue, JSON-LD introduces the notion
+ of a <a class="tref internalDFN" title="context" href="#dfn-context">context</a> as described in the next section.</p>
+
+ <section id="the-context">
+ <h3><span class="secno">5.1 </span>The Context</h3>
+
+ <p>Simply speaking, a <dfn title="context" id="dfn-context">context</dfn> is used to map <a class="tref internalDFN" title="term" href="#dfn-term">terms</a>,
+ i.e., <a class="tref internalDFN" title="property" href="#dfn-property">properties</a> with associated values, to
+ <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>. <a class="tref internalDFN" title="term" href="#dfn-term">Terms</a> are case sensitive
+ and any valid <a class="tref internalDFN" title="string" href="#dfn-string">string</a> that is not a reserved JSON-LD <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>
+ can be used as a <a class="tref internalDFN" title="term" href="#dfn-term">term</a>.</p>
+
+ <p>For the sample document in the previous section, a <a class="tref internalDFN" title="context" href="#dfn-context">context</a> would
+ look something like this:</p>
+
+ <div class="example"><div class="example-title"><span>Example 3</span>: Context for the sample document in the previous section</div><pre class="example">{
+ <span class="diff">"@context":
+ {
+ "name": "http://schema.org/name",
+ "image": {
+ "@id": "http://schema.org/image",
+ "@type": "@id"
+ },
+ "homepage": {
+ "@id": "http://schema.org/url",
+ "@type": "@id"
+ }
+ }</span>
+}</pre></div>
+
+ <p>As the <a class="tref internalDFN" title="context" href="#dfn-context">context</a> above shows, the value of a <dfn title="term_definition" id="dfn-term_definition">term definition</dfn> can
+ either be a simple string, mapping the <a class="tref internalDFN" title="term" href="#dfn-term">term</a> to an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
+ or a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a>.</p>
+
+ <p>When a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> is
+ associated with a term, it is called an <a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">expanded term definition</a>.
+ <dfn title="expanded_term_definition" id="dfn-expanded_term_definition">Expanded term definitions</dfn> may
+ be used to associate <a href="#type-coercion">type</a> or
+ <a href="#string-internationalization">language information</a> with a
+ term.
+ The example above specifies that the values of <code>image</code> and
+ <code>homepage</code> terms are <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>.
+ They also allow terms to be used for <a href="#data-indexing">index maps</a>
+ and to specify whether <a class="tref internalDFN" title="array" href="#dfn-array">array</a> values are to be
+ interpreted as <a href="#sets-and-lists">sets or lists</a>.
+ <a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">Expanded term definitions</a> may
+ be defined using <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute</a> or
+ <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact IRIs</a> as keys, which is
+ mainly used to associate type or language information with an
+ <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute</a> or <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</p>
+
+ <p><a class="tref internalDFN" title="context" href="#dfn-context">Contexts</a> can either be directly embedded
+ into the document or be referenced. Assuming the context document in the previous
+ example can be retrieved at <code>http://json-ld.org/contexts/person.jsonld</code>,
+ it can be referenced by adding a single line and allows a JSON-LD document to
+ be expressed much more concisely as shown in the example below:</p>
+
+ <div class="example"><div class="example-title"><span>Example 4</span>: Referencing a JSON-LD context</div><pre class="example">{
+ <span class="diff">"@context": "http://json-ld.org/contexts/person.jsonld",</span>
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "image": "http://manu.sporny.org/images/manu.png"
+}</pre></div>
+
+ <p>The referenced context not only specifies how the terms map to
+ <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> in the Schema.org vocabulary but also specifies that
+ the values of the <code>homepage</code> and <code>image</code> property
+ can be interpreted as an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> (e.g. <code>"@type": "@id"</code>,
+ see section <a href="#iris" class="sec-ref"><span class="secno">5.2</span> <span class="sec-title">IRIs</span></a> for more details). This information gives the
+ data global context and allows developers to re-use each other's data
+ without having to agree to how their data will interoperate on a
+ site-by-site basis. External JSON-LD context documents may contain extra
+ information located outside of the <code>@context</code> key, such as
+ documentation about the <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> declared in the
+ document. Information contained outside of the <code>@context</code> value
+ is ignored when the document is used as an external JSON-LD context document.</p>
+
+ <p>Contexts may also be specified in-line. This has the advantage that
+ <a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">JSON-LD documents</a> can be processed
+ even in the absence of a connection to the Web.</p>
+
+ <div class="example"><div class="example-title"><span>Example 5</span>: In-line context definition</div><pre class="example">{
+ <span class="diff">"@context":
+ {
+ "name": "http://schema.org/name",
+ "image": {
+ "@id": "http://schema.org/image",
+ "@type": "@id"
+ },
+ "homepage": {
+ "@id": "http://schema.org/url",
+ "@type": "@id"
+ }
+ },</span>
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "image": "http://manu.sporny.org/images/manu.png"
+}</pre></div>
+ </section>
+
+<section id="iris">
+ <h3><span class="secno">5.2 </span>IRIs</h3>
+
+ <p><a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> (Internationalized Resource Identifiers
+ [<cite><a class="bibref" href="#bib-RFC3987">RFC3987</a></cite>]) are fundamental to <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a> as that is how most
+ <a class="tref internalDFN" title="node" href="#dfn-node">nodes</a> and <a class="tref internalDFN" title="property" href="#dfn-property">properties</a>
+ are identified. In JSON-LD, IRIs may be represented as an
+ <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> or a <a class="tref internalDFN" title="relative_iri" href="#dfn-relative_iri">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>. An
+ <dfn title="absolute_iri" id="dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></dfn> is defined in [<cite><a class="bibref" href="#bib-RFC3987">RFC3987</a></cite>] as containing a
+ <em>scheme</em> along with <em>path</em> and optional <em>query</em> and
+ <em>fragment</em> segments. A <dfn title="relative_iri" id="dfn-relative_iri">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></dfn> is an <abbr title="Internationalized Resource Identifier">IRI</abbr>
+ that is relative to some other <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>.
+ In JSON-LD all <a class="tref internalDFN" title="relative_iri" href="#dfn-relative_iri">relative IRIs</a> are resolved
+ relative to the <dfn title="base_iri" id="dfn-base_iri">base <abbr title="Internationalized Resource Identifier">IRI</abbr></dfn> associated with the document, which
+ is typically the directory path containing the document.</p>
+
+ <p><a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">IRIs</a> can be expressed directly in the key
+ position like so:</p>
+
+ <div class="example"><div class="example-title"><span>Example 6</span>: IRI as a key</div><pre class="example">{
+...
+ "<span class="diff">http://schema.org/name</span>": "Manu Sporny",
+...
+}</pre></div>
+
+ <p>In the example above, the key <code>http://schema.org/name</code>
+ is interpreted as an <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> because it contains a colon
+ (<code>:</code>) and the "http" <a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a> does not exist in
+ the context.</p>
+
+ <p>Term-to-<abbr title="Internationalized Resource Identifier">IRI</abbr> expansion occurs if the key matches a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> defined
+ within the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a>:</p>
+
+ <div class="example"><div class="example-title"><span>Example 7</span>: Term expansion from context definition</div><pre class="example">{
+ "<span class="diff">@context</span>":
+ {
+ "<span class="diff">name</span>": "<span class="diff">http://schema.org/name</span>"
+...
+ },
+ "<span class="diff">name</span>": "Manu Sporny",
+ "status": "trollin'",
+...
+}</pre></div>
+
+ <p>JSON keys that do not expand to an absolute <abbr title="Internationalized Resource Identifier">IRI</abbr> are ignored, or removed
+ in some cases, by the [<cite><a class="bibref" href="#bib-JSON-LD-API">JSON-LD-API</a></cite>]. However, JSON keys that do not include
+ a mapping in the <a class="tref internalDFN" title="context" href="#dfn-context">context</a> are still considered valid expressions
+ in JSON-LD documents—the keys just don't expand to unambiguous identifiers.</p>
+
+ <p>At times, all properties and types may come from the same vocabulary. JSON-LD's
+ <code>@vocab</code> keyword allows an author to set a common prefix to be used
+ for all properties and types that do not match a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> or are neither
+ a <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> nor an <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> (i.e., they do
+ not contain a colon).</p>
+
+ <div class="example"><div class="example-title"><span>Example 8</span>: Using a common vocabulary prefix</div><pre class="example">{
+ <span class="diff">"@context": {
+ "@vocab": "http://schema.org/"
+ },</span>
+ "@type": <span class="diff">"Person"</span>,
+ <span class="diff">"name"</span>: "Manu Sporny",
+}</pre></div>
+
+ <p>An <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> is generated when a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> is used in
+ the value position and contains an <code>@id</code> keyword:</p>
+
+ <div class="example"><div class="example-title"><span>Example 9</span>: Expanded IRI definition</div><pre class="example">{
+...
+ "homepage": { "<span class="diff">@id</span>": "http://manu.sporny.org" }
+...
+}</pre></div>
+
+ <p>Specifying a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> with an
+ <code>@id</code> key is used to identify that <a class="tref internalDFN" title="node" href="#dfn-node">node</a> using an
+ <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>. This facility may also be used to link to another
+ <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a> using a mechanism called
+ <a class="tref internalDFN" title="embedding" href="#dfn-embedding">embedding</a>, which is covered in the section titled
+ <a href="#embedding" class="sec-ref"><span class="secno">6.10</span> <span class="sec-title">Embedding</span></a>.</p>
+
+ <p>If type <a class="tref internalDFN" title="coercion" href="#dfn-coercion">coercion</a> rules are specified in the <code>@context</code> for
+ a particular <a class="tref internalDFN" title="term" href="#dfn-term">term</a> or property <abbr title="Internationalized Resource Identifier">IRI</abbr>, an <abbr title="Internationalized Resource Identifier">IRI</abbr> is generated:</p>
+
+ <div class="example"><div class="example-title"><span>Example 10</span>: Type coercion</div><pre class="example">{<span class="diff">
+ "@context":
+ {
+ ...
+ "homepage":
+ {
+ "@id": "http://schema.org/homepage",
+ "@type": "@id"
+ }
+ ...
+ }</span>
+...
+ "homepage": "http://manu.sporny.org/",
+...
+}</pre></div>
+
+ <p>In the example above, even though the value <code>http://manu.sporny.org/</code>
+ is expressed as a JSON <a class="tref internalDFN" title="string" href="#dfn-string">string</a>, the type <a class="tref internalDFN" title="coercion" href="#dfn-coercion">coercion</a>
+ rules will transform the value into an <abbr title="Internationalized Resource Identifier">IRI</abbr> when generating the
+ <a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">JSON-LD graph</a>. See <a href="#type-coercion" class="sec-ref"><span class="secno">6.3</span> <span class="sec-title">Type Coercion</span></a> for more
+ details about this feature.</p>
+
+ <p>In summary, <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> can be expressed in a variety of
+ different ways in JSON-LD:</p>
+
+ <ol>
+ <li><a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> keys that have a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> mapping in
+ the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a> expand to an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>
+ (only applies outside of the <a class="tref internalDFN" title="context_definition" href="#dfn-context_definition">context definition</a>).</li>
+ <li>If there is a <code>@vocab</code> mapping in the active context,
+ <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> keys without an explicit mapping
+ in the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a> are expanded to an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</li>
+ <li>An <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> is generated for the <a class="tref internalDFN" title="string" href="#dfn-string">string</a> value specified using
+ <code>@id</code> or <code>@type</code>.</li>
+ <li>An <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> is generated for the <a class="tref internalDFN" title="string" href="#dfn-string">string</a> value of any key for which there
+ are <a class="tref internalDFN" title="coercion" href="#dfn-coercion">coercion</a> rules that contain a <code>@type</code> key that is
+ set to a value of <code>@id</code>.</li>
+ </ol>
+</section>
+
+<section id="node-identifiers">
+ <h3><span class="secno">5.3 </span>Node Identifiers</h3>
+
+ <p>To be able to externally reference <a class="tref internalDFN" title="node" href="#dfn-node">nodes</a>
+ in a <a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">graph</a>, it is important that each <a class="tref internalDFN" title="node" href="#dfn-node">node</a> have
+ an unambiguous identifier. <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> are a fundamental concept of
+ <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a>, and <a class="tref internalDFN" title="node" href="#dfn-node">nodes</a> should have a de-referenceable
+ identifier used to name and locate them. For <a class="tref internalDFN" title="node" href="#dfn-node">nodes</a> to be truly linked,
+ de-referencing the identifier should result in a representation of that <a class="tref internalDFN" title="node" href="#dfn-node">node</a>.
+ Associating an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> with a <a class="tref internalDFN" title="node" href="#dfn-node">node</a> tells an application that it
+ can fetch the resource associated with the <abbr title="Internationalized Resource Identifier">IRI</abbr> and get back a description of the
+ <a class="tref internalDFN" title="node" href="#dfn-node">node</a>.</p>
+
+ <p><a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">JSON-LD documents</a> may also contain descriptions
+ of other <a class="tref internalDFN" title="node" href="#dfn-node">nodes</a>, so it is necessary to be able to
+ uniquely identify each <a class="tref internalDFN" title="node" href="#dfn-node">node</a> so that the data is associated
+ with the correct <a class="tref internalDFN" title="node" href="#dfn-node">node</a> in an unambiguous way.</p>
+
+ <p>A <a class="tref internalDFN" title="node" href="#dfn-node">node</a> is identified using the <code>@id</code>
+ <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>:</p>
+
+ <div class="example"><div class="example-title"><span>Example 11</span>: Identifying a node</div><pre class="example">{
+ "@context":
+ {
+ ...
+ "homepage":
+ {
+ "@id": "http://schema.org/homepage",
+ "@type": "@id"
+ }
+ },
+ "<span class="diff">@id</span>": "<span class="diff">http://example.org/people#joebob</span>",
+ "homepage": "http://joebob.example.com/",
+ ...
+}</pre></div>
+
+ <p>The example above contains a <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a> identified by the <abbr title="Internationalized Resource Identifier">IRI</abbr>
+ <code>http://example.org/people#joebob</code>.</p>
+</section>
+
+<section id="specifying-the-type">
+<h3><span class="secno">5.4 </span>Specifying the Type</h3>
+
+<p>The type of a particular node can be specified using the <code>@type</code>
+ <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>. In <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a>, types are uniquely
+ identified with an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</p>
+
+<div class="example"><div class="example-title"><span>Example 12</span>: Specifying the type for a node</div><pre class="example">{
+...
+ "@id": "http://example.org/places#BrewEats",
+ "<span class="diff">@type</span>": "<span class="diff">http://schema.org/Restaurant</span>",
+...
+}</pre></div>
+
+<p>A node can be assigned more than one type by using an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>:</p>
+
+<div class="example"><div class="example-title"><span>Example 13</span>: Specifying multiple types for a node</div><pre class="example">{
+...
+ "@id": "http://example.org/places#BrewEats",
+ "<span class="diff">@type</span>": <span class="diff">[ "http://schema.org/Restaurant", "http://schema.org/Brewery" ],</span>
+...
+}</pre></div>
+
+<p>The value of a <code>@type</code> key may also be a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> defined in the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a>:</p>
+<div class="example"><div class="example-title"><span>Example 14</span>: Using a term to specify the type</div><pre class="example">{
+ "@context": {
+ ...
+ <span class="diff">"Restaurant": "http://schema.org/Restaurant", </span>
+ <span class="diff">"Brewery": "http://schema.org/Brewery"</span>
+ }
+ "@id": "http://example.org/places#BrewEats",
+ <span class="diff">"@type": ["Restaurant", "Brewery"]</span>,
+ ...
+}</pre></div>
+
+</section>
+</section>
+
+<section id="advanced-concepts">
+<!--OddPage--><h2><span class="secno">6. </span>Advanced Concepts</h2>
+
+<em>This section is normative.</em>
+
+<p>JSON-LD has a number of features that provide functionality above and beyond
+the core functionality described above. The following section describes this
+advanced functionality in more detail.
+</p>
+
+<section id="compact-iris">
+ <h3><span class="secno">6.1 </span>Compact IRIs</h3>
+ <p>A document on the Web that defines one or more IRIs for use as
+ <a class="tref internalDFN" title="property" href="#dfn-property">properties</a> in Linked Data is called a
+ <dfn title="vocabulary" id="dfn-vocabulary">vocabulary</dfn>.
+ <a class="tref internalDFN" title="term" href="#dfn-term">Terms</a> in <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a> documents may draw from
+ a number of different <a class="tref internalDFN" title="vocabulary" href="#dfn-vocabulary">vocabularies</a>s. At times, declaring every single <a class="tref internalDFN" title="term" href="#dfn-term">term</a>
+ that a document uses can require the developer to declare tens, if not hundreds of potential
+ vocabulary <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> that are used across an
+ application. This is a concern for at least two reasons: the
+ first is the cognitive load on the developer of remembering all of the
+ <a class="tref internalDFN" title="term" href="#dfn-term">terms</a>, and the second is the serialized size of the
+ <a class="tref internalDFN" title="context" href="#dfn-context">context</a> if it is specified inline. In order to address these issues,
+ the concept of a <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> is introduced.</p>
+ <p>
+ A <dfn title="compact_iri" id="dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></dfn> is a way of expressing an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>
+ using a <em>prefix</em> and <em>suffix</em> separated by a colon (<code>:</code>) which is
+ similar to the <cite><a href="http://www.w3.org/TR/rdfa-core/#s_curies">CURIE Syntax</a></cite>
+ in [<cite><a class="bibref" href="#bib-RDFA-CORE">RDFA-CORE</a></cite>]. The <dfn title="prefix" id="dfn-prefix">prefix</dfn> is a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> taken from the
+ <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a> and is a short string identifying a
+ particular <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> in a JSON-LD document.
+ For example, the prefix <code>foaf</code> may be used as a short
+ hand for the Friend-of-a-Friend vocabulary, which is identified using
+ the <abbr title="Internationalized Resource Identifier">IRI</abbr> <code>http://xmlns.com/foaf/0.1/</code>. A developer may append
+ any of the FOAF vocabulary terms to the end of the prefix to specify a short-hand
+ version of the <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> for the vocabulary term. For example,
+ <code>foaf:name</code> would be expanded out to the <abbr title="Internationalized Resource Identifier">IRI</abbr>
+ <code>http://xmlns.com/foaf/0.1/name</code>. Instead of having to remember and
+ type out the entire <abbr title="Internationalized Resource Identifier">IRI</abbr>, the developer can instead use the prefix in their JSON-LD markup.
+ </p>
+
+ <p><a class="tref internalDFN" title="prefix" href="#dfn-prefix">Prefixes</a> are expanded when the form of the value
+ is a <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> represented as a <code>prefix:suffix</code>
+ combination, and the prefix matches a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> defined within the
+ <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a>:</p>
+
+ <div class="example"><div class="example-title"><span>Example 15</span>: Prefix expansion</div><pre class="example">{
+ "<span class="diff">@context</span>":
+ {
+ "<span class="diff">foaf</span>": "<span class="diff">http://xmlns.com/foaf/0.1/</span>"
+...
+ },
+ "<span class="diff">foaf:name</span>": "Dave Longley",
+...
+}</pre></div>
+
+ <p><code>foaf:name</code> above will automatically expand out to the <abbr title="Internationalized Resource Identifier">IRI</abbr>
+ <code>http://xmlns.com/foaf/0.1/name</code>.</p>
+
+ <p>Terms are interpreted as <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact IRIs</a> if they contain at least one
+ colon and the first colon is not followed by two slashes (<code>//</code>, as in
+ <code>http://example.com</code>). To generate the full <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
+ the value is first split into a <em>prefix</em> and <em>suffix</em> at the first
+ occurrence of a colon (<code>:</code>). If the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a>
+ contains a term mapping for <em>prefix</em>, an <abbr title="Internationalized Resource Identifier">IRI</abbr> is generated by
+ prepending the mapped <em>prefix</em> to the (possibly empty) <em>suffix</em>
+ using textual concatenation. If no prefix mapping is defined, the value is interpreted
+ as an <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>. If the prefix is an underscore
+ (<code>_</code>), the <abbr title="Internationalized Resource Identifier">IRI</abbr> remains unchanged.
+ </p>
+ <p>Consider the following example:</p>
+ <div class="example"><div class="example-title"><span>Example 16</span>: Compact IRIs</div><pre class="example">{
+ "@context":
+ {
+ <span class="diff">"dc": "http://purl.org/dc/elements/1.1/",</span>
+ <span class="diff">"ex": "http://example.org/vocab#"</span>
+ },
+ "@id": "http://example.org/library",
+ "@type": <span class="diff">"ex:Library"</span>,
+ <span class="diff">"ex:contains"</span>:
+ {
+ "@id": "http://example.org/library/the-republic",
+ "@type": <span class="diff">"ex:Book"</span>,
+ <span class="diff">"dc:creator"</span>: "Plato",
+ <span class="diff">"dc:title"</span>: "The Republic",
+ <span class="diff">"ex:contains"</span>:
+ {
+ "@id": "http://example.org/library/the-republic#introduction",
+ "@type": <span class="diff">"ex:Chapter"</span>,
+ <span class="diff">"dc:description"</span>: "An introductory chapter on The Republic.",
+ <span class="diff">"dc:title"</span>: "The Introduction"
+ }
+ }
+}</pre></div>
+
+ <p>In this example, two different vocabularies are referred to using prefixes.
+ Those prefixes are then used as type and property values using the compact
+ <abbr title="Internationalized Resource Identifier">IRI</abbr> <code>prefix:suffix</code> notation.</p>
+
+ <p>It's also possible to use compact IRIs within the context as shown in the
+ following example:</p>
+
+ <div class="example"><div class="example-title"><span>Example 17</span>: Using vocabularies</div><pre class="example">{
+ "@context":
+ {
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
+ <span class="diff">"foaf": "http://xmlns.com/foaf/0.1/"</span>,
+ <span class="diff">"foaf:homepage"</span>: { "@type": "@id" },
+ "picture": { "@id": <span class="diff">"foaf:depiction"</span>, "@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/markuslanthaler"
+}</pre></div>
+</section>
+
+<section id="typed-values">
+<h3><span class="secno">6.2 </span>Typed Values</h3>
+
+<p>
+ A value with an associated type, also known as a
+ <a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">typed value</a>, is indicated by associating a value with
+ an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> which indicates the value's type. Typed values may be
+ expressed in JSON-LD in three ways:
+</p>
+
+<ol>
+ <li>By utilizing the <code>@type</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> when defining
+ a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> within a <code>@context</code> section.</li>
+ <li>By utilizing an <a class="tref internalDFN" title="expanded_typed_value" href="#dfn-expanded_typed_value">expanded typed value</a>.</li>
+ <li>By using a native JSON type such as <a class="tref internalDFN" title="number" href="#dfn-number">number</a>, <a class="tref internalDFN" title="true" href="#dfn-true">true</a>, or <a class="tref internalDFN" title="false" href="#dfn-false">false</a>.</li>
+</ol>
+
+<p>The first example uses the <code>@type</code> keyword to associate a
+type with a particular <a class="tref internalDFN" title="term" href="#dfn-term">term</a> in the <code>@context</code>:</p>
+
+<div class="example"><div class="example-title"><span>Example 18</span>: Expanded term definition with type coercion</div><pre class="example">{
+ <span class="diff">"@context":
+ {
+ "modified":
+ {
+ "@id": "http://purl.org/dc/terms/modified",
+ "@type": "http://www.w3.org/2001/XMLSchema#dateTime"
+ }
+ },</span>
+...
+ "@id": "http://example.com/docs/1",
+ "modified": "2010-05-29T14:17:39+02:00",
+...
+}</pre></div>
+
+<p>The <em>modified</em> key's value above is automatically type coerced to a
+dateTime value because of the information specified in the
+<code>@context</code>. A JSON-LD processor will interpret the markup above
+like so:</p>
+
+<table class="example">
+<thead>
+ <tr><th>Subject</th>
+ <th>Property</th>
+ <th>Value</th>
+ <th>Value Type</th>
+</tr></thead>
+<tbody>
+<tr>
+ <td>http://example.com/docs/1</td>
+ <td>http://purl.org/dc/terms/modified</td>
+ <td>2010-05-29T14:17:39+02:00</td>
+ <td>http://www.w3.org/2001/XMLSchema#dateTime</td>
+</tr>
+</tbody>
+</table>
+
+<p>The second example uses the expanded form of setting the type information
+in the body of a JSON-LD document:</p>
+
+<div class="example"><div class="example-title"><span>Example 19</span>: Expanded value with type</div><pre class="example">{
+ "@context":
+ {
+ "modified":
+ {
+ "@id": "http://purl.org/dc/terms/modified"
+ }
+ },
+...
+ "modified":
+ <span class="diff">{
+ "@value": "2010-05-29T14:17:39+02:00",
+ "@type": "http://www.w3.org/2001/XMLSchema#dateTime"
+ }</span>
+...
+}</pre></div>
+
+<p>Both examples above would generate the value
+ <code>2010-05-29T14:17:39+02:00</code> with the type
+ <code>http://www.w3.org/2001/XMLSchema#dateTime</code>. Note that it is
+ also possible to use a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> or a <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> to
+ express the value of a type.</p>
+
+<p>The <code>@type</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> is also used to associate a type
+ with a <a class="tref internalDFN" title="node" href="#dfn-node">node</a>. The concept of a <a class="tref internalDFN" title="node_type" href="#dfn-node_type">node type</a> and
+ a <a class="tref internalDFN" title="value_type" href="#dfn-value_type">value type</a> are different.</p>
+
+<p>Generally speaking, a
+ <dfn title="node_type" id="dfn-node_type">node type</dfn> specifies the type of thing that is being described,
+ like a person, place, event, or web page. A <dfn title="value_type" id="dfn-value_type">value type</dfn> specifies
+ the unit of measurement for a particular value, such as a date, meter,
+ or light year.</p>
+
+<div class="example"><div class="example-title"><span>Example 20</span>: Example demonstrating the context-sensitivity for @type</div><pre class="example">{
+...
+ "@id": "http://example.org/posts#TripToWestVirginia",
+ <span class="diff">"@type": "http://schema.org/BlogPosting"</span>, <--- This is a node type
+ "modified":
+ {
+ "@value": "2010-05-29T14:17:39+02:00",
+ <span class="diff">"@type": "http://www.w3.org/2001/XMLSchema#dateTime"</span> <--- This is a value type
+ }
+...
+}</pre></div>
+
+<p>The first use of <code>@type</code> associates a <a class="tref internalDFN" title="node_type" href="#dfn-node_type">node type</a>
+ (<code>http://schema.org/BlogPosting</code>) with the <a class="tref internalDFN" title="node" href="#dfn-node">node</a>,
+ which is expressed using the <code>@id</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>.
+ The second use of <code>@type</code> associates a <a class="tref internalDFN" title="value_type" href="#dfn-value_type">value type</a>
+ (<code>http://www.w3.org/2001/XMLSchema#dateTime</code>) with the
+ value expressed using the <code>@value</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>. As a
+ general rule, when <code>@value</code> and <code>@type</code> are used in
+ the same <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a>, the <code>@type</code>
+ <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> is expressing a <a class="tref internalDFN" title="value_type" href="#dfn-value_type">value type</a>.
+ Otherwise, the <code>@type</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> is expressing a
+ <a class="tref internalDFN" title="node_type" href="#dfn-node_type">node type</a>. The markup above expresses the following data:</p>
+
+<table class="example">
+<thead>
+ <tr><th>Subject</th>
+ <th>Property</th>
+ <th>Value</th>
+ <th>Value Type</th>
+</tr></thead>
+<tbody>
+<tr>
+ <td>http://example.org/posts#TripToWestVirginia</td>
+ <td>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</td>
+ <td>http://schema.org/BlogPosting</td>
+ <td style="text-align:center;">-</td>
+</tr>
+<tr>
+ <td>http://example.org/posts#TripToWestVirginia</td>
+ <td>http://purl.org/dc/terms/modified</td>
+ <td>2010-05-29T14:17:39+02:00</td>
+ <td>http://www.w3.org/2001/XMLSchema#dateTime</td>
+</tr>
+</tbody>
+</table>
+
+</section>
+
+<section id="type-coercion">
+<h3><span class="secno">6.3 </span>Type Coercion</h3>
+
+<p>JSON-LD supports the coercion of values to particular data types.
+Type <dfn title="coercion" id="dfn-coercion">coercion</dfn> allows someone deploying JSON-LD to coerce the incoming or
+outgoing values to the proper data type based on a mapping of data type <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> to
+<a class="tref internalDFN" title="term" href="#dfn-term">terms</a>. Using type coercion, value representation is preserved without requiring
+the data type to be specified with each piece of data.</p>
+
+<p>Type coercion is specified within an <a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">expanded term definition</a>
+ using the <code>@type</code> key. The value of this key expands to an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.
+ Alternatively, the <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> <code>@id</code> may be used as value to indicate
+ that within the body of a JSON-LD document, a string value of a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> coerced to
+ <code>@id</code> is to be interpreted as an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</p>
+
+<p><a class="tref internalDFN" title="term" href="#dfn-term">Terms</a> or <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact IRIs</a> used as the value of a
+ <code>@type</code> key may be defined within the same context. This means that one may specify a
+ <a class="tref internalDFN" title="term" href="#dfn-term">term</a> like <code>xsd</code> and then use <code>xsd:integer</code> within the same
+ context definition.</p>
+
+<p>The example below demonstrates how a JSON-LD author can coerce values to
+<a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">typed values</a>, IRIs, and lists.</p>
+
+<div class="example"><div class="example-title"><span>Example 21</span>: Expanded term definition with types</div><pre class="example">{
+ "@context":
+ {
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "age":
+ <span class="diff">{
+ "@id": "http://xmlns.com/foaf/0.1/age",
+ "@type": "xsd:integer"
+ }</span>,
+ "homepage":
+ <span class="diff">{
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id",
+ "@container": "@list"
+ }</span>
+ },
+ "@id": "http://example.com/people#john",
+ "name": "John Smith",
+ "age": <span class="diff">"41"</span>,
+ "homepage":
+ <span class="diff">[
+ "http://personal.example.org/",
+ "http://work.example.com/jsmith/"
+ ]</span>
+}</pre></div>
+
+<p>The markup shown above would generate the following data. The data has no inherent order
+ except for the values of the <code>http://schema.org/homepage</code> property
+ which represent an ordered list.</p>
+
+<table class="example">
+<thead>
+ <tr><th>Subject</th>
+ <th>Property</th>
+ <th>Value</th>
+ <th>Value Type</th>
+</tr></thead>
+<tbody>
+<tr>
+ <td>http://example.com/people#john</td>
+ <td>http://xmlns.com/foaf/0.1/name</td>
+ <td>John Smith</td>
+ <td> </td>
+</tr>
+<tr>
+ <td>http://example.com/people#john</td>
+ <td>http://xmlns.com/foaf/0.1/age</td>
+ <td>41</td>
+ <td>http://www.w3.org/2001/XMLSchema#integer</td>
+</tr>
+<tr>
+ <td rowspan="2">http://example.com/people#john</td>
+ <td rowspan="2">http://xmlns.com/foaf/0.1/homepage</td>
+ <td>http://personal.example.org/</td>
+ <td> </td>
+</tr>
+<tr>
+ <td>http://work.example.com/jsmith/</td>
+ <td> </td>
+</tr>
+</tbody>
+</table>
+
+<p>Terms may also be defined using <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute IRIs</a> or <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact IRIs</a>.
+ This allows coercion rules to be applied to keys which are not represented as a simple <a class="tref internalDFN" title="term" href="#dfn-term">term</a>.
+ For example:</p>
+
+<div class="example"><div class="example-title"><span>Example 22</span>: Term definitions using compact and absolute IRIs</div><pre class="example">{
+ "@context":
+ {
+ "foaf": "http://xmlns.com/foaf/0.1/",
+ "<span class="diff">foaf:age</span>":
+ {
+ <span class="diff">"@id": "http://xmlns.com/foaf/0.1/age"</span>,
+ "@type": "xsd:integer"
+ },
+ "<span class="diff">http://xmlns.com/foaf/0.1/homepage</span>":
+ {
+ "@type": "@id"
+ }
+ },
+ "foaf:name": "John Smith",
+ "<span class="diff">foaf:age</span>": "41",
+ "<span class="diff">http://xmlns.com/foaf/0.1/homepage</span>":
+ [
+ "http://personal.example.org/",
+ "http://work.example.com/jsmith/"
+ ]
+}</pre></div>
+
+<p>In this case the <code>@id</code> definition in the term definition is optional, but if it does exist, the <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
+ or <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> is treated as a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> (not a <code>prefix:suffix</code> construct)
+ so that the actual definition of a <a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a> becomes unnecessary. Type coercion is performed using
+ the unexpanded value of the key if there is an exact match for the key in the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a>.</p>
+
+<div class="note"><div class="note-title"><span>Note</span></div><p class="">Keys in the context are treated as <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> for the purpose of
+ expansion and value coercion. At times, this may result in multiple representations for the same expanded <abbr title="Internationalized Resource Identifier">IRI</abbr>.
+ For example, one could specify that <code>dog</code> and <code>cat</code> both expanded to <code>http://example.com/vocab#animal</code>.
+ Doing this could be useful for establishing different type coercion or language specification rules. It also allows a <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> (or even an
+ absolute <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>) to be defined as something else entirely. For example, one could specify that
+ the <a class="tref internalDFN" title="term" href="#dfn-term">term</a> <code>http://example.org/zoo</code> should expand to
+ <code>http://example.org/river</code>, but this usage is discouraged because it would lead to a
+ great deal of confusion among developers attempting to understand the JSON-LD document.</p></div>
+
+
+</section>
+
+<section id="advanced-context-usage">
+ <h3><span class="secno">6.4 </span>Advanced Context Usage</h3>
+
+ <p>Section <a href="#the-context" class="sec-ref"><span class="secno">5.1</span> <span class="sec-title">The Context</span></a> introduced the basics of what makes
+ JSON-LD work. This section expands on the basic principles of the
+ <a class="tref internalDFN" title="context" href="#dfn-context">context</a> and demonstrates how more advanced use cases can
+ be achieved using JSON-LD. </p>
+
+ <p>In general, contexts may be used at any time a
+ <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> is defined. The only time that one cannot
+ express a context is inside a context definition itself. For example, a
+ <a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">JSON-LD document</a> may use more than one context at different
+ points in a document:</p>
+
+ <div class="example"><div class="example-title"><span>Example 23</span>: Using multiple contexts</div><pre class="example">[
+ {
+ <span class="diff">"@context": "http://example.org/contexts/person.jsonld",</span>
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "depiction": "http://twitter.com/account/profile_image/manusporny"
+ },
+ {
+ <span class="diff">"@context": "http://example.org/contexts/place.jsonld",</span>
+ "name": "The Empire State Building",
+ "description": "The Empire State Building is a 102-story landmark in New York City.",
+ "geo": {
+ "latitude": "40.75",
+ "longitude": "73.98"
+ }
+ }
+]</pre></div>
+
+ <p>Duplicate context <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> are overridden using a
+ last-defined-wins mechanism.</p>
+
+ <div class="example"><div class="example-title"><span>Example 24</span>: Scoped contexts within node objects</div><pre class="example">{
+ <span class="diff">"@context":
+ {
+ "name": "http://example.com/person#name",
+ "details": "http://example.com/person#details"
+ },</span>
+ "<span class="diff">name</span>": "Markus Lanthaler",
+ ...
+ "details":
+ {
+ <span class="diff">"@context": {
+ "name": "http://example.com/organization#name"
+ },</span>
+ "<span class="diff">name</span>": "Graz University of Technology"
+ }
+}</pre></div>
+
+ <p>In the example above, the <code>name</code> <a class="tref internalDFN" title="term" href="#dfn-term">term</a> is overridden
+ in the more deeply nested <code>details</code> structure. Note that this is
+ rarely a good authoring practice and is typically used when working with
+ legacy applications that depend on a specific structure of the
+ <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a>. If a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> is redefined within a
+ context, all previous rules associated with the previous definition are
+ removed. If a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> is redefined to <code>null</code>,
+ the <a class="tref internalDFN" title="term" href="#dfn-term">term</a> is effectively removed from the list of
+ <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> defined in the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a>.</p>
+
+ <p>Multiple contexts may be combined using an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>, which is processed
+ in order. The set of contexts defined within a specific <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> are
+ referred to as <dfn title="local_context" id="dfn-local_context">local contexts</dfn>. The
+ <dfn title="active_context" id="dfn-active_context">active context</dfn> refers to the accumulation of
+ <a class="tref internalDFN" title="local_context" href="#dfn-local_context">local contexts</a> that are in scope at a
+ specific point within the document. Setting a <a class="tref internalDFN" title="local_context" href="#dfn-local_context">local context</a>
+ to <code>null</code> effectively resets the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a>
+ to an empty context. The following example specifies an external context
+ and then layers an embedded context on top of the external context:</p>
+
+ <div class="example"><div class="example-title"><span>Example 25</span>: Combining external and local contexts</div><pre class="example">{
+ <span class="diff">"@context": [
+ "http://json-ld.org/contexts/person.jsonld",
+ {
+ "pic": "http://xmlns.com/foaf/0.1/depiction"
+ }
+ ],</span>
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ <span class="diff">"pic": "http://twitter.com/account/profile_image/manusporny"</span>
+}</pre></div>
+
+ <div class="note"><div class="note-title"><span>Note</span></div><p class="">It is a best practice to put the <a class="tref internalDFN" title="context" href="#dfn-context">context</a> definition
+ at the top of the JSON-LD document.</p></div>
+
+ <div class="note"><div class="note-title"><span>Note</span></div><p class="">While it is possible to define a <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, or
+ an <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> to expand to some other unrelated <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>
+ (for example, <code>foaf:name</code> expanding to
+ <code>http://example.org/unrelated#species</code>), such usage is strongly
+ discouraged.</p></div>
+
+ <div class="note"><div class="note-title"><span>Note</span></div><p class="">To avoid forward-compatibility issues,
+ <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> starting with an <code>@</code> character are
+ to be avoided as they might be used as <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a>
+ in future versions of JSON-LD. Furthermore, the use of empty
+ <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> (<code>""</code>) is discouraged as not all
+ programming languages are able to handle empty property names.</p></div>
+
+ <section id="interpreting-json-as-json-ld">
+ <h4><span class="secno">6.4.1 </span>Interpreting JSON as JSON-LD</h4>
+
+ <p>Ordinary JSON documents can be interpreted as JSON-LD by referencing a JSON-LD
+ <a class="tref internalDFN" title="context" href="#dfn-context">context</a> document in an HTTP Link Header. Doing so allows JSON to
+ be unambiguously machine-readable without requiring developers to drastically
+ change their markup and provides an upgrade path for existing infrastructure
+ without breaking existing clients that rely on the <code>application/json</code>
+ media type.</p>
+
+ <p>In order to use an external context with an ordinary JSON document, an author
+ <em class="rfc2119" title="must">must</em> specify an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> to a valid <a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">JSON-LD document</a> in
+ an HTTP Link Header [<cite><a class="bibref" href="#bib-RFC5988">RFC5988</a></cite>] using the <code>http://www.w3.org/ns/json-ld#context</code>
+ link relation. The referenced document <em class="rfc2119" title="must">must</em> have a top-level <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a>.
+ The <code>@context</code> subtree within that object is added to the top-level
+ <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> of the referencing document. If an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>
+ is at the top-level of the referencing document and its items are
+ <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON objects</a>, the <code>@context</code>
+ subtree is added to all <a class="tref internalDFN" title="array" href="#dfn-array">array</a> items. All extra information located outside
+ of the <code>@context</code> subtree in the referenced document <em class="rfc2119" title="must">must</em> be
+ discarded. Effectively this means that the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a> is
+ initialized with the referenced external <a class="tref internalDFN" title="context" href="#dfn-context">context</a>.</p>
+
+ <p>The following example demonstrates the use of an external context with an
+ ordinary JSON document:</p>
+
+ <div class="example"><div class="example-title"><span>Example 26</span>: Referencing a JSON-LD context from a JSON document via an HTTP Link Header</div><pre class="example">GET /ordinary-json-document.json HTTP/1.1
+Host: example.com
+Accept: application/ld+json,application/json,*/*;q=0.1
+
+====================================
+
+HTTP/1.0 200 OK
+...
+Content-Type: <span class="diff">application/json</span>
+<span class="diff">Link: <http://json-ld.org/contexts/person.jsonld>; rel="http://www.w3.org/ns/json-ld#context"; type="application/ld+json"</span>
+
+{
+ "name": "Markus Lanthaler",
+ "homepage": "http://www.markus-lanthaler.com/",
+ "image": "http://twitter.com/account/profile_image/markuslanthaler"
+}</pre></div>
+
+ <p>Please note that <a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">JSON-LD documents</a>
+ served with the <code>application/ld+json</code>
+ media type <em class="rfc2119" title="must">must</em> have all context information, including references to external
+ contexts, within the body of the document. Contexts linked via a
+ <code>http://www.w3.org/ns/json-ld#context</code> HTTP Link Header <em class="rfc2119" title="must">must</em> be
+ ignored for such documents.</p>
+ </section>
+</section>
+
+<section id="string-internationalization">
+ <h3><span class="secno">6.5 </span>String Internationalization</h3>
+
+ <p>At times, it is important to annotate a <a class="tref internalDFN" title="string" href="#dfn-string">string</a>
+ with its language. In JSON-LD this is possible in a variety of ways.
+ First, it is possible to define a default language for a JSON-LD document
+ by setting the <code>@language</code> key in the <a class="tref internalDFN" title="context" href="#dfn-context">context</a>:</p>
+
+ <div class="example"><div class="example-title"><span>Example 27</span>: Setting the default language of a JSON-LD document</div><pre class="example">{
+ <span class="diff">"@context":
+ {
+ ...
+ "@language": "ja"
+ }</span>,
+ "name": <span class="diff">"花澄"</span>,
+ "occupation": <span class="diff">"科学者"</span>
+}</pre></div>
+
+ <p>The example above would associate the <code>ja</code> language
+ code with the two <a class="tref internalDFN" title="string" href="#dfn-string">strings</a> <em>花澄</em> and <em>科学者</em>.
+ Languages codes are defined in [<cite><a class="bibref" href="#bib-BCP47">BCP47</a></cite>].</p>
+
+ <p>To clear the default language for a subtree, <code>@language</code> can
+ be set to <code>null</code> in a <a class="tref internalDFN" title="local_context" href="#dfn-local_context">local context</a> as follows:</p>
+
+ <div class="example"><div class="example-title"><span>Example 28</span>: Clearing default language</div><pre class="example">{
+ "@context": {
+ ...
+ "@language": "ja"
+ },
+ "name": "花澄",
+ "details": {
+<span class="diff"> "@context": {
+ "@language": null
+ }</span>,
+ "occupation": "Ninja"
+ }
+}</pre></div>
+
+ <p>Second, it is possible to associate a language with a specific <a class="tref internalDFN" title="term" href="#dfn-term">term</a>
+ using an <a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">expanded term definition</a>:</p>
+
+ <div class="example"><div class="example-title"><span>Example 29</span>: Expanded term definition with language</div><pre class="example">{
+ "@context": {
+ ...
+ "ex": "http://example.com/vocab/",
+ "@language": "ja",
+ "name": { "@id": "ex:name", <span class="diff">"@language": null</span> },
+ "occupation": { "@id": "ex:occupation" },
+ "occupation_en": { "@id": "ex:occupation", <span class="diff">"@language": "en"</span> },
+ "occupation_cs": { "@id": "ex:occupation", <span class="diff">"@language": "cs"</span> }
+ },
+ <span class="diff">"name": "Yagyū Muneyoshi",
+ "occupation": "忍者",
+ "occupation_en": "Ninja",
+ "occupation_cs": "Nindža",</span>
+ ...
+}</pre></div>
+
+ <p>The example above would associate <em>忍者</em> with the specified default
+ language code <code>ja</code>, <em>Ninja</em> with the language code
+ <code>en</code>, and <em>Nindža</em> with the language code <code>cs</code>.
+ The value of <code>name</code>, <em>Yagyū Muneyoshi</em> wouldn't be
+ associated with any language code since <code>@language</code> was reset to
+ <a class="tref internalDFN" title="null" href="#dfn-null">null</a> in the <a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">expanded term definition</a>.</p>
+
+ <div class="note"><div class="note-title"><span>Note</span></div><p class="">Language associations can only be applied to plain
+ literal <a class="tref internalDFN" title="string" href="#dfn-string">strings</a>.
+ <a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">Typed values</a> or values that are subject
+ to <a href="#type-coercion" class="sec-ref"><span class="secno">6.3</span> <span class="sec-title">Type Coercion</span></a> cannot be language tagged.</p></div>
+
+ <p>Just as in the example above, systems often need to express the value of a
+ property in multiple languages. Typically, such systems also try to ensure that
+ developers have a programmatically easy way to navigate the data structures for
+ the language-specific data. In this case, <a class="tref internalDFN" title="language_map" href="#dfn-language_map">language maps</a>
+ may be utilized.</p>
+
+ <div class="example"><div class="example-title"><span>Example 30</span>: Language map expressing a property in three languages</div><pre class="example">{
+ "@context":
+ {
+ ...
+ "occupation": { "@id": "ex:occupation", <span class="diff">"@container": "@language"</span> }
+ },
+ "name": "Yagyū Muneyoshi",
+ "occupation":
+ <span class="diff">{
+ "ja": "忍者",
+ "en": "Ninja",
+ "cs": "Nindža"
+ }</span>
+ ...
+}</pre></div>
+
+ <p>The example above expresses exactly the same information as the previous
+ example but consolidates all values in a single property. To access the
+ value in a specific language in a programming language supporting dot-notation
+ accessors for object properties, a developer may use the
+ <code>property.language</code> pattern. For example, to access the occupation
+ in English, a developer would use the following code snippet:
+ <code>obj.occupation.en</code>.</p>
+
+ <p>Third, it is possible to override the default language by using an
+ <a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">expanded value</a>:</p>
+
+ <div class="example"><div class="example-title"><span>Example 31</span>: Overriding default language using an expanded value</div><pre class="example">{
+ "@context": {
+ ...
+ "@language": "ja"
+ },
+ "name": "花澄",
+ "occupation": <span class="diff">{
+ "@value": "Scientist",
+ "@language": "en"
+ }</span>
+}</pre></div>
+
+ <p>This makes it possible to specify a plain string by omitting the
+ <code>@language</code> tag or setting it to <code>null</code> when expressing
+ it using an <a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">expanded value</a>:</p>
+
+ <div class="example"><div class="example-title"><span>Example 32</span>: Removing language information using an expanded value</div><pre class="example">{
+ "@context": {
+ ...
+ "@language": "ja"
+ },
+ "name": <span class="diff">{
+ "@value": "Frank"
+ }</span>,
+ "occupation": {
+ "@value": "Ninja",
+ "@language": "en"
+ },
+ "speciality": "手裏剣"
+}</pre></div>
+
+</section>
+
+<section id="overriding-vocab">
+<h3><span class="secno">6.6 </span>Overriding @vocab</h3>
+ <p>If <code>@vocab</code> is used but certain keys in an
+ <a class="tref internalDFN" title="json_object" href="#dfn-json_object">object</a> should not be expanded using
+ the vocabulary <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> can be explicitly set
+ to <a class="tref internalDFN" title="null" href="#dfn-null">null</a> in the <a class="tref internalDFN" title="context" href="#dfn-context">context</a>. For instance, in the
+ example below the <code>databaseId</code> member would be ignored by a
+ JSON-LD processor.</p><p></p>
+
+ <div class="example"><div class="example-title"><span>Example 33</span>: Using the null keyword to ignore data</div><pre class="example">{
+ "@context":
+ {
+ "@vocab": "http://schema.org/",
+ <span class="diff">"databaseId": null</span>
+ },
+ "name": "Gregg Kellogg",
+ <span class="diff">"databaseId": "23987520"</span>
+}</pre></div>
+</section>
+
+<section id="property-generators">
+<h3><span class="secno">6.7 </span>Property Generators</h3>
+
+<p>At times, an author may find that they need to express the same value for
+multiple properties. The simplest approach to accomplish this goal would be
+to do the following:</p>
+
+<div class="example"><div class="example-title"><span>Example 34</span>: Verbose expression of multiple properties with the same value</div><pre class="example">{
+ "@context":
+ {
+ <span class="diff">"title1": "http://purl.org/dc/terms/title"</span>,
+ <span class="diff">"title2": "http://schema.org/name"</span>,
+ <span class="diff">"title3": "http://www.w3.org/2000/01/rdf-schema#label"</span>
+ },
+ "@id": "http://example.com/book",
+ <span class="diff">"title1": "The Count of Monte Cristo"</span>,
+ <span class="diff">"title2": "The Count of Monte Cristo"</span>,
+ <span class="diff">"title3": "The Count of Monte Cristo"</span>
+}</pre></div>
+
+<p>Unfortunately, the approach above produces redundant data and would become a
+publishing burden for large data sets.
+In these situations, the author may use
+a <dfn title="property_generator" id="dfn-property_generator">property generator</dfn> to express a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> that maps to
+multiple <a class="tref internalDFN" title="property" href="#dfn-property">properties</a> in the <a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">JSON-LD graph</a>.
+This method can be accomplished by using the following markup pattern:</p>
+
+<div class="example"><div class="example-title"><span>Example 35</span>: Generating multiple properties using a single term</div><pre class="example">{
+ "@context":
+ {
+ <span class="diff">"title": { "@id": [ "http://purl.org/dc/terms/title",
+ "http://schema.org/name",
+ "http://www.w3.org/2000/01/rdf-schema#label" ] }</span>
+ },
+ "@id": "http://example.com/book",
+ <span class="diff">"title": "The Count of Monte Cristo"</span>
+}</pre></div>
+
+<p>While the term above is only used once outside of the <code>@context</code>,
+the document above will be interpreted like so:</p>
+
+<table class="example">
+<thead>
+ <tr><th>Subject</th>
+ <th>Property</th>
+ <th>Value</th>
+</tr></thead>
+<tbody>
+<tr>
+ <td>http://example.com/book</td>
+ <td>http://purl.org/dc/terms/title</td>
+ <td>The Count of Monte Cristo</td>
+</tr>
+<tr>
+ <td>http://example.com/book</td>
+ <td>http://schema.org/name</td>
+ <td>The Count of Monte Cristo</td>
+</tr>
+<tr>
+ <td>http://example.com/book</td>
+ <td>http://www.w3.org/2000/01/rdf-schema#label</td>
+ <td>The Count of Monte Cristo</td>
+</tr>
+</tbody>
+</table>
+
+</section>
+
+<section id="iri-expansion-within-a-context">
+ <h3><span class="secno">6.8 </span><abbr title="Internationalized Resource Identifier">IRI</abbr> Expansion Within a Context</h3>
+ <p>In general, normal <abbr title="Internationalized Resource Identifier">IRI</abbr> expansion rules apply
+ anywhere an <abbr title="Internationalized Resource Identifier">IRI</abbr> is expected (see <a href="#iris" class="sec-ref"><span class="secno">5.2</span> <span class="sec-title">IRIs</span></a>). Within
+ a <a class="tref internalDFN" title="context" href="#dfn-context">context</a> definition, this can mean that terms defined
+ within the context may also be used within that context as long as
+ there are no circular dependencies. For example, it is common to use
+ the <code>xsd</code> namespace when defining <a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">typed value</a>s:</p>
+<div class="example"><div class="example-title"><span>Example 36</span>: IRI expansion within a context</div><pre class="example">{
+ "@context":
+ {
+ <span class="diff">"xsd": "http://www.w3.org/2001/XMLSchema#"</span>,
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "age":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/age",
+ "@type": <span class="diff">"xsd:integer"</span>
+ },
+ "homepage":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+ }
+ },
+ ...
+}</pre></div>
+<p>In this example, the <code>xsd</code> <a class="tref internalDFN" title="term" href="#dfn-term">term</a> is defined
+ and used as a <a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a> for the <code>@type</code> coercion
+ of the <code>age</code> property.</p>
+
+<p><a class="tref internalDFN" title="term" href="#dfn-term">Terms</a> may also be used when defining the <abbr title="Internationalized Resource Identifier">IRI</abbr> of another
+<a class="tref internalDFN" title="term" href="#dfn-term">term</a>:</p>
+
+<div class="example"><div class="example-title"><span>Example 37</span>: Using a term to define the IRI of another term within a context</div><pre class="example">{
+ "@context":
+ {
+ <span class="diff">"foaf": "http://xmlns.com/foaf/0.1/"</span>,
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
+ "name": <span class="diff">"foaf:name"</span>,
+ "age":
+ {
+ "@id": <span class="diff">"foaf:age"</span>,
+ "@type": "xsd:integer"
+ },
+ "homepage":
+ {
+ "@id": <span class="diff">"foaf:homepage"</span>,
+ "@type": "@id"
+ }
+ },
+ ...
+}</pre></div>
+
+<p><a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">Compact IRIs</a>
+ and <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> may be used on the left-hand side of a
+ <a class="tref internalDFN" title="term" href="#dfn-term">term</a> definition.</p>
+
+<div class="example"><div class="example-title"><span>Example 38</span>: Using a compact IRI as a term</div><pre class="example">{
+ "@context":
+ {
+ <span class="diff">"foaf": "http://xmlns.com/foaf/0.1/"</span>,
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
+ "name": "foaf:name",
+ "<span class="diff">foaf:age</span>":
+ {
+ "@type": "xsd:integer"
+ },
+ "<span class="diff">foaf:homepage</span>":
+ <span class="diff">{
+ "@type": "@id"
+ }</span>
+ },
+ ...
+}</pre></div>
+
+<p>
+In this example, the <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> form is used in two different
+ways.
+In the first approach, <code>foaf:age</code> declares both the
+<a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> for the <a class="tref internalDFN" title="term" href="#dfn-term">term</a> (using short-form) as well as the
+<code>@type</code> associated with the <a class="tref internalDFN" title="term" href="#dfn-term">term</a>. In the second
+approach, only the <code>@type</code> associated with the <a class="tref internalDFN" title="term" href="#dfn-term">term</a> is
+specified. The full <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> for
+<code>foaf:homepage</code> is determined by looking up the <code>foaf</code>
+<a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a> in the
+<a class="tref internalDFN" title="context" href="#dfn-context">context</a>.
+</p>
+
+<p>
+<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">Absolute IRIs</a> may also be used in the key position in a <a class="tref internalDFN" title="context" href="#dfn-context">context</a>:
+</p>
+
+<div class="example"><div class="example-title"><span>Example 39</span>: Associating context definitions with absolute IRIs</div><pre class="example">{
+ "@context":
+ {
+ "foaf": "http://xmlns.com/foaf/0.1/",
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
+ "name": "foaf:name",
+ "foaf:age":
+ {
+ "@id": "foaf:age",
+ "@type": "xsd:integer"
+ },
+ "<span class="diff">http://xmlns.com/foaf/0.1/homepage</span>":
+ {
+ "@type": "@id"
+ }
+ },
+ ...
+}</pre></div>
+
+<p>
+In order for the <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> to match above, the <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> needs to be used in the <a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">JSON-LD document</a>. Also note that <code>foaf:homepage</code>
+will not use the <code>{ "@type": "@id" }</code> declaration because
+<code>foaf:homepage</code> is not the same as
+<code>http://xmlns.com/foaf/0.1/homepage</code>. That is, <a class="tref internalDFN" title="term" href="#dfn-term">terms</a>
+are looked up in a <a class="tref internalDFN" title="context" href="#dfn-context">context</a> using direct string comparison before the
+<a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a> lookup mechanism is applied.
+</p>
+
+<p>The only exception for using terms in the <a class="tref internalDFN" title="context" href="#dfn-context">context</a> is that
+ circular definitions are not allowed. That is,
+ a definition of <em>term1</em> cannot depend on the
+ definition of <em>term2</em> if <em>term2</em> also depends on
+ <em>term1</em>. For example, the following <a class="tref internalDFN" title="context" href="#dfn-context">context</a> definition
+ is illegal:</p>
+<div class="example"><div class="example-title"><span>Example 40</span>: Illegal circular definition of terms within a context</div><pre class="example">{
+ "@context":
+ {
+ <span class="diff">"term1": "term2:foo",
+ "term2": "term1:bar"</span>
+ },
+ ...
+}</pre></div>
+</section>
+
+<section id="sets-and-lists">
+<h3><span class="secno">6.9 </span>Sets and Lists</h3>
+
+<p>A JSON-LD author can express multiple values in a compact way by using
+ <a class="tref internalDFN" title="array" href="#dfn-array">arrays</a>. Since graphs do not describe ordering for links
+ between nodes, arrays in JSON-LD do not provide an ordering of the
+ contained elements by default. This is exactly the opposite from regular JSON
+ arrays, which are ordered by default. For example, consider the following
+ simple document:</p>
+
+<div class="example"><div class="example-title"><span>Example 41</span>: Multiple values with no inherent order</div><pre class="example">{
+...
+ "@id": "http://example.org/people#joebob",
+ "nick": <span class="diff">[ "joe", "bob", "JB" ]</span>,
+...
+}</pre></div>
+
+<p>The markup shown above would result in the following data being generated,
+ each relating the node to an individual value, with no inherent order:</p>
+
+<table class="example">
+<thead>
+ <tr><th>Subject</th>
+ <th>Property</th>
+ <th>Value</th>
+</tr></thead>
+<tbody>
+<tr>
+ <td>http://example.org/people#joebob</td>
+ <td>http://xmlns.com/foaf/0.1/nick</td>
+ <td>joe</td>
+</tr>
+<tr>
+ <td>http://example.org/people#joebob</td>
+ <td>http://xmlns.com/foaf/0.1/nick</td>
+ <td>bob</td>
+</tr>
+<tr>
+ <td>http://example.org/people#joebob</td>
+ <td>http://xmlns.com/foaf/0.1/nick</td>
+ <td>JB</td>
+</tr>
+</tbody>
+</table>
+
+<p>Multiple values may also be expressed using the expanded form:</p>
+
+<div class="example"><div class="example-title"><span>Example 42</span>: Using an expanded form to set multiple values</div><pre class="example">{
+ "@id": "http://example.org/articles/8",
+ "dc:title": <span class="diff">
+ [
+ {
+ "@value": "Das Kapital",
+ "@language": "de"
+ },
+ {
+ "@value": "Capital",
+ "@language": "en"
+ }
+ ]</span>
+}</pre></div>
+
+<p>The markup shown above would generate the following data, again with
+ no inherent order:</p>
+
+<table class="example">
+<thead>
+ <tr><th>Subject</th>
+ <th>Property</th>
+ <th>Value</th>
+ <th>Language</th>
+</tr></thead>
+<tbody>
+<tr>
+ <td>http://example.org/articles/8</td>
+ <td>http://purl.org/dc/terms/title</td>
+ <td>Das Kapital</td>
+ <td>de</td>
+</tr>
+<tr>
+ <td>http://example.org/articles/8</td>
+ <td>http://purl.org/dc/terms/title</td>
+ <td>Capital</td>
+ <td>en</td>
+</tr>
+</tbody>
+</table>
+
+<p>As the notion of ordered collections is rather important in data
+ modeling, it is useful to have specific language support. In JSON-LD,
+ a list may be represented using the <code>@list</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> as follows:</p>
+<div class="example"><div class="example-title"><span>Example 43</span>: An ordered collection of values in JSON-LD</div><pre class="example">{
+...
+ "@id": "http://example.org/people#joebob",
+ "foaf:nick":
+ <span class="diff">{
+ "@list": [ "joe", "bob", "jaybee" ]
+ }</span>,
+...
+}</pre></div>
+
+<p>This describes the use of this <a class="tref internalDFN" title="array" href="#dfn-array">array</a> as being ordered,
+ and order is maintained when processing a document. If every use of a given multi-valued
+ property is a list, this may be abbreviated by setting <code>@container</code>
+ to <code>@list</code> in the <a class="tref internalDFN" title="context" href="#dfn-context">context</a>:</p>
+<div class="example"><div class="example-title"><span>Example 44</span>: Specifying that a collection is ordered in the context</div><pre class="example">{
+ <span class="diff">"@context":
+ {
+ ...
+ "nick":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/nick",
+ "@container": "@list"
+ }
+ }</span>,
+...
+ "@id": "http://example.org/people#joebob",
+ "nick": <span class="diff">[ "joe", "bob", "jaybee" ]</span>,
+...
+}</pre></div>
+
+<div class="note"><div class="note-title"><span>Note</span></div><p class="">List of lists are not allowed in this version of JSON-LD.
+ This decision was made due to the extreme amount of added complexity when
+ processing lists of lists.</p></div>
+
+<p>While <code>@list</code> is used to describe <em>ordered sets</em>,
+ the <code>@set</code> keyword is used to describe <em>unordered sets</em>.
+ The use of <code>@set</code> in the body of a JSON-LD document
+ is optimized away when processing the document, as it is just syntactic
+ sugar. However, <code>@set</code> is helpful when used within the context
+ of a document.
+ Values of terms associated with a <code>@set</code> or <code>@list</code> container
+ are always represented in the form of an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>,
+ even if there is just a single value that would otherwise be optimized to
+ a non-array form in compact form (see
+ <a href="#compact-document-form" class="sec-ref"><span class="secno">6.15</span> <span class="sec-title">Compact Document Form</span></a>). This makes post-processing of
+ JSON-LD documents easier as the data is always in array form, even if the
+ array only contains a single value.</p>
+
+<div class="note"><div class="note-title"><span>Note</span></div><p class="">The use of <code>@container</code> in the body of a JSON-LD
+ document has no meaning and is not allowed by the JSON-LD grammar
+ (see <a href="#json-ld-grammar" class="sec-ref"><span class="secno">B.</span> <span class="sec-title">JSON-LD Grammar</span></a>).</p></div>
+
+</section>
+
+<section id="embedding">
+ <h3><span class="secno">6.10 </span>Embedding</h3>
+
+ <p><dfn title="embedding" id="dfn-embedding">Embedding</dfn> is a JSON-LD feature that allows an author to
+ use <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node objects</a> as
+ <a class="tref internalDFN" title="property" href="#dfn-property">property</a> values. This is a commonly used mechanism for
+ creating a parent-child relationship between two <a class="tref internalDFN" title="node" href="#dfn-node">nodes</a>.</p>
+
+ <p>The example shows two nodes related by a property from the first node:</p>
+
+ <div class="example"><div class="example-title"><span>Example 45</span>: Embedding a node object as property value of another node object</div><pre class="example">{
+...
+ "name": "Manu Sporny",
+ "<span class="diff">knows</span>":
+ {
+ "<span class="diff">@type</span>": "<span class="diff">Person</span>",
+ "<span class="diff">name</span>": "<span class="diff">Gregg Kellogg</span>",
+ }
+...
+}</pre></div>
+
+ <p>
+ A <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a>, like the one used above, may be used in
+ any value position in the body of a JSON-LD document.</p>
+</section>
+
+<section id="named-graphs">
+ <h3><span class="secno">6.11 </span>Named Graphs</h3>
+
+ <p>At times, it is necessary to make statements about a <a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">JSON-LD graph</a>
+ itself, rather than just a single <a class="tref internalDFN" title="node" href="#dfn-node">node</a>. This can be done by
+ grouping a set of <a class="tref internalDFN" title="node" href="#dfn-node">nodes</a> using the <code>@graph</code>
+ <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>. A developer may also name data expressed using the
+ <code>@graph</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> by pairing it with an
+ <code>@id</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> as shown in the following example:</p>
+
+ <div class="example"><div class="example-title"><span>Example 46</span>: Identifying and making statements about a graph</div><pre class="example">{
+ "@context": {
+ "generatedAt": "http://www.w3.org/ns/prov#generatedAtTime",
+ "Person": "http://xmlns.com/foaf/0.1/Person",
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "knows": "http://xmlns.com/foaf/0.1/knows",
+ "xsd": "http://www.w3.org/2001/XMLSchema#"
+ },
+ <span class="diff">"@id": "http://example.org/graphs/73",
+ "generatedAt": { "@value": "2012-04-09", "@type": "xsd:date" },
+ "@graph":</span>
+ [
+ {
+ "@id": "http://manu.sporny.org/i/public",
+ "@type": "Person",
+ "name": "Manu Sporny",
+ "knows": "http://greggkellogg.net/foaf#me"
+ },
+ {
+ "@id": "http://greggkellogg.net/foaf#me",
+ "@type": "Person",
+ "name": "Gregg Kellogg",
+ "knows": "http://manu.sporny.org/i/public"
+ }
+ ]
+}</pre></div>
+
+ <p>The example above expresses a <em>named</em> <a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">JSON-LD graph</a>
+ that is identified by the <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>
+ <code>http://example.org/graphs/73</code>. That graph is composed of the
+ statements about Manu and Gregg. Metadata about the graph itself is also
+ expressed via the <code>generatedAt</code> property, which specifies when
+ the graph was generated. An alternative view of the
+ information above is represented in table form below:</p>
+
+ <table class="example">
+ <thead>
+ <tr><th>Graph</th>
+ <th>Subject</th>
+ <th>Property</th>
+ <th>Value</th>
+ <th>Value Type</th>
+ </tr></thead>
+ <tbody>
+ <tr>
+ <td>http://example.org/graphs/73</td>
+ <td>http://example.org/graphs/73</td>
+ <td>http://www.w3.org/ns/prov#generatedAtTime</td>
+ <td>2012-04-09</td>
+ <td>http://www.w3.org/2001/XMLSchema#date</td>
+ </tr>
+ <tr>
+ <td>http://example.org/graphs/73</td>
+ <td>http://manu.sporny.org/i/public</td>
+ <td>http://www.w3.org/2001/XMLSchema#type</td>
+ <td>http://xmlns.com/foaf/0.1/Person</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>http://example.org/graphs/73</td>
+ <td>http://manu.sporny.org/i/public</td>
+ <td>http://xmlns.com/foaf/0.1/name</td>
+ <td>Manu Sporny</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>http://example.org/graphs/73</td>
+ <td>http://manu.sporny.org/i/public</td>
+ <td>http://xmlns.com/foaf/0.1/knows</td>
+ <td>http://greggkellogg.net/foaf#me</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>http://example.org/graphs/73</td>
+ <td>http://greggkellogg.net/foaf#me</td>
+ <td>http://www.w3.org/2001/XMLSchema#type</td>
+ <td>http://xmlns.com/foaf/0.1/Person</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>http://example.org/graphs/73</td>
+ <td>http://greggkellogg.net/foaf#me</td>
+ <td>http://xmlns.com/foaf/0.1/name</td>
+ <td>Gregg Kellogg</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>http://example.org/graphs/73</td>
+ <td>http://greggkellogg.net/foaf#me</td>
+ <td>http://xmlns.com/foaf/0.1/knows</td>
+ <td>http://manu.sporny.org/i/public</td>
+ <td></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>When <code>@graph</code> is used in a document's top-level object which
+ has no other <a class="tref internalDFN" title="property" href="#dfn-property">properties</a> that are mapped
+ to an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or a <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> it is considered to
+ express the otherwise implicit default graph. This mechanism can be useful
+ when a number of <a class="tref internalDFN" title="node" href="#dfn-node">nodes</a> do not directly
+ relate to one another through a property or where <a class="tref internalDFN" title="embedding" href="#dfn-embedding">embedding</a>
+ is not desirable to the application. For example:</p>
+
+ <div class="example"><div class="example-title"><span>Example 47</span>: Using @graph to explicitly express the default graph</div><pre class="example">{
+ "@context": ...,
+ "<span class="diff">@graph</span>":
+ [
+ {
+ "@id": "http://manu.sporny.org/i/public",
+ "@type": "foaf:Person",
+ "name": "Manu Sporny",
+ "knows": "http://greggkellogg.net/foaf#me"
+ },
+ {
+ "@id": "http://greggkellogg.net/foaf#me",
+ "@type": "foaf:Person",
+ "name": "Gregg Kellogg",
+ "knows": "http://manu.sporny.org/i/public"
+ }
+ ]
+}</pre></div>
+
+ <p>In this case, embedding doesn't work as each <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a>
+ references the other. Using the <code>@graph</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>
+ allows multiple <a class="tref internalDFN" title="node" href="#dfn-node">nodes</a> to be defined within an
+ <a class="tref internalDFN" title="array" href="#dfn-array">array</a>, and allows the use of a shared <a class="tref internalDFN" title="context" href="#dfn-context">context</a>.
+ This is equivalent to using multiple
+ <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node objects</a> in array and defining
+ the <code>@context</code> within each <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a>:</p>
+
+ <div class="example"><div class="example-title"><span>Example 48</span>: Context needs to be duplicated if @graph is not used</div><pre class="example">[
+ {
+ <span class="diff">"@context": ...,</span>
+ "@id": "http://manu.sporny.org/i/public",
+ "@type": "foaf:Person",
+ "name": "Manu Sporny",
+ "knows": "http://greggkellogg.net/foaf#me"
+ },
+ {
+ <span class="diff">"@context": ...,</span>
+ "@id": "http://greggkellogg.net/foaf#me",
+ "@type": "foaf:Person",
+ "name": "Gregg Kellogg",
+ "knows": "http://manu.sporny.org/i/public"
+ }
+]</pre></div>
+
+</section>
+
+<section id="identifying-blank-nodes">
+ <h3><span class="secno">6.12 </span>Identifying Blank Nodes</h3>
+
+ <p>At times, it becomes necessary to be able to express information without
+ being able to uniquely identify the <a class="tref internalDFN" title="node" href="#dfn-node">node</a>.
+ This type of node is called a <a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">blank node</a>
+ (see <cite><a href="http://www.w3.org/TR/rdf11-concepts/#section-blank-nodes">Section 3.4: Blank Nodes</a></cite>
+ of [<cite><a class="bibref" href="#bib-RDF-CONCEPTS">RDF-CONCEPTS</a></cite>]). In JSON-LD, <a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">blank node identifiers</a> are
+ automatically created if an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> is not specified using the <code>@id</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>.
+ However, authors may provide identifiers for <a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">blank nodes</a>
+ by using the special <code>_</code> (underscore) <a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a>. This allows one
+ to reference the node locally within the document, but makes it impossible to reference
+ the node from an external document. The <a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">blank node identifier</a> is scoped
+ to the document in which it is used.</p>
+
+ <div class="example"><div class="example-title"><span>Example 49</span>: Specifying a local blank node identifier</div><pre class="example">{
+...
+ "@id": "<span class="diff">_:foo</span>",
+...
+}</pre></div>
+
+ <p>The example above would set the node to <code>_:foo</code>, which can
+ then be used elsewhere in the JSON-LD document to refer back to the
+ <a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">blank node</a>. If a developer finds that they refer to the <a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">blank node</a>
+ more than once, they should consider naming the node using a dereferenceable
+ <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> so that it can also be referenced from other documents.</p>
+</section>
+
+<section id="aliasing-keywords">
+ <h3><span class="secno">6.13 </span>Aliasing Keywords</h3>
+
+ <p>Each of the JSON-LD <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a>,
+ except for <code>@context</code>, may be aliased to application-specific
+ keywords. This feature allows legacy JSON content to be utilized
+ by JSON-LD by re-using JSON keys that already exist in legacy documents.
+ This feature also allows developers to design domain-specific implementations
+ using only the JSON-LD <a class="tref internalDFN" title="context" href="#dfn-context">context</a>.</p>
+
+ <div class="example"><div class="example-title"><span>Example 50</span>: Aliasing keywords</div><pre class="example">{
+ "@context":
+ {
+ <span class="diff">"url": "@id"</span>,
+ <span class="diff">"a": "@type"</span>,
+ "name": "http://xmlns.com/foaf/0.1/name"
+ },
+ "<span class="diff">url</span>": "http://example.com/about#gregg",
+ "<span class="diff">a</span>": "http://xmlns.com/foaf/0.1/Person",
+ "name": "Gregg Kellogg"
+}</pre></div>
+
+ <p>In the example above, the <code>@id</code> and <code>@type</code>
+ <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a> have been given the aliases
+ <strong>url</strong> and <strong>a</strong>, respectively.</p>
+
+ <p>Since keywords cannot be redefined, they can also not be aliased to
+ other keywords. Every statement in the context having a keyword
+ as the key (as in
+ <code style="white-space: nowrap">{ "@type": ... }</code>) will be
+ ignored when being processed.</p>
+</section>
+
+<section id="expanded-document-form">
+<h3><span class="secno">6.14 </span>Expanded Document Form</h3>
+<p>The JSON-LD Algorithms and API specification [<cite><a class="bibref" href="#bib-JSON-LD-API">JSON-LD-API</a></cite>]
+ defines a method for <em>expanding</em> a JSON-LD document.
+ Expansion is the process of taking a JSON-LD document and applying a
+ <code>@context</code> such that all IRIs, types, and values
+ are expanded so that the <code>@context</code> is no longer necessary.</p>
+
+<p>For example, assume the following JSON-LD input document:</p>
+
+<div class="example"><div class="example-title"><span>Example 51</span>: Sample JSON-LD document</div><pre class="example">{
+ "@context":
+ {
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "homepage": {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+ }
+ },
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/"
+}</pre></div>
+
+<p>Running the JSON-LD Expansion algorithm against the JSON-LD input document
+ provided above would result in the following output:</p>
+
+<div class="example"><div class="example-title"><span>Example 52</span>: Expanded form for the previous example</div><pre class="example">[
+ {
+ "http://xmlns.com/foaf/0.1/name": [
+ { "@value": "Manu Sporny" }
+ ],
+ "http://xmlns.com/foaf/0.1/homepage": [
+ { "@id": "http://manu.sporny.org/" }
+ ]
+ }
+]</pre></div>
+
+<p>Expanded document form is useful when an application has to process input
+data in a deterministic form. It has been optimized to ensure that the code
+that developers have to write is minimized compared to the code that would
+have to be written to operate on
+<a href="#compact-document-form" class="sec-ref"><span class="secno">6.15</span> <span class="sec-title">Compact Document Form</span></a>.</p>
+
+</section>
+
+<section id="compact-document-form">
+<h3><span class="secno">6.15 </span>Compact Document Form</h3>
+<p>The JSON-LD Algorithms and API specification [<cite><a class="bibref" href="#bib-JSON-LD-API">JSON-LD-API</a></cite>]
+ defines a method for <em>compacting</em> a JSON-LD document.
+ Compaction is the process of taking a JSON-LD document and applying a
+ context such that a very compact form of the document is generated.
+ At times, a JSON-LD document may be received that is not in its most
+ compact form. The JSON-LD Algorithms, via an API, provides a way to compact a
+ JSON-LD document.</p>
+
+<p>For example, assume the following JSON-LD input document:</p>
+
+<div class="example"><div class="example-title"><span>Example 53</span>: Sample expanded JSON-LD document</div><pre class="example">[
+ {
+ "http://xmlns.com/foaf/0.1/name": [ "Manu Sporny" ],
+ "http://xmlns.com/foaf/0.1/homepage": [
+ {
+ "@id": "http://manu.sporny.org/"
+ }
+ ]
+ }
+]</pre></div>
+
+<p>Additionally, assume the following developer-supplied JSON-LD context:</p>
+
+<div class="example"><div class="example-title"><span>Example 54</span>: Sample context</div><pre class="example">{
+ "@context": {
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "homepage": {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+ }
+ }
+}</pre></div>
+
+<p>Running the JSON-LD Compaction algorithm given the context supplied above
+ against the JSON-LD input document provided above would result in the following
+ output:</p>
+
+<div class="example"><div class="example-title"><span>Example 55</span>: Compact form of the sample document once sample context has been applied</div><pre class="example">{
+ "@context": {
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "homepage": {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+ }
+ },
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/"
+}</pre></div>
+
+<p>The compaction algorithm enables a developer to map any document into an
+ application-specific compacted form. The process consists of
+ expanding the document (see <a href="#expanded-document-form" class="sec-ref"><span class="secno">6.14</span> <span class="sec-title">Expanded Document Form</span></a>) and then
+ using a developer-supplied context to compact the expanded document.
+ While the context provided above mapped <code>http://xmlns.com/foaf/0.1/name</code>
+ to <strong>name</strong>, it could have also mapped it to any arbitrary
+ <a class="tref internalDFN" title="term" href="#dfn-term">term</a> provided by the developer. This powerful mechanism allows
+ the developer to re-shape the incoming JSON data into a format that is
+ optimized for their application.</p>
+</section>
+
+<section id="data-indexing">
+ <h3><span class="secno">6.16 </span>Data Indexing</h3>
+
+ <p>Databases are typically used to make access to
+ data more efficient. Developers often extend this sort of functionality into
+ their application data to deliver similar performance gains. Often this
+ data does not have any meaning from a Linked Data standpoint, but is
+ still useful for an application.</p>
+
+ <p>JSON-LD introduces the notion of <a class="tref internalDFN" title="index_map" href="#dfn-index_map">index maps</a>
+ that can be used to structure data into a form that is
+ more efficient to access. The data indexing feature allows an author to
+ structure data using a simpley key-value map where the keys do not map
+ to <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>. This enables direct access to data
+ instead of having to scan an array in search of a specific item.
+ In JSON-LD such data can be specified by associating the
+ <code>@index</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> with a
+ <code>@container</code> declaration in the context:</p>
+
+ <div class="example"><div class="example-title"><span>Example 56</span>: Indexing data in JSON-LD</div><pre class="example">{
+ "@context":
+ {
+ "schema": "http://schema.org/",
+ "name": "schema:name",
+ "body": "schema:articleBody",
+ "words": "schema:wordCount",
+ "post": {
+ "@id": "schema:blogPost",
+ <span class="diff">"@container": "@index"</span>
+ }
+ },
+ "@id": "http://example.com/",
+ "@type": "schema:Blog",
+ "name": "World Financial News",
+ <span class="diff">"post": {
+ "en": {
+ "@id": "http://example.com/posts/1/en",
+ "body": "World commodities were up today with heavy trading of crude oil...",
+ "words": 1539
+ },
+ "de": {
+ "@id": "http://example.com/posts/1/de",
+ "body": "Die Werte an Warenbörsen stiegen im Sog eines starken Handels von Rohöl...",
+ "words": 1204
+ }</span>
+ }
+}</pre></div>
+
+ <p>In the example above, the <strong>blogPost</strong> <a class="tref internalDFN" title="term" href="#dfn-term">term</a> has
+ been marked as an <a class="tref internalDFN" title="index_map" href="#dfn-index_map">index map</a>. The <strong>en</strong>,
+ <strong>de</strong>, and <strong>ja</strong> keys will be ignored
+ semantically, but preserved syntactically, by the JSON-LD Processor.
+ This allows a developer to access the German version
+ of the <strong>blogPost</strong> using the following code snippet:
+ <code>obj.blogPost.de</code>.</p>
+
+ <p>The interpretation of the data above is expressed in
+ the table below. Note how the index keys do not appear in the Linked Data
+ below, but would continue to exist if the document were compacted or
+ expanded (see <a href="#compact-document-form" class="sec-ref"><span class="secno">6.15</span> <span class="sec-title">Compact Document Form</span></a> and
+ <a href="#expanded-document-form" class="sec-ref"><span class="secno">6.14</span> <span class="sec-title">Expanded Document Form</span></a>) using a JSON-LD processor:</p>
+
+ <table class="example">
+ <thead>
+ <tr><th>Subject</th>
+ <th>Property</th>
+ <th>Value</th>
+ </tr></thead>
+ <tbody>
+ <tr>
+ <td>http://example.com/</td>
+ <td>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</td>
+ <td>http://schema.org/Blog</td>
+ </tr>
+ <tr>
+ <td>http://example.com/</td>
+ <td>http://schema.org/name</td>
+ <td>World Financial News</td>
+ </tr>
+ <tr>
+ <td>http://example.com/</td>
+ <td>http://schema.org/blogPost</td>
+ <td>http://example.com/posts/1/en</td>
+ </tr>
+ <tr>
+ <td>http://example.com/</td>
+ <td>http://schema.org/blogPost</td>
+ <td>http://example.com/posts/1/de</td>
+ </tr>
+ <tr>
+ <td>http://example.com/posts/1/en</td>
+ <td>http://schema.org/articleBody</td>
+ <td>World commodities were up today with heavy trading of crude oil...</td>
+ </tr>
+ <tr>
+ <td>http://example.com/posts/1/en</td>
+ <td>http://schema.org/wordCount</td>
+ <td>1539</td>
+ </tr>
+ <tr>
+ <td>http://example.com/posts/1/de</td>
+ <td>http://schema.org/articleBody</td>
+ <td>Die Werte an Warenbörsen stiegen im Sog eines starken Handels von Rohöl...</td>
+ </tr>
+ <tr>
+ <td>http://example.com/posts/1/de</td>
+ <td>http://schema.org/wordCount</td>
+ <td>1204</td>
+ </tr>
+ </tbody>
+ </table>
+</section>
+
+</section>
+
+<section class="appendix normative" id="data-model">
+ <!--OddPage--><h2><span class="secno">A. </span>Data Model</h2>
+
+ <p>JSON-LD is a serialization format for <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a> based on JSON.
+ It is therefore important to distinguish between the syntax, which is defined
+ by JSON in [<cite><a class="bibref" href="#bib-RFC4627">RFC4627</a></cite>], and <dfn title="json-ld_data_model" id="dfn-json-ld_data_model">JSON-LD's data model</dfn>
+ which is defined as follows:</p>
+
+ <ul>
+ <li>A <dfn title="json-ld_document" id="dfn-json-ld_document">JSON-LD document</dfn> serializes a collection of
+ <a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">JSON-LD graphs</a> and comprises exactly one
+ <dfn title="default_graph" id="dfn-default_graph">default graph</dfn> and zero or more <dfn title="named_graph" id="dfn-named_graph">named graphs</dfn>.</li>
+ <li>The <a class="tref internalDFN" title="default_graph" href="#dfn-default_graph">default graph</a> does not have a name and <em class="rfc2119" title="may">may</em> be empty.</li>
+ <li>Each <a class="tref internalDFN" title="named_graph" href="#dfn-named_graph">named graph</a> is a pair consisting of a <dfn title="graph_name" id="dfn-graph_name">graph name</dfn>
+ and a <a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">JSON-LD graph</a>. The
+ <a class="tref internalDFN" title="graph_name" href="#dfn-graph_name">graph name</a> <em class="rfc2119" title="should">should</em> be an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or
+ <a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">blank node identifier</a>.</li>
+ <li>A <dfn title="json-ld_graph" id="dfn-json-ld_graph">JSON-LD graph</dfn> is a labeled directed graph containing
+ a set of zero or more <a class="tref internalDFN" title="node" href="#dfn-node">nodes</a> connected by
+ <a class="tref internalDFN" title="edge" href="#dfn-edge">edges</a>.</li>
+ <li>Every <dfn title="edge" id="dfn-edge">edge</dfn> has a direction associated with it and is labeled with
+ an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or a <a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">blank node identifier</a>. Within the JSON-LD syntax
+ these edge labels are called <dfn title="property" id="dfn-property">properties</dfn>.</li>
+ <li>Every <dfn title="node" id="dfn-node">node</dfn> is either an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
+ a <a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">blank node</a>, a <a class="tref internalDFN" title="json-ld_value" href="#dfn-json-ld_value">JSON-LD value</a>,
+ or a <a class="tref internalDFN" title="list" href="#dfn-list">list</a>.</li>
+ <li>A <a class="tref internalDFN" title="node" href="#dfn-node">node</a> having an outgoing edge <em class="rfc2119" title="must">must</em> be an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or a
+ <a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">blank node</a>.</li>
+ <li>A <a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">JSON-LD graph</a> <em class="rfc2119" title="must not">must not</em> contain unconnected <a class="tref internalDFN" title="node" href="#dfn-node">nodes</a>,
+ i.e., nodes which are not connected by an <a class="tref internalDFN" title="edge" href="#dfn-edge">edge</a> to any other <a class="tref internalDFN" title="node" href="#dfn-node">node</a>.</li>
+ <li>An <dfn title="iri" id="dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></dfn>
+ (Internationalized Resource Identifier) is a string that conforms to the syntax
+ defined in [<cite><a class="bibref" href="#bib-RFC3987">RFC3987</a></cite>]. <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> used within a
+ <a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">JSON-LD graph</a> <em class="rfc2119" title="should">should</em> return a <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a> document describing
+ the resource denoted by that <abbr title="Internationalized Resource Identifier">IRI</abbr> when being dereferenced.</li>
+ <li>A <dfn title="blank_node" id="dfn-blank_node">blank node</dfn> is a <a class="tref internalDFN" title="node" href="#dfn-node">node</a> which is not
+ an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>. A blank node <em class="rfc2119" title="may">may</em> be identified
+ using a <a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">blank node identifier</a>.</li>
+ <li>A <dfn title="blank_node_identifier" id="dfn-blank_node_identifier">blank node identifier</dfn> is a string that can be used as an identifier
+ for a <a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">blank node</a> within the scope of a <a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">JSON-LD document</a>.
+ Blank node identifiers begin with <code>_:</code>.</li>
+ <li>A <dfn title="json-ld_value" id="dfn-json-ld_value">JSON-LD value</dfn> is a <a class="tref internalDFN" title="string" href="#dfn-string">string</a>, a <a class="tref internalDFN" title="number" href="#dfn-number">number</a>,
+ <a class="tref internalDFN" title="true" href="#dfn-true">true</a> or <a class="tref internalDFN" title="false" href="#dfn-false">false</a>, a <a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">typed value</a>, or a
+ <a class="tref internalDFN" title="language-tagged_string" href="#dfn-language-tagged_string">language-tagged string</a>.</li>
+ <li>A <dfn title="typed_value" id="dfn-typed_value">typed value</dfn> consists of a value, which is a string, and a type, which is an <abbr title="Internationalized Resource Identifier">IRI</abbr>.</li>
+ <li>A <dfn title="language-tagged_string" id="dfn-language-tagged_string">language-tagged string</dfn> consists of a string and a non-empty language
+ tag as defined by [<cite><a class="bibref" href="#bib-BCP47">BCP47</a></cite>]. The language tag <em class="rfc2119" title="must">must</em> be well-formed according to section
+ <a href="http://tools.ietf.org/html/bcp47#section-2.2.9">2.2.9</a> of [<cite><a class="bibref" href="#bib-BCP47">BCP47</a></cite>], and <em class="rfc2119" title="must">must</em>
+ be lowercase.</li>
+ <li>A <dfn title="list" id="dfn-list">list</dfn> is an ordered sequence of zero or more
+ <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>,
+ <a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">blank nodes</a>, and
+ <a class="tref internalDFN" title="json-ld_value" href="#dfn-json-ld_value">JSON-LD values</a>.</li>
+ </ul>
+
+ <div class="issue"><div class="issue-title"><span>Issue 1</span></div><p class="">In contrast to the RDF data model as defined in [<cite><a class="bibref" href="#bib-RDF-CONCEPTS">RDF-CONCEPTS</a></cite>], JSON-LD allows
+ blank nodes as property labels and graph names. This feature is
+ controversial in the RDF WG and may be removed in the future.</p></div>
+
+ <p><a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">JSON-LD documents</a> <em class="rfc2119" title="may">may</em> contain data that cannot be
+ represented by the <a class="tref internalDFN" title="json-ld_data_model" href="#dfn-json-ld_data_model">data model</a> defined above.
+ Unless otherwise specified, such data is ignored when a <a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">JSON-LD document</a>
+ is being processed. This means, e.g., that properties which are not mapped to an
+ <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or <a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">blank node</a> will be ignored.</p>
+
+ <p style="text-align: center"><img src="linked-data-graph.png" title="An illustration of JSON-LD's data model"></p>
+ <p style="text-align: center">Figure 1: An illustration of JSON-LD's data model.</p>
+</section>
+
+<section class="appendix normative" id="json-ld-grammar">
+<!--OddPage--><h2><span class="secno">B. </span>JSON-LD Grammar</h2>
+<em>This section is normative</em>
+
+
+<p>This appendix restates the syntactic conventions described in the
+ previous sections more formally.</p>
+
+<div class="note"><div class="note-title"><span>Note</span></div><p class="">The JSON-LD context allows <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a>
+ <a href="#aliasing-keywords" class="sec-ref"><span class="secno">6.13</span> <span class="sec-title">Aliasing Keywords</span></a>). Whenever a <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> is
+ discussed in this grammar, the statements also apply to an alias for
+ that <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>. For example, if the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a>
+ defines the <a class="tref internalDFN" title="term" href="#dfn-term">term</a> <code>id</code> as an alias for <code>@id</code>,
+ that alias may be legitimately used as a substitution for <code>@id</code>.
+ Note that <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> aliases are not expanded during context
+ processing.</p></div>
+
+<p>A <a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">JSON-LD document</a> <em class="rfc2119" title="must">must</em> be a valid JSON document as described
+ in [<cite><a class="bibref" href="#bib-RFC4627">RFC4627</a></cite>].</p>
+
+<p>A <a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">JSON-LD document</a> <em class="rfc2119" title="must">must</em> be a single <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a>
+ or a JSON <a class="tref internalDFN" title="array" href="#dfn-array">array</a> containing a set of one or more
+ <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node objects</a>.</p>
+
+<section id="grammar-node-object" typeof="bibo:Chapter" resource="#grammar-node-object" rel="bibo:chapter">
+<h3><span class="secno">B.1 </span>Node Object</h3>
+
+<p>A <dfn title="node_object" id="dfn-node_object">node object</dfn> represents zero or more properties of a
+ <a class="tref internalDFN" title="node" href="#dfn-node">node</a> in the <a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">JSON-LD graph</a> serialized by the
+ <a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">JSON-LD document</a>. A <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> is a
+ <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a> if it exists outside of a JSON-LD
+ <a class="tref internalDFN" title="context" href="#dfn-context">context</a> and:</p>
+
+<ul>
+ <li>it does not contain the <code>@value</code>, <code>@list</code>,
+ or <code>@set</code> keywords, and</li>
+ <li>it is not the top-most <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> in the JSON-LD document
+ consisting of no other members than <code>@graph</code> and
+ <code>@context</code>.
+</li></ul>
+
+<p>The <a class="tref internalDFN" title="property" href="#dfn-property">properties</a> of a <a class="tref internalDFN" title="node" href="#dfn-node">node</a> in
+ a <a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">JSON-LD graph</a> may be spread among different
+ <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node objects</a> within a document. When
+ that happens, the keys of the different
+ <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node objects</a> are merged to create the
+ properties of the resulting <a class="tref internalDFN" title="node" href="#dfn-node">node</a>.</p>
+
+<p>A <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a> <em class="rfc2119" title="must">must</em> be a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a>. All keys
+ which are not <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>,
+ <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact IRIs</a>, <a class="tref internalDFN" title="term" href="#dfn-term">terms</a>
+ valid in the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a>, or one of the following
+ <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a> <em class="rfc2119" title="must">must</em> be ignored when processed:</p>
+
+<ul>
+ <li><code>@context</code>,</li>
+ <li><code>@graph</code>,</li>
+ <li><code>@id</code>,</li>
+ <li><code>@type</code>, or</li>
+ <li><code>@index</code></li>
+</ul>
+
+<p>If the <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a> contains the <code>@context</code>
+ key, its value <em class="rfc2119" title="must">must</em> be one of the following:</p>
+<ul>
+ <li><a class="tref internalDFN" title="null" href="#dfn-null">null</a>,</li>
+ <li>an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>,</li>
+ <li>a <a class="tref internalDFN" title="context_definition" href="#dfn-context_definition">context definition</a>, or</li>
+ <li>an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> composed of any number of the previous two expressions.</li>
+</ul>
+
+<p>If the <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a> contains the <code>@id</code> key,
+ its value <em class="rfc2119" title="must">must</em> be an <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a class="tref internalDFN" title="relative_iri" href="#dfn-relative_iri">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
+ or a <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> (including
+ <a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">blank node identifiers</a>).
+ See <a href="#node-identifiers" class="sec-ref"><span class="secno">5.3</span> <span class="sec-title">Node Identifiers</span></a>, <a href="#compact-iris" class="sec-ref"><span class="secno">6.1</span> <span class="sec-title">Compact IRIs</span></a>,
+ and <a href="#identifying-blank-nodes" class="sec-ref"><span class="secno">6.12</span> <span class="sec-title">Identifying Blank Nodes</span></a> for further discussion on
+ <code>@id</code> values.</p>
+
+<p>If the <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a> contains the <code>@type</code>
+ key, its value <em class="rfc2119" title="must">must</em> be either an <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a
+ <a class="tref internalDFN" title="relative_iri" href="#dfn-relative_iri">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
+ (including <a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">blank node identifiers</a>),
+ a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> defined in the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a> expanding into an <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, or
+ an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> of any of these.
+ See <a href="#specifying-the-type" class="sec-ref"><span class="secno">5.4</span> <span class="sec-title">Specifying the Type</span></a> for further discussion on
+ <code>@type</code> values.</p>
+
+<p>If the <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a> contains the <code>@graph</code>
+ key, its value <em class="rfc2119" title="must">must</em> be
+ a <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a> or
+ an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> of zero or more <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node objects</a>.
+ If the <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a> contains an <code>@id</code> keyword,
+ its value is used as the label of a named graph.
+ See <a href="#named-graphs" class="sec-ref"><span class="secno">6.11</span> <span class="sec-title">Named Graphs</span></a> for further discussion on
+ <code>@graph</code> values. As a special case, if a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a>
+ contains no keys other than <code>@graph</code> and <code>@context</code>, and the
+ <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> is the root of the JSON-LD document, the
+ <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> is not treated as a <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a>; this
+ is used as a way of defining <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node
+ definitions</a> that may not form a connected graph. This allows a
+ <a class="tref internalDFN" title="context" href="#dfn-context">context</a> to be defined which is shared by all of the constituent
+ <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node objects</a>.</p>
+
+<p>If the <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a> contains the <code>@index</code> key,
+ its value <em class="rfc2119" title="must">must</em> be a <a class="tref internalDFN" title="string" href="#dfn-string">string</a>. See section
+ <a href="#data-indexing" class="sec-ref"><span class="secno">6.16</span> <span class="sec-title">Data Indexing</span></a> for further discussion on <code>@index</code>
+ values.</p>
+
+
+<p>Keys in a <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a> that are not
+ <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a> <em class="rfc2119" title="must">must</em> expand to an <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
+ using the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a>. The values associated with these keys
+ <em class="rfc2119" title="must">must</em> be one of the following:</p>
+
+<ul>
+ <li><a class="tref internalDFN" title="string" href="#dfn-string">string</a>,</li>
+ <li><a class="tref internalDFN" title="number" href="#dfn-number">number</a>,</li>
+ <li><a class="tref internalDFN" title="true" href="#dfn-true">true</a>,</li>
+ <li><a class="tref internalDFN" title="false" href="#dfn-false">false</a>,</li>
+ <li><a class="tref internalDFN" title="null" href="#dfn-null">null</a>,</li>
+ <li><a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a>,</li>
+ <li><a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">expanded value</a>,</li>
+ <li><a class="tref internalDFN" title="list" href="#dfn-list">list</a> or <a class="tref internalDFN" title="set" href="#dfn-set">set</a>,</li>
+ <li>an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> of zero or more of the possibilities above,</li>
+ <li>a <a class="tref internalDFN" title="language_map" href="#dfn-language_map">language map</a>, or </li>
+ <li>an <a class="tref internalDFN" title="index_map" href="#dfn-index_map">index map</a></li>
+</ul>
+
+</section>
+
+<section id="grammar-term-reference" typeof="bibo:Chapter" resource="#grammar-term-reference" rel="bibo:chapter">
+ <h3><span class="secno">B.2 </span>Term</h3>
+ <p>A <dfn title="term" id="dfn-term">term</dfn> is a short-hand <a class="tref internalDFN" title="string" href="#dfn-string">string</a> that expands
+ to an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or a <a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">blank node identifier</a>.</p>
+
+ <p>A <a class="tref internalDFN" title="term" href="#dfn-term">term</a> <em class="rfc2119" title="must not">must not</em> equal any of the JSON-LD
+ <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a>.</p>
+
+ <p>To avoid forward-compatibility issues, a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> <em class="rfc2119" title="should not">should not</em> start
+ with an <code>@</code> character as future versions of JSON-LD may introduce
+ additional <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a>. Furthermore, the use of
+ empty terms (<code>""</code>) is discouraged as not all programming languages
+ are able to handle empty property names.</p>
+
+ <p>See <a href="#the-context" class="sec-ref"><span class="secno">5.1</span> <span class="sec-title">The Context</span></a> and <a href="#iris" class="sec-ref"><span class="secno">5.2</span> <span class="sec-title">IRIs</span></a> for further discussion
+ on mapping <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> to <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>.</p>
+</section>
+
+<section id="grammar-language-map" typeof="bibo:Chapter" resource="#grammar-language-map" rel="bibo:chapter">
+<h3><span class="secno">B.3 </span>Language Map</h3>
+<p>A <dfn title="language_map" id="dfn-language_map">language map</dfn> is used to associate a language with a value in a
+ way that allows easy programmatic access. A <a class="tref internalDFN" title="language_map" href="#dfn-language_map">language map</a> may be
+ used as a term value within a <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a> if the term is defined
+ with <code>@container</code> set to <code>@language</code>. The keys of a
+ <a class="tref internalDFN" title="language_map" href="#dfn-language_map">language map</a> <em class="rfc2119" title="must">must</em> be lowercase [<cite><a class="bibref" href="#bib-BCP47">BCP47</a></cite>]
+ <a class="tref internalDFN" title="string" href="#dfn-string">strings</a> with an associated value that is any
+ of the following types:</p>
+<ul>
+ <li><a class="tref internalDFN" title="string" href="#dfn-string">string</a>, or</li>
+ <li>an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> of zero or more strings</li>
+</ul>
+<p>See <a href="#language-tagged-strings"></a> for further discussion on language maps.</p>
+</section>
+
+<section id="grammar-index-map" typeof="bibo:Chapter" resource="#grammar-index-map" rel="bibo:chapter">
+<h3><span class="secno">B.4 </span>Index Map</h3>
+<p>An <dfn title="index_map" id="dfn-index_map">index map</dfn> allows keys that have no semantic meaning,
+ but should be preserved regardless, to be used in JSON-LD documents.
+ An <a class="tref internalDFN" title="index_map" href="#dfn-index_map">index map</a> may
+ be used as a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> value within a <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a> if the
+ term is defined with <code>@container</code> set to <code>@index</code>.
+ The values of the members of an <a class="tref internalDFN" title="index_map" href="#dfn-index_map">index map</a> <em class="rfc2119" title="must">must</em> be one
+ of the following types:</p>
+<ul>
+ <li><a class="tref internalDFN" title="string" href="#dfn-string">string</a>,</li>
+ <li><a class="tref internalDFN" title="number" href="#dfn-number">number</a>,</li>
+ <li><a class="tref internalDFN" title="true" href="#dfn-true">true</a>,</li>
+ <li><a class="tref internalDFN" title="false" href="#dfn-false">false</a>,</li>
+ <li><a class="tref internalDFN" title="null" href="#dfn-null">null</a>,</li>
+ <li><a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a>,</li>
+ <li><a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">expanded value</a>,</li>
+ <li>an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> of zero or more of the above possibilities</li>
+</ul>
+<p>See <a href="#data-indexing" class="sec-ref"><span class="secno">6.16</span> <span class="sec-title">Data Indexing</span></a> for further information on this
+topic.</p>
+</section>
+
+<section id="grammar-expanded-values" typeof="bibo:Chapter" resource="#grammar-expanded-values" rel="bibo:chapter">
+<h3><span class="secno">B.5 </span>Expanded Values</h3>
+
+<p>An <dfn title="expanded_value" id="dfn-expanded_value">expanded value</dfn> is used to explicitly associate a type or a
+ language with a value to create a <a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">typed value</a> or a <a class="tref internalDFN" title="language-tagged_string" href="#dfn-language-tagged_string">language-tagged
+ string</a>.</p>
+
+<p>An <a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">expanded value</a> <em class="rfc2119" title="must">must</em> be a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> containing the
+ <code>@value</code> key. It <em class="rfc2119" title="may">may</em> also contain a <code>@type</code>,
+ a <code>@language</code>, or an <code>@index</code> key but <em class="rfc2119" title="must not">must not</em> contain
+ both a <code>@type</code> and a <code>@language</code> key at the same time.
+ An <a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">expanded value</a> <em class="rfc2119" title="must not">must not</em> contain keys other than
+ <code>@value</code>, <code>@type</code>, <code>@language</code>, and
+ <code>@index</code>. An <a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">expanded value</a> that contains a
+ <code>@type</code> key is called an <dfn title="expanded_typed_value" id="dfn-expanded_typed_value">expanded typed value</dfn>.
+ An <a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">expanded value</a> that contains a <code>@language</code> key
+ is called an <dfn title="expanded_language-tagged_string" id="dfn-expanded_language-tagged_string">expanded language-tagged string</dfn>.</p>
+
+<p>The value associated with the <code>@value</code> key <em class="rfc2119" title="must">must</em> be either a
+ <a class="tref internalDFN" title="string" href="#dfn-string">string</a>, <a class="tref internalDFN" title="number" href="#dfn-number">number</a>, <a class="tref internalDFN" title="true" href="#dfn-true">true</a>,
+ <a class="tref internalDFN" title="false" href="#dfn-false">false</a> or <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</p>
+
+<p>The value associated with the <code>@type</code> key <em class="rfc2119" title="must">must</em> be a
+ <a class="tref internalDFN" title="term" href="#dfn-term">term</a>, a <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
+ an <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a class="tref internalDFN" title="relative_iri" href="#dfn-relative_iri">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, or <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</p>
+
+<p>The value associated with the <code>@language</code> key <em class="rfc2119" title="must">must</em> have the
+ lexical form described in [<cite><a class="bibref" href="#bib-BCP47">BCP47</a></cite>], or be <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</p>
+
+<p>The value associated with the <code>@index</code> key <em class="rfc2119" title="must">must</em> be a
+ <a class="tref internalDFN" title="string" href="#dfn-string">string</a>.</p>
+
+<p>See <a href="#typed-values" class="sec-ref"><span class="secno">6.2</span> <span class="sec-title">Typed Values</span></a> and <a href="#language-tagged-strings"></a>
+ for more information on
+ <a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">expanded values</a>.</p>
+</section>
+
+<section id="grammar-set-list" typeof="bibo:Chapter" resource="#grammar-set-list" rel="bibo:chapter">
+<h3><span class="secno">B.6 </span>List and Set Values</h3>
+
+<p>A <a class="tref internalDFN" title="list" href="#dfn-list">list</a> represents an <em>ordered</em> set of values. A <dfn title="set" id="dfn-set">set</dfn>
+ represents an <em>unordered</em> set of values. Unless otherwise specified,
+ <a class="tref internalDFN" title="array" href="#dfn-array">arrays</a> are unordered in JSON-LD. As such, the
+ <code>@set</code> keyword, when used in the body of a JSON-LD document,
+ represents just syntactic sugar which is optimized away when processing the document.
+ However, it is very helpful when used within the context of a document. Values
+ of terms associated with a <code>@set</code> or <code>@list</code> container
+ will always be represented in the form of an array when a document is processed -
+ even if there is just a single value that would otherwise be optimized to
+ a non-array form in <a href="#compact-document-form">compact document form</a>.
+ This simplifies post-processing of the data as the data is always in array form.</p>
+
+<p>A <a class="tref internalDFN" title="list" href="#dfn-list">list</a> <em class="rfc2119" title="must">must</em> be a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> that contains no other
+ keys than <code>@list</code>, <code>@context</code>, and <code>@index</code>.</p>
+
+<p>A <a class="tref internalDFN" title="set" href="#dfn-set">set</a> <em class="rfc2119" title="must">must</em> be a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> that that contains no other
+ keys than <code>@set</code>, <code>@context</code>, and <code>@index</code>.
+ Please note that the <code>@index</code> key will be ignored, and thus be dropped,
+ when being processed.</p>
+
+<p>In both cases, the value associated with the keys <code>@list</code> and <code>@set</code>
+ <em class="rfc2119" title="must">must</em> be an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> of any of the following:</p>
+<ul>
+ <li><a class="tref internalDFN" title="string" href="#dfn-string">string</a>,</li>
+ <li><a class="tref internalDFN" title="number" href="#dfn-number">number</a>,</li>
+ <li><a class="tref internalDFN" title="true" href="#dfn-true">true</a>,</li>
+ <li><a class="tref internalDFN" title="false" href="#dfn-false">false</a>,</li>
+ <li><a class="tref internalDFN" title="null" href="#dfn-null">null</a>,</li>
+ <li><a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a>, or</li>
+ <li><a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">expanded value</a></li>
+</ul>
+
+<p>See <a href="#sets-and-lists" class="sec-ref"><span class="secno">6.9</span> <span class="sec-title">Sets and Lists</span></a> for further discussion on List and Set Values.</p>
+</section>
+
+<section id="grammar-context" typeof="bibo:Chapter" resource="#grammar-context" rel="bibo:chapter">
+<h3><span class="secno">B.7 </span>Context Definition</h3>
+<p>A <dfn title="context_definition" id="dfn-context_definition">context definition</dfn> defines a <a class="tref internalDFN" title="local_context" href="#dfn-local_context">local context</a> in a <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a>.</p>
+
+<p>A <a class="tref internalDFN" title="context_definition" href="#dfn-context_definition">context definition</a> <em class="rfc2119" title="must">must</em> be a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a>
+ containing one or more key-value pairs. Keys <em class="rfc2119" title="must">must</em> either be
+ <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> or <code>@language</code> or <code>@vocab</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a>.
+
+</p><p>If the <a class="tref internalDFN" title="context_definition" href="#dfn-context_definition">context definition</a> has a <code>@language</code> key,
+ its value <em class="rfc2119" title="must">must</em> have the lexical form described in [<cite><a class="bibref" href="#bib-BCP47">BCP47</a></cite>] or be <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</p>
+<p>If the <a class="tref internalDFN" title="context_definition" href="#dfn-context_definition">context definition</a> has a <code>@vocab</code> key,
+ its value <em class="rfc2119" title="must">must</em> have the lexical form of <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> or be <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</p>
+
+<p><a class="tref internalDFN" title="term" href="#dfn-term">Term</a> values <em class="rfc2119" title="must">must</em> be either a
+ <a class="tref internalDFN" title="string" href="#dfn-string">string</a>, <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, or an <a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">expanded term definition</a>.</p>
+
+<p>An <a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">expanded term definition</a> is used to describe the mapping
+ between a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> and its expanded identifier, as well as other
+ properties of the value associated with the <a class="tref internalDFN" title="term" href="#dfn-term">term</a> when it is
+ used as key in a <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a>.</p>
+
+<p>An <a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">expanded term definition</a> <em class="rfc2119" title="should">should</em> be a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a>
+ composed of zero or more keys from <code>@id</code>,
+ <code>@type</code>, <code>@language</code> or <code>@container</code>. An
+ <a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">expanded term definition</a> <em class="rfc2119" title="should not">should not</em> contain any other keys.
+</p><p>If the <a class="tref internalDFN" title="term" href="#dfn-term">term</a> definition is not <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, a <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
+ or an <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> and the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a> does not have an
+ <code>@vocab</code> mapping, the <a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">expanded term definition</a> <em class="rfc2119" title="must">must</em>
+ include the <code>@id</code> key.</p>
+
+<p>If the <a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">expanded term definition</a> contains the <code>@id</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>,
+ its value <em class="rfc2119" title="must">must</em> be <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, an <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">blank node identifier</a>,
+ a <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> defined in the defining <a class="tref internalDFN" title="context_definition" href="#dfn-context_definition">context definition</a>
+ or the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a>, or an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> composed of any of the previous allowed values except
+ <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</p>
+<p>If the <a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">expanded term definition</a> contains the <code>@type</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>,
+ its value <em class="rfc2119" title="must">must</em> be an <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> defined in the defining <a class="tref internalDFN" title="context_definition" href="#dfn-context_definition">context definition</a> or the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a>, or the <code>@id</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>.</p>
+<p>If the <a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">expanded term definition</a> contains the <code>@language</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>,
+ its value <em class="rfc2119" title="must">must</em> have the lexical form described in [<cite><a class="bibref" href="#bib-BCP47">BCP47</a></cite>] or be <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</p>
+<p>If the <a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">expanded term definition</a> contains the <code>@container</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>,
+ its value <em class="rfc2119" title="must">must</em> be either <code>@list</code>, <code>@set</code>, <code>@language</code>, <code>@index</code>, or be <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.
+ If the value is <code>@language</code>, when the <a class="tref internalDFN" title="term" href="#dfn-term">term</a> is used outside of the <code>@context</code>, the
+ associated value <em class="rfc2119" title="must">must</em> be a <a class="tref internalDFN" title="language_map" href="#dfn-language_map">language map</a>. If the value is
+ <code>@index</code>, when the <a class="tref internalDFN" title="term" href="#dfn-term">term</a> is used outside of
+ the <code>@context</code>, the associated value <em class="rfc2119" title="must">must</em> be an
+ <a class="tref internalDFN" title="index_map" href="#dfn-index_map">index map</a>.</p>
+
+<p><a class="tref internalDFN" title="term" href="#dfn-term">Terms</a> <em class="rfc2119" title="must not">must not</em> be used in a circular manner. That is, the definition of a term cannot depend on the definition of another term if that other term also depends on the first term.</p>
+
+<p>See <a href="#the-context" class="sec-ref"><span class="secno">5.1</span> <span class="sec-title">The Context</span></a> for further discussion on contexts.</p>
+</section>
+
+</section>
+
+<section class="appendix normative" id="relationship-to-rdf">
+ <!--OddPage--><h2><span class="secno">C. </span>Relationship to RDF</h2>
+
+ <p>The RDF data model, as outlined in [<cite><a class="bibref" href="#bib-RDF-CONCEPTS">RDF-CONCEPTS</a></cite>], is an abstract syntax for
+ representing a directed graph of information. It is a subset of
+ <a class="tref internalDFN" title="json-ld_data_model" href="#dfn-json-ld_data_model">JSON-LD's data model</a> with a few
+ additional constraints. The differences between the two data models are:</p>
+
+ <ul>
+ <li>In JSON-LD <a class="tref internalDFN" title="graph_name" href="#dfn-graph_name">graph names</a> can be
+ <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> or <a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">blank nodes</a>
+ whereas in RDF graph names have to be <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>.</li>
+ <li>In JSON-LD <a class="tref internalDFN" title="property" href="#dfn-property">properties</a> can be
+ <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> or <a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">blank nodes</a>
+ whereas in RDF properties (predicates) have to be
+ <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>.</li>
+ <li>In JSON-LD lists are part of the data model whereas in RDF they are part of
+ a vocabulary, namely [<cite><a class="bibref" href="#bib-RDF-SCHEMA">RDF-SCHEMA</a></cite>].</li>
+ <li>RDF values are either typed <em>literals</em>
+ (<a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">typed values</a>) or <em>language-tagged strings</em>
+ (<a class="tref internalDFN" title="language-tagged_string" href="#dfn-language-tagged_string">language-tagged strings</a>) whereas
+ JSON-LD also supports JSON's native data types, i.e., <a class="tref internalDFN" title="number" href="#dfn-number">number</a>,
+ <a class="tref internalDFN" title="string" href="#dfn-string">strings</a>, and the boolean values <a class="tref internalDFN" title="true" href="#dfn-true">true</a>
+ and <a class="tref internalDFN" title="false" href="#dfn-false">false</a>. The JSON-LD Algorithms and API specification [<cite><a class="bibref" href="#bib-JSON-LD-API">JSON-LD-API</a></cite>] defines
+ the conversion rules between JSON's native data types and RDF's counterparts to
+ allow full round-tripping.</li>
+
+ </ul>
+
+ <p>Summarized these differences mean that JSON-LD is capable of serializing any RDF
+ graph or dataset and most, but not all, JSON-LD documents can be transformed to RDF.
+ A complete description of the algorithms to convert from RDF to JSON-LD and from
+ JSON-LD to RDF is included in the JSON-LD Algorithms and API specification
+ [<cite><a class="bibref" href="#bib-JSON-LD-API">JSON-LD-API</a></cite>].</p>
+
+ <p>Even though JSON-LD serializes RDF datasets, it can also be used as a RDF graph source.
+ In that case, a consumer <em class="rfc2119" title="must">must</em> only use the default graph and ignore all named graphs.
+ This allows servers to expose data in, e.g., both Turtle and JSON-LD using content
+ negotiation.</p>
+
+ <div class="note"><div class="note-title"><span>Note</span></div><p class="">Publishers supporting both dataset and graph syntaxes have to ensure that
+ the primary data is stored in the default graph to enable consumers that do not support
+ datasets to process the information.</p></div>
+</section>
+
+<section class="appendix informative" id="relationship-to-other-linked-data-formats">
+<!--OddPage--><h2><span class="secno">D. </span>Relationship to Other Linked Data Formats</h2><p><em>This section is non-normative.</em></p>
+
+<p>The JSON-LD markup examples below demonstrate how JSON-LD can be used to
+ express semantic data marked up in other linked data formats such as Turtle,
+ RDFa, Microformats, and Microdata. These sections are merely provided as
+ evidence that JSON-LD is very flexible in what it can express across different
+ <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a> approaches.</p>
+
+<section id="turtle">
+ <h3><span class="secno">D.1 </span>Turtle</h3><p><em>This section is non-normative.</em></p>
+
+ <p>The following are examples of converting RDF expressed in [<cite><a class="bibref" href="#bib-TURTLE-TR">TURTLE-TR</a></cite>]
+ into JSON-LD.</p>
+
+<section id="prefix-definitions">
+<h4><span class="secno">D.1.1 </span>Prefix definitions</h4><p><em>This section is non-normative.</em></p>
+<p>The JSON-LD context has direct equivalents for the Turtle
+ <code>@prefix</code> declaration:</p>
+
+<div class="example"><div class="example-title"><span>Example 57</span>: A set of statements serialized in Turtle</div><pre class="example">@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+
+<http://manu.sporny.org/i/public> a foaf:Person;
+ foaf:name "Manu Sporny";
+ foaf:homepage <http://manu.sporny.org/> .</pre></div>
+
+<div class="example"><div class="example-title"><span>Example 58</span>: The same set of statements serialized in JSON-LD</div><pre class="example">{
+ "@context":
+ {
+ "foaf": "http://xmlns.com/foaf/0.1/"
+ },
+ "@id": "http://manu.sporny.org/i/public",
+ "@type": "foaf:Person",
+ "foaf:name": "Manu Sporny",
+ "foaf:homepage": { "@id": "http://manu.sporny.org/" }
+}</pre></div>
+
+<div class="note"><div class="note-title"><span>Note</span></div><p class="">JSON-LD has no equivalent for the Turtle <code>@base</code>
+declaration, but can use a prefix such as <code>base</code> to encode the
+information in the document.</p></div>
+
+</section>
+
+<section id="embedding-1">
+<h4><span class="secno">D.1.2 </span>Embedding</h4>
+<p>Both Turtle and JSON-LD allow embedding, although Turtle only allows embedding of
+ <a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">blank nodes</a>.</p>
+</section>
+
+<div class="example"><div class="example-title"><span>Example 59</span>: Embedding in Turtle</div><pre class="example">@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+
+<http://manu.sporny.org/i/public>
+ a foaf:Person;
+ foaf:name "Manu Sporny";
+ foaf:knows [ a foaf:Person; foaf:name "Gregg Kellogg" ] .</pre></div>
+
+<div class="example"><div class="example-title"><span>Example 60</span>: Same embedding example in JSON-LD</div><pre class="example">{
+ "@context":
+ {
+ "foaf": "http://xmlns.com/foaf/0.1/"
+ },
+ "@id": "http://manu.sporny.org/i/public",
+ "@type": "foaf:Person",
+ "foaf:name": "Manu Sporny",
+ "foaf:knows":
+ {
+ "@type": "foaf:Person",
+ "foaf:name": "Gregg Kellogg"
+ }
+}</pre></div>
+<section id="lists">
+<h4><span class="secno">D.1.3 </span>Lists</h4>
+<p>Both JSON-LD and Turtle can represent sequential lists of values.</p>
+
+<div class="example"><div class="example-title"><span>Example 61</span>: A list of values in Turtle</div><pre class="example">@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+
+<http://example.org/people#joebob> a foaf:Person;
+ foaf:name "Joe Bob";
+ foaf:nick ( "joe" "bob" "jaybee" ) .</pre></div>
+
+<div class="example"><div class="example-title"><span>Example 62</span>: Same example with a list of values in JSON-LD</div><pre class="example">{
+ "@context":
+ {
+ "foaf": "http://xmlns.com/foaf/0.1/"
+ },
+ "@id": "http://example.org/people#joebob",
+ "@type": "foaf:Person",
+ "foaf:name": "Joe Bob",
+ "foaf:nick":
+ {
+ "@list": [ "joe", "bob", "jaybee" ]
+ }
+}</pre></div>
+</section>
+
+</section>
+
+<section id="rdfa">
+<h3><span class="secno">D.2 </span>RDFa</h3>
+
+<p>The following example describes three people with their respective names and
+homepages in [<cite><a class="bibref" href="#bib-RDFA-CORE">RDFA-CORE</a></cite>].</p>
+
+<div class="example"><div class="example-title"><span>Example 63</span>: RDFa fragment that describes three people</div><pre class="example"><div <span class="diff">prefix="foaf: http://xmlns.com/foaf/0.1/"</span>>
+ <ul>
+ <li <span class="diff">typeof="foaf:Person"</span>>
+ <a <span class="diff">rel="foaf:homepage" href="http://example.com/bob/" property="foaf:name"</span>>Bob</a>
+ </li>
+ <li <span class="diff">typeof="foaf:Person"</span>>
+ <a <span class="diff">rel="foaf:homepage" href="http://example.com/eve/" property="foaf:name"</span>>Eve</a>
+ </li>
+ <li <span class="diff">typeof="foaf:Person"</span>>
+ <a <span class="diff">rel="foaf:homepage" href="http://example.com/manu/" property="foaf:name"</span>>Manu</a>
+ </li>
+ </ul>
+</div></pre></div>
+
+<p>An example JSON-LD implementation using a single <a class="tref internalDFN" title="context" href="#dfn-context">context</a> is
+described below.</p>
+
+<div class="example"><div class="example-title"><span>Example 64</span>: Same description in JSON-LD (context shared among node objects)</div><pre class="example">{
+ "@context":
+ {
+ "foaf": "http://xmlns.com/foaf/0.1/"
+ },
+ "@graph":
+ [
+ {
+ "@type": "foaf:Person",
+ "foaf:homepage": "http://example.com/bob/",
+ "foaf:name": "Bob"
+ },
+ {
+ "@type": "foaf:Person",
+ "foaf:homepage": "http://example.com/eve/",
+ "foaf:name": "Eve"
+ },
+ {
+ "@type": "foaf:Person",
+ "foaf:homepage": "http://example.com/manu/",
+ "foaf:name": "Manu"
+ }
+ ]
+}</pre></div>
+
+</section>
+
+<section id="microformats">
+<h3><span class="secno">D.3 </span>Microformats</h3>
+
+<p>The following example uses a simple Microformats hCard ([<cite><a class="bibref" href="#bib-MICROFORMATS">MICROFORMATS</a></cite>]) example to express
+how the Microformat is represented in JSON-LD.</p>
+
+<div class="example"><div class="example-title"><span>Example 65</span>: HTML fragment with a simple Microformats hCard</div><pre class="example"><div class="vcard">
+ <a class="url fn" href="http://tantek.com/">Tantek Çelik</a>
+</div></pre></div>
+
+<p>The representation of the hCard expresses the Microformat terms in the
+<a class="tref internalDFN" title="context" href="#dfn-context">context</a> and uses them directly for the <code>url</code> and <code>fn</code>
+properties. Also note that the Microformat to JSON-LD processor has
+generated the proper URL type for <code>http://tantek.com/</code>.</p>
+
+<div class="example"><div class="example-title"><span>Example 66</span>: Same hCard representation in JSON-LD</div><pre class="example">{
+ "@context":
+ {
+ "vcard": "http://microformats.org/profile/hcard#vcard",
+ "url":
+ {
+ "@id": "http://microformats.org/profile/hcard#url",
+ "@type": "@id"
+ },
+ "fn": "http://microformats.org/profile/hcard#fn"
+ },
+ "@type": "vcard",
+ "url": "http://tantek.com/",
+ "fn": "Tantek Çelik"
+}</pre></div>
+
+</section>
+
+<section id="microdata">
+<h3><span class="secno">D.4 </span>Microdata</h3>
+
+<p>The [<cite><a class="bibref" href="#bib-MICRODATA">MICRODATA</a></cite>] example below expresses book information as a microdata Work
+item.
+</p>
+
+<div class="example"><div class="example-title"><span>Example 67</span>: HTML fragments that describes a book using microdata</div><pre class="example"><dl itemscope
+ itemtype="http://purl.org/vocab/frbr/core#Work"
+ itemid="http://purl.oreilly.com/works/45U8QJGZSQKDH8N">
+ <dt>Title</dt>
+ <dd><cite itemprop="http://purl.org/dc/terms/title">Just a Geek</cite></dd>
+ <dt>By</dt>
+ <dd><span itemprop="http://purl.org/dc/terms/creator">Wil Wheaton</span></dd>
+ <dt>Format</dt>
+ <dd itemprop="http://purl.org/vocab/frbr/core#realization"
+ itemscope
+ itemtype="http://purl.org/vocab/frbr/core#Expression"
+ itemid="http://purl.oreilly.com/products/9780596007683.BOOK">
+ <link itemprop="http://purl.org/dc/terms/type" href="http://purl.oreilly.com/product-types/BOOK">
+ Print
+ </dd>
+ <dd itemprop="http://purl.org/vocab/frbr/core#realization"
+ itemscope
+ itemtype="http://purl.org/vocab/frbr/core#Expression"
+ itemid="http://purl.oreilly.com/products/9780596802189.EBOOK">
+ <link itemprop="http://purl.org/dc/terms/type" href="http://purl.oreilly.com/product-types/EBOOK">
+ Ebook
+ </dd>
+</dl></pre></div>
+
+<p>Note that the JSON-LD representation of the Microdata information stays
+true to the desires of the Microdata community to avoid contexts and
+instead refer to items by their full <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</p>
+
+<div class="example"><div class="example-title"><span>Example 68</span>: Same book description in JSON-LD (avoiding contexts)</div><pre class="example">[
+ {
+ "@id": "http://purl.oreilly.com/works/45U8QJGZSQKDH8N",
+ "@type": "http://purl.org/vocab/frbr/core#Work",
+ "http://purl.org/dc/terms/title": "Just a Geek",
+ "http://purl.org/dc/terms/creator": "Whil Wheaton",
+ "http://purl.org/vocab/frbr/core#realization":
+ [
+ "http://purl.oreilly.com/products/9780596007683.BOOK",
+ "http://purl.oreilly.com/products/9780596802189.EBOOK"
+ ]
+ },
+ {
+ "@id": "http://purl.oreilly.com/products/9780596007683.BOOK",
+ "@type": "http://purl.org/vocab/frbr/core#Expression",
+ "http://purl.org/dc/terms/type": "http://purl.oreilly.com/product-types/BOOK"
+ },
+ {
+ "@id": "http://purl.oreilly.com/products/9780596802189.EBOOK",
+ "@type": "http://purl.org/vocab/frbr/core#Expression",
+ "http://purl.org/dc/terms/type": "http://purl.oreilly.com/product-types/EBOOK"
+ }
+]</pre></div>
+</section>
+</section>
+
+<section class="appendix informative" id="iana-considerations">
+<!--OddPage--><h2><span class="secno">E. </span>IANA Considerations</h2><p><em>This section is non-normative.</em></p>
+
+<p>This section is included merely for standards community review and will be
+submitted to the Internet Engineering Steering Group if this specification
+becomes a W3C Recommendation.</p>
+
+<h2 id="application-ld-json">application/ld+json</h2>
+<dl>
+ <dt>Type name:</dt>
+ <dd>application</dd>
+ <dt>Subtype name:</dt>
+ <dd>ld+json</dd>
+ <dt>Required parameters:</dt>
+ <dd>None</dd>
+ <dt>Optional parameters:</dt>
+ <dd>
+ <dl>
+ <dt><code>profile</code></dt>
+ <dd>A whitespace-separated list of IRIs identifying specific constraints
+ or conventions that apply to a JSON-LD document. A profile <em class="rfc2119" title="must not">must not</em> change
+ the semantics of the resource representation. The <code>profile</code>
+ parameter <em class="rfc2119" title="may">may</em> also be used by clients to express their preferences in the
+ content negotiation process. It is <em class="rfc2119" title="recommended">recommended</em> that profile IRIs are
+ dereferenceable and provide useful documentation at that <abbr title="Internationalized Resource Identifier">IRI</abbr>. This
+ specification defines four values for the <code>profile</code> parameter.
+ To request or specify Expanded JSON-LD document form, the
+ <code>http://www.w3.org/ns/json-ld#expanded</code> URL <em class="rfc2119" title="should">should</em> be used.
+ To request or specify Expanded, Flattened JSON-LD document form, the
+ <code>http://www.w3.org/ns/json-ld#expanded-flattened</code> URL <em class="rfc2119" title="should">should</em>
+ be used.
+ To request or specify Compacted JSON-LD document form, the
+ <code>http://www.w3.org/ns/json-ld#compacted</code> URL <em class="rfc2119" title="should">should</em> be used.
+ To request or specify Compacted, Flattened JSON-LD document form, the
+ <code>http://www.w3.org/ns/json-ld#compacted-flattened</code> URL
+ <em class="rfc2119" title="should">should</em> be used.
+ </dd>
+ </dl>
+ </dd>
+ <dt>Encoding considerations:</dt>
+ <dd>The same as the <code>application/json</code> MIME media type.</dd>
+ <dt>Security considerations:</dt>
+ <dd>Since JSON-LD is intended to be a pure data exchange format for
+ directed graphs, the serialization <em class="rfc2119" title="should not">should not</em> be passed through a
+ code execution mechanism such as JavaScript's <code>eval()</code>
+ function. It is <em class="rfc2119" title="recommended">recommended</em> that a conforming parser does not attempt to
+ directly evaluate the JSON-LD serialization and instead purely parse the
+ input into a language-native data structure. <br>
+ JSON-LD contexts that are loaded from the Web over non-secure connections,
+ such as HTTP, run the risk of modifying the JSON-LD
+ <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a> in a way that could compromise security. It
+ is advised that any application that depends on a remote context for mission
+ critical purposes vet and cache the remote context before allowing the
+ system to use it.</dd>
+ <dt>Interoperability considerations:</dt>
+ <dd>Not Applicable</dd>
+ <dt>Published specification:</dt>
+ <dd>The <a href="http://json-ld.org/spec/latest/">JSON-LD</a> specification.</dd>
+ <dt>Applications that use this media type:</dt>
+ <dd>Any programming environment that requires the exchange of
+ directed graphs. Implementations of JSON-LD have been created for
+ JavaScript, Python, Ruby, PHP, and C++.
+ </dd>
+ <dt>Additional information:</dt>
+ <dd>
+ <dl>
+ <dt>Magic number(s):</dt>
+ <dd>Not Applicable</dd>
+ <dt>File extension(s):</dt>
+ <dd>.jsonld</dd>
+ <dt>Macintosh file type code(s):</dt>
+ <dd>TEXT</dd>
+ </dl>
+ </dd>
+ <dt>Person & email address to contact for further information:</dt>
+ <dd>Manu Sporny <msporny@digitalbazaar.com></dd>
+ <dt>Intended usage:</dt>
+ <dd>Common</dd>
+ <dt>Restrictions on usage:</dt>
+ <dd>None</dd>
+ <dt>Author(s):</dt>
+ <dd>Manu Sporny, Dave Longley, Gregg Kellogg, Markus Lanthaler, Niklas Lindström</dd>
+ <dt>Change controller:</dt>
+ <dd>W3C</dd>
+</dl>
+
+<p>Fragment identifiers used with <a href="#application-ld-json">application/ld+json</a>
+ resources <em class="rfc2119" title="may">may</em> identify a node in a <a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">JSON-LD graph</a> expressed in
+ the resource. This idiom, which is also used in RDF [<cite><a class="bibref" href="#bib-RDF-CONCEPTS">RDF-CONCEPTS</a></cite>], gives a
+ simple way to "mint" new, document-local IRIs to label nodes and therefore contributes
+ considerably to the expressive power of JSON-LD.</p>
+
+</section>
+
+<section class="appendix informative" id="acknowledgements">
+ <!--OddPage--><h2><span class="secno">F. </span>Acknowledgements</h2><p><em>This section is non-normative.</em></p>
+
+ <p>The authors would like to extend a deep appreciation and the most sincere
+ thanks to Mark Birbeck, who contributed foundational concepts
+ to JSON-LD via his work on RDFj. JSON-LD uses a number of core concepts
+ introduced in RDFj, such as the context as a mechanism to provide an
+ environment for interpreting JSON data. Mark had also been very involved in
+ the work on RDFa as well. RDFj built upon that work. JSON-LD exists
+ because of the work and ideas he started nearly a decade ago in 2004.</p>
+
+ <p>A large amount of thanks goes out to the JSON-LD Community Group
+ participants who worked through many of the technical issues on the mailing
+ list and the weekly telecons - of special mention are François Daoust,
+ Stéphane Corlosquet, Lin Clark, and Zdenko 'Denny' Vrandečić.</p>
+
+ <p>The work of David I. Lehn and Mike Johnson are appreciated for
+ reviewing, and performing several early implementations
+ of the specification. Thanks also to Ian Davis for this work on RDF/JSON.</p>
+
+ <p>Thanks to the following individuals, in order of their first name, for
+ their input on the specification: Adrian Walker, Alexandre Passant, Andy Seaborne, Ben Adida, Blaine Cook, Bradley Allen, Brian Peterson, Bryan Thompson, Conal Tuohy, Dan Brickley, Danny Ayers, Daniel Leja, Dave Reynolds, David I. Lehn, David Wood, Dean Landolt, Ed Summers, elf Pavlik, Eric Prud'hommeaux, Fabian Christ, Jon A. Frost, Gavin Carothers, Glenn McDonald, Guus Schreiber, Henri Bergius, Jose María Alvarez Rodríguez, Ivan Herman, Jack Moffitt, Josh Mandel, KANZAKI Masahide, Kingsley Idehen, Kuno Woudt, Larry Garfield, Mark Baker, Mark MacGillivray, Marko Rodriguez, Melvin Carvalho, Nathan Rixham, Olivier Grisel, Paolo Ciccarese, Pat Hayes, Patrick Logan, Pelle Braendgaard, Peter Williams, Pierre-Antoine Champin, Richard Cyganiak, Roy T. Fielding, Sandro Hawke, Srecko Joksimovic, Stephane Fellah, Steve Harris, Ted Thibodeau Jr., Thomas Steiner, Tim Bray, Tom Morris, Tristan King, Sergio Fernández, Werner Wilms, and William Waites</p>
+</section>
+
+
+
+<section id="references" class="appendix" typeof="bibo:Chapter" resource="#references" rel="bibo:chapter"><!--OddPage--><h2><span class="secno">G. </span>References</h2><section id="normative-references" typeof="bibo:Chapter" resource="#normative-references" rel="bibo:chapter"><h3><span class="secno">G.1 </span>Normative references</h3><dl class="bibliography" about=""><dt id="bib-BCP47">[BCP47]</dt><dd rel="dcterms:requires">A. Phillips; M. Davis. <a href="http://tools.ietf.org/html/bcp47"><cite>Tags for Identifying Languages</cite></a> September 2009. IETF Best Current Practice. URL: <a href="http://tools.ietf.org/html/bcp47">http://tools.ietf.org/html/bcp47</a>
+</dd><dt id="bib-RDF-CONCEPTS">[RDF-CONCEPTS]</dt><dd rel="dcterms:requires">Richard Cyganiak, David Wood, Editors. <cite><a href="http://www.w3.org/TR/2013/WD-rdf11-concepts-20130115/">RDF 1.1 Concepts and Abstract Syntax.</a></cite> 15 January 2013. W3C Working Draft (work in progress). URL: <a href="http://www.w3.org/TR/2013/WD-rdf11-concepts-20130115/">http://www.w3.org/TR/2013/WD-rdf11-concepts-20130115/</a>
+</dd><dt id="bib-RFC2119">[RFC2119]</dt><dd rel="dcterms:requires">S. Bradner. <a href="http://www.ietf.org/rfc/rfc2119.txt"><cite>Key words for use in RFCs to Indicate Requirement Levels.</cite></a> March 1997. Internet RFC 2119. URL: <a href="http://www.ietf.org/rfc/rfc2119.txt">http://www.ietf.org/rfc/rfc2119.txt</a>
+</dd><dt id="bib-RFC3987">[RFC3987]</dt><dd rel="dcterms:requires">M. Dürst; M. Suignard. <a href="http://www.ietf.org/rfc/rfc3987.txt"><cite>Internationalized Resource Identifiers (IRIs).</cite></a> January 2005. Internet RFC 3987. URL: <a href="http://www.ietf.org/rfc/rfc3987.txt">http://www.ietf.org/rfc/rfc3987.txt</a>
+</dd><dt id="bib-RFC4627">[RFC4627]</dt><dd rel="dcterms:requires">D. Crockford. <a href="http://www.ietf.org/rfc/rfc4627.txt"><cite>The application/json Media Type for JavaScript Object Notation (JSON)</cite></a> July 2006. Internet RFC 4627. URL: <a href="http://www.ietf.org/rfc/rfc4627.txt">http://www.ietf.org/rfc/rfc4627.txt</a>
+</dd><dt id="bib-RFC5988">[RFC5988]</dt><dd rel="dcterms:requires">M. Nottingham, Editor. <cite><a href="http://tools.ietf.org/rfc/rfc5988">Web Linking</a>.</cite> October 2010. Internet RFC 5988. URL: <a href="http://tools.ietf.org/rfc/rfc5988.txt">http://tools.ietf.org/rfc/rfc5988.txt</a>
+</dd></dl></section><section id="informative-references" typeof="bibo:Chapter" resource="#informative-references" rel="bibo:chapter"><h3><span class="secno">G.2 </span>Informative references</h3><dl class="bibliography" about=""><dt id="bib-JSON-LD-API">[JSON-LD-API]</dt><dd rel="dcterms:references">Markus Lanthaler, Gregg Kellogg, Manu Sporny, Editors. <cite><a href="http://json-ld.org/spec/latest/json-ld-api/">JSON-LD 1.0 Processing Algorithms and API</a>.</cite> W3C Editor's Draft (work in progress). URL: <a href="http://json-ld.org/spec/latest/json-ld-api/">http://json-ld.org/spec/latest/json-ld-api/</a>
+</dd><dt id="bib-MICRODATA">[MICRODATA]</dt><dd rel="dcterms:references">Ian Hickson, Editor. <cite><a href="http://www.w3.org/TR/2012/WD-microdata-20120329/">HTML Microdata</a>.</cite> 29 March 2012. W3C Working Draft (work in progress). URL: <a href="http://www.w3.org/TR/2012/WD-microdata-20120329/">http://www.w3.org/TR/2012/WD-microdata-20120329/</a>
+</dd><dt id="bib-MICROFORMATS">[MICROFORMATS]</dt><dd rel="dcterms:references"><a href="http://microformats.org"><cite>Microformats</cite></a>. URL: <a href="http://microformats.org">http://microformats.org</a>
+</dd><dt id="bib-RDF-SCHEMA">[RDF-SCHEMA]</dt><dd rel="dcterms:references">Dan Brickley; Ramanathan V. Guha. <a href="http://www.w3.org/TR/2004/REC-rdf-schema-20040210"><cite>RDF Vocabulary Description Language 1.0: RDF Schema.</cite></a> 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-rdf-schema-20040210">http://www.w3.org/TR/2004/REC-rdf-schema-20040210</a>
+</dd><dt id="bib-RDFA-CORE">[RDFA-CORE]</dt><dd rel="dcterms:references">Shane McCarron; et al. <a href="http://www.w3.org/TR/2012/REC-rdfa-core-20120607/"><cite>RDFa Core 1.1: Syntax and processing rules for embedding RDF through attributes.</cite></a> 7 June 2012. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2012/REC-rdfa-core-20120607/">http://www.w3.org/TR/2012/REC-rdfa-core-20120607/</a>
+</dd><dt id="bib-TURTLE-TR">[TURTLE-TR]</dt><dd rel="dcterms:references">Eric Prud'hommeaux, Gavin Carothers, Editors. <cite><a href="http://www.w3.org/TR/2011/WD-turtle-20110809/">Turtle: Terse RDF Triple Language.</a></cite> 09 August 2011. W3C Working Draft (work in progress). URL: <a href="http://www.w3.org/TR/2011/WD-turtle-20110809/">http://www.w3.org/TR/2011/WD-turtle-20110809/</a>
+</dd></dl></section></section></body></html>
Binary file spec/FCGS/json-ld-syntax/20130202/linked-data-graph.png has changed
--- a/spec/FCGS/json-ld/20130202/index.html Sat Feb 02 14:35:56 2013 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,3234 +0,0 @@
-<!DOCTYPE html>
-<html lang="en" dir="ltr" prefix="bibo: http://purl.org/ontology/bibo/" typeof="bibo:Document">
-<head>
-<title>JSON-LD 1.0</title>
-<meta http-equiv="content-type" content="text/html; charset=UTF-8">
-<!--
- === NOTA BENE ===
- For the three scripts below, if your spec resides on dev.w3 you can check them
- out in the same tree and use relative links so that they'll work offline,
- -->
-
-
-
-<style type="text/css">
- .diff { font-weight:bold; color:#0a3; }
- table, thead, tr, td { padding: 5px; border-width: 1px; border-spacing: 0px; border-style: solid; border-collapse: collapse;}
-</style>
-<style>/*****************************************************************
- * ReSpec 3 CSS
- * Robin Berjon - http://berjon.com/
- *****************************************************************/
-
-/* --- INLINES --- */
-em.rfc2119 {
- text-transform: lowercase;
- font-variant: small-caps;
- font-style: normal;
- color: #900;
-}
-
-h1 acronym, h2 acronym, h3 acronym, h4 acronym, h5 acronym, h6 acronym, a acronym,
-h1 abbr, h2 abbr, h3 abbr, h4 abbr, h5 abbr, h6 abbr, a abbr {
- border: none;
-}
-
-dfn {
- font-weight: bold;
-}
-
-a.internalDFN {
- color: inherit;
- border-bottom: 1px solid #99c;
- text-decoration: none;
-}
-
-a.externalDFN {
- color: inherit;
- border-bottom: 1px dotted #ccc;
- text-decoration: none;
-}
-
-a.bibref {
- text-decoration: none;
-}
-
-cite .bibref {
- font-style: normal;
-}
-
-code {
- color: #ff4500;
-}
-
-
-/* --- --- */
-ol.algorithm { counter-reset:numsection; list-style-type: none; }
-ol.algorithm li { margin: 0.5em 0; }
-ol.algorithm li:before { font-weight: bold; counter-increment: numsection; content: counters(numsection, ".") ") "; }
-
-/* --- TOC --- */
-.toc a, .tof a {
- text-decoration: none;
-}
-
-a .secno, a .figno {
- color: #000;
-}
-
-ul.tof, ol.tof {
- list-style: none outside none;
-}
-
-.caption {
- margin-top: 0.5em;
- font-style: italic;
-}
-
-/* --- TABLE --- */
-table.simple {
- border-spacing: 0;
- border-collapse: collapse;
- border-bottom: 3px solid #005a9c;
-}
-
-.simple th {
- background: #005a9c;
- color: #fff;
- padding: 3px 5px;
- text-align: left;
-}
-
-.simple th[scope="row"] {
- background: inherit;
- color: inherit;
- border-top: 1px solid #ddd;
-}
-
-.simple td {
- padding: 3px 10px;
- border-top: 1px solid #ddd;
-}
-
-.simple tr:nth-child(even) {
- background: #f0f6ff;
-}
-
-/* --- DL --- */
-.section dd > p:first-child {
- margin-top: 0;
-}
-
-.section dd > p:last-child {
- margin-bottom: 0;
-}
-
-.section dd {
- margin-bottom: 1em;
-}
-
-.section dl.attrs dd, .section dl.eldef dd {
- margin-bottom: 0;
-}
-</style><style>/* --- EXAMPLES --- */
-div.example-title {
- min-width: 7.5em;
- color: #b9ab2d;
-}
-div.example-title span {
- text-transform: uppercase;
-}
-aside.example, div.example, div.illegal-example {
- padding: 0.5em;
- margin: 1em 0;
- position: relative;
- clear: both;
-}
-div.illegal-example { color: red }
-div.illegal-example p { color: black }
-aside.example, div.example {
- padding: .5em;
- border-left-width: .5em;
- border-left-style: solid;
- border-color: #e0cb52;
- background: #fcfaee;
-}
-
-aside.example div.example {
- border-left-width: .1em;
- border-color: #999;
- background: #fff;
-}
-aside.example div.example div.example-title {
- color: #999;
-}
-</style><style>/* --- ISSUES/NOTES --- */
-div.issue-title, div.note-title {
- padding-right: 1em;
- min-width: 7.5em;
- color: #b9ab2d;
-}
-div.issue-title { color: #e05252; }
-div.note-title { color: #52e052; }
-div.issue-title span, div.note-title span {
- text-transform: uppercase;
-}
-div.note, div.issue {
- margin-top: 1em;
- margin-bottom: 1em;
-}
-.note > p:first-child, .issue > p:first-child { margin-top: 0 }
-.issue, .note {
- padding: .5em;
- border-left-width: .5em;
- border-left-style: solid;
-}
-div.issue, div.note {
- padding: 0.5em;
- margin: 1em 0;
- position: relative;
- clear: both;
-}
-span.note, span.issue { padding: .1em .5em .15em; }
-
-.issue {
- border-color: #e05252;
- background: #fbe9e9;
-}
-.note {
- border-color: #52e052;
- background: #e9fbe9;
-}
-
-
-</style><link rel="stylesheet" href="http://www.w3.org/community/src/css/spec/cg-final.css"><!--[if lt IE 9]><script src='http://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]--></head>
-
-<body><div class="head">
- <p>
- <a href="http://www.w3.org/"><img width="72" height="48" src="http://www.w3.org/Icons/w3c_home" alt="W3C"></a>
- </p>
- <h1 class="title" id="title">JSON-LD 1.0</h1>
- <h2 id="subtitle">A JSON-based Serialization for Linked Data</h2>
- <h2 id="final-community-group-specification-02-february-2013">Final Community Group Specification 02 February 2013</h2>
- <dl>
-
-
-
- <dt>Latest editor's draft:</dt>
- <dd><a href="http://dvcs.w3.org/hg/json-ld/raw-file/default/spec/latest/json-ld-syntax/index.html">http://dvcs.w3.org/hg/json-ld/raw-file/default/spec/latest/json-ld-syntax/index.html</a></dd>
-
-
-
-
-
- <dt>Editors:</dt>
- <dd rel="bibo:editor" inlist=""><span typeof="foaf:Person"><a rel="foaf:homepage" property="foaf:name" content="Manu Sporny" href="http://manu.sporny.org/">Manu Sporny</a>, <a rel="foaf:workplaceHomepage" href="http://digitalbazaar.com/">Digital Bazaar</a></span>
-</dd>
-<dd rel="bibo:editor" inlist=""><span typeof="foaf:Person"><a rel="foaf:homepage" property="foaf:name" content="Gregg Kellogg" href="http://greggkellogg.net/">Gregg Kellogg</a>, <a rel="foaf:workplaceHomepage" href="http://kellogg-assoc.com/">Kellogg Associates</a></span>
-</dd>
-<dd rel="bibo:editor" inlist=""><span typeof="foaf:Person"><a rel="foaf:homepage" property="foaf:name" content="Markus Lanthaler" href="http://www.markus-lanthaler.com/">Markus Lanthaler</a>, <a rel="foaf:workplaceHomepage" href="http://www.tugraz.at/">Graz University of Technology</a></span>
-</dd>
-
-
- <dt>Authors:</dt>
- <dd rel="dcterms:contributor"><span typeof="foaf:Person"><a rel="foaf:homepage" property="foaf:name" content="Manu Sporny" href="http://digitalbazaar.com/">Manu Sporny</a>, <a rel="foaf:workplaceHomepage" href="http://digitalbazaar.com/">Digital Bazaar</a></span>
-</dd>
-<dd rel="dcterms:contributor"><span typeof="foaf:Person"><a rel="foaf:homepage" property="foaf:name" content="Dave Longley" href="http://digitalbazaar.com/">Dave Longley</a>, <a rel="foaf:workplaceHomepage" href="http://digitalbazaar.com/">Digital Bazaar</a></span>
-</dd>
-<dd rel="dcterms:contributor"><span typeof="foaf:Person"><a rel="foaf:homepage" property="foaf:name" content="Gregg Kellogg" href="http://greggkellogg.net/">Gregg Kellogg</a>, <a rel="foaf:workplaceHomepage" href="http://kellogg-assoc.com/">Kellogg Associates</a></span>
-</dd>
-<dd rel="dcterms:contributor"><span typeof="foaf:Person"><a rel="foaf:homepage" property="foaf:name" content="Markus Lanthaler" href="http://www.markus-lanthaler.com/">Markus Lanthaler</a>, <a rel="foaf:workplaceHomepage" href="http://www.tugraz.at/">Graz University of Technology</a></span>
-</dd>
-<dd rel="dcterms:contributor"><span typeof="foaf:Person"><a rel="foaf:homepage" property="foaf:name" content="Niklas Lindström" href="http://neverspace.net/">Niklas Lindström</a></span>
-</dd>
-
-
- </dl>
-
- <p>
-
- This document is also available in this non-normative format:
-
- <a href="diff-20120930.html">diff to previous version</a>
- </p>
-
- <p class="copyright">
- <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> ©
- 2010-2013
- the Contributors to the JSON-LD 1.0 Specification, published by the
- <a href="http://www.w3.org/2011/rdf-wg/">RDF Working Group</a> under the
-
- <a href="https://www.w3.org/community/about/agreements/fsa/">W3C Community Final Specification Agreement (FSA)</a>.
- A human-readable <a href="http://www.w3.org/community/about/agreements/fsa-deed/">summary</a> is available.
-
- </p>
- <hr>
-</div>
-<section id="abstract" class="introductory" property="dcterms:abstract" datatype="" typeof="bibo:Chapter" resource="#abstract" rel="bibo:chapter"><h2>Abstract</h2>
- <p>JSON has proven to be a highly useful object serialization and messaging format.
- In an attempt to harmonize the representation of <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a>
- in JSON, this specification outlines a common JSON representation format for
- expressing directed graphs; mixing both Linked Data and non-Linked Data in
- a single document.</p>
-</section><section id="sotd" class="introductory" typeof="bibo:Chapter" resource="#sotd" rel="bibo:chapter"><h2>Status of This Document</h2>
- <p>
- This specification was published by the <a href="http://www.w3.org/2011/rdf-wg/">RDF Working Group</a>.
- It is not a W3C Standard nor is it on the W3C Standards Track.
-
- Please note that under the
- <a href="https://www.w3.org/community/about/agreements/final/">W3C Community Final Specification Agreement (FSA)</a>
- other conditions apply.
-
- Learn more about
- <a href="http://www.w3.org/community/">W3C Community and Business Groups</a>.
- </p>
-
- <p>This document has been under development for over 25 months in the
- JSON for Linking Data Community Group. The document has recently been
- transferred to the RDF Working Group for review, improvement, and publication.
- The specification has undergone significant development, review, and changes
- during the course of the last 25 months.</p>
-
- <p>There are several independent
- <a href="http://json-ld.org/#impl">interoperable implementations</a> of
- this specification. There is a
- <a href="https://github.com/json-ld/json-ld.org/tree/master/test-suite">fairly complete test suite</a>
- and a <a href="http://json-ld.org/playground/">live JSON-LD editor</a>
- that is capable of demonstrating the features described in
- this document. While development on implementations, the test suite
- and the live editor will continue, they are believed to be mature enough
- to be integrated into a non-production system at this point in time with
- the expectation that they could be used in a production system within the
- next year.</p>
-
- <p>There are a number of ways that one may participate in the development of
- this specification:</p>
-
- <ul>
- <li>If you want to make sure that your feedback is formally addressed by
- the RDF Working Group, you should send it to public-rdf-comments:
- <a href="http://lists.w3.org/Archives/Public/public-rdf-comments/">public-rdf-comments@w3.org</a></li>
-
- <li>Ad-hoc technical discussion primarily occurs on the public community mailing list:
- <a href="http://lists.w3.org/Archives/Public/public-linked-json/">public-linked-json@w3.org</a></li>
-
- <li><a href="http://json-ld.org/minutes/">Public JSON-LD Community Group teleconferences</a>
- are held on Tuesdays at 1500UTC every week.</li>
-
- <li>RDF Working Group teleconferences are held on Wednesdays at 1500UTC
- every week. Participation is limited to RDF Working Group members.</li>
-
- <li>Specification bugs and issues should be reported in the
- <a href="https://github.com/json-ld/json-ld.org/issues">issue tracker</a>
- if you do not want to send an e-mail to the public-rdf-comments mailing
- list.</li>
-
- <li><a href="https://github.com/json-ld/json-ld.org/tree/master/spec">Source code</a>
- for the specification can be found on Github.</li>
-
- <li>The <a href="http://webchat.freenode.net/?channels=json-ld">#json-ld</a>
- IRC channel is available for real-time discussion on irc.freenode.net.</li>
- </ul>
-
-</section><section id="toc"><h2 class="introductory">Table of Contents</h2><ul class="toc"><li class="tocline"><a href="#introduction" class="tocxref"><span class="secno">1. </span>Introduction</a><ul class="toc"><li class="tocline"><a href="#how-to-read-this-document" class="tocxref"><span class="secno">1.1 </span>How to Read this Document</a></li></ul></li><li class="tocline"><a href="#design-goals-and-rationale" class="tocxref"><span class="secno">2. </span>Design Goals and Rationale</a></li><li class="tocline"><a href="#terminology" class="tocxref"><span class="secno">3. </span>Terminology</a><ul class="toc"><li class="tocline"><a href="#general-terminology" class="tocxref"><span class="secno">3.1 </span>General Terminology</a></li><li class="tocline"><a href="#syntax-tokens-and-keywords" class="tocxref"><span class="secno">3.2 </span>Syntax Tokens and Keywords</a></li></ul></li><li class="tocline"><a href="#conformance" class="tocxref"><span class="secno">4. </span>Conformance</a></li><li class="tocline"><a href="#basic-concepts" class="tocxref"><span class="secno">5. </span>Basic Concepts</a><ul class="toc"><li class="tocline"><a href="#the-context" class="tocxref"><span class="secno">5.1 </span>The Context</a></li><li class="tocline"><a href="#iris" class="tocxref"><span class="secno">5.2 </span>IRIs</a></li><li class="tocline"><a href="#node-identifiers" class="tocxref"><span class="secno">5.3 </span>Node Identifiers</a></li><li class="tocline"><a href="#specifying-the-type" class="tocxref"><span class="secno">5.4 </span>Specifying the Type</a></li></ul></li><li class="tocline"><a href="#advanced-concepts" class="tocxref"><span class="secno">6. </span>Advanced Concepts</a><ul class="toc"><li class="tocline"><a href="#compact-iris" class="tocxref"><span class="secno">6.1 </span>Compact IRIs</a></li><li class="tocline"><a href="#typed-values" class="tocxref"><span class="secno">6.2 </span>Typed Values</a></li><li class="tocline"><a href="#type-coercion" class="tocxref"><span class="secno">6.3 </span>Type Coercion</a></li><li class="tocline"><a href="#advanced-context-usage" class="tocxref"><span class="secno">6.4 </span>Advanced Context Usage</a><ul class="toc"><li class="tocline"><a href="#interpreting-json-as-json-ld" class="tocxref"><span class="secno">6.4.1 </span>Interpreting JSON as JSON-LD</a></li></ul></li><li class="tocline"><a href="#string-internationalization" class="tocxref"><span class="secno">6.5 </span>String Internationalization</a></li><li class="tocline"><a href="#overriding-vocab" class="tocxref"><span class="secno">6.6 </span>Overriding @vocab</a></li><li class="tocline"><a href="#property-generators" class="tocxref"><span class="secno">6.7 </span>Property Generators</a></li><li class="tocline"><a href="#iri-expansion-within-a-context" class="tocxref"><span class="secno">6.8 </span><abbr title="Internationalized Resource Identifier">IRI</abbr> Expansion Within a Context</a></li><li class="tocline"><a href="#sets-and-lists" class="tocxref"><span class="secno">6.9 </span>Sets and Lists</a></li><li class="tocline"><a href="#embedding" class="tocxref"><span class="secno">6.10 </span>Embedding</a></li><li class="tocline"><a href="#named-graphs" class="tocxref"><span class="secno">6.11 </span>Named Graphs</a></li><li class="tocline"><a href="#identifying-blank-nodes" class="tocxref"><span class="secno">6.12 </span>Identifying Blank Nodes</a></li><li class="tocline"><a href="#aliasing-keywords" class="tocxref"><span class="secno">6.13 </span>Aliasing Keywords</a></li><li class="tocline"><a href="#expanded-document-form" class="tocxref"><span class="secno">6.14 </span>Expanded Document Form</a></li><li class="tocline"><a href="#compact-document-form" class="tocxref"><span class="secno">6.15 </span>Compact Document Form</a></li><li class="tocline"><a href="#data-indexing" class="tocxref"><span class="secno">6.16 </span>Data Indexing</a></li></ul></li><li class="tocline"><a href="#data-model" class="tocxref"><span class="secno">A. </span>Data Model</a></li><li class="tocline"><a href="#json-ld-grammar" class="tocxref"><span class="secno">B. </span>JSON-LD Grammar</a><ul class="toc"><li class="tocline"><a href="#grammar-node-object" class="tocxref"><span class="secno">B.1 </span>Node Object</a></li><li class="tocline"><a href="#grammar-term-reference" class="tocxref"><span class="secno">B.2 </span>Term</a></li><li class="tocline"><a href="#grammar-language-map" class="tocxref"><span class="secno">B.3 </span>Language Map</a></li><li class="tocline"><a href="#grammar-index-map" class="tocxref"><span class="secno">B.4 </span>Index Map</a></li><li class="tocline"><a href="#grammar-expanded-values" class="tocxref"><span class="secno">B.5 </span>Expanded Values</a></li><li class="tocline"><a href="#grammar-set-list" class="tocxref"><span class="secno">B.6 </span>List and Set Values</a></li><li class="tocline"><a href="#grammar-context" class="tocxref"><span class="secno">B.7 </span>Context Definition</a></li></ul></li><li class="tocline"><a href="#relationship-to-rdf" class="tocxref"><span class="secno">C. </span>Relationship to RDF</a></li><li class="tocline"><a href="#relationship-to-other-linked-data-formats" class="tocxref"><span class="secno">D. </span>Relationship to Other Linked Data Formats</a><ul class="toc"><li class="tocline"><a href="#turtle" class="tocxref"><span class="secno">D.1 </span>Turtle</a><ul class="toc"><li class="tocline"><a href="#prefix-definitions" class="tocxref"><span class="secno">D.1.1 </span>Prefix definitions</a></li><li class="tocline"><a href="#embedding-1" class="tocxref"><span class="secno">D.1.2 </span>Embedding</a></li><li class="tocline"><a href="#lists" class="tocxref"><span class="secno">D.1.3 </span>Lists</a></li></ul></li><li class="tocline"><a href="#rdfa" class="tocxref"><span class="secno">D.2 </span>RDFa</a></li><li class="tocline"><a href="#microformats" class="tocxref"><span class="secno">D.3 </span>Microformats</a></li><li class="tocline"><a href="#microdata" class="tocxref"><span class="secno">D.4 </span>Microdata</a></li></ul></li><li class="tocline"><a href="#iana-considerations" class="tocxref"><span class="secno">E. </span>IANA Considerations</a></li><li class="tocline"><a href="#acknowledgements" class="tocxref"><span class="secno">F. </span>Acknowledgements</a></li><li class="tocline"><a href="#references" class="tocxref"><span class="secno">G. </span>References</a><ul class="toc"><li class="tocline"><a href="#normative-references" class="tocxref"><span class="secno">G.1 </span>Normative references</a></li><li class="tocline"><a href="#informative-references" class="tocxref"><span class="secno">G.2 </span>Informative references</a></li></ul></li></ul></section>
-
-
-
-<section class="informative" id="introduction">
- <!--OddPage--><h2><span class="secno">1. </span>Introduction</h2><p><em>This section is non-normative.</em></p>
-
- <p><dfn title="linked_data" id="dfn-linked_data">Linked Data</dfn> is a technique for creating a network
- of inter-connected data across different documents and Web sites. In general,
- Linked Data has four properties: 1) it uses <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>
- to name things; 2) it uses HTTP <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>
- for those names; 3) the name <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>, when dereferenced,
- provide more information about the name; and 4) the data expresses links
- to data on other Web sites. These properties allow data published on the Web
- to work much like Web pages do today. One can start at one piece of Linked Data,
- and follow the links to other pieces of data that are hosted on different
- sites across the Web.</p>
-
- <p>JSON-LD is designed as a lightweight syntax to express <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a> in
- JSON [<cite><a class="bibref" href="#bib-RFC4627">RFC4627</a></cite>]. It is primarily intended to be a way to use Linked Data in
- Web-based programming environments. It is also useful when building interoperable
- Web services and when storing Linked Data in JSON-based storage engines. Since
- JSON-LD is 100% compatible with JSON the large number of JSON parsers and libraries
- available today can be reused. Additionally to all the features JSON provides,
- JSON-LD introduces:</p>
-
- <ul>
- <li>a universal identifier mechanism for <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON objects</a>
- via the use of <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>,</li>
- <li>a way to disambiguate the keys used between multiple JSON documents
- by mapping them to <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> via a <a class="tref internalDFN" title="context" href="#dfn-context">context</a>,</li>
- <li>a mechanism in which a value in a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> may refer
- to a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> on a different site on the Web,</li>
- <li>the ability to express the language associated with a <a class="tref internalDFN" title="string" href="#dfn-string">string</a></li>
- <li>a way to associate datatypes with values such as dates, times, weights,
- and distances,</li>
- <li>and a facility to express one or more directed graphs, such as a social
- network, in a single document.</li>
- </ul>
-
- <p>Developers that require any of the facilities listed above or need to serialize
- an RDF graph or dataset [<cite><a class="bibref" href="#bib-RDF-CONCEPTS">RDF-CONCEPTS</a></cite>] in a JSON-based syntax will find
- JSON-LD of interest. The syntax is designed to not disturb already deployed
- systems running on JSON, but provide a smooth upgrade path from JSON to
- JSON-LD.</p>
-
- <section id="how-to-read-this-document">
- <h3><span class="secno">1.1 </span>How to Read this Document</h3><p><em>This section is non-normative.</em></p>
-
- <p>This document is a detailed specification for a serialization of Linked
- Data in JSON. The document is primarily intended for the following audiences:</p>
-
- <ul>
- <li>Software developers that want to encode Linked Data in a variety of
- programming languages that can use JSON.</li>
- <li>Software developers that want to understand the design decisions and
- language syntax for JSON-LD.</li>
- <li>Software developers that want to implement processors and APIs for
- JSON-LD.</li>
- </ul>
-
- <p>This specification does not describe the programming interfaces for the
- JSON-LD Syntax. The specification that describes the programming interfaces
- for JSON-LD documents is the JSON-LD Application Programming Interface
- [<cite><a class="bibref" href="#bib-JSON-LD-API">JSON-LD-API</a></cite>].</p>
-
- <p>To understand the basics in this specification you must first be familiar with
- JSON, which is detailed in [<cite><a class="bibref" href="#bib-RFC4627">RFC4627</a></cite>].</p>
- </section>
-</section>
-
-<section class="informative" id="design-goals-and-rationale">
- <!--OddPage--><h2><span class="secno">2. </span>Design Goals and Rationale</h2><p><em>This section is non-normative.</em></p>
-
- <p>A number of design goals were established before the creation of this
- markup language:</p>
-
- <dl>
- <dt>Simplicity</dt>
- <dd>No extra processors or software libraries should be necessary to use JSON-LD
- in its most basic form. The language will provide developers with a very easy
- learning curve. Developers only need to know JSON and two
- <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a> (<code>@context</code>
- and <code>@id</code>) to use the basic functionality in JSON-LD.</dd>
- <dt>Compatibility</dt>
- <dd>The JSON-LD markup must be 100% compatible with JSON. This ensures that
- all of the standard JSON libraries work seamlessly with JSON-LD documents.</dd>
- <dt>Expressiveness</dt>
- <dd>The syntax must be able to express directed graphs, which have been proven
- to be able to express almost every real world data model.</dd>
- <dt>Terseness</dt>
- <dd>The JSON-LD syntax must be very terse and human readable, requiring as
- little effort as possible from the developer.</dd>
- <dt>Zero Edits, most of the time</dt>
- <dd>JSON-LD must make the transition to JSON-LD as simple as possible. In many cases,
- zero edits to the JSON document and the addition of one line to the HTTP response
- should suffice (see <a href="#referencing-contexts-from-json-documents"></a>).
- This allows organizations that have
- already deployed large JSON-based infrastructure to use JSON-LD's features
- in a way that is not disruptive to their day-to-day operations and is
- transparent to their current customers. However, there are times where
- mapping JSON to a graph representation is more complex than a simple one-line
- change. In these instances, rather than extending JSON-LD to support an
- esoteric use case, we chose not to support the use case. While Zero Edits is
- a design goal, it is not always possible without adding great complexity
- to the language. We should focus on simplicity when possible.</dd>
- </dl>
-</section>
-
-<section class="normative" id="terminology">
-<!--OddPage--><h2><span class="secno">3. </span>Terminology</h2>
-
- <section id="general-terminology">
- <h3><span class="secno">3.1 </span>General Terminology</h3>
-
- <p>This document uses the following terms as defined in JSON [<cite><a class="bibref" href="#bib-RFC4627">RFC4627</a></cite>]. Refer
- to the <em>JSON Grammar</em> section in [<cite><a class="bibref" href="#bib-RFC4627">RFC4627</a></cite>] for formal definitions.</p>
-
- <dl>
- <dt><dfn title="json_object" id="dfn-json_object">JSON object</dfn></dt><dd>
- An object structure is represented as a pair of curly brackets
- surrounding zero or more key-value pairs. A key is a
- <a class="tref internalDFN" title="string" href="#dfn-string">string</a>. A single colon comes after each key, separating the
- key from the value. A single comma separates a value from a following
- key.
- </dd>
- <dt><dfn title="array" id="dfn-array">array</dfn></dt>
- <dd>
- An array structure is represented as square brackets surrounding zero
- or more values. Values are separated by commas.
- In JSON, an array is an <em>ordered</em> sequence of zero or more values.
- While JSON-LD uses the same array representation as JSON,
- the collection is <em>unordered</em> by default. While order is
- preserved in regular JSON arrays, it is not in regular JSON-LD arrays
- unless specific markup is provided (see <a href="#sets-and-lists" class="sec-ref"><span class="secno">6.9</span> <span class="sec-title">Sets and Lists</span></a>).</dd>
- <dt><dfn title="string" id="dfn-string">string</dfn></dt><dd>
- A string is a sequence of zero or more Unicode characters,
- wrapped in double quotes, using backslash escapes (if necessary). A
- character is represented as a single character string.</dd>
- <dt><dfn title="number" id="dfn-number">number</dfn></dt>
- <dd>
- A number is similar to that used in most programming languages, except
- that the octal and hexadecimal formats are not used and that leading
- zeros are not allowed.</dd>
- <dt><dfn title="true" id="dfn-true">true</dfn> and <dfn title="false" id="dfn-false">false</dfn></dt><dd>
- Values that are used to express one of two possible boolean states.</dd>
- <dt><dfn title="null" id="dfn-null">null</dfn></dt>
- <dd>The <a class="tref internalDFN" title="null" href="#dfn-null">null</a> value, which is typically used to clear or forget
- data. For example, A key-value pair in the
- <code>@context</code> where the value is <a class="tref internalDFN" title="null" href="#dfn-null">null</a> explicitly
- decouples a <a class="tref internalDFN" title="term" href="#dfn-term">term</a>'s association with an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.
- A key-value pair in the body of a JSON-LD document whose
- value is <a class="tref internalDFN" title="null" href="#dfn-null">null</a> has the same meaning as if the key-value pair
- was not defined. If <code>@value</code>, <code>@list</code>, or
- <code>@set</code> is set to <a class="tref internalDFN" title="null" href="#dfn-null">null</a> in expanded form, then
- the entire <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> is ignored.</dd>
- </dl>
- </section>
-
- <section id="syntax-tokens-and-keywords">
- <h3><span class="secno">3.2 </span>Syntax Tokens and Keywords</h3>
-
- <p>JSON-LD specifies a number of syntax tokens and <dfn title="keyword" id="dfn-keyword">keywords</dfn>
- that are a core part of the language:</p>
-
- <dl>
- <dt><code>@context</code></dt>
- <dd>Used to define the short-hand names that are used throughout a JSON-LD
- document. These short-hand names are called <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> and help
- developers to express specific identifiers in a compact manner. The
- <code>@context</code> keyword is described in detail in the section titled
- <a href="#the-context" class="sec-ref"><span class="secno">5.1</span> <span class="sec-title">The Context</span></a>.</dd>
- <dt><code>@id</code></dt>
- <dd>Used to uniquely identify <em>things</em> that are being described in the document.
- This keyword is described in <a href="#node-identifiers" class="sec-ref"><span class="secno">5.3</span> <span class="sec-title">Node Identifiers</span></a>.</dd>
- <dt><code>@value</code></dt>
- <dd>Used to specify the data that is associated with a particular
- <a class="tref internalDFN" title="property" href="#dfn-property">property</a> in the graph. This keyword is described in
- <a href="#string-internationalization" class="sec-ref"><span class="secno">6.5</span> <span class="sec-title">String Internationalization</span></a> and
- <a href="#typed-values" class="sec-ref"><span class="secno">6.2</span> <span class="sec-title">Typed Values</span></a>.</dd>
- <dt><code>@language</code></dt>
- <dd>Used to specify the native language for a particular value or the default
- language of a JSON-LD document. This keyword is described in the section titled
- <a href="#string-internationalization" class="sec-ref"><span class="secno">6.5</span> <span class="sec-title">String Internationalization</span></a>.</dd>
- <dt><code>@type</code></dt>
- <dd>Used to set the data type of a <a class="tref internalDFN" title="node" href="#dfn-node">node</a> or
- <a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">typed value</a>. This keyword is described in the section titled
- <a href="#typed-values" class="sec-ref"><span class="secno">6.2</span> <span class="sec-title">Typed Values</span></a>.</dd>
- <dt><code>@container</code></dt>
- <dd>Used to set the default container type for a <a class="tref internalDFN" title="term" href="#dfn-term">term</a>.
- This keyword is described in the section titled <a href="#sets-and-lists" class="sec-ref"><span class="secno">6.9</span> <span class="sec-title">Sets and Lists</span></a>.</dd>
- <dt><code>@list</code></dt>
- <dd>Used to express an ordered set of data.
- This keyword is described in the section titled <a href="#sets-and-lists" class="sec-ref"><span class="secno">6.9</span> <span class="sec-title">Sets and Lists</span></a>.</dd>
- <dt><code>@set</code></dt>
- <dd>Used to express an unordered set of data and to ensure that values are always
- represented as arrays. This keyword is described in the section titled
- <a href="#sets-and-lists" class="sec-ref"><span class="secno">6.9</span> <span class="sec-title">Sets and Lists</span></a>.</dd>
- <dt><code>@index</code></dt>
- <dd>Used to specify that a container is used to index information and
- that processing should continue deeper into a JSON data structure.
- This keyword is described in the section titled
- <a href="#data-indexing" class="sec-ref"><span class="secno">6.16</span> <span class="sec-title">Data Indexing</span></a>.</dd>
- <dt><code>@vocab</code></dt>
- <dd>Used to expand properties and values in <code>@type</code> with a common prefix
- <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>. This keyword is described in section <a href="#iris" class="sec-ref"><span class="secno">5.2</span> <span class="sec-title">IRIs</span></a>.</dd>
- <dt><code>@graph</code></dt><dd>Used to explicitly label a <a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">JSON-LD graph</a>.
- This keyword is described in <a href="#named-graphs" class="sec-ref"><span class="secno">6.11</span> <span class="sec-title">Named Graphs</span></a>.</dd>
- <dt><code>:</code></dt>
- <dd>The separator for JSON keys and values that use
- <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact IRIs</a>.</dd>
- </dl>
-
- <p>For the avoidance of doubt, all keys, <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a>,
- and values in JSON-LD are case-sensitive.</p>
- </section>
-</section>
-
-<section class="normative" id="conformance">
- <!--OddPage--><h2><span class="secno">4. </span>Conformance</h2>
-
- <p>This specification describes the conformance criteria for JSON-LD documents.
- This criteria is relevant to authors and authoring tool implementers.</p>
-
- <p>A <a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">JSON-LD document</a> complies with this specification if it follows
- the normative statements in section <a href="#json-ld-grammar" class="sec-ref"><span class="secno">B.</span> <span class="sec-title">JSON-LD Grammar</span></a>. JSON documents
- can be interpreted as JSON-LD by following the normative statements in section
- <a href="#referencing-contexts-from-json-documents"></a>. For convenience, normative
- statements for documents are often phrased as statements on the properties of the document.</p>
-
- <p>The key words <em class="rfc2119" title="must">must</em>, <em class="rfc2119" title="must not">must not</em>, <em class="rfc2119" title="required">required</em>, <em class="rfc2119" title="shall">shall</em>, <em class="rfc2119" title="shall not">shall not</em>, <em class="rfc2119" title="should">should</em>, <em class="rfc2119" title="should not">should not</em>,
- <em class="rfc2119" title="recommended">recommended</em>, <em class="rfc2119" title="not recommended">not recommended</em>, <em class="rfc2119" title="may">may</em>, and <em class="rfc2119" title="optional">optional</em> in this specification have the
- meaning defined in [<cite><a class="bibref" href="#bib-RFC2119">RFC2119</a></cite>].</p>
-</section>
-
-<section class="normative" id="basic-concepts">
- <!--OddPage--><h2><span class="secno">5. </span>Basic Concepts</h2>
-
- <p>JSON [<cite><a class="bibref" href="#bib-RFC4627">RFC4627</a></cite>] is a lightweight, language-independent data-interchange format.
- It is easy to parse and easy to generate. However, it is difficult to integrate JSON
- from different sources as the data has just local meaning. Furthermore, JSON has no
- built-in support for hyperlinks - a fundamental building block on the Web. Let's look
- at an example that we will be using for the rest of this section:</p>
-
- <div class="example"><div class="example-title"><span>Example 1</span>: Sample JSON document</div><pre class="example">{
- "name": "Manu Sporny",
- "homepage": "http://manu.sporny.org/",
- "image": "http://manu.sporny.org/images/manu.png"
-}</pre></div>
-
- <p>It's obvious for humans that the data is about a person whose name is "Manu Sporny"
- and that the <code>homepage</code> property contains the URL of that person's homepage.
- A machine doesn't have such an intuitive understanding and sometimes,
- even for humans, it is difficult to resolve ambiguities in such representations. This problem
- can be solved by using unambiguous identifiers to denote the different concepts instead of
- <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> such as "name", "homepage", etc.</p>
-
- <p><a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a>, and the Web in general, uses <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>
- (Internationalized Resource Identifiers as described in [<cite><a class="bibref" href="#bib-RFC3987">RFC3987</a></cite>]) for unambiguous
- identification. The idea is to assign <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> to something that may
- be of use to other developers and that it is useful to give them an unambiguous identifier.
- That is, it is useful for <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> to expand to <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>
- so that developers don't accidentally step on each other's terms. Furthermore, developers and
- machines are able to use this <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> (by using a web browser, for instance) to go to
- the term and get a definition of what the term means.</p>
-
- <p>Leveraging the well-known <a href="http://schema.org/">schema.org vocabulary</a>,
- the example above could be unambiguously expressed as follows:</p>
-
- <div class="example"><div class="example-title"><span>Example 2</span>: Sample JSON-LD document using full IRIs instead of terms</div><pre class="example">{
- "<span class="diff">http://schema.org/name</span>": "Manu Sporny",
- "<span class="diff">http://schema.org/url</span>": <span class="diff">{ "@id": </span>"http://manu.sporny.org/" <span class="diff">}</span>,
- "<span class="diff">http://schema.org/image</span>": <span class="diff">{ "@id": </span>"http://manu.sporny.org/images/manu.png" <span class="diff">}</span>
-}</pre></div>
-
- <p>In the example above, every property is unambiguously identified by an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> and all values
- representing <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> are explicitly marked as such by the
- <code>@id</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>. While this is a valid JSON-LD
- document that is very specific about its data, the document is also overly verbose and difficult
- to work with for human developers. To address this issue, JSON-LD introduces the notion
- of a <a class="tref internalDFN" title="context" href="#dfn-context">context</a> as described in the next section.</p>
-
- <section id="the-context">
- <h3><span class="secno">5.1 </span>The Context</h3>
-
- <p>Simply speaking, a <dfn title="context" id="dfn-context">context</dfn> is used to map <a class="tref internalDFN" title="term" href="#dfn-term">terms</a>,
- i.e., <a class="tref internalDFN" title="property" href="#dfn-property">properties</a> with associated values, to
- <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>. <a class="tref internalDFN" title="term" href="#dfn-term">Terms</a> are case sensitive
- and any valid <a class="tref internalDFN" title="string" href="#dfn-string">string</a> that is not a reserved JSON-LD <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>
- can be used as a <a class="tref internalDFN" title="term" href="#dfn-term">term</a>.</p>
-
- <p>For the sample document in the previous section, a <a class="tref internalDFN" title="context" href="#dfn-context">context</a> would
- look something like this:</p>
-
- <div class="example"><div class="example-title"><span>Example 3</span>: Context for the sample document in the previous section</div><pre class="example">{
- <span class="diff">"@context":
- {
- "name": "http://schema.org/name",
- "image": {
- "@id": "http://schema.org/image",
- "@type": "@id"
- },
- "homepage": {
- "@id": "http://schema.org/url",
- "@type": "@id"
- }
- }</span>
-}</pre></div>
-
- <p>As the <a class="tref internalDFN" title="context" href="#dfn-context">context</a> above shows, the value of a <dfn title="term_definition" id="dfn-term_definition">term definition</dfn> can
- either be a simple string, mapping the <a class="tref internalDFN" title="term" href="#dfn-term">term</a> to an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
- or a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a>.</p>
-
- <p>When a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> is
- associated with a term, it is called an <a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">expanded term definition</a>.
- <dfn title="expanded_term_definition" id="dfn-expanded_term_definition">Expanded term definitions</dfn> may
- be used to associate <a href="#type-coercion">type</a> or
- <a href="#string-internationalization">language information</a> with a
- term.
- The example above specifies that the values of <code>image</code> and
- <code>homepage</code> terms are <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>.
- They also allow terms to be used for <a href="#data-indexing">index maps</a>
- and to specify whether <a class="tref internalDFN" title="array" href="#dfn-array">array</a> values are to be
- interpreted as <a href="#sets-and-lists">sets or lists</a>.
- <a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">Expanded term definitions</a> may
- be defined using <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute</a> or
- <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact IRIs</a> as keys, which is
- mainly used to associate type or language information with an
- <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute</a> or <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</p>
-
- <p><a class="tref internalDFN" title="context" href="#dfn-context">Contexts</a> can either be directly embedded
- into the document or be referenced. Assuming the context document in the previous
- example can be retrieved at <code>http://json-ld.org/contexts/person.jsonld</code>,
- it can be referenced by adding a single line and allows a JSON-LD document to
- be expressed much more concisely as shown in the example below:</p>
-
- <div class="example"><div class="example-title"><span>Example 4</span>: Referencing a JSON-LD context</div><pre class="example">{
- <span class="diff">"@context": "http://json-ld.org/contexts/person.jsonld",</span>
- "name": "Manu Sporny",
- "homepage": "http://manu.sporny.org/",
- "image": "http://manu.sporny.org/images/manu.png"
-}</pre></div>
-
- <p>The referenced context not only specifies how the terms map to
- <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> in the Schema.org vocabulary but also specifies that
- the values of the <code>homepage</code> and <code>image</code> property
- can be interpreted as an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> (e.g. <code>"@type": "@id"</code>,
- see section <a href="#iris" class="sec-ref"><span class="secno">5.2</span> <span class="sec-title">IRIs</span></a> for more details). This information gives the
- data global context and allows developers to re-use each other's data
- without having to agree to how their data will interoperate on a
- site-by-site basis. External JSON-LD context documents may contain extra
- information located outside of the <code>@context</code> key, such as
- documentation about the <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> declared in the
- document. Information contained outside of the <code>@context</code> value
- is ignored when the document is used as an external JSON-LD context document.</p>
-
- <p>Contexts may also be specified in-line. This has the advantage that
- <a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">JSON-LD documents</a> can be processed
- even in the absence of a connection to the Web.</p>
-
- <div class="example"><div class="example-title"><span>Example 5</span>: In-line context definition</div><pre class="example">{
- <span class="diff">"@context":
- {
- "name": "http://schema.org/name",
- "image": {
- "@id": "http://schema.org/image",
- "@type": "@id"
- },
- "homepage": {
- "@id": "http://schema.org/url",
- "@type": "@id"
- }
- },</span>
- "name": "Manu Sporny",
- "homepage": "http://manu.sporny.org/",
- "image": "http://manu.sporny.org/images/manu.png"
-}</pre></div>
- </section>
-
-<section id="iris">
- <h3><span class="secno">5.2 </span>IRIs</h3>
-
- <p><a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> (Internationalized Resource Identifiers
- [<cite><a class="bibref" href="#bib-RFC3987">RFC3987</a></cite>]) are fundamental to <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a> as that is how most
- <a class="tref internalDFN" title="node" href="#dfn-node">nodes</a> and <a class="tref internalDFN" title="property" href="#dfn-property">properties</a>
- are identified. In JSON-LD, IRIs may be represented as an
- <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> or a <a class="tref internalDFN" title="relative_iri" href="#dfn-relative_iri">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>. An
- <dfn title="absolute_iri" id="dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></dfn> is defined in [<cite><a class="bibref" href="#bib-RFC3987">RFC3987</a></cite>] as containing a
- <em>scheme</em> along with <em>path</em> and optional <em>query</em> and
- <em>fragment</em> segments. A <dfn title="relative_iri" id="dfn-relative_iri">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></dfn> is an <abbr title="Internationalized Resource Identifier">IRI</abbr>
- that is relative to some other <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>.
- In JSON-LD all <a class="tref internalDFN" title="relative_iri" href="#dfn-relative_iri">relative IRIs</a> are resolved
- relative to the <dfn title="base_iri" id="dfn-base_iri">base <abbr title="Internationalized Resource Identifier">IRI</abbr></dfn> associated with the document, which
- is typically the directory path containing the document.</p>
-
- <p><a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">IRIs</a> can be expressed directly in the key
- position like so:</p>
-
- <div class="example"><div class="example-title"><span>Example 6</span>: IRI as a key</div><pre class="example">{
-...
- "<span class="diff">http://schema.org/name</span>": "Manu Sporny",
-...
-}</pre></div>
-
- <p>In the example above, the key <code>http://schema.org/name</code>
- is interpreted as an <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> because it contains a colon
- (<code>:</code>) and the "http" <a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a> does not exist in
- the context.</p>
-
- <p>Term-to-<abbr title="Internationalized Resource Identifier">IRI</abbr> expansion occurs if the key matches a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> defined
- within the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a>:</p>
-
- <div class="example"><div class="example-title"><span>Example 7</span>: Term expansion from context definition</div><pre class="example">{
- "<span class="diff">@context</span>":
- {
- "<span class="diff">name</span>": "<span class="diff">http://schema.org/name</span>"
-...
- },
- "<span class="diff">name</span>": "Manu Sporny",
- "status": "trollin'",
-...
-}</pre></div>
-
- <p>JSON keys that do not expand to an absolute <abbr title="Internationalized Resource Identifier">IRI</abbr> are ignored, or removed
- in some cases, by the [<cite><a class="bibref" href="#bib-JSON-LD-API">JSON-LD-API</a></cite>]. However, JSON keys that do not include
- a mapping in the <a class="tref internalDFN" title="context" href="#dfn-context">context</a> are still considered valid expressions
- in JSON-LD documents—the keys just don't expand to unambiguous identifiers.</p>
-
- <p>At times, all properties and types may come from the same vocabulary. JSON-LD's
- <code>@vocab</code> keyword allows an author to set a common prefix to be used
- for all properties and types that do not match a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> or are neither
- a <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> nor an <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> (i.e., they do
- not contain a colon).</p>
-
- <div class="example"><div class="example-title"><span>Example 8</span>: Using a common vocabulary prefix</div><pre class="example">{
- <span class="diff">"@context": {
- "@vocab": "http://schema.org/"
- },</span>
- "@type": <span class="diff">"Person"</span>,
- <span class="diff">"name"</span>: "Manu Sporny",
-}</pre></div>
-
- <p>An <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> is generated when a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> is used in
- the value position and contains an <code>@id</code> keyword:</p>
-
- <div class="example"><div class="example-title"><span>Example 9</span>: Expanded IRI definition</div><pre class="example">{
-...
- "homepage": { "<span class="diff">@id</span>": "http://manu.sporny.org" }
-...
-}</pre></div>
-
- <p>Specifying a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> with an
- <code>@id</code> key is used to identify that <a class="tref internalDFN" title="node" href="#dfn-node">node</a> using an
- <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>. This facility may also be used to link to another
- <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a> using a mechanism called
- <a class="tref internalDFN" title="embedding" href="#dfn-embedding">embedding</a>, which is covered in the section titled
- <a href="#embedding" class="sec-ref"><span class="secno">6.10</span> <span class="sec-title">Embedding</span></a>.</p>
-
- <p>If type <a class="tref internalDFN" title="coercion" href="#dfn-coercion">coercion</a> rules are specified in the <code>@context</code> for
- a particular <a class="tref internalDFN" title="term" href="#dfn-term">term</a> or property <abbr title="Internationalized Resource Identifier">IRI</abbr>, an <abbr title="Internationalized Resource Identifier">IRI</abbr> is generated:</p>
-
- <div class="example"><div class="example-title"><span>Example 10</span>: Type coercion</div><pre class="example">{<span class="diff">
- "@context":
- {
- ...
- "homepage":
- {
- "@id": "http://schema.org/homepage",
- "@type": "@id"
- }
- ...
- }</span>
-...
- "homepage": "http://manu.sporny.org/",
-...
-}</pre></div>
-
- <p>In the example above, even though the value <code>http://manu.sporny.org/</code>
- is expressed as a JSON <a class="tref internalDFN" title="string" href="#dfn-string">string</a>, the type <a class="tref internalDFN" title="coercion" href="#dfn-coercion">coercion</a>
- rules will transform the value into an <abbr title="Internationalized Resource Identifier">IRI</abbr> when generating the
- <a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">JSON-LD graph</a>. See <a href="#type-coercion" class="sec-ref"><span class="secno">6.3</span> <span class="sec-title">Type Coercion</span></a> for more
- details about this feature.</p>
-
- <p>In summary, <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> can be expressed in a variety of
- different ways in JSON-LD:</p>
-
- <ol>
- <li><a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> keys that have a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> mapping in
- the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a> expand to an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>
- (only applies outside of the <a class="tref internalDFN" title="context_definition" href="#dfn-context_definition">context definition</a>).</li>
- <li>If there is a <code>@vocab</code> mapping in the active context,
- <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> keys without an explicit mapping
- in the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a> are expanded to an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</li>
- <li>An <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> is generated for the <a class="tref internalDFN" title="string" href="#dfn-string">string</a> value specified using
- <code>@id</code> or <code>@type</code>.</li>
- <li>An <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> is generated for the <a class="tref internalDFN" title="string" href="#dfn-string">string</a> value of any key for which there
- are <a class="tref internalDFN" title="coercion" href="#dfn-coercion">coercion</a> rules that contain a <code>@type</code> key that is
- set to a value of <code>@id</code>.</li>
- </ol>
-</section>
-
-<section id="node-identifiers">
- <h3><span class="secno">5.3 </span>Node Identifiers</h3>
-
- <p>To be able to externally reference <a class="tref internalDFN" title="node" href="#dfn-node">nodes</a>
- in a <a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">graph</a>, it is important that each <a class="tref internalDFN" title="node" href="#dfn-node">node</a> have
- an unambiguous identifier. <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> are a fundamental concept of
- <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a>, and <a class="tref internalDFN" title="node" href="#dfn-node">nodes</a> should have a de-referenceable
- identifier used to name and locate them. For <a class="tref internalDFN" title="node" href="#dfn-node">nodes</a> to be truly linked,
- de-referencing the identifier should result in a representation of that <a class="tref internalDFN" title="node" href="#dfn-node">node</a>.
- Associating an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> with a <a class="tref internalDFN" title="node" href="#dfn-node">node</a> tells an application that it
- can fetch the resource associated with the <abbr title="Internationalized Resource Identifier">IRI</abbr> and get back a description of the
- <a class="tref internalDFN" title="node" href="#dfn-node">node</a>.</p>
-
- <p><a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">JSON-LD documents</a> may also contain descriptions
- of other <a class="tref internalDFN" title="node" href="#dfn-node">nodes</a>, so it is necessary to be able to
- uniquely identify each <a class="tref internalDFN" title="node" href="#dfn-node">node</a> so that the data is associated
- with the correct <a class="tref internalDFN" title="node" href="#dfn-node">node</a> in an unambiguous way.</p>
-
- <p>A <a class="tref internalDFN" title="node" href="#dfn-node">node</a> is identified using the <code>@id</code>
- <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>:</p>
-
- <div class="example"><div class="example-title"><span>Example 11</span>: Identifying a node</div><pre class="example">{
- "@context":
- {
- ...
- "homepage":
- {
- "@id": "http://schema.org/homepage",
- "@type": "@id"
- }
- },
- "<span class="diff">@id</span>": "<span class="diff">http://example.org/people#joebob</span>",
- "homepage": "http://joebob.example.com/",
- ...
-}</pre></div>
-
- <p>The example above contains a <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a> identified by the <abbr title="Internationalized Resource Identifier">IRI</abbr>
- <code>http://example.org/people#joebob</code>.</p>
-</section>
-
-<section id="specifying-the-type">
-<h3><span class="secno">5.4 </span>Specifying the Type</h3>
-
-<p>The type of a particular node can be specified using the <code>@type</code>
- <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>. In <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a>, types are uniquely
- identified with an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</p>
-
-<div class="example"><div class="example-title"><span>Example 12</span>: Specifying the type for a node</div><pre class="example">{
-...
- "@id": "http://example.org/places#BrewEats",
- "<span class="diff">@type</span>": "<span class="diff">http://schema.org/Restaurant</span>",
-...
-}</pre></div>
-
-<p>A node can be assigned more than one type by using an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>:</p>
-
-<div class="example"><div class="example-title"><span>Example 13</span>: Specifying multiple types for a node</div><pre class="example">{
-...
- "@id": "http://example.org/places#BrewEats",
- "<span class="diff">@type</span>": <span class="diff">[ "http://schema.org/Restaurant", "http://schema.org/Brewery" ],</span>
-...
-}</pre></div>
-
-<p>The value of a <code>@type</code> key may also be a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> defined in the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a>:</p>
-<div class="example"><div class="example-title"><span>Example 14</span>: Using a term to specify the type</div><pre class="example">{
- "@context": {
- ...
- <span class="diff">"Restaurant": "http://schema.org/Restaurant", </span>
- <span class="diff">"Brewery": "http://schema.org/Brewery"</span>
- }
- "@id": "http://example.org/places#BrewEats",
- <span class="diff">"@type": ["Restaurant", "Brewery"]</span>,
- ...
-}</pre></div>
-
-</section>
-</section>
-
-<section id="advanced-concepts">
-<!--OddPage--><h2><span class="secno">6. </span>Advanced Concepts</h2>
-
-<em>This section is normative.</em>
-
-<p>JSON-LD has a number of features that provide functionality above and beyond
-the core functionality described above. The following section describes this
-advanced functionality in more detail.
-</p>
-
-<section id="compact-iris">
- <h3><span class="secno">6.1 </span>Compact IRIs</h3>
- <p>A document on the Web that defines one or more IRIs for use as
- <a class="tref internalDFN" title="property" href="#dfn-property">properties</a> in Linked Data is called a
- <dfn title="vocabulary" id="dfn-vocabulary">vocabulary</dfn>.
- <a class="tref internalDFN" title="term" href="#dfn-term">Terms</a> in <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a> documents may draw from
- a number of different <a class="tref internalDFN" title="vocabulary" href="#dfn-vocabulary">vocabularies</a>s. At times, declaring every single <a class="tref internalDFN" title="term" href="#dfn-term">term</a>
- that a document uses can require the developer to declare tens, if not hundreds of potential
- vocabulary <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> that are used across an
- application. This is a concern for at least two reasons: the
- first is the cognitive load on the developer of remembering all of the
- <a class="tref internalDFN" title="term" href="#dfn-term">terms</a>, and the second is the serialized size of the
- <a class="tref internalDFN" title="context" href="#dfn-context">context</a> if it is specified inline. In order to address these issues,
- the concept of a <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> is introduced.</p>
- <p>
- A <dfn title="compact_iri" id="dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></dfn> is a way of expressing an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>
- using a <em>prefix</em> and <em>suffix</em> separated by a colon (<code>:</code>) which is
- similar to the <cite><a href="http://www.w3.org/TR/rdfa-core/#s_curies">CURIE Syntax</a></cite>
- in [<cite><a class="bibref" href="#bib-RDFA-CORE">RDFA-CORE</a></cite>]. The <dfn title="prefix" id="dfn-prefix">prefix</dfn> is a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> taken from the
- <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a> and is a short string identifying a
- particular <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> in a JSON-LD document.
- For example, the prefix <code>foaf</code> may be used as a short
- hand for the Friend-of-a-Friend vocabulary, which is identified using
- the <abbr title="Internationalized Resource Identifier">IRI</abbr> <code>http://xmlns.com/foaf/0.1/</code>. A developer may append
- any of the FOAF vocabulary terms to the end of the prefix to specify a short-hand
- version of the <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> for the vocabulary term. For example,
- <code>foaf:name</code> would be expanded out to the <abbr title="Internationalized Resource Identifier">IRI</abbr>
- <code>http://xmlns.com/foaf/0.1/name</code>. Instead of having to remember and
- type out the entire <abbr title="Internationalized Resource Identifier">IRI</abbr>, the developer can instead use the prefix in their JSON-LD markup.
- </p>
-
- <p><a class="tref internalDFN" title="prefix" href="#dfn-prefix">Prefixes</a> are expanded when the form of the value
- is a <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> represented as a <code>prefix:suffix</code>
- combination, and the prefix matches a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> defined within the
- <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a>:</p>
-
- <div class="example"><div class="example-title"><span>Example 15</span>: Prefix expansion</div><pre class="example">{
- "<span class="diff">@context</span>":
- {
- "<span class="diff">foaf</span>": "<span class="diff">http://xmlns.com/foaf/0.1/</span>"
-...
- },
- "<span class="diff">foaf:name</span>": "Dave Longley",
-...
-}</pre></div>
-
- <p><code>foaf:name</code> above will automatically expand out to the <abbr title="Internationalized Resource Identifier">IRI</abbr>
- <code>http://xmlns.com/foaf/0.1/name</code>.</p>
-
- <p>Terms are interpreted as <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact IRIs</a> if they contain at least one
- colon and the first colon is not followed by two slashes (<code>//</code>, as in
- <code>http://example.com</code>). To generate the full <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
- the value is first split into a <em>prefix</em> and <em>suffix</em> at the first
- occurrence of a colon (<code>:</code>). If the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a>
- contains a term mapping for <em>prefix</em>, an <abbr title="Internationalized Resource Identifier">IRI</abbr> is generated by
- prepending the mapped <em>prefix</em> to the (possibly empty) <em>suffix</em>
- using textual concatenation. If no prefix mapping is defined, the value is interpreted
- as an <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>. If the prefix is an underscore
- (<code>_</code>), the <abbr title="Internationalized Resource Identifier">IRI</abbr> remains unchanged.
- </p>
- <p>Consider the following example:</p>
- <div class="example"><div class="example-title"><span>Example 16</span>: Compact IRIs</div><pre class="example">{
- "@context":
- {
- <span class="diff">"dc": "http://purl.org/dc/elements/1.1/",</span>
- <span class="diff">"ex": "http://example.org/vocab#"</span>
- },
- "@id": "http://example.org/library",
- "@type": <span class="diff">"ex:Library"</span>,
- <span class="diff">"ex:contains"</span>:
- {
- "@id": "http://example.org/library/the-republic",
- "@type": <span class="diff">"ex:Book"</span>,
- <span class="diff">"dc:creator"</span>: "Plato",
- <span class="diff">"dc:title"</span>: "The Republic",
- <span class="diff">"ex:contains"</span>:
- {
- "@id": "http://example.org/library/the-republic#introduction",
- "@type": <span class="diff">"ex:Chapter"</span>,
- <span class="diff">"dc:description"</span>: "An introductory chapter on The Republic.",
- <span class="diff">"dc:title"</span>: "The Introduction"
- }
- }
-}</pre></div>
-
- <p>In this example, two different vocabularies are referred to using prefixes.
- Those prefixes are then used as type and property values using the compact
- <abbr title="Internationalized Resource Identifier">IRI</abbr> <code>prefix:suffix</code> notation.</p>
-
- <p>It's also possible to use compact IRIs within the context as shown in the
- following example:</p>
-
- <div class="example"><div class="example-title"><span>Example 17</span>: Using vocabularies</div><pre class="example">{
- "@context":
- {
- "xsd": "http://www.w3.org/2001/XMLSchema#",
- <span class="diff">"foaf": "http://xmlns.com/foaf/0.1/"</span>,
- <span class="diff">"foaf:homepage"</span>: { "@type": "@id" },
- "picture": { "@id": <span class="diff">"foaf:depiction"</span>, "@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/markuslanthaler"
-}</pre></div>
-</section>
-
-<section id="typed-values">
-<h3><span class="secno">6.2 </span>Typed Values</h3>
-
-<p>
- A value with an associated type, also known as a
- <a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">typed value</a>, is indicated by associating a value with
- an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> which indicates the value's type. Typed values may be
- expressed in JSON-LD in three ways:
-</p>
-
-<ol>
- <li>By utilizing the <code>@type</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> when defining
- a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> within a <code>@context</code> section.</li>
- <li>By utilizing an <a class="tref internalDFN" title="expanded_typed_value" href="#dfn-expanded_typed_value">expanded typed value</a>.</li>
- <li>By using a native JSON type such as <a class="tref internalDFN" title="number" href="#dfn-number">number</a>, <a class="tref internalDFN" title="true" href="#dfn-true">true</a>, or <a class="tref internalDFN" title="false" href="#dfn-false">false</a>.</li>
-</ol>
-
-<p>The first example uses the <code>@type</code> keyword to associate a
-type with a particular <a class="tref internalDFN" title="term" href="#dfn-term">term</a> in the <code>@context</code>:</p>
-
-<div class="example"><div class="example-title"><span>Example 18</span>: Expanded term definition with type coercion</div><pre class="example">{
- <span class="diff">"@context":
- {
- "modified":
- {
- "@id": "http://purl.org/dc/terms/modified",
- "@type": "http://www.w3.org/2001/XMLSchema#dateTime"
- }
- },</span>
-...
- "@id": "http://example.com/docs/1",
- "modified": "2010-05-29T14:17:39+02:00",
-...
-}</pre></div>
-
-<p>The <em>modified</em> key's value above is automatically type coerced to a
-dateTime value because of the information specified in the
-<code>@context</code>. A JSON-LD processor will interpret the markup above
-like so:</p>
-
-<table class="example">
-<thead>
- <tr><th>Subject</th>
- <th>Property</th>
- <th>Value</th>
- <th>Value Type</th>
-</tr></thead>
-<tbody>
-<tr>
- <td>http://example.com/docs/1</td>
- <td>http://purl.org/dc/terms/modified</td>
- <td>2010-05-29T14:17:39+02:00</td>
- <td>http://www.w3.org/2001/XMLSchema#dateTime</td>
-</tr>
-</tbody>
-</table>
-
-<p>The second example uses the expanded form of setting the type information
-in the body of a JSON-LD document:</p>
-
-<div class="example"><div class="example-title"><span>Example 19</span>: Expanded value with type</div><pre class="example">{
- "@context":
- {
- "modified":
- {
- "@id": "http://purl.org/dc/terms/modified"
- }
- },
-...
- "modified":
- <span class="diff">{
- "@value": "2010-05-29T14:17:39+02:00",
- "@type": "http://www.w3.org/2001/XMLSchema#dateTime"
- }</span>
-...
-}</pre></div>
-
-<p>Both examples above would generate the value
- <code>2010-05-29T14:17:39+02:00</code> with the type
- <code>http://www.w3.org/2001/XMLSchema#dateTime</code>. Note that it is
- also possible to use a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> or a <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> to
- express the value of a type.</p>
-
-<p>The <code>@type</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> is also used to associate a type
- with a <a class="tref internalDFN" title="node" href="#dfn-node">node</a>. The concept of a <a class="tref internalDFN" title="node_type" href="#dfn-node_type">node type</a> and
- a <a class="tref internalDFN" title="value_type" href="#dfn-value_type">value type</a> are different.</p>
-
-<p>Generally speaking, a
- <dfn title="node_type" id="dfn-node_type">node type</dfn> specifies the type of thing that is being described,
- like a person, place, event, or web page. A <dfn title="value_type" id="dfn-value_type">value type</dfn> specifies
- the unit of measurement for a particular value, such as a date, meter,
- or light year.</p>
-
-<div class="example"><div class="example-title"><span>Example 20</span>: Example demonstrating the context-sensitivity for @type</div><pre class="example">{
-...
- "@id": "http://example.org/posts#TripToWestVirginia",
- <span class="diff">"@type": "http://schema.org/BlogPosting"</span>, <--- This is a node type
- "modified":
- {
- "@value": "2010-05-29T14:17:39+02:00",
- <span class="diff">"@type": "http://www.w3.org/2001/XMLSchema#dateTime"</span> <--- This is a value type
- }
-...
-}</pre></div>
-
-<p>The first use of <code>@type</code> associates a <a class="tref internalDFN" title="node_type" href="#dfn-node_type">node type</a>
- (<code>http://schema.org/BlogPosting</code>) with the <a class="tref internalDFN" title="node" href="#dfn-node">node</a>,
- which is expressed using the <code>@id</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>.
- The second use of <code>@type</code> associates a <a class="tref internalDFN" title="value_type" href="#dfn-value_type">value type</a>
- (<code>http://www.w3.org/2001/XMLSchema#dateTime</code>) with the
- value expressed using the <code>@value</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>. As a
- general rule, when <code>@value</code> and <code>@type</code> are used in
- the same <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a>, the <code>@type</code>
- <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> is expressing a <a class="tref internalDFN" title="value_type" href="#dfn-value_type">value type</a>.
- Otherwise, the <code>@type</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> is expressing a
- <a class="tref internalDFN" title="node_type" href="#dfn-node_type">node type</a>. The markup above expresses the following data:</p>
-
-<table class="example">
-<thead>
- <tr><th>Subject</th>
- <th>Property</th>
- <th>Value</th>
- <th>Value Type</th>
-</tr></thead>
-<tbody>
-<tr>
- <td>http://example.org/posts#TripToWestVirginia</td>
- <td>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</td>
- <td>http://schema.org/BlogPosting</td>
- <td style="text-align:center;">-</td>
-</tr>
-<tr>
- <td>http://example.org/posts#TripToWestVirginia</td>
- <td>http://purl.org/dc/terms/modified</td>
- <td>2010-05-29T14:17:39+02:00</td>
- <td>http://www.w3.org/2001/XMLSchema#dateTime</td>
-</tr>
-</tbody>
-</table>
-
-</section>
-
-<section id="type-coercion">
-<h3><span class="secno">6.3 </span>Type Coercion</h3>
-
-<p>JSON-LD supports the coercion of values to particular data types.
-Type <dfn title="coercion" id="dfn-coercion">coercion</dfn> allows someone deploying JSON-LD to coerce the incoming or
-outgoing values to the proper data type based on a mapping of data type <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> to
-<a class="tref internalDFN" title="term" href="#dfn-term">terms</a>. Using type coercion, value representation is preserved without requiring
-the data type to be specified with each piece of data.</p>
-
-<p>Type coercion is specified within an <a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">expanded term definition</a>
- using the <code>@type</code> key. The value of this key expands to an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.
- Alternatively, the <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> <code>@id</code> may be used as value to indicate
- that within the body of a JSON-LD document, a string value of a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> coerced to
- <code>@id</code> is to be interpreted as an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</p>
-
-<p><a class="tref internalDFN" title="term" href="#dfn-term">Terms</a> or <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact IRIs</a> used as the value of a
- <code>@type</code> key may be defined within the same context. This means that one may specify a
- <a class="tref internalDFN" title="term" href="#dfn-term">term</a> like <code>xsd</code> and then use <code>xsd:integer</code> within the same
- context definition.</p>
-
-<p>The example below demonstrates how a JSON-LD author can coerce values to
-<a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">typed values</a>, IRIs, and lists.</p>
-
-<div class="example"><div class="example-title"><span>Example 21</span>: Expanded term definition with types</div><pre class="example">{
- "@context":
- {
- "xsd": "http://www.w3.org/2001/XMLSchema#",
- "name": "http://xmlns.com/foaf/0.1/name",
- "age":
- <span class="diff">{
- "@id": "http://xmlns.com/foaf/0.1/age",
- "@type": "xsd:integer"
- }</span>,
- "homepage":
- <span class="diff">{
- "@id": "http://xmlns.com/foaf/0.1/homepage",
- "@type": "@id",
- "@container": "@list"
- }</span>
- },
- "@id": "http://example.com/people#john",
- "name": "John Smith",
- "age": <span class="diff">"41"</span>,
- "homepage":
- <span class="diff">[
- "http://personal.example.org/",
- "http://work.example.com/jsmith/"
- ]</span>
-}</pre></div>
-
-<p>The markup shown above would generate the following data. The data has no inherent order
- except for the values of the <code>http://schema.org/homepage</code> property
- which represent an ordered list.</p>
-
-<table class="example">
-<thead>
- <tr><th>Subject</th>
- <th>Property</th>
- <th>Value</th>
- <th>Value Type</th>
-</tr></thead>
-<tbody>
-<tr>
- <td>http://example.com/people#john</td>
- <td>http://xmlns.com/foaf/0.1/name</td>
- <td>John Smith</td>
- <td> </td>
-</tr>
-<tr>
- <td>http://example.com/people#john</td>
- <td>http://xmlns.com/foaf/0.1/age</td>
- <td>41</td>
- <td>http://www.w3.org/2001/XMLSchema#integer</td>
-</tr>
-<tr>
- <td rowspan="2">http://example.com/people#john</td>
- <td rowspan="2">http://xmlns.com/foaf/0.1/homepage</td>
- <td>http://personal.example.org/</td>
- <td> </td>
-</tr>
-<tr>
- <td>http://work.example.com/jsmith/</td>
- <td> </td>
-</tr>
-</tbody>
-</table>
-
-<p>Terms may also be defined using <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute IRIs</a> or <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact IRIs</a>.
- This allows coercion rules to be applied to keys which are not represented as a simple <a class="tref internalDFN" title="term" href="#dfn-term">term</a>.
- For example:</p>
-
-<div class="example"><div class="example-title"><span>Example 22</span>: Term definitions using compact and absolute IRIs</div><pre class="example">{
- "@context":
- {
- "foaf": "http://xmlns.com/foaf/0.1/",
- "<span class="diff">foaf:age</span>":
- {
- <span class="diff">"@id": "http://xmlns.com/foaf/0.1/age"</span>,
- "@type": "xsd:integer"
- },
- "<span class="diff">http://xmlns.com/foaf/0.1/homepage</span>":
- {
- "@type": "@id"
- }
- },
- "foaf:name": "John Smith",
- "<span class="diff">foaf:age</span>": "41",
- "<span class="diff">http://xmlns.com/foaf/0.1/homepage</span>":
- [
- "http://personal.example.org/",
- "http://work.example.com/jsmith/"
- ]
-}</pre></div>
-
-<p>In this case the <code>@id</code> definition in the term definition is optional, but if it does exist, the <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
- or <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> is treated as a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> (not a <code>prefix:suffix</code> construct)
- so that the actual definition of a <a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a> becomes unnecessary. Type coercion is performed using
- the unexpanded value of the key if there is an exact match for the key in the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a>.</p>
-
-<div class="note"><div class="note-title"><span>Note</span></div><p class="">Keys in the context are treated as <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> for the purpose of
- expansion and value coercion. At times, this may result in multiple representations for the same expanded <abbr title="Internationalized Resource Identifier">IRI</abbr>.
- For example, one could specify that <code>dog</code> and <code>cat</code> both expanded to <code>http://example.com/vocab#animal</code>.
- Doing this could be useful for establishing different type coercion or language specification rules. It also allows a <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> (or even an
- absolute <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>) to be defined as something else entirely. For example, one could specify that
- the <a class="tref internalDFN" title="term" href="#dfn-term">term</a> <code>http://example.org/zoo</code> should expand to
- <code>http://example.org/river</code>, but this usage is discouraged because it would lead to a
- great deal of confusion among developers attempting to understand the JSON-LD document.</p></div>
-
-
-</section>
-
-<section id="advanced-context-usage">
- <h3><span class="secno">6.4 </span>Advanced Context Usage</h3>
-
- <p>Section <a href="#the-context" class="sec-ref"><span class="secno">5.1</span> <span class="sec-title">The Context</span></a> introduced the basics of what makes
- JSON-LD work. This section expands on the basic principles of the
- <a class="tref internalDFN" title="context" href="#dfn-context">context</a> and demonstrates how more advanced use cases can
- be achieved using JSON-LD. </p>
-
- <p>In general, contexts may be used at any time a
- <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> is defined. The only time that one cannot
- express a context is inside a context definition itself. For example, a
- <a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">JSON-LD document</a> may use more than one context at different
- points in a document:</p>
-
- <div class="example"><div class="example-title"><span>Example 23</span>: Using multiple contexts</div><pre class="example">[
- {
- <span class="diff">"@context": "http://example.org/contexts/person.jsonld",</span>
- "name": "Manu Sporny",
- "homepage": "http://manu.sporny.org/",
- "depiction": "http://twitter.com/account/profile_image/manusporny"
- },
- {
- <span class="diff">"@context": "http://example.org/contexts/place.jsonld",</span>
- "name": "The Empire State Building",
- "description": "The Empire State Building is a 102-story landmark in New York City.",
- "geo": {
- "latitude": "40.75",
- "longitude": "73.98"
- }
- }
-]</pre></div>
-
- <p>Duplicate context <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> are overridden using a
- last-defined-wins mechanism.</p>
-
- <div class="example"><div class="example-title"><span>Example 24</span>: Scoped contexts within node objects</div><pre class="example">{
- <span class="diff">"@context":
- {
- "name": "http://example.com/person#name",
- "details": "http://example.com/person#details"
- },</span>
- "<span class="diff">name</span>": "Markus Lanthaler",
- ...
- "details":
- {
- <span class="diff">"@context": {
- "name": "http://example.com/organization#name"
- },</span>
- "<span class="diff">name</span>": "Graz University of Technology"
- }
-}</pre></div>
-
- <p>In the example above, the <code>name</code> <a class="tref internalDFN" title="term" href="#dfn-term">term</a> is overridden
- in the more deeply nested <code>details</code> structure. Note that this is
- rarely a good authoring practice and is typically used when working with
- legacy applications that depend on a specific structure of the
- <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a>. If a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> is redefined within a
- context, all previous rules associated with the previous definition are
- removed. If a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> is redefined to <code>null</code>,
- the <a class="tref internalDFN" title="term" href="#dfn-term">term</a> is effectively removed from the list of
- <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> defined in the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a>.</p>
-
- <p>Multiple contexts may be combined using an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>, which is processed
- in order. The set of contexts defined within a specific <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> are
- referred to as <dfn title="local_context" id="dfn-local_context">local contexts</dfn>. The
- <dfn title="active_context" id="dfn-active_context">active context</dfn> refers to the accumulation of
- <a class="tref internalDFN" title="local_context" href="#dfn-local_context">local contexts</a> that are in scope at a
- specific point within the document. Setting a <a class="tref internalDFN" title="local_context" href="#dfn-local_context">local context</a>
- to <code>null</code> effectively resets the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a>
- to an empty context. The following example specifies an external context
- and then layers an embedded context on top of the external context:</p>
-
- <div class="example"><div class="example-title"><span>Example 25</span>: Combining external and local contexts</div><pre class="example">{
- <span class="diff">"@context": [
- "http://json-ld.org/contexts/person.jsonld",
- {
- "pic": "http://xmlns.com/foaf/0.1/depiction"
- }
- ],</span>
- "name": "Manu Sporny",
- "homepage": "http://manu.sporny.org/",
- <span class="diff">"pic": "http://twitter.com/account/profile_image/manusporny"</span>
-}</pre></div>
-
- <div class="note"><div class="note-title"><span>Note</span></div><p class="">It is a best practice to put the <a class="tref internalDFN" title="context" href="#dfn-context">context</a> definition
- at the top of the JSON-LD document.</p></div>
-
- <div class="note"><div class="note-title"><span>Note</span></div><p class="">While it is possible to define a <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, or
- an <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> to expand to some other unrelated <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>
- (for example, <code>foaf:name</code> expanding to
- <code>http://example.org/unrelated#species</code>), such usage is strongly
- discouraged.</p></div>
-
- <div class="note"><div class="note-title"><span>Note</span></div><p class="">To avoid forward-compatibility issues,
- <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> starting with an <code>@</code> character are
- to be avoided as they might be used as <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a>
- in future versions of JSON-LD. Furthermore, the use of empty
- <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> (<code>""</code>) is discouraged as not all
- programming languages are able to handle empty property names.</p></div>
-
- <section id="interpreting-json-as-json-ld">
- <h4><span class="secno">6.4.1 </span>Interpreting JSON as JSON-LD</h4>
-
- <p>Ordinary JSON documents can be interpreted as JSON-LD by referencing a JSON-LD
- <a class="tref internalDFN" title="context" href="#dfn-context">context</a> document in an HTTP Link Header. Doing so allows JSON to
- be unambiguously machine-readable without requiring developers to drastically
- change their markup and provides an upgrade path for existing infrastructure
- without breaking existing clients that rely on the <code>application/json</code>
- media type.</p>
-
- <p>In order to use an external context with an ordinary JSON document, an author
- <em class="rfc2119" title="must">must</em> specify an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> to a valid <a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">JSON-LD document</a> in
- an HTTP Link Header [<cite><a class="bibref" href="#bib-RFC5988">RFC5988</a></cite>] using the <code>http://www.w3.org/ns/json-ld#context</code>
- link relation. The referenced document <em class="rfc2119" title="must">must</em> have a top-level <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a>.
- The <code>@context</code> subtree within that object is added to the top-level
- <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> of the referencing document. If an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>
- is at the top-level of the referencing document and its items are
- <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON objects</a>, the <code>@context</code>
- subtree is added to all <a class="tref internalDFN" title="array" href="#dfn-array">array</a> items. All extra information located outside
- of the <code>@context</code> subtree in the referenced document <em class="rfc2119" title="must">must</em> be
- discarded. Effectively this means that the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a> is
- initialized with the referenced external <a class="tref internalDFN" title="context" href="#dfn-context">context</a>.</p>
-
- <p>The following example demonstrates the use of an external context with an
- ordinary JSON document:</p>
-
- <div class="example"><div class="example-title"><span>Example 26</span>: Referencing a JSON-LD context from a JSON document via an HTTP Link Header</div><pre class="example">GET /ordinary-json-document.json HTTP/1.1
-Host: example.com
-Accept: application/ld+json,application/json,*/*;q=0.1
-
-====================================
-
-HTTP/1.0 200 OK
-...
-Content-Type: <span class="diff">application/json</span>
-<span class="diff">Link: <http://json-ld.org/contexts/person.jsonld>; rel="http://www.w3.org/ns/json-ld#context"; type="application/ld+json"</span>
-
-{
- "name": "Markus Lanthaler",
- "homepage": "http://www.markus-lanthaler.com/",
- "image": "http://twitter.com/account/profile_image/markuslanthaler"
-}</pre></div>
-
- <p>Please note that <a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">JSON-LD documents</a>
- served with the <code>application/ld+json</code>
- media type <em class="rfc2119" title="must">must</em> have all context information, including references to external
- contexts, within the body of the document. Contexts linked via a
- <code>http://www.w3.org/ns/json-ld#context</code> HTTP Link Header <em class="rfc2119" title="must">must</em> be
- ignored for such documents.</p>
- </section>
-</section>
-
-<section id="string-internationalization">
- <h3><span class="secno">6.5 </span>String Internationalization</h3>
-
- <p>At times, it is important to annotate a <a class="tref internalDFN" title="string" href="#dfn-string">string</a>
- with its language. In JSON-LD this is possible in a variety of ways.
- First, it is possible to define a default language for a JSON-LD document
- by setting the <code>@language</code> key in the <a class="tref internalDFN" title="context" href="#dfn-context">context</a>:</p>
-
- <div class="example"><div class="example-title"><span>Example 27</span>: Setting the default language of a JSON-LD document</div><pre class="example">{
- <span class="diff">"@context":
- {
- ...
- "@language": "ja"
- }</span>,
- "name": <span class="diff">"花澄"</span>,
- "occupation": <span class="diff">"科学者"</span>
-}</pre></div>
-
- <p>The example above would associate the <code>ja</code> language
- code with the two <a class="tref internalDFN" title="string" href="#dfn-string">strings</a> <em>花澄</em> and <em>科学者</em>.
- Languages codes are defined in [<cite><a class="bibref" href="#bib-BCP47">BCP47</a></cite>].</p>
-
- <p>To clear the default language for a subtree, <code>@language</code> can
- be set to <code>null</code> in a <a class="tref internalDFN" title="local_context" href="#dfn-local_context">local context</a> as follows:</p>
-
- <div class="example"><div class="example-title"><span>Example 28</span>: Clearing default language</div><pre class="example">{
- "@context": {
- ...
- "@language": "ja"
- },
- "name": "花澄",
- "details": {
-<span class="diff"> "@context": {
- "@language": null
- }</span>,
- "occupation": "Ninja"
- }
-}</pre></div>
-
- <p>Second, it is possible to associate a language with a specific <a class="tref internalDFN" title="term" href="#dfn-term">term</a>
- using an <a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">expanded term definition</a>:</p>
-
- <div class="example"><div class="example-title"><span>Example 29</span>: Expanded term definition with language</div><pre class="example">{
- "@context": {
- ...
- "ex": "http://example.com/vocab/",
- "@language": "ja",
- "name": { "@id": "ex:name", <span class="diff">"@language": null</span> },
- "occupation": { "@id": "ex:occupation" },
- "occupation_en": { "@id": "ex:occupation", <span class="diff">"@language": "en"</span> },
- "occupation_cs": { "@id": "ex:occupation", <span class="diff">"@language": "cs"</span> }
- },
- <span class="diff">"name": "Yagyū Muneyoshi",
- "occupation": "忍者",
- "occupation_en": "Ninja",
- "occupation_cs": "Nindža",</span>
- ...
-}</pre></div>
-
- <p>The example above would associate <em>忍者</em> with the specified default
- language code <code>ja</code>, <em>Ninja</em> with the language code
- <code>en</code>, and <em>Nindža</em> with the language code <code>cs</code>.
- The value of <code>name</code>, <em>Yagyū Muneyoshi</em> wouldn't be
- associated with any language code since <code>@language</code> was reset to
- <a class="tref internalDFN" title="null" href="#dfn-null">null</a> in the <a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">expanded term definition</a>.</p>
-
- <div class="note"><div class="note-title"><span>Note</span></div><p class="">Language associations can only be applied to plain
- literal <a class="tref internalDFN" title="string" href="#dfn-string">strings</a>.
- <a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">Typed values</a> or values that are subject
- to <a href="#type-coercion" class="sec-ref"><span class="secno">6.3</span> <span class="sec-title">Type Coercion</span></a> cannot be language tagged.</p></div>
-
- <p>Just as in the example above, systems often need to express the value of a
- property in multiple languages. Typically, such systems also try to ensure that
- developers have a programmatically easy way to navigate the data structures for
- the language-specific data. In this case, <a class="tref internalDFN" title="language_map" href="#dfn-language_map">language maps</a>
- may be utilized.</p>
-
- <div class="example"><div class="example-title"><span>Example 30</span>: Language map expressing a property in three languages</div><pre class="example">{
- "@context":
- {
- ...
- "occupation": { "@id": "ex:occupation", <span class="diff">"@container": "@language"</span> }
- },
- "name": "Yagyū Muneyoshi",
- "occupation":
- <span class="diff">{
- "ja": "忍者",
- "en": "Ninja",
- "cs": "Nindža"
- }</span>
- ...
-}</pre></div>
-
- <p>The example above expresses exactly the same information as the previous
- example but consolidates all values in a single property. To access the
- value in a specific language in a programming language supporting dot-notation
- accessors for object properties, a developer may use the
- <code>property.language</code> pattern. For example, to access the occupation
- in English, a developer would use the following code snippet:
- <code>obj.occupation.en</code>.</p>
-
- <p>Third, it is possible to override the default language by using an
- <a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">expanded value</a>:</p>
-
- <div class="example"><div class="example-title"><span>Example 31</span>: Overriding default language using an expanded value</div><pre class="example">{
- "@context": {
- ...
- "@language": "ja"
- },
- "name": "花澄",
- "occupation": <span class="diff">{
- "@value": "Scientist",
- "@language": "en"
- }</span>
-}</pre></div>
-
- <p>This makes it possible to specify a plain string by omitting the
- <code>@language</code> tag or setting it to <code>null</code> when expressing
- it using an <a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">expanded value</a>:</p>
-
- <div class="example"><div class="example-title"><span>Example 32</span>: Removing language information using an expanded value</div><pre class="example">{
- "@context": {
- ...
- "@language": "ja"
- },
- "name": <span class="diff">{
- "@value": "Frank"
- }</span>,
- "occupation": {
- "@value": "Ninja",
- "@language": "en"
- },
- "speciality": "手裏剣"
-}</pre></div>
-
-</section>
-
-<section id="overriding-vocab">
-<h3><span class="secno">6.6 </span>Overriding @vocab</h3>
- <p>If <code>@vocab</code> is used but certain keys in an
- <a class="tref internalDFN" title="json_object" href="#dfn-json_object">object</a> should not be expanded using
- the vocabulary <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> can be explicitly set
- to <a class="tref internalDFN" title="null" href="#dfn-null">null</a> in the <a class="tref internalDFN" title="context" href="#dfn-context">context</a>. For instance, in the
- example below the <code>databaseId</code> member would be ignored by a
- JSON-LD processor.</p><p></p>
-
- <div class="example"><div class="example-title"><span>Example 33</span>: Using the null keyword to ignore data</div><pre class="example">{
- "@context":
- {
- "@vocab": "http://schema.org/",
- <span class="diff">"databaseId": null</span>
- },
- "name": "Gregg Kellogg",
- <span class="diff">"databaseId": "23987520"</span>
-}</pre></div>
-</section>
-
-<section id="property-generators">
-<h3><span class="secno">6.7 </span>Property Generators</h3>
-
-<p>At times, an author may find that they need to express the same value for
-multiple properties. The simplest approach to accomplish this goal would be
-to do the following:</p>
-
-<div class="example"><div class="example-title"><span>Example 34</span>: Verbose expression of multiple properties with the same value</div><pre class="example">{
- "@context":
- {
- <span class="diff">"title1": "http://purl.org/dc/terms/title"</span>,
- <span class="diff">"title2": "http://schema.org/name"</span>,
- <span class="diff">"title3": "http://www.w3.org/2000/01/rdf-schema#label"</span>
- },
- "@id": "http://example.com/book",
- <span class="diff">"title1": "The Count of Monte Cristo"</span>,
- <span class="diff">"title2": "The Count of Monte Cristo"</span>,
- <span class="diff">"title3": "The Count of Monte Cristo"</span>
-}</pre></div>
-
-<p>Unfortunately, the approach above produces redundant data and would become a
-publishing burden for large data sets.
-In these situations, the author may use
-a <dfn title="property_generator" id="dfn-property_generator">property generator</dfn> to express a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> that maps to
-multiple <a class="tref internalDFN" title="property" href="#dfn-property">properties</a> in the <a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">JSON-LD graph</a>.
-This method can be accomplished by using the following markup pattern:</p>
-
-<div class="example"><div class="example-title"><span>Example 35</span>: Generating multiple properties using a single term</div><pre class="example">{
- "@context":
- {
- <span class="diff">"title": { "@id": [ "http://purl.org/dc/terms/title",
- "http://schema.org/name",
- "http://www.w3.org/2000/01/rdf-schema#label" ] }</span>
- },
- "@id": "http://example.com/book",
- <span class="diff">"title": "The Count of Monte Cristo"</span>
-}</pre></div>
-
-<p>While the term above is only used once outside of the <code>@context</code>,
-the document above will be interpreted like so:</p>
-
-<table class="example">
-<thead>
- <tr><th>Subject</th>
- <th>Property</th>
- <th>Value</th>
-</tr></thead>
-<tbody>
-<tr>
- <td>http://example.com/book</td>
- <td>http://purl.org/dc/terms/title</td>
- <td>The Count of Monte Cristo</td>
-</tr>
-<tr>
- <td>http://example.com/book</td>
- <td>http://schema.org/name</td>
- <td>The Count of Monte Cristo</td>
-</tr>
-<tr>
- <td>http://example.com/book</td>
- <td>http://www.w3.org/2000/01/rdf-schema#label</td>
- <td>The Count of Monte Cristo</td>
-</tr>
-</tbody>
-</table>
-
-</section>
-
-<section id="iri-expansion-within-a-context">
- <h3><span class="secno">6.8 </span><abbr title="Internationalized Resource Identifier">IRI</abbr> Expansion Within a Context</h3>
- <p>In general, normal <abbr title="Internationalized Resource Identifier">IRI</abbr> expansion rules apply
- anywhere an <abbr title="Internationalized Resource Identifier">IRI</abbr> is expected (see <a href="#iris" class="sec-ref"><span class="secno">5.2</span> <span class="sec-title">IRIs</span></a>). Within
- a <a class="tref internalDFN" title="context" href="#dfn-context">context</a> definition, this can mean that terms defined
- within the context may also be used within that context as long as
- there are no circular dependencies. For example, it is common to use
- the <code>xsd</code> namespace when defining <a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">typed value</a>s:</p>
-<div class="example"><div class="example-title"><span>Example 36</span>: IRI expansion within a context</div><pre class="example">{
- "@context":
- {
- <span class="diff">"xsd": "http://www.w3.org/2001/XMLSchema#"</span>,
- "name": "http://xmlns.com/foaf/0.1/name",
- "age":
- {
- "@id": "http://xmlns.com/foaf/0.1/age",
- "@type": <span class="diff">"xsd:integer"</span>
- },
- "homepage":
- {
- "@id": "http://xmlns.com/foaf/0.1/homepage",
- "@type": "@id"
- }
- },
- ...
-}</pre></div>
-<p>In this example, the <code>xsd</code> <a class="tref internalDFN" title="term" href="#dfn-term">term</a> is defined
- and used as a <a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a> for the <code>@type</code> coercion
- of the <code>age</code> property.</p>
-
-<p><a class="tref internalDFN" title="term" href="#dfn-term">Terms</a> may also be used when defining the <abbr title="Internationalized Resource Identifier">IRI</abbr> of another
-<a class="tref internalDFN" title="term" href="#dfn-term">term</a>:</p>
-
-<div class="example"><div class="example-title"><span>Example 37</span>: Using a term to define the IRI of another term within a context</div><pre class="example">{
- "@context":
- {
- <span class="diff">"foaf": "http://xmlns.com/foaf/0.1/"</span>,
- "xsd": "http://www.w3.org/2001/XMLSchema#",
- "name": <span class="diff">"foaf:name"</span>,
- "age":
- {
- "@id": <span class="diff">"foaf:age"</span>,
- "@type": "xsd:integer"
- },
- "homepage":
- {
- "@id": <span class="diff">"foaf:homepage"</span>,
- "@type": "@id"
- }
- },
- ...
-}</pre></div>
-
-<p><a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">Compact IRIs</a>
- and <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> may be used on the left-hand side of a
- <a class="tref internalDFN" title="term" href="#dfn-term">term</a> definition.</p>
-
-<div class="example"><div class="example-title"><span>Example 38</span>: Using a compact IRI as a term</div><pre class="example">{
- "@context":
- {
- <span class="diff">"foaf": "http://xmlns.com/foaf/0.1/"</span>,
- "xsd": "http://www.w3.org/2001/XMLSchema#",
- "name": "foaf:name",
- "<span class="diff">foaf:age</span>":
- {
- "@type": "xsd:integer"
- },
- "<span class="diff">foaf:homepage</span>":
- <span class="diff">{
- "@type": "@id"
- }</span>
- },
- ...
-}</pre></div>
-
-<p>
-In this example, the <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> form is used in two different
-ways.
-In the first approach, <code>foaf:age</code> declares both the
-<a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> for the <a class="tref internalDFN" title="term" href="#dfn-term">term</a> (using short-form) as well as the
-<code>@type</code> associated with the <a class="tref internalDFN" title="term" href="#dfn-term">term</a>. In the second
-approach, only the <code>@type</code> associated with the <a class="tref internalDFN" title="term" href="#dfn-term">term</a> is
-specified. The full <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> for
-<code>foaf:homepage</code> is determined by looking up the <code>foaf</code>
-<a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a> in the
-<a class="tref internalDFN" title="context" href="#dfn-context">context</a>.
-</p>
-
-<p>
-<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">Absolute IRIs</a> may also be used in the key position in a <a class="tref internalDFN" title="context" href="#dfn-context">context</a>:
-</p>
-
-<div class="example"><div class="example-title"><span>Example 39</span>: Associating context definitions with absolute IRIs</div><pre class="example">{
- "@context":
- {
- "foaf": "http://xmlns.com/foaf/0.1/",
- "xsd": "http://www.w3.org/2001/XMLSchema#",
- "name": "foaf:name",
- "foaf:age":
- {
- "@id": "foaf:age",
- "@type": "xsd:integer"
- },
- "<span class="diff">http://xmlns.com/foaf/0.1/homepage</span>":
- {
- "@type": "@id"
- }
- },
- ...
-}</pre></div>
-
-<p>
-In order for the <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> to match above, the <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> needs to be used in the <a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">JSON-LD document</a>. Also note that <code>foaf:homepage</code>
-will not use the <code>{ "@type": "@id" }</code> declaration because
-<code>foaf:homepage</code> is not the same as
-<code>http://xmlns.com/foaf/0.1/homepage</code>. That is, <a class="tref internalDFN" title="term" href="#dfn-term">terms</a>
-are looked up in a <a class="tref internalDFN" title="context" href="#dfn-context">context</a> using direct string comparison before the
-<a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a> lookup mechanism is applied.
-</p>
-
-<p>The only exception for using terms in the <a class="tref internalDFN" title="context" href="#dfn-context">context</a> is that
- circular definitions are not allowed. That is,
- a definition of <em>term1</em> cannot depend on the
- definition of <em>term2</em> if <em>term2</em> also depends on
- <em>term1</em>. For example, the following <a class="tref internalDFN" title="context" href="#dfn-context">context</a> definition
- is illegal:</p>
-<div class="example"><div class="example-title"><span>Example 40</span>: Illegal circular definition of terms within a context</div><pre class="example">{
- "@context":
- {
- <span class="diff">"term1": "term2:foo",
- "term2": "term1:bar"</span>
- },
- ...
-}</pre></div>
-</section>
-
-<section id="sets-and-lists">
-<h3><span class="secno">6.9 </span>Sets and Lists</h3>
-
-<p>A JSON-LD author can express multiple values in a compact way by using
- <a class="tref internalDFN" title="array" href="#dfn-array">arrays</a>. Since graphs do not describe ordering for links
- between nodes, arrays in JSON-LD do not provide an ordering of the
- contained elements by default. This is exactly the opposite from regular JSON
- arrays, which are ordered by default. For example, consider the following
- simple document:</p>
-
-<div class="example"><div class="example-title"><span>Example 41</span>: Multiple values with no inherent order</div><pre class="example">{
-...
- "@id": "http://example.org/people#joebob",
- "nick": <span class="diff">[ "joe", "bob", "JB" ]</span>,
-...
-}</pre></div>
-
-<p>The markup shown above would result in the following data being generated,
- each relating the node to an individual value, with no inherent order:</p>
-
-<table class="example">
-<thead>
- <tr><th>Subject</th>
- <th>Property</th>
- <th>Value</th>
-</tr></thead>
-<tbody>
-<tr>
- <td>http://example.org/people#joebob</td>
- <td>http://xmlns.com/foaf/0.1/nick</td>
- <td>joe</td>
-</tr>
-<tr>
- <td>http://example.org/people#joebob</td>
- <td>http://xmlns.com/foaf/0.1/nick</td>
- <td>bob</td>
-</tr>
-<tr>
- <td>http://example.org/people#joebob</td>
- <td>http://xmlns.com/foaf/0.1/nick</td>
- <td>JB</td>
-</tr>
-</tbody>
-</table>
-
-<p>Multiple values may also be expressed using the expanded form:</p>
-
-<div class="example"><div class="example-title"><span>Example 42</span>: Using an expanded form to set multiple values</div><pre class="example">{
- "@id": "http://example.org/articles/8",
- "dc:title": <span class="diff">
- [
- {
- "@value": "Das Kapital",
- "@language": "de"
- },
- {
- "@value": "Capital",
- "@language": "en"
- }
- ]</span>
-}</pre></div>
-
-<p>The markup shown above would generate the following data, again with
- no inherent order:</p>
-
-<table class="example">
-<thead>
- <tr><th>Subject</th>
- <th>Property</th>
- <th>Value</th>
- <th>Language</th>
-</tr></thead>
-<tbody>
-<tr>
- <td>http://example.org/articles/8</td>
- <td>http://purl.org/dc/terms/title</td>
- <td>Das Kapital</td>
- <td>de</td>
-</tr>
-<tr>
- <td>http://example.org/articles/8</td>
- <td>http://purl.org/dc/terms/title</td>
- <td>Capital</td>
- <td>en</td>
-</tr>
-</tbody>
-</table>
-
-<p>As the notion of ordered collections is rather important in data
- modeling, it is useful to have specific language support. In JSON-LD,
- a list may be represented using the <code>@list</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> as follows:</p>
-<div class="example"><div class="example-title"><span>Example 43</span>: An ordered collection of values in JSON-LD</div><pre class="example">{
-...
- "@id": "http://example.org/people#joebob",
- "foaf:nick":
- <span class="diff">{
- "@list": [ "joe", "bob", "jaybee" ]
- }</span>,
-...
-}</pre></div>
-
-<p>This describes the use of this <a class="tref internalDFN" title="array" href="#dfn-array">array</a> as being ordered,
- and order is maintained when processing a document. If every use of a given multi-valued
- property is a list, this may be abbreviated by setting <code>@container</code>
- to <code>@list</code> in the <a class="tref internalDFN" title="context" href="#dfn-context">context</a>:</p>
-<div class="example"><div class="example-title"><span>Example 44</span>: Specifying that a collection is ordered in the context</div><pre class="example">{
- <span class="diff">"@context":
- {
- ...
- "nick":
- {
- "@id": "http://xmlns.com/foaf/0.1/nick",
- "@container": "@list"
- }
- }</span>,
-...
- "@id": "http://example.org/people#joebob",
- "nick": <span class="diff">[ "joe", "bob", "jaybee" ]</span>,
-...
-}</pre></div>
-
-<div class="note"><div class="note-title"><span>Note</span></div><p class="">List of lists are not allowed in this version of JSON-LD.
- This decision was made due to the extreme amount of added complexity when
- processing lists of lists.</p></div>
-
-<p>While <code>@list</code> is used to describe <em>ordered sets</em>,
- the <code>@set</code> keyword is used to describe <em>unordered sets</em>.
- The use of <code>@set</code> in the body of a JSON-LD document
- is optimized away when processing the document, as it is just syntactic
- sugar. However, <code>@set</code> is helpful when used within the context
- of a document.
- Values of terms associated with a <code>@set</code> or <code>@list</code> container
- are always represented in the form of an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>,
- even if there is just a single value that would otherwise be optimized to
- a non-array form in compact form (see
- <a href="#compact-document-form" class="sec-ref"><span class="secno">6.15</span> <span class="sec-title">Compact Document Form</span></a>). This makes post-processing of
- JSON-LD documents easier as the data is always in array form, even if the
- array only contains a single value.</p>
-
-<div class="note"><div class="note-title"><span>Note</span></div><p class="">The use of <code>@container</code> in the body of a JSON-LD
- document has no meaning and is not allowed by the JSON-LD grammar
- (see <a href="#json-ld-grammar" class="sec-ref"><span class="secno">B.</span> <span class="sec-title">JSON-LD Grammar</span></a>).</p></div>
-
-</section>
-
-<section id="embedding">
- <h3><span class="secno">6.10 </span>Embedding</h3>
-
- <p><dfn title="embedding" id="dfn-embedding">Embedding</dfn> is a JSON-LD feature that allows an author to
- use <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node objects</a> as
- <a class="tref internalDFN" title="property" href="#dfn-property">property</a> values. This is a commonly used mechanism for
- creating a parent-child relationship between two <a class="tref internalDFN" title="node" href="#dfn-node">nodes</a>.</p>
-
- <p>The example shows two nodes related by a property from the first node:</p>
-
- <div class="example"><div class="example-title"><span>Example 45</span>: Embedding a node object as property value of another node object</div><pre class="example">{
-...
- "name": "Manu Sporny",
- "<span class="diff">knows</span>":
- {
- "<span class="diff">@type</span>": "<span class="diff">Person</span>",
- "<span class="diff">name</span>": "<span class="diff">Gregg Kellogg</span>",
- }
-...
-}</pre></div>
-
- <p>
- A <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a>, like the one used above, may be used in
- any value position in the body of a JSON-LD document.</p>
-</section>
-
-<section id="named-graphs">
- <h3><span class="secno">6.11 </span>Named Graphs</h3>
-
- <p>At times, it is necessary to make statements about a <a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">JSON-LD graph</a>
- itself, rather than just a single <a class="tref internalDFN" title="node" href="#dfn-node">node</a>. This can be done by
- grouping a set of <a class="tref internalDFN" title="node" href="#dfn-node">nodes</a> using the <code>@graph</code>
- <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>. A developer may also name data expressed using the
- <code>@graph</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> by pairing it with an
- <code>@id</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> as shown in the following example:</p>
-
- <div class="example"><div class="example-title"><span>Example 46</span>: Identifying and making statements about a graph</div><pre class="example">{
- "@context": {
- "generatedAt": "http://www.w3.org/ns/prov#generatedAtTime",
- "Person": "http://xmlns.com/foaf/0.1/Person",
- "name": "http://xmlns.com/foaf/0.1/name",
- "knows": "http://xmlns.com/foaf/0.1/knows",
- "xsd": "http://www.w3.org/2001/XMLSchema#"
- },
- <span class="diff">"@id": "http://example.org/graphs/73",
- "generatedAt": { "@value": "2012-04-09", "@type": "xsd:date" },
- "@graph":</span>
- [
- {
- "@id": "http://manu.sporny.org/i/public",
- "@type": "Person",
- "name": "Manu Sporny",
- "knows": "http://greggkellogg.net/foaf#me"
- },
- {
- "@id": "http://greggkellogg.net/foaf#me",
- "@type": "Person",
- "name": "Gregg Kellogg",
- "knows": "http://manu.sporny.org/i/public"
- }
- ]
-}</pre></div>
-
- <p>The example above expresses a <em>named</em> <a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">JSON-LD graph</a>
- that is identified by the <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>
- <code>http://example.org/graphs/73</code>. That graph is composed of the
- statements about Manu and Gregg. Metadata about the graph itself is also
- expressed via the <code>generatedAt</code> property, which specifies when
- the graph was generated. An alternative view of the
- information above is represented in table form below:</p>
-
- <table class="example">
- <thead>
- <tr><th>Graph</th>
- <th>Subject</th>
- <th>Property</th>
- <th>Value</th>
- <th>Value Type</th>
- </tr></thead>
- <tbody>
- <tr>
- <td>http://example.org/graphs/73</td>
- <td>http://example.org/graphs/73</td>
- <td>http://www.w3.org/ns/prov#generatedAtTime</td>
- <td>2012-04-09</td>
- <td>http://www.w3.org/2001/XMLSchema#date</td>
- </tr>
- <tr>
- <td>http://example.org/graphs/73</td>
- <td>http://manu.sporny.org/i/public</td>
- <td>http://www.w3.org/2001/XMLSchema#type</td>
- <td>http://xmlns.com/foaf/0.1/Person</td>
- <td></td>
- </tr>
- <tr>
- <td>http://example.org/graphs/73</td>
- <td>http://manu.sporny.org/i/public</td>
- <td>http://xmlns.com/foaf/0.1/name</td>
- <td>Manu Sporny</td>
- <td></td>
- </tr>
- <tr>
- <td>http://example.org/graphs/73</td>
- <td>http://manu.sporny.org/i/public</td>
- <td>http://xmlns.com/foaf/0.1/knows</td>
- <td>http://greggkellogg.net/foaf#me</td>
- <td></td>
- </tr>
- <tr>
- <td>http://example.org/graphs/73</td>
- <td>http://greggkellogg.net/foaf#me</td>
- <td>http://www.w3.org/2001/XMLSchema#type</td>
- <td>http://xmlns.com/foaf/0.1/Person</td>
- <td></td>
- </tr>
- <tr>
- <td>http://example.org/graphs/73</td>
- <td>http://greggkellogg.net/foaf#me</td>
- <td>http://xmlns.com/foaf/0.1/name</td>
- <td>Gregg Kellogg</td>
- <td></td>
- </tr>
- <tr>
- <td>http://example.org/graphs/73</td>
- <td>http://greggkellogg.net/foaf#me</td>
- <td>http://xmlns.com/foaf/0.1/knows</td>
- <td>http://manu.sporny.org/i/public</td>
- <td></td>
- </tr>
- </tbody>
- </table>
-
- <p>When <code>@graph</code> is used in a document's top-level object which
- has no other <a class="tref internalDFN" title="property" href="#dfn-property">properties</a> that are mapped
- to an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or a <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> it is considered to
- express the otherwise implicit default graph. This mechanism can be useful
- when a number of <a class="tref internalDFN" title="node" href="#dfn-node">nodes</a> do not directly
- relate to one another through a property or where <a class="tref internalDFN" title="embedding" href="#dfn-embedding">embedding</a>
- is not desirable to the application. For example:</p>
-
- <div class="example"><div class="example-title"><span>Example 47</span>: Using @graph to explicitly express the default graph</div><pre class="example">{
- "@context": ...,
- "<span class="diff">@graph</span>":
- [
- {
- "@id": "http://manu.sporny.org/i/public",
- "@type": "foaf:Person",
- "name": "Manu Sporny",
- "knows": "http://greggkellogg.net/foaf#me"
- },
- {
- "@id": "http://greggkellogg.net/foaf#me",
- "@type": "foaf:Person",
- "name": "Gregg Kellogg",
- "knows": "http://manu.sporny.org/i/public"
- }
- ]
-}</pre></div>
-
- <p>In this case, embedding doesn't work as each <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a>
- references the other. Using the <code>@graph</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>
- allows multiple <a class="tref internalDFN" title="node" href="#dfn-node">nodes</a> to be defined within an
- <a class="tref internalDFN" title="array" href="#dfn-array">array</a>, and allows the use of a shared <a class="tref internalDFN" title="context" href="#dfn-context">context</a>.
- This is equivalent to using multiple
- <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node objects</a> in array and defining
- the <code>@context</code> within each <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a>:</p>
-
- <div class="example"><div class="example-title"><span>Example 48</span>: Context needs to be duplicated if @graph is not used</div><pre class="example">[
- {
- <span class="diff">"@context": ...,</span>
- "@id": "http://manu.sporny.org/i/public",
- "@type": "foaf:Person",
- "name": "Manu Sporny",
- "knows": "http://greggkellogg.net/foaf#me"
- },
- {
- <span class="diff">"@context": ...,</span>
- "@id": "http://greggkellogg.net/foaf#me",
- "@type": "foaf:Person",
- "name": "Gregg Kellogg",
- "knows": "http://manu.sporny.org/i/public"
- }
-]</pre></div>
-
-</section>
-
-<section id="identifying-blank-nodes">
- <h3><span class="secno">6.12 </span>Identifying Blank Nodes</h3>
-
- <p>At times, it becomes necessary to be able to express information without
- being able to uniquely identify the <a class="tref internalDFN" title="node" href="#dfn-node">node</a>.
- This type of node is called a <a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">blank node</a>
- (see <cite><a href="http://www.w3.org/TR/rdf11-concepts/#section-blank-nodes">Section 3.4: Blank Nodes</a></cite>
- of [<cite><a class="bibref" href="#bib-RDF-CONCEPTS">RDF-CONCEPTS</a></cite>]). In JSON-LD, <a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">blank node identifiers</a> are
- automatically created if an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> is not specified using the <code>@id</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>.
- However, authors may provide identifiers for <a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">blank nodes</a>
- by using the special <code>_</code> (underscore) <a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a>. This allows one
- to reference the node locally within the document, but makes it impossible to reference
- the node from an external document. The <a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">blank node identifier</a> is scoped
- to the document in which it is used.</p>
-
- <div class="example"><div class="example-title"><span>Example 49</span>: Specifying a local blank node identifier</div><pre class="example">{
-...
- "@id": "<span class="diff">_:foo</span>",
-...
-}</pre></div>
-
- <p>The example above would set the node to <code>_:foo</code>, which can
- then be used elsewhere in the JSON-LD document to refer back to the
- <a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">blank node</a>. If a developer finds that they refer to the <a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">blank node</a>
- more than once, they should consider naming the node using a dereferenceable
- <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> so that it can also be referenced from other documents.</p>
-</section>
-
-<section id="aliasing-keywords">
- <h3><span class="secno">6.13 </span>Aliasing Keywords</h3>
-
- <p>Each of the JSON-LD <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a>,
- except for <code>@context</code>, may be aliased to application-specific
- keywords. This feature allows legacy JSON content to be utilized
- by JSON-LD by re-using JSON keys that already exist in legacy documents.
- This feature also allows developers to design domain-specific implementations
- using only the JSON-LD <a class="tref internalDFN" title="context" href="#dfn-context">context</a>.</p>
-
- <div class="example"><div class="example-title"><span>Example 50</span>: Aliasing keywords</div><pre class="example">{
- "@context":
- {
- <span class="diff">"url": "@id"</span>,
- <span class="diff">"a": "@type"</span>,
- "name": "http://xmlns.com/foaf/0.1/name"
- },
- "<span class="diff">url</span>": "http://example.com/about#gregg",
- "<span class="diff">a</span>": "http://xmlns.com/foaf/0.1/Person",
- "name": "Gregg Kellogg"
-}</pre></div>
-
- <p>In the example above, the <code>@id</code> and <code>@type</code>
- <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a> have been given the aliases
- <strong>url</strong> and <strong>a</strong>, respectively.</p>
-
- <p>Since keywords cannot be redefined, they can also not be aliased to
- other keywords. Every statement in the context having a keyword
- as the key (as in
- <code style="white-space: nowrap">{ "@type": ... }</code>) will be
- ignored when being processed.</p>
-</section>
-
-<section id="expanded-document-form">
-<h3><span class="secno">6.14 </span>Expanded Document Form</h3>
-<p>The JSON-LD Algorithms and API specification [<cite><a class="bibref" href="#bib-JSON-LD-API">JSON-LD-API</a></cite>]
- defines a method for <em>expanding</em> a JSON-LD document.
- Expansion is the process of taking a JSON-LD document and applying a
- <code>@context</code> such that all IRIs, types, and values
- are expanded so that the <code>@context</code> is no longer necessary.</p>
-
-<p>For example, assume the following JSON-LD input document:</p>
-
-<div class="example"><div class="example-title"><span>Example 51</span>: Sample JSON-LD document</div><pre class="example">{
- "@context":
- {
- "name": "http://xmlns.com/foaf/0.1/name",
- "homepage": {
- "@id": "http://xmlns.com/foaf/0.1/homepage",
- "@type": "@id"
- }
- },
- "name": "Manu Sporny",
- "homepage": "http://manu.sporny.org/"
-}</pre></div>
-
-<p>Running the JSON-LD Expansion algorithm against the JSON-LD input document
- provided above would result in the following output:</p>
-
-<div class="example"><div class="example-title"><span>Example 52</span>: Expanded form for the previous example</div><pre class="example">[
- {
- "http://xmlns.com/foaf/0.1/name": [
- { "@value": "Manu Sporny" }
- ],
- "http://xmlns.com/foaf/0.1/homepage": [
- { "@id": "http://manu.sporny.org/" }
- ]
- }
-]</pre></div>
-
-<p>Expanded document form is useful when an application has to process input
-data in a deterministic form. It has been optimized to ensure that the code
-that developers have to write is minimized compared to the code that would
-have to be written to operate on
-<a href="#compact-document-form" class="sec-ref"><span class="secno">6.15</span> <span class="sec-title">Compact Document Form</span></a>.</p>
-
-</section>
-
-<section id="compact-document-form">
-<h3><span class="secno">6.15 </span>Compact Document Form</h3>
-<p>The JSON-LD Algorithms and API specification [<cite><a class="bibref" href="#bib-JSON-LD-API">JSON-LD-API</a></cite>]
- defines a method for <em>compacting</em> a JSON-LD document.
- Compaction is the process of taking a JSON-LD document and applying a
- context such that a very compact form of the document is generated.
- At times, a JSON-LD document may be received that is not in its most
- compact form. The JSON-LD Algorithms, via an API, provides a way to compact a
- JSON-LD document.</p>
-
-<p>For example, assume the following JSON-LD input document:</p>
-
-<div class="example"><div class="example-title"><span>Example 53</span>: Sample expanded JSON-LD document</div><pre class="example">[
- {
- "http://xmlns.com/foaf/0.1/name": [ "Manu Sporny" ],
- "http://xmlns.com/foaf/0.1/homepage": [
- {
- "@id": "http://manu.sporny.org/"
- }
- ]
- }
-]</pre></div>
-
-<p>Additionally, assume the following developer-supplied JSON-LD context:</p>
-
-<div class="example"><div class="example-title"><span>Example 54</span>: Sample context</div><pre class="example">{
- "@context": {
- "name": "http://xmlns.com/foaf/0.1/name",
- "homepage": {
- "@id": "http://xmlns.com/foaf/0.1/homepage",
- "@type": "@id"
- }
- }
-}</pre></div>
-
-<p>Running the JSON-LD Compaction algorithm given the context supplied above
- against the JSON-LD input document provided above would result in the following
- output:</p>
-
-<div class="example"><div class="example-title"><span>Example 55</span>: Compact form of the sample document once sample context has been applied</div><pre class="example">{
- "@context": {
- "name": "http://xmlns.com/foaf/0.1/name",
- "homepage": {
- "@id": "http://xmlns.com/foaf/0.1/homepage",
- "@type": "@id"
- }
- },
- "name": "Manu Sporny",
- "homepage": "http://manu.sporny.org/"
-}</pre></div>
-
-<p>The compaction algorithm enables a developer to map any document into an
- application-specific compacted form. The process consists of
- expanding the document (see <a href="#expanded-document-form" class="sec-ref"><span class="secno">6.14</span> <span class="sec-title">Expanded Document Form</span></a>) and then
- using a developer-supplied context to compact the expanded document.
- While the context provided above mapped <code>http://xmlns.com/foaf/0.1/name</code>
- to <strong>name</strong>, it could have also mapped it to any arbitrary
- <a class="tref internalDFN" title="term" href="#dfn-term">term</a> provided by the developer. This powerful mechanism allows
- the developer to re-shape the incoming JSON data into a format that is
- optimized for their application.</p>
-</section>
-
-<section id="data-indexing">
- <h3><span class="secno">6.16 </span>Data Indexing</h3>
-
- <p>Databases are typically used to make access to
- data more efficient. Developers often extend this sort of functionality into
- their application data to deliver similar performance gains. Often this
- data does not have any meaning from a Linked Data standpoint, but is
- still useful for an application.</p>
-
- <p>JSON-LD introduces the notion of <a class="tref internalDFN" title="index_map" href="#dfn-index_map">index maps</a>
- that can be used to structure data into a form that is
- more efficient to access. The data indexing feature allows an author to
- structure data using a simpley key-value map where the keys do not map
- to <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>. This enables direct access to data
- instead of having to scan an array in search of a specific item.
- In JSON-LD such data can be specified by associating the
- <code>@index</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> with a
- <code>@container</code> declaration in the context:</p>
-
- <div class="example"><div class="example-title"><span>Example 56</span>: Indexing data in JSON-LD</div><pre class="example">{
- "@context":
- {
- "schema": "http://schema.org/",
- "name": "schema:name",
- "body": "schema:articleBody",
- "words": "schema:wordCount",
- "post": {
- "@id": "schema:blogPost",
- <span class="diff">"@container": "@index"</span>
- }
- },
- "@id": "http://example.com/",
- "@type": "schema:Blog",
- "name": "World Financial News",
- <span class="diff">"post": {
- "en": {
- "@id": "http://example.com/posts/1/en",
- "body": "World commodities were up today with heavy trading of crude oil...",
- "words": 1539
- },
- "de": {
- "@id": "http://example.com/posts/1/de",
- "body": "Die Werte an Warenbörsen stiegen im Sog eines starken Handels von Rohöl...",
- "words": 1204
- }</span>
- }
-}</pre></div>
-
- <p>In the example above, the <strong>blogPost</strong> <a class="tref internalDFN" title="term" href="#dfn-term">term</a> has
- been marked as an <a class="tref internalDFN" title="index_map" href="#dfn-index_map">index map</a>. The <strong>en</strong>,
- <strong>de</strong>, and <strong>ja</strong> keys will be ignored
- semantically, but preserved syntactically, by the JSON-LD Processor.
- This allows a developer to access the German version
- of the <strong>blogPost</strong> using the following code snippet:
- <code>obj.blogPost.de</code>.</p>
-
- <p>The interpretation of the data above is expressed in
- the table below. Note how the index keys do not appear in the Linked Data
- below, but would continue to exist if the document were compacted or
- expanded (see <a href="#compact-document-form" class="sec-ref"><span class="secno">6.15</span> <span class="sec-title">Compact Document Form</span></a> and
- <a href="#expanded-document-form" class="sec-ref"><span class="secno">6.14</span> <span class="sec-title">Expanded Document Form</span></a>) using a JSON-LD processor:</p>
-
- <table class="example">
- <thead>
- <tr><th>Subject</th>
- <th>Property</th>
- <th>Value</th>
- </tr></thead>
- <tbody>
- <tr>
- <td>http://example.com/</td>
- <td>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</td>
- <td>http://schema.org/Blog</td>
- </tr>
- <tr>
- <td>http://example.com/</td>
- <td>http://schema.org/name</td>
- <td>World Financial News</td>
- </tr>
- <tr>
- <td>http://example.com/</td>
- <td>http://schema.org/blogPost</td>
- <td>http://example.com/posts/1/en</td>
- </tr>
- <tr>
- <td>http://example.com/</td>
- <td>http://schema.org/blogPost</td>
- <td>http://example.com/posts/1/de</td>
- </tr>
- <tr>
- <td>http://example.com/posts/1/en</td>
- <td>http://schema.org/articleBody</td>
- <td>World commodities were up today with heavy trading of crude oil...</td>
- </tr>
- <tr>
- <td>http://example.com/posts/1/en</td>
- <td>http://schema.org/wordCount</td>
- <td>1539</td>
- </tr>
- <tr>
- <td>http://example.com/posts/1/de</td>
- <td>http://schema.org/articleBody</td>
- <td>Die Werte an Warenbörsen stiegen im Sog eines starken Handels von Rohöl...</td>
- </tr>
- <tr>
- <td>http://example.com/posts/1/de</td>
- <td>http://schema.org/wordCount</td>
- <td>1204</td>
- </tr>
- </tbody>
- </table>
-</section>
-
-</section>
-
-<section class="appendix normative" id="data-model">
- <!--OddPage--><h2><span class="secno">A. </span>Data Model</h2>
-
- <p>JSON-LD is a serialization format for <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a> based on JSON.
- It is therefore important to distinguish between the syntax, which is defined
- by JSON in [<cite><a class="bibref" href="#bib-RFC4627">RFC4627</a></cite>], and <dfn title="json-ld_data_model" id="dfn-json-ld_data_model">JSON-LD's data model</dfn>
- which is defined as follows:</p>
-
- <ul>
- <li>A <dfn title="json-ld_document" id="dfn-json-ld_document">JSON-LD document</dfn> serializes a collection of
- <a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">JSON-LD graphs</a> and comprises exactly one
- <dfn title="default_graph" id="dfn-default_graph">default graph</dfn> and zero or more <dfn title="named_graph" id="dfn-named_graph">named graphs</dfn>.</li>
- <li>The <a class="tref internalDFN" title="default_graph" href="#dfn-default_graph">default graph</a> does not have a name and <em class="rfc2119" title="may">may</em> be empty.</li>
- <li>Each <a class="tref internalDFN" title="named_graph" href="#dfn-named_graph">named graph</a> is a pair consisting of a <dfn title="graph_name" id="dfn-graph_name">graph name</dfn>
- and a <a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">JSON-LD graph</a>. The
- <a class="tref internalDFN" title="graph_name" href="#dfn-graph_name">graph name</a> <em class="rfc2119" title="should">should</em> be an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or
- <a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">blank node identifier</a>.</li>
- <li>A <dfn title="json-ld_graph" id="dfn-json-ld_graph">JSON-LD graph</dfn> is a labeled directed graph containing
- a set of zero or more <a class="tref internalDFN" title="node" href="#dfn-node">nodes</a> connected by
- <a class="tref internalDFN" title="edge" href="#dfn-edge">edges</a>.</li>
- <li>Every <dfn title="edge" id="dfn-edge">edge</dfn> has a direction associated with it and is labeled with
- an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or a <a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">blank node identifier</a>. Within the JSON-LD syntax
- these edge labels are called <dfn title="property" id="dfn-property">properties</dfn>.</li>
- <li>Every <dfn title="node" id="dfn-node">node</dfn> is either an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
- a <a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">blank node</a>, a <a class="tref internalDFN" title="json-ld_value" href="#dfn-json-ld_value">JSON-LD value</a>,
- or a <a class="tref internalDFN" title="list" href="#dfn-list">list</a>.</li>
- <li>A <a class="tref internalDFN" title="node" href="#dfn-node">node</a> having an outgoing edge <em class="rfc2119" title="must">must</em> be an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or a
- <a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">blank node</a>.</li>
- <li>A <a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">JSON-LD graph</a> <em class="rfc2119" title="must not">must not</em> contain unconnected <a class="tref internalDFN" title="node" href="#dfn-node">nodes</a>,
- i.e., nodes which are not connected by an <a class="tref internalDFN" title="edge" href="#dfn-edge">edge</a> to any other <a class="tref internalDFN" title="node" href="#dfn-node">node</a>.</li>
- <li>An <dfn title="iri" id="dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></dfn>
- (Internationalized Resource Identifier) is a string that conforms to the syntax
- defined in [<cite><a class="bibref" href="#bib-RFC3987">RFC3987</a></cite>]. <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> used within a
- <a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">JSON-LD graph</a> <em class="rfc2119" title="should">should</em> return a <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a> document describing
- the resource denoted by that <abbr title="Internationalized Resource Identifier">IRI</abbr> when being dereferenced.</li>
- <li>A <dfn title="blank_node" id="dfn-blank_node">blank node</dfn> is a <a class="tref internalDFN" title="node" href="#dfn-node">node</a> which is not
- an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>. A blank node <em class="rfc2119" title="may">may</em> be identified
- using a <a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">blank node identifier</a>.</li>
- <li>A <dfn title="blank_node_identifier" id="dfn-blank_node_identifier">blank node identifier</dfn> is a string that can be used as an identifier
- for a <a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">blank node</a> within the scope of a <a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">JSON-LD document</a>.
- Blank node identifiers begin with <code>_:</code>.</li>
- <li>A <dfn title="json-ld_value" id="dfn-json-ld_value">JSON-LD value</dfn> is a <a class="tref internalDFN" title="string" href="#dfn-string">string</a>, a <a class="tref internalDFN" title="number" href="#dfn-number">number</a>,
- <a class="tref internalDFN" title="true" href="#dfn-true">true</a> or <a class="tref internalDFN" title="false" href="#dfn-false">false</a>, a <a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">typed value</a>, or a
- <a class="tref internalDFN" title="language-tagged_string" href="#dfn-language-tagged_string">language-tagged string</a>.</li>
- <li>A <dfn title="typed_value" id="dfn-typed_value">typed value</dfn> consists of a value, which is a string, and a type, which is an <abbr title="Internationalized Resource Identifier">IRI</abbr>.</li>
- <li>A <dfn title="language-tagged_string" id="dfn-language-tagged_string">language-tagged string</dfn> consists of a string and a non-empty language
- tag as defined by [<cite><a class="bibref" href="#bib-BCP47">BCP47</a></cite>]. The language tag <em class="rfc2119" title="must">must</em> be well-formed according to section
- <a href="http://tools.ietf.org/html/bcp47#section-2.2.9">2.2.9</a> of [<cite><a class="bibref" href="#bib-BCP47">BCP47</a></cite>], and <em class="rfc2119" title="must">must</em>
- be lowercase.</li>
- <li>A <dfn title="list" id="dfn-list">list</dfn> is an ordered sequence of zero or more
- <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>,
- <a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">blank nodes</a>, and
- <a class="tref internalDFN" title="json-ld_value" href="#dfn-json-ld_value">JSON-LD values</a>.</li>
- </ul>
-
- <div class="issue"><div class="issue-title"><span>Issue 1</span></div><p class="">In contrast to the RDF data model as defined in [<cite><a class="bibref" href="#bib-RDF-CONCEPTS">RDF-CONCEPTS</a></cite>], JSON-LD allows
- blank nodes as property labels and graph names. This feature is
- controversial in the RDF WG and may be removed in the future.</p></div>
-
- <p><a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">JSON-LD documents</a> <em class="rfc2119" title="may">may</em> contain data that cannot be
- represented by the <a class="tref internalDFN" title="json-ld_data_model" href="#dfn-json-ld_data_model">data model</a> defined above.
- Unless otherwise specified, such data is ignored when a <a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">JSON-LD document</a>
- is being processed. This means, e.g., that properties which are not mapped to an
- <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or <a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">blank node</a> will be ignored.</p>
-
- <p style="text-align: center"><img src="linked-data-graph.png" title="An illustration of JSON-LD's data model"></p>
- <p style="text-align: center">Figure 1: An illustration of JSON-LD's data model.</p>
-</section>
-
-<section class="appendix normative" id="json-ld-grammar">
-<!--OddPage--><h2><span class="secno">B. </span>JSON-LD Grammar</h2>
-<em>This section is normative</em>
-
-
-<p>This appendix restates the syntactic conventions described in the
- previous sections more formally.</p>
-
-<div class="note"><div class="note-title"><span>Note</span></div><p class="">The JSON-LD context allows <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a>
- <a href="#aliasing-keywords" class="sec-ref"><span class="secno">6.13</span> <span class="sec-title">Aliasing Keywords</span></a>). Whenever a <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> is
- discussed in this grammar, the statements also apply to an alias for
- that <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>. For example, if the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a>
- defines the <a class="tref internalDFN" title="term" href="#dfn-term">term</a> <code>id</code> as an alias for <code>@id</code>,
- that alias may be legitimately used as a substitution for <code>@id</code>.
- Note that <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> aliases are not expanded during context
- processing.</p></div>
-
-<p>A <a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">JSON-LD document</a> <em class="rfc2119" title="must">must</em> be a valid JSON document as described
- in [<cite><a class="bibref" href="#bib-RFC4627">RFC4627</a></cite>].</p>
-
-<p>A <a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">JSON-LD document</a> <em class="rfc2119" title="must">must</em> be a single <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a>
- or a JSON <a class="tref internalDFN" title="array" href="#dfn-array">array</a> containing a set of one or more
- <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node objects</a>.</p>
-
-<section id="grammar-node-object" typeof="bibo:Chapter" resource="#grammar-node-object" rel="bibo:chapter">
-<h3><span class="secno">B.1 </span>Node Object</h3>
-
-<p>A <dfn title="node_object" id="dfn-node_object">node object</dfn> represents zero or more properties of a
- <a class="tref internalDFN" title="node" href="#dfn-node">node</a> in the <a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">JSON-LD graph</a> serialized by the
- <a class="tref internalDFN" title="json-ld_document" href="#dfn-json-ld_document">JSON-LD document</a>. A <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> is a
- <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a> if it exists outside of a JSON-LD
- <a class="tref internalDFN" title="context" href="#dfn-context">context</a> and:</p>
-
-<ul>
- <li>it does not contain the <code>@value</code>, <code>@list</code>,
- or <code>@set</code> keywords, and</li>
- <li>it is not the top-most <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> in the JSON-LD document
- consisting of no other members than <code>@graph</code> and
- <code>@context</code>.
-</li></ul>
-
-<p>The <a class="tref internalDFN" title="property" href="#dfn-property">properties</a> of a <a class="tref internalDFN" title="node" href="#dfn-node">node</a> in
- a <a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">JSON-LD graph</a> may be spread among different
- <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node objects</a> within a document. When
- that happens, the keys of the different
- <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node objects</a> are merged to create the
- properties of the resulting <a class="tref internalDFN" title="node" href="#dfn-node">node</a>.</p>
-
-<p>A <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a> <em class="rfc2119" title="must">must</em> be a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a>. All keys
- which are not <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>,
- <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact IRIs</a>, <a class="tref internalDFN" title="term" href="#dfn-term">terms</a>
- valid in the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a>, or one of the following
- <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a> <em class="rfc2119" title="must">must</em> be ignored when processed:</p>
-
-<ul>
- <li><code>@context</code>,</li>
- <li><code>@graph</code>,</li>
- <li><code>@id</code>,</li>
- <li><code>@type</code>, or</li>
- <li><code>@index</code></li>
-</ul>
-
-<p>If the <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a> contains the <code>@context</code>
- key, its value <em class="rfc2119" title="must">must</em> be one of the following:</p>
-<ul>
- <li><a class="tref internalDFN" title="null" href="#dfn-null">null</a>,</li>
- <li>an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>,</li>
- <li>a <a class="tref internalDFN" title="context_definition" href="#dfn-context_definition">context definition</a>, or</li>
- <li>an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> composed of any number of the previous two expressions.</li>
-</ul>
-
-<p>If the <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a> contains the <code>@id</code> key,
- its value <em class="rfc2119" title="must">must</em> be an <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a class="tref internalDFN" title="relative_iri" href="#dfn-relative_iri">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
- or a <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> (including
- <a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">blank node identifiers</a>).
- See <a href="#node-identifiers" class="sec-ref"><span class="secno">5.3</span> <span class="sec-title">Node Identifiers</span></a>, <a href="#compact-iris" class="sec-ref"><span class="secno">6.1</span> <span class="sec-title">Compact IRIs</span></a>,
- and <a href="#identifying-blank-nodes" class="sec-ref"><span class="secno">6.12</span> <span class="sec-title">Identifying Blank Nodes</span></a> for further discussion on
- <code>@id</code> values.</p>
-
-<p>If the <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a> contains the <code>@type</code>
- key, its value <em class="rfc2119" title="must">must</em> be either an <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a
- <a class="tref internalDFN" title="relative_iri" href="#dfn-relative_iri">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
- (including <a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">blank node identifiers</a>),
- a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> defined in the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a> expanding into an <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, or
- an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> of any of these.
- See <a href="#specifying-the-type" class="sec-ref"><span class="secno">5.4</span> <span class="sec-title">Specifying the Type</span></a> for further discussion on
- <code>@type</code> values.</p>
-
-<p>If the <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a> contains the <code>@graph</code>
- key, its value <em class="rfc2119" title="must">must</em> be
- a <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a> or
- an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> of zero or more <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node objects</a>.
- If the <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a> contains an <code>@id</code> keyword,
- its value is used as the label of a named graph.
- See <a href="#named-graphs" class="sec-ref"><span class="secno">6.11</span> <span class="sec-title">Named Graphs</span></a> for further discussion on
- <code>@graph</code> values. As a special case, if a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a>
- contains no keys other than <code>@graph</code> and <code>@context</code>, and the
- <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> is the root of the JSON-LD document, the
- <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> is not treated as a <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a>; this
- is used as a way of defining <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node
- definitions</a> that may not form a connected graph. This allows a
- <a class="tref internalDFN" title="context" href="#dfn-context">context</a> to be defined which is shared by all of the constituent
- <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node objects</a>.</p>
-
-<p>If the <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a> contains the <code>@index</code> key,
- its value <em class="rfc2119" title="must">must</em> be a <a class="tref internalDFN" title="string" href="#dfn-string">string</a>. See section
- <a href="#data-indexing" class="sec-ref"><span class="secno">6.16</span> <span class="sec-title">Data Indexing</span></a> for further discussion on <code>@index</code>
- values.</p>
-
-
-<p>Keys in a <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a> that are not
- <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a> <em class="rfc2119" title="must">must</em> expand to an <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
- using the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a>. The values associated with these keys
- <em class="rfc2119" title="must">must</em> be one of the following:</p>
-
-<ul>
- <li><a class="tref internalDFN" title="string" href="#dfn-string">string</a>,</li>
- <li><a class="tref internalDFN" title="number" href="#dfn-number">number</a>,</li>
- <li><a class="tref internalDFN" title="true" href="#dfn-true">true</a>,</li>
- <li><a class="tref internalDFN" title="false" href="#dfn-false">false</a>,</li>
- <li><a class="tref internalDFN" title="null" href="#dfn-null">null</a>,</li>
- <li><a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a>,</li>
- <li><a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">expanded value</a>,</li>
- <li><a class="tref internalDFN" title="list" href="#dfn-list">list</a> or <a class="tref internalDFN" title="set" href="#dfn-set">set</a>,</li>
- <li>an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> of zero or more of the possibilities above,</li>
- <li>a <a class="tref internalDFN" title="language_map" href="#dfn-language_map">language map</a>, or </li>
- <li>an <a class="tref internalDFN" title="index_map" href="#dfn-index_map">index map</a></li>
-</ul>
-
-</section>
-
-<section id="grammar-term-reference" typeof="bibo:Chapter" resource="#grammar-term-reference" rel="bibo:chapter">
- <h3><span class="secno">B.2 </span>Term</h3>
- <p>A <dfn title="term" id="dfn-term">term</dfn> is a short-hand <a class="tref internalDFN" title="string" href="#dfn-string">string</a> that expands
- to an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or a <a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">blank node identifier</a>.</p>
-
- <p>A <a class="tref internalDFN" title="term" href="#dfn-term">term</a> <em class="rfc2119" title="must not">must not</em> equal any of the JSON-LD
- <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a>.</p>
-
- <p>To avoid forward-compatibility issues, a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> <em class="rfc2119" title="should not">should not</em> start
- with an <code>@</code> character as future versions of JSON-LD may introduce
- additional <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a>. Furthermore, the use of
- empty terms (<code>""</code>) is discouraged as not all programming languages
- are able to handle empty property names.</p>
-
- <p>See <a href="#the-context" class="sec-ref"><span class="secno">5.1</span> <span class="sec-title">The Context</span></a> and <a href="#iris" class="sec-ref"><span class="secno">5.2</span> <span class="sec-title">IRIs</span></a> for further discussion
- on mapping <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> to <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>.</p>
-</section>
-
-<section id="grammar-language-map" typeof="bibo:Chapter" resource="#grammar-language-map" rel="bibo:chapter">
-<h3><span class="secno">B.3 </span>Language Map</h3>
-<p>A <dfn title="language_map" id="dfn-language_map">language map</dfn> is used to associate a language with a value in a
- way that allows easy programmatic access. A <a class="tref internalDFN" title="language_map" href="#dfn-language_map">language map</a> may be
- used as a term value within a <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a> if the term is defined
- with <code>@container</code> set to <code>@language</code>. The keys of a
- <a class="tref internalDFN" title="language_map" href="#dfn-language_map">language map</a> <em class="rfc2119" title="must">must</em> be lowercase [<cite><a class="bibref" href="#bib-BCP47">BCP47</a></cite>]
- <a class="tref internalDFN" title="string" href="#dfn-string">strings</a> with an associated value that is any
- of the following types:</p>
-<ul>
- <li><a class="tref internalDFN" title="string" href="#dfn-string">string</a>, or</li>
- <li>an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> of zero or more strings</li>
-</ul>
-<p>See <a href="#language-tagged-strings"></a> for further discussion on language maps.</p>
-</section>
-
-<section id="grammar-index-map" typeof="bibo:Chapter" resource="#grammar-index-map" rel="bibo:chapter">
-<h3><span class="secno">B.4 </span>Index Map</h3>
-<p>An <dfn title="index_map" id="dfn-index_map">index map</dfn> allows keys that have no semantic meaning,
- but should be preserved regardless, to be used in JSON-LD documents.
- An <a class="tref internalDFN" title="index_map" href="#dfn-index_map">index map</a> may
- be used as a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> value within a <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a> if the
- term is defined with <code>@container</code> set to <code>@index</code>.
- The values of the members of an <a class="tref internalDFN" title="index_map" href="#dfn-index_map">index map</a> <em class="rfc2119" title="must">must</em> be one
- of the following types:</p>
-<ul>
- <li><a class="tref internalDFN" title="string" href="#dfn-string">string</a>,</li>
- <li><a class="tref internalDFN" title="number" href="#dfn-number">number</a>,</li>
- <li><a class="tref internalDFN" title="true" href="#dfn-true">true</a>,</li>
- <li><a class="tref internalDFN" title="false" href="#dfn-false">false</a>,</li>
- <li><a class="tref internalDFN" title="null" href="#dfn-null">null</a>,</li>
- <li><a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a>,</li>
- <li><a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">expanded value</a>,</li>
- <li>an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> of zero or more of the above possibilities</li>
-</ul>
-<p>See <a href="#data-indexing" class="sec-ref"><span class="secno">6.16</span> <span class="sec-title">Data Indexing</span></a> for further information on this
-topic.</p>
-</section>
-
-<section id="grammar-expanded-values" typeof="bibo:Chapter" resource="#grammar-expanded-values" rel="bibo:chapter">
-<h3><span class="secno">B.5 </span>Expanded Values</h3>
-
-<p>An <dfn title="expanded_value" id="dfn-expanded_value">expanded value</dfn> is used to explicitly associate a type or a
- language with a value to create a <a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">typed value</a> or a <a class="tref internalDFN" title="language-tagged_string" href="#dfn-language-tagged_string">language-tagged
- string</a>.</p>
-
-<p>An <a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">expanded value</a> <em class="rfc2119" title="must">must</em> be a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> containing the
- <code>@value</code> key. It <em class="rfc2119" title="may">may</em> also contain a <code>@type</code>,
- a <code>@language</code>, or an <code>@index</code> key but <em class="rfc2119" title="must not">must not</em> contain
- both a <code>@type</code> and a <code>@language</code> key at the same time.
- An <a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">expanded value</a> <em class="rfc2119" title="must not">must not</em> contain keys other than
- <code>@value</code>, <code>@type</code>, <code>@language</code>, and
- <code>@index</code>. An <a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">expanded value</a> that contains a
- <code>@type</code> key is called an <dfn title="expanded_typed_value" id="dfn-expanded_typed_value">expanded typed value</dfn>.
- An <a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">expanded value</a> that contains a <code>@language</code> key
- is called an <dfn title="expanded_language-tagged_string" id="dfn-expanded_language-tagged_string">expanded language-tagged string</dfn>.</p>
-
-<p>The value associated with the <code>@value</code> key <em class="rfc2119" title="must">must</em> be either a
- <a class="tref internalDFN" title="string" href="#dfn-string">string</a>, <a class="tref internalDFN" title="number" href="#dfn-number">number</a>, <a class="tref internalDFN" title="true" href="#dfn-true">true</a>,
- <a class="tref internalDFN" title="false" href="#dfn-false">false</a> or <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</p>
-
-<p>The value associated with the <code>@type</code> key <em class="rfc2119" title="must">must</em> be a
- <a class="tref internalDFN" title="term" href="#dfn-term">term</a>, a <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
- an <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a class="tref internalDFN" title="relative_iri" href="#dfn-relative_iri">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, or <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</p>
-
-<p>The value associated with the <code>@language</code> key <em class="rfc2119" title="must">must</em> have the
- lexical form described in [<cite><a class="bibref" href="#bib-BCP47">BCP47</a></cite>], or be <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</p>
-
-<p>The value associated with the <code>@index</code> key <em class="rfc2119" title="must">must</em> be a
- <a class="tref internalDFN" title="string" href="#dfn-string">string</a>.</p>
-
-<p>See <a href="#typed-values" class="sec-ref"><span class="secno">6.2</span> <span class="sec-title">Typed Values</span></a> and <a href="#language-tagged-strings"></a>
- for more information on
- <a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">expanded values</a>.</p>
-</section>
-
-<section id="grammar-set-list" typeof="bibo:Chapter" resource="#grammar-set-list" rel="bibo:chapter">
-<h3><span class="secno">B.6 </span>List and Set Values</h3>
-
-<p>A <a class="tref internalDFN" title="list" href="#dfn-list">list</a> represents an <em>ordered</em> set of values. A <dfn title="set" id="dfn-set">set</dfn>
- represents an <em>unordered</em> set of values. Unless otherwise specified,
- <a class="tref internalDFN" title="array" href="#dfn-array">arrays</a> are unordered in JSON-LD. As such, the
- <code>@set</code> keyword, when used in the body of a JSON-LD document,
- represents just syntactic sugar which is optimized away when processing the document.
- However, it is very helpful when used within the context of a document. Values
- of terms associated with a <code>@set</code> or <code>@list</code> container
- will always be represented in the form of an array when a document is processed -
- even if there is just a single value that would otherwise be optimized to
- a non-array form in <a href="#compact-document-form">compact document form</a>.
- This simplifies post-processing of the data as the data is always in array form.</p>
-
-<p>A <a class="tref internalDFN" title="list" href="#dfn-list">list</a> <em class="rfc2119" title="must">must</em> be a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> that contains no other
- keys than <code>@list</code>, <code>@context</code>, and <code>@index</code>.</p>
-
-<p>A <a class="tref internalDFN" title="set" href="#dfn-set">set</a> <em class="rfc2119" title="must">must</em> be a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> that that contains no other
- keys than <code>@set</code>, <code>@context</code>, and <code>@index</code>.
- Please note that the <code>@index</code> key will be ignored, and thus be dropped,
- when being processed.</p>
-
-<p>In both cases, the value associated with the keys <code>@list</code> and <code>@set</code>
- <em class="rfc2119" title="must">must</em> be an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> of any of the following:</p>
-<ul>
- <li><a class="tref internalDFN" title="string" href="#dfn-string">string</a>,</li>
- <li><a class="tref internalDFN" title="number" href="#dfn-number">number</a>,</li>
- <li><a class="tref internalDFN" title="true" href="#dfn-true">true</a>,</li>
- <li><a class="tref internalDFN" title="false" href="#dfn-false">false</a>,</li>
- <li><a class="tref internalDFN" title="null" href="#dfn-null">null</a>,</li>
- <li><a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a>, or</li>
- <li><a class="tref internalDFN" title="expanded_value" href="#dfn-expanded_value">expanded value</a></li>
-</ul>
-
-<p>See <a href="#sets-and-lists" class="sec-ref"><span class="secno">6.9</span> <span class="sec-title">Sets and Lists</span></a> for further discussion on List and Set Values.</p>
-</section>
-
-<section id="grammar-context" typeof="bibo:Chapter" resource="#grammar-context" rel="bibo:chapter">
-<h3><span class="secno">B.7 </span>Context Definition</h3>
-<p>A <dfn title="context_definition" id="dfn-context_definition">context definition</dfn> defines a <a class="tref internalDFN" title="local_context" href="#dfn-local_context">local context</a> in a <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a>.</p>
-
-<p>A <a class="tref internalDFN" title="context_definition" href="#dfn-context_definition">context definition</a> <em class="rfc2119" title="must">must</em> be a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a>
- containing one or more key-value pairs. Keys <em class="rfc2119" title="must">must</em> either be
- <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> or <code>@language</code> or <code>@vocab</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a>.
-
-</p><p>If the <a class="tref internalDFN" title="context_definition" href="#dfn-context_definition">context definition</a> has a <code>@language</code> key,
- its value <em class="rfc2119" title="must">must</em> have the lexical form described in [<cite><a class="bibref" href="#bib-BCP47">BCP47</a></cite>] or be <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</p>
-<p>If the <a class="tref internalDFN" title="context_definition" href="#dfn-context_definition">context definition</a> has a <code>@vocab</code> key,
- its value <em class="rfc2119" title="must">must</em> have the lexical form of <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> or be <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</p>
-
-<p><a class="tref internalDFN" title="term" href="#dfn-term">Term</a> values <em class="rfc2119" title="must">must</em> be either a
- <a class="tref internalDFN" title="string" href="#dfn-string">string</a>, <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, or an <a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">expanded term definition</a>.</p>
-
-<p>An <a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">expanded term definition</a> is used to describe the mapping
- between a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> and its expanded identifier, as well as other
- properties of the value associated with the <a class="tref internalDFN" title="term" href="#dfn-term">term</a> when it is
- used as key in a <a class="tref internalDFN" title="node_object" href="#dfn-node_object">node object</a>.</p>
-
-<p>An <a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">expanded term definition</a> <em class="rfc2119" title="should">should</em> be a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a>
- composed of zero or more keys from <code>@id</code>,
- <code>@type</code>, <code>@language</code> or <code>@container</code>. An
- <a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">expanded term definition</a> <em class="rfc2119" title="should not">should not</em> contain any other keys.
-</p><p>If the <a class="tref internalDFN" title="term" href="#dfn-term">term</a> definition is not <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, a <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
- or an <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> and the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a> does not have an
- <code>@vocab</code> mapping, the <a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">expanded term definition</a> <em class="rfc2119" title="must">must</em>
- include the <code>@id</code> key.</p>
-
-<p>If the <a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">expanded term definition</a> contains the <code>@id</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>,
- its value <em class="rfc2119" title="must">must</em> be <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, an <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a class="tref internalDFN" title="blank_node_identifier" href="#dfn-blank_node_identifier">blank node identifier</a>,
- a <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> defined in the defining <a class="tref internalDFN" title="context_definition" href="#dfn-context_definition">context definition</a>
- or the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a>, or an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> composed of any of the previous allowed values except
- <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</p>
-<p>If the <a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">expanded term definition</a> contains the <code>@type</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>,
- its value <em class="rfc2119" title="must">must</em> be an <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> defined in the defining <a class="tref internalDFN" title="context_definition" href="#dfn-context_definition">context definition</a> or the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a>, or the <code>@id</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>.</p>
-<p>If the <a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">expanded term definition</a> contains the <code>@language</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>,
- its value <em class="rfc2119" title="must">must</em> have the lexical form described in [<cite><a class="bibref" href="#bib-BCP47">BCP47</a></cite>] or be <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</p>
-<p>If the <a class="tref internalDFN" title="expanded_term_definition" href="#dfn-expanded_term_definition">expanded term definition</a> contains the <code>@container</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>,
- its value <em class="rfc2119" title="must">must</em> be either <code>@list</code>, <code>@set</code>, <code>@language</code>, <code>@index</code>, or be <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.
- If the value is <code>@language</code>, when the <a class="tref internalDFN" title="term" href="#dfn-term">term</a> is used outside of the <code>@context</code>, the
- associated value <em class="rfc2119" title="must">must</em> be a <a class="tref internalDFN" title="language_map" href="#dfn-language_map">language map</a>. If the value is
- <code>@index</code>, when the <a class="tref internalDFN" title="term" href="#dfn-term">term</a> is used outside of
- the <code>@context</code>, the associated value <em class="rfc2119" title="must">must</em> be an
- <a class="tref internalDFN" title="index_map" href="#dfn-index_map">index map</a>.</p>
-
-<p><a class="tref internalDFN" title="term" href="#dfn-term">Terms</a> <em class="rfc2119" title="must not">must not</em> be used in a circular manner. That is, the definition of a term cannot depend on the definition of another term if that other term also depends on the first term.</p>
-
-<p>See <a href="#the-context" class="sec-ref"><span class="secno">5.1</span> <span class="sec-title">The Context</span></a> for further discussion on contexts.</p>
-</section>
-
-</section>
-
-<section class="appendix normative" id="relationship-to-rdf">
- <!--OddPage--><h2><span class="secno">C. </span>Relationship to RDF</h2>
-
- <p>The RDF data model, as outlined in [<cite><a class="bibref" href="#bib-RDF-CONCEPTS">RDF-CONCEPTS</a></cite>], is an abstract syntax for
- representing a directed graph of information. It is a subset of
- <a class="tref internalDFN" title="json-ld_data_model" href="#dfn-json-ld_data_model">JSON-LD's data model</a> with a few
- additional constraints. The differences between the two data models are:</p>
-
- <ul>
- <li>In JSON-LD <a class="tref internalDFN" title="graph_name" href="#dfn-graph_name">graph names</a> can be
- <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> or <a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">blank nodes</a>
- whereas in RDF graph names have to be <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>.</li>
- <li>In JSON-LD <a class="tref internalDFN" title="property" href="#dfn-property">properties</a> can be
- <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> or <a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">blank nodes</a>
- whereas in RDF properties (predicates) have to be
- <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>.</li>
- <li>In JSON-LD lists are part of the data model whereas in RDF they are part of
- a vocabulary, namely [<cite><a class="bibref" href="#bib-RDF-SCHEMA">RDF-SCHEMA</a></cite>].</li>
- <li>RDF values are either typed <em>literals</em>
- (<a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">typed values</a>) or <em>language-tagged strings</em>
- (<a class="tref internalDFN" title="language-tagged_string" href="#dfn-language-tagged_string">language-tagged strings</a>) whereas
- JSON-LD also supports JSON's native data types, i.e., <a class="tref internalDFN" title="number" href="#dfn-number">number</a>,
- <a class="tref internalDFN" title="string" href="#dfn-string">strings</a>, and the boolean values <a class="tref internalDFN" title="true" href="#dfn-true">true</a>
- and <a class="tref internalDFN" title="false" href="#dfn-false">false</a>. The JSON-LD Algorithms and API specification [<cite><a class="bibref" href="#bib-JSON-LD-API">JSON-LD-API</a></cite>] defines
- the conversion rules between JSON's native data types and RDF's counterparts to
- allow full round-tripping.</li>
-
- </ul>
-
- <p>Summarized these differences mean that JSON-LD is capable of serializing any RDF
- graph or dataset and most, but not all, JSON-LD documents can be transformed to RDF.
- A complete description of the algorithms to convert from RDF to JSON-LD and from
- JSON-LD to RDF is included in the JSON-LD Algorithms and API specification
- [<cite><a class="bibref" href="#bib-JSON-LD-API">JSON-LD-API</a></cite>].</p>
-
- <p>Even though JSON-LD serializes RDF datasets, it can also be used as a RDF graph source.
- In that case, a consumer <em class="rfc2119" title="must">must</em> only use the default graph and ignore all named graphs.
- This allows servers to expose data in, e.g., both Turtle and JSON-LD using content
- negotiation.</p>
-
- <div class="note"><div class="note-title"><span>Note</span></div><p class="">Publishers supporting both dataset and graph syntaxes have to ensure that
- the primary data is stored in the default graph to enable consumers that do not support
- datasets to process the information.</p></div>
-</section>
-
-<section class="appendix informative" id="relationship-to-other-linked-data-formats">
-<!--OddPage--><h2><span class="secno">D. </span>Relationship to Other Linked Data Formats</h2><p><em>This section is non-normative.</em></p>
-
-<p>The JSON-LD markup examples below demonstrate how JSON-LD can be used to
- express semantic data marked up in other linked data formats such as Turtle,
- RDFa, Microformats, and Microdata. These sections are merely provided as
- evidence that JSON-LD is very flexible in what it can express across different
- <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a> approaches.</p>
-
-<section id="turtle">
- <h3><span class="secno">D.1 </span>Turtle</h3><p><em>This section is non-normative.</em></p>
-
- <p>The following are examples of converting RDF expressed in [<cite><a class="bibref" href="#bib-TURTLE-TR">TURTLE-TR</a></cite>]
- into JSON-LD.</p>
-
-<section id="prefix-definitions">
-<h4><span class="secno">D.1.1 </span>Prefix definitions</h4><p><em>This section is non-normative.</em></p>
-<p>The JSON-LD context has direct equivalents for the Turtle
- <code>@prefix</code> declaration:</p>
-
-<div class="example"><div class="example-title"><span>Example 57</span>: A set of statements serialized in Turtle</div><pre class="example">@prefix foaf: <http://xmlns.com/foaf/0.1/> .
-
-<http://manu.sporny.org/i/public> a foaf:Person;
- foaf:name "Manu Sporny";
- foaf:homepage <http://manu.sporny.org/> .</pre></div>
-
-<div class="example"><div class="example-title"><span>Example 58</span>: The same set of statements serialized in JSON-LD</div><pre class="example">{
- "@context":
- {
- "foaf": "http://xmlns.com/foaf/0.1/"
- },
- "@id": "http://manu.sporny.org/i/public",
- "@type": "foaf:Person",
- "foaf:name": "Manu Sporny",
- "foaf:homepage": { "@id": "http://manu.sporny.org/" }
-}</pre></div>
-
-<div class="note"><div class="note-title"><span>Note</span></div><p class="">JSON-LD has no equivalent for the Turtle <code>@base</code>
-declaration, but can use a prefix such as <code>base</code> to encode the
-information in the document.</p></div>
-
-</section>
-
-<section id="embedding-1">
-<h4><span class="secno">D.1.2 </span>Embedding</h4>
-<p>Both Turtle and JSON-LD allow embedding, although Turtle only allows embedding of
- <a class="tref internalDFN" title="blank_node" href="#dfn-blank_node">blank nodes</a>.</p>
-</section>
-
-<div class="example"><div class="example-title"><span>Example 59</span>: Embedding in Turtle</div><pre class="example">@prefix foaf: <http://xmlns.com/foaf/0.1/> .
-
-<http://manu.sporny.org/i/public>
- a foaf:Person;
- foaf:name "Manu Sporny";
- foaf:knows [ a foaf:Person; foaf:name "Gregg Kellogg" ] .</pre></div>
-
-<div class="example"><div class="example-title"><span>Example 60</span>: Same embedding example in JSON-LD</div><pre class="example">{
- "@context":
- {
- "foaf": "http://xmlns.com/foaf/0.1/"
- },
- "@id": "http://manu.sporny.org/i/public",
- "@type": "foaf:Person",
- "foaf:name": "Manu Sporny",
- "foaf:knows":
- {
- "@type": "foaf:Person",
- "foaf:name": "Gregg Kellogg"
- }
-}</pre></div>
-<section id="lists">
-<h4><span class="secno">D.1.3 </span>Lists</h4>
-<p>Both JSON-LD and Turtle can represent sequential lists of values.</p>
-
-<div class="example"><div class="example-title"><span>Example 61</span>: A list of values in Turtle</div><pre class="example">@prefix foaf: <http://xmlns.com/foaf/0.1/> .
-
-<http://example.org/people#joebob> a foaf:Person;
- foaf:name "Joe Bob";
- foaf:nick ( "joe" "bob" "jaybee" ) .</pre></div>
-
-<div class="example"><div class="example-title"><span>Example 62</span>: Same example with a list of values in JSON-LD</div><pre class="example">{
- "@context":
- {
- "foaf": "http://xmlns.com/foaf/0.1/"
- },
- "@id": "http://example.org/people#joebob",
- "@type": "foaf:Person",
- "foaf:name": "Joe Bob",
- "foaf:nick":
- {
- "@list": [ "joe", "bob", "jaybee" ]
- }
-}</pre></div>
-</section>
-
-</section>
-
-<section id="rdfa">
-<h3><span class="secno">D.2 </span>RDFa</h3>
-
-<p>The following example describes three people with their respective names and
-homepages in [<cite><a class="bibref" href="#bib-RDFA-CORE">RDFA-CORE</a></cite>].</p>
-
-<div class="example"><div class="example-title"><span>Example 63</span>: RDFa fragment that describes three people</div><pre class="example"><div <span class="diff">prefix="foaf: http://xmlns.com/foaf/0.1/"</span>>
- <ul>
- <li <span class="diff">typeof="foaf:Person"</span>>
- <a <span class="diff">rel="foaf:homepage" href="http://example.com/bob/" property="foaf:name"</span>>Bob</a>
- </li>
- <li <span class="diff">typeof="foaf:Person"</span>>
- <a <span class="diff">rel="foaf:homepage" href="http://example.com/eve/" property="foaf:name"</span>>Eve</a>
- </li>
- <li <span class="diff">typeof="foaf:Person"</span>>
- <a <span class="diff">rel="foaf:homepage" href="http://example.com/manu/" property="foaf:name"</span>>Manu</a>
- </li>
- </ul>
-</div></pre></div>
-
-<p>An example JSON-LD implementation using a single <a class="tref internalDFN" title="context" href="#dfn-context">context</a> is
-described below.</p>
-
-<div class="example"><div class="example-title"><span>Example 64</span>: Same description in JSON-LD (context shared among node objects)</div><pre class="example">{
- "@context":
- {
- "foaf": "http://xmlns.com/foaf/0.1/"
- },
- "@graph":
- [
- {
- "@type": "foaf:Person",
- "foaf:homepage": "http://example.com/bob/",
- "foaf:name": "Bob"
- },
- {
- "@type": "foaf:Person",
- "foaf:homepage": "http://example.com/eve/",
- "foaf:name": "Eve"
- },
- {
- "@type": "foaf:Person",
- "foaf:homepage": "http://example.com/manu/",
- "foaf:name": "Manu"
- }
- ]
-}</pre></div>
-
-</section>
-
-<section id="microformats">
-<h3><span class="secno">D.3 </span>Microformats</h3>
-
-<p>The following example uses a simple Microformats hCard ([<cite><a class="bibref" href="#bib-MICROFORMATS">MICROFORMATS</a></cite>]) example to express
-how the Microformat is represented in JSON-LD.</p>
-
-<div class="example"><div class="example-title"><span>Example 65</span>: HTML fragment with a simple Microformats hCard</div><pre class="example"><div class="vcard">
- <a class="url fn" href="http://tantek.com/">Tantek Çelik</a>
-</div></pre></div>
-
-<p>The representation of the hCard expresses the Microformat terms in the
-<a class="tref internalDFN" title="context" href="#dfn-context">context</a> and uses them directly for the <code>url</code> and <code>fn</code>
-properties. Also note that the Microformat to JSON-LD processor has
-generated the proper URL type for <code>http://tantek.com/</code>.</p>
-
-<div class="example"><div class="example-title"><span>Example 66</span>: Same hCard representation in JSON-LD</div><pre class="example">{
- "@context":
- {
- "vcard": "http://microformats.org/profile/hcard#vcard",
- "url":
- {
- "@id": "http://microformats.org/profile/hcard#url",
- "@type": "@id"
- },
- "fn": "http://microformats.org/profile/hcard#fn"
- },
- "@type": "vcard",
- "url": "http://tantek.com/",
- "fn": "Tantek Çelik"
-}</pre></div>
-
-</section>
-
-<section id="microdata">
-<h3><span class="secno">D.4 </span>Microdata</h3>
-
-<p>The [<cite><a class="bibref" href="#bib-MICRODATA">MICRODATA</a></cite>] example below expresses book information as a microdata Work
-item.
-</p>
-
-<div class="example"><div class="example-title"><span>Example 67</span>: HTML fragments that describes a book using microdata</div><pre class="example"><dl itemscope
- itemtype="http://purl.org/vocab/frbr/core#Work"
- itemid="http://purl.oreilly.com/works/45U8QJGZSQKDH8N">
- <dt>Title</dt>
- <dd><cite itemprop="http://purl.org/dc/terms/title">Just a Geek</cite></dd>
- <dt>By</dt>
- <dd><span itemprop="http://purl.org/dc/terms/creator">Wil Wheaton</span></dd>
- <dt>Format</dt>
- <dd itemprop="http://purl.org/vocab/frbr/core#realization"
- itemscope
- itemtype="http://purl.org/vocab/frbr/core#Expression"
- itemid="http://purl.oreilly.com/products/9780596007683.BOOK">
- <link itemprop="http://purl.org/dc/terms/type" href="http://purl.oreilly.com/product-types/BOOK">
- Print
- </dd>
- <dd itemprop="http://purl.org/vocab/frbr/core#realization"
- itemscope
- itemtype="http://purl.org/vocab/frbr/core#Expression"
- itemid="http://purl.oreilly.com/products/9780596802189.EBOOK">
- <link itemprop="http://purl.org/dc/terms/type" href="http://purl.oreilly.com/product-types/EBOOK">
- Ebook
- </dd>
-</dl></pre></div>
-
-<p>Note that the JSON-LD representation of the Microdata information stays
-true to the desires of the Microdata community to avoid contexts and
-instead refer to items by their full <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</p>
-
-<div class="example"><div class="example-title"><span>Example 68</span>: Same book description in JSON-LD (avoiding contexts)</div><pre class="example">[
- {
- "@id": "http://purl.oreilly.com/works/45U8QJGZSQKDH8N",
- "@type": "http://purl.org/vocab/frbr/core#Work",
- "http://purl.org/dc/terms/title": "Just a Geek",
- "http://purl.org/dc/terms/creator": "Whil Wheaton",
- "http://purl.org/vocab/frbr/core#realization":
- [
- "http://purl.oreilly.com/products/9780596007683.BOOK",
- "http://purl.oreilly.com/products/9780596802189.EBOOK"
- ]
- },
- {
- "@id": "http://purl.oreilly.com/products/9780596007683.BOOK",
- "@type": "http://purl.org/vocab/frbr/core#Expression",
- "http://purl.org/dc/terms/type": "http://purl.oreilly.com/product-types/BOOK"
- },
- {
- "@id": "http://purl.oreilly.com/products/9780596802189.EBOOK",
- "@type": "http://purl.org/vocab/frbr/core#Expression",
- "http://purl.org/dc/terms/type": "http://purl.oreilly.com/product-types/EBOOK"
- }
-]</pre></div>
-</section>
-</section>
-
-<section class="appendix informative" id="iana-considerations">
-<!--OddPage--><h2><span class="secno">E. </span>IANA Considerations</h2><p><em>This section is non-normative.</em></p>
-
-<p>This section is included merely for standards community review and will be
-submitted to the Internet Engineering Steering Group if this specification
-becomes a W3C Recommendation.</p>
-
-<h2 id="application-ld-json">application/ld+json</h2>
-<dl>
- <dt>Type name:</dt>
- <dd>application</dd>
- <dt>Subtype name:</dt>
- <dd>ld+json</dd>
- <dt>Required parameters:</dt>
- <dd>None</dd>
- <dt>Optional parameters:</dt>
- <dd>
- <dl>
- <dt><code>profile</code></dt>
- <dd>A whitespace-separated list of IRIs identifying specific constraints
- or conventions that apply to a JSON-LD document. A profile <em class="rfc2119" title="must not">must not</em> change
- the semantics of the resource representation. The <code>profile</code>
- parameter <em class="rfc2119" title="may">may</em> also be used by clients to express their preferences in the
- content negotiation process. It is <em class="rfc2119" title="recommended">recommended</em> that profile IRIs are
- dereferenceable and provide useful documentation at that <abbr title="Internationalized Resource Identifier">IRI</abbr>. This
- specification defines four values for the <code>profile</code> parameter.
- To request or specify Expanded JSON-LD document form, the
- <code>http://www.w3.org/ns/json-ld#expanded</code> URL <em class="rfc2119" title="should">should</em> be used.
- To request or specify Expanded, Flattened JSON-LD document form, the
- <code>http://www.w3.org/ns/json-ld#expanded-flattened</code> URL <em class="rfc2119" title="should">should</em>
- be used.
- To request or specify Compacted JSON-LD document form, the
- <code>http://www.w3.org/ns/json-ld#compacted</code> URL <em class="rfc2119" title="should">should</em> be used.
- To request or specify Compacted, Flattened JSON-LD document form, the
- <code>http://www.w3.org/ns/json-ld#compacted-flattened</code> URL
- <em class="rfc2119" title="should">should</em> be used.
- </dd>
- </dl>
- </dd>
- <dt>Encoding considerations:</dt>
- <dd>The same as the <code>application/json</code> MIME media type.</dd>
- <dt>Security considerations:</dt>
- <dd>Since JSON-LD is intended to be a pure data exchange format for
- directed graphs, the serialization <em class="rfc2119" title="should not">should not</em> be passed through a
- code execution mechanism such as JavaScript's <code>eval()</code>
- function. It is <em class="rfc2119" title="recommended">recommended</em> that a conforming parser does not attempt to
- directly evaluate the JSON-LD serialization and instead purely parse the
- input into a language-native data structure. <br>
- JSON-LD contexts that are loaded from the Web over non-secure connections,
- such as HTTP, run the risk of modifying the JSON-LD
- <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a> in a way that could compromise security. It
- is advised that any application that depends on a remote context for mission
- critical purposes vet and cache the remote context before allowing the
- system to use it.</dd>
- <dt>Interoperability considerations:</dt>
- <dd>Not Applicable</dd>
- <dt>Published specification:</dt>
- <dd>The <a href="http://json-ld.org/spec/latest/">JSON-LD</a> specification.</dd>
- <dt>Applications that use this media type:</dt>
- <dd>Any programming environment that requires the exchange of
- directed graphs. Implementations of JSON-LD have been created for
- JavaScript, Python, Ruby, PHP, and C++.
- </dd>
- <dt>Additional information:</dt>
- <dd>
- <dl>
- <dt>Magic number(s):</dt>
- <dd>Not Applicable</dd>
- <dt>File extension(s):</dt>
- <dd>.jsonld</dd>
- <dt>Macintosh file type code(s):</dt>
- <dd>TEXT</dd>
- </dl>
- </dd>
- <dt>Person & email address to contact for further information:</dt>
- <dd>Manu Sporny <msporny@digitalbazaar.com></dd>
- <dt>Intended usage:</dt>
- <dd>Common</dd>
- <dt>Restrictions on usage:</dt>
- <dd>None</dd>
- <dt>Author(s):</dt>
- <dd>Manu Sporny, Dave Longley, Gregg Kellogg, Markus Lanthaler, Niklas Lindström</dd>
- <dt>Change controller:</dt>
- <dd>W3C</dd>
-</dl>
-
-<p>Fragment identifiers used with <a href="#application-ld-json">application/ld+json</a>
- resources <em class="rfc2119" title="may">may</em> identify a node in a <a class="tref internalDFN" title="json-ld_graph" href="#dfn-json-ld_graph">JSON-LD graph</a> expressed in
- the resource. This idiom, which is also used in RDF [<cite><a class="bibref" href="#bib-RDF-CONCEPTS">RDF-CONCEPTS</a></cite>], gives a
- simple way to "mint" new, document-local IRIs to label nodes and therefore contributes
- considerably to the expressive power of JSON-LD.</p>
-
-</section>
-
-<section class="appendix informative" id="acknowledgements">
- <!--OddPage--><h2><span class="secno">F. </span>Acknowledgements</h2><p><em>This section is non-normative.</em></p>
-
- <p>The authors would like to extend a deep appreciation and the most sincere
- thanks to Mark Birbeck, who contributed foundational concepts
- to JSON-LD via his work on RDFj. JSON-LD uses a number of core concepts
- introduced in RDFj, such as the context as a mechanism to provide an
- environment for interpreting JSON data. Mark had also been very involved in
- the work on RDFa as well. RDFj built upon that work. JSON-LD exists
- because of the work and ideas he started nearly a decade ago in 2004.</p>
-
- <p>A large amount of thanks goes out to the JSON-LD Community Group
- participants who worked through many of the technical issues on the mailing
- list and the weekly telecons - of special mention are François Daoust,
- Stéphane Corlosquet, Lin Clark, and Zdenko 'Denny' Vrandečić.</p>
-
- <p>The work of David I. Lehn and Mike Johnson are appreciated for
- reviewing, and performing several early implementations
- of the specification. Thanks also to Ian Davis for this work on RDF/JSON.</p>
-
- <p>Thanks to the following individuals, in order of their first name, for
- their input on the specification: Adrian Walker, Alexandre Passant, Andy Seaborne, Ben Adida, Blaine Cook, Bradley Allen, Brian Peterson, Bryan Thompson, Conal Tuohy, Dan Brickley, Danny Ayers, Daniel Leja, Dave Reynolds, David I. Lehn, David Wood, Dean Landolt, Ed Summers, elf Pavlik, Eric Prud'hommeaux, Fabian Christ, Jon A. Frost, Gavin Carothers, Glenn McDonald, Guus Schreiber, Henri Bergius, Jose María Alvarez Rodríguez, Ivan Herman, Jack Moffitt, Josh Mandel, KANZAKI Masahide, Kingsley Idehen, Kuno Woudt, Larry Garfield, Mark Baker, Mark MacGillivray, Marko Rodriguez, Melvin Carvalho, Nathan Rixham, Olivier Grisel, Paolo Ciccarese, Pat Hayes, Patrick Logan, Pelle Braendgaard, Peter Williams, Pierre-Antoine Champin, Richard Cyganiak, Roy T. Fielding, Sandro Hawke, Srecko Joksimovic, Stephane Fellah, Steve Harris, Ted Thibodeau Jr., Thomas Steiner, Tim Bray, Tom Morris, Tristan King, Sergio Fernández, Werner Wilms, and William Waites</p>
-</section>
-
-
-
-<section id="references" class="appendix" typeof="bibo:Chapter" resource="#references" rel="bibo:chapter"><!--OddPage--><h2><span class="secno">G. </span>References</h2><section id="normative-references" typeof="bibo:Chapter" resource="#normative-references" rel="bibo:chapter"><h3><span class="secno">G.1 </span>Normative references</h3><dl class="bibliography" about=""><dt id="bib-BCP47">[BCP47]</dt><dd rel="dcterms:requires">A. Phillips; M. Davis. <a href="http://tools.ietf.org/html/bcp47"><cite>Tags for Identifying Languages</cite></a> September 2009. IETF Best Current Practice. URL: <a href="http://tools.ietf.org/html/bcp47">http://tools.ietf.org/html/bcp47</a>
-</dd><dt id="bib-RDF-CONCEPTS">[RDF-CONCEPTS]</dt><dd rel="dcterms:requires">Richard Cyganiak, David Wood, Editors. <cite><a href="http://www.w3.org/TR/2013/WD-rdf11-concepts-20130115/">RDF 1.1 Concepts and Abstract Syntax.</a></cite> 15 January 2013. W3C Working Draft (work in progress). URL: <a href="http://www.w3.org/TR/2013/WD-rdf11-concepts-20130115/">http://www.w3.org/TR/2013/WD-rdf11-concepts-20130115/</a>
-</dd><dt id="bib-RFC2119">[RFC2119]</dt><dd rel="dcterms:requires">S. Bradner. <a href="http://www.ietf.org/rfc/rfc2119.txt"><cite>Key words for use in RFCs to Indicate Requirement Levels.</cite></a> March 1997. Internet RFC 2119. URL: <a href="http://www.ietf.org/rfc/rfc2119.txt">http://www.ietf.org/rfc/rfc2119.txt</a>
-</dd><dt id="bib-RFC3987">[RFC3987]</dt><dd rel="dcterms:requires">M. Dürst; M. Suignard. <a href="http://www.ietf.org/rfc/rfc3987.txt"><cite>Internationalized Resource Identifiers (IRIs).</cite></a> January 2005. Internet RFC 3987. URL: <a href="http://www.ietf.org/rfc/rfc3987.txt">http://www.ietf.org/rfc/rfc3987.txt</a>
-</dd><dt id="bib-RFC4627">[RFC4627]</dt><dd rel="dcterms:requires">D. Crockford. <a href="http://www.ietf.org/rfc/rfc4627.txt"><cite>The application/json Media Type for JavaScript Object Notation (JSON)</cite></a> July 2006. Internet RFC 4627. URL: <a href="http://www.ietf.org/rfc/rfc4627.txt">http://www.ietf.org/rfc/rfc4627.txt</a>
-</dd><dt id="bib-RFC5988">[RFC5988]</dt><dd rel="dcterms:requires">M. Nottingham, Editor. <cite><a href="http://tools.ietf.org/rfc/rfc5988">Web Linking</a>.</cite> October 2010. Internet RFC 5988. URL: <a href="http://tools.ietf.org/rfc/rfc5988.txt">http://tools.ietf.org/rfc/rfc5988.txt</a>
-</dd></dl></section><section id="informative-references" typeof="bibo:Chapter" resource="#informative-references" rel="bibo:chapter"><h3><span class="secno">G.2 </span>Informative references</h3><dl class="bibliography" about=""><dt id="bib-JSON-LD-API">[JSON-LD-API]</dt><dd rel="dcterms:references">Markus Lanthaler, Gregg Kellogg, Manu Sporny, Editors. <cite><a href="http://json-ld.org/spec/latest/json-ld-api/">JSON-LD 1.0 Processing Algorithms and API</a>.</cite> W3C Editor's Draft (work in progress). URL: <a href="http://json-ld.org/spec/latest/json-ld-api/">http://json-ld.org/spec/latest/json-ld-api/</a>
-</dd><dt id="bib-MICRODATA">[MICRODATA]</dt><dd rel="dcterms:references">Ian Hickson, Editor. <cite><a href="http://www.w3.org/TR/2012/WD-microdata-20120329/">HTML Microdata</a>.</cite> 29 March 2012. W3C Working Draft (work in progress). URL: <a href="http://www.w3.org/TR/2012/WD-microdata-20120329/">http://www.w3.org/TR/2012/WD-microdata-20120329/</a>
-</dd><dt id="bib-MICROFORMATS">[MICROFORMATS]</dt><dd rel="dcterms:references"><a href="http://microformats.org"><cite>Microformats</cite></a>. URL: <a href="http://microformats.org">http://microformats.org</a>
-</dd><dt id="bib-RDF-SCHEMA">[RDF-SCHEMA]</dt><dd rel="dcterms:references">Dan Brickley; Ramanathan V. Guha. <a href="http://www.w3.org/TR/2004/REC-rdf-schema-20040210"><cite>RDF Vocabulary Description Language 1.0: RDF Schema.</cite></a> 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-rdf-schema-20040210">http://www.w3.org/TR/2004/REC-rdf-schema-20040210</a>
-</dd><dt id="bib-RDFA-CORE">[RDFA-CORE]</dt><dd rel="dcterms:references">Shane McCarron; et al. <a href="http://www.w3.org/TR/2012/REC-rdfa-core-20120607/"><cite>RDFa Core 1.1: Syntax and processing rules for embedding RDF through attributes.</cite></a> 7 June 2012. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2012/REC-rdfa-core-20120607/">http://www.w3.org/TR/2012/REC-rdfa-core-20120607/</a>
-</dd><dt id="bib-TURTLE-TR">[TURTLE-TR]</dt><dd rel="dcterms:references">Eric Prud'hommeaux, Gavin Carothers, Editors. <cite><a href="http://www.w3.org/TR/2011/WD-turtle-20110809/">Turtle: Terse RDF Triple Language.</a></cite> 09 August 2011. W3C Working Draft (work in progress). URL: <a href="http://www.w3.org/TR/2011/WD-turtle-20110809/">http://www.w3.org/TR/2011/WD-turtle-20110809/</a>
-</dd></dl></section></section></body></html>
Binary file spec/FCGS/json-ld/20130202/linked-data-graph.png has changed