Remove the 20130822 CR drafts - that plan didn't work out :-)
authorMarkus Lanthaler <mark_lanthaler@gmx.net>
Fri, 06 Sep 2013 11:07:18 +0200
changeset 1983 fe930b147544
parent 1982 7ac2ac2190bb
child 1984 5393a779d3ab
Remove the 20130822 CR drafts - that plan didn't work out :-)
spec/CR/json-ld-api/20130822/diff-20130516.html
spec/CR/json-ld-api/20130822/index.html
spec/CR/json-ld/20130822/diff-20130411.html
spec/CR/json-ld/20130822/index.html
spec/CR/json-ld/20130822/linked-data-graph.png
--- a/spec/CR/json-ld-api/20130822/diff-20130516.html	Thu Sep 05 22:36:04 2013 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36829 +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 Processing Algorithms and API</title>
-<meta http-equiv="content-type" content="text/html; charset=UTF-8">
-<style type="text/css">
-  .diff {
-    font-weight:bold; color:#0a3;
-  }
-  .error a {
-    color:  #ff4500;
-    border-bottom:  1px dotted #ff4500;
-    text-decoration: none;
-  }
-  .atrisk-head {
-    font-style: italic;
-  }
-  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, ".") ") ";
-  }
-</style>
-<style>
-/* --- 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;
-}
-
-/* --- 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: #2b2; }
-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: 1em 1.2em 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><style>/* --- WEB IDL --- */
-pre.idl {
-    border-top: 1px solid #90b8de;
-    border-bottom: 1px solid #90b8de;
-    padding:    1em;
-    line-height:    120%;
-}
-
-pre.idl::before {
-    content:    "WebIDL";
-    display:    block;
-    width:      150px;
-    background: #90b8de;
-    color:  #fff;
-    font-family:    initial;
-    padding:    3px;
-    font-weight:    bold;
-    margin: -1em 0 1em -1em;
-}
-
-.idlType {
-    color:  #ff4500;
-    font-weight:    bold;
-    text-decoration:    none;
-}
-
-/*.idlModule*/
-/*.idlModuleID*/
-/*.idlInterface*/
-.idlInterfaceID, .idlDictionaryID, .idlCallbackID, .idlEnumID {
-    font-weight:    bold;
-    color:  #005a9c;
-}
-a.idlEnumItem {
-    color:  #000;
-    border-bottom:  1px dotted #ccc;
-    text-decoration: none;
-}
-
-.idlSuperclass {
-    font-style: italic;
-    color:  #005a9c;
-}
-
-/*.idlAttribute*/
-.idlAttrType, .idlFieldType, .idlMemberType {
-    color:  #005a9c;
-}
-.idlAttrName, .idlFieldName, .idlMemberName {
-    color:  #ff4500;
-}
-.idlAttrName a, .idlFieldName a, .idlMemberName a {
-    color:  #ff4500;
-    border-bottom:  1px dotted #ff4500;
-    text-decoration: none;
-}
-
-/*.idlMethod*/
-.idlMethType, .idlCallbackType {
-    color:  #005a9c;
-}
-.idlMethName {
-    color:  #ff4500;
-}
-.idlMethName a {
-    color:  #ff4500;
-    border-bottom:  1px dotted #ff4500;
-    text-decoration: none;
-}
-
-/*.idlCtor*/
-.idlCtorName {
-    color:  #ff4500;
-}
-.idlCtorName a {
-    color:  #ff4500;
-    border-bottom:  1px dotted #ff4500;
-    text-decoration: none;
-}
-
-/*.idlParam*/
-.idlParamType {
-    color:  #005a9c;
-}
-.idlParamName, .idlDefaultValue {
-    font-style: italic;
-}
-
-.extAttr {
-    color:  #666;
-}
-
-/*.idlSectionComment*/
-.idlSectionComment {
-    color: gray;
-}
-
-/*.idlConst*/
-.idlConstType {
-    color:  #005a9c;
-}
-.idlConstName {
-    color:  #ff4500;
-}
-.idlConstName a {
-    color:  #ff4500;
-    border-bottom:  1px dotted #ff4500;
-    text-decoration: none;
-}
-
-/*.idlException*/
-.idlExceptionID {
-    font-weight:    bold;
-    color:  #c00;
-}
-
-.idlTypedefID, .idlTypedefType {
-    color:  #005a9c;
-}
-
-.idlRaises, .idlRaises a.idlType, .idlRaises a.idlType code, .excName a, .excName a code {
-    color:  #c00;
-    font-weight:    normal;
-}
-
-.excName a {
-    font-family:    monospace;
-}
-
-.idlRaises a.idlType, .excName a.idlType {
-    border-bottom:  1px dotted #c00;
-}
-
-.excGetSetTrue, .excGetSetFalse, .prmNullTrue, .prmNullFalse, .prmOptTrue, .prmOptFalse {
-    width:  45px;
-    text-align: center;
-}
-.excGetSetTrue, .prmNullTrue, .prmOptTrue { color:  #0c0; }
-.excGetSetFalse, .prmNullFalse, .prmOptFalse { color:  #c00; }
-
-.idlImplements a {
-    font-weight:    bold;
-}
-
-dl.attributes, dl.methods, dl.constants, dl.constructors, dl.fields, dl.dictionary-members {
-    margin-left:    2em;
-}
-
-.attributes dt, .methods dt, .constants dt, .constructors dt, .fields dt, .dictionary-members dt {
-    font-weight:    normal;
-}
-
-.attributes dt code, .methods dt code, .constants dt code, .constructors dt code, .fields dt code, .dictionary-members dt code {
-    font-weight:    bold;
-    color:  #000;
-    font-family:    monospace;
-}
-
-.attributes dt code, .fields dt code, .dictionary-members dt code {
-    background:  #ffffd2;
-}
-
-.attributes dt .idlAttrType code, .fields dt .idlFieldType code, .dictionary-members dt .idlMemberType code {
-    color:  #005a9c;
-    background:  transparent;
-    font-family:    inherit;
-    font-weight:    normal;
-    font-style: italic;
-}
-
-.methods dt code {
-    background:  #d9e6f8;
-}
-
-.constants dt code {
-    background:  #ddffd2;
-}
-
-.constructors dt code {
-    background:  #cfc;
-}
-
-.attributes dd, .methods dd, .constants dd, .constructors dd, .fields dd, .dictionary-members dd {
-    margin-bottom:  1em;
-}
-
-table.parameters, table.exceptions {
-    border-spacing: 0;
-    border-collapse:    collapse;
-    margin: 0.5em 0;
-    width:  100%;
-}
-table.parameters { border-bottom:  1px solid #90b8de; }
-table.exceptions { border-bottom:  1px solid #deb890; }
-
-.parameters th, .exceptions th {
-    color:  #fff;
-    padding:    3px 5px;
-    text-align: left;
-    font-family:    initial;
-    font-weight:    normal;
-    text-shadow:    #666 1px 1px 0;
-}
-.parameters th { background: #90b8de; }
-.exceptions th { background: #deb890; }
-
-.parameters td, .exceptions td {
-    padding:    3px 10px;
-    border-top: 1px solid #ddd;
-    vertical-align: top;
-}
-
-.parameters tr:first-child td, .exceptions tr:first-child td {
-    border-top: none;
-}
-
-.parameters td.prmName, .exceptions td.excName, .exceptions td.excCodeName {
-    width:  100px;
-}
-
-.parameters td.prmType {
-    width:  120px;
-}
-
-table.exceptions table {
-    border-spacing: 0;
-    border-collapse:    collapse;
-    width:  100%;
-}
-</style><link rel="stylesheet" href="https://www.w3.org/StyleSheets/TR/W3C-CR"><!--[if lt IE 9]><script src='https://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 class="h-entry">
-<div class="head">
-<p>
-<a href="http://www.w3.org/">
-<img width="72" height="48" src="https://www.w3.org/Icons/w3c_home" alt="W3C">
-</a>
-</p>
-<h1 class="title p-name" id="title">
-JSON-LD
-1.0
-Processing
-Algorithms
-and
-API
-</h1>
-<h2 id="w3c-candidate-recommendation-22-august-2013">
-<abbr title="World Wide Web Consortium">
-W3C
-</abbr>
-<del class="diff-old">Last
-Call
-Working
-Draft
-16
-May
-</del>
-<ins class="diff-chg">Candidate
-Recommendation
-</ins><time class="dt-published" datetime="2013-08-22"><ins class="diff-chg">
-22
-August
-</ins>
-2013
-</time>
-</h2>
-<dl>
-<dt>
-This
-version:
-</dt>
-<dd>
-<del class="diff-old">http://www.w3.org/TR/2013/WD-json-ld-api-20130516/
-</del>
-<a class="u-url" href="http://www.w3.org/TR/2013/CR-json-ld-api-20130822/">
-<ins class="diff-chg">http://www.w3.org/TR/2013/CR-json-ld-api-20130822/
-</ins>
-</a>
-</dd>
-<dt>
-Latest
-published
-version:
-</dt>
-<dd>
-<a href="http://www.w3.org/TR/json-ld-api/">
-http://www.w3.org/TR/json-ld-api/
-</a>
-</dd>
-<dt>
-Latest
-editor's
-draft:
-</dt>
-<dd>
-<a href="http://json-ld.org/spec/latest/json-ld-api/index.html">
-http://json-ld.org/spec/latest/json-ld-api/index.html
-</a>
-</dd>
-<dt>
-Test
-suite:
-</dt>
-<dd>
-<a href="http://www.w3.org/2013/json-ld-tests/">
-http://www.w3.org/2013/json-ld-tests/
-</a>
-</dd>
-<dt>
-Previous
-version:
-</dt>
-<dd>
-<del class="diff-old">http://www.w3.org/TR/2013/WD-json-ld-api-20130411/
-</del>
-<a href="http://www.w3.org/TR/2013/WD-json-ld-api-20130516/">
-<ins class="diff-chg">http://www.w3.org/TR/2013/WD-json-ld-api-20130516/
-</ins>
-</a>
-</dd>
-<dt>
-Editors:
-</dt>
-<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" class="p-org org h-org h-card" href="http://www.tugraz.at/">
-Graz
-University
-of
-Technology
-</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" class="p-org org h-org h-card" 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="Manu Sporny" href="http://manu.sporny.org/">
-Manu
-Sporny
-</a>,
-<a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://digitalbazaar.com/">
-Digital
-Bazaar
-</a>
-</span>
-</dd>
-<dt>
-Authors:
-</dt>
-<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" class="p-org org h-org h-card" 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" class="p-org org h-org h-card" 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" class="p-org org h-org h-card" 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="Manu Sporny" href="http://digitalbazaar.com/">
-Manu
-Sporny
-</a>,
-<a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://digitalbazaar.com/">
-Digital
-Bazaar
-</a>
-</span>
-</dd>
-</dl>
-<p>
-This
-document
-is
-also
-available
-in
-this
-non-normative
-format:
-<a rel="alternate" href="diff-20130516.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
-<a href="http://www.w3.org/">
-<abbr title="World Wide Web Consortium">
-W3C
-</abbr>
-</a>
-<sup>

-</sup>
-(
-<a href="http://www.csail.mit.edu/">
-<abbr title="Massachusetts Institute of Technology">
-MIT
-</abbr>
-</a>,
-<a href="http://www.ercim.eu/">
-<abbr title="European Research Consortium for Informatics and Mathematics">
-ERCIM
-</abbr>
-</a>,
-<a href="http://www.keio.ac.jp/">
-Keio
-</a>,
-<a href="http://ev.buaa.edu.cn/">
-Beihang
-</a>
-),
-All
-Rights
-Reserved.
-<abbr title="World Wide Web Consortium">
-W3C
-</abbr>
-<a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">
-liability
-</a>,
-<a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">
-trademark
-</a>
-and
-<a href="http://www.w3.org/Consortium/Legal/copyright-documents">
-document
-use
-</a>
-rules
-apply.
-</p>
-<hr>
-</div>
-<section id="abstract" class="introductory" property="dcterms:abstract" datatype="" typeof="bibo:Chapter" resource="#abstract" rel="bibo:chapter">
-<h2>
-Abstract
-</h2>
-<p>
-This
-specification
-defines
-an
-Application
-Programming
-Interface
-(API)
-and
-a
-set
-of
-algorithms
-for
-programmatic
-transformations
-of
-JSON-LD
-documents.
-Restructuring
-data
-according
-<ins class="diff-new">to
-</ins>
-the
-defined
-transformations
-often
-dramatically
-simplifies
-its
-usage.
-</p>
-</section>
-<section id="sotd" class="introductory" typeof="bibo:Chapter" resource="#sotd" rel="bibo:chapter">
-<h2>
-Status
-of
-This
-Document
-</h2>
-<p>
-<em>
-This
-section
-describes
-the
-status
-of
-this
-document
-at
-the
-time
-of
-its
-publication.
-Other
-documents
-may
-supersede
-this
-document.
-A
-list
-of
-current
-<abbr title="World Wide Web Consortium">
-W3C
-</abbr>
-publications
-and
-the
-latest
-revision
-of
-this
-technical
-report
-can
-be
-found
-in
-the
-<a href="http://www.w3.org/TR/">
-<abbr title="World Wide Web Consortium">
-W3C
-</abbr>
-technical
-reports
-index
-</a>
-at
-http://www.w3.org/TR/.
-</em>
-</p>
-<p>
-This
-document
-has
-been
-under
-development
-for
-over
-<del class="diff-old">34
-</del>
-<ins class="diff-chg">30
-</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
-publication
-along
-the
-Recommendation
-track.
-The
-specification
-has
-undergone
-significant
-development,
-review,
-and
-changes
-during
-the
-course
-of
-the
-last
-<del class="diff-old">34
-</del>
-<ins class="diff-chg">30
-</ins>
-months.
-</p>
-<p>
-There
-are
-several
-independent
-<a href="http://json-ld.org/test-suite/reports/">
-interoperable
-implementations
-</a>
-of
-this
-specification.
-There
-is
-a
-fairly
-complete
-test
-suite
-[
-<cite>
-<a class="bibref" href="#bib-JSON-LD-TESTS">
-JSON-LD-TESTS
-</a>
-</cite>
-]
-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
-there
-will
-be
-continuous
-development
-on
-implementations,
-the
-test
-suite,
-and
-the
-live
-editor,
-they
-are
-believed
-to
-be
-mature
-enough
-to
-be
-integrated
-into
-a
-non-production
-system
-at
-this
-point
-in
-time.
-There
-is
-an
-expectation
-that
-they
-could
-be
-used
-in
-a
-production
-system
-within
-the
-next
-three
-months.
-</p>
-<p>
-<del class="diff-old">There
-are
-a
-number
-of
-ways
-that
-one
-may
-participate
-in
-the
-development
-of
-this
-specification:
-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:
-public-rdf-comments@w3.org
-Ad-hoc
-technical
-discussion
-primarily
-occurs
-on
-the
-public
-community
-mailing
-list:
-public-linked-json@w3.org
-Public
-JSON-LD
-Community
-Group
-teleconferences
-are
-held
-on
-Tuesdays
-at
-1400UTC
-every
-week.
-Participation
-is
-open
-to
-the
-public.
-RDF
-Working
-Group
-teleconferences
-are
-held
-on
-Wednesdays
-at
-1500UTC
-every
-week.
-Participation
-is
-limited
-to
-RDF
-Working
-Group
-members.
-Specification
-bugs
-and
-issues
-should
-be
-reported
-in
-the
-issue
-tracker
-if
-you
-do
-not
-want
-to
-send
-an
-email
-to
-the
-public-rdf-comments
-mailing
-list.
-Source
-code
-for
-the
-specification
-can
-be
-found
-on
-Github.
-The
-#json-ld
-IRC
-channel
-is
-available
-for
-real-time
-discussion
-on
-irc.freenode.net.
-This
-is
-a
-second
-Last
-Call
-Working
-Draft
-for
-this
-document.
-</del>
-Changes
-since
-the
-<a href="http://www.w3.org/TR/2013/WD-json-ld-api-20130411/">
-<del class="diff-old">11
-April
-2013
-</del>
-<ins class="diff-chg">11&nbsp;April&nbsp;2013
-</ins>
-Last
-Call
-Working
-Draft
-</a>:
-</p>
-<ul>
-<li>
-Use
-of
-DOM
-Futures
-instead
-of
-callbacks
-in
-the
-Application
-Programming
-Interface
-</li>
-<li>
-Processing
-of
-terms
-that
-are
-redefined
-to
-themselves
-without
-raising
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.cyclic-IRI-mapping">
-cyclic
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-mapping
-</a>
-</code>
-error
-</li>
-<li>
-Raise
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid-IRI-mapping">
-invalid
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-mapping
-</a>
-</code>
-error
-if
-relative
-URLs
-are
-used
-in
-term
-definitions
-</li>
-<li>
-Support
-<ins class="diff-new">relative
-IRIs
-in
-</ins><code><ins class="diff-new">
-@base
-</ins></code></li><li><ins class="diff-new">
-Remove
-default
-value
-of
-</ins><code class="idlMemberName"><a href="#idl-def-JsonLdOptions"><ins class="diff-new">
-JsonLdOption's
-</ins></a></code><code class="idlMemberName"><a href="#widl-JsonLdOptions-base"><ins class="diff-new">
-base
-</ins></a></code><ins class="diff-new">
-member
-</ins></li><li><ins class="diff-new">
-Support
-</ins>
-lists
-of
-lists
-when
-<del class="diff-old">converting
-from
-</del>
-<ins class="diff-chg">serializing
-</ins>
-RDF
-<del class="diff-old">to
-</del>
-<ins class="diff-chg">as
-</ins>
-JSON-LD
-</li>
-<li>
-Support
-for
-relative
-URLs
-in
-<code>
-@base
-</code>
-and
-documents
-that
-do
-not
-have
-a
-base
-<del class="diff-old">value.
-</del>
-<ins class="diff-chg">value
-</ins></li></ul><p><ins class="diff-chg">
-Changes
-since
-the
-</ins><a href="http://www.w3.org/TR/2013/WD-json-ld-api-20130516/"><ins class="diff-chg">
-16&nbsp;May&nbsp;2013
-Last
-Call
-Working
-Draft
-</ins></a>:</p><ul><li><ins class="diff-chg">
-Ensure
-determinism
-of
-the
-Deserialize
-JSON-LD
-to
-RDF
-algorithm
-by
-specifying
-the
-processing
-order
-</ins></li><li><ins class="diff-chg">
-Change
-the
-default
-value
-of
-the
-</ins><em><ins class="diff-chg">
-use
-native
-types
-</ins></em><ins class="diff-chg">
-flag
-in
-the
-Serialize
-RDF
-as
-JSON-LD
-algorithm
-to
-</ins><code><ins class="diff-chg">
-false
-</ins></code></li><li><ins class="diff-chg">
-Clarify
-that
-the
-</ins><i><ins class="diff-chg">
-identifier
-map
-</ins></i><ins class="diff-chg">
-and
-the
-</ins><i><ins class="diff-chg">
-counter
-</ins></i><ins class="diff-chg">
-used
-by
-the
-Generate
-Blank
-Node
-Identifier
-algorithm
-are
-reset
-before
-running
-the
-Flattening
-and
-the
-Deserialize
-JSON-LD
-to
-RDF
-algorithms
-</ins></li><li><ins class="diff-chg">
-Raise
-an
-error
-if
-a
-blank
-node
-is
-used
-as
-data
-type
-</ins></li><li><ins class="diff-chg">
-Clarify
-that
-blank
-node
-identifier
-are
-supported
-as
-value
-of
-</ins><code><ins class="diff-chg">
-@vocab
-</ins></code></li><li><ins class="diff-chg">
-When
-generating
-RDF,
-exclude
-</ins><a class="tref internalDFN" title="rdf-triple" href="#dfn-rdf-triple"><ins class="diff-chg">
-triples
-</ins></a><ins class="diff-chg">
-containing
-a
-</ins><a class="tref internalDFN" title="blank-node" href="#dfn-blank-node"><ins class="diff-chg">
-blank
-node
-</ins></a><a class="tref internalDFN" title="rdf-predicate" href="#dfn-rdf-predicate"><ins class="diff-chg">
-predicate
-</ins></a>,<ins class="diff-chg">
-unless
-the
-</ins><i><ins class="diff-chg">
-produce
-generalized
-RDF
-</ins></i><ins class="diff-chg">
-flag
-is
-set;
-discard
-</ins><a class="tref internalDFN" title="rdf-triple" href="#dfn-rdf-triple"><ins class="diff-chg">
-triples
-</ins></a><ins class="diff-chg">
-containing
-relative
-IRIs
-and
-graphs
-with
-a
-relative
-</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
-IRI
-</ins></abbr><ins class="diff-chg">
-as
-graph
-name
-</ins></li><li><ins class="diff-chg">
-Update
-reference
-to
-DOM
-Promises
-(have
-been
-called
-DOM
-Futures)
-</ins></li><li><ins class="diff-chg">
-Fix
-bug
-in
-</ins><a href="#serialize-rdf-as-json-ld-algorithm"><ins class="diff-chg">
-Serialize
-RDF
-to
-JSON-LD
-algorithm
-</ins></a><ins class="diff-chg">
-to
-handle
-lists
-correctly
-</ins></li><li><ins class="diff-chg">
-Support
-processing
-of
-documents
-with
-a
-</ins><code><ins class="diff-chg">
-+json
-</ins></code><ins class="diff-chg">
-media
-type
-as
-defined
-in
-[
-</ins><cite><a class="bibref" href="#bib-RFC6839"><ins class="diff-chg">
-RFC6839
-</ins></a></cite><ins class="diff-chg">
-]
-</ins></li><li><ins class="diff-chg">
-Use
-the
-</ins><a href="#idl-def-LoadDocumentCallback" class="idlType"><code><ins class="diff-chg">
-LoadDocumentCallback
-</ins></code></a><ins class="diff-chg">
-(previously
-</ins><code><ins class="diff-chg">
-LoadContextCallback
-</ins></code><ins class="diff-chg">
-)
-to
-retrieve
-remote
-contexts
-and
-remote
-documents
-</ins></li><li><ins class="diff-chg">
-Allow
-contexts
-to
-be
-passed
-into
-the
-API
-directly.
-Previously
-only
-context
-documents,
-i.e.,
-objects
-having
-a
-</ins><code><ins class="diff-chg">
-@context
-</ins></code><ins class="diff-chg">
-member
-were
-allowed.
-</ins>
-</li>
-</ul>
-<p>
-This
-document
-was
-published
-by
-the
-<a href="http://www.w3.org/2011/rdf-wg/">
-RDF
-Working
-Group
-</a>
-as
-a
-<del class="diff-old">Last
-Call
-Working
-Draft.
-</del>
-<ins class="diff-chg">Candidate
-Recommendation.
-</ins>
-This
-document
-is
-intended
-to
-become
-a
-<abbr title="World Wide Web Consortium">
-W3C
-</abbr>
-Recommendation.
-If
-you
-wish
-to
-make
-comments
-regarding
-this
-document,
-please
-send
-them
-to
-<a href="mailto:public-rdf-comments@w3.org">
-public-rdf-comments@w3.org
-</a>
-(
-<a href="mailto:public-rdf-comments-request@w3.org?subject=subscribe">
-subscribe
-</a>,
-<a href="http://lists.w3.org/Archives/Public/public-rdf-comments/">
-archives
-</a>
-).
-<del class="diff-old">The
-Last
-Call
-period
-ends
-06
-June
-</del>
-<abbr title="World Wide Web Consortium">
-<ins class="diff-chg">W3C
-</ins></abbr><ins class="diff-chg">
-publishes
-a
-Candidate
-Recommendation
-to
-indicate
-that
-the
-document
-is
-believed
-to
-be
-stable
-and
-to
-encourage
-implementation
-by
-the
-developer
-community.
-This
-Candidate
-Recommendation
-is
-expected
-to
-advance
-to
-Proposed
-Recommendation
-no
-earlier
-than
-19
-September
-</ins>
-2013.
-All
-comments
-are
-welcome.
-</p>
-<p>
-Publication
-as
-a
-<del class="diff-old">Last
-Call
-Working
-Draft
-</del>
-<ins class="diff-chg">Candidate
-Recommendation
-</ins>
-does
-not
-imply
-endorsement
-by
-the
-<abbr title="World Wide Web Consortium">
-W3C
-</abbr>
-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.
-</p>
-<p>
-<del class="diff-old">This
-is
-a
-Last
-Call
-Working
-Draft
-and
-thus
-the
-Working
-Group
-has
-determined
-that
-</del>
-<ins class="diff-chg">Before
-</ins>
-this
-<del class="diff-old">document
-has
-satisfied
-</del>
-<ins class="diff-chg">specification
-exits
-Candidate
-Recommendation,
-two
-or
-more
-independent
-implementations
-must
-pass
-each
-test,
-although
-no
-single
-implementation
-must
-pass
-each
-test.
-The
-working
-group
-will
-decide
-when
-</ins>
-the
-<del class="diff-old">relevant
-technical
-requirements
-and
-</del>
-<ins class="diff-chg">test
-suite
-</ins>
-is
-<del class="diff-old">sufficiently
-stable
-</del>
-<ins class="diff-chg">of
-sufficient
-quality
-</ins>
-to
-<del class="diff-old">advance
-through
-</del>
-<ins class="diff-chg">test
-interoperability
-and
-will
-produce
-an
-implementation
-report
-(hosted
-together
-with
-</ins>
-the
-<del class="diff-old">Technical
-Recommendation
-process.
-</del>
-<ins class="diff-chg">test
-suite).
-</ins>
-</p>
-<p>
-This
-document
-was
-produced
-by
-a
-group
-operating
-under
-the
-<a href="http://www.w3.org/Consortium/Patent-Policy-20040205/">
-5
-February
-2004
-<abbr title="World Wide Web Consortium">
-W3C
-</abbr>
-Patent
-Policy
-</a>.
-<abbr title="World Wide Web Consortium">
-W3C
-</abbr>
-maintains
-a
-<a href="http://www.w3.org/2004/01/pp-impl/46168/status" rel="disclosure">
-public
-list
-of
-any
-patent
-disclosures
-</a>
-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
-<a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">
-Essential
-Claim(s)
-</a>
-must
-disclose
-the
-information
-in
-accordance
-with
-<a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">
-section
-6
-of
-the
-<abbr title="World Wide Web Consortium">
-W3C
-</abbr>
-Patent
-Policy
-</a>.
-</p>
-</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>
-</li>
-<li class="tocline">
-<a href="#features" class="tocxref">
-<span class="secno">
-2.
-</span>
-Features
-</a>
-<ul class="toc">
-<li class="tocline">
-<a href="#expansion" class="tocxref">
-<span class="secno">
-2.1
-</span>
-Expansion
-</a>
-</li>
-<li class="tocline">
-<a href="#compaction" class="tocxref">
-<span class="secno">
-2.2
-</span>
-Compaction
-</a>
-</li>
-<li class="tocline">
-<a href="#flattening" class="tocxref">
-<span class="secno">
-2.3
-</span>
-Flattening
-</a>
-</li>
-<li class="tocline">
-<a href="#rdf-serialization-deserialization" class="tocxref">
-<span class="secno">
-2.4
-</span>
-RDF
-<del class="diff-old">Conversion
-</del>
-<ins class="diff-chg">Serialization/Deserialization
-</ins>
-</a>
-</li>
-</ul>
-</li>
-<li class="tocline">
-<a href="#conformance" class="tocxref">
-<span class="secno">
-3.
-</span>
-Conformance
-</a>
-</li>
-<li class="tocline">
-<a href="#general-terminology" class="tocxref">
-<span class="secno">
-4.
-</span>
-General
-Terminology
-</a>
-</li>
-<li class="tocline">
-<a href="#algorithm-terms" class="tocxref">
-<span class="secno">
-5.
-</span>
-Algorithm
-Terms
-</a>
-</li>
-<li class="tocline">
-<a href="#context-processing-algorithms" class="tocxref">
-<span class="secno">
-6.
-</span>
-Context
-Processing
-Algorithms
-</a>
-<ul class="toc">
-<li class="tocline">
-<a href="#context-processing-algorithm" class="tocxref">
-<span class="secno">
-6.1
-</span>
-Context
-Processing
-Algorithm
-</a>
-</li>
-<li class="tocline">
-<a href="#create-term-definition" class="tocxref">
-<span class="secno">
-6.2
-</span>
-Create
-Term
-Definition
-</a>
-</li>
-<li class="tocline">
-<a href="#iri-expansion" class="tocxref">
-<span class="secno">
-6.3
-</span>
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-Expansion
-</a>
-</li>
-</ul>
-</li>
-<li class="tocline">
-<a href="#expansion-algorithms" class="tocxref">
-<span class="secno">
-7.
-</span>
-Expansion
-Algorithms
-</a>
-<ul class="toc">
-<li class="tocline">
-<a href="#expansion-algorithm" class="tocxref">
-<span class="secno">
-7.1
-</span>
-Expansion
-Algorithm
-</a>
-</li>
-<li class="tocline">
-<a href="#value-expansion" class="tocxref">
-<span class="secno">
-7.2
-</span>
-Value
-Expansion
-</a>
-</li>
-</ul>
-</li>
-<li class="tocline">
-<a href="#compaction-algorithms" class="tocxref">
-<span class="secno">
-8.
-</span>
-Compaction
-Algorithms
-</a>
-<ul class="toc">
-<li class="tocline">
-<a href="#compaction-algorithm" class="tocxref">
-<span class="secno">
-8.1
-</span>
-Compaction
-Algorithm
-</a>
-</li>
-<li class="tocline">
-<a href="#inverse-context-creation" class="tocxref">
-<span class="secno">
-8.2
-</span>
-Inverse
-Context
-Creation
-</a>
-</li>
-<li class="tocline">
-<a href="#iri-compaction" class="tocxref">
-<span class="secno">
-8.3
-</span>
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-Compaction
-</a>
-</li>
-<li class="tocline">
-<a href="#term-selection" class="tocxref">
-<span class="secno">
-8.4
-</span>
-Term
-Selection
-</a>
-</li>
-<li class="tocline">
-<a href="#value-compaction" class="tocxref">
-<span class="secno">
-8.5
-</span>
-Value
-Compaction
-</a>
-</li>
-</ul>
-</li>
-<li class="tocline">
-<a href="#flattening-algorithms" class="tocxref">
-<span class="secno">
-9.
-</span>
-Flattening
-Algorithms
-</a>
-<ul class="toc">
-<li class="tocline">
-<a href="#flattening-algorithm" class="tocxref">
-<span class="secno">
-9.1
-</span>
-Flattening
-Algorithm
-</a>
-</li>
-<li class="tocline">
-<a href="#node-map-generation" class="tocxref">
-<span class="secno">
-9.2
-</span>
-Node
-Map
-Generation
-</a>
-</li>
-<li class="tocline">
-<a href="#generate-blank-node-identifier" class="tocxref">
-<span class="secno">
-9.3
-</span>
-Generate
-Blank
-Node
-Identifier
-</a>
-</li>
-</ul>
-</li>
-<li class="tocline">
-<a href="#rdf-serialization-deserialization-algorithms" class="tocxref">
-<span class="secno">
-10.
-</span>
-RDF
-<del class="diff-old">Conversion
-</del>
-<ins class="diff-chg">Serialization/Deserialization
-</ins>
-Algorithms
-</a>
-<ul class="toc">
-<li class="tocline">
-<a href="#deserialize-json-ld-to-rdf-algorithm" class="tocxref">
-<span class="secno">
-10.1
-</span>
-<del class="diff-old">Convert
-</del>
-<ins class="diff-chg">Deserialize
-JSON-LD
-</ins>
-to
-RDF
-<del class="diff-old">Algorithm
-</del>
-<ins class="diff-chg">algorithm
-</ins>
-</a>
-</li>
-<li class="tocline">
-<a href="#object-to-rdf-conversion" class="tocxref">
-<span class="secno">
-10.2
-</span>
-Object
-to
-RDF
-Conversion
-</a>
-</li>
-<li class="tocline">
-<a href="#list-to-rdf-conversion" class="tocxref">
-<span class="secno">
-10.3
-</span>
-List
-to
-RDF
-Conversion
-</a>
-</li>
-<li class="tocline">
-<a href="#serialize-rdf-as-json-ld-algorithm" class="tocxref">
-<span class="secno">
-10.4
-</span>
-<del class="diff-old">Convert
-from
-</del>
-<ins class="diff-chg">Serialize
-</ins>
-RDF
-<ins class="diff-new">as
-JSON-LD
-</ins>
-Algorithm
-</a>
-</li>
-<li class="tocline">
-<a href="#rdf-to-object-conversion" class="tocxref">
-<span class="secno">
-10.5
-</span>
-RDF
-to
-Object
-Conversion
-</a>
-</li>
-<li class="tocline">
-<a href="#data-round-tripping" class="tocxref">
-<span class="secno">
-10.6
-</span>
-Data
-Round
-Tripping
-</a>
-</li>
-</ul>
-</li>
-<li class="tocline">
-<a href="#the-application-programming-interface" class="tocxref">
-<span class="secno">
-11.
-</span>
-The
-Application
-Programming
-Interface
-</a>
-<ul class="toc">
-<li class="tocline">
-<a href="#the-jsonldprocessor-interface" class="tocxref">
-<span class="secno">
-11.1
-</span>
-The
-<span class="formerLink">
-<code>
-JsonLdProcessor
-</code>
-</span>
-Interface
-</a>
-</li>
-<li class="tocline">
-<a href="#the-jsonldoptions-type" class="tocxref">
-<span class="secno">
-11.2
-</span>
-The
-<span class="formerLink">
-<code>
-JsonLdOptions
-</code>
-</span>
-Type
-</a>
-</li>
-<li class="tocline">
-<a href="#remote-document-and-context-retrieval" class="tocxref">
-<span class="secno">
-11.3
-</span>
-Remote
-<ins class="diff-new">Document
-and
-</ins>
-Context
-Retrieval
-</a>
-</li>
-<li class="tocline">
-<a href="#error-handling" class="tocxref">
-<span class="secno">
-11.4
-</span>
-Error
-Handling
-</a>
-</li>
-</ul>
-</li>
-<li class="tocline">
-<a href="#acknowledgements" class="tocxref">
-<span class="secno">
-A.
-</span>
-Acknowledgements
-</a>
-</li>
-<li class="tocline">
-<a href="#references" class="tocxref">
-<span class="secno">
-B.
-</span>
-References
-</a>
-<ul class="toc">
-<li class="tocline">
-<a href="#normative-references" class="tocxref">
-<span class="secno">
-B.1
-</span>
-Normative
-references
-</a>
-</li>
-<li class="tocline">
-<a href="#informative-references" class="tocxref">
-<span class="secno">
-B.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>
-This
-document
-is
-a
-detailed
-specification
-for
-an
-Application
-Programming
-Interface
-for
-the
-JSON-LD
-syntax.
-The
-document
-is
-primarily
-intended
-for
-the
-following
-audiences:
-</p>
-<ul>
-<li>
-Developers
-who
-want
-an
-overview
-of
-the
-JSON-LD
-API.
-</li>
-<li>
-Web
-authors
-and
-developers
-who
-want
-a
-very
-detailed
-view
-of
-how
-a
-<a class="tref internalDFN" title="json-ld-processor" href="#dfn-json-ld-processor">
-JSON-LD
-Processor
-</a>
-or
-a
-<a class="tref internalDFN" title="json-ld-api-implementation" href="#dfn-json-ld-api-implementation">
-JSON-LD
-API
-Implementation
-</a>
-operates.
-</li>
-<li>
-Software
-developers
-who
-want
-to
-implement
-the
-algorithms
-to
-transform
-JSON-LD
-documents.
-</li>
-</ul>
-<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>
-].
-You
-must
-also
-understand
-the
-JSON-LD
-syntax
-defined
-in
-[
-<cite>
-<a class="bibref" href="#bib-JSON-LD">
-JSON-LD
-</a>
-</cite>
-],
-which
-is
-the
-base
-syntax
-used
-by
-all
-of
-the
-algorithms
-in
-this
-document.
-To
-understand
-the
-API
-and
-how
-it
-is
-intended
-to
-operate
-in
-a
-programming
-environment,
-it
-is
-useful
-to
-have
-working
-knowledge
-of
-the
-JavaScript
-programming
-language
-[
-<cite>
-<a class="bibref" href="#bib-ECMA-262">
-ECMA-262
-</a>
-</cite>
-]
-and
-WebIDL
-[
-<cite>
-<a class="bibref" href="#bib-WEBIDL">
-WEBIDL
-</a>
-</cite>
-].
-To
-understand
-how
-JSON-LD
-maps
-to
-RDF,
-it
-is
-helpful
-to
-be
-familiar
-with
-the
-basic
-RDF
-concepts
-[
-<cite>
-<a class="bibref" href="#bib-RDF11-CONCEPTS">
-RDF11-CONCEPTS
-</a>
-</cite>
-].
-</p>
-</section>
-<section class="informative" id="features">
-<h2>
-<span class="secno">
-2.
-</span>
-Features
-</h2>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-The
-JSON-LD
-Syntax
-specification
-[
-<cite>
-<a class="bibref" href="#bib-JSON-LD">
-JSON-LD
-</a>
-</cite>
-]
-defines
-a
-syntax
-to
-express
-Linked
-Data
-in
-JSON.
-Because
-there
-is
-more
-than
-one
-way
-to
-express
-Linked
-Data
-using
-this
-syntax,
-it
-is
-often
-useful
-to
-be
-able
-to
-transform
-JSON-LD
-documents
-so
-that
-they
-may
-be
-more
-easily
-consumed
-by
-specific
-applications.
-</p>
-<p>
-JSON-LD
-uses
-<a class="tref internalDFN" title="context" href="#dfn-context">
-contexts
-</a>
-to
-allow
-Linked
-Data
-to
-be
-expressed
-in
-a
-way
-that
-is
-specifically
-tailored
-to
-a
-particular
-person
-or
-application.
-By
-providing
-a
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>,
-JSON
-data
-can
-be
-expressed
-in
-a
-way
-that
-is
-a
-natural
-fit
-for
-a
-particular
-person
-or
-application
-whilst
-also
-indicating
-how
-the
-data
-should
-be
-understood
-at
-a
-global
-scale.
-In
-order
-for
-people
-or
-applications
-to
-share
-data
-that
-was
-created
-using
-a
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>
-that
-is
-different
-from
-their
-own,
-a
-JSON-LD
-processor
-must
-be
-able
-to
-transform
-a
-document
-from
-one
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>
-to
-another.
-Instead
-of
-requiring
-JSON-LD
-processors
-to
-write
-specific
-code
-for
-every
-imaginable
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>
-switching
-scenario,
-it
-is
-much
-easier
-to
-specify
-a
-single
-algorithm
-that
-can
-remove
-any
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>.
-Similarly,
-another
-algorithm
-can
-be
-specified
-to
-subsequently
-apply
-any
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>.
-These
-two
-algorithms
-represent
-the
-most
-basic
-transformations
-of
-JSON-LD
-documents.
-They
-are
-referred
-to
-as
-<a class="tref internalDFN" title="expansion" href="#dfn-expansion">
-expansion
-</a>
-and
-<a class="tref internalDFN" title="compaction" href="#dfn-compaction">
-compaction
-</a>,
-respectively.
-</p>
-<p>
-There
-are
-four
-major
-types
-of
-transformation
-that
-are
-discussed
-in
-this
-document:
-expansion,
-compaction,
-flattening,
-and
-RDF
-<del class="diff-old">conversion.
-</del>
-<ins class="diff-chg">serialization/deserialization.
-</ins>
-</p>
-<section class="informative" id="expansion">
-<h3>
-<span class="secno">
-2.1
-</span>
-Expansion
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-The
-algorithm
-that
-removes
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>
-is
-called
-<dfn title="expansion" id="dfn-expansion">
-expansion
-</dfn>.
-Before
-performing
-any
-other
-transformations
-on
-a
-JSON-LD
-document,
-it
-is
-easiest
-to
-remove
-any
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>
-from
-it
-and
-to
-make
-data
-structures
-more
-regular.
-</p>
-<p>
-To
-get
-an
-idea
-of
-how
-context
-and
-data
-structuring
-affects
-the
-same
-data,
-here
-is
-an
-example
-of
-JSON-LD
-that
-uses
-only
-<a class="tref internalDFN" title="term" href="#dfn-term">
-terms
-</a>
-and
-is
-fairly
-compact:
-</p>
-    <div class="example"><div class="example-title"><span>Example 1</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"
-    }
-  },
-  "@id": "http://me.markus-lanthaler.com/",
-  "name": "Markus Lanthaler",
-  "homepage": "http://www.markus-lanthaler.com/"
-}
-</pre>
-</div>
-<p>
-The
-next
-input
-example
-uses
-one
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-to
-express
-a
-property
-and
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-to
-encapsulate
-another,
-but
-leaves
-the
-rest
-of
-the
-information
-untouched.
-</p>
-    <div class="example"><div class="example-title"><span>Example 2</span>: Sample JSON-LD document using an IRI instead of a term to express a property</div><pre class="example">{
-  "@context": {
-    <span class="diff">"website": "http://xmlns.com/foaf/0.1/homepage"</span>
-  },
-  "@id": "http://me.markus-lanthaler.com/",
-  "<span class="diff">http://xmlns.com/foaf/0.1/name</span>": "Markus Lanthaler",
-  <span class="diff">"website"</span>: <span class="diff">{ "@id":</span> "http://www.markus-lanthaler.com/" <span class="diff">}</span>
-}
-</pre>
-</div>
-<p>
-Note
-that
-both
-inputs
-are
-valid
-JSON-LD
-and
-both
-represent
-the
-same
-information.
-The
-difference
-is
-in
-their
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>
-information
-and
-in
-the
-data
-structures
-used.
-A
-JSON-LD
-processor
-can
-remove
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>
-and
-ensure
-that
-the
-data
-is
-more
-regular
-by
-employing
-<a class="tref internalDFN" title="expansion" href="#dfn-expansion">
-expansion
-</a>.
-</p>
-<p>
-<a class="tref internalDFN" title="expansion" href="#dfn-expansion">
-Expansion
-</a>
-has
-two
-important
-goals:
-removing
-any
-contextual
-information
-from
-the
-document,
-and
-ensuring
-all
-values
-are
-represented
-in
-a
-regular
-form.
-These
-goals
-are
-accomplished
-by
-expanding
-all
-properties
-to
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
-absolute
-IRIs
-</a>
-and
-by
-expressing
-all
-values
-in
-<a class="tref internalDFN" title="array" href="#dfn-array">
-arrays
-</a>
-in
-<a class="tref internalDFN" title="expanded-form" href="#dfn-expanded-form">
-expanded
-form
-</a>.
-<a class="tref internalDFN" title="expanded-form" href="#dfn-expanded-form">
-Expanded
-form
-</a>
-is
-the
-most
-verbose
-and
-regular
-way
-of
-expressing
-of
-values
-in
-JSON-LD;
-all
-contextual
-information
-from
-the
-document
-is
-instead
-stored
-locally
-with
-each
-value.
-Running
-the
-<a href="#expansion-algorithm">
-Expansion
-algorithm
-</a>
-(
-<code class="idlMemberName">
-<a href="#widl-JsonLdProcessor-expand-Promise-any-input-JsonLdOptions-options">
-expand
-</a>
-</code>
-operation)
-against
-the
-above
-examples
-results
-in
-the
-following
-output:
-</p>
-    <div class="example"><div class="example-title"><span>Example 3</span>: Expanded sample document</div><pre class="example">[
-  {
-    "@id": "http://me.markus-lanthaler.com/",
-    "http://xmlns.com/foaf/0.1/name": [
-      { "@value": "Markus Lanthaler" }
-    ],
-    "http://xmlns.com/foaf/0.1/homepage": [
-      { "@id": "http://www.markus-lanthaler.com/" }
-    ]
-  }
-]
-</pre>
-</div>
-<p>
-Note
-that
-in
-the
-output
-above
-all
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>
-definitions
-have
-been
-removed,
-all
-<a class="tref internalDFN" title="term" href="#dfn-term">
-terms
-</a>
-and
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
-compact
-IRIs
-</a>
-have
-been
-expanded
-to
-absolute
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-IRIs
-</a>,
-and
-all
-<a class="tref internalDFN" title="json-ld-value" href="#dfn-json-ld-value">
-JSON-LD
-values
-</a>
-are
-expressed
-in
-<a class="tref internalDFN" title="array" href="#dfn-array">
-arrays
-</a>
-in
-<a class="tref internalDFN" title="expanded-form" href="#dfn-expanded-form">
-expanded
-form
-</a>.
-While
-the
-output
-is
-more
-verbose
-and
-difficult
-for
-a
-human
-to
-read,
-it
-establishes
-a
-baseline
-that
-makes
-JSON-LD
-processing
-easier
-because
-of
-its
-very
-regular
-structure.
-</p>
-</section>
-<section class="informative" id="compaction">
-<h3>
-<span class="secno">
-2.2
-</span>
-Compaction
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-While
-<a class="tref internalDFN" title="expansion" href="#dfn-expansion">
-expansion
-</a>
-removes
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>
-from
-a
-given
-input,
-<a class="tref internalDFN" title="compaction" href="#dfn-compaction">
-compaction's
-</a>
-primary
-function
-is
-to
-perform
-the
-opposite
-operation:
-to
-express
-a
-given
-input
-according
-to
-a
-particular
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>.
-<dfn title="compaction" id="dfn-compaction">
-Compaction
-</dfn>
-applies
-a
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>
-that
-specifically
-tailors
-the
-way
-information
-is
-expressed
-for
-a
-particular
-person
-or
-application.
-This
-simplifies
-applications
-that
-consume
-JSON
-or
-JSON-LD
-by
-expressing
-the
-data
-in
-application-specific
-terms,
-and
-it
-makes
-the
-data
-easier
-to
-read
-by
-humans.
-</p>
-<p>
-<a class="tref internalDFN" title="compaction" href="#dfn-compaction">
-Compaction
-</a>
-uses
-a
-developer-supplied
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>
-to
-shorten
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-IRIs
-</a>
-to
-<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>
-and
-<a class="tref internalDFN" title="json-ld-value" href="#dfn-json-ld-value">
-JSON-LD
-values
-</a>
-expressed
-in
-<a class="tref internalDFN" title="expanded-form" href="#dfn-expanded-form">
-expanded
-form
-</a>
-to
-simple
-values
-such
-as
-<a class="tref internalDFN" title="string" href="#dfn-string">
-strings
-</a>
-or
-<a class="tref internalDFN" title="number" href="#dfn-number">
-numbers
-</a>.
-</p>
-<p>
-For
-example,
-assume
-the
-following
-expanded
-JSON-LD
-input
-document:
-</p>
-    <div class="example"><div class="example-title"><span>Example 4</span>: Expanded sample document</div><pre class="example">[
-  {
-    "@id": "http://me.markus-lanthaler.com/",
-    "http://xmlns.com/foaf/0.1/name": [
-      { "@value": "Markus Lanthaler" }
-    ],
-    "http://xmlns.com/foaf/0.1/homepage": [
-      { "@id": "http://www.markus-lanthaler.com/" }
-    ]
-  }
-]
-</pre>
-</div>
-<p>
-Additionally,
-assume
-the
-following
-developer-supplied
-JSON-LD
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>:
-</p>
-    <div class="example"><div class="example-title"><span>Example 5</span>: JSON-LD 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
-<a href="#compaction-algorithm">
-Compaction
-Algorithm
-</a>
-(
-<code class="idlMemberName">
-<a href="#widl-JsonLdProcessor-compact-Promise-any-input-JsonLdContext-context-JsonLdOptions-options">
-compact
-</a>
-</code>
-operation)
-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 6</span>: Compacted sample 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"
-    }
-  },
-  "@id": "http://me.markus-lanthaler.com/",
-  "name": "Markus Lanthaler",
-  "homepage": "http://www.markus-lanthaler.com/"
-}
-</pre>
-</div>
-<p>
-Note
-that
-all
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-IRIs
-</a>
-have
-been
-compacted
-to
-<a class="tref internalDFN" title="term" href="#dfn-term">
-terms
-</a>
-as
-specified
-in
-the
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>,
-which
-has
-been
-injected
-into
-the
-output.
-While
-compacted
-output
-is
-useful
-to
-humans,
-it
-is
-also
-used
-to
-generate
-structures
-that
-are
-easy
-to
-program
-against.
-Compaction
-enables
-developers
-to
-map
-any
-expanded
-document
-into
-an
-application-specific
-compacted
-document.
-While
-the
-context
-provided
-above
-mapped
-<code>
-http://xmlns.com/foaf/0.1/name
-</code>
-to
-<code>
-name
-</code>,
-it
-could
-also
-have
-been
-mapped
-to
-any
-other
-term
-provided
-by
-the
-developer.
-</p>
-</section>
-<section class="informative" id="flattening">
-<h3>
-<span class="secno">
-2.3
-</span>
-Flattening
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-While
-expansion
-ensures
-that
-a
-document
-is
-in
-a
-uniform
-structure,
-flattening
-goes
-a
-step
-further
-to
-ensure
-that
-the
-shape
-of
-the
-data
-is
-deterministic.
-In
-expanded
-documents,
-the
-properties
-of
-a
-single
-<a class="tref internalDFN" title="node" href="#dfn-node">
-node
-</a>
-may
-be
-spread
-across
-a
-number
-of
-different
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-objects
-</a>.
-By
-flattening
-a
-document,
-all
-properties
-of
-a
-<a class="tref internalDFN" title="node" href="#dfn-node">
-node
-</a>
-are
-collected
-in
-a
-single
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-and
-all
-<a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">
-blank
-nodes
-</a>
-are
-labeled
-with
-a
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifier
-</a>.
-This
-may
-drastically
-simplify
-the
-code
-required
-to
-process
-JSON-LD
-data
-in
-certain
-applications.
-</p>
-<p>
-For
-example,
-assume
-the
-following
-JSON-LD
-input
-document:
-</p>
-    <div class="example"><div class="example-title"><span>Example 7</span>: Sample JSON-LD document</div><pre class="example">{
-  "@context": {
-    "name": "http://xmlns.com/foaf/0.1/name",
-    "knows": "http://xmlns.com/foaf/0.1/knows"
-  },
-  "@id": "http://me.markus-lanthaler.com/",
-  "name": "Markus Lanthaler",
-  "knows": [
-    {
-      "name": "Dave Longley"
-    }
-  ]
-}
-</pre>
-</div>
-<p>
-Running
-the
-<a href="#flattening-algorithm">
-Flattening
-algorithm
-</a>
-(
-<code class="idlMemberName">
-<a href="#widl-JsonLdProcessor-flatten-Promise-any-input-JsonLdContext-context-JsonLdOptions-options">
-flatten
-</a>
-</code>
-operation)
-with
-a
-context
-set
-to
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>
-to
-prevent
-compaction
-returns
-the
-following
-document:
-</p>
-    <div class="example"><div class="example-title"><span>Example 8</span>: Flattened sample document in expanded form</div><pre class="example">[
-  {
-    "@id": "_:t0",
-    "http://xmlns.com/foaf/0.1/name": [
-      { "@value": "Dave Longley" }
-    ]
-  },
-  {
-    "@id": "http://me.markus-lanthaler.com/",
-    "http://xmlns.com/foaf/0.1/name": [
-      { "@value": "Markus Lanthaler" }
-    ],
-    "http://xmlns.com/foaf/0.1/knows": [
-      { "@id": "_:t0" }
-    ]
-  }
-]
-</pre>
-</div>
-<p>
-Note
-how
-in
-the
-output
-above
-all
-properties
-of
-a
-<a class="tref internalDFN" title="node" href="#dfn-node">
-node
-</a>
-are
-collected
-in
-a
-single
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-and
-how
-the
-<a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">
-blank
-node
-</a>
-representing
-"Dave
-Longley"
-has
-been
-assigned
-the
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifier
-</a>
-<code>
-_:t0
-</code>.
-</p>
-<p>
-To
-make
-it
-easier
-for
-humans
-to
-read
-or
-for
-certain
-applications
-to
-process
-it,
-a
-flattened
-document
-can
-be
-compacted
-by
-passing
-a
-context.
-Using
-the
-same
-context
-as
-the
-input
-document,
-the
-flattened
-and
-compacted
-document
-looks
-as
-follows:
-</p>
-    <div class="example"><div class="example-title"><span>Example 9</span>: Flattened and compacted sample document</div><pre class="example">{
-  "@context": {
-    "name": "http://xmlns.com/foaf/0.1/name",
-    "knows": "http://xmlns.com/foaf/0.1/knows"
-  },
-  "@graph": [
-    {
-      "@id": "_:t0",
-      "name": "Dave Longley"
-    },
-    {
-      "@id": "http://me.markus-lanthaler.com/",
-      "name": "Markus Lanthaler",
-      "knows": { "@id": "_:t0" }
-    }
-  ]
-}
-</pre>
-</div>
-<p>
-Please
-note
-that
-the
-result
-of
-flattening
-and
-compacting
-a
-document
-is
-always
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-which
-contains
-an
-<code>
-@graph
-</code>
-member
-that
-represents
-the
-<a class="tref internalDFN" title="default-graph" href="#dfn-default-graph">
-default
-graph
-</a>.
-</p>
-</section>
-<section class="informative" id="rdf-serialization-deserialization">
-<h3>
-<span class="secno">
-2.4
-</span>
-RDF
-<del class="diff-old">Conversion
-</del>
-<ins class="diff-chg">Serialization/Deserialization
-</ins>
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-JSON-LD
-can
-be
-used
-to
-serialize
-<del class="diff-old">data
-expressed
-in
-</del>
-RDF
-<ins class="diff-new">data
-</ins>
-as
-described
-in
-[
-<cite>
-<a class="bibref" href="#bib-RDF11-CONCEPTS">
-RDF11-CONCEPTS
-</a>
-</cite>
-].
-This
-ensures
-that
-data
-can
-be
-round-tripped
-to
-and
-from
-any
-RDF
-syntax
-without
-any
-loss
-in
-fidelity.
-</p>
-<p>
-For
-example,
-assume
-the
-following
-RDF
-input
-serialized
-in
-Turtle
-[
-<cite>
-<a class="bibref" href="#bib-TURTLE">
-TURTLE
-</a>
-</cite>
-]:
-</p>
-    <div class="example"><div class="example-title"><span>Example 10</span>: Sample Turtle document</div><pre class="example">&lt;http://me.markus-lanthaler.com/&gt; &lt;http://xmlns.com/foaf/0.1/name&gt; "Markus Lanthaler" .
-&lt;http://me.markus-lanthaler.com/&gt;
-&lt;http://xmlns.com/foaf/0.1/homepage&gt;
-&lt;http://www.markus-lanthaler.com/&gt;
-.
-</pre>
-</div>
-<p>
-Using
-the
-<del class="diff-old">Convert
-from
-</del>
-<a href="#serialize-rdf-as-json-ld-algorithm">
-<ins class="diff-chg">Serialize
-</ins>
-RDF
-<ins class="diff-new">as
-JSON-LD
-</ins>
-algorithm
-</a>
-a
-developer
-could
-transform
-this
-document
-into
-expanded
-JSON-LD:
-</p>
-    <div class="example"><div class="example-title"><span>Example 11</span>: Sample Turtle document converted to JSON-LD</div><pre class="example">[
-  {
-    "@id": "http://me.markus-lanthaler.com/",
-    "http://xmlns.com/foaf/0.1/name": [
-      { "@value": "Markus Lanthaler" }
-    ],
-    "http://xmlns.com/foaf/0.1/homepage": [
-      { "@id": "http://www.markus-lanthaler.com/" }
-    ]
-  }
-]
-</pre>
-</div>
-<p>
-Note
-that
-the
-output
-above
-could
-easily
-be
-compacted
-using
-the
-technique
-outlined
-in
-the
-previous
-section.
-It
-is
-also
-possible
-to
-<del class="diff-old">transform
-</del>
-<ins class="diff-chg">deserialize
-</ins>
-the
-JSON-LD
-document
-back
-to
-RDF
-using
-the
-<del class="diff-old">Convert
-</del>
-<a href="#deserialize-json-ld-to-rdf-algorithm">
-<ins class="diff-chg">Deserialize
-JSON-LD
-</ins>
-to
-RDF
-algorithm
-</a>.
-</p>
-</section>
-</section>
-<section id="conformance">
-<h2>
-<span class="secno">
-3.
-</span>
-Conformance
-</h2>
-<p>
-All
-examples
-and
-notes
-as
-well
-as
-sections
-marked
-as
-non-normative
-in
-this
-specification
-are
-non-normative.
-Everything
-else
-in
-this
-specification
-is
-normative.
-</p>
-<p>
-The
-keywords
-<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="SHOULD">
-SHOULD
-</em>,
-<em class="rfc2119" title="SHOULD NOT">
-SHOULD
-NOT
-</em>,
-<em class="rfc2119" title="RECOMMENDED">
-RECOMMENDED
-</em>,
-<em class="rfc2119" title="MAY">
-MAY
-</em>,
-and
-<em class="rfc2119" title="OPTIONAL">
-OPTIONAL
-</em>
-in
-this
-specification
-are
-to
-be
-interpreted
-as
-described
-in
-[
-<cite>
-<a class="bibref" href="#bib-RFC2119">
-RFC2119
-</a>
-</cite>
-].
-</p>
-<p>
-There
-are
-three
-classes
-of
-products
-that
-can
-claim
-conformance
-to
-this
-specification:
-<a class="tref internalDFN" title="json-ld-processor" href="#dfn-json-ld-processor">
-JSON-LD
-Processors
-</a>,
-<a class="tref internalDFN" title="json-ld-api-implementation" href="#dfn-json-ld-api-implementation">
-JSON-LD
-API
-Implementations
-</a>,
-and
-<del class="diff-old">JSON-LD-RDF
-Converters
-</del>
-<a class="tref internalDFN" title="rdf-serializer/deserializer" href="#dfn-rdf-serializer/deserializer">
-<ins class="diff-chg">RDF
-Serializers/Deserializers
-</ins>
-</a>.
-</p>
-<p>
-A
-conforming
-<dfn title="json-ld-processor" id="dfn-json-ld-processor">
-JSON-LD
-Processor
-</dfn>
-is
-a
-system
-which
-can
-perform
-the
-<a href="#expansion-algorithm">
-Expansion
-</a>,
-<a href="#compaction-algorithm">
-Compaction
-</a>,
-and
-<a href="#flattening-algorithm">
-Flattening
-</a>
-operations
-defined
-in
-this
-specification.
-</p>
-<p>
-A
-conforming
-<dfn title="json-ld-api-implementation" id="dfn-json-ld-api-implementation">
-JSON-LD
-API
-Implementation
-</dfn>
-is
-a
-conforming
-<a class="tref internalDFN" title="json-ld-processor" href="#dfn-json-ld-processor">
-JSON-LD
-Processor
-</a>
-that
-exposes
-the
-<a href="#the-application-programming-interface">
-Application
-Programming
-Interface
-(API)
-</a>
-defined
-in
-this
-specification.
-It
-<em class="rfc2119" title="MUST">
-MUST
-</em>
-implement
-the
-<code>
-json-ld-1.0
-</code>
-processing
-mode
-(for
-further
-details,
-see
-the
-<code class="idlMemberName">
-<a href="#widl-JsonLdOptions-processingMode">
-processingMode
-</a>
-</code>
-option
-of
-<a href="#idl-def-JsonLdOptions" class="idlType">
-<code>
-JsonLdOptions
-</code>
-</a>
-).
-</p>
-<p>
-<a class="tref internalDFN" title="json-ld-processor" href="#dfn-json-ld-processor">
-JSON-LD
-Processors
-</a>
-and
-<a class="tref internalDFN" title="json-ld-api-implementation" href="#dfn-json-ld-api-implementation">
-API
-Implementations
-</a>
-<em class="rfc2119" title="MUST NOT">
-MUST
-NOT
-</em>
-attempt
-to
-correct
-malformed
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-IRIs
-</a>
-or
-language
-tags;
-however,
-they
-<em class="rfc2119" title="MAY">
-MAY
-</em>
-issue
-validation
-warnings.
-IRIs
-are
-not
-modified
-other
-than
-<del class="diff-old">converted
-</del>
-<ins class="diff-chg">conversion
-</ins>
-between
-<a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">
-relative
-</a>
-and
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
-absolute
-IRIs
-</a>.
-</p>
-<p>
-A
-conforming
-<del class="diff-old">JSON-LD-RDF
-Converter
-</del>
-<dfn title="rdf-serializer/deserializer" id="dfn-rdf-serializer/deserializer">
-<ins class="diff-chg">RDF
-Serializer/Deserializer
-</ins>
-</dfn>
-is
-a
-system
-that
-can
-<del class="diff-old">perform
-Conversion
-</del>
-<a href="#deserialize-json-ld-to-rdf-algorithm">
-<ins class="diff-chg">deserialize
-JSON-LD
-</ins>
-to
-RDF
-</a>
-and
-<del class="diff-old">Conversion
-from
-</del>
-<a href="#serialize-rdf-as-json-ld-algorithm">
-<ins class="diff-chg">serialize
-</ins>
-RDF
-<del class="diff-old">.
-</del>
-<ins class="diff-chg">as
-JSON-LD
-</ins></a><ins class="diff-chg">
-as
-defined
-in
-this
-specification.
-</ins>
-</p>
-<p>
-The
-algorithms
-in
-this
-specification
-are
-generally
-written
-with
-more
-concern
-for
-clarity
-than
-efficiency.
-Thus,
-<a class="tref internalDFN" title="json-ld-processor" href="#dfn-json-ld-processor">
-JSON-LD
-Processors
-</a>
-and
-<a class="tref internalDFN" title="json-ld-api-implementation" href="#dfn-json-ld-api-implementation">
-API
-Implementations
-</a>
-may
-implement
-the
-algorithms
-given
-in
-this
-specification
-in
-any
-way
-desired,
-so
-long
-as
-the
-end
-result
-is
-indistinguishable
-from
-the
-result
-that
-would
-be
-obtained
-by
-the
-specification's
-algorithms.
-</p>
-<div class="note">
-<div class="note-title" role="heading" aria-level="3">
-<span>
-Note
-</span>
-</div>
-<p class="">
-Implementers
-can
-partially
-check
-their
-level
-of
-conformance
-to
-this
-specification
-by
-successfully
-passing
-the
-test
-cases
-of
-the
-JSON-LD
-test
-suite
-[
-<cite>
-<a class="bibref" href="#bib-JSON-LD-TESTS">
-JSON-LD-TESTS
-</a>
-</cite>
-].
-Note,
-however,
-that
-passing
-all
-the
-tests
-in
-the
-test
-suite
-does
-not
-imply
-complete
-conformance
-to
-this
-specification.
-It
-only
-implies
-that
-the
-implementation
-conforms
-to
-aspects
-tested
-by
-the
-test
-suite.
-</p>
-</div>
-</section>
-<section id="general-terminology">
-<h2>
-<span class="secno">
-4.
-</span>
-General
-Terminology
-</h2>
-<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.
-In
-contrast
-to
-JSON,
-in
-JSON-LD
-the
-keys
-in
-an
-object
-must
-be
-unique.
-</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
-specifically
-defined
-(see
-<cite>
-<a href="http://www.w3.org/TR/2013/CR-json-ld-20130822/#sets-and-lists">
-Sets
-and
-Lists
-</a>
-</cite>
-in
-the
-JSON-LD
-specification
-[
-<cite>
-<a class="bibref" href="#bib-JSON-LD">
-JSON-LD
-</a>
-</cite>
-]).
-</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.
-A
-key-value
-pair
-in
-the
-<code>
-@context
-</code>
-where
-the
-value,
-or
-the
-<code>
-@id
-</code>
-of
-the
-value,
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>
-explicitly
-decouples
-a
-term's
-association
-with
-an
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>.
-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>
-<p>
-Furthermore,
-the
-following
-terminology
-is
-used
-throughout
-this
-document:
-</p>
-<dl>
-<dt>
-<dfn title="keyword" id="dfn-keyword">
-keyword
-</dfn>
-</dt>
-<dd>
-A
-JSON
-key
-that
-is
-specific
-to
-JSON-LD,
-specified
-in
-the
-section
-<cite>
-<a href="http://www.w3.org/TR/2013/CR-json-ld-20130822/#syntax-tokens-and-keywords">
-Syntax
-Tokens
-and
-Keywords
-</a>
-</cite>
-of
-the
-JSON-LD
-specification
-[
-<cite>
-<a class="bibref" href="#bib-JSON-LD">
-JSON-LD
-</a>
-</cite>
-].
-</dd>
-<dt>
-<dfn title="context" id="dfn-context">
-context
-</dfn>
-</dt>
-<dd>
-A
-set
-of
-rules
-for
-interpreting
-a
-JSON-LD
-document
-as
-specified
-in
-the
-section
-<cite>
-<a href="http://www.w3.org/TR/2013/CR-json-ld-20130822/#the-context">
-The
-Context
-</a>
-</cite>
-of
-the
-JSON-LD
-specification
-[
-<cite>
-<a class="bibref" href="#bib-JSON-LD">
-JSON-LD
-</a>
-</cite>
-].
-</dd>
-<dt>
-<dfn title="json-ld-document" id="dfn-json-ld-document">
-JSON-LD
-document
-</dfn>
-</dt>
-<dd>
-A
-<a class="tref internalDFN" title="json-ld-document" href="#dfn-json-ld-document">
-JSON-LD
-document
-</a>
-is
-a
-serialization
-of
-a
-collection
-of
-<del class="diff-old">JSON-LD
-</del>
-<a class="tref internalDFN" title="graph" href="#dfn-graph">
-graphs
-</a>
-and
-comprises
-exactly
-one
-<a class="tref internalDFN" title="default-graph" href="#dfn-default-graph">
-default
-graph
-</a>
-and
-zero
-or
-more
-<a class="tref internalDFN" title="named-graph" href="#dfn-named-graph">
-named
-graphs
-</a>.
-</dd>
-<dt>
-<dfn title="named-graph" id="dfn-named-graph">
-named
-graph
-</dfn>
-</dt>
-<dd>
-A
-named
-graph
-is
-a
-pair
-consisting
-of
-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>
-(the
-<dfn title="graph-name" id="dfn-graph-name">
-graph
-name
-</dfn>
-)
-and
-a
-<del class="diff-old">JSON-LD
-</del>
-<a class="tref internalDFN" title="graph" href="#dfn-graph">
-graph
-</a>.
-</dd>
-<dt>
-<dfn title="default-graph" id="dfn-default-graph">
-default
-graph
-</dfn>
-</dt>
-<dd>
-The
-default
-graph
-is
-the
-only
-graph
-in
-a
-JSON-LD
-document
-which
-has
-no
-<a class="tref internalDFN" title="graph-name" href="#dfn-graph-name">
-graph
-name
-</a>.
-</dd>
-<dt>
-<del class="diff-old">JSON-LD
-graph
-</del>
-<dfn title="graph" id="dfn-graph">
-<ins class="diff-chg">Graph
-</ins>
-</dfn>
-</dt>
-<dd>
-A
-labeled
-directed
-graph,
-i.e.,
-a
-set
-of
-<a class="tref internalDFN" title="node" href="#dfn-node">
-nodes
-</a>
-connected
-by
-<a class="tref internalDFN" title="edge" href="#dfn-edge">
-edges
-</a>,
-as
-specified
-in
-the
-<cite>
-<a href="http://www.w3.org/TR/2013/CR-json-ld-20130822/#data-model">
-Data
-Model
-</a>
-</cite>
-section
-of
-the
-JSON-LD
-specification
-[
-<cite>
-<a class="bibref" href="#bib-JSON-LD">
-JSON-LD
-</a>
-</cite>
-].
-</dd>
-<dt>
-<dfn title="edge" id="dfn-edge">
-edge
-</dfn>
-</dt>
-<dd>
-Every
-<a class="tref internalDFN" title="edge" href="#dfn-edge">
-edge
-</a>
-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>.
-Whenever
-possible,
-an
-<a class="tref internalDFN" title="edge" href="#dfn-edge">
-edge
-</a>
-should
-be
-labeled
-with
-an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>.
-</dd>
-<dt>
-<dfn title="node" id="dfn-node">
-node
-</dfn>
-</dt>
-<dd>
-Every
-<a class="tref internalDFN" title="node" href="#dfn-node">
-node
-</a>
-is
-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>.
-</dd>
-<dt>
-<dfn title="iri" id="dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</dfn>
-</dt>
-<dd>
-An
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-(Internationalized
-Resource
-Identifier)
-is
-a
-string
-that
-conforms
-to
-the
-syntax
-defined
-in
-[
-<cite>
-<a class="bibref" href="#bib-RFC3987">
-RFC3987
-</a>
-</cite>
-].
-</dd>
-<dt>
-<dfn title="absolute-iri" id="dfn-absolute-iri">
-absolute
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</dfn>
-</dt>
-<dd>
-An
-absolute
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-is
-defined
-in
-[
-<cite>
-<a class="bibref" href="#bib-RFC3987">
-RFC3987
-</a>
-</cite>
-]
-containing
-a
-<em>
-scheme
-</em>
-along
-with
-a
-<em>
-path
-</em>
-and
-optional
-<em>
-query
-</em>
-and
-fragment
-segments.
-</dd>
-<dt>
-<dfn title="relative-iri" id="dfn-relative-iri">
-relative
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</dfn>
-</dt>
-<dd>
-A
-relative
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-is
-an
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-that
-is
-relative
-<ins class="diff-new">to
-</ins>
-some
-other
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
-absolute
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-<del class="diff-old">;
-in
-the
-case
-of
-JSON-LD
-this
-is
-the
-base
-location
-of
-the
-document.
-</del>
-</a>.
-</dd>
-<dt>
-<dfn title="blank-node" id="dfn-blank-node">
-blank
-node
-</dfn>
-</dt>
-<dd>
-A
-<a class="tref internalDFN" title="node" href="#dfn-node">
-node
-</a>
-in
-a
-<del class="diff-old">JSON-LD
-</del>
-<a class="tref internalDFN" title="graph" href="#dfn-graph">
-graph
-</a>
-that
-is
-neither
-an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>,
-nor
-a
-<a class="tref internalDFN" title="json-ld-value" href="#dfn-json-ld-value">
-JSON-LD
-value
-</a>,
-nor
-a
-<a class="tref internalDFN" title="list" href="#dfn-list">
-list
-</a>.
-</dd>
-<dt>
-<dfn title="blank-node-identifier" id="dfn-blank-node-identifier">
-blank
-node
-identifier
-</dfn>
-</dt>
-<dd>
-A
-blank
-node
-identifier
-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
-JSON-LD
-document.
-Blank
-node
-identifiers
-begin
-with
-<code>
-_:
-</code>.
-</dd>
-<dt>
-<dfn title="json-ld-value" id="dfn-json-ld-value">
-JSON-LD
-value
-</dfn>
-</dt>
-<dd>
-A
-<a class="tref internalDFN" title="json-ld-value" href="#dfn-json-ld-value">
-JSON-LD
-value
-</a>
-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>.
-</dd>
-<dt>
-<dfn title="typed-value" id="dfn-typed-value">
-typed
-value
-</dfn>
-</dt>
-<dd>
-A
-<a class="tref internalDFN" title="typed-value" href="#dfn-typed-value">
-typed
-value
-</a>
-consists
-of
-a
-value,
-which
-is
-a
-string,
-and
-a
-type,
-which
-is
-an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>.
-</dd>
-<dt>
-<dfn title="language-tagged-string" id="dfn-language-tagged-string">
-language-tagged
-string
-</dfn>
-</dt>
-<dd>
-A
-<a class="tref internalDFN" title="language-tagged-string" href="#dfn-language-tagged-string">
-language-tagged
-string
-</a>
-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
-must
-be
-well-formed
-according
-to
-<a href="http://tools.ietf.org/html/bcp47#section-2.2.9">
-section
-2.2.9
-Classes
-of
-Conformance
-</a>
-of
-[
-<cite>
-<a class="bibref" href="#bib-BCP47">
-BCP47
-</a>
-</cite>
-],
-and
-is
-normalized
-to
-lowercase.
-</dd>
-<dt>
-<dfn title="list" id="dfn-list">
-list
-</dfn>
-</dt>
-<dd>
-A
-<a class="tref internalDFN" title="list" href="#dfn-list">
-list
-</a>
-is
-an
-ordered
-sequence
-of
-<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>.
-</dd>
-</dl>
-</section>
-<section id="algorithm-terms">
-<h2>
-<span class="secno">
-5.
-</span>
-Algorithm
-Terms
-</h2>
-<dl>
-<dt>
-<dfn title="active-graph" id="dfn-active-graph">
-active
-graph
-</dfn>
-</dt>
-<dd>
-The
-name
-of
-the
-currently
-active
-graph
-that
-the
-processor
-should
-use
-when
-processing.
-</dd>
-<dt>
-<dfn title="active-subject" id="dfn-active-subject">
-active
-subject
-</dfn>
-</dt>
-<dd>
-The
-currently
-active
-subject
-that
-the
-processor
-should
-use
-when
-processing.
-</dd>
-<dt>
-<dfn title="active-property" id="dfn-active-property">
-active
-property
-</dfn>
-</dt>
-<dd>
-The
-currently
-active
-<a class="tref internalDFN" title="property" href="#dfn-property">
-property
-</a>
-or
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keyword
-</a>
-that
-the
-processor
-should
-use
-when
-processing.
-</dd>
-<dt>
-<dfn title="active-context" id="dfn-active-context">
-active
-context
-</dfn>
-</dt>
-<dd>
-A
-context
-that
-is
-used
-to
-resolve
-<a class="tref internalDFN" title="term" href="#dfn-term">
-terms
-</a>
-while
-the
-processing
-algorithm
-is
-running.
-</dd>
-<dt>
-<dfn title="local-context" id="dfn-local-context">
-local
-context
-</dfn>
-</dt>
-<dd>
-A
-context
-that
-is
-specified
-within
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>,
-specified
-via
-the
-<code>
-@context
-</code>
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keyword
-</a>.
-</dd>
-<dt>
-<dfn title="json-ld-input" id="dfn-json-ld-input">
-JSON-LD
-input
-</dfn>
-</dt>
-<dd>
-The
-JSON-LD
-data
-structure
-that
-is
-provided
-as
-input
-to
-the
-algorithm.
-</dd>
-<dt>
-<dfn title="term" id="dfn-term">
-term
-</dfn>
-</dt>
-<dd>
-A
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-is
-a
-short
-word
-defined
-in
-a
-context
-that
-may
-be
-expanded
-to
-an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-</dd>
-<dt>
-<dfn title="compact-iri" id="dfn-compact-iri">
-compact
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</dfn>
-</dt>
-<dd>
-A
-compact
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-has
-the
-form
-of
-<dfn title="prefix" id="dfn-prefix">
-prefix
-</dfn>:
-<em>
-suffix
-</em>
-and
-is
-used
-as
-a
-way
-of
-expressing
-an
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-without
-needing
-to
-define
-separate
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-definitions
-for
-each
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-contained
-within
-a
-common
-vocabulary
-identified
-by
-<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
-prefix
-</a>.
-</dd>
-<dt>
-<dfn title="node-object" id="dfn-node-object">
-node
-object
-</dfn>
-</dt>
-<dd>
-A
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
-node
-object
-</a>
-represents
-zero
-or
-more
-properties
-of
-a
-<a class="tref internalDFN" title="node" href="#dfn-node">
-node
-</a>
-in
-the
-<del class="diff-old">JSON-LD
-</del>
-<a class="tref internalDFN" title="graph" href="#dfn-graph">
-graph
-</a>
-serialized
-by
-the
-JSON-LD
-document.
-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
-the
-JSON-LD
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>
-and:
-<ul>
-<li>
-it
-does
-not
-contain
-the
-<code>
-@value
-</code>,
-<code>
-@list
-</code>,
-or
-<code>
-@set
-</code>
-keywords,
-or
-</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>
-</dd>
-<dt>
-<dfn title="value-object" id="dfn-value-object">
-value
-object
-</dfn>
-</dt>
-<dd>
-A
-<a class="tref internalDFN" title="value-object" href="#dfn-value-object">
-value
-object
-</a>
-is
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-that
-has
-an
-<code>
-@value
-</code>
-member.
-</dd>
-<dt>
-<dfn title="list-object" id="dfn-list-object">
-list
-object
-</dfn>
-</dt>
-<dd>
-A
-<a class="tref internalDFN" title="list-object" href="#dfn-list-object">
-list
-object
-</a>
-is
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-that
-has
-an
-<code>
-@list
-</code>
-member.
-</dd>
-<dt>
-<dfn title="set-object" id="dfn-set-object">
-set
-object
-</dfn>
-</dt>
-<dd>
-A
-<a class="tref internalDFN" title="set-object" href="#dfn-set-object">
-set
-object
-</a>
-is
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-that
-has
-an
-<code>
-@set
-</code>
-member.
-</dd>
-<dt>
-<dfn title="scalar" id="dfn-scalar">
-scalar
-</dfn>
-</dt>
-<dd>
-A
-scalar
-is
-either
-a
-JSON
-<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>,
-or
-<a class="tref internalDFN" title="false" href="#dfn-false">
-false
-</a>.
-</dd>
-<dt>
-<dfn title="rdf-subject" id="dfn-rdf-subject">
-RDF
-subject
-</dfn>
-</dt>
-<dd>
-A
-<a class="tref externalDFN" title="subject" href="http://www.w3.org/TR/rdf11-concepts/#dfn-subject">
-subject
-</a>
-as
-specified
-by
-[
-<cite>
-<a class="bibref" href="#bib-RDF11-CONCEPTS">
-RDF11-CONCEPTS
-</a>
-</cite>
-].
-</dd>
-<dt>
-<dfn title="rdf-predicate" id="dfn-rdf-predicate">
-RDF
-predicate
-</dfn>
-</dt>
-<dd>
-A
-<a class="tref externalDFN" title="predicate" href="http://www.w3.org/TR/rdf11-concepts/#dfn-predicate">
-predicate
-</a>
-as
-specified
-by
-[
-<cite>
-<a class="bibref" href="#bib-RDF11-CONCEPTS">
-RDF11-CONCEPTS
-</a>
-</cite>
-].
-</dd>
-<dt>
-<dfn title="rdf-object" id="dfn-rdf-object">
-RDF
-object
-</dfn>
-</dt>
-<dd>
-An
-<a class="tref externalDFN" title="object" href="http://www.w3.org/TR/rdf11-concepts/#dfn-object">
-object
-</a>
-as
-specified
-by
-[
-<cite>
-<a class="bibref" href="#bib-RDF11-CONCEPTS">
-RDF11-CONCEPTS
-</a>
-</cite>
-].
-</dd>
-<dt>
-<dfn title="rdf-triple" id="dfn-rdf-triple">
-RDF
-triple
-</dfn>
-</dt>
-<dd>
-A
-<a class="tref externalDFN" title="triple" href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple">
-triple
-</a>
-as
-specified
-by
-[
-<cite>
-<a class="bibref" href="#bib-RDF11-CONCEPTS">
-RDF11-CONCEPTS
-</a>
-</cite>
-].
-</dd>
-<dt>
-<dfn title="rdf-dataset" id="dfn-rdf-dataset">
-RDF
-dataset
-</dfn>
-</dt>
-<dd>
-A
-<a class="tref externalDFN" title="dataset" href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-dataset">
-dataset
-</a>
-as
-specified
-by
-[
-<cite>
-<a class="bibref" href="#bib-RDF11-CONCEPTS">
-RDF11-CONCEPTS
-</a>
-</cite>
-]
-representing
-a
-collection
-of
-<a class="tref externalDFN" title="rdf-graphs" href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-graph">
-RDF
-graphs
-</a>.
-</dd>
-</dl>
-</section>
-<section id="context-processing-algorithms">
-<h2>
-<span class="secno">
-6.
-</span>
-Context
-Processing
-Algorithms
-</h2>
-<section id="context-processing-algorithm">
-<h3>
-<span class="secno">
-6.1
-</span>
-Context
-Processing
-Algorithm
-</h3>
-<p>
-When
-processing
-a
-JSON-LD
-data
-structure,
-each
-processing
-rule
-is
-applied
-using
-information
-provided
-by
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>.
-This
-section
-describes
-how
-to
-produce
-an
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>.
-</p>
-<p>
-The
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-contains
-the
-active
-<dfn title="term-definition" id="dfn-term-definition">
-term
-definitions
-</dfn>
-which
-specify
-how
-properties
-and
-values
-have
-to
-be
-interpreted
-as
-well
-as
-the
-current
-<dfn title="base-iri" id="dfn-base-iri">
-base
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</dfn>,
-the
-<dfn title="vocabulary-mapping" id="dfn-vocabulary-mapping">
-vocabulary
-mapping
-</dfn>
-and
-the
-<dfn title="default-language" id="dfn-default-language">
-default
-language
-</dfn>.
-Each
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-consists
-of
-an
-<dfn title="iri-mapping" id="dfn-iri-mapping">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-mapping
-</dfn>,
-a
-boolean
-flag
-<dfn title="reverse-property" id="dfn-reverse-property">
-reverse
-property
-</dfn>,
-an
-optional
-<dfn title="type-mapping" id="dfn-type-mapping">
-type
-mapping
-</dfn>
-or
-<dfn title="language-mapping" id="dfn-language-mapping">
-language
-mapping
-</dfn>,
-and
-an
-optional
-<dfn title="container-mapping" id="dfn-container-mapping">
-container
-mapping
-</dfn>.
-A
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-can
-not
-only
-be
-used
-to
-map
-a
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-to
-an
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>,
-but
-also
-to
-map
-a
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-to
-a
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keyword
-</a>,
-in
-which
-case
-it
-is
-referred
-to
-as
-a
-<dfn title="keyword-alias" id="dfn-keyword-alias">
-keyword
-alias
-</dfn>.
-</p>
-<p>
-When
-processing,
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-is
-initialized
-without
-any
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definitions
-</a>,
-<a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">
-vocabulary
-mapping
-</a>,
-or
-<a class="tref internalDFN" title="default-language" href="#dfn-default-language">
-default
-language
-</a>.
-If
-a
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>
-is
-encountered
-during
-processing,
-a
-new
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-is
-created
-by
-cloning
-the
-existing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>.
-Then
-the
-information
-from
-the
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>
-is
-merged
-into
-the
-new
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>.
-Given
-that
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-contexts
-</a>
-may
-contain
-references
-to
-remote
-contexts,
-this
-includes
-their
-retrieval.
-</p>
-<section class="informative">
-<h4 id="overview">
-Overview
-</h4>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-First
-we
-prepare
-a
-new
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-<i>
-result
-</i>
-by
-cloning
-the
-current
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>.
-Then
-we
-normalize
-the
-form
-of
-the
-passed
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>
-to
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>.
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-Local
-contexts
-</a>
-may
-be
-in
-the
-form
-of
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>,
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>,
-or
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-containing
-a
-combination
-of
-the
-two.
-Finally
-we
-process
-each
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>
-contained
-in
-the
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-as
-follows.
-</p>
-<p>
-If
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>
-is
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>,
-it
-represents
-a
-reference
-to
-a
-remote
-context.
-We
-dereference
-the
-remote
-context
-and
-replace
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>
-with
-the
-value
-of
-the
-<code>
-@context
-</code>
-key
-of
-the
-top-level
-object
-in
-the
-retrieved
-JSON-LD
-document.
-If
-there's
-no
-such
-key,
-an
-invalid
-remote
-context
-has
-been
-detected.
-Otherwise,
-we
-process
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>
-by
-recursively
-using
-this
-algorithm
-ensuring
-that
-there
-is
-no
-cyclical
-reference.
-</p>
-<p>
-If
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>
-is
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>,
-we
-first
-update
-the
-<a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">
-base
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>,
-the
-<a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">
-vocabulary
-mapping
-</a>,
-and
-the
-<a class="tref internalDFN" title="default-language" href="#dfn-default-language">
-default
-language
-</a>
-by
-processing
-three
-specific
-keywords:
-<code>
-@base
-</code>,
-<code>
-@vocab
-</code>,
-and
-<code>
-@language
-</code>.
-These
-are
-handled
-before
-any
-other
-keys
-in
-the
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>
-because
-they
-affect
-how
-the
-other
-keys
-are
-processed.
-Please
-note
-that
-<code>
-@base
-</code>
-is
-ignored
-when
-processing
-remote
-contexts.
-</p>
-<p>
-Then,
-for
-every
-other
-key
-in
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>,
-we
-update
-the
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-in
-<i>
-result
-</i>.
-Since
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definitions
-</a>
-in
-a
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>
-may
-themselves
-contain
-<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>,
-we
-may
-need
-to
-recurse.
-When
-doing
-so,
-we
-must
-ensure
-that
-there
-is
-no
-cyclical
-dependency,
-which
-is
-an
-error.
-After
-we
-have
-processed
-any
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-dependencies,
-we
-update
-the
-current
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>,
-which
-may
-be
-a
-<a class="tref internalDFN" title="keyword-alias" href="#dfn-keyword-alias">
-keyword
-alias
-</a>.
-</p>
-<p>
-Finally,
-we
-return
-<i>
-result
-</i>
-as
-the
-new
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>.
-</p>
-</section>
-<section>
-<h4 id="algorithm">
-Algorithm
-</h4>
-<p>
-This
-algorithm
-specifies
-how
-a
-new
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-is
-updated
-with
-a
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>.
-The
-algorithm
-takes
-three
-input
-variables:
-an
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-a
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>,
-and
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-<i>
-remote
-contexts
-</i>
-which
-is
-used
-to
-detect
-cyclical
-context
-inclusions.
-If
-<i>
-remote
-contexts
-</i>
-is
-not
-passed,
-it
-is
-initialized
-to
-an
-empty
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>.
-</p>
-<div class="issue atrisk">
-<div class="issue-title" role="heading" aria-level="5">
-<span>
-<ins class="diff-new">Feature
-at
-Risk
-10
-</ins></span>:<ins class="diff-new">
-Support
-for
-@base:
-null
-</ins></div><div class="atrisk"><p class="atrisk-head"><ins class="diff-new">
-Note:
-This
-feature
-is
-</ins><a href="http://www.w3.org/2005/10/Process-20051014/tr#cfi"><ins class="diff-new">
-"at
-risk"
-</ins></a><ins class="diff-new">
-and
-may
-be
-removed
-from
-this
-specification
-based
-on
-feedback.
-Please
-send
-feedback
-to
-</ins><a href="mailto:public-rdf-comments@w3.org"><ins class="diff-new">
-public-rdf-comments@w3.org
-</ins></a>.<ins class="diff-new">
-For
-the
-current
-status
-see
-</ins><a href="http://www.w3.org/2011/rdf-wg/wiki/JSON-LD_Features_at_Risk"><ins class="diff-new">
-features
-"at
-risk"
-in
-JSON-LD
-1.0
-</ins></a></p><p><ins class="diff-new">
-Unlike
-many
-other
-serialization
-formats,
-JSON-LD
-allows
-to
-specify
-that
-there
-is
-no
-base
-</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
-IRI
-</ins></abbr><ins class="diff-new">
-from
-within
-the
-document
-(by
-setting
-</ins><code><ins class="diff-new">
-@base
-</ins></code><ins class="diff-new">
-to
-</ins><a class="tref internalDFN" title="null" href="#dfn-null"><ins class="diff-new">
-null
-</ins></a><ins class="diff-new">
-).
-The
-result
-is
-that
-the
-algorithm
-for
-establishing
-a
-base
-</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
-IRI
-</ins></abbr><ins class="diff-new">
-as
-specified
-in
-</ins><a href="http://tools.ietf.org/html/rfc3986#section-5.1"><ins class="diff-new">
-RFC3986
-section
-5.1
-</ins></a><ins class="diff-new">
-is
-overridden
-so
-relative
-IRIs
-remain
-relative
-IRIs
-even
-in
-the
-case
-that
-an
-</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
-IRI
-</ins></abbr><ins class="diff-new">
-would
-be
-available
-in
-one
-of
-the
-outer
-layers
-(e.g.,
-the
-</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
-IRI
-</ins></abbr><ins class="diff-new">
-used
-to
-retrieve
-the
-document
-or
-an
-application
-supplied
-base
-</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
-IRI
-</ins></abbr><ins class="diff-new">
-).
-Based
-on
-implementer
-feedback,
-the
-Working
-Group
-may
-decide
-to
-remove
-this
-feature
-from
-JSON-LD
-1.0.
-</ins></p></div></div>
-<ol class="algorithm">
-<li>
-Initialize
-<i>
-result
-</i>
-to
-the
-result
-of
-cloning
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>.
-</li>
-<li>
-If
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>
-is
-not
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>,
-set
-it
-to
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-containing
-only
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>.
-</li>
-<li>
-For
-each
-item
-<i>
-context
-</i>
-in
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>:
-<ol class="algorithm">
-<li>
-If
-<i>
-context
-</i>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-set
-<i>
-result
-</i>
-to
-a
-newly-initialized
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-and
-continue
-with
-the
-next
-<i>
-context
-</i>.
-The
-<a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">
-base
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-of
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-is
-set
-to
-the
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-of
-the
-currently
-being
-processed
-document
-(which
-might
-be
-different
-from
-the
-currently
-being
-processed
-context),
-if
-available;
-otherwise
-to
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>.
-If
-set,
-the
-<code class="idlMemberName">
-<del class="diff-old">compactArrays
-</del>
-<a href="#widl-JsonLdOptions-base">
-<ins class="diff-chg">base
-</ins>
-</a>
-</code>
-option
-of
-a
-<a class="tref internalDFN" title="json-ld-api-implementation" href="#dfn-json-ld-api-implementation">
-JSON-LD
-API
-Implementation
-</a>
-overrides
-the
-<a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">
-base
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>.
-</li>
-<li>
-If
-<i>
-context
-</i>
-is
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>,
-<ol class="algorithm">
-<li>
-Set
-<i>
-context
-</i>
-to
-the
-result
-of
-resolving
-<i>
-value
-</i>
-against
-the
-base
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-which
-is
-established
-as
-specified
-in
-<cite>
-<a href="http://tools.ietf.org/html/rfc3986#section-5.1">
-section
-5.1
-Establishing
-a
-Base
-URI
-</a>
-</cite>
-of
-[
-<cite>
-<a class="bibref" href="#bib-RFC3986">
-RFC3986
-</a>
-</cite>
-].
-Only
-the
-basic
-algorithm
-in
-<cite>
-<a href="http://tools.ietf.org/html/rfc3986#section-5.2">
-section
-5.2
-</a>
-</cite>
-of
-[
-<cite>
-<a class="bibref" href="#bib-RFC3986">
-RFC3986
-</a>
-</cite>
-]
-is
-used;
-neither
-<cite>
-<a href="http://tools.ietf.org/html/rfc3986#section-6.2.2">
-Syntax-Based
-Normalization
-</a>
-</cite>
-nor
-<cite>
-<a href="http://tools.ietf.org/html/rfc3986#section-6.2.3">
-Scheme-Based
-Normalization
-</a>
-</cite>
-are
-performed.
-Characters
-additionally
-allowed
-in
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-references
-are
-treated
-in
-the
-same
-way
-that
-unreserved
-characters
-are
-treated
-in
-URI
-references,
-per
-<cite>
-<a href="http://tools.ietf.org/html/rfc3987#section-6.5">
-section
-6.5
-</a>
-</cite>
-of
-[
-<cite>
-<a class="bibref" href="#bib-RFC3987">
-RFC3987
-</a>
-</cite>
-].
-</li>
-<li>
-If
-<i>
-context
-</i>
-is
-in
-the
-<i>
-remote
-contexts
-</i>
-array,
-a
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.recursive-context-inclusion">
-recursive
-context
-inclusion
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted;
-otherwise,
-add
-<i>
-context
-</i>
-to
-<i>
-remote
-contexts
-</i>.
-</li>
-<li>
-Dereference
-<i>
-context
-</i>.
-If
-<i>
-context
-</i>
-cannot
-be
-dereferenced,
-a
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.loading-remote-context-failed">
-loading
-remote
-context
-failed
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-If
-the
-dereferenced
-document
-has
-no
-top-level
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-with
-an
-<code>
-@context
-</code>
-member,
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid-remote-context">
-invalid
-remote
-context
-</a>
-</code>
-has
-been
-detected
-and
-processing
-is
-aborted;
-otherwise,
-set
-<i>
-context
-</i>
-to
-the
-value
-of
-that
-member.
-</li>
-<li>
-Set
-<i>
-result
-</i>
-to
-the
-result
-of
-recursively
-calling
-this
-algorithm,
-passing
-<i>
-result
-</i>
-for
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<i>
-context
-</i>
-for
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>,
-and
-<i>
-remote
-contexts
-</i>.
-</li>
-<li>
-Continue
-with
-the
-next
-<i>
-context
-</i>.
-</li>
-</ol>
-</li>
-<li>
-If
-<i>
-context
-</i>
-is
-not
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>,
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid-local-context">
-invalid
-local
-context
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-</li>
-<li>
-If
-<i>
-context
-</i>
-has
-an
-<code>
-@base
-</code>
-key
-and
-<i>
-remote
-contexts
-</i>
-is
-empty,
-i.e.,
-the
-currently
-being
-processed
-context
-is
-not
-a
-remote
-context:
-<ol class="algorithm">
-<li>
-Initialize
-<i>
-value
-</i>
-to
-the
-value
-associated
-with
-the
-<code>
-@base
-</code>
-key.
-</li>
-<li>
-If
-<i>
-value
-</i>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-remove
-the
-<a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">
-base
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-of
-<i>
-result
-</i>.
-</li>
-<li>
-Otherwise,
-if
-<i>
-value
-</i>
-is
-an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
-absolute
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>,
-the
-<a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">
-base
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-of
-<i>
-result
-</i>
-is
-set
-to
-<i>
-value
-</i>.
-</li>
-<li>
-Otherwise,
-if
-<i>
-value
-</i>
-is
-a
-<a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">
-relative
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-and
-the
-<a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">
-base
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-of
-<i>
-result
-</i>
-is
-not
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-set
-the
-<a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">
-base
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-of
-<i>
-result
-</i>
-to
-the
-result
-of
-resolving
-<i>
-value
-</i>
-against
-the
-current
-<a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">
-base
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-of
-<i>
-result
-</i>.
-</li>
-<li>
-Otherwise,
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid-base-IRI">
-invalid
-base
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-</li>
-</ol>
-</li>
-<li>
-If
-<i>
-context
-</i>
-has
-an
-<code>
-@vocab
-</code>
-key:
-<ol class="algorithm">
-<li>
-Initialize
-<i>
-value
-</i>
-to
-the
-value
-associated
-with
-the
-<code>
-@vocab
-</code>
-key.
-</li>
-<li>
-If
-<i>
-value
-</i>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-remove
-any
-<a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">
-vocabulary
-mapping
-</a>
-from
-<i>
-result
-</i>.
-</li>
-<li>
-Otherwise,
-if
-<i>
-value
-</i>
-is
-an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
-absolute
-<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>,
-the
-<a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">
-vocabulary
-mapping
-</a>
-of
-<i>
-result
-</i>
-is
-set
-to
-<i>
-value
-</i>.
-If
-it
-is
-not
-an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
-absolute
-<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>,
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid-vocab-mapping">
-invalid
-vocab
-mapping
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-</li>
-</ol>
-</li>
-<li>
-If
-<i>
-context
-</i>
-has
-an
-<code>
-@language
-</code>
-key:
-<ol class="algorithm">
-<li>
-Initialize
-<i>
-value
-</i>
-to
-the
-value
-associated
-with
-the
-<code>
-@language
-</code>
-key.
-</li>
-<li>
-If
-<i>
-value
-</i>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-remove
-any
-<a class="tref internalDFN" title="default-language" href="#dfn-default-language">
-default
-language
-</a>
-from
-<i>
-result
-</i>.
-</li>
-<li>
-Otherwise,
-if
-<i>
-value
-</i>
-is
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>,
-the
-<a class="tref internalDFN" title="default-language" href="#dfn-default-language">
-default
-language
-</a>
-of
-<i>
-result
-</i>
-is
-set
-to
-lowercased
-<i>
-value
-</i>.
-If
-it
-is
-not
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>,
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid-default-language">
-invalid
-default
-language
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-</li>
-</ol>
-</li>
-<li>
-Create
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-<i>
-defined
-</i>
-to
-use
-to
-keep
-track
-of
-whether
-or
-not
-a
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-has
-already
-been
-defined
-or
-currently
-being
-defined
-during
-recursion.
-</li>
-<li>
-For
-each
-<i>
-key
-</i>
--
-<i>
-value
-</i>
-pair
-in
-<i>
-context
-</i>
-where
-<i>
-key
-</i>
-is
-not
-<code>
-@base
-</code>,
-<code>
-@vocab
-</code>,
-or
-<code>
-@language
-</code>,
-invoke
-the
-<a href="#create-term-definition">
-Create
-Term
-Definition
-algorithm
-</a>,
-passing
-<i>
-result
-</i>
-for
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<i>
-context
-</i>
-for
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>,
-<i>
-key
-</i>,
-and
-<i>
-defined
-</i>.
-</li>
-</ol>
-</li>
-<li>
-Return
-<i>
-result
-</i>.
-</li>
-</ol>
-</section>
-</section>
-<section id="create-term-definition">
-<h3>
-<span class="secno">
-6.2
-</span>
-Create
-Term
-Definition
-</h3>
-<p>
-This
-algorithm
-is
-called
-from
-the
-<a href="#context-processing-algorithm">
-Context
-Processing
-algorithm
-</a>
-to
-create
-a
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-in
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-for
-a
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-being
-processed
-in
-a
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>.
-</p>
-<section class="informative">
-<h4 id="overview-1">
-Overview
-</h4>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-Term
-definitions
-</a>
-are
-created
-by
-parsing
-the
-information
-in
-the
-given
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>
-for
-the
-given
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>.
-If
-the
-given
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-is
-a
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
-compact
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>,
-it
-may
-omit
-an
-<a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-mapping
-</a>
-by
-depending
-on
-its
-<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
-prefix
-</a>
-having
-its
-own
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>.
-If
-the
-<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
-prefix
-</a>
-is
-a
-key
-in
-the
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>,
-then
-its
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-must
-first
-be
-created,
-through
-recursion,
-before
-continuing.
-Because
-a
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-can
-depend
-on
-other
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definitions
-</a>,
-a
-mechanism
-must
-be
-used
-to
-detect
-cyclical
-dependencies.
-The
-solution
-employed
-here
-uses
-a
-map,
-<i>
-defined
-</i>,
-that
-keeps
-track
-of
-whether
-or
-not
-a
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-has
-been
-defined
-or
-is
-currently
-in
-the
-process
-of
-being
-defined.
-This
-map
-is
-checked
-before
-any
-recursion
-is
-attempted.
-</p>
-<p>
-After
-all
-dependencies
-for
-a
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-have
-been
-defined,
-the
-rest
-of
-the
-information
-in
-the
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>
-for
-the
-given
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-is
-taken
-into
-account,
-creating
-the
-appropriate
-<a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-mapping
-</a>,
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mapping
-</a>,
-and
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>
-or
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mapping
-</a>
-for
-the
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>.
-</p>
-</section>
-<section>
-<h4 id="algorithm-1">
-Algorithm
-</h4>
-<p>
-The
-algorithm
-has
-four
-required
-inputs
-which
-are:
-an
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-a
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>,
-a
-<i>
-term
-</i>,
-and
-a
-map
-<i>
-defined
-</i>.
-</p>
-<ol class="algorithm">
-<li>
-If
-<i>
-defined
-</i>
-contains
-the
-key
-<i>
-term
-</i>
-and
-the
-associated
-value
-is
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-(indicating
-that
-the
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-has
-already
-been
-created),
-return.
-Otherwise,
-if
-the
-value
-is
-<a class="tref internalDFN" title="false" href="#dfn-false">
-false
-</a>,
-a
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.cyclic-IRI-mapping">
-cyclic
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-mapping
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-</li>
-<li>
-Set
-the
-value
-associated
-with
-<i>
-defined
-</i>
-'s
-<i>
-term
-</i>
-key
-to
-<a class="tref internalDFN" title="false" href="#dfn-false">
-false
-</a>.
-This
-indicates
-that
-the
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-is
-now
-being
-created
-but
-is
-not
-yet
-complete.
-</li>
-<li>
-Since
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keywords
-</a>
-cannot
-be
-overridden,
-<i>
-term
-</i>
-must
-not
-be
-a
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keyword
-</a>.
-Otherwise,
-a
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.keyword-redefinition">
-keyword
-redefinition
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-</li>
-<li>
-Remove
-any
-existing
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-for
-<i>
-term
-</i>
-in
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>.
-</li>
-<li>
-Initialize
-<i>
-value
-</i>
-to
-a
-copy
-of
-the
-value
-associated
-with
-the
-key
-<i>
-term
-</i>
-in
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>.
-</li>
-<li>
-If
-<i>
-value
-</i>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>
-or
-<i>
-value
-</i>
-is
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-containing
-the
-key-value
-pair
-<code>
-@id
-</code>
--
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-set
-the
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-in
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-to
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-set
-the
-value
-associated
-with
-<i>
-defined
-</i>
-'s
-key
-<i>
-term
-</i>
-to
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>,
-and
-return.
-</li>
-<li>
-Otherwise,
-if
-<i>
-value
-</i>
-is
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>,
-convert
-it
-to
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-consisting
-of
-a
-single
-member
-whose
-key
-is
-<code>
-@id
-</code>
-and
-whose
-value
-is
-<i>
-value
-</i>.
-</li>
-<li>
-Otherwise,
-<i>
-value
-</i>
-must
-be
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>,
-if
-not,
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid-term-definition">
-invalid
-term
-definition
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-</li>
-<li>
-Create
-a
-new
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>,
-<i>
-definition
-</i>.
-</li>
-<li>
-If
-<i>
-value
-</i>
-contains
-the
-key
-<code>
-<del class="diff-old">@reverse
-</del>
-<ins class="diff-chg">@type
-</ins>
-</code>:
-<ol class="algorithm">
-<li>
-<del class="diff-old">If
-</del>
-<ins class="diff-chg">Initialize
-</ins>
-<i>
-<del class="diff-old">value
-</del>
-<ins class="diff-chg">type
-</ins>
-</i>
-<del class="diff-old">contains
-</del>
-<ins class="diff-chg">to
-the
-value
-associated
-with
-the
-</ins><code><ins class="diff-chg">
-@type
-</ins></code><ins class="diff-chg">
-key,
-which
-must
-be
-a
-</ins><a class="tref internalDFN" title="string" href="#dfn-string"><ins class="diff-chg">
-string
-</ins></a>.<ins class="diff-chg">
-Otherwise,
-</ins>
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid-type-mapping">
-<ins class="diff-new">invalid
-type
-mapping
-</ins></a></code><ins class="diff-new">
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-</ins></li><li><ins class="diff-new">
-Set
-</ins><i><ins class="diff-new">
-type
-</ins></i><ins class="diff-new">
-to
-the
-result
-of
-using
-the
-</ins><a href="#iri-expansion"><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
-IRI
-</ins></abbr><ins class="diff-new">
-Expansion
-algorithm
-</ins></a>,<ins class="diff-new">
-passing
-</ins><a class="tref internalDFN" title="active-context" href="#dfn-active-context"><ins class="diff-new">
-active
-context
-</ins></a>,<i><ins class="diff-new">
-type
-</ins></i><ins class="diff-new">
-for
-</ins><i><ins class="diff-new">
-value
-</ins></i>,<a class="tref internalDFN" title="true" href="#dfn-true"><ins class="diff-new">
-true
-</ins></a><ins class="diff-new">
-for
-</ins><i><ins class="diff-new">
-vocab
-</ins></i>,<a class="tref internalDFN" title="false" href="#dfn-false"><ins class="diff-new">
-false
-</ins></a><ins class="diff-new">
-for
-</ins><i><ins class="diff-new">
-document
-relative
-</ins></i>,<a class="tref internalDFN" title="local-context" href="#dfn-local-context"><ins class="diff-new">
-local
-context
-</ins></a>,<ins class="diff-new">
-and
-</ins><i><ins class="diff-new">
-defined
-</ins></i>.<ins class="diff-new">
-If
-the
-expanded
-</ins><i><ins class="diff-new">
-type
-</ins></i><ins class="diff-new">
-is
-neither
-</ins>
-<code>
-@id
-</code>,
-<del class="diff-old">an
-</del>
-<ins class="diff-chg">nor
-</ins>
-<code>
-<del class="diff-old">@type
-</del>
-<ins class="diff-chg">@vocab
-</ins>
-</code>,
-<del class="diff-old">or
-</del>
-<ins class="diff-chg">nor
-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>,
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid-type-mapping">
-<ins class="diff-new">invalid
-type
-mapping
-</ins></a></code><ins class="diff-new">
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-</ins></li><li><ins class="diff-new">
-Set
-the
-</ins><a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping"><ins class="diff-new">
-type
-mapping
-</ins></a><ins class="diff-new">
-for
-</ins><i><ins class="diff-new">
-definition
-</ins></i><ins class="diff-new">
-to
-</ins><i><ins class="diff-new">
-type
-</ins></i>.</li></ol></li><li><ins class="diff-new">
-If
-</ins><i><ins class="diff-new">
-value
-</ins></i><ins class="diff-new">
-contains
-the
-key
-</ins>
-<code>
-<del class="diff-old">@language
-</del>
-<ins class="diff-chg">@reverse
-</ins></code>:<ol class="algorithm"><li><ins class="diff-chg">
-If
-</ins><i><ins class="diff-chg">
-value
-</ins></i><ins class="diff-chg">
-contains
-an
-</ins><code><ins class="diff-chg">
-@id
-</ins>
-</code>,
-member,
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid-reverse-property">
-invalid
-reverse
-property
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-</li>
-<li>
-If
-the
-value
-associated
-with
-the
-<code>
-@reverse
-</code>
-key
-is
-not
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>,
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid-IRI-mapping">
-invalid
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-mapping
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-</li>
-<li>
-Otherwise,
-set
-the
-<a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-mapping
-</a>
-of
-<i>
-definition
-</i>
-to
-the
-result
-of
-using
-the
-<a href="#iri-expansion">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-Expansion
-algorithm
-</a>,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-the
-value
-associated
-with
-the
-<code>
-@reverse
-</code>
-key
-for
-<i>
-value
-</i>,
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-for
-<i>
-vocab
-</i>,
-<a class="tref internalDFN" title="false" href="#dfn-false">
-false
-</a>
-for
-<i>
-document
-relative
-</i>,
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>,
-and
-<i>
-defined
-</i>.
-If
-the
-result
-is
-not
-an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
-absolute
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>,
-i.e.,
-it
-contains
-no
-colon
-(
-<code>:
-</code>
-),
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid-IRI-mapping">
-invalid
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-mapping
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-</li>
-<li>
-<del class="diff-old">Set
-the
-type
-mapping
-of
-definition
-to
-@id
-.
-</del>
-If
-<i>
-value
-</i>
-contains
-an
-<code>
-@container
-</code>
-member,
-set
-the
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mapping
-</a>
-of
-<i>
-definition
-</i>
-to
-<del class="diff-old">@index
-</del>
-<ins class="diff-chg">its
-value;
-</ins>
-if
-<del class="diff-old">that
-is
-the
-</del>
-<ins class="diff-chg">its
-</ins>
-value
-<del class="diff-old">of
-the
-</del>
-<ins class="diff-chg">is
-neither
-</ins>
-<code>
-<del class="diff-old">@container
-member;
-otherwise
-</del>
-<ins class="diff-chg">@set
-</ins></code>,<ins class="diff-chg">
-nor
-</ins><code><ins class="diff-chg">
-@index
-</ins></code>,<ins class="diff-chg">
-nor
-</ins><a class="tref internalDFN" title="null" href="#dfn-null"><ins class="diff-chg">
-null
-</ins></a>,
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid-reverse-property">
-invalid
-reverse
-property
-</a>
-</code>
-error
-has
-been
-detected
-(reverse
-properties
-only
-support
-<ins class="diff-new">set-
-and
-</ins>
-index-containers)
-and
-processing
-is
-aborted.
-</li>
-<li>
-Set
-the
-<a class="tref internalDFN" title="reverse-property" href="#dfn-reverse-property">
-reverse
-property
-</a>
-flag
-of
-<i>
-definition
-</i>
-to
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>.
-</li>
-<li>
-Set
-the
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-of
-<i>
-term
-</i>
-in
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-to
-<i>
-definition
-</i>
-and
-the
-value
-associated
-with
-<i>
-defined
-</i>
-'s
-key
-<i>
-term
-</i>
-to
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-and
-return.
-</li>
-</ol>
-</li>
-<li>
-Set
-the
-<a class="tref internalDFN" title="reverse-property" href="#dfn-reverse-property">
-reverse
-property
-</a>
-flag
-of
-<i>
-definition
-</i>
-to
-<a class="tref internalDFN" title="false" href="#dfn-false">
-false
-</a>.
-</li>
-<li>
-If
-<i>
-value
-</i>
-contains
-the
-key
-<code>
-@id
-</code>
-and
-its
-value
-does
-not
-equal
-<i>
-term
-</i>:
-<ol class="algorithm">
-<li>
-If
-the
-value
-associated
-with
-the
-<code>
-@id
-</code>
-key
-is
-not
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>,
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid-IRI-mapping">
-invalid
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-mapping
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-</li>
-<li>
-Otherwise,
-set
-the
-<a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-mapping
-</a>
-of
-<i>
-definition
-</i>
-to
-the
-result
-of
-using
-the
-<a href="#iri-expansion">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-Expansion
-algorithm
-</a>,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-the
-value
-associated
-with
-the
-<code>
-@id
-</code>
-key
-for
-<i>
-value
-</i>,
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-for
-<i>
-vocab
-</i>,
-<a class="tref internalDFN" title="false" href="#dfn-false">
-false
-</a>
-for
-<i>
-document
-relative
-</i>,
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>,
-and
-<i>
-defined
-</i>.
-If
-the
-resulting
-<a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-mapping
-</a>
-equals
-<code>
-@context
-</code>,
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid-keyword-alias">
-invalid
-keyword
-alias
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-</li>
-</ol>
-</li>
-<li>
-Otherwise
-if
-the
-<i>
-term
-</i>
-contains
-a
-colon
-(
-<code>:
-</code>
-):
-<ol class="algorithm">
-<li>
-If
-<i>
-term
-</i>
-is
-a
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
-compact
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-with
-a
-<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
-prefix
-</a>
-that
-is
-a
-key
-in
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>
-a
-dependency
-has
-been
-found.
-Use
-this
-algorithm
-recursively
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>,
-the
-<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
-prefix
-</a>
-as
-<i>
-term
-</i>,
-and
-<i>
-defined
-</i>.
-</li>
-<li>
-If
-<i>
-term
-</i>
-'s
-<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
-prefix
-</a>
-has
-a
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-in
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-set
-the
-<a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-mapping
-</a>
-of
-<i>
-definition
-</i>
-to
-the
-result
-of
-concatenating
-the
-value
-associated
-with
-the
-<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
-prefix
-</a>
-'s
-<a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-mapping
-</a>
-and
-the
-<i>
-term
-</i>
-'s
-<i>
-suffix
-</i>.
-</li>
-<li>
-Otherwise,
-<i>
-term
-</i>
-is
-an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
-absolute
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>.
-Set
-the
-<a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-mapping
-</a>
-of
-<i>
-definition
-</i>
-to
-<i>
-term
-</i>.
-</li>
-</ol>
-</li>
-<li>
-Otherwise,
-if
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-has
-a
-<a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">
-vocabulary
-mapping
-</a>,
-the
-<a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-mapping
-</a>
-of
-<i>
-definition
-</i>
-is
-set
-to
-the
-result
-of
-concatenating
-the
-value
-associated
-with
-the
-<a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">
-vocabulary
-mapping
-</a>
-and
-<i>
-term
-</i>.
-If
-it
-does
-not
-have
-a
-<a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">
-vocabulary
-mapping
-</a>,
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid-IRI-mapping">
-invalid
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-mapping
-</a>
-</code>
-error
-been
-detected
-and
-processing
-is
-aborted.
-</li>
-<li>
-If
-<i>
-value
-</i>
-contains
-the
-key
-<code>
-<del class="diff-old">@type
-:
-Initialize
-type
-to
-the
-value
-associated
-with
-the
-@type
-key,
-which
-must
-be
-a
-string
-.
-Otherwise,
-an
-invalid
-type
-mapping
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-Set
-type
-to
-the
-result
-of
-using
-the
-IRI
-Expansion
-algorithm
-,
-passing
-active
-context
-,
-type
-for
-value
-,
-true
-for
-vocab
-,
-false
-for
-document
-relative
-,
-local
-context
-,
-and
-defined
-.
-If
-the
-expanded
-type
-is
-neither
-@id
-,
-nor
-@vocab
-,
-nor
-an
-absolute
-IRI
-,
-an
-invalid
-type
-mapping
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-Set
-the
-type
-mapping
-for
-definition
-to
-type
-.
-If
-value
-contains
-the
-key
-</del>
-@container
-</code>:
-<ol class="algorithm">
-<li>
-Initialize
-<i>
-container
-</i>
-to
-the
-value
-associated
-with
-the
-<code>
-@container
-</code>
-key,
-which
-must
-be
-either
-<code>
-@list
-</code>,
-<code>
-@set
-</code>,
-<code>
-@index
-</code>,
-or
-<code>
-@language
-</code>.
-Otherwise,
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid-container-mapping">
-invalid
-container
-mapping
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-</li>
-<li>
-Set
-the
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mapping
-</a>
-of
-<i>
-definition
-</i>
-to
-<i>
-container
-</i>.
-</li>
-</ol>
-</li>
-<li>
-If
-<i>
-value
-</i>
-contains
-the
-key
-<code>
-@language
-</code>
-and
-does
-not
-contain
-the
-key
-<code>
-@type
-</code>:
-<ol class="algorithm">
-<li>
-Initialize
-<i>
-language
-</i>
-to
-the
-value
-associated
-with
-the
-<code>
-@language
-</code>
-key,
-which
-must
-be
-either
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>
-or
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>.
-Otherwise,
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid-language-mapping">
-invalid
-language
-mapping
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-</li>
-<li>
-If
-<i>
-language
-</i>
-is
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>
-set
-it
-to
-lowercased
-<i>
-language
-</i>.
-Set
-the
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mapping
-</a>
-of
-<i>
-definition
-</i>
-to
-<i>
-language
-</i>.
-</li>
-</ol>
-</li>
-<li>
-Set
-the
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-of
-<i>
-term
-</i>
-in
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-to
-<i>
-definition
-</i>
-and
-set
-the
-value
-associated
-with
-<i>
-defined
-</i>
-'s
-key
-<i>
-term
-</i>
-to
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>.
-</li>
-</ol>
-</section>
-</section>
-<section id="iri-expansion">
-<h3>
-<span class="secno">
-6.3
-</span>
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-Expansion
-</h3>
-<p>
-In
-JSON-LD
-documents,
-some
-keys
-and
-values
-may
-represent
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-IRIs
-</a>.
-This
-section
-defines
-an
-algorithm
-for
-transforming
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>
-that
-represents
-an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-into
-an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
-absolute
-<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>.
-It
-also
-covers
-transforming
-<a class="tref internalDFN" title="keyword-alias" href="#dfn-keyword-alias">
-keyword
-aliases
-</a>
-into
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keywords
-</a>.
-</p>
-<p>
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-expansion
-may
-occur
-during
-context
-processing
-or
-during
-any
-of
-the
-other
-JSON-LD
-algorithms.
-If
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-expansion
-occurs
-during
-context
-processing,
-then
-the
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>
-and
-its
-related
-<i>
-defined
-</i>
-map
-from
-the
-<a href="#context-processing-algorithm">
-Context
-Processing
-algorithm
-</a>
-are
-passed
-to
-this
-algorithm.
-This
-allows
-for
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-dependencies
-to
-be
-processed
-via
-the
-<a href="#create-term-definition">
-Create
-Term
-Definition
-algorithm
-</a>.
-</p>
-<section class="informative">
-<h4 id="overview-2">
-Overview
-</h4>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-In
-order
-to
-expand
-<i>
-value
-</i>
-to
-an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
-absolute
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>,
-we
-must
-first
-determine
-if
-it
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-a
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>,
-a
-<a class="tref internalDFN" title="keyword-alias" href="#dfn-keyword-alias">
-keyword
-alias
-</a>,
-or
-some
-form
-of
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>.
-Based
-on
-what
-we
-find,
-we
-handle
-the
-specific
-kind
-of
-expansion;
-for
-example,
-we
-expand
-a
-<a class="tref internalDFN" title="keyword-alias" href="#dfn-keyword-alias">
-keyword
-alias
-</a>
-to
-a
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keyword
-</a>
-and
-a
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-to
-an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
-absolute
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-according
-to
-its
-<a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-mapping
-</a>
-in
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>.
-While
-inspecting
-<i>
-value
-</i>
-we
-may
-also
-find
-that
-we
-need
-to
-create
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-dependencies
-because
-we're
-running
-this
-algorithm
-during
-context
-processing.
-We
-can
-tell
-whether
-or
-not
-we're
-running
-during
-context
-processing
-by
-checking
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>
-against
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>.
-We
-know
-we
-need
-to
-create
-a
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-in
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-when
-<i>
-value
-</i>
-is
-a
-key
-in
-the
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>
-and
-the
-<i>
-defined
-</i>
-map
-does
-not
-have
-a
-key
-for
-<i>
-value
-</i>
-with
-an
-associated
-value
-of
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>.
-The
-<i>
-defined
-</i>
-map
-is
-used
-during
-<a href="#context-processing-algorithm">
-Context
-Processing
-</a>
-to
-keep
-track
-of
-which
-<a class="tref internalDFN" title="term" href="#dfn-term">
-terms
-</a>
-have
-already
-been
-defined
-or
-are
-in
-the
-process
-of
-being
-defined.
-We
-create
-a
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-by
-using
-the
-<a href="#create-term-definition">
-Create
-Term
-Definition
-algorithm
-</a>.
-</p>
-</section>
-<section>
-<h4 id="algorithm-2">
-Algorithm
-</h4>
-<p>
-The
-algorithm
-takes
-two
-required
-and
-four
-optional
-input
-variables.
-The
-required
-inputs
-are
-an
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-and
-a
-<i>
-value
-</i>
-to
-be
-expanded.
-The
-optional
-inputs
-are
-two
-flags,
-<i>
-document
-relative
-</i>
-and
-<i>
-vocab
-</i>,
-that
-specifying
-whether
-<i>
-value
-</i>
-can
-be
-interpreted
-as
-a
-<a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">
-relative
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-against
-the
-document's
-base
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-or
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context's
-</a>
-<a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">
-vocabulary
-mapping
-</a>,
-respectively,
-and
-a
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>
-and
-a
-map
-<i>
-defined
-</i>
-to
-be
-used
-when
-this
-algorithm
-is
-used
-during
-<a href="#context-processing-algorithm">
-Context
-Processing
-</a>.
-If
-not
-passed,
-the
-two
-flags
-are
-set
-to
-<code>
-false
-</code>
-and
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>
-and
-<i>
-defined
-</i>
-are
-initialized
-to
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>.
-</p>
-<ol class="algorithm">
-<li>
-If
-<i>
-value
-</i>
-is
-a
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keyword
-</a>
-or
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-return
-<i>
-value
-</i>
-as
-is.
-</li>
-<li>
-If
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>
-is
-not
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-it
-contains
-a
-key
-that
-equals
-<i>
-value
-</i>,
-and
-the
-value
-associated
-with
-the
-key
-that
-equals
-<i>
-value
-</i>
-in
-<i>
-defined
-</i>
-is
-not
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>,
-invoke
-the
-<a href="#create-term-definition">
-Create
-Term
-Definition
-algorithm
-</a>,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>,
-<i>
-value
-</i>
-as
-<i>
-term
-</i>,
-and
-<i>
-defined
-</i>.
-This
-will
-ensure
-that
-a
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-is
-created
-for
-<i>
-value
-</i>
-in
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-during
-<a href="#context-processing-algorithm">
-Context
-Processing
-</a>.
-</li>
-<li>
-If
-<i>
-vocab
-</i>
-is
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-and
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-has
-a
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-for
-<i>
-value
-</i>,
-return
-the
-associated
-<a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-mapping
-</a>.
-</li>
-<li>
-If
-<i>
-value
-</i>
-contains
-a
-colon
-(
-<code>:
-</code>
-),
-it
-is
-either
-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="compact-iri" href="#dfn-compact-iri">
-compact
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>:
-<ol class="algorithm">
-<li>
-Split
-<i>
-value
-</i>
-into
-a
-<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
-prefix
-</a>
-and
-<i>
-suffix
-</i>
-at
-the
-first
-occurrence
-of
-a
-colon
-(
-<code>:
-</code>
-).
-</li>
-<li>
-If
-<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
-prefix
-</a>
-is
-underscore
-(
-<code>
-_
-</code>
-)
-or
-<i>
-suffix
-</i>
-begins
-with
-double-forward-slash
-(
-<code>
-//
-</code>
-),
-return
-<i>
-value
-</i>
-as
-it
-is
-already
-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="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifier
-</a>.
-</li>
-<li>
-If
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>
-is
-not
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-it
-contains
-a
-key
-that
-equals
-<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
-prefix
-</a>,
-and
-the
-value
-associated
-with
-the
-key
-that
-equals
-<i>
-prefix
-</i>
-in
-<i>
-defined
-</i>
-is
-not
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>,
-invoke
-the
-<a href="#create-term-definition">
-Create
-Term
-Definition
-algorithm
-</a>,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>,
-<i>
-prefix
-</i>
-as
-<i>
-term
-</i>,
-and
-<i>
-defined
-</i>.
-This
-will
-ensure
-that
-a
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-is
-created
-for
-<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
-prefix
-</a>
-in
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-during
-<a href="#context-processing-algorithm">
-Context
-Processing
-</a>.
-</li>
-<li>
-If
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-contains
-a
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-for
-<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
-prefix
-</a>,
-return
-the
-result
-of
-concatenating
-the
-<a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-mapping
-</a>
-associated
-with
-<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
-prefix
-</a>
-and
-<i>
-suffix
-</i>.
-</li>
-<li>
-Return
-<i>
-value
-</i>
-as
-it
-is
-already
-an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
-absolute
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>.
-</li>
-</ol>
-</li>
-<li>
-If
-<i>
-vocab
-</i>
-is
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>,
-and
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-has
-a
-<a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">
-vocabulary
-mapping
-</a>,
-return
-the
-result
-of
-concatenating
-the
-<a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">
-vocabulary
-mapping
-</a>
-with
-<i>
-value
-</i>.
-</li>
-<li>
-Otherwise,
-if
-<i>
-document
-relative
-</i>
-is
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>,
-set
-<i>
-value
-</i>
-to
-the
-result
-of
-resolving
-<i>
-value
-</i>
-against
-the
-<a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">
-base
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>.
-Only
-the
-basic
-algorithm
-in
-<cite>
-<a href="http://tools.ietf.org/html/rfc3986#section-5.2">
-section
-5.2
-</a>
-</cite>
-of
-[
-<cite>
-<a class="bibref" href="#bib-RFC3986">
-RFC3986
-</a>
-</cite>
-]
-is
-used;
-neither
-<cite>
-<a href="http://tools.ietf.org/html/rfc3986#section-6.2.2">
-Syntax-Based
-Normalization
-</a>
-</cite>
-nor
-<cite>
-<a href="http://tools.ietf.org/html/rfc3986#section-6.2.3">
-Scheme-Based
-Normalization
-</a>
-</cite>
-are
-performed.
-Characters
-additionally
-allowed
-in
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-references
-are
-treated
-in
-the
-same
-way
-that
-unreserved
-characters
-are
-treated
-in
-URI
-references,
-per
-<cite>
-<a href="http://tools.ietf.org/html/rfc3987#section-6.5">
-section
-6.5
-</a>
-</cite>
-of
-[
-<cite>
-<a class="bibref" href="#bib-RFC3987">
-RFC3987
-</a>
-</cite>
-].
-</li>
-<li>
-If
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>
-is
-not
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>
-and
-<i>
-value
-</i>
-is
-not
-an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
-absolute
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>,
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid-IRI-mapping">
-invalid
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-mapping
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-</li>
-<li>
-Otherwise,
-return
-<i>
-value
-</i>
-as
-is.
-</li>
-</ol>
-</section>
-</section>
-</section>
-<section id="expansion-algorithms">
-<h2>
-<span class="secno">
-7.
-</span>
-Expansion
-Algorithms
-</h2>
-<section id="expansion-algorithm">
-<h3>
-<span class="secno">
-7.1
-</span>
-Expansion
-Algorithm
-</h3>
-<p>
-This
-algorithm
-expands
-a
-JSON-LD
-document,
-such
-that
-all
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>
-definitions
-are
-removed,
-all
-<a class="tref internalDFN" title="term" href="#dfn-term">
-terms
-</a>
-and
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
-compact
-IRIs
-</a>
-are
-expanded
-to
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
-absolute
-IRIs
-</a>,
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifiers
-</a>,
-or
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keywords
-</a>
-and
-all
-<a class="tref internalDFN" title="json-ld-value" href="#dfn-json-ld-value">
-JSON-LD
-values
-</a>
-are
-expressed
-in
-<a class="tref internalDFN" title="array" href="#dfn-array">
-arrays
-</a>
-in
-<a class="tref internalDFN" title="expanded-form" href="#dfn-expanded-form">
-expanded
-form
-</a>.
-</p>
-<section class="informative">
-<h4 id="overview-3">
-Overview
-</h4>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-Starting
-with
-its
-root
-<i>
-element
-</i>,
-we
-can
-process
-the
-JSON-LD
-document
-recursively,
-until
-we
-have
-a
-fully
-<a class="tref internalDFN" title="expansion" href="#dfn-expansion">
-expanded
-</a>
-<i>
-result
-</i>.
-When
-<a class="tref internalDFN" title="expansion" href="#dfn-expansion">
-expanding
-</a>
-an
-<i>
-element
-</i>,
-we
-can
-treat
-each
-one
-differently
-according
-to
-its
-type,
-in
-order
-to
-break
-down
-the
-problem:
-</p>
-<ol>
-<li>
-If
-the
-<i>
-element
-</i>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-there
-is
-nothing
-to
-expand.
-</li>
-<li>
-Otherwise,
-if
-<i>
-element
-</i>
-is
-a
-<a class="tref internalDFN" title="scalar" href="#dfn-scalar">
-scalar
-</a>,
-we
-expand
-it
-according
-to
-the
-<a href="#value-expansion">
-Value
-Expansion
-algorithm
-</a>.
-</li>
-<li>
-Otherwise,
-if
-the
-<i>
-element
-</i>
-is
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>,
-then
-we
-expand
-each
-of
-its
-items
-recursively
-and
-return
-them
-in
-a
-new
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>.
-</li>
-<li>
-Otherwise,
-<i>
-element
-</i>
-is
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>.
-We
-expand
-each
-of
-its
-keys,
-adding
-them
-to
-our
-<i>
-result
-</i>,
-and
-then
-we
-expand
-each
-value
-for
-each
-key
-recursively.
-Some
-of
-the
-keys
-will
-be
-<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>
-and
-others
-will
-be
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keywords
-</a>
-or
-simply
-ignored
-because
-they
-do
-not
-have
-definitions
-in
-the
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>.
-Any
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-IRIs
-</a>
-will
-be
-expanded
-using
-the
-<a href="#iri-expansion">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-Expansion
-algorithm
-</a>.
-</li>
-</ol>
-<p>
-Finally,
-after
-ensuring
-<i>
-result
-</i>
-is
-in
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>,
-we
-return
-<i>
-result
-</i>.
-</p>
-</section>
-<section>
-<h4 id="algorithm-3">
-Algorithm
-</h4>
-<p>
-The
-algorithm
-takes
-three
-input
-variables:
-an
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-an
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>,
-and
-an
-<i>
-element
-</i>
-to
-be
-expanded.
-To
-begin,
-the
-<del class="diff-old">active
-context
-is
-set
-to
-the
-result
-of
-performing,
-Context
-Processing
-on
-the
-passed
-expandContext
-,
-or
-empty
-if
-expandContext
-is
-null
-,
-</del>
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-is
-set
-to
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-and
-<i>
-element
-</i>
-is
-set
-to
-the
-<a class="tref internalDFN" title="json-ld-input" href="#dfn-json-ld-input">
-JSON-LD
-input
-</a>.
-</p>
-<ol class="algorithm">
-<li>
-If
-<i>
-element
-</i>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-return
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>.
-</li>
-<li>
-If
-<i>
-element
-</i>
-is
-a
-<a class="tref internalDFN" title="scalar" href="#dfn-scalar">
-scalar
-</a>,
-<ol class="algorithm">
-<li>
-If
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>
-or
-<code>
-@graph
-</code>,
-drop
-the
-free-floating
-<a class="tref internalDFN" title="scalar" href="#dfn-scalar">
-scalar
-</a>
-by
-returning
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>.
-</li>
-<li>
-Return
-the
-result
-of
-the
-<a href="#value-expansion">
-Value
-Expansion
-algorithm
-</a>,
-passing
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>,
-and
-<i>
-element
-</i>
-as
-<i>
-value
-</i>.
-</li>
-</ol>
-</li>
-<li>
-If
-<i>
-element
-</i>
-is
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>,
-<ol class="algorithm">
-<li>
-Initialize
-an
-empty
-array,
-<i>
-result
-</i>.
-</li>
-<li>
-For
-each
-<i>
-item
-</i>
-in
-<i>
-element
-</i>:
-<ol class="algorithm">
-<li>
-Initialize
-<i>
-expanded
-item
-</i>
-to
-the
-result
-of
-using
-this
-algorithm
-recursively,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>,
-and
-<i>
-item
-</i>
-as
-<i>
-element
-</i>.
-</li>
-<li>
-If
-the
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-is
-<code>
-@list
-</code>
-or
-its
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mapping
-</a>
-is
-set
-to
-<code>
-@list
-</code>,
-the
-<i>
-expanded
-item
-</i>
-must
-not
-be
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-or
-a
-<a class="tref internalDFN" title="list-object" href="#dfn-list-object">
-list
-object
-</a>,
-otherwise
-a
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.list-of-lists">
-list
-of
-lists
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-</li>
-<li>
-If
-<i>
-expanded
-item
-</i>
-is
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>,
-append
-each
-of
-its
-items
-to
-<i>
-result
-</i>.
-Otherwise,
-if
-<i>
-expanded
-item
-</i>
-is
-not
-null,
-append
-it
-to
-<i>
-result
-</i>.
-</li>
-</ol>
-</li>
-<li>
-Return
-<i>
-result
-</i>.
-</li>
-</ol>
-</li>
-<li>
-Otherwise
-<i>
-element
-</i>
-is
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>.
-</li>
-<li>
-If
-<i>
-element
-</i>
-contains
-the
-key
-<code>
-@context
-</code>,
-set
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-to
-the
-result
-of
-the
-<a href="#context-processing-algorithm">
-Context
-Processing
-algorithm
-</a>,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-and
-the
-value
-of
-the
-<code>
-@context
-</code>
-key
-as
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>.
-</li>
-<li>
-Initialize
-an
-empty
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>,
-<i>
-result
-</i>.
-</li>
-<li>
-For
-each
-<i>
-key
-</i>
-and
-<i>
-value
-</i>
-in
-<i>
-element
-</i>,
-ordered
-lexicographically
-by
-<i>
-key
-</i>:
-<ol class="algorithm">
-<li>
-If
-<i>
-key
-</i>
-is
-<code>
-@context
-</code>,
-continue
-to
-the
-next
-<i>
-key
-</i>.
-</li>
-<li>
-Set
-<i>
-expanded
-property
-</i>
-to
-the
-result
-of
-using
-the
-<a href="#iri-expansion">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-Expansion
-algorithm
-</a>,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<i>
-key
-</i>
-for
-<i>
-value
-</i>,
-and
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-for
-<i>
-vocab
-</i>.
-</li>
-<li>
-If
-<i>
-expanded
-property
-</i>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>
-or
-it
-neither
-contains
-a
-colon
-(
-<code>:
-</code>
-)
-nor
-it
-is
-a
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keyword
-</a>,
-drop
-<i>
-key
-</i>
-by
-continuing
-to
-the
-next
-<i>
-key
-</i>.
-</li>
-<li>
-If
-<i>
-expanded
-property
-</i>
-is
-a
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keyword
-</a>:
-<ol class="algorithm">
-<li>
-If
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-equals
-<code>
-@reverse
-</code>,
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid-reverse-property-map">
-invalid
-reverse
-property
-map
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-</li>
-<li>
-If
-<i>
-result
-</i>
-has
-already
-an
-<i>
-expanded
-property
-</i>
-member,
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.colliding-keywords">
-colliding
-keywords
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-</li>
-<li>
-If
-<i>
-expanded
-property
-</i>
-is
-<code>
-@id
-</code>
-and
-<i>
-value
-</i>
-is
-not
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>,
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid--id-value">
-invalid
-@id
-value
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-Otherwise,
-set
-<i>
-expanded
-value
-</i>
-to
-the
-result
-of
-using
-the
-<a href="#iri-expansion">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-Expansion
-algorithm
-</a>,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<i>
-value
-</i>,
-and
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-for
-<i>
-document
-relative
-</i>.
-</li>
-<li>
-If
-<i>
-expanded
-property
-</i>
-is
-<code>
-@type
-</code>
-and
-<i>
-value
-</i>
-is
-neither
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>
-nor
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-of
-<a class="tref internalDFN" title="string" href="#dfn-string">
-strings
-</a>,
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid-type-value">
-invalid
-type
-value
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-Otherwise,
-set
-<i>
-expanded
-value
-</i>
-to
-the
-result
-of
-using
-the
-<a href="#iri-expansion">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-Expansion
-algorithm
-</a>,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-for
-<i>
-vocab
-</i>,
-and
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-for
-<i>
-document
-relative
-</i>
-to
-expand
-the
-<i>
-value
-</i>
-or
-each
-of
-its
-items.
-</li>
-<li>
-If
-<i>
-expanded
-property
-</i>
-is
-<code>
-@graph
-</code>,
-set
-<i>
-expanded
-value
-</i>
-to
-the
-result
-of
-using
-this
-algorithm
-recursively
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<code>
-@graph
-</code>
-for
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>,
-and
-<i>
-value
-</i>
-for
-<i>
-element
-</i>.
-</li>
-<li>
-If
-<i>
-expanded
-property
-</i>
-is
-<code>
-@value
-</code>
-and
-<i>
-value
-</i>
-is
-not
-a
-<a class="tref internalDFN" title="scalar" href="#dfn-scalar">
-scalar
-</a>
-or
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid-value-object-value">
-invalid
-value
-object
-value
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-Otherwise,
-set
-<i>
-expanded
-value
-</i>
-to
-<i>
-value
-</i>.
-If
-<i>
-expanded
-value
-</i>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-set
-the
-<code>
-@value
-</code>
-member
-of
-<i>
-result
-</i>
-to
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>
-and
-continue
-with
-the
-next
-<i>
-key
-</i>
-from
-<i>
-element
-</i>.
-Null
-values
-need
-to
-be
-preserved
-in
-this
-case
-as
-the
-meaning
-of
-an
-<code>
-@type
-</code>
-member
-depends
-on
-the
-existence
-of
-an
-<code>
-@value
-</code>
-member.
-</li>
-<li>
-If
-<i>
-expanded
-property
-</i>
-is
-<code>
-@language
-</code>
-and
-<i>
-value
-</i>
-is
-not
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>,
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid-language-tagged-string">
-invalid
-language-tagged
-string
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-Otherwise,
-set
-<i>
-expanded
-value
-</i>
-to
-lowercased
-<i>
-value
-</i>.
-</li>
-<li>
-If
-<i>
-expanded
-property
-</i>
-is
-<code>
-@index
-</code>
-and
-<i>
-value
-</i>
-is
-not
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>,
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid--index-value">
-invalid
-@index
-value
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-Otherwise,
-set
-<i>
-expanded
-value
-</i>
-to
-<i>
-value
-</i>.
-</li>
-<li>
-If
-<i>
-expanded
-property
-</i>
-is
-<code>
-@list
-</code>:
-<ol class="algorithm">
-<li>
-If
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>
-or
-<code>
-@graph
-</code>,
-continue
-with
-the
-next
-<i>
-key
-</i>
-from
-<i>
-element
-</i>
-to
-remove
-the
-free-floating
-list.
-</li>
-<li>
-Otherwise,
-initialize
-<i>
-expanded
-value
-</i>
-to
-the
-result
-of
-using
-this
-algorithm
-recursively
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>,
-and
-<i>
-value
-</i>
-for
-<i>
-element
-</i>.
-</li>
-<li>
-If
-<i>
-expanded
-value
-</i>
-is
-a
-<a class="tref internalDFN" title="list-object" href="#dfn-list-object">
-list
-object
-</a>,
-a
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.list-of-lists">
-list
-of
-lists
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-</li>
-</ol>
-</li>
-<li>
-If
-<i>
-expanded
-property
-</i>
-is
-<code>
-@set
-</code>,
-set
-<i>
-expanded
-value
-</i>
-to
-the
-result
-of
-using
-this
-algorithm
-recursively,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>,
-and
-<i>
-value
-</i>
-for
-<i>
-element
-</i>.
-</li>
-<li>
-If
-<i>
-expanded
-property
-</i>
-is
-<code>
-@reverse
-</code>
-and
-<i>
-value
-</i>
-is
-not
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>,
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid--reverse-value">
-invalid
-@reverse
-value
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-Otherwise
-<ol class="algorithm">
-<li>
-Initialize
-<i>
-expanded
-value
-</i>
-to
-the
-result
-of
-using
-this
-algorithm
-recursively,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<code>
-@reverse
-</code>
-as
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>,
-and
-<i>
-value
-</i>
-as
-<i>
-element
-</i>.
-</li>
-<li>
-If
-<i>
-expanded
-value
-</i>
-contains
-an
-<code>
-@reverse
-</code>
-member,
-i.e.,
-properties
-that
-are
-reversed
-twice,
-execute
-for
-each
-of
-its
-<i>
-property
-</i>
-and
-<i>
-item
-</i>
-the
-following
-steps:
-<ol class="algorithm">
-<li>
-If
-<i>
-result
-</i>
-does
-not
-have
-a
-<i>
-property
-</i>
-member,
-create
-one
-and
-set
-its
-value
-to
-an
-empty
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>.
-</li>
-<li>
-Append
-<i>
-item
-</i>
-to
-the
-value
-of
-the
-<i>
-property
-</i>
-member
-of
-<i>
-result
-</i>.
-</li>
-</ol>
-</li>
-<li>
-If
-<i>
-expanded
-value
-</i>
-contains
-members
-other
-than
-<code>
-@reverse
-</code>:
-<ol class="algorithm">
-<li>
-If
-<i>
-result
-</i>
-does
-not
-have
-an
-<code>
-@reverse
-</code>
-member,
-create
-one
-and
-set
-its
-value
-to
-an
-empty
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>.
-</li>
-<li>
-Reference
-the
-value
-of
-the
-<code>
-@reverse
-</code>
-member
-in
-<i>
-result
-</i>
-using
-the
-variable
-<i>
-reverse
-map
-</i>.
-</li>
-<li>
-For
-each
-<i>
-property
-</i>
-and
-<i>
-items
-</i>
-in
-<i>
-expanded
-value
-</i>
-other
-than
-<code>
-@reverse
-</code>:
-<ol class="algorithm">
-<li>
-For
-each
-<i>
-item
-</i>
-in
-<i>
-items
-</i>:
-<ol class="algorithm">
-<li>
-If
-<i>
-item
-</i>
-is
-a
-<a class="tref internalDFN" title="value-object" href="#dfn-value-object">
-value
-object
-</a>
-or
-<a class="tref internalDFN" title="list-object" href="#dfn-list-object">
-list
-object
-</a>,
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid--reverse-value">
-invalid
-reverse
-property
-value
-</a>
-</code>
-has
-been
-detected
-and
-processing
-is
-aborted.
-</li>
-<li>
-If
-<i>
-reverse
-map
-</i>
-has
-no
-<i>
-property
-</i>
-member,
-create
-one
-and
-initialize
-its
-value
-to
-an
-empty
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>.
-</li>
-<li>
-Append
-<i>
-item
-</i>
-to
-the
-value
-of
-the
-<i>
-property
-</i>
-member
-in
-<i>
-reverse
-map
-</i>.
-</li>
-</ol>
-</li>
-</ol>
-</li>
-</ol>
-</li>
-<li>
-Continue
-with
-the
-next
-<i>
-key
-</i>
-from
-<i>
-element
-</i>.
-</li>
-</ol>
-</li>
-<li>
-Unless
-<i>
-expanded
-value
-</i>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-set
-the
-<i>
-expanded
-property
-</i>
-member
-of
-<i>
-result
-</i>
-to
-<i>
-expanded
-value
-</i>.
-</li>
-<li>
-Continue
-with
-the
-next
-<i>
-key
-</i>
-from
-<i>
-element
-</i>.
-</li>
-</ol>
-</li>
-<li>
-Otherwise,
-if
-<i>
-key
-</i>
-'s
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mapping
-</a>
-in
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-is
-<code>
-@language
-</code>
-and
-<i>
-value
-</i>
-is
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-then
-<i>
-value
-</i>
-is
-expanded
-from
-a
-<a class="tref externalDFN" title="language-map" href="http://www.w3.org/TR/2013/CR-json-ld-20130822/#dfn-language-map">
-language
-map
-</a>
-as
-follows:
-<ol class="algorithm">
-<li>
-Initialize
-<i>
-expanded
-value
-</i>
-to
-an
-empty
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>.
-</li>
-<li>
-For
-each
-key-value
-pair
-<i>
-language
-</i>
--
-<i>
-language
-value
-</i>
-in
-<i>
-value
-</i>,
-ordered
-lexicographically
-by
-<i>
-language
-</i>:
-<ol class="algorithm">
-<li>
-If
-<i>
-language
-value
-</i>
-is
-not
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-set
-it
-to
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-containing
-only
-<i>
-language
-value
-</i>.
-</li>
-<li>
-For
-each
-<i>
-item
-</i>
-in
-<i>
-language
-value
-</i>:
-<ol class="algorithm">
-<li>
-<i>
-item
-</i>
-must
-be
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>,
-otherwise
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid-language-map-value">
-invalid
-language
-map
-value
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-</li>
-<li>
-Append
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-to
-<i>
-expanded
-value
-</i>
-that
-consists
-of
-two
-key-value
-pairs:
-(
-<code>
-@value
-</code>
--
-<i>
-item
-</i>
-)
-and
-(
-<code>
-@language
-</code>
--lowercased
-<i>
-language
-</i>
-).
-</li>
-</ol>
-</li>
-</ol>
-</li>
-</ol>
-</li>
-<li>
-Otherwise,
-if
-<i>
-key
-</i>
-'s
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mapping
-</a>
-in
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-is
-<code>
-@index
-</code>
-and
-<i>
-value
-</i>
-is
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-then
-<i>
-value
-</i>
-is
-expanded
-from
-an
-index
-map
-as
-follows:
-<ol class="algorithm">
-<li>
-Initialize
-<i>
-expanded
-value
-</i>
-to
-an
-empty
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>.
-</li>
-<li>
-For
-each
-key-value
-pair
-<i>
-index
-</i>
--
-<i>
-index
-value
-</i>
-in
-<i>
-value
-</i>,
-ordered
-lexicographically
-by
-<i>
-index
-</i>:
-<ol class="algorithm">
-<li>
-If
-<i>
-index
-value
-</i>
-is
-not
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-set
-it
-to
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-containing
-only
-<i>
-index
-value
-</i>.
-</li>
-<li>
-Initialize
-<i>
-index
-value
-</i>
-to
-the
-result
-of
-using
-this
-algorithm
-recursively,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<i>
-key
-</i>
-as
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>,
-and
-<i>
-index
-value
-</i>
-as
-<i>
-element
-</i>.
-</li>
-<li>
-For
-each
-<i>
-item
-</i>
-in
-<i>
-index
-value
-</i>:
-<ol class="algorithm">
-<li>
-If
-<i>
-item
-</i>
-does
-not
-have
-the
-key
-<code>
-@index
-</code>,
-add
-the
-key-value
-pair
-(
-<code>
-@index
-</code>
--
-<i>
-index
-</i>
-)
-to
-<i>
-item
-</i>.
-</li>
-<li>
-Append
-<i>
-item
-</i>
-to
-<i>
-expanded
-value
-</i>.
-</li>
-</ol>
-</li>
-</ol>
-</li>
-</ol>
-</li>
-<li>
-Otherwise,
-initialize
-<i>
-expanded
-value
-</i>
-to
-the
-result
-of
-using
-this
-algorithm
-recursively,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<i>
-key
-</i>
-for
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>,
-and
-<i>
-value
-</i>
-for
-<i>
-element
-</i>.
-</li>
-<li>
-If
-<i>
-expanded
-value
-</i>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-ignore
-<i>
-key
-</i>
-by
-continuing
-to
-the
-next
-<i>
-key
-</i>
-from
-<i>
-element
-</i>.
-</li>
-<li>
-If
-the
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mapping
-</a>
-associated
-to
-<i>
-key
-</i>
-in
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-is
-<code>
-@list
-</code>
-and
-<i>
-expanded
-value
-</i>
-is
-not
-already
-a
-<a class="tref internalDFN" title="list-object" href="#dfn-list-object">
-list
-object
-</a>,
-convert
-<i>
-expanded
-value
-</i>
-to
-a
-<a class="tref internalDFN" title="list-object" href="#dfn-list-object">
-list
-object
-</a>
-by
-first
-setting
-it
-to
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-containing
-only
-<i>
-expanded
-value
-</i>
-if
-it
-is
-not
-already
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>,
-and
-then
-by
-setting
-it
-to
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-containing
-the
-key-value
-pair
-<code>
-@list
-</code>
--
-<i>
-expanded
-value
-</i>.
-</li>
-<li>
-Otherwise,
-if
-the
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-associated
-to
-<i>
-key
-</i>
-indicates
-that
-it
-is
-a
-<a class="tref internalDFN" title="reverse-property" href="#dfn-reverse-property">
-reverse
-property
-</a>
-<ol class="algorithm">
-<li>
-If
-<i>
-result
-</i>
-has
-no
-<code>
-@reverse
-</code>
-member,
-create
-one
-and
-initialize
-its
-value
-to
-an
-empty
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>.
-</li>
-<li>
-Reference
-the
-value
-of
-the
-<code>
-@reverse
-</code>
-member
-in
-<i>
-result
-</i>
-using
-the
-variable
-<i>
-reverse
-map
-</i>.
-</li>
-<li>
-If
-<i>
-expanded
-value
-</i>
-is
-not
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>,
-set
-it
-to
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-containing
-<i>
-expanded
-value
-</i>.
-</li>
-<li>
-For
-each
-<i>
-item
-</i>
-in
-<i>
-expanded
-value
-</i>
-<ol class="algorithm">
-<li>
-If
-<i>
-item
-</i>
-is
-a
-<a class="tref internalDFN" title="value-object" href="#dfn-value-object">
-value
-object
-</a>
-or
-<a class="tref internalDFN" title="list-object" href="#dfn-list-object">
-list
-object
-</a>,
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid--reverse-value">
-invalid
-reverse
-property
-value
-</a>
-</code>
-has
-been
-detected
-and
-processing
-is
-aborted.
-</li>
-<li>
-If
-<i>
-reverse
-map
-</i>
-has
-no
-<i>
-expanded
-property
-</i>
-member,
-create
-one
-and
-initialize
-its
-value
-to
-an
-empty
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>.
-</li>
-<li>
-Append
-<i>
-item
-</i>
-to
-the
-value
-of
-the
-<i>
-expanded
-property
-</i>
-member
-of
-<i>
-reverse
-map
-</i>.
-</li>
-</ol>
-</li>
-</ol>
-</li>
-<li>
-Otherwise,
-if
-<i>
-key
-</i>
-is
-not
-a
-<a class="tref internalDFN" title="reverse-property" href="#dfn-reverse-property">
-reverse
-property
-</a>:
-<ol class="algorithm">
-<li>
-If
-<i>
-result
-</i>
-does
-not
-have
-an
-<i>
-expanded
-property
-</i>
-member,
-create
-one
-and
-initialize
-its
-value
-to
-an
-empty
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>.
-</li>
-<li>
-Append
-<i>
-expanded
-value
-</i>
-to
-value
-of
-the
-<i>
-expanded
-property
-</i>
-member
-of
-<i>
-result
-</i>.
-</li>
-</ol>
-</li>
-</ol>
-</li>
-<li>
-If
-<i>
-result
-</i>
-contains
-the
-key
-<code>
-@value
-</code>:
-<ol class="algorithm">
-<li>
-The
-<i>
-result
-</i>
-must
-not
-contain
-any
-keys
-other
-than
-<code>
-@value
-</code>,
-<code>
-@language
-</code>,
-<code>
-@type
-</code>,
-and
-<code>
-@index
-</code>.
-It
-must
-not
-contain
-both
-the
-<code>
-@language
-</code>
-key
-and
-the
-<code>
-@type
-</code>
-key.
-Otherwise,
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid-value-object">
-invalid
-value
-object
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-</li>
-<li>
-If
-the
-value
-of
-<i>
-result
-</i>
-'s
-<code>
-@value
-</code>
-key
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-then
-set
-<i>
-result
-</i>
-to
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>.
-</li>
-<li>
-Otherwise,
-if
-the
-value
-of
-<i>
-result
-</i>
-'s
-<code>
-@value
-</code>
-member
-is
-not
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>
-and
-<i>
-result
-</i>
-contains
-the
-key
-<code>
-@language
-</code>,
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid-language-tagged-value">
-invalid
-language-tagged
-value
-</a>
-</code>
-error
-has
-been
-detected
-(only
-<a class="tref internalDFN" title="string" href="#dfn-string">
-strings
-</a>
-can
-be
-language-tagged)
-and
-processing
-is
-aborted.
-</li>
-<li>
-Otherwise,
-if
-the
-<i>
-result
-</i>
-has
-a
-<code>
-@type
-</code>
-member
-and
-its
-value
-is
-not
-<del class="diff-old">a
-string
-</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>,
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid-typed-value">
-invalid
-typed
-value
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-</li>
-</ol>
-</li>
-<li>
-Otherwise,
-if
-<i>
-result
-</i>
-contains
-the
-key
-<code>
-@type
-</code>
-and
-its
-associated
-value
-is
-not
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>,
-set
-it
-to
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-containing
-only
-the
-associated
-value.
-</li>
-<li>
-Otherwise,
-if
-<i>
-result
-</i>
-contains
-the
-key
-<code>
-@set
-</code>
-or
-<code>
-@list
-</code>:
-<ol class="algorithm">
-<li>
-The
-<i>
-result
-</i>
-must
-contain
-at
-most
-one
-other
-key
-and
-that
-key
-must
-be
-<code>
-@index
-</code>.
-Otherwise,
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.invalid-set-or-list-object">
-invalid
-set
-or
-list
-object
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-</li>
-<li>
-If
-<i>
-result
-</i>
-contains
-the
-key
-<code>
-@set
-</code>,
-then
-set
-<i>
-result
-</i>
-to
-the
-key's
-associated
-value.
-</li>
-</ol>
-</li>
-<li>
-If
-<i>
-result
-</i>
-contains
-only
-the
-key
-<code>
-@language
-</code>,
-set
-<i>
-result
-</i>
-to
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>.
-</li>
-<li>
-If
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>
-or
-<code>
-@graph
-</code>,
-drop
-free-floating
-values
-as
-follows:
-<ol class="algorithm">
-<li>
-If
-<i>
-result
-</i>
-is
-an
-empty
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-or
-contains
-the
-keys
-<code>
-@value
-</code>
-or
-<code>
-@list
-</code>,
-set
-<i>
-result
-</i>
-to
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>.
-</li>
-<li>
-Otherwise,
-if
-<i>
-result
-</i>
-is
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-whose
-only
-key
-is
-<code>
-@id
-</code>,
-set
-<i>
-result
-</i>
-to
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>.
-</li>
-</ol>
-</li>
-<li>
-Return
-<i>
-result
-</i>.
-</li>
-</ol>
-<p>
-If,
-after
-the
-above
-algorithm
-is
-run,
-the
-result
-is
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-that
-contains
-only
-an
-<code>
-@graph
-</code>
-key,
-set
-the
-result
-to
-the
-value
-of
-<code>
-@graph
-</code>
-'s
-value.
-Otherwise,
-if
-the
-result
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-set
-it
-to
-an
-empty
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>.
-Finally,
-if
-the
-result
-is
-not
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>,
-then
-set
-the
-result
-to
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-containing
-only
-the
-result.
-</p>
-</section>
-</section>
-<section id="value-expansion">
-<h3>
-<span class="secno">
-7.2
-</span>
-Value
-Expansion
-</h3>
-<p>
-Some
-values
-in
-JSON-LD
-can
-be
-expressed
-in
-a
-<a class="tref internalDFN" title="compacted-form" href="#dfn-compacted-form">
-compact
-form
-</a>.
-These
-values
-are
-required
-to
-be
-<a class="tref internalDFN" title="expansion" href="#dfn-expansion">
-expanded
-</a>
-at
-times
-when
-processing
-JSON-LD
-documents.
-A
-value
-is
-said
-to
-be
-in
-<dfn title="expanded-form" id="dfn-expanded-form">
-expanded
-form
-</dfn>
-after
-the
-application
-of
-this
-algorithm.
-</p>
-<section class="informative">
-<h4 id="overview-4">
-Overview
-</h4>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-If
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-has
-a
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>
-in
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-set
-to
-<code>
-@id
-</code>
-or
-<code>
-@vocab
-</code>,
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-with
-a
-single
-member
-<code>
-@id
-</code>
-whose
-value
-is
-the
-result
-of
-using
-the
-<a href="#iri-expansion">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-Expansion
-algorithm
-</a>
-on
-<i>
-value
-</i>
-is
-returned.
-</p>
-<p>
-Otherwise,
-the
-result
-will
-be
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-containing
-an
-<code>
-@value
-</code>
-member
-whose
-value
-is
-the
-passed
-<i>
-value
-</i>.
-Additionally,
-an
-<code>
-@type
-</code>
-member
-will
-be
-included
-if
-there
-is
-a
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>
-associated
-with
-the
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-or
-an
-<code>
-@language
-</code>
-member
-if
-<i>
-value
-</i>
-is
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>
-and
-there
-is
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mapping
-</a>
-associated
-with
-the
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>.
-</p>
-</section>
-<section>
-<h4 id="algorithm-4">
-Algorithm
-</h4>
-<p>
-The
-algorithm
-takes
-three
-required
-inputs:
-an
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-an
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>,
-and
-a
-<i>
-value
-</i>
-to
-expand.
-</p>
-<ol class="algorithm">
-<li>
-If
-the
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-has
-a
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>
-in
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-that
-is
-<code>
-@id
-</code>,
-return
-a
-new
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-containing
-a
-single
-key-value
-pair
-where
-the
-key
-is
-<code>
-@id
-</code>
-and
-the
-value
-is
-the
-result
-of
-using
-the
-<a href="#iri-expansion">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-Expansion
-algorithm
-</a>,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<i>
-value
-</i>,
-and
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-for
-<i>
-document
-relative
-</i>.
-</li>
-<li>
-If
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-has
-a
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>
-in
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-that
-is
-<code>
-@vocab
-</code>,
-return
-a
-new
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-containing
-a
-single
-key-value
-pair
-where
-the
-key
-is
-<code>
-@id
-</code>
-and
-the
-value
-is
-the
-result
-of
-using
-the
-<a href="#iri-expansion">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-Expansion
-algorithm
-</a>,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<i>
-value
-</i>,
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-for
-<i>
-vocab
-</i>,
-and
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-for
-<i>
-document
-relative
-</i>.
-</li>
-<li>
-Otherwise,
-initialize
-<i>
-result
-</i>
-to
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-with
-an
-<code>
-@value
-</code>
-member
-whose
-value
-is
-set
-to
-<i>
-value
-</i>.
-</li>
-<li>
-If
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-has
-a
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>
-in
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-add
-an
-<code>
-@type
-</code>
-member
-to
-<i>
-result
-</i>
-and
-set
-its
-value
-to
-the
-value
-associated
-with
-the
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>.
-</li>
-<li>
-Otherwise,
-if
-<i>
-value
-</i>
-is
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>:
-<ol class="algorithm">
-<li>
-If
-a
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mapping
-</a>
-is
-associated
-with
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-in
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-add
-an
-<code>
-@language
-</code>
-to
-<i>
-result
-</i>
-and
-set
-its
-value
-to
-the
-language
-code
-associated
-with
-the
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mapping
-</a>
-;
-unless
-the
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mapping
-</a>
-is
-set
-to
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>
-in
-which
-case
-no
-member
-is
-added.
-</li>
-<li>
-Otherwise,
-if
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-has
-a
-<a class="tref internalDFN" title="default-language" href="#dfn-default-language">
-default
-language
-</a>,
-add
-an
-<code>
-@language
-</code>
-to
-<i>
-result
-</i>
-and
-set
-its
-value
-to
-the
-<a class="tref internalDFN" title="default-language" href="#dfn-default-language">
-default
-language
-</a>.
-</li>
-</ol>
-</li>
-<li>
-Return
-<i>
-result
-</i>.
-</li>
-</ol>
-</section>
-</section>
-</section>
-<section id="compaction-algorithms">
-<h2>
-<span class="secno">
-8.
-</span>
-Compaction
-Algorithms
-</h2>
-<section id="compaction-algorithm">
-<h3>
-<span class="secno">
-8.1
-</span>
-Compaction
-Algorithm
-</h3>
-<p>
-This
-algorithm
-compacts
-a
-JSON-LD
-document,
-such
-that
-the
-given
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>
-is
-applied.
-This
-must
-result
-in
-shortening
-any
-applicable
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-IRIs
-</a>
-to
-<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>,
-any
-applicable
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keywords
-</a>
-to
-<a class="tref internalDFN" title="keyword-alias" href="#dfn-keyword-alias">
-keyword
-aliases
-</a>,
-and
-any
-applicable
-<a class="tref internalDFN" title="json-ld-value" href="#dfn-json-ld-value">
-JSON-LD
-values
-</a>
-expressed
-in
-<a class="tref internalDFN" title="expanded-form" href="#dfn-expanded-form">
-expanded
-form
-</a>
-to
-simple
-values
-such
-as
-<a class="tref internalDFN" title="string" href="#dfn-string">
-strings
-</a>
-or
-<a class="tref internalDFN" title="number" href="#dfn-number">
-numbers
-</a>.
-</p>
-<section class="informative">
-<h4 id="overview-5">
-Overview
-</h4>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-Starting
-with
-its
-root
-<i>
-element
-</i>,
-we
-can
-process
-the
-JSON-LD
-document
-recursively,
-until
-we
-have
-a
-fully
-<a class="tref internalDFN" title="compaction" href="#dfn-compaction">
-compacted
-</a>
-<i>
-result
-</i>.
-When
-<a class="tref internalDFN" title="compaction" href="#dfn-compaction">
-compacting
-</a>
-an
-<i>
-element
-</i>,
-we
-can
-treat
-each
-one
-differently
-according
-to
-its
-type,
-in
-order
-to
-break
-down
-the
-problem:
-</p>
-<ol>
-<li>
-If
-the
-<i>
-element
-</i>
-is
-a
-<a class="tref internalDFN" title="scalar" href="#dfn-scalar">
-scalar
-</a>,
-it
-is
-already
-in
-<a class="tref internalDFN" title="compacted-form" href="#dfn-compacted-form">
-compacted
-form
-</a>,
-so
-we
-simply
-return
-it.
-</li>
-<li>
-If
-the
-<i>
-element
-</i>
-is
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>,
-we
-compact
-each
-of
-its
-items
-recursively
-and
-return
-them
-in
-a
-new
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>.
-</li>
-<li>
-Otherwise
-<i>
-element
-</i>
-is
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>.
-The
-value
-of
-each
-key
-in
-element
-is
-compacted
-recursively.
-Some
-of
-the
-keys
-will
-be
-compacted,
-using
-the
-<a href="#iri-compaction">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-Compaction
-algorithm
-</a>,
-to
-<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>
-and
-others
-will
-be
-compacted
-from
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keywords
-</a>
-to
-<a class="tref internalDFN" title="keyword-alias" href="#dfn-keyword-alias">
-keyword
-aliases
-</a>
-or
-simply
-left
-unchanged
-because
-they
-do
-not
-have
-definitions
-in
-the
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>.
-Values
-will
-be
-converted
-to
-<a class="tref internalDFN" title="compacted-form" href="#dfn-compacted-form">
-compacted
-form
-</a>
-via
-the
-<a href="#value-compaction">
-Value
-Compaction
-algorithm
-</a>.
-Some
-data
-will
-be
-reshaped
-based
-on
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mappings
-</a>
-specified
-in
-the
-context
-such
-as
-<code>
-@index
-</code>
-or
-<code>
-@language
-</code>
-maps.
-</li>
-</ol>
-<p>
-The
-final
-output
-is
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-with
-a
-<code>
-@context
-</code>
-key,
-if
-a
-non-empty
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>
-was
-given,
-where
-the
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-is
-either
-<i>
-result
-</i>
-or
-a
-wrapper
-for
-it
-where
-<i>
-result
-</i>
-appears
-as
-the
-value
-of
-an
-(aliased)
-<code>
-@graph
-</code>
-key
-because
-<i>
-result
-</i>
-contained
-two
-or
-more
-items
-in
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>.
-</p>
-</section>
-<section>
-<h4 id="algorithm-5">
-Algorithm
-</h4>
-<p>
-The
-algorithm
-takes
-five
-required
-input
-variables:
-an
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-an
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>,
-an
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>,
-an
-<i>
-element
-</i>
-to
-be
-compacted,
-and
-a
-flag
-<code class="idlMemberName">
-<a href="#widl-JsonLdOptions-compactArrays">
-compactArrays
-</a>
-</code>.
-To
-begin,
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-is
-set
-to
-the
-result
-of
-performing
-<a href="#context-processing-algorithm">
-Context
-Processing
-</a>
-on
-the
-passed
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>,
-the
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>
-is
-set
-to
-the
-result
-of
-performing
-the
-<a href="#inverse-context-creation">
-Inverse
-Context
-Creation
-algorithm
-</a>
-on
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-the
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-is
-set
-to
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-<i>
-element
-</i>
-is
-set
-to
-the
-result
-of
-performing
-the
-<a href="#expansion-algorithm">
-Expansion
-algorithm
-</a>
-on
-the
-<a class="tref internalDFN" title="json-ld-input" href="#dfn-json-ld-input">
-JSON-LD
-input
-</a>,
-and,
-if
-not
-passed,
-<code class="idlMemberName">
-<a href="#widl-JsonLdOptions-compactArrays">
-compactArrays
-</a>
-</code>
-is
-set
-to
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>.
-</p>
-<ol class="algorithm">
-<li>
-If
-<i>
-element
-</i>
-is
-a
-<a class="tref internalDFN" title="scalar" href="#dfn-scalar">
-scalar
-</a>,
-it
-is
-already
-in
-its
-most
-compact
-form,
-so
-simply
-return
-<i>
-element
-</i>.
-</li>
-<li>
-If
-<i>
-element
-</i>
-is
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>:
-<ol class="algorithm">
-<li>
-Initialize
-<i>
-result
-</i>
-to
-an
-empty
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>.
-</li>
-<li>
-For
-each
-<i>
-item
-</i>
-in
-<i>
-element
-</i>:
-<ol class="algorithm">
-<li>
-Initialize
-<i>
-compacted
-item
-</i>
-to
-the
-result
-of
-using
-this
-algorithm
-recursively,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>,
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>,
-and
-<em>
-item
-</em>
-for
-<i>
-element
-</i>.
-</li>
-<li>
-If
-<i>
-compacted
-item
-</i>
-is
-not
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-then
-append
-it
-to
-<i>
-result
-</i>.
-</li>
-</ol>
-</li>
-<li>
-If
-<i>
-result
-</i>
-contains
-only
-one
-item
-(it
-has
-a
-length
-of
-<code>
-1
-</code>
-),
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-has
-no
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mapping
-</a>
-in
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-and
-<code class="idlMemberName">
-<a href="#widl-JsonLdOptions-compactArrays">
-compactArrays
-</a>
-</code>
-is
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>,
-set
-<i>
-result
-</i>
-to
-its
-only
-item.
-</li>
-<li>
-Return
-<i>
-result
-</i>.
-</li>
-</ol>
-</li>
-<li>
-Otherwise
-<i>
-element
-</i>
-is
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>.
-</li>
-<li>
-If
-<i>
-element
-</i>
-has
-an
-<code>
-@value
-</code>
-or
-<code>
-@id
-</code>
-member
-and
-the
-result
-of
-using
-the
-<a href="#value-compaction">
-Value
-Compaction
-algorithm
-</a>,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>,
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>,and
-<i>
-element
-</i>
-as
-<i>
-value
-</i>
-is
-a
-<a class="tref internalDFN" title="scalar" href="#dfn-scalar">
-scalar
-</a>,
-return
-that
-result.
-</li>
-<li>
-Initialize
-<i>
-inside
-reverse
-</i>
-to
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-if
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-equals
-<code>
-@reverse
-</code>,
-otherwise
-to
-<a class="tref internalDFN" title="false" href="#dfn-false">
-false
-</a>.
-</li>
-<li>
-Initialize
-<i>
-result
-</i>
-to
-an
-empty
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>.
-</li>
-<li>
-For
-each
-key
-<i>
-expanded
-property
-</i>
-and
-value
-<i>
-expanded
-value
-</i>
-in
-<i>
-element
-</i>,
-ordered
-lexicographically
-by
-<i>
-expanded
-property
-</i>:
-<ol class="algorithm">
-<li>
-If
-<i>
-expanded
-property
-</i>
-is
-<code>
-@id
-</code>
-or
-<code>
-@type
-</code>:
-<ol class="algorithm">
-<li>
-If
-<i>
-expanded
-value
-</i>
-is
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>,
-then
-initialize
-<i>
-compacted
-value
-</i>
-to
-the
-result
-of
-using
-the
-<a href="#iri-compaction">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-Compaction
-algorithm
-</a>,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>,
-<i>
-expanded
-value
-</i>
-for
-<i>
-iri
-</i>,
-and
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-for
-<i>
-vocab
-</i>
-if
-<i>
-expanded
-property
-</i>
-is
-<code>
-@type
-</code>,
-<a class="tref internalDFN" title="false" href="#dfn-false">
-false
-</a>
-otherwise.
-</li>
-<li>
-Otherwise,
-<i>
-expanded
-value
-</i>
-must
-be
-a
-<code>
-@type
-</code>
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>:
-<ol class="algorithm">
-<li>
-Initialize
-<i>
-compacted
-value
-</i>
-to
-an
-empty
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>.
-</li>
-<li>
-For
-each
-item
-<i>
-expanded
-type
-</i>
-in
-<i>
-expanded
-value
-</i>,
-append
-the
-result
-of
-of
-using
-the
-<a href="#iri-compaction">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-Compaction
-algorithm
-</a>,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>,
-<i>
-expanded
-type
-</i>
-for
-<i>
-iri
-</i>,
-and
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-for
-<i>
-vocab
-</i>,
-to
-<i>
-compacted
-value
-</i>.
-</li>
-<li>
-If
-<i>
-compacted
-value
-</i>
-contains
-only
-one
-item
-(it
-has
-a
-length
-of
-<code>
-1
-</code>
-),
-then
-set
-<i>
-compacted
-value
-</i>
-to
-its
-only
-item.
-</li>
-</ol>
-</li>
-<li>
-Initialize
-<i>
-alias
-</i>
-to
-the
-result
-of
-using
-the
-<a href="#iri-compaction">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-Compaction
-algorithm
-</a>,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>,
-<i>
-expanded
-property
-</i>
-for
-<i>
-iri
-</i>,
-and
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-for
-<i>
-vocab
-</i>.
-</li>
-<li>
-Add
-a
-member
-<i>
-alias
-</i>
-to
-<i>
-result
-</i>
-whose
-value
-is
-set
-to
-<i>
-compacted
-value
-</i>
-and
-continue
-to
-the
-next
-<i>
-expanded
-property
-</i>.
-</li>
-</ol>
-</li>
-<li>
-If
-<i>
-expanded
-property
-</i>
-is
-<code>
-@reverse
-</code>:
-<ol class="algorithm">
-<li>
-Initialize
-<i>
-compacted
-value
-</i>
-to
-the
-result
-of
-using
-this
-algorithm
-recursively,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>,
-<code>
-@reverse
-</code>
-for
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>,
-and
-<i>
-expanded
-value
-</i>
-for
-<i>
-element
-</i>.
-</li>
-<li>
-For
-each
-<i>
-property
-</i>
-and
-<i>
-value
-</i>
-in
-<i>
-compacted
-value
-</i>:
-<ol class="algorithm">
-<li>
-If
-the
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-for
-<i>
-property
-</i>
-in
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-indicates
-that
-<i>
-property
-</i>
-is
-a
-<a class="tref internalDFN" title="reverse-property" href="#dfn-reverse-property">
-reverse
-property
-</a>
-<ol class="algorithm">
-<li>
-If
-<ins class="diff-new">the
-</ins><a class="tref internalDFN" title="term-definition" href="#dfn-term-definition"><ins class="diff-new">
-term
-definition
-</ins></a><ins class="diff-new">
-for
-</ins><i><ins class="diff-new">
-property
-</ins></i><ins class="diff-new">
-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">
-has
-a
-</ins><a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping"><ins class="diff-new">
-container
-mapping
-</ins></a><ins class="diff-new">
-of
-</ins><code><ins class="diff-new">
-@set
-</ins></code><ins class="diff-new">
-or
-</ins>
-<code class="idlMemberName">
-<a href="#widl-JsonLdOptions-compactArrays">
-compactArrays
-</a>
-</code>
-is
-<a class="tref internalDFN" title="false" href="#dfn-false">
-false
-</a>,
-and
-<i>
-value
-</i>
-is
-not
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>,
-set
-<i>
-value
-</i>
-to
-a
-new
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-containing
-only
-<i>
-value
-</i>.
-</li>
-<li>
-If
-<i>
-property
-</i>
-is
-not
-a
-member
-of
-<i>
-result
-</i>,
-add
-one
-and
-set
-its
-value
-to
-<i>
-value
-</i>.
-</li>
-<li>
-Otherwise,
-if
-the
-value
-of
-the
-<i>
-property
-</i>
-member
-of
-<i>
-result
-</i>
-is
-not
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>,
-set
-it
-to
-a
-new
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-containing
-only
-the
-value.
-Then
-append
-<i>
-value
-</i>
-to
-its
-value
-if
-<i>
-value
-</i>
-is
-not
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>,
-otherwise
-append
-each
-of
-its
-items.
-</li>
-<li>
-Remove
-the
-<i>
-property
-</i>
-member
-from
-<i>
-compacted
-value
-</i>.
-</li>
-</ol>
-</li>
-</ol>
-</li>
-<li>
-If
-<i>
-compacted
-value
-</i>
-has
-some
-remaining
-members,
-i.e.,
-it
-is
-not
-an
-empty
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>:
-<ol class="algorithm">
-<li>
-Initialize
-<i>
-alias
-</i>
-to
-the
-result
-of
-using
-the
-<a href="#iri-compaction">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-Compaction
-algorithm
-</a>,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>,
-<code>
-@reverse
-</code>
-for
-<i>
-iri
-</i>,
-and
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-for
-<i>
-vocab
-</i>.
-</li>
-<li>
-Set
-the
-value
-of
-the
-<i>
-alias
-</i>
-member
-of
-<i>
-result
-</i>
-to
-<i>
-compacted
-value
-<del class="diff-old">and
-continue
-</del>
-</i>.
-</li>
-</ol>
-</li>
-<li>
-<ins class="diff-chg">Continue
-</ins>
-with
-the
-next
-<i>
-expanded
-property
-</i>
-from
-<i>
-element
-</i>.
-</li>
-</ol>
-</li>
-<li>
-If
-<i>
-expanded
-property
-</i>
-is
-<code>
-@index
-</code>
-and
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-has
-a
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mapping
-</a>
-in
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-that
-is
-<code>
-@index
-</code>,
-then
-the
-compacted
-result
-will
-be
-inside
-of
-an
-<code>
-@index
-</code>
-container,
-drop
-the
-<code>
-@index
-</code>
-property
-by
-continuing
-to
-the
-next
-<i>
-expanded
-property
-</i>.
-</li>
-<li>
-Otherwise,
-if
-<i>
-expanded
-property
-</i>
-is
-<code>
-@index
-</code>,
-<code>
-@value
-</code>,
-or
-<code>
-@language
-</code>:
-<ol class="algorithm">
-<li>
-Initialize
-<i>
-alias
-</i>
-to
-the
-result
-of
-using
-the
-<a href="#iri-compaction">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-Compaction
-algorithm
-</a>,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>,
-<i>
-expanded
-property
-</i>
-for
-<i>
-iri
-</i>,
-and
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-for
-<i>
-vocab
-</i>.
-</li>
-<li>
-Add
-a
-member
-<i>
-alias
-</i>
-to
-<i>
-result
-</i>
-whose
-value
-is
-set
-to
-<i>
-expanded
-value
-</i>
-and
-continue
-with
-the
-next
-<i>
-expanded
-property
-</i>.
-</li>
-</ol>
-</li>
-<li>
-If
-<i>
-expanded
-value
-</i>
-is
-an
-empty
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>:
-<ol class="algorithm">
-<li>
-Initialize
-<i>
-item
-active
-property
-</i>
-to
-the
-result
-of
-using
-the
-<a href="#iri-compaction">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-Compaction
-algorithm
-</a>,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>,
-<i>
-expanded
-property
-</i>
-for
-<i>
-iri
-</i>,
-<i>
-expanded
-value
-</i>
-for
-<i>
-value
-</i>,
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-for
-<i>
-vocab
-</i>,
-and
-<i>
-inside
-reverse
-</i>.
-</li>
-<li>
-If
-<i>
-result
-</i>
-does
-not
-have
-the
-key
-that
-equals
-<i>
-item
-active
-property
-</i>,
-set
-this
-key's
-value
-in
-<i>
-result
-</i>
-to
-an
-empty
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>.
-Otherwise,
-if
-the
-key's
-value
-is
-not
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>,
-then
-set
-it
-to
-one
-containing
-only
-the
-value.
-</li>
-</ol>
-</li>
-<li>
-At
-this
-point,
-<i>
-expanded
-value
-</i>
-must
-be
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-due
-to
-the
-<a href="#expansion-algorithm">
-Expansion
-algorithm
-</a>.
-For
-each
-item
-<i>
-expanded
-item
-</i>
-in
-<i>
-expanded
-value
-</i>:
-<ol class="algorithm">
-<li>
-Initialize
-<i>
-item
-active
-property
-</i>
-to
-the
-result
-of
-using
-the
-<a href="#iri-compaction">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-Compaction
-algorithm
-</a>,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>,
-<i>
-expanded
-property
-</i>
-for
-<i>
-iri
-</i>,
-<i>
-expanded
-item
-</i>
-for
-<i>
-value
-</i>,
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-for
-<i>
-vocab
-</i>,
-and
-<i>
-inside
-reverse
-</i>.
-</li>
-<li>
-Initialize
-<i>
-container
-</i>
-to
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>.
-If
-there
-is
-a
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mapping
-</a>
-for
-<i>
-item
-active
-property
-</i>
-in
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-set
-<i>
-container
-</i>
-to
-its
-value.
-</li>
-<li>
-Initialize
-<i>
-compacted
-item
-</i>
-to
-the
-result
-of
-using
-this
-algorithm
-recursively,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>,
-<i>
-item
-active
-property
-</i>
-for
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>,
-<i>
-expanded
-item
-</i>
-for
-<i>
-element
-</i>
-if
-it
-does
-not
-contain
-the
-key
-<code>
-@list
-</code>,
-otherwise
-pass
-the
-key's
-associated
-value
-for
-<i>
-element
-</i>.
-</li>
-<li>
-If
-<i>
-expanded
-item
-</i>
-is
-a
-<a class="tref internalDFN" title="list-object" href="#dfn-list-object">
-list
-object
-</a>:
-<ol class="algorithm">
-<li>
-If
-<i>
-compacted
-item
-</i>
-is
-not
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>,
-then
-set
-it
-to
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-containing
-only
-<i>
-compacted
-item
-</i>.
-</li>
-<li>
-If
-<i>
-container
-</i>
-is
-not
-<code>
-@list
-</code>:
-<ol class="algorithm">
-<li>
-Convert
-<i>
-compacted
-item
-</i>
-to
-a
-<a class="tref internalDFN" title="list-object" href="#dfn-list-object">
-list
-object
-</a>
-by
-setting
-it
-to
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-containing
-key-value
-pair
-where
-the
-key
-is
-the
-result
-of
-the
-<a href="#iri-compaction">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-Compaction
-algorithm
-</a>,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>,
-<code>
-@list
-</code>
-for
-<i>
-iri
-</i>,
-and
-<i>
-compacted
-item
-</i>
-for
-<i>
-value
-</i>.
-</li>
-<li>
-If
-<i>
-expanded
-item
-</i>
-contains
-the
-key
-<code>
-@index
-</code>,
-then
-add
-a
-key-value
-pair
-to
-<i>
-compacted
-item
-</i>
-where
-the
-key
-is
-the
-result
-of
-the
-<a href="#iri-compaction">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-Compaction
-algorithm
-</a>,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>,
-<code>
-@index
-</code>
-as
-<i>
-iri
-</i>,
-and
-the
-value
-associated
-with
-the
-<code>
-@index
-</code>
-key
-in
-<i>
-expanded
-item
-</i>
-as
-<i>
-value
-</i>.
-</li>
-</ol>
-</li>
-<li>
-Otherwise,
-<i>
-item
-active
-property
-</i>
-must
-not
-be
-a
-key
-in
-<i>
-result
-</i>
-because
-there
-cannot
-be
-two
-<a class="tref internalDFN" title="list-object" href="#dfn-list-object">
-list
-objects
-</a>
-associated
-with
-an
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-that
-has
-a
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mapping
-</a>
-;
-a
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.compaction-to-list-of-lists">
-compaction
-to
-list
-of
-lists
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-</li>
-</ol>
-</li>
-<li>
-If
-<i>
-container
-</i>
-is
-<code>
-@language
-</code>
-or
-<code>
-@index
-</code>:
-<ol class="algorithm">
-<li>
-If
-<i>
-item
-active
-property
-</i>
-is
-not
-a
-key
-in
-<i>
-result
-</i>,
-initialize
-it
-to
-an
-empty
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>.
-Initialize
-<i>
-map
-object
-</i>
-to
-the
-value
-of
-<i>
-item
-active
-property
-</i>
-in
-<i>
-result
-</i>.
-</li>
-<li>
-If
-<i>
-container
-</i>
-is
-<code>
-@language
-</code>
-and
-<i>
-compacted
-item
-</i>
-contains
-the
-key
-<code>
-@value
-</code>,
-then
-set
-<i>
-compacted
-item
-</i>
-to
-the
-value
-associated
-with
-its
-<code>
-@value
-</code>
-key.
-</li>
-<li>
-Initialize
-<i>
-map
-key
-</i>
-to
-the
-value
-associated
-with
-with
-the
-key
-that
-equals
-<i>
-container
-</i>
-in
-<i>
-expanded
-item
-</i>.
-</li>
-<li>
-If
-<i>
-map
-key
-</i>
-is
-not
-a
-key
-in
-<i>
-map
-object
-</i>,
-then
-set
-this
-key's
-value
-in
-<i>
-map
-object
-</i>
-to
-<i>
-compacted
-item
-</i>.
-Otherwise,
-if
-the
-value
-is
-not
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>,
-then
-set
-it
-to
-one
-containing
-only
-the
-value
-and
-then
-append
-<i>
-compacted
-item
-</i>
-to
-it.
-</li>
-</ol>
-</li>
-<li>
-Otherwise,
-<ol class="algorithm">
-<li>
-If
-<code class="idlMemberName">
-<a href="#widl-JsonLdOptions-compactArrays">
-compactArrays
-</a>
-</code>
-is
-<a class="tref internalDFN" title="false" href="#dfn-false">
-false
-</a>,
-<i>
-container
-</i>
-is
-<code>
-@set
-</code>
-or
-<code>
-@list
-</code>,
-or
-<i>
-expanded
-property
-</i>
-is
-<code>
-@list
-</code>
-or
-<code>
-@graph
-</code>
-and
-<i>
-compacted
-item
-</i>
-is
-not
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>,
-set
-it
-to
-a
-new
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-containing
-only
-<i>
-compacted
-item
-</i>.
-</li>
-<li>
-If
-<i>
-item
-active
-property
-</i>
-is
-not
-a
-key
-in
-<i>
-result
-</i>
-then
-add
-the
-key-value
-pair,
-(
-<i>
-item
-active
-property
-</i>
--
-<i>
-compacted
-item
-</i>
-),
-to
-<i>
-result
-</i>.
-</li>
-<li>
-Otherwise,
-if
-the
-value
-associated
-with
-the
-key
-that
-equals
-<i>
-item
-active
-property
-</i>
-in
-<i>
-result
-</i>
-is
-not
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>,
-set
-it
-to
-a
-new
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-containing
-only
-the
-value.
-Then
-append
-<i>
-compacted
-item
-</i>
-to
-the
-value
-if
-<i>
-compacted
-item
-</i>
-is
-not
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>,
-otherwise,
-concatenate
-it.
-</li>
-</ol>
-</li>
-</ol>
-</li>
-</ol>
-</li>
-<li>
-Return
-<i>
-result
-</i>.
-</li>
-</ol>
-<p>
-If,
-after
-the
-algorithm
-outlined
-above
-is
-run,
-the
-result
-<i>
-result
-</i>
-is
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>,
-replace
-it
-with
-a
-new
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-with
-a
-single
-member
-whose
-key
-is
-the
-result
-of
-using
-the
-<a href="#iri-compaction">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-Compaction
-algorithm
-</a>,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>,
-and
-<code>
-@graph
-</code>
-as
-<i>
-iri
-</i>
-and
-whose
-value
-is
-the
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-<i>
-result
-</i>.
-Finally,
-if
-a
-non-empty
-<i>
-context
-</i>
-has
-been
-passed,
-add
-an
-<code>
-@context
-</code>
-member
-to
-<i>
-result
-</i>
-and
-set
-its
-value
-to
-the
-passed
-<i>
-context
-</i>.
-</p>
-</section>
-</section>
-<section id="inverse-context-creation">
-<h3>
-<span class="secno">
-8.2
-</span>
-Inverse
-Context
-Creation
-</h3>
-<p>
-When
-there
-is
-more
-than
-one
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-that
-could
-be
-chosen
-to
-compact
-an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>,
-it
-has
-to
-be
-ensured
-that
-the
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-selection
-is
-both
-deterministic
-and
-represents
-the
-most
-context-appropriate
-choice
-whilst
-taking
-into
-consideration
-algorithmic
-complexity.
-</p>
-<p>
-In
-order
-to
-make
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-selections,
-the
-concept
-of
-an
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>
-is
-introduced.
-An
-<dfn title="inverse-context" id="dfn-inverse-context">
-inverse
-context
-</dfn>
-is
-essentially
-a
-reverse
-lookup
-table
-that
-maps
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mappings
-</a>,
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mappings
-</a>,
-and
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mappings
-</a>
-to
-a
-simple
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-for
-a
-given
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>.
-A
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>
-only
-needs
-to
-be
-generated
-for
-an
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-if
-it
-is
-being
-used
-for
-<a class="tref internalDFN" title="compaction" href="#dfn-compaction">
-compaction
-</a>.
-</p>
-<p>
-To
-make
-use
-of
-an
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>,
-a
-list
-of
-preferred
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mappings
-</a>
-and
-the
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>
-or
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mapping
-</a>
-are
-gathered
-for
-a
-particular
-value
-associated
-with
-an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>.
-These
-parameters
-are
-then
-fed
-to
-the
-<a href="#term-selection">
-Term
-Selection
-algorithm
-</a>,
-which
-will
-find
-the
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-that
-most
-appropriately
-matches
-the
-value's
-mappings.
-</p>
-<section class="informative">
-<h4 id="overview-6">
-Overview
-</h4>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-To
-create
-an
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>
-for
-a
-given
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-each
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-in
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-is
-visited,
-ordered
-by
-length,
-shortest
-first
-(ties
-are
-broken
-by
-choosing
-the
-lexicographically
-least
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-).
-For
-each
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>,
-an
-entry
-is
-added
-to
-the
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>
-for
-each
-possible
-combination
-of
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mapping
-</a>
-and
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>
-or
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mapping
-</a>
-that
-would
-legally
-match
-the
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>.
-Illegal
-matches
-include
-differences
-between
-a
-value's
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>
-or
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mapping
-</a>
-and
-that
-of
-the
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>.
-If
-a
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-has
-no
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mapping
-</a>,
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>,
-or
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mapping
-</a>
-(or
-some
-combination
-of
-these),
-then
-it
-will
-have
-an
-entry
-in
-the
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>
-using
-the
-special
-key
-<code>
-@none
-</code>.
-This
-allows
-the
-<a href="#term-selection">
-Term
-Selection
-algorithm
-</a>
-to
-fall
-back
-to
-choosing
-more
-generic
-<a class="tref internalDFN" title="term" href="#dfn-term">
-terms
-</a>
-when
-a
-more
-specifically-matching
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-is
-not
-available
-for
-a
-particular
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-and
-value
-combination.
-</p>
-</section>
-<section>
-<h4 id="algorithm-6">
-Algorithm
-</h4>
-<p>
-The
-algorithm
-takes
-one
-required
-input:
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-that
-the
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>
-is
-being
-created
-for.
-</p>
-<ol class="algorithm">
-<li>
-Initialize
-<i>
-result
-</i>
-to
-an
-empty
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>.
-</li>
-<li>
-Initialize
-<i>
-default
-language
-</i>
-to
-<code>
-@none
-</code>.
-If
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-has
-a
-<a class="tref internalDFN" title="default-language" href="#dfn-default-language">
-default
-language
-</a>,
-set
-<i>
-default
-language
-</i>
-to
-it.
-</li>
-<li>
-For
-each
-key
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-and
-value
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-in
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-ordered
-by
-shortest
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-first
-(breaking
-ties
-by
-choosing
-the
-lexicographically
-least
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-):
-<ol class="algorithm">
-<li>
-If
-the
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-cannot
-be
-selected
-during
-<a class="tref internalDFN" title="compaction" href="#dfn-compaction">
-compaction
-</a>,
-so
-continue
-to
-the
-next
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>.
-</li>
-<li>
-Initialize
-<i>
-container
-</i>
-to
-<code>
-@none
-</code>.
-If
-there
-is
-a
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mapping
-</a>
-in
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>,
-set
-<i>
-container
-</i>
-to
-its
-associated
-value.
-</li>
-<li>
-Initialize
-<i>
-iri
-</i>
-to
-the
-value
-of
-the
-<a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-mapping
-</a>
-for
-the
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>.
-</li>
-<li>
-If
-<i>
-iri
-</i>
-is
-not
-a
-key
-in
-<i>
-result
-</i>,
-add
-a
-key-value
-pair
-where
-the
-key
-is
-<i>
-iri
-</i>
-and
-the
-value
-is
-an
-empty
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-to
-<i>
-result
-</i>.
-</li>
-<li>
-Reference
-the
-value
-associated
-with
-the
-<i>
-iri
-</i>
-member
-in
-<i>
-result
-</i>
-using
-the
-variable
-<i>
-container
-map
-</i>.
-</li>
-<li>
-If
-<i>
-container
-map
-</i>
-has
-no
-<i>
-container
-</i>
-member,
-create
-one
-and
-set
-its
-value
-to
-a
-new
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-with
-two
-members.
-The
-first
-member
-is
-<code>
-@language
-</code>
-and
-its
-value
-is
-a
-new
-empty
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>,
-the
-second
-member
-is
-<code>
-@type
-</code>
-and
-its
-value
-is
-a
-new
-empty
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>.
-</li>
-<li>
-Reference
-the
-value
-associated
-with
-the
-<i>
-container
-</i>
-member
-in
-<i>
-container
-map
-</i>
-using
-the
-variable
-<i>
-type/language
-map
-</i>.
-</li>
-<li>
-If
-the
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-indicates
-that
-the
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-represents
-a
-<a class="tref internalDFN" title="reverse-property" href="#dfn-reverse-property">
-reverse
-property
-</a>:
-<ol class="algorithm">
-<li>
-Reference
-the
-value
-associated
-with
-the
-<code>
-@type
-</code>
-member
-in
-<i>
-type/language
-map
-</i>
-using
-the
-variable
-<i>
-type
-map
-</i>.
-</li>
-<li>
-If
-<i>
-type
-map
-</i>
-does
-not
-have
-a
-<code>
-@reverse
-</code>
-member,
-create
-one
-and
-set
-its
-value
-to
-the
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-being
-processed.
-</li>
-</ol>
-</li>
-<li>
-Otherwise,
-if
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-has
-a
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>:
-<ol class="algorithm">
-<li>
-Reference
-the
-value
-associated
-with
-the
-<code>
-@type
-</code>
-member
-in
-<i>
-type/language
-map
-</i>
-using
-the
-variable
-<i>
-type
-map
-</i>.
-</li>
-<li>
-If
-<i>
-type
-map
-</i>
-does
-not
-have
-a
-member
-corresponding
-to
-the
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>
-in
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>,
-create
-one
-and
-set
-its
-value
-to
-the
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-being
-processed.
-</li>
-</ol>
-</li>
-<li>
-Otherwise,
-if
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-has
-a
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mapping
-</a>
-(might
-be
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>
-):
-<ol class="algorithm">
-<li>
-Reference
-the
-value
-associated
-with
-the
-<code>
-@language
-</code>
-member
-in
-<i>
-type/language
-map
-</i>
-using
-the
-variable
-<i>
-language
-map
-</i>.
-</li>
-<li>
-If
-the
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mapping
-</a>
-equals
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-set
-<i>
-language
-</i>
-to
-<code>
-@null
-</code>
-;
-otherwise
-set
-it
-to
-the
-language
-code
-in
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mapping
-</a>.
-</li>
-<li>
-If
-<i>
-language
-map
-</i>
-does
-not
-have
-a
-<i>
-language
-</i>
-member,
-create
-one
-and
-set
-its
-value
-to
-the
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-being
-processed.
-</li>
-</ol>
-</li>
-<li>
-Otherwise:
-<ol class="algorithm">
-<li>
-Reference
-the
-value
-associated
-with
-the
-<code>
-@language
-</code>
-member
-in
-<i>
-type/language
-map
-</i>
-using
-the
-variable
-<i>
-language
-map
-</i>.
-</li>
-<li>
-If
-<i>
-language
-map
-</i>
-does
-not
-have
-a
-<i>
-default
-language
-</i>
-member,
-create
-one
-and
-set
-its
-value
-to
-the
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-being
-processed.
-</li>
-<li>
-If
-<i>
-language
-map
-</i>
-does
-not
-have
-a
-<code>
-@none
-</code>
-member,
-create
-one
-and
-set
-its
-value
-to
-the
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-being
-processed.
-</li>
-<li>
-Reference
-the
-value
-associated
-with
-the
-<code>
-@type
-</code>
-member
-in
-<i>
-type/language
-map
-</i>
-using
-the
-variable
-<i>
-type
-map
-</i>.
-</li>
-<li>
-If
-<i>
-type
-map
-</i>
-does
-not
-have
-a
-<code>
-@none
-</code>
-member,
-create
-one
-and
-set
-its
-value
-to
-the
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-being
-processed.
-</li>
-</ol>
-</li>
-</ol>
-</li>
-<li>
-Return
-<i>
-result
-</i>.
-</li>
-</ol>
-</section>
-</section>
-<section id="iri-compaction">
-<h3>
-<span class="secno">
-8.3
-</span>
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-Compaction
-</h3>
-<p>
-This
-algorithm
-compacts
-an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-to
-a
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-or
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
-compact
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>,
-or
-a
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keyword
-</a>
-to
-a
-<a class="tref internalDFN" title="keyword-alias" href="#dfn-keyword-alias">
-keyword
-alias
-</a>.
-A
-value
-that
-is
-associated
-with
-the
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-may
-be
-passed
-in
-order
-to
-assist
-in
-selecting
-the
-most
-context-appropriate
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>.
-</p>
-<section class="informative">
-<h4 id="overview-7">
-Overview
-</h4>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-If
-the
-passed
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-we
-simply
-return
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>.
-Otherwise,
-we
-first
-try
-to
-find
-a
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-that
-the
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-or
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keyword
-</a>
-can
-be
-compacted
-to
-if
-it
-is
-relative
-to
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context's
-</a>
-<a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">
-vocabulary
-mapping
-</a>.
-In
-order
-to
-select
-the
-most
-appropriate
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>,
-we
-may
-have
-to
-collect
-information
-about
-the
-passed
-<i>
-value
-</i>.
-This
-information
-includes
-which
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mappings
-</a>
-would
-be
-preferred
-for
-expressing
-the
-<i>
-value
-</i>,
-and
-what
-its
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>
-or
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mapping
-</a>
-is.
-For
-<a class="tref internalDFN" title="list-object" href="#dfn-list-object">
-JSON-LD
-lists
-</a>,
-the
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>
-or
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mapping
-</a>
-will
-be
-chosen
-based
-on
-the
-most
-specific
-values
-that
-work
-for
-all
-items
-in
-the
-list.
-Once
-this
-information
-is
-gathered,
-it
-is
-passed
-to
-the
-<a href="#term-selection">
-Term
-Selection
-algorithm
-</a>,
-which
-will
-return
-the
-most
-appropriate
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-to
-use.
-</p>
-<p>
-If
-no
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-was
-found
-that
-could
-be
-used
-to
-compact
-the
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>,
-an
-attempt
-is
-made
-<ins class="diff-new">to
-</ins>
-compact
-the
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-using
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context's
-</a>
-<a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">
-vocabulary
-mapping
-</a>,
-if
-there
-is
-one.
-If
-the
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-could
-not
-be
-compacted,
-an
-attempt
-is
-made
-to
-find
-a
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
-compact
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>.
-If
-there
-is
-no
-appropriate
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
-compact
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>,
-the
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-is
-transformed
-to
-a
-<a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">
-relative
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-using
-the
-document's
-<a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">
-base
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>.
-Finally,
-if
-the
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-or
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keyword
-</a>
-still
-could
-not
-be
-compacted,
-it
-is
-returned
-as
-is.
-</p>
-</section>
-<section>
-<h4 id="algorithm-7">
-Algorithm
-</h4>
-<p>
-This
-algorithm
-takes
-three
-required
-inputs
-and
-three
-optional
-inputs.
-The
-required
-inputs
-<ins class="diff-new">are
-</ins>
-an
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-an
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>,
-and
-the
-<i>
-iri
-</i>
-to
-be
-compacted.
-The
-optional
-inputs
-are
-a
-<i>
-value
-</i>
-associated
-with
-the
-<i>
-iri
-</i>,
-a
-<i>
-vocab
-</i>
-flag
-which
-specifies
-whether
-the
-passed
-<i>
-iri
-</i>
-should
-be
-compacted
-using
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context's
-</a>
-<a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">
-vocabulary
-mapping
-</a>,
-and
-a
-<i>
-reverse
-</i>
-flag
-which
-specifies
-whether
-a
-<a class="tref internalDFN" title="reverse-property" href="#dfn-reverse-property">
-reverse
-property
-</a>
-is
-being
-compacted.
-If
-not
-passed,
-<i>
-value
-</i>
-is
-set
-to
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>
-and
-<i>
-vocab
-</i>
-and
-<i>
-reverse
-</i>
-are
-both
-set
-to
-<code>
-false
-</code>.
-</p>
-<ol class="algorithm">
-<li>
-If
-<i>
-iri
-</i>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-return
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>.
-</li>
-<li>
-If
-<i>
-vocab
-</i>
-is
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-and
-<i>
-iri
-</i>
-is
-a
-key
-in
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>:
-<ol class="algorithm">
-<li>
-Initialize
-<i>
-default
-language
-</i>
-to
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context's
-</a>
-<a class="tref internalDFN" title="default-language" href="#dfn-default-language">
-default
-language
-</a>,
-if
-it
-has
-one,
-otherwise
-to
-<code>
-@none
-</code>.
-</li>
-<li>
-Initialize
-<i>
-containers
-</i>
-to
-an
-empty
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>.
-This
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-will
-be
-used
-to
-keep
-track
-of
-an
-ordered
-list
-of
-preferred
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mappings
-</a>
-for
-a
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>,
-based
-on
-what
-is
-compatible
-with
-<i>
-value
-</i>.
-</li>
-<li>
-Initialize
-<i>
-type/language
-</i>
-to
-<code>
-@language
-</code>,
-and
-<i>
-type/language
-value
-</i>
-to
-<code>
-@null
-</code>.
-These
-two
-variables
-will
-keep
-track
-of
-the
-preferred
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>
-or
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mapping
-</a>
-for
-a
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>,
-based
-on
-what
-is
-compatible
-with
-<i>
-value
-</i>.
-</li>
-<li>
-If
-<i>
-value
-</i>
-is
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-that
-contains
-the
-key
-<code>
-@index
-</code>,
-then
-append
-the
-value
-<code>
-@index
-</code>
-to
-<i>
-containers
-</i>.
-</li>
-<li>
-If
-<i>
-reverse
-</i>
-is
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>,
-set
-<i>
-type/language
-</i>
-to
-<code>
-@type
-</code>,
-<i>
-type/language
-value
-</i>
-to
-<code>
-@reverse
-</code>,
-and
-append
-<code>
-@set
-</code>
-to
-<i>
-containers
-</i>.
-</li>
-<li>
-Otherwise,
-if
-<i>
-value
-</i>
-is
-a
-<a class="tref internalDFN" title="list-object" href="#dfn-list-object">
-list
-object
-</a>,
-then
-set
-<i>
-type/language
-</i>
-and
-<i>
-type/language
-value
-</i>
-to
-the
-most
-specific
-values
-that
-work
-for
-all
-items
-in
-the
-list
-as
-follows:
-<ol class="algorithm">
-<li>
-If
-<code>
-@index
-</code>
-is
-a
-not
-key
-in
-<i>
-value
-</i>,
-then
-append
-<code>
-@list
-</code>
-to
-<i>
-containers
-</i>.
-</li>
-<li>
-Initialize
-<i>
-list
-</i>
-to
-the
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-associated
-with
-the
-key
-<code>
-@list
-</code>
-in
-<i>
-value
-</i>.
-</li>
-<li>
-Initialize
-<i>
-common
-type
-</i>
-and
-<i>
-common
-language
-</i>
-to
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>.
-If
-<i>
-list
-</i>
-is
-empty,
-set
-<i>
-common
-language
-</i>
-to
-<i>
-default
-language
-</i>.
-</li>
-<li>
-For
-each
-<i>
-item
-</i>
-in
-<i>
-list
-</i>:
-<ol class="algorithm">
-<li>
-Initialize
-<i>
-item
-language
-</i>
-to
-<code>
-@none
-</code>
-and
-<i>
-item
-type
-</i>
-to
-<code>
-@none
-</code>.
-</li>
-<li>
-If
-<i>
-item
-</i>
-contains
-the
-key
-<code>
-@value
-</code>:
-<ol class="algorithm">
-<li>
-If
-<i>
-item
-</i>
-contains
-the
-key
-<code>
-@language
-</code>,
-then
-set
-<i>
-item
-language
-</i>
-to
-its
-associated
-value.
-</li>
-<li>
-Otherwise,
-if
-<i>
-item
-</i>
-contains
-the
-key
-<code>
-@type
-</code>,
-set
-<i>
-item
-type
-</i>
-to
-its
-associated
-value.
-</li>
-<li>
-Otherwise,
-set
-<i>
-item
-language
-</i>
-to
-<code>
-@null
-</code>.
-</li>
-</ol>
-</li>
-<li>
-Otherwise,
-set
-<i>
-item
-type
-</i>
-to
-<code>
-@id
-</code>.
-</li>
-<li>
-If
-<i>
-common
-language
-</i>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-set
-it
-to
-<i>
-item
-language
-</i>.
-</li>
-<li>
-Otherwise,
-if
-<i>
-item
-language
-</i>
-does
-not
-equal
-<i>
-common
-language
-</i>
-and
-<i>
-item
-</i>
-contains
-the
-key
-<code>
-@value
-</code>,
-then
-set
-<i>
-common
-language
-</i>
-to
-<code>
-@none
-</code>
-because
-list
-items
-have
-conflicting
-languages.
-</li>
-<li>
-If
-<i>
-common
-type
-</i>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-set
-it
-to
-<i>
-item
-type
-</i>.
-</li>
-<li>
-Otherwise,
-if
-<i>
-item
-type
-</i>
-does
-not
-equal
-<i>
-common
-type
-</i>,
-then
-set
-<i>
-common
-type
-</i>
-to
-<code>
-@none
-</code>
-because
-list
-items
-have
-conflicting
-types.
-</li>
-<li>
-If
-<i>
-common
-language
-</i>
-is
-<code>
-@none
-</code>
-and
-<i>
-common
-type
-</i>
-is
-<code>
-@none
-</code>,
-then
-stop
-processing
-items
-in
-the
-list
-because
-it
-has
-been
-detected
-that
-there
-is
-no
-common
-language
-or
-type
-amongst
-the
-items.
-</li>
-</ol>
-</li>
-<li>
-If
-<i>
-common
-language
-</i>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-set
-it
-to
-<code>
-@none
-</code>.
-</li>
-<li>
-If
-<i>
-common
-type
-</i>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-set
-it
-to
-<code>
-@none
-</code>.
-</li>
-<li>
-If
-<i>
-common
-type
-</i>
-is
-not
-<code>
-@none
-</code>
-then
-set
-<i>
-type/language
-</i>
-to
-<code>
-@type
-</code>
-and
-<i>
-type/language
-value
-</i>
-to
-<i>
-common
-type
-</i>.
-</li>
-<li>
-Otherwise,
-set
-<i>
-type/language
-value
-</i>
-to
-<i>
-common
-language
-</i>.
-</li>
-</ol>
-</li>
-<li>
-Otherwise:
-<ol class="algorithm">
-<li>
-If
-<i>
-value
-</i>
-is
-a
-<a class="tref internalDFN" title="value-object" href="#dfn-value-object">
-value
-object
-</a>:
-<ol class="algorithm">
-<li>
-If
-<i>
-value
-</i>
-contains
-the
-key
-<code>
-@language
-</code>
-and
-does
-not
-contain
-the
-key
-<code>
-@index
-</code>,
-then
-set
-<i>
-type/language
-value
-</i>
-to
-its
-associated
-value
-and
-append
-<code>
-@language
-</code>
-to
-<i>
-containers
-</i>.
-</li>
-<li>
-Otherwise,
-if
-<i>
-value
-</i>
-contains
-the
-key
-<code>
-@type
-</code>,
-then
-set
-<i>
-type/language
-value
-</i>
-to
-its
-associated
-value
-and
-set
-<i>
-type/language
-</i>
-to
-<code>
-@type
-</code>.
-</li>
-</ol>
-</li>
-<li>
-Otherwise,
-set
-<i>
-type/language
-</i>
-to
-<code>
-@type
-</code>
-and
-set
-<i>
-type/language
-value
-</i>
-to
-<code>
-@id
-</code>.
-</li>
-<li>
-Append
-<code>
-@set
-</code>
-to
-<i>
-containers
-</i>.
-</li>
-</ol>
-</li>
-<li>
-Append
-<code>
-@none
-</code>
-to
-<i>
-containers
-</i>.
-This
-represents
-the
-non-existence
-of
-a
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mapping
-</a>,
-and
-it
-will
-be
-the
-last
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mapping
-</a>
-value
-to
-be
-checked
-as
-it
-is
-the
-most
-generic.
-</li>
-<li>
-If
-<i>
-type/language
-value
-</i>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-set
-it
-to
-<code>
-@null
-</code>.
-This
-is
-the
-key
-under
-which
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>
-values
-are
-stored
-in
-the
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>
-<i>
-entry
-</i>.
-</li>
-<li>
-Initialize
-<i>
-preferred
-values
-</i>
-to
-an
-empty
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>.
-This
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-will
-indicate,
-in
-order,
-the
-preferred
-values
-for
-a
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term's
-</a>
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>
-or
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mapping
-</a>.
-</li>
-<li>
-If
-<i>
-type/language
-value
-</i>
-is
-<code>
-@reverse
-</code>,
-append
-<code>
-@reverse
-</code>
-to
-<i>
-preferred
-values
-</i>.
-</li>
-<li>
-If
-<i>
-type/language
-value
-</i>
-is
-<code>
-@id
-</code>
-or
-<code>
-@reverse
-</code>
-and
-<i>
-value
-</i>
-has
-an
-<code>
-@id
-</code>
-member:
-<ol class="algorithm">
-<li>
-If
-the
-result
-of
-using
-the
-<a href="#iri-compaction">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-compaction
-algorithm
-</a>,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>,
-the
-value
-associated
-with
-the
-<code>
-@id
-</code>
-key
-in
-<i>
-value
-</i>
-for
-<i>
-iri
-</i>,
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-for
-<i>
-vocab
-</i>,
-and
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-for
-<i>
-document
-relative
-</i>
-has
-a
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-in
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-with
-an
-<a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-mapping
-</a>
-that
-equals
-the
-value
-associated
-with
-the
-<code>
-@id
-</code>
-key
-in
-<i>
-value
-</i>,
-then
-append
-<code>
-@vocab
-</code>,
-<code>
-@id
-</code>,
-and
-<code>
-@none
-</code>,
-in
-that
-order,
-to
-<i>
-preferred
-values
-</i>.
-</li>
-<li>
-Otherwise,
-append
-<code>
-@id
-</code>,
-<code>
-@vocab
-</code>,
-and
-<code>
-@none
-</code>,
-in
-that
-order,
-to
-<i>
-preferred
-values
-</i>.
-</li>
-</ol>
-</li>
-<li>
-Otherwise,
-append
-<i>
-type/language
-value
-</i>
-and
-<code>
-@none
-</code>,
-in
-that
-order,
-to
-<i>
-preferred
-values
-</i>.
-</li>
-<li>
-Initialize
-<i>
-term
-</i>
-to
-the
-result
-of
-the
-<a href="#term-selection">
-Term
-Selection
-algorithm
-</a>,
-passing
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>,
-<i>
-iri
-</i>,
-<i>
-containers
-</i>,
-<i>
-type/language
-</i>,
-and
-<i>
-preferred
-values
-</i>.
-</li>
-<li>
-If
-<i>
-term
-</i>
-is
-not
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-return
-<i>
-term
-</i>.
-</li>
-</ol>
-</li>
-<li>
-At
-this
-point,
-there
-is
-no
-simple
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-that
-<i>
-iri
-</i>
-can
-be
-compacted
-to.
-If
-<i>
-vocab
-</i>
-is
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-and
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-has
-a
-<a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">
-vocabulary
-mapping
-</a>:
-<ol class="algorithm">
-<li>
-If
-<i>
-iri
-</i>
-begins
-with
-the
-<a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">
-vocabulary
-mapping's
-</a>
-value
-but
-is
-longer,
-then
-initialize
-<i>
-suffix
-</i>
-to
-the
-substring
-of
-<i>
-iri
-</i>
-that
-does
-not
-match.
-If
-<i>
-suffix
-</i>
-does
-not
-have
-a
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-in
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-then
-return
-<i>
-suffix
-</i>.
-</li>
-</ol>
-</li>
-<li>
-The
-<i>
-iri
-</i>
-could
-not
-be
-compacted
-using
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context's
-</a>
-<a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">
-vocabulary
-mapping
-</a>.
-Try
-to
-create
-a
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
-compact
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>,
-starting
-by
-initializing
-<i>
-compact
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</i>
-to
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>.
-This
-variable
-will
-be
-used
-to
-tore
-the
-created
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
-compact
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>,
-if
-any.
-</li>
-<li>
-For
-each
-key
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-and
-value
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-in
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>:
-<ol class="algorithm">
-<li>
-If
-the
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-contains
-a
-colon
-(
-<code>:
-</code>
-),
-then
-continue
-to
-the
-next
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-because
-<a class="tref internalDFN" title="term" href="#dfn-term">
-terms
-</a>
-with
-colons
-can't
-be
-used
-as
-<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
-prefixes
-</a>.
-</li>
-<li>
-If
-the
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-its
-<a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-mapping
-</a>
-equals
-<i>
-iri
-</i>,
-or
-its
-<a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-mapping
-</a>
-is
-not
-a
-substring
-at
-the
-beginning
-of
-<i>
-iri
-</i>,
-the
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-cannot
-be
-used
-as
-a
-<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
-prefix
-</a>
-because
-it
-is
-not
-a
-partial
-match
-with
-<i>
-iri
-</i>.
-Continue
-with
-the
-next
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>.
-</li>
-<li>
-Initialize
-<i>
-candidate
-</i>
-by
-concatenating
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>,
-a
-colon
-(
-<code>:
-</code>
-),
-and
-the
-substring
-of
-<i>
-iri
-</i>
-that
-follows
-after
-the
-value
-of
-the
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition's
-</a>
-<a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-mapping
-</a>.
-</li>
-<li>
-If
-either
-<i>
-compact
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</i>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>
-or
-<i>
-candidate
-</i>
-is
-shorter
-or
-the
-same
-length
-but
-lexicographically
-less
-than
-<i>
-compact
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</i>
-and
-<i>
-candidate
-</i>
-does
-not
-have
-a
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-in
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-or
-if
-the
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-has
-an
-<a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-mapping
-</a>
-that
-equals
-<i>
-iri
-</i>
-and
-<i>
-value
-</i>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-set
-<i>
-compact
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</i>
-to
-<i>
-candidate
-</i>.
-</li>
-</ol>
-</li>
-<li>
-If
-<i>
-compact
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</i>
-is
-not
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-return
-<i>
-compact
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</i>.
-</li>
-<li>
-If
-<i>
-vocab
-</i>
-is
-<a class="tref internalDFN" title="false" href="#dfn-false">
-false
-</a>
-then
-transform
-<i>
-iri
-</i>
-to
-a
-<a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">
-relative
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-using
-the
-document's
-base
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>.
-</li>
-<li>
-Finally,
-return
-<i>
-iri
-</i>
-as
-is.
-</li>
-</ol>
-</section>
-</section>
-<section id="term-selection">
-<h3>
-<span class="secno">
-8.4
-</span>
-Term
-Selection
-</h3>
-<p>
-This
-algorithm,
-invoked
-via
-the
-<a href="#iri-compaction">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-Compaction
-algorithm
-</a>,
-makes
-use
-of
-an
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context's
-</a>
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>
-to
-find
-the
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-that
-is
-best
-used
-to
-<a class="tref internalDFN" title="compaction" href="#dfn-compaction">
-compact
-</a>
-an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>.
-Other
-information
-about
-a
-value
-associated
-with
-the
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-is
-given,
-including
-which
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mappings
-</a>
-and
-which
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>
-or
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mapping
-</a>
-would
-be
-best
-used
-to
-express
-the
-value.
-</p>
-<section class="informative">
-<h4 id="overview-8">
-Overview
-</h4>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-The
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context's
-</a>
-entry
-for
-the
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-will
-be
-first
-searched
-according
-to
-the
-preferred
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mappings
-</a>,
-in
-the
-order
-that
-they
-are
-given.
-Amongst
-<a class="tref internalDFN" title="term" href="#dfn-term">
-terms
-</a>
-with
-a
-matching
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mapping
-</a>,
-preference
-will
-be
-given
-to
-those
-with
-a
-matching
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>
-or
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mapping
-</a>,
-over
-those
-without
-a
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>
-or
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mapping
-</a>.
-If
-there
-is
-no
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-with
-a
-matching
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mapping
-</a>
-then
-the
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-without
-a
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mapping
-</a>
-that
-matches
-the
-given
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>
-or
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mapping
-</a>
-is
-selected.
-If
-there
-is
-still
-no
-selected
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>,
-then
-a
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-with
-no
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>
-or
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mapping
-</a>
-will
-be
-selected
-if
-available.
-No
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-will
-be
-selected
-that
-has
-a
-conflicting
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>
-or
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mapping
-</a>.
-Ties
-between
-<a class="tref internalDFN" title="term" href="#dfn-term">
-terms
-</a>
-that
-have
-the
-same
-mappings
-are
-resolved
-by
-first
-choosing
-the
-shortest
-terms,
-and
-then
-by
-choosing
-the
-lexicographically
-least
-term.
-Note
-that
-these
-ties
-are
-resolved
-automatically
-because
-they
-were
-previously
-resolved
-when
-the
-<a href="#inverse-context-creation">
-Inverse
-Context
-Creation
-algorithm
-</a>
-was
-used
-to
-create
-the
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>.
-</p>
-</section>
-<section>
-<h4 id="algorithm-8">
-Algorithm
-</h4>
-<p>
-This
-algorithm
-has
-five
-required
-inputs.
-They
-are:
-an
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>,
-a
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keyword
-</a>
-or
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-<i>
-iri
-</i>,
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-<i>
-containers
-</i>
-that
-represents
-an
-ordered
-list
-of
-preferred
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mappings
-</a>,
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>
-<i>
-type/language
-</i>
-that
-indicates
-whether
-to
-look
-for
-a
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-with
-a
-matching
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>
-or
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mapping
-</a>,
-and
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-representing
-an
-ordered
-list
-of
-<i>
-preferred
-values
-</i>
-for
-the
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>
-or
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mapping
-</a>
-to
-look
-for.
-</p>
-<ol class="algorithm">
-<li>
-Initialize
-<i>
-container
-map
-</i>
-to
-the
-value
-associated
-with
-<i>
-iri
-</i>
-in
-the
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>.
-</li>
-<li>
-For
-each
-item
-<i>
-container
-</i>
-in
-<i>
-containers
-</i>:
-<ol class="algorithm">
-<li>
-If
-<i>
-container
-</i>
-is
-not
-a
-key
-in
-<i>
-container
-map
-</i>,
-then
-there
-is
-no
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-with
-a
-matching
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mapping
-</a>
-for
-it,
-so
-continue
-to
-the
-next
-<i>
-container
-</i>.
-</li>
-<li>
-Initialize
-<i>
-type/language
-map
-</i>
-to
-the
-value
-associated
-with
-the
-<i>
-container
-</i>
-member
-in
-<i>
-container
-map
-</i>.
-</li>
-<li>
-Initialize
-<i>
-value
-map
-</i>
-to
-the
-value
-associated
-with
-<i>
-type/language
-</i>
-member
-in
-<i>
-type/language
-map
-</i>.
-</li>
-<li>
-For
-each
-<i>
-item
-</i>
-in
-<i>
-preferred
-values
-</i>:
-<ol class="algorithm">
-<li>
-If
-<i>
-item
-</i>
-is
-not
-a
-key
-in
-<i>
-value
-map
-</i>,
-then
-there
-is
-no
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-with
-a
-matching
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>
-or
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mapping
-</a>,
-so
-continue
-to
-the
-next
-<i>
-item
-</i>.
-</li>
-<li>
-Otherwise,
-a
-matching
-term
-has
-been
-found,
-return
-the
-value
-associated
-with
-the
-<i>
-item
-</i>
-member
-in
-<i>
-value
-map
-</i>.
-</li>
-</ol>
-</li>
-</ol>
-</li>
-<li>
-No
-matching
-term
-has
-been
-found.
-Return
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>.
-</li>
-</ol>
-</section>
-</section>
-<section id="value-compaction">
-<h3>
-<span class="secno">
-8.5
-</span>
-Value
-Compaction
-</h3>
-<p>
-<a class="tref internalDFN" title="expansion" href="#dfn-expansion">
-Expansion
-</a>
-transforms
-all
-values
-into
-<a class="tref internalDFN" title="expanded-form" href="#dfn-expanded-form">
-expanded
-form
-</a>
-in
-JSON-LD.
-This
-algorithm
-performs
-the
-opposite
-operation,
-transforming
-a
-value
-into
-<dfn title="compacted-form" id="dfn-compacted-form">
-compacted
-form
-</dfn>.
-This
-algorithm
-compacts
-a
-value
-according
-to
-the
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-in
-the
-given
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-that
-is
-associated
-with
-the
-value's
-associated
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>.
-</p>
-<section class="informative">
-<h4 id="overview-9">
-Overview
-</h4>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-The
-<i>
-value
-</i>
-to
-compact
-has
-either
-an
-<code>
-@id
-</code>
-or
-an
-<code>
-@value
-</code>
-member.
-</p>
-<p>
-For
-the
-former
-case,
-if
-the
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>
-of
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-is
-set
-to
-<code>
-@id
-</code>
-or
-<code>
-@vocab
-</code>
-and
-<i>
-value
-</i>
-consists
-of
-only
-<del class="diff-old">of
-</del>
-an
-<code>
-@id
-</code>
-member
-and,
-if
-<del class="diff-old">if
-</del>
-the
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mapping
-</a>
-of
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-is
-set
-to
-<code>
-@index
-</code>,
-an
-<code>
-@index
-</code>
-member,
-<i>
-value
-</i>
-can
-be
-compacted
-to
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>
-by
-returning
-the
-result
-of
-using
-the
-<a href="#iri-compaction">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-Compaction
-algorithm
-</a>
-to
-compact
-the
-value
-associated
-with
-the
-<code>
-@id
-</code>
-member.
-Otherwise,
-<i>
-value
-</i>
-cannot
-be
-compacted
-and
-is
-returned
-as
-is.
-</p>
-<p>
-For
-the
-latter
-case,
-it
-might
-be
-possible
-to
-compact
-<i>
-value
-</i>
-just
-into
-the
-value
-associated
-with
-the
-<code>
-@value
-</code>
-member.
-This
-can
-be
-done
-if
-the
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-has
-a
-matching
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>
-or
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mapping
-</a>
-and
-there
-is
-either
-no
-<code>
-@index
-</code>
-member
-or
-the
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mapping
-</a>
-of
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-is
-set
-to
-<code>
-@index
-</code>.
-It
-can
-also
-be
-done
-if
-<code>
-@value
-</code>
-is
-the
-only
-member
-in
-<i>
-value
-</i>
-(apart
-an
-<code>
-@index
-</code>
-member
-in
-case
-the
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mapping
-</a>
-of
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-is
-set
-to
-<code>
-@index
-</code>
-)
-and
-either
-its
-associated
-value
-is
-not
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>,
-there
-is
-no
-<a class="tref internalDFN" title="default-language" href="#dfn-default-language">
-default
-language
-</a>,
-or
-there
-is
-an
-explicit
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mapping
-</a>
-for
-the
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>.
-</p>
-</section>
-<section>
-<h4 id="algorithm-9">
-Algorithm
-</h4>
-<p>
-This
-algorithm
-has
-four
-required
-inputs:
-an
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-an
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>,
-an
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>,
-and
-a
-<i>
-value
-</i>
-to
-be
-compacted.
-</p>
-<ol class="algorithm">
-<li>
-Initialize
-<i>
-number
-members
-</i>
-to
-the
-number
-of
-members
-<i>
-value
-</i>
-contains.
-</li>
-<li>
-If
-<i>
-value
-</i>
-has
-an
-<code>
-@index
-</code>
-member
-and
-the
-<a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">
-container
-mapping
-</a>
-associated
-to
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-is
-set
-to
-<code>
-@index
-</code>,
-decrease
-<i>
-number
-members
-</i>
-by
-<code>
-1
-</code>.
-</li>
-<li>
-If
-<i>
-number
-members
-</i>
-is
-greater
-than
-<code>
-2
-</code>,
-return
-<i>
-value
-</i>
-as
-it
-cannot
-be
-compacted.
-</li>
-<li>
-If
-<i>
-value
-</i>
-has
-an
-<code>
-@id
-</code>
-member:
-<ol class="algorithm">
-<li>
-If
-<i>
-number
-members
-</i>
-is
-<code>
-1
-</code>
-and
-the
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>
-of
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-is
-set
-to
-<code>
-@id
-</code>,
-return
-the
-result
-of
-using
-the
-<a href="#iri-compaction">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-compaction
-algorithm
-</a>,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>,
-and
-the
-value
-of
-the
-<code>
-@id
-</code>
-member
-for
-<i>
-iri
-</i>.
-</li>
-<li>
-Otherwise,
-if
-<i>
-number
-members
-</i>
-is
-<code>
-1
-</code>
-and
-the
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>
-of
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-is
-set
-to
-<code>
-@vocab
-</code>,
-return
-the
-result
-of
-using
-the
-<a href="#iri-compaction">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-compaction
-algorithm
-</a>,
-passing
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-<a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">
-inverse
-context
-</a>,
-the
-value
-of
-the
-<code>
-@id
-</code>
-member
-for
-<i>
-iri
-</i>,
-and
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-for
-<i>
-vocab
-</i>.
-</li>
-<li>
-Otherwise,
-return
-<i>
-value
-</i>
-as
-is.
-</li>
-</ol>
-</li>
-<li>
-Otherwise,
-if
-<i>
-value
-</i>
-has
-an
-<code>
-@type
-</code>
-member
-whose
-value
-matches
-the
-<a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">
-type
-mapping
-</a>
-of
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>,
-return
-the
-value
-associated
-with
-the
-<code>
-@value
-</code>
-member
-of
-<i>
-value
-</i>.
-</li>
-<li>
-Otherwise,
-if
-<i>
-value
-</i>
-has
-an
-<code>
-@language
-</code>
-member
-whose
-value
-matches
-the
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mapping
-</a>
-of
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>,
-return
-the
-value
-associated
-with
-the
-<code>
-@value
-</code>
-member
-of
-<i>
-value
-</i>.
-</li>
-<li>
-Otherwise,
-if
-<i>
-number
-members
-</i>
-equals
-<code>
-1
-</code>
-and
-either
-the
-value
-of
-the
-<code>
-@value
-</code>
-member
-is
-not
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>,
-or
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-has
-no
-<a class="tref internalDFN" title="default-language" href="#dfn-default-language">
-default
-language
-</a>,
-or
-the
-<a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">
-language
-mapping
-</a>
-of
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-is
-set
-to
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,,
-return
-the
-value
-associated
-with
-the
-<code>
-@value
-</code>
-member.
-</li>
-<li>
-Otherwise,
-return
-<i>
-value
-</i>
-as
-is.
-</li>
-</ol>
-</section>
-</section>
-</section>
-<section id="flattening-algorithms">
-<h2>
-<span class="secno">
-9.
-</span>
-Flattening
-Algorithms
-</h2>
-<section id="flattening-algorithm">
-<h3>
-<span class="secno">
-9.1
-</span>
-Flattening
-Algorithm
-</h3>
-<p>
-This
-algorithm
-flattens
-an
-expanded
-JSON-LD
-document
-by
-collecting
-all
-properties
-of
-a
-<a class="tref internalDFN" title="node" href="#dfn-node">
-node
-</a>
-in
-a
-single
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-and
-labeling
-all
-<a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">
-blank
-nodes
-</a>
-with
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifiers
-</a>.
-This
-resulting
-uniform
-shape
-of
-the
-document,
-may
-drastically
-simplify
-the
-code
-required
-to
-process
-JSON-LD
-data
-in
-certain
-applications.
-</p>
-<section class="informative">
-<h4 id="overview-10">
-Overview
-</h4>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-First,
-a
-<i>
-node
-map
-</i>
-is
-generated
-using
-the
-<a href="#node-map-generation">
-Node
-Map
-Generation
-algorithm
-</a>
-which
-collects
-all
-properties
-of
-a
-<a class="tref internalDFN" title="node" href="#dfn-node">
-node
-</a>
-in
-a
-single
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>.
-In
-the
-next
-step,
-the
-<i>
-node
-map
-</i>
-is
-converted
-to
-a
-JSON-LD
-document
-in
-<a class="tref externalDFN" title="flattened-document-form" href="http://www.w3.org/TR/2013/CR-json-ld-20130822/#flattened-document-form">
-flattened
-document
-form
-</a>.
-Finally,
-if
-a
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>
-has
-been
-passed,
-the
-flattened
-document
-is
-compacted
-using
-the
-<a href="#compaction-algorithm">
-Compaction
-algorithm
-</a>
-before
-being
-returned.
-</p>
-</section>
-<section>
-<h4 id="algorithm-10">
-Algorithm
-</h4>
-<p>
-The
-algorithm
-takes
-two
-input
-variables,
-an
-<i>
-element
-</i>
-to
-flatten
-and
-an
-optional
-<i>
-context
-</i>
-used
-to
-compact
-the
-flattened
-document.
-If
-not
-passed,
-<i>
-context
-</i>
-is
-set
-to
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>.
-</p>
-<p>
-<ins class="diff-new">This
-algorithm
-generates
-new
-</ins><a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier"><ins class="diff-new">
-blank
-node
-identifiers
-</ins></a><ins class="diff-new">
-and
-relabels
-existing
-</ins><a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier"><ins class="diff-new">
-blank
-node
-identifiers
-</ins></a>.<ins class="diff-new">
-The
-used
-</ins><a href="#generate-blank-node-identifier"><ins class="diff-new">
-Generate
-Blank
-Node
-Identifier
-algorithm
-</ins></a><ins class="diff-new">
-keeps
-an
-</ins><i><ins class="diff-new">
-identifier
-map
-</ins></i><ins class="diff-new">
-and
-a
-</ins><i><ins class="diff-new">
-counter
-</ins></i><ins class="diff-new">
-to
-ensure
-consistent
-relabeling
-and
-avoid
-collisions.
-Thus,
-before
-this
-algorithm
-is
-run,
-the
-</ins><i><ins class="diff-new">
-identifier
-map
-</ins></i><ins class="diff-new">
-is
-reset
-and
-the
-</ins><i><ins class="diff-new">
-counter
-</ins></i><ins class="diff-new">
-is
-initialized
-to
-</ins><code><ins class="diff-new">
-0
-</ins></code>.</p>
-<ol class="algorithm">
-<li>
-Initialize
-<i>
-node
-map
-</i>
-to
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-consisting
-of
-a
-single
-member
-whose
-key
-is
-<code>
-@default
-</code>
-and
-whose
-value
-is
-an
-empty
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>.
-</li>
-<li>
-Perform
-the
-<a href="#node-map-generation">
-Node
-Map
-Generation
-algorithm
-</a>,
-passing
-<i>
-element
-</i>
-and
-<i>
-node
-map
-</i>.
-</li>
-<li>
-Initialize
-<i>
-default
-graph
-</i>
-to
-the
-value
-of
-the
-<code>
-@default
-</code>
-member
-of
-<i>
-node
-map
-</i>,
-which
-is
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-representing
-the
-<a class="tref internalDFN" title="default-graph" href="#dfn-default-graph">
-default
-graph
-</a>.
-</li>
-<li>
-For
-each
-key-value
-pair
-<i>
-graph
-name
-</i>
--
-<i>
-graph
-</i>
-in
-<i>
-node
-map
-</i>
-where
-<i>
-graph
-name
-</i>
-is
-not
-<code>
-@default
-</code>,
-perform
-the
-following
-steps:
-<ol class="algorithm">
-<li>
-If
-<i>
-default
-graph
-</i>
-does
-not
-have
-a
-<i>
-graph
-name
-</i>
-member,
-create
-one
-and
-initialize
-its
-value
-to
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-consisting
-of
-an
-<code>
-@id
-</code>
-member
-whose
-value
-is
-set
-to
-<i>
-graph
-name
-</i>.
-</li>
-<li>
-Reference
-the
-value
-associated
-with
-the
-<i>
-graph
-name
-</i>
-member
-in
-<i>
-default
-graph
-</i>
-using
-the
-variable
-<i>
-entry
-</i>.
-</li>
-<li>
-Add
-an
-<code>
-@graph
-</code>
-member
-to
-<i>
-entry
-</i>
-and
-set
-it
-to
-an
-empty
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>.
-</li>
-<li>
-For
-each
-<i>
-id
-</i>
--
-<i>
-node
-</i>
-pair
-in
-<i>
-graph
-</i>
-ordered
-by
-<i>
-id
-</i>,
-add
-<i>
-node
-</i>
-to
-the
-<code>
-@graph
-</code>
-member
-of
-<i>
-entry
-<del class="diff-old">.
-</del>
-</i>,
-<ins class="diff-chg">unless
-the
-only
-member
-of
-</ins><i><ins class="diff-chg">
-node
-</ins></i><ins class="diff-chg">
-is
-</ins><code><ins class="diff-chg">
-@id
-</ins></code>.
-</li>
-</ol>
-</li>
-<li>
-Initialize
-an
-empty
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-<i>
-flattened
-</i>.
-</li>
-<li>
-For
-each
-<i>
-id
-</i>
--
-<i>
-node
-</i>
-pair
-in
-<i>
-default
-graph
-</i>
-ordered
-by
-<i>
-id
-</i>,
-add
-<i>
-node
-</i>
-to
-<i>
-flattened
-<del class="diff-old">.
-</del>
-</i>,
-<ins class="diff-chg">unless
-the
-only
-member
-of
-</ins><i><ins class="diff-chg">
-node
-</ins></i><ins class="diff-chg">
-is
-</ins><code><ins class="diff-chg">
-@id
-</ins></code>.
-</li>
-<li>
-If
-<i>
-context
-</i>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-return
-<i>
-flattened
-</i>.
-</li>
-<li>
-Otherwise,
-return
-the
-result
-of
-compacting
-<i>
-flattened
-</i>
-according
-the
-<a href="#compaction-algorithm">
-Compaction
-algorithm
-</a>
-passing
-<i>
-context
-</i>
-ensuring
-that
-the
-compaction
-result
-has
-only
-the
-<code>
-@graph
-</code>
-keyword
-(or
-its
-alias)
-at
-the
-top-level
-other
-than
-<code>
-@context
-</code>,
-even
-if
-the
-context
-is
-empty
-or
-if
-there
-is
-only
-one
-element
-to
-put
-in
-the
-<code>
-@graph
-</code>
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>.
-This
-ensures
-that
-the
-returned
-document
-has
-a
-deterministic
-structure.
-</li>
-</ol>
-</section>
-</section>
-<section id="node-map-generation">
-<h3>
-<span class="secno">
-9.2
-</span>
-Node
-Map
-Generation
-</h3>
-<p>
-This
-algorithm
-creates
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-<i>
-node
-map
-</i>
-holding
-an
-indexed
-representation
-of
-the
-<a class="tref internalDFN" title="graph" href="#dfn-graph">
-graphs
-</a>
-and
-<a class="tref internalDFN" title="node" href="#dfn-node">
-nodes
-</a>
-represented
-in
-the
-passed
-expanded
-document.
-All
-<a class="tref internalDFN" title="node" href="#dfn-node">
-nodes
-</a>
-that
-are
-not
-uniquely
-identified
-by
-an
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-get
-assigned
-a
-(new)
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifier
-</a>.
-The
-resulting
-<i>
-node
-map
-</i>
-will
-have
-a
-member
-for
-every
-graph
-in
-the
-document
-whose
-value
-is
-another
-object
-with
-a
-member
-for
-every
-<a class="tref internalDFN" title="node" href="#dfn-node">
-node
-</a>
-represented
-in
-the
-document.
-The
-default
-graph
-is
-stored
-under
-the
-<code>
-@default
-</code>
-member,
-all
-other
-graphs
-are
-stored
-under
-their
-<a class="tref internalDFN" title="graph-name" href="#dfn-graph-name">
-graph
-name
-</a>.
-</p>
-<section class="informative">
-<h4 id="overview-11">
-Overview
-</h4>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-The
-algorithm
-recursively
-runs
-over
-an
-expanded
-JSON-LD
-document
-to
-collect
-all
-<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
-single
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>.
-The
-algorithm
-constructs
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-<i>
-node
-map
-</i>
-whose
-keys
-represent
-the
-<a class="tref internalDFN" title="graph-name" href="#dfn-graph-name">
-graph
-names
-</a>
-used
-in
-the
-document
-(the
-<a class="tref internalDFN" title="default-graph" href="#dfn-default-graph">
-default
-graph
-</a>
-is
-stored
-under
-the
-key
-<code>
-@default
-</code>
-)
-and
-whose
-associated
-values
-are
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-objects
-</a>
-which
-index
-the
-<a class="tref internalDFN" title="node" href="#dfn-node">
-nodes
-</a>
-in
-the
-<a class="tref internalDFN" title="graph" href="#dfn-graph">
-graph
-</a>.
-If
-a
-<a class="tref internalDFN" title="property" href="#dfn-property">
-property's
-</a>
-value
-is
-a
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
-node
-object
-</a>,
-it
-is
-<del class="diff-old">replace
-</del>
-<ins class="diff-chg">replaced
-</ins>
-by
-a
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
-node
-object
-</a>
-consisting
-of
-only
-an
-<code>
-@id
-</code>
-member.
-If
-a
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
-node
-object
-</a>
-has
-no
-<code>
-@id
-</code>
-member
-or
-it
-is
-identified
-by
-a
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifier
-</a>,
-a
-new
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifier
-</a>
-is
-generated.
-This
-relabeling
-of
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifiers
-</a>
-is
-also
-<del class="diff-old">be
-</del>
-done
-for
-<a class="tref internalDFN" title="property" href="#dfn-property">
-properties
-</a>
-and
-values
-of
-<code>
-@type
-</code>.
-</p>
-</section>
-<section>
-<h4 id="algorithm-11">
-Algorithm
-</h4>
-<p>
-The
-algorithm
-takes
-as
-input
-an
-expanded
-JSON-LD
-document
-<i>
-element
-</i>
-and
-a
-reference
-to
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-<i>
-node
-map
-</i>.
-Furthermore
-it
-has
-the
-optional
-parameters
-<a class="tref internalDFN" title="active-graph" href="#dfn-active-graph">
-active
-graph
-</a>
-(which
-defaults
-to
-<code>
-@default
-</code>
-),
-an
-<a class="tref internalDFN" title="active-subject" href="#dfn-active-subject">
-active
-subject
-</a>,
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>,
-and
-a
-reference
-to
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-<i>
-list
-</i>.
-If
-not
-passed,
-<a class="tref internalDFN" title="active-subject" href="#dfn-active-subject">
-active
-subject
-</a>,
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>,
-and
-<i>
-list
-</i>
-are
-set
-to
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>.
-</p>
-<ol class="algorithm">
-<li>
-If
-<i>
-element
-</i>
-is
-an
-array,
-process
-each
-<i>
-item
-</i>
-in
-<i>
-element
-</i>
-as
-follows
-and
-then
-return:
-<ol class="algorithm">
-<li>
-Run
-this
-algorithm
-recursively
-by
-passing
-<i>
-item
-</i>
-for
-<i>
-element
-</i>,
-<i>
-node
-map
-</i>,
-<a class="tref internalDFN" title="active-graph" href="#dfn-active-graph">
-active
-graph
-</a>,
-<a class="tref internalDFN" title="active-subject" href="#dfn-active-subject">
-active
-subject
-</a>,
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>,
-and
-<i>
-list
-</i>.
-</li>
-</ol>
-</li>
-<li>
-Otherwise
-<i>
-element
-</i>
-is
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>.
-Reference
-the
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-which
-is
-the
-value
-of
-the
-<a class="tref internalDFN" title="active-graph" href="#dfn-active-graph">
-active
-graph
-</a>
-member
-of
-<i>
-node
-map
-</i>
-using
-the
-variable
-<i>
-graph
-</i>.
-If
-the
-<a class="tref internalDFN" title="active-subject" href="#dfn-active-subject">
-active
-subject
-</a>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-set
-<i>
-node
-</i>
-to
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>
-otherwise
-reference
-the
-<a class="tref internalDFN" title="active-subject" href="#dfn-active-subject">
-active
-subject
-</a>
-member
-of
-<i>
-graph
-</i>
-using
-the
-variable
-<i>
-node
-</i>.
-</li>
-<li>
-If
-<i>
-element
-</i>
-has
-an
-<code>
-@type
-</code>
-member,
-perform
-for
-each
-<i>
-item
-</i>
-the
-following
-steps:
-<ol class="algorithm">
-<li>
-If
-<i>
-item
-</i>
-is
-a
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifier
-</a>,
-replace
-it
-with
-a
-newly
-<a href="#generate-blank-node-identifier">
-generated
-blank
-node
-identifier
-</a>
-passing
-<i>
-item
-</i>
-for
-<i>
-identifier
-</i>.
-</li>
-<del class="diff-old">If
-graph
-has
-no
-member
-item
-,
-create
-one
-and
-initialize
-its
-value
-to
-a
-JSON
-object
-consisting
-of
-a
-single
-member
-@id
-whose
-value
-is
-item
-.
-</del>
-</ol>
-</li>
-<li>
-If
-<i>
-element
-</i>
-has
-an
-<code>
-@value
-</code>
-member,
-perform
-the
-following
-steps:
-<ol class="algorithm">
-<li>
-If
-<i>
-list
-</i>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>:
-<ol class="algorithm">
-<li>
-If
-<i>
-node
-</i>
-does
-not
-have
-an
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-member,
-create
-one
-and
-initialize
-its
-value
-to
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-containing
-<i>
-element
-</i>.
-</li>
-<li>
-Otherwise,
-compare
-<i>
-element
-</i>
-against
-every
-item
-in
-the
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-associated
-with
-the
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-member
-of
-<i>
-node
-</i>.
-If
-there
-is
-no
-item
-equivalent
-to
-<i>
-element
-</i>,
-append
-<i>
-element
-</i>
-to
-the
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>.
-Two
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-objects
-</a>
-are
-considered
-equal
-if
-they
-have
-equivalent
-key-value
-pairs.
-</li>
-</ol>
-</li>
-<li>
-Otherwise,
-append
-<i>
-element
-</i>
-to
-the
-<code>
-@list
-</code>
-member
-of
-<i>
-list
-</i>.
-</li>
-</ol>
-</li>
-<li>
-Otherwise,
-if
-<i>
-element
-</i>
-has
-an
-<code>
-@list
-</code>
-member,
-perform
-the
-following
-steps:
-<ol class="algorithm">
-<li>
-Initialize
-a
-new
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-<i>
-result
-</i>
-consisting
-of
-a
-single
-member
-<code>
-@list
-</code>
-whose
-value
-is
-initialized
-to
-an
-empty
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>.
-</li>
-<li>
-Recursively
-call
-this
-algorithm
-passing
-the
-value
-of
-<i>
-element's
-</i>
-<code>
-@list
-</code>
-member
-for
-<i>
-element
-</i>,
-<a class="tref internalDFN" title="active-graph" href="#dfn-active-graph">
-active
-graph
-</a>,
-<a class="tref internalDFN" title="active-subject" href="#dfn-active-subject">
-active
-subject
-</a>,
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>,
-and
-<i>
-result
-</i>
-for
-<i>
-list
-</i>.
-</li>
-<li>
-Append
-<i>
-result
-</i>
-to
-the
-<del class="diff-old">the
-</del>
-value
-of
-the
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-member
-of
-<i>
-node
-</i>.
-</li>
-</ol>
-</li>
-<li>
-Otherwise
-<i>
-element
-</i>
-is
-a
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
-node
-object
-</a>,
-perform
-the
-following
-steps:
-<ol class="algorithm">
-<li>
-If
-<i>
-element
-</i>
-has
-an
-<code>
-@id
-</code>
-member,
-set
-<i>
-id
-</i>
-to
-its
-value
-and
-remove
-the
-member
-from
-<i>
-element
-</i>.
-If
-<i>
-id
-</i>
-is
-a
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifier
-</a>,
-replace
-it
-with
-a
-newly
-<a href="#generate-blank-node-identifier">
-generated
-blank
-node
-identifier
-</a>
-passing
-<i>
-id
-</i>
-for
-<i>
-identifier
-</i>.
-</li>
-<li>
-Otherwise,
-set
-<i>
-id
-</i>
-to
-the
-result
-of
-the
-<a href="#generate-blank-node-identifier">
-Generate
-Blank
-Node
-Identifier
-algorithm
-</a>
-passing
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>
-for
-<i>
-identifier
-</i>.
-</li>
-<li>
-If
-<i>
-graph
-</i>
-does
-not
-contain
-a
-member
-<i>
-id
-</i>,
-create
-one
-and
-initialize
-its
-value
-to
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-consisting
-of
-a
-single
-member
-<code>
-@id
-</code>
-whose
-value
-is
-<i>
-id
-</i>.
-</li>
-<li>
-If
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-is
-not
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-perform
-the
-following
-steps:
-<ol class="algorithm">
-<li>
-Create
-a
-new
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-<i>
-reference
-</i>
-consisting
-of
-a
-single
-member
-<code>
-@id
-</code>
-whose
-value
-is
-<i>
-id
-</i>.
-</li>
-<li>
-If
-<i>
-list
-</i>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>:
-<ol class="algorithm">
-<li>
-If
-<i>
-node
-</i>
-does
-not
-have
-an
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-member,
-create
-one
-and
-initialize
-its
-value
-to
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-containing
-<i>
-reference
-</i>.
-</li>
-<li>
-Otherwise,
-compare
-<i>
-reference
-</i>
-against
-every
-item
-in
-the
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-associated
-with
-the
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-</a>
-member
-of
-<i>
-node
-</i>.
-If
-there
-is
-no
-item
-equivalent
-to
-<i>
-reference
-</i>,
-append
-<i>
-reference
-</i>
-to
-the
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>.
-Two
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-objects
-</a>
-are
-considered
-equal
-if
-they
-have
-equivalent
-key-value
-pairs.
-</li>
-</ol>
-</li>
-<li>
-Otherwise,
-append
-<i>
-element
-</i>
-to
-the
-<code>
-@list
-</code>
-member
-of
-<i>
-list
-</i>.
-</li>
-</ol>
-</li>
-<li>
-Reference
-the
-value
-of
-the
-<i>
-id
-</i>
-member
-of
-<i>
-graph
-</i>
-using
-the
-variable
-<i>
-node
-</i>.
-</li>
-<li>
-If
-<i>
-element
-</i>
-has
-an
-<code>
-@type
-</code>
-key,
-append
-each
-item
-of
-its
-associated
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-to
-the
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-associated
-with
-the
-<code>
-@type
-</code>
-key
-of
-<i>
-node
-</i>
-unless
-it
-is
-already
-in
-that
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>.
-Finally
-remove
-the
-<code>
-@type
-</code>
-member
-from
-<i>
-element
-</i>.
-</li>
-<li>
-If
-<i>
-element
-</i>
-has
-an
-<code>
-@index
-</code>
-member,
-set
-the
-<code>
-@index
-</code>
-member
-of
-<i>
-node
-</i>
-to
-its
-value.
-If
-<a class="tref internalDFN" title="node" href="#dfn-node">
-node
-</a>
-has
-already
-an
-<code>
-@index
-</code>
-member
-with
-a
-different
-value,
-a
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.conflicting-indexes">
-conflicting
-indexes
-</a>
-</code>
-error
-has
-been
-detected
-and
-processing
-is
-aborted.
-Otherwise,
-continue
-by
-removing
-the
-<code>
-@index
-</code>
-member
-from
-<i>
-element
-</i>.
-</li>
-<li>
-If
-<i>
-element
-</i>
-has
-an
-<code>
-@reverse
-</code>
-member:
-<ol class="algorithm">
-<li>
-Create
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-<i>
-referenced
-node
-</i>
-with
-a
-single
-member
-<code>
-@id
-</code>
-whose
-value
-is
-<i>
-id
-</i>.
-</li>
-<li>
-Set
-<i>
-reverse
-map
-</i>
-to
-the
-value
-of
-the
-<code>
-@reverse
-</code>
-member
-of
-<i>
-element
-</i>.
-</li>
-<li>
-For
-each
-key-value
-pair
-<i>
-property
-</i>
--
-<i>
-values
-</i>
-in
-<i>
-reverse
-map
-</i>:
-<ol class="algorithm">
-<li>
-For
-each
-<i>
-value
-</i>
-of
-<i>
-values
-</i>:
-<ol class="algorithm">
-<li>
-If
-<i>
-value
-</i>
-has
-a
-<i>
-property
-</i>
-member,
-append
-<i>
-referenced
-node
-</i>
-to
-its
-value;
-otherwise
-create
-a
-<i>
-property
-</i>
-member
-whose
-value
-is
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-containing
-<i>
-referenced
-node
-</i>.
-</li>
-<li>
-Recursively
-invoke
-this
-algorithm
-passing
-<i>
-value
-</i>
-for
-<i>
-element
-</i>,
-<i>
-node
-map
-</i>,
-and
-<a class="tref internalDFN" title="active-graph" href="#dfn-active-graph">
-active
-graph
-</a>.
-</li>
-</ol>
-</li>
-</ol>
-</li>
-<li>
-Remove
-the
-<code>
-@reverse
-</code>
-member
-from
-<i>
-element
-</i>.
-</li>
-</ol>
-</li>
-<li>
-If
-<i>
-element
-</i>
-has
-an
-<code>
-@graph
-</code>
-member,
-recursively
-invoke
-this
-algorithm
-passing
-the
-value
-of
-the
-<code>
-@graph
-</code>
-member
-for
-<i>
-element
-</i>,
-<i>
-node
-map
-</i>,
-and
-<i>
-id
-</i>
-for
-<a class="tref internalDFN" title="active-graph" href="#dfn-active-graph">
-active
-graph
-</a>
-before
-removing
-the
-<code>
-@graph
-</code>
-member
-from
-<i>
-element
-</i>.
-</li>
-<li>
-Finally,
-for
-each
-key-value
-pair
-<i>
-property
-</i>
--
-<i>
-value
-</i>
-in
-<i>
-element
-</i>
-ordered
-by
-<i>
-property
-</i>
-perform
-the
-following
-steps:
-<ol class="algorithm">
-<li>
-If
-<i>
-property
-</i>
-is
-a
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifier
-</a>,
-replace
-it
-with
-a
-newly
-<a href="#generate-blank-node-identifier">
-generated
-blank
-node
-identifier
-</a>
-passing
-<i>
-property
-</i>
-for
-<i>
-identifier
-</i>.
-</li>
-<li>
-If
-<i>
-node
-</i>
-does
-not
-have
-a
-<i>
-property
-</i>
-member,
-create
-one
-and
-initialize
-its
-value
-to
-an
-empty
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>.
-</li>
-<li>
-Recursively
-invoke
-this
-algorithm
-passing
-<i>
-value
-</i>
-for
-<i>
-element
-</i>,
-<i>
-node
-map
-</i>,
-<a class="tref internalDFN" title="active-graph" href="#dfn-active-graph">
-active
-graph
-</a>,
-<i>
-id
-</i>
-for
-<a class="tref internalDFN" title="active-subject" href="#dfn-active-subject">
-active
-subject
-</a>,
-<ins class="diff-new">and
-</ins>
-<i>
-property
-</i>
-for
-<a class="tref internalDFN" title="active-property" href="#dfn-active-property">
-active
-property
-<del class="diff-old">,
-and
-list
-.
-</del>
-</a>.
-</li>
-</ol>
-</li>
-</ol>
-</li>
-</ol>
-</section>
-</section>
-<section id="generate-blank-node-identifier">
-<h3>
-<span class="secno">
-9.3
-</span>
-Generate
-Blank
-Node
-Identifier
-</h3>
-<p>
-This
-algorithm
-is
-used
-to
-<del class="diff-old">determine
-if
-two
-</del>
-generate
-new
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifiers
-</a>
-or
-to
-relabel
-an
-existing
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifier
-</a>
-to
-avoid
-collision
-by
-the
-introduction
-of
-new
-ones.
-</p>
-<section class="informative">
-<h4 id="overview-12">
-Overview
-</h4>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-The
-simplest
-case
-is
-if
-there
-exists
-already
-a
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifier
-</a>
-in
-the
-<i>
-identifier
-map
-</i>
-for
-the
-passed
-<i>
-identifier
-</i>,
-in
-which
-case
-it
-is
-simply
-returned.
-Otherwise,
-a
-new
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifier
-</a>
-is
-generated
-by
-concatenating
-the
-string
-<code>
-_:b
-</code>
-and
-the
-<i>
-counter
-</i>.
-If
-the
-passed
-<i>
-identifier
-</i>
-is
-not
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-an
-entry
-is
-created
-in
-the
-<i>
-identifier
-map
-</i>
-associating
-the
-<i>
-identifier
-</i>
-with
-the
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifier
-</a>.
-Finally,
-the
-<i>
-counter
-</i>
-is
-increased
-by
-one
-and
-the
-new
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifier
-</a>
-is
-returned.
-</p>
-</section>
-<section>
-<h4 id="algorithm-12">
-Algorithm
-</h4>
-<p>
-The
-algorithm
-takes
-a
-single
-input
-variable
-<i>
-identifier
-</i>
-which
-may
-be
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>.
-Between
-its
-executions,
-the
-algorithm
-needs
-to
-keep
-an
-<i>
-identifier
-map
-</i>
-to
-relabel
-existing
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifiers
-</a>
-consistently
-and
-a
-<i>
-counter
-</i>
-to
-generate
-new
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifiers
-</a>.
-The
-<i>
-counter
-</i>
-is
-initialized
-to
-<code>
-0
-</code>
-by
-default.
-</p>
-<ol class="algorithm">
-<li>
-If
-<i>
-identifier
-</i>
-is
-not
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>
-and
-has
-an
-entry
-in
-the
-<i>
-identifier
-map
-</i>,
-return
-the
-mapped
-identifier.
-</li>
-<li>
-Otherwise,
-generate
-a
-new
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifier
-</a>
-by
-concatenating
-the
-string
-<code>
-_:b
-</code>
-and
-<i>
-counter
-</i>.
-</li>
-<li>
-Increment
-<i>
-counter
-</i>
-by
-<code>
-1
-</code>.
-</li>
-<li>
-If
-<i>
-identifier
-</i>
-is
-not
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-create
-a
-new
-entry
-for
-<i>
-identifier
-</i>
-in
-<i>
-identifier
-map
-</i>
-and
-set
-its
-value
-to
-the
-new
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifier
-</a>.
-</li>
-<li>
-Return
-the
-new
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifier
-</a>.
-</li>
-</ol>
-</section>
-</section>
-</section>
-<section id="rdf-serialization-deserialization-algorithms">
-<h2>
-<span class="secno">
-10.
-</span>
-RDF
-<del class="diff-old">Conversion
-</del>
-<ins class="diff-chg">Serialization/Deserialization
-</ins>
-Algorithms
-</h2>
-<p>
-This
-section
-describes
-algorithms
-to
-<del class="diff-old">transform
-</del>
-<ins class="diff-chg">deserialize
-</ins>
-a
-JSON-LD
-document
-to
-an
-<a class="tref internalDFN" title="rdf-dataset" href="#dfn-rdf-dataset">
-RDF
-dataset
-</a>
-and
-vice
-versa.
-The
-algorithms
-are
-designed
-for
-in-memory
-implementations
-with
-random
-access
-to
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-elements.
-</p>
-<p>
-Throughout
-this
-section,
-the
-following
-vocabulary
-<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
-prefixes
-</a>
-are
-used
-in
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
-compact
-IRIs
-</a>:
-</p>
-<table class="simple">
-<thead>
-<tr>
-<th>
-Prefix
-</th>
-<th>
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-rdf
-</td>
-<td>
-http://www.w3.org/1999/02/22-rdf-syntax-ns#
-</td>
-</tr>
-<tr>
-<td>
-rdfs
-</td>
-<td>
-http://www.w3.org/2000/01/rdf-schema#
-</td>
-</tr>
-<tr>
-<td>
-xsd
-</td>
-<td>
-http://www.w3.org/2001/XMLSchema#
-</td>
-</tr>
-</tbody>
-</table>
-<section id="deserialize-json-ld-to-rdf-algorithm">
-<h3>
-<span class="secno">
-10.1
-</span>
-<del class="diff-old">Convert
-</del>
-<ins class="diff-chg">Deserialize
-JSON-LD
-</ins>
-to
-RDF
-<del class="diff-old">Algorithm
-</del>
-<ins class="diff-chg">algorithm
-</ins>
-</h3>
-<p>
-This
-<del class="diff-old">algorithms
-converts
-</del>
-<ins class="diff-chg">algorithm
-deserializes
-</ins>
-a
-JSON-LD
-document
-to
-an
-<a class="tref internalDFN" title="rdf-dataset" href="#dfn-rdf-dataset">
-RDF
-dataset
-</a>.
-Please
-note
-that
-RDF
-does
-not
-allow
-a
-<a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">
-blank
-node
-</a>
-to
-be
-used
-as
-a
-<del class="diff-old">graph
-name
-or
-</del>
-<a class="tref internalDFN" title="property" href="#dfn-property">
-property
-</a>,
-while
-JSON-LD
-does.
-<del class="diff-old">JSON-LD-RDF
-Converters
-can
-work
-around
-this
-restriction,
-when
-converting
-JSON-LD
-to
-RDF,
-</del>
-<ins class="diff-chg">Therefore,
-</ins>
-by
-<del class="diff-old">converting
-such
-</del>
-<ins class="diff-chg">default
-RDF
-triples
-that
-would
-have
-contained
-</ins>
-blank
-nodes
-<del class="diff-old">to
-IRIs
-,
-minting
-new
-"Skolem
-IRIs"
-</del>
-as
-<del class="diff-old">per
-Replacing
-Blank
-Nodes
-with
-IRIs
-of
-[
-RDF11-CONCEPTS
-].
-</del>
-<ins class="diff-chg">properties
-are
-discarded
-when
-interpreting
-JSON-LD
-as
-RDF.
-</ins>
-</p>
-<div class="issue atrisk">
-<div class="issue-title" role="heading" aria-level="4">
-<span>
-Feature
-at
-Risk
-<del class="diff-old">1
-</del>
-<ins class="diff-chg">3
-</ins>
-</span>:
-Allow
-blank
-nodes
-to
-be
-used
-as
-<del class="diff-old">graph
-name
-or
-property
-</del>
-<ins class="diff-chg">properties
-</ins>
-</div>
-<div class="atrisk">
-<p class="atrisk-head">
-Note:
-This
-feature
-is
-<a href="http://www.w3.org/2005/10/Process-20051014/tr#cfi">
-"at
-risk"
-</a>
-and
-may
-be
-removed
-from
-this
-specification
-based
-on
-feedback.
-Please
-send
-feedback
-to
-<a href="mailto:public-rdf-comments@w3.org">
-public-rdf-comments@w3.org
-</a>.
-For
-the
-current
-status
-see
-<a href="http://www.w3.org/2011/rdf-wg/wiki/JSON-LD_Features_at_Risk">
-features
-"at
-risk"
-in
-JSON-LD
-1.0
-</a>
-</p>
-<p>
-RDF
-<del class="diff-old">does
-</del>
-<ins class="diff-chg">graphs
-do
-</ins>
-not
-<del class="diff-old">currently
-</del>
-allow
-<del class="diff-old">a
-</del>
-<a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">
-blank
-<del class="diff-old">node
-</del>
-<ins class="diff-chg">nodes
-</ins>
-</a>
-to
-be
-used
-as
-<del class="diff-old">graph
-name
-or
-property
-</del>
-<ins class="diff-chg">an
-</ins><a class="tref internalDFN" title="rdf-predicate" href="#dfn-rdf-predicate"><ins class="diff-chg">
-RDF
-predicate
-</ins>
-</a>,
-while
-JSON-LD
-does.
-<del class="diff-old">JSON-LD-RDF
-Converters
-can
-work
-around
-</del>
-<ins class="diff-chg">Unless
-the
-</ins><i><ins class="diff-chg">
-produce
-generalized
-RDF
-</ins></i><ins class="diff-chg">
-flag
-is
-set,
-</ins>
-this
-<del class="diff-old">restriction,
-when
-converting
-JSON-LD
-to
-RDF,
-by
-converting
-such
-</del>
-<ins class="diff-chg">algorithm
-will
-exclude
-triples
-including
-a
-</ins>
-<a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">
-blank
-<del class="diff-old">nodes
-to
-IRIs
-,
-minting
-new
-"Skolem
-IRIs"
-as
-per
-Replacing
-Blank
-Nodes
-with
-IRIs
-of
-[
-RDF11-CONCEPTS
-</del>
-<ins class="diff-chg">node
-</ins>
-</a>
-<del class="diff-old">].
-Based
-on
-feedback
-from
-implementors
-the
-Working
-Group
-may
-decide
-to
-disallow
-blank
-nodes
-as
-graph
-names
-and
-properties
-in
-JSON-LD.
-If
-this
-change
-would
-affect
-you,
-be
-sure
-to
-send
-in
-a
-comment.
-</del>
-<a class="tref internalDFN" title="rdf-predicate" href="#dfn-rdf-predicate">
-<ins class="diff-chg">RDF
-predicate
-</ins></a>.
-</p>
-</div>
-</div>
-<section class="informative">
-<h4 id="overview-13">
-Overview
-</h4>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-The
-JSON-LD
-document
-is
-expanded
-and
-converted
-to
-a
-<i>
-node
-map
-</i>
-using
-the
-<a href="#node-map-generation">
-Node
-Map
-Generation
-algorithm
-</a>.
-This
-allows
-each
-graph
-represented
-within
-the
-document
-to
-be
-extracted
-and
-flattened,
-making
-it
-easier
-to
-process
-each
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
-node
-object
-</a>.
-Each
-graph
-from
-the
-<i>
-node
-map
-</i>
-is
-processed
-to
-extract
-<a class="tref internalDFN" title="rdf-triple" href="#dfn-rdf-triple">
-RDF
-triples
-</a>,
-to
-which
-any
-(non-default)
-graph
-name
-is
-applied
-to
-create
-an
-<a class="tref internalDFN" title="rdf-dataset" href="#dfn-rdf-dataset">
-RDF
-dataset
-</a>.
-Each
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
-node
-object
-</a>
-in
-the
-<i>
-node
-map
-</i>
-has
-an
-<code>
-@id
-</code>
-member
-which
-corresponds
-to
-the
-<a class="tref internalDFN" title="rdf-subject" href="#dfn-rdf-subject">
-RDF
-subject
-</a>,
-the
-other
-members
-represent
-<a class="tref internalDFN" title="rdf-predicate" href="#dfn-rdf-predicate">
-RDF
-predicates
-</a>.
-Each
-member
-value
-is
-either
-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>
-or
-can
-be
-transformed
-to
-an
-<a class="tref externalDFN" title="rdf-literal" href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">
-RDF
-literal
-</a>
-to
-generate
-an
-<a class="tref internalDFN" title="rdf-triple" href="#dfn-rdf-triple">
-RDF
-triple
-</a>.
-<a class="tref internalDFN" title="list" href="#dfn-list">
-Lists
-</a>
-are
-transformed
-into
-an
-<a class="tref externalDFN" title="rdf-collection" href="http://www.w3.org/TR/rdf-schema/#ch_collectionvocab">
-RDF
-Collection
-</a>
-using
-the
-<a href="#list-to-rdf-conversion">
-List
-to
-RDF
-Conversion
-algorithm.
-</a>
-</p>
-</section>
-<section>
-<h4 id="algorithm-13">
-Algorithm
-</h4>
-<p>
-The
-algorithm
-takes
-a
-JSON-LD
-document
-<i>
-element
-</i>
-and
-returns
-an
-<a class="tref internalDFN" title="rdf-dataset" href="#dfn-rdf-dataset">
-RDF
-dataset
-</a>.
-<ins class="diff-new">Unless
-the
-</ins><i><ins class="diff-new">
-produce
-generalized
-RDF
-</ins></i><ins class="diff-new">
-flag
-is
-set
-to
-</ins><a class="tref internalDFN" title="true" href="#dfn-true"><ins class="diff-new">
-true
-</ins></a>,<a class="tref internalDFN" title="rdf-triple" href="#dfn-rdf-triple"><ins class="diff-new">
-RDF
-triples
-</ins></a><ins class="diff-new">
-containing
-a
-</ins><a class="tref internalDFN" title="blank-node" href="#dfn-blank-node"><ins class="diff-new">
-blank
-node
-</ins></a><a class="tref internalDFN" title="rdf-predicate" href="#dfn-rdf-predicate"><ins class="diff-new">
-predicate
-</ins></a><ins class="diff-new">
-are
-excluded
-from
-output.
-</ins></p><p><ins class="diff-new">
-This
-algorithm
-generates
-new
-</ins><a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier"><ins class="diff-new">
-blank
-node
-identifiers
-</ins></a><ins class="diff-new">
-and
-relabels
-existing
-</ins><a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier"><ins class="diff-new">
-blank
-node
-identifiers
-</ins></a>.<ins class="diff-new">
-The
-used
-</ins><a href="#generate-blank-node-identifier"><ins class="diff-new">
-Generate
-Blank
-Node
-Identifier
-algorithm
-</ins></a><ins class="diff-new">
-keeps
-an
-</ins><i><ins class="diff-new">
-identifier
-map
-</ins></i><ins class="diff-new">
-and
-a
-</ins><i><ins class="diff-new">
-counter
-</ins></i><ins class="diff-new">
-to
-ensure
-consistent
-relabeling
-and
-avoid
-collisions.
-Thus,
-before
-this
-algorithm
-is
-run,
-the
-</ins><i><ins class="diff-new">
-identifier
-map
-</ins></i><ins class="diff-new">
-is
-reset
-and
-the
-</ins><i><ins class="diff-new">
-counter
-</ins></i><ins class="diff-new">
-is
-initialized
-to
-</ins><code><ins class="diff-new">
-0
-</ins></code>.
-</p>
-<ol class="algorithm">
-<li>
-Expand
-<i>
-element
-</i>
-according
-<ins class="diff-new">to
-</ins>
-the
-<a href="#expansion-algorithm">
-Expansion
-algorithm
-</a>.
-</li>
-<li>
-Generate
-a
-<i>
-node
-map
-</i>
-according
-<ins class="diff-new">to
-</ins>
-the
-<a href="#node-map-generation">
-Node
-Map
-Generation
-algorithm
-</a>.
-</li>
-<li>
-Initialize
-an
-empty
-<a class="tref internalDFN" title="rdf-dataset" href="#dfn-rdf-dataset">
-RDF
-dataset
-</a>
-<i>
-dataset
-</i>.
-</li>
-<li>
-For
-each
-<i>
-graph
-name
-</i>
-and
-<i>
-graph
-</i>
-in
-<i>
-node
-map
-</i>
-<ins class="diff-new">ordered
-by
-</ins><i><ins class="diff-new">
-graph
-name
-</ins>
-</i>:
-<ol class="algorithm">
-<li>
-<ins class="diff-new">If
-</ins><i><ins class="diff-new">
-graph
-name
-</ins></i><ins class="diff-new">
-is
-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">
-continue
-with
-the
-next
-</ins><i><ins class="diff-new">
-graph
-name
-</ins></i><ins class="diff-new">
--
-</ins><i><ins class="diff-new">
-graph
-</ins></i><ins class="diff-new">
-pair.
-</ins></li><li>
-Initialize
-<i>
-triples
-</i>
-as
-an
-empty
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>.
-</li>
-<li>
-For
-each
-<i>
-subject
-</i>
-and
-<i>
-node
-</i>
-in
-<i>
-graph
-</i>
-<ins class="diff-new">ordered
-by
-</ins><i><ins class="diff-new">
-subject
-</ins>
-</i>:
-<ol class="algorithm">
-<li>
-<ins class="diff-new">If
-</ins><i><ins class="diff-new">
-subject
-</ins></i><ins class="diff-new">
-is
-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">
-continue
-with
-the
-next
-</ins><i><ins class="diff-new">
-subject
-</ins></i><ins class="diff-new">
--
-</ins><i><ins class="diff-new">
-node
-</ins></i><ins class="diff-new">
-pair.
-</ins></li><li>
-For
-each
-<i>
-property
-</i>
-and
-<i>
-values
-</i>
-in
-<i>
-node
-</i>
-<ins class="diff-new">ordered
-by
-</ins><i><ins class="diff-new">
-property
-</ins>
-</i>:
-<ol class="algorithm">
-<li>
-If
-<i>
-property
-</i>
-is
-<code>
-@type
-</code>,
-then
-for
-each
-<i>
-type
-</i>
-in
-<i>
-values
-</i>,
-append
-a
-<a class="tref internalDFN" title="triple" href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple">
-triple
-</a>
-composed
-of
-<i>
-subject
-</i>,
-<code>
-rdf:type
-</code>,
-and
-<i>
-type
-</i>
-to
-<i>
-triples
-</i>.
-</li>
-<li>
-Otherwise,
-if
-<i>
-property
-</i>
-is
-a
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keyword
-</a>
-continue
-<del class="diff-old">to
-</del>
-<ins class="diff-chg">with
-</ins>
-the
-next
-<i>
-property
-</i>
--
-<i>
-values
-</i>
-pair.
-</li>
-<li>
-Otherwise,
-<ins class="diff-new">if
-</ins>
-<i>
-property
-</i>
-is
-<del class="diff-old">an
-</del>
-<ins class="diff-chg">a
-</ins><a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier"><ins class="diff-chg">
-blank
-node
-identifier
-</ins></a><ins class="diff-chg">
-and
-the
-</ins><i><ins class="diff-chg">
-produce
-generalized
-RDF
-</ins></i><ins class="diff-chg">
-flag
-is
-not
-</ins><a class="tref internalDFN" title="true" href="#dfn-true"><ins class="diff-chg">
-true
-</ins></a>,<ins class="diff-chg">
-continue
-with
-the
-next
-</ins><i><ins class="diff-chg">
-property
-</ins></i><ins class="diff-chg">
--
-</ins><i><ins class="diff-chg">
-values
-</ins></i><ins class="diff-chg">
-pair.
-</ins></li><li><ins class="diff-chg">
-Otherwise,
-if
-</ins><i><ins class="diff-chg">
-property
-</ins></i><ins class="diff-chg">
-is
-a
-</ins><a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri"><ins class="diff-chg">
-relative
-</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
-IRI
-</ins></abbr>
-</a>,
-<ins class="diff-new">continue
-with
-the
-next
-</ins><i><ins class="diff-new">
-property
-</ins></i><ins class="diff-new">
--
-</ins><i><ins class="diff-new">
-values
-</ins></i><ins class="diff-new">
-pair.
-</ins></li><li><ins class="diff-new">
-Otherwise,
-</ins><i><ins class="diff-new">
-property
-</ins></i><ins class="diff-new">
-is
-an
-</ins><a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri"><ins class="diff-new">
-absolute
-</ins>
-<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>.
-For
-each
-<i>
-item
-</i>
-in
-<i>
-values
-</i>:
-<ol class="algorithm">
-<li>
-If
-<i>
-item
-</i>
-is
-a
-<a class="tref internalDFN" title="list-object" href="#dfn-list-object">
-list
-object
-</a>,
-initialize
-<i>
-list
-triples
-</i>
-as
-an
-empty
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-and
-<i>
-list
-head
-</i>
-to
-the
-result
-of
-the
-<a href="#list-to-rdf-conversion">
-List
-Conversion
-algorithm
-</a>,
-passing
-the
-value
-associated
-with
-the
-<code>
-@list
-</code>
-key
-from
-<i>
-item
-</i>
-and
-<i>
-list
-triples
-</i>.
-Append
-first
-a
-<a class="tref internalDFN" title="triple" href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple">
-triple
-</a>
-composed
-of
-<i>
-subject
-</i>,
-<i>
-property
-</i>,
-and
-<i>
-list
-head
-</i>
-to
-<i>
-triples
-</i>
-and
-finally
-append
-all
-<a class="tref internalDFN" title="triple" href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple">
-triples
-</a>
-from
-<i>
-list
-triples
-</i>
-to
-<i>
-triples
-</i>.
-</li>
-<li>
-Otherwise,
-<i>
-item
-</i>
-is
-a
-<a class="tref internalDFN" title="value-object" href="#dfn-value-object">
-value
-object
-</a>
-or
-a
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
-node
-object
-</a>.
-Append
-a
-<a class="tref internalDFN" title="triple" href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple">
-triple
-</a>
-composed
-of
-<i>
-subject
-</i>,
-<i>
-property
-</i>,
-and
-the
-result
-of
-using
-the
-<a href="#object-to-rdf-conversion">
-Object
-to
-RDF
-Conversion
-algorithm
-</a>
-passing
-<i>
-item
-</i>
-to
-<i>
-triples
-<del class="diff-old">.
-</del>
-</i>,
-<ins class="diff-chg">unless
-the
-result
-is
-</ins><a class="tref internalDFN" title="null" href="#dfn-null"><ins class="diff-chg">
-null
-</ins></a>,<ins class="diff-chg">
-indicating
-a
-</ins><a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri"><ins class="diff-chg">
-relative
-</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
-IRI
-</ins></abbr></a><ins class="diff-chg">
-that
-has
-to
-be
-ignored.
-</ins>
-</li>
-</ol>
-</li>
-</ol>
-</li>
-</ol>
-</li>
-<li>
-If
-<i>
-graph
-name
-</i>
-is
-<code>
-@default
-</code>,
-add
-<i>
-triples
-</i>
-to
-the
-<a class="tref internalDFN" title="default-graph" href="#dfn-default-graph">
-default
-graph
-</a>
-in
-<i>
-dataset
-</i>.
-</li>
-<li>
-Otherwise,
-create
-a
-<a class="tref internalDFN" title="named-graph" href="#dfn-named-graph">
-named
-graph
-</a>
-in
-<i>
-dataset
-</i>
-composed
-of
-<i>
-graph
-name
-</i>
-and
-add
-<i>
-triples
-</i>.
-</li>
-</ol>
-</li>
-<li>
-Return
-<i>
-dataset
-</i>.
-</li>
-</ol>
-</section>
-</section>
-<section id="object-to-rdf-conversion">
-<h3>
-<span class="secno">
-10.2
-</span>
-Object
-to
-RDF
-Conversion
-</h3>
-<p>
-This
-algorithm
-takes
-a
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
-node
-object
-</a>
-or
-<a class="tref internalDFN" title="value-object" href="#dfn-value-object">
-value
-object
-</a>
-and
-transforms
-it
-into
-an
-<a class="tref externalDFN" title="rdf-resource" href="http://www.w3.org/TR/rdf11-concepts/#dfn-resource">
-RDF
-resource
-</a>
-to
-be
-used
-as
-the
-<a class="tref internalDFN" title="object" href="http://www.w3.org/TR/rdf11-concepts/#dfn-object">
-object
-</a>
-of
-an
-<a class="tref internalDFN" title="rdf-triple" href="#dfn-rdf-triple">
-RDF
-triple
-</a>.
-<ins class="diff-new">If
-a
-</ins><a class="tref internalDFN" title="node-object" href="#dfn-node-object"><ins class="diff-new">
-node
-object
-</ins></a><ins class="diff-new">
-containing
-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">
-is
-passed
-to
-the
-algorithm,
-</ins><a class="tref internalDFN" title="null" href="#dfn-null"><ins class="diff-new">
-null
-</ins></a><ins class="diff-new">
-is
-returned
-which
-then
-causes
-the
-resulting
-</ins><a class="tref internalDFN" title="rdf-triple" href="#dfn-rdf-triple"><ins class="diff-new">
-RDF
-triple
-</ins></a><ins class="diff-new">
-to
-be
-ignored.
-</ins>
-</p>
-<section class="informative">
-<h4 id="overview-14">
-Overview
-</h4>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-<a class="tref internalDFN" title="value-object" href="#dfn-value-object">
-Value
-objects
-</a>
-are
-transformed
-to
-<a class="tref internalDFN" title="rdf-literal" href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">
-RDF
-literals
-</a>
-as
-described
-in
-<a class="sectionRef" href="#data-round-tripping">
-section
-10.6
-Data
-Round
-Tripping
-</a>
-whereas
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
-node
-objects
-</a>
-are
-transformed
-to
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-IRIs
-<del class="diff-old">or
-</del>
-</a>,
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifiers
-</a>,
-<ins class="diff-new">or
-</ins><a class="tref internalDFN" title="null" href="#dfn-null"><ins class="diff-new">
-null
-</ins>
-</a>.
-</p>
-</section>
-<section>
-<h4 id="algorithm-14">
-Algorithm
-</h4>
-<p>
-The
-algorithm
-takes
-as
-its
-sole
-argument
-<i>
-item
-</i>
-which
-must
-be
-either
-a
-<a class="tref internalDFN" title="value-object" href="#dfn-value-object">
-value
-object
-</a>
-or
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
-node
-object
-</a>.
-</p>
-<ol class="algorithm">
-<li>
-If
-<i>
-item
-</i>
-is
-a
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
-node
-object
-</a>
-<ins class="diff-new">and
-the
-value
-of
-its
-</ins><code><ins class="diff-new">
-@id
-</ins></code><ins class="diff-new">
-member
-is
-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">
-return
-</ins><a class="tref internalDFN" title="null" href="#dfn-null"><ins class="diff-new">
-null
-</ins></a>.</li><li><ins class="diff-new">
-If
-</ins><i><ins class="diff-new">
-item
-</ins></i><ins class="diff-new">
-is
-a
-</ins><a class="tref internalDFN" title="node-object" href="#dfn-node-object"><ins class="diff-new">
-node
-object
-</ins></a>,
-return
-the
-<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>
-associated
-with
-its
-<code>
-@id
-</code>
-member.
-</li>
-<li>
-Otherwise,
-<i>
-item
-</i>
-is
-a
-<a class="tref internalDFN" title="value-object" href="#dfn-value-object">
-value
-object
-</a>.
-Initialize
-<i>
-value
-</i>
-to
-the
-value
-associated
-with
-the
-<code>
-@value
-</code>
-member
-in
-<i>
-item
-</i>.
-</li>
-<li>
-Initialize
-<i>
-datatype
-</i>
-to
-the
-value
-associated
-with
-the
-<code>
-@type
-</code>
-member
-of
-<i>
-item
-</i>
-or
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>
-if
-<i>
-item
-</i>
-does
-not
-have
-such
-a
-member.
-</li>
-<li>
-If
-<i>
-value
-</i>
-is
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-or
-<a class="tref internalDFN" title="false" href="#dfn-false">
-false
-</a>,
-set
-<i>
-value
-</i>
-to
-the
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>
-<code>
-true
-</code>
-or
-<code>
-false
-</code>
-which
-is
-the
-<a class="tref internalDFN" title="canonical-lexical-form" href="#dfn-canonical-lexical-form">
-canonical
-lexical
-form
-</a>
-as
-described
-in
-<a class="sectionRef" href="#data-round-tripping">
-section
-10.6
-Data
-Round
-Tripping
-</a>
-If
-<i>
-datatype
-</i>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-set
-it
-to
-<code>
-xsd:boolean
-</code>.
-</li>
-<li>
-Otherwise,
-if
-<i>
-value
-</i>
-is
-a
-<a class="tref internalDFN" title="number" href="#dfn-number">
-number
-</a>
-with
-<del class="diff-old">fractions
-</del>
-<ins class="diff-chg">a
-non-zero
-fractional
-part
-(the
-result
-of
-a
-modulo‑1
-operation)
-</ins>
-or
-<i>
-value
-</i>
-is
-a
-<a class="tref internalDFN" title="number" href="#dfn-number">
-number
-</a>
-and
-<i>
-datatype
-</i>
-equals
-<code>
-xsd:double
-</code>,
-convert
-<i>
-value
-</i>
-to
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>
-in
-<a class="tref internalDFN" title="canonical-lexical-form" href="#dfn-canonical-lexical-form">
-canonical
-lexical
-form
-</a>
-of
-an
-<code>
-xsd:double
-</code>
-as
-defined
-in
-[
-<cite>
-<a class="bibref" href="#bib-XMLSCHEMA11-2">
-XMLSCHEMA11-2
-</a>
-</cite>
-]
-and
-described
-in
-<a class="sectionRef" href="#data-round-tripping">
-section
-10.6
-Data
-Round
-Tripping
-</a>.
-If
-<i>
-datatype
-</i>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-set
-it
-to
-<code>
-xsd:double
-</code>.
-</li>
-<li>
-Otherwise,
-if
-<i>
-value
-</i>
-is
-a
-<a class="tref internalDFN" title="number" href="#dfn-number">
-number
-</a>
-<del class="diff-old">without
-fractions
-</del>
-<ins class="diff-chg">with
-no
-non-zero
-fractional
-part
-(the
-result
-of
-a
-modulo‑1
-operation)
-</ins>
-or
-<i>
-value
-</i>
-is
-a
-<a class="tref internalDFN" title="number" href="#dfn-number">
-number
-</a>
-and
-<i>
-datatype
-</i>
-equals
-<code>
-xsd:integer
-</code>,
-convert
-<i>
-value
-</i>
-to
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>
-in
-<a class="tref internalDFN" title="canonical-lexical-form" href="#dfn-canonical-lexical-form">
-canonical
-lexical
-form
-</a>
-of
-an
-<code>
-xsd:integer
-</code>
-as
-defined
-in
-[
-<cite>
-<a class="bibref" href="#bib-XMLSCHEMA11-2">
-XMLSCHEMA11-2
-</a>
-</cite>
-]
-and
-described
-in
-<a class="sectionRef" href="#data-round-tripping">
-section
-10.6
-Data
-Round
-Tripping
-</a>.
-If
-<i>
-datatype
-</i>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-set
-it
-to
-<code>
-xsd:integer
-</code>.
-</li>
-<li>
-Otherwise,
-if
-<i>
-datatype
-</i>
-is
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-set
-it
-to
-<code>
-xsd:string
-</code>
-or
-<code>
-rdf:langString
-</code>,
-depending
-on
-if
-item
-has
-an
-<code>
-@language
-</code>
-member.
-</li>
-<li>
-Initialize
-<i>
-literal
-</i>
-as
-an
-<a class="tref internalDFN" title="rdf-literal" href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">
-RDF
-literal
-</a>
-using
-<i>
-value
-</i>
-and
-<i>
-datatype
-</i>.
-If
-<i>
-item
-</i>
-has
-an
-<code>
-@language
-</code>
-member,
-add
-the
-value
-associated
-with
-the
-<code>
-@language
-</code>
-key
-as
-the
-language
-tag
-of
-<i>
-literal
-</i>.
-</li>
-<li>
-Return
-<i>
-literal
-</i>.
-</li>
-</ol>
-</section>
-</section>
-<section id="list-to-rdf-conversion">
-<h3>
-<span class="secno">
-10.3
-</span>
-List
-to
-RDF
-Conversion
-</h3>
-<p>
-List
-Conversion
-is
-the
-process
-of
-taking
-a
-<a class="tref internalDFN" title="list-object" href="#dfn-list-object">
-list
-object
-</a>
-and
-transforming
-it
-into
-an
-<a class="tref externalDFN" title="rdf-collection" href="http://www.w3.org/TR/rdf-schema/#ch_collectionvocab">
-RDF
-Collection
-</a>
-as
-defined
-in
-RDF
-Semantics
-[
-<cite>
-<a class="bibref" href="#bib-RDF-MT">
-RDF-MT
-</a>
-</cite>
-].
-</p>
-<section class="informative">
-<h4 id="overview-15">
-Overview
-</h4>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-For
-each
-element
-of
-the
-<a class="tref internalDFN" title="list" href="#dfn-list">
-list
-</a>
-a
-new
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifier
-</a>
-is
-allocated
-which
-is
-used
-to
-generate
-<code>
-rdf:first
-</code>
-and
-<code>
-rdf:rest
-</code>
-<a class="tref internalDFN" title="rdf-triple" href="#dfn-rdf-triple">
-triples
-</a>.
-The
-algorithm
-returns
-the
-list
-head,
-which
-is
-either
-the
-<del class="diff-old">the
-</del>
-first
-allocated
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifier
-</a>
-or
-<code>
-rdf:nil
-</code>
-if
-the
-<a class="tref internalDFN" title="list" href="#dfn-list">
-list
-</a>
-is
-empty.
-<ins class="diff-new">If
-a
-list
-element
-represents
-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">
-the
-corresponding
-</ins><code><ins class="diff-new">
-rdf:first
-</ins></code><ins class="diff-new">
-triple
-is
-omitted.
-</ins>
-</p>
-</section>
-<section>
-<h4 id="algorithm-15">
-Algorithm
-</h4>
-<p>
-The
-algorithm
-takes
-two
-inputs:
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-<i>
-list
-</i>
-and
-an
-empty
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-<i>
-list
-triples
-</i>
-used
-for
-returning
-the
-generated
-<a class="tref internalDFN" title="rdf-triple" href="#dfn-rdf-triple">
-triples
-</a>.
-</p>
-<ol class="algorithm">
-<li>
-If
-<i>
-list
-</i>
-is
-empty,
-return
-<code>
-rdf:nil
-</code>.
-</li>
-<li>
-Otherwise,
-create
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-<i>
-bnodes
-</i>
-composed
-of
-a
-<a href="#generate-blank-node-identifier">
-newly
-generated
-blank
-node
-identifier
-</a>
-for
-each
-entry
-in
-<i>
-list
-</i>.
-</li>
-<li>
-Initialize
-an
-empty
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-<i>
-list
-triples
-</i>.
-</li>
-<li>
-For
-each
-pair
-of
-<i>
-subject
-</i>
-from
-<i>
-bnodes
-</i>
-and
-<i>
-item
-</i>
-from
-<i>
-list
-</i>:
-<ol class="algorithm">
-<li>
-<del class="diff-old">Append
-a
-triple
-composed
-of
-</del>
-<ins class="diff-chg">Initialize
-</ins>
-<i>
-<del class="diff-old">subject
-,
-rdf:first
-,
-and
-</del>
-<ins class="diff-chg">object
-</ins></i><ins class="diff-chg">
-to
-</ins>
-the
-result
-of
-using
-<del class="diff-old">th
-</del>
-<ins class="diff-chg">the
-</ins>
-<a href="#object-to-rdf-conversion">
-Object
-to
-RDF
-Conversion
-algorithm
-</a>
-passing
-<i>
-item
-</i>
-to
-<i>
-list
-triples
-</i>.
-</li>
-<li>
-<ins class="diff-new">Unless
-</ins><i><ins class="diff-new">
-object
-</ins></i><ins class="diff-new">
-is
-</ins><a class="tref internalDFN" title="null" href="#dfn-null"><ins class="diff-new">
-null
-</ins></a>,<ins class="diff-new">
-append
-a
-</ins><a class="tref internalDFN" title="triple" href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple"><ins class="diff-new">
-triple
-</ins></a><ins class="diff-new">
-composed
-of
-</ins><i><ins class="diff-new">
-subject
-</ins></i>,<code><ins class="diff-new">
-rdf:first
-</ins></code>,<ins class="diff-new">
-and
-</ins><i><ins class="diff-new">
-object
-</ins></i>.</li><li>
-Set
-<i>
-rest
-</i>
-as
-the
-next
-entry
-in
-<i>
-bnodes
-</i>,
-or
-if
-that
-does
-not
-exist,
-<code>
-rdf:nil
-</code>.
-Append
-a
-<a class="tref internalDFN" title="triple" href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple">
-triple
-</a>
-composed
-of
-<i>
-subject
-</i>,
-<code>
-rdf:rest
-</code>,
-and
-<i>
-rest
-</i>
-to
-<i>
-list
-triples
-</i>.
-</li>
-</ol>
-</li>
-<li>
-Return
-the
-first
-<a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">
-blank
-node
-</a>
-from
-<i>
-bnodes
-</i>
-or
-<code>
-rdf:nil
-</code>
-if
-<i>
-bnodes
-</i>
-is
-empty.
-</li>
-</ol>
-</section>
-</section>
-<section id="serialize-rdf-as-json-ld-algorithm">
-<h3>
-<span class="secno">
-10.4
-</span>
-<del class="diff-old">Convert
-from
-</del>
-<ins class="diff-chg">Serialize
-</ins>
-RDF
-<ins class="diff-new">as
-JSON-LD
-</ins>
-Algorithm
-</h3>
-<p>
-This
-algorithm
-<del class="diff-old">converts
-</del>
-<ins class="diff-chg">serializes
-</ins>
-an
-<a class="tref internalDFN" title="rdf-dataset" href="#dfn-rdf-dataset">
-RDF
-dataset
-</a>
-consisting
-of
-a
-<a class="tref internalDFN" title="default-graph" href="#dfn-default-graph">
-default
-graph
-</a>
-and
-zero
-or
-more
-<a class="tref internalDFN" title="named-graph" href="#dfn-named-graph">
-named
-graphs
-</a>
-into
-a
-JSON-LD
-document.
-</p>
-<section class="informative">
-<h4 id="overview-16">
-Overview
-</h4>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-Iterate
-through
-each
-graph
-in
-the
-dataset,
-converting
-<ins class="diff-new">each
-</ins>
-<a class="tref internalDFN" title="rdf-collection" href="http://www.w3.org/TR/rdf-schema/#ch_collectionvocab">
-RDF
-<del class="diff-old">Collections
-</del>
-<ins class="diff-chg">Collection
-</ins>
-</a>
-into
-a
-<a class="tref internalDFN" title="list" href="#dfn-list">
-list
-</a>
-and
-generating
-a
-JSON-LD
-document
-in
-expanded
-form
-for
-all
-<a class="tref internalDFN" title="rdf-literal" href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">
-RDF
-literals
-</a>,
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-IRIs
-</a>
-and
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifiers
-</a>.
-If
-the
-<i>
-use
-native
-types
-</i>
-flag
-is
-set
-to
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>,
-<a class="tref internalDFN" title="rdf-literal" href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">
-RDF
-literals
-</a>
-with
-a
-<a class="tref externalDFN" title="datatype-iri" href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri">
-datatype
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-that
-equals
-<code>
-xsd:integer
-</code>
-or
-<code>
-xsd:double
-</code>
-are
-converted
-to
-a
-<a class="tref internalDFN" title="number" href="#dfn-number">
-JSON
-numbers
-</a>
-and
-<a class="tref internalDFN" title="rdf-literal" href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">
-RDF
-literals
-</a>
-with
-a
-<a class="tref externalDFN" title="datatype-iri" href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri">
-datatype
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-that
-equals
-<code>
-xsd:boolean
-</code>
-are
-converted
-to
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-or
-<a class="tref internalDFN" title="false" href="#dfn-false">
-false
-</a>
-based
-on
-their
-<a class="tref externalDFN" title="lexical-form" href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form">
-lexical
-form
-</a>
-as
-described
-in
-<a class="sectionRef" href="#data-round-tripping">
-section
-10.6
-Data
-Round
-Tripping
-</a>.
-</p>
-</section>
-<section>
-<h4 id="algorithm-16">
-Algorithm
-</h4>
-<p>
-The
-algorithm
-takes
-two
-required
-inputs:
-an
-<a class="tref internalDFN" title="rdf-dataset" href="#dfn-rdf-dataset">
-RDF
-dataset
-</a>
-and
-a
-flag
-<i>
-use
-native
-types
-</i>
-that
-defaults
-to
-<del class="diff-old">true
-</del>
-<a class="tref internalDFN" title="false" href="#dfn-false">
-<ins class="diff-chg">false
-</ins>
-</a>.
-</p>
-<ol class="algorithm">
-<li>
-Initialize
-<i>
-default
-graph
-</i>
-to
-an
-empty
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>.
-</li>
-<li>
-Initialize
-<i>
-graph
-map
-</i>
-to
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-consisting
-of
-a
-single
-member
-<code>
-@default
-</code>
-whose
-value
-references
-<i>
-default
-graph
-</i>.
-</li>
-<li>
-For
-each
-<i>
-graph
-</i>
-in
-<a class="tref internalDFN" title="rdf-dataset" href="#dfn-rdf-dataset">
-RDF
-dataset
-</a>:
-<ol class="algorithm">
-<li>
-If
-<i>
-graph
-</i>
-is
-the
-<a class="tref internalDFN" title="default-graph" href="#dfn-default-graph">
-default
-graph
-</a>,
-set
-<i>
-name
-</i>
-to
-<code>
-@default
-</code>,
-otherwise
-to
-the
-<a class="tref internalDFN" title="graph-name" href="#dfn-graph-name">
-graph
-name
-</a>
-associated
-with
-<i>
-graph
-</i>.
-</li>
-<li>
-If
-<i>
-graph
-map
-</i>
-has
-no
-<i>
-name
-</i>
-member,
-create
-one
-and
-set
-its
-value
-to
-an
-empty
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>.
-</li>
-<li>
-If
-<i>
-graph
-</i>
-is
-not
-the
-<a class="tref internalDFN" title="default-graph" href="#dfn-default-graph">
-default
-graph
-</a>
-and
-<i>
-default
-graph
-</i>
-does
-not
-have
-a
-<i>
-name
-</i>
-member,
-create
-such
-a
-member
-and
-initialize
-its
-value
-to
-a
-new
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-with
-a
-single
-member
-<code>
-@id
-</code>
-whose
-value
-is
-<i>
-name
-</i>.
-</li>
-<li>
-Reference
-the
-value
-of
-the
-<i>
-name
-</i>
-member
-in
-<i>
-graph
-map
-</i>
-using
-the
-variable
-<i>
-node
-map
-</i>.
-</li>
-<li>
-For
-each
-<a class="tref internalDFN" title="rdf-triple" href="#dfn-rdf-triple">
-RDF
-triple
-</a>
-in
-<i>
-graph
-</i>
-consisting
-of
-<i>
-subject
-</i>,
-<i>
-predicate
-</i>,
-and
-<i>
-object
-</i>:
-<ol class="algorithm">
-<li>
-If
-<i>
-node
-map
-</i>
-does
-not
-have
-a
-<i>
-subject
-</i>
-member,
-create
-one
-and
-initialize
-its
-value
-to
-a
-new
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-consisting
-of
-a
-single
-member
-<code>
-@id
-</code>
-whose
-value
-is
-set
-to
-<i>
-subject
-</i>.
-</li>
-<li>
-Reference
-the
-value
-of
-the
-<i>
-subject
-</i>
-member
-in
-<i>
-node
-map
-</i>
-using
-the
-variable
-<i>
-node
-</i>.
-</li>
-<li>
-If
-<i>
-object
-</i>
-is
-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>,
-<del class="diff-old">does
-not
-equal
-rdf:nil
-,
-</del>
-and
-<i>
-node
-map
-</i>
-does
-not
-have
-an
-<i>
-object
-</i>
-member,
-create
-one
-and
-initialize
-its
-value
-to
-a
-new
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-consisting
-of
-a
-single
-member
-<code>
-@id
-</code>
-whose
-value
-is
-set
-to
-<i>
-object
-</i>.
-</li>
-<li>
-If
-<i>
-predicate
-</i>
-equals
-<code>
-rdf:type
-</code>,
-and
-<i>
-object
-</i>
-is
-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>,
-append
-<i>
-object
-</i>
-to
-the
-value
-of
-the
-<code>
-@type
-</code>
-member
-of
-<i>
-node
-<del class="diff-old">.
-</del>
-</i>
-<ins class="diff-chg">;
-unless
-such
-an
-item
-already
-exists.
-</ins>
-If
-no
-such
-member
-exists,
-create
-one
-and
-initialize
-it
-to
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-whose
-only
-item
-is
-<i>
-object
-</i>.
-Finally,
-continue
-to
-the
-next
-<a class="tref internalDFN" title="rdf-triple" href="#dfn-rdf-triple">
-RDF
-triple
-</a>.
-</li>
-<li>
-<del class="diff-old">If
-object
-equals
-rdf:nil
-and
-predicate
-does
-not
-equal
-rdf:rest
-,
-set
-value
-to
-a
-new
-JSON
-object
-consisting
-of
-a
-single
-member
-@list
-whose
-value
-is
-set
-to
-an
-empty
-array
-.
-Otherwise,
-set
-</del>
-<ins class="diff-chg">Set
-</ins>
-<i>
-value
-</i>
-to
-the
-result
-of
-using
-the
-<a href="#rdf-to-object-conversion">
-RDF
-to
-Object
-Conversion
-algorithm
-</a>,
-passing
-<i>
-object
-</i>
-and
-<i>
-use
-native
-types
-</i>.
-</li>
-<li>
-If
-<i>
-node
-</i>
-does
-not
-have
-an
-<i>
-predicate
-</i>
-member,
-create
-one
-and
-initialize
-its
-value
-to
-an
-empty
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>.
-</li>
-<li>
-<del class="diff-old">Add
-a
-reference
-</del>
-<ins class="diff-chg">If
-there
-is
-no
-item
-equivalent
-</ins>
-to
-<i>
-value
-</i>
-<del class="diff-old">to
-the
-to
-</del>
-<ins class="diff-chg">in
-</ins>
-the
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-associated
-with
-the
-<i>
-predicate
-</i>
-member
-of
-<i>
-node
-<del class="diff-old">.
-</del>
-</i>,
-<ins class="diff-chg">append
-a
-reference
-to
-</ins><i><ins class="diff-chg">
-value
-</ins></i><ins class="diff-chg">
-to
-the
-</ins><a class="tref internalDFN" title="array" href="#dfn-array"><ins class="diff-chg">
-array
-</ins></a>.<ins class="diff-chg">
-Two
-JSON
-objects
-are
-considered
-equal
-if
-they
-have
-equivalent
-key-value
-pairs.
-</ins>
-</li>
-<li>
-If
-<i>
-object
-</i>
-is
-a
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifier
-</a>
-<del class="diff-old">and
-predicate
-equals
-neither
-rdf:first
-nor
-rdf:rest
-,
-</del>
-<ins class="diff-chg">or
-</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
-IRI
-</ins></abbr></a>,
-it
-might
-represent
-the
-<del class="diff-old">head
-of
-a
-RDF
-list:
-</del>
-<ins class="diff-chg">list
-node:
-</ins>
-<ol class="algorithm">
-<li>
-If
-the
-<i>
-object
-</i>
-member
-of
-<i>
-node
-map
-</i>
-has
-<del class="diff-old">an
-</del>
-<ins class="diff-chg">no
-</ins>
-<code>
-usages
-</code>
-member,
-<del class="diff-old">add
-a
-reference
-</del>
-<ins class="diff-chg">create
-one
-and
-initialize
-it
-</ins>
-to
-<ins class="diff-new">an
-empty
-</ins><a class="tref internalDFN" title="array" href="#dfn-array"><ins class="diff-new">
-array
-</ins></a>.</li><li><ins class="diff-new">
-Reference
-the
-</ins><code><ins class="diff-new">
-usages
-</ins></code><ins class="diff-new">
-member
-of
-the
-</ins>
-<i>
-<del class="diff-old">value
-</del>
-<ins class="diff-chg">object
-</ins>
-</i>
-<del class="diff-old">to
-it;
-otherwise
-create
-such
-a
-</del>
-member
-<ins class="diff-new">of
-</ins><i><ins class="diff-new">
-node
-map
-</ins></i><ins class="diff-new">
-using
-the
-variable
-</ins><i><ins class="diff-new">
-usages
-</ins></i>.</li><li><ins class="diff-new">
-Append
-a
-new
-</ins><a class="tref internalDFN" title="json-object" href="#dfn-json-object"><ins class="diff-new">
-JSON
-object
-</ins></a><ins class="diff-new">
-consisting
-of
-three
-members,
-</ins><code><ins class="diff-new">
-node
-</ins></code>,<code><ins class="diff-new">
-property
-</ins></code>,
-and
-<del class="diff-old">set
-its
-</del>
-<code>
-value
-</code>
-to
-<del class="diff-old">an
-</del>
-<ins class="diff-chg">the
-</ins><i><ins class="diff-chg">
-usages
-</ins></i>
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-<del class="diff-old">whose
-only
-item
-</del>
-</a>.
-<ins class="diff-chg">The
-</ins><code><ins class="diff-chg">
-node
-</ins></code><ins class="diff-chg">
-member
-</ins>
-is
-<ins class="diff-new">set
-to
-a
-reference
-to
-</ins><i><ins class="diff-new">
-node
-</ins></i>,<code><ins class="diff-new">
-property
-</ins></code><ins class="diff-new">
-to
-</ins><i><ins class="diff-new">
-predicate
-</ins></i>,<ins class="diff-new">
-and
-</ins><code><ins class="diff-new">
-value
-</ins></code><ins class="diff-new">
-to
-</ins>
-a
-reference
-to
-<i>
-value
-</i>.
-</li>
-</ol>
-</li>
-</ol>
-</li>
-</ol>
-</li>
-<li>
-For
-each
-<i>
-name
-</i>
-and
-<i>
-graph
-object
-</i>
-in
-<i>
-graph
-map
-</i>:
-<ol class="algorithm">
-<li>
-<ins class="diff-new">If
-</ins><i><ins class="diff-new">
-graph
-object
-</ins></i><ins class="diff-new">
-has
-no
-</ins><code><ins class="diff-new">
-rdf:nil
-</ins></code><ins class="diff-new">
-member,
-continue
-with
-the
-next
-</ins><i><ins class="diff-new">
-name
-</ins></i><ins class="diff-new">
--
-</ins><i><ins class="diff-new">
-graph
-object
-</ins></i><ins class="diff-new">
-pair
-as
-the
-graph
-does
-not
-contain
-any
-lists
-that
-need
-to
-be
-converted.
-</ins></li><li>
-Initialize
-<i>
-<del class="diff-old">subjects
-</del>
-<ins class="diff-chg">nil
-</ins>
-</i>
-to
-<del class="diff-old">an
-array
-whose
-items
-are
-</del>
-the
-<del class="diff-old">keys
-</del>
-<ins class="diff-chg">value
-of
-the
-</ins><code><ins class="diff-chg">
-rdf:nil
-</ins></code><ins class="diff-chg">
-member
-</ins>
-of
-<i>
-graph
-object
-</i>.
-</li>
-<li>
-For
-<ins class="diff-new">each
-</ins>
-item
-<i>
-<del class="diff-old">subj
-</del>
-<ins class="diff-chg">usage
-</ins>
-</i>
-<del class="diff-old">of
-</del>
-<ins class="diff-chg">in
-</ins>
-the
-<del class="diff-old">array
-</del>
-<code>
-<ins class="diff-chg">usages
-</ins></code><ins class="diff-chg">
-member
-of
-</ins>
-<i>
-<del class="diff-old">subjects
-</del>
-<ins class="diff-chg">nil
-</ins>
-</i>,
-perform
-the
-following
-steps:
-<ol class="algorithm">
-<li>
-<del class="diff-old">If
-graph
-object
-does
-not
-have
-a
-</del>
-<ins class="diff-chg">Initialize
-</ins>
-<i>
-<del class="diff-old">subj
-</del>
-<ins class="diff-chg">node
-</ins>
-</i>
-<del class="diff-old">member,
-it
-has
-been
-removed
-as
-it
-was
-part
-of
-a
-list.
-Continue
-with
-</del>
-<ins class="diff-chg">to
-</ins>
-the
-<del class="diff-old">next
-subj
-.
-Reference
-</del>
-<ins class="diff-chg">value
-of
-</ins>
-the
-value
-of
-the
-<del class="diff-old">subj
-</del>
-<code>
-<ins class="diff-chg">node
-</ins></code>
-member
-of
-<i>
-<del class="diff-old">graph
-object
-using
-the
-variable
-node
-.
-If
-</del>
-<ins class="diff-chg">usage
-</ins></i>,
-<i>
-<del class="diff-old">node
-</del>
-<ins class="diff-chg">property
-</ins>
-</i>
-<del class="diff-old">has
-no
-</del>
-<ins class="diff-chg">to
-the
-value
-of
-the
-</ins>
-<code>
-<del class="diff-old">usages
-</del>
-<ins class="diff-chg">property
-</ins>
-</code>
-member
-<del class="diff-old">or
-its
-value
-is
-not
-an
-array
-consisting
-</del>
-of
-<del class="diff-old">one
-item,
-continue
-with
-the
-next
-</del>
-<i>
-<del class="diff-old">subj
-.
-Reference
-the
-only
-item
-of
-the
-array
-which
-is
-</del>
-<ins class="diff-chg">usage
-</ins></i>,<ins class="diff-chg">
-and
-</ins><i><ins class="diff-chg">
-head
-</ins></i><ins class="diff-chg">
-to
-</ins>
-the
-value
-of
-the
-<code>
-<del class="diff-old">usages
-</del>
-<ins class="diff-chg">value
-</ins>
-</code>
-member
-of
-<i>
-<del class="diff-old">node
-using
-the
-variable
-value
-</del>
-<ins class="diff-chg">usage
-</ins>
-</i>.
-</li>
-<li>
-Initialize
-<del class="diff-old">the
-variables
-</del>
-<ins class="diff-chg">two
-empty
-</ins><a class="tref internalDFN" title="array" href="#dfn-array"><ins class="diff-chg">
-arrays
-</ins></a>
-<i>
-list
-</i>
-and
-<i>
-list
-nodes
-<del class="diff-old">to
-empty
-arrays
-.
-Initialize
-the
-subject
-to
-subj
-</del>
-</i>.
-</li>
-<li>
-<del class="diff-old">As
-long
-as
-</del>
-<ins class="diff-chg">While
-</ins>
-<i>
-<del class="diff-old">subject
-</del>
-<ins class="diff-chg">property
-</ins>
-</i>
-<del class="diff-old">does
-not
-equal
-</del>
-<ins class="diff-chg">equals
-</ins>
-<code>
-<del class="diff-old">rdf:nil
-</del>
-<ins class="diff-chg">rdf:rest
-</ins></code>,<ins class="diff-chg">
-the
-value
-associated
-to
-the
-</ins><code><ins class="diff-chg">
-usages
-</ins>
-</code>
-<del class="diff-old">and
-</del>
-<ins class="diff-chg">member
-of
-</ins>
-<i>
-<del class="diff-old">list
-</del>
-<ins class="diff-chg">node
-</ins>
-</i>
-<del class="diff-old">is
-not
-null
-,
-perform
-the
-following
-steps:
-If
-</del>
-<ins class="diff-chg">has
-exactly
-1
-entry,
-</ins>
-<i>
-node
-</i>
-<del class="diff-old">is
-null
-;
-the
-value
-of
-its
-@id
-member
-does
-not
-begin
-with
-_:
-;
-it
-</del>
-has
-<del class="diff-old">members
-other
-than
-@id
-,
-usages
-,
-</del>
-<ins class="diff-chg">a
-</ins>
-<code>
-rdf:first
-<del class="diff-old">,
-</del>
-</code>
-and
-<code>
-rdf:rest
-</code>
-<del class="diff-old">;
-the
-value
-</del>
-<ins class="diff-chg">property,
-both
-</ins>
-of
-<del class="diff-old">its
-rdf:first
-and
-member
-is
-not
-</del>
-<ins class="diff-chg">which
-have
-as
-value
-</ins>
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-consisting
-of
-a
-single
-<del class="diff-old">item;
-or
-the
-value
-of
-its
-</del>
-<ins class="diff-chg">element,
-and
-</ins><i><ins class="diff-chg">
-node
-</ins></i><ins class="diff-chg">
-has
-no
-other
-members
-apart
-from
-an
-optional
-</ins>
-<code>
-<del class="diff-old">rdf:rest
-</del>
-<ins class="diff-chg">@type
-</ins>
-</code>
-member
-<ins class="diff-new">whose
-value
-</ins>
-is
-<del class="diff-old">not
-</del>
-an
-array
-<del class="diff-old">containing
-</del>
-<ins class="diff-chg">with
-</ins>
-a
-single
-item
-<del class="diff-old">which
-is
-a
-JSON
-object
-that
-has
-an
-</del>
-<ins class="diff-chg">equal
-to
-</ins>
-<code>
-<del class="diff-old">@id
-member,
-it
-is
-not
-</del>
-<ins class="diff-chg">rdf:List
-</ins></code>,<i><ins class="diff-chg">
-node
-</ins></i><ins class="diff-chg">
-represents
-</ins>
-a
-<del class="diff-old">valid
-</del>
-<ins class="diff-chg">well-formed
-</ins>
-list
-node.
-<del class="diff-old">Set
-list
-</del>
-<ins class="diff-chg">Perform
-the
-following
-steps
-</ins>
-to
-<del class="diff-old">null.
-Otherwise:
-</del>
-<ins class="diff-chg">traverse
-the
-list
-backwards
-towards
-its
-head:
-</ins>
-<ol class="algorithm">
-<li>
-<del class="diff-old">Add
-</del>
-<ins class="diff-chg">Append
-</ins>
-the
-<ins class="diff-new">only
-</ins>
-item
-of
-<del class="diff-old">the
-array
-which
-is
-the
-value
-of
-the
-</del>
-<code>
-rdf:first
-</code>
-member
-of
-<i>
-node
-</i>
-to
-<ins class="diff-new">the
-</ins>
-<i>
-list
-<del class="diff-old">.
-</del>
-</i>
-<a class="tref internalDFN" title="array" href="#dfn-array">
-<ins class="diff-chg">array
-</ins></a>.
-</li>
-<li>
-<del class="diff-old">Add
-</del>
-<ins class="diff-chg">Append
-</ins>
-the
-value
-of
-the
-<code>
-@id
-</code>
-member
-of
-<i>
-node
-</i>
-to
-<ins class="diff-new">the
-</ins>
-<i>
-list
-nodes
-<del class="diff-old">.
-</del>
-</i>
-<a class="tref internalDFN" title="array" href="#dfn-array">
-<ins class="diff-chg">array
-</ins></a>.
-</li>
-<li>
-<del class="diff-old">The
-</del>
-<ins class="diff-chg">Initialize
-</ins><i><ins class="diff-chg">
-node
-usage
-</ins></i><ins class="diff-chg">
-to
-the
-</ins>
-only
-item
-of
-the
-<del class="diff-old">array
-which
-is
-</del>
-<code>
-<ins class="diff-chg">usages
-</ins></code><ins class="diff-chg">
-member
-of
-</ins><i><ins class="diff-chg">
-node
-</ins></i>.</li><li><ins class="diff-chg">
-Set
-</ins><i><ins class="diff-chg">
-node
-</ins></i><ins class="diff-chg">
-to
-</ins>
-the
-value
-of
-the
-<code>
-<del class="diff-old">rdf:rest
-</del>
-<ins class="diff-chg">node
-</ins>
-</code>
-member
-of
-<i>
-node
-<ins class="diff-new">usage
-</ins></i>,<i><ins class="diff-new">
-property
-</ins>
-</i>
-<del class="diff-old">is
-a
-JSON
-object
-.
-Set
-</del>
-<ins class="diff-chg">to
-the
-value
-of
-the
-</ins><code><ins class="diff-chg">
-property
-</ins></code><ins class="diff-chg">
-member
-of
-</ins>
-<i>
-<del class="diff-old">subject
-</del>
-<ins class="diff-chg">node
-usage
-</ins></i>,<ins class="diff-chg">
-and
-</ins><i><ins class="diff-chg">
-head
-</ins>
-</i>
-to
-the
-value
-of
-<del class="diff-old">its
-</del>
-<ins class="diff-chg">the
-</ins>
-<code>
-<del class="diff-old">@id
-</del>
-<ins class="diff-chg">value
-</ins>
-</code>
-<del class="diff-old">member.
-</del>
-<ins class="diff-chg">member
-of
-</ins><i><ins class="diff-chg">
-node
-usage
-</ins></i>.
-</li>
-<li>
-If
-<ins class="diff-new">the
-</ins><code><ins class="diff-new">
-@id
-</ins></code><ins class="diff-new">
-member
-of
-</ins>
-<i>
-<del class="diff-old">graph
-object
-</del>
-<ins class="diff-chg">node
-</ins>
-</i>
-<del class="diff-old">has
-</del>
-<ins class="diff-chg">is
-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">
-instead
-of
-</ins>
-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">
-exit
-the
-while
-loop.
-</ins></li></ol></li><li><ins class="diff-new">
-If
-</ins>
-<i>
-<del class="diff-old">subject
-</del>
-<ins class="diff-chg">property
-</ins>
-</i>
-<del class="diff-old">member,
-reference
-its
-</del>
-<ins class="diff-chg">equals
-</ins><code><ins class="diff-chg">
-rdf:first
-</ins></code>,<ins class="diff-chg">
-i.e.,
-the
-detected
-list
-is
-nested
-inside
-another
-list
-</ins><ol class="algorithm"><li><ins class="diff-chg">
-and
-the
-</ins>
-value
-<del class="diff-old">using
-</del>
-<ins class="diff-chg">of
-</ins>
-the
-<del class="diff-old">variable
-</del>
-<code>
-<ins class="diff-chg">@id
-</ins></code><ins class="diff-chg">
-of
-</ins>
-<i>
-node
-</i>
-<del class="diff-old">;
-otherwise
-set
-</del>
-<ins class="diff-chg">equals
-</ins><code><ins class="diff-chg">
-rdf:nil
-</ins></code>,<ins class="diff-chg">
-i.e.,
-the
-detected
-list
-is
-empty,
-continue
-with
-the
-next
-</ins>
-<i>
-<del class="diff-old">node
-</del>
-<ins class="diff-chg">usage
-</ins>
-</i>
-<ins class="diff-new">item.
-The
-</ins><code><ins class="diff-new">
-rdf:nil
-</ins></code><ins class="diff-new">
-node
-cannot
-be
-converted
-</ins>
-to
-<del class="diff-old">null
-</del>
-<ins class="diff-chg">a
-</ins><a class="tref internalDFN" title="list-object" href="#dfn-list-object"><ins class="diff-chg">
-list
-object
-</ins></a><ins class="diff-chg">
-as
-it
-would
-result
-in
-a
-list
-of
-lists,
-which
-isn't
-supported.
-</ins></li><li><ins class="diff-chg">
-Otherwise,
-the
-list
-consists
-of
-at
-least
-one
-item.
-We
-preserve
-the
-head
-node
-and
-transform
-the
-rest
-of
-the
-linked
-list
-to
-a
-</ins><a class="tref internalDFN" title="list-object" href="#dfn-list-object"><ins class="diff-chg">
-list
-object
-</ins>
-</a>.
-</li>
-<li>
-<del class="diff-old">If
-</del>
-<ins class="diff-chg">Set
-</ins>
-<i>
-<del class="diff-old">list
-nodes
-</del>
-<ins class="diff-chg">head
-id
-</ins>
-</i>
-<del class="diff-old">contains
-</del>
-<ins class="diff-chg">to
-the
-value
-of
-the
-</ins><code><ins class="diff-chg">
-@id
-</ins></code><ins class="diff-chg">
-member
-of
-</ins>
-<i>
-<del class="diff-old">subject
-</del>
-<ins class="diff-chg">head
-</ins></i>.</li><li><ins class="diff-chg">
-Set
-</ins><i><ins class="diff-chg">
-head
-</ins>
-</i>
-<del class="diff-old">a
-cycle
-has
-been
-detected,
-</del>
-<ins class="diff-chg">to
-the
-value
-of
-the
-</ins><i><ins class="diff-chg">
-head
-id
-</ins></i><ins class="diff-chg">
-member
-of
-</ins><i><ins class="diff-chg">
-graph
-object
-</ins></i><ins class="diff-chg">
-so
-that
-all
-it's
-properties
-can
-be
-accessed.
-</ins></li><li><ins class="diff-chg">
-Then,
-</ins>
-set
-<i>
-<del class="diff-old">list
-</del>
-<ins class="diff-chg">head
-</ins>
-</i>
-to
-<del class="diff-old">null
-.
-</del>
-<ins class="diff-chg">the
-only
-item
-in
-the
-value
-of
-the
-</ins><code><ins class="diff-chg">
-rdf:rest
-</ins></code><ins class="diff-chg">
-member
-of
-</ins><i><ins class="diff-chg">
-head
-</ins></i>.
-</li>
-<li>
-<del class="diff-old">If
-</del>
-<ins class="diff-chg">Finally,
-remove
-the
-last
-item
-of
-the
-</ins>
-<i>
-list
-</i>
-<del class="diff-old">is
-null
-,
-continue
-with
-</del>
-<a class="tref internalDFN" title="array" href="#dfn-array">
-<ins class="diff-chg">array
-</ins></a><ins class="diff-chg">
-and
-the
-last
-item
-of
-</ins>
-the
-<del class="diff-old">next
-</del>
-<i>
-<del class="diff-old">subj
-.
-</del>
-<ins class="diff-chg">list
-nodes
-</ins></i><a class="tref internalDFN" title="array" href="#dfn-array"><ins class="diff-chg">
-array
-</ins></a>.</li></ol>
-</li>
-<li>
-Remove
-the
-<code>
-@id
-</code>
-member
-from
-<i>
-<del class="diff-old">value
-</del>
-<ins class="diff-chg">head
-</ins>
-</i>.
-</li>
-<li>
-<ins class="diff-new">Reverse
-the
-order
-of
-the
-</ins><i><ins class="diff-new">
-list
-</ins></i><a class="tref internalDFN" title="array" href="#dfn-array"><ins class="diff-new">
-array
-</ins></a>.</li><li>
-Add
-<del class="diff-old">an
-</del>
-<ins class="diff-chg">a
-</ins>
-<code>
-@list
-</code>
-member
-to
-<i>
-<del class="diff-old">value
-</del>
-<ins class="diff-chg">head
-</ins>
-</i>
-and
-initialize
-<del class="diff-old">it
-</del>
-<ins class="diff-chg">its
-value
-</ins>
-to
-<ins class="diff-new">the
-</ins>
-<i>
-list
-<del class="diff-old">.
-</del>
-</i>
-<a class="tref internalDFN" title="array" href="#dfn-array">
-<ins class="diff-chg">array
-</ins></a>.
-</li>
-<li>
-For
-each
-<ins class="diff-new">item
-</ins>
-<i>
-<del class="diff-old">subject
-</del>
-<ins class="diff-chg">node
-id
-</ins>
-</i>
-in
-<i>
-list
-nodes
-</i>,
-remove
-the
-<i>
-<del class="diff-old">subject
-</del>
-<ins class="diff-chg">node
-id
-</ins>
-</i>
-member
-<del class="diff-old">of
-</del>
-<ins class="diff-chg">from
-</ins>
-<i>
-graph
-object
-</i>.
-</li>
-</ol>
-</li>
-</ol>
-</li>
-<li>
-Initialize
-an
-empty
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-<i>
-result
-</i>.
-</li>
-<li>
-For
-each
-<i>
-subject
-</i>
-and
-<i>
-node
-</i>
-in
-<i>
-default
-graph
-</i>
-ordered
-by
-<i>
-subject
-</i>:
-<ol class="algorithm">
-<li>
-If
-<i>
-graph
-map
-</i>
-has
-a
-<i>
-subject
-</i>
-member:
-<ol class="algorithm">
-<li>
-Add
-a
-<code>
-@graph
-</code>
-member
-to
-<i>
-node
-</i>
-and
-initialize
-its
-value
-to
-an
-empty
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>.
-</li>
-<li>
-For
-each
-key-value
-pair
-<i>
-s
-</i>
--
-<i>
-n
-</i>
-in
-the
-<del class="diff-old">the
-</del>
-<i>
-subject
-</i>
-member
-of
-<i>
-graph
-map
-</i>
-ordered
-by
-<i>
-s
-</i>,
-append
-<i>
-n
-</i>
-to
-the
-<code>
-@graph
-</code>
-member
-of
-<i>
-node
-</i>
-after
-removing
-its
-<code>
-usages
-</code>
-<del class="diff-old">member.
-</del>
-<ins class="diff-chg">member,
-unless
-the
-only
-remaining
-member
-of
-</ins><i><ins class="diff-chg">
-n
-</ins></i><ins class="diff-chg">
-is
-</ins><code><ins class="diff-chg">
-@id
-</ins></code>.
-</li>
-</ol>
-</li>
-<li>
-Append
-<i>
-node
-</i>
-to
-<i>
-result
-</i>
-after
-removing
-its
-<code>
-usages
-</code>
-<del class="diff-old">member.
-</del>
-<ins class="diff-chg">member,
-unless
-the
-only
-remaining
-member
-of
-</ins><i><ins class="diff-chg">
-node
-</ins></i><ins class="diff-chg">
-is
-</ins><code><ins class="diff-chg">
-@id
-</ins></code>.
-</li>
-</ol>
-</li>
-<li>
-Return
-<i>
-result
-</i>.
-</li>
-</ol>
-</section>
-</section>
-<section id="rdf-to-object-conversion">
-<h3>
-<span class="secno">
-10.5
-</span>
-RDF
-to
-Object
-Conversion
-</h3>
-<p>
-This
-algorithm
-transforms
-an
-RDF
-literal
-to
-a
-JSON-LD
-<a class="tref internalDFN" title="value-object" href="#dfn-value-object">
-value
-object
-</a>
-and
-a
-RDF
-blank
-node
-or
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-to
-an
-JSON-LD
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
-node
-object
-</a>.
-</p>
-<section class="informative">
-<h4 id="overview-17">
-Overview
-</h4>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-<a class="tref internalDFN" title="rdf-literal" href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">
-RDF
-literals
-</a>
-are
-transformed
-to
-<a class="tref internalDFN" title="value-object" href="#dfn-value-object">
-value
-objects
-</a>
-whereas
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-IRIs
-</a>
-and
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifiers
-</a>
-are
-transformed
-to
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
-node
-objects
-</a>.
-If
-the
-<i>
-use
-native
-types
-</i>
-flag
-is
-set
-to
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>,
-<a class="tref internalDFN" title="rdf-literal" href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">
-RDF
-literals
-</a>
-with
-a
-<a class="tref externalDFN" title="datatype-iri" href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri">
-datatype
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-that
-equals
-<code>
-xsd:integer
-</code>
-or
-<code>
-xsd:double
-</code>
-are
-converted
-to
-a
-<a class="tref internalDFN" title="number" href="#dfn-number">
-JSON
-numbers
-</a>
-and
-<a class="tref internalDFN" title="rdf-literal" href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">
-RDF
-literals
-</a>
-with
-a
-<a class="tref externalDFN" title="datatype-iri" href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri">
-datatype
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-that
-equals
-<code>
-xsd:boolean
-</code>
-are
-converted
-to
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-or
-<a class="tref internalDFN" title="false" href="#dfn-false">
-false
-</a>
-based
-on
-their
-<a class="tref externalDFN" title="lexical-form" href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form">
-lexical
-form
-</a>
-as
-described
-in
-<a class="sectionRef" href="#data-round-tripping">
-section
-10.6
-Data
-Round
-Tripping
-</a>.
-</p>
-</section>
-<section>
-<h4 id="algorithm-17">
-Algorithm
-</h4>
-<p>
-This
-algorithm
-takes
-two
-required
-inputs:
-a
-<i>
-value
-</i>
-to
-be
-converted
-to
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-and
-a
-flag
-<i>
-use
-native
-types
-</i>.
-</p>
-<ol class="algorithm">
-<li>
-If
-<i>
-value
-</i>
-is
-an
-<del class="diff-old">an
-</del>
-<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>,
-return
-a
-new
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-consisting
-of
-a
-single
-member
-<code>
-@id
-</code>
-whose
-value
-is
-set
-to
-<i>
-value
-</i>.
-</li>
-<li>
-Otherwise
-<i>
-value
-</i>
-is
-an
-<a class="tref externalDFN" title="rdf-literal" href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">
-RDF
-literal
-</a>:
-<ol class="algorithm">
-<li>
-Initialize
-a
-new
-empty
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-result.
-</li>
-<li>
-Initialize
-<i>
-converted
-value
-</i>
-to
-<i>
-value
-</i>.
-</li>
-<li>
-Initialize
-<i>
-type
-</i>
-to
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>
-</li>
-<li>
-If
-<i>
-use
-native
-types
-</i>
-is
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-<ol class="algorithm">
-<li>
-If
-the
-<a class="tref externalDFN" title="datatype-iri" href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri">
-datatype
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-of
-<i>
-value
-</i>
-equals
-<code>
-xsd:string
-</code>,
-set
-<i>
-converted
-value
-</i>
-to
-the
-<a class="tref externalDFN" title="lexical-form" href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form">
-lexical
-form
-</a>
-of
-<i>
-value
-</i>.
-</li>
-<li>
-Otherwise,
-if
-the
-<a class="tref externalDFN" title="datatype-iri" href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri">
-datatype
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-of
-<i>
-value
-</i>
-equals
-<code>
-xsd:boolean
-</code>,
-set
-<i>
-converted
-value
-</i>
-to
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-if
-the
-<a class="tref externalDFN" title="lexical-form" href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form">
-lexical
-form
-</a>
-of
-<i>
-value
-</i>
-matches
-<code>
-true
-</code>,
-or
-<a class="tref internalDFN" title="false" href="#dfn-false">
-false
-</a>
-if
-it
-matches
-<code>
-false
-</code>.
-If
-it
-matches
-neither,
-set
-<i>
-type
-</i>
-to
-<code>
-xsd:boolean
-</code>.
-</li>
-<li>
-Otherwise,
-if
-the
-<a class="tref externalDFN" title="datatype-iri" href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri">
-datatype
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-of
-<i>
-value
-</i>
-equals
-<code>
-xsd:integer
-</code>
-or
-<code>
-xsd:double
-</code>
-and
-its
-<a class="tref externalDFN" title="lexical-form" href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form">
-lexical
-form
-</a>
-is
-a
-valid
-<code>
-xsd:integer
-</code>
-or
-<code>
-xsd:double
-</code>
-according
-[
-<cite>
-<a class="bibref" href="#bib-XMLSCHEMA11-2">
-XMLSCHEMA11-2
-</a>
-</cite>
-],
-set
-<i>
-converted
-value
-</i>
-to
-the
-result
-of
-converting
-the
-<a class="tref externalDFN" title="lexical-form" href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form">
-lexical
-form
-</a>
-to
-a
-JSON
-<a class="tref internalDFN" title="number" href="#dfn-number">
-number
-</a>.
-</li>
-</ol>
-</li>
-<li>
-Otherwise,
-if
-<i>
-value
-</i>
-is
-a
-<a class="tref externalDFN" title="language-tagged-string" href="http://www.w3.org/TR/rdf11-concepts/#dfn-language-tagged-string">
-language-tagged
-string
-</a>
-add
-a
-member
-<code>
-@language
-</code>
-to
-<i>
-result
-</i>
-and
-set
-its
-value
-to
-the
-<a class="tref externalDFN" title="language-tag" href="http://www.w3.org/TR/rdf11-concepts/#dfn-language-tag">
-language
-tag
-</a>
-of
-<i>
-value
-</i>.
-</li>
-<li>
-Otherwise,
-set
-<i>
-type
-</i>
-to
-the
-<a class="tref externalDFN" title="datatype-iri" href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri">
-datatype
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-of
-<i>
-value
-</i>,
-unless
-it
-equals
-<code>
-xsd:string
-</code>
-which
-is
-ignored.
-</li>
-<li>
-Add
-a
-member
-<code>
-@value
-</code>
-to
-<i>
-result
-</i>
-whose
-value
-is
-set
-to
-<i>
-converted
-value
-</i>.
-</li>
-<li>
-If
-<i>
-type
-</i>
-is
-not
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-add
-a
-member
-<code>
-@type
-</code>
-to
-<i>
-result
-</i>
-whose
-value
-is
-set
-to
-<i>
-type
-</i>.
-</li>
-<li>
-Return
-<i>
-result
-</i>.
-</li>
-</ol>
-</li>
-</ol>
-</section>
-</section>
-<section id="data-round-tripping">
-<h3>
-<span class="secno">
-10.6
-</span>
-Data
-Round
-Tripping
-</h3>
-<del class="diff-old">Feature
-at
-Risk
-2
-:
-Conversion
-to/from
-JSON
-Native
-Types
-Note:
-This
-feature
-is
-"at
-risk"
-and
-may
-be
-removed
-or
-modified
-heavily
-from
-the
-feature
-described
-in
-this
-specification
-based
-on
-reviewer
-feedback.
-Please
-send
-feedback
-to
-public-rdf-comments@w3.org
-.
-For
-the
-current
-status
-see
-features
-"at
-risk"
-in
-JSON-LD
-1.0
-The
-JSON-LD-API
-allows
-certain
-RDF
-literals
-to
-be
-mapped
-to
-JSON
-numbers
-(if
-the
-"use
-native
-types"
-flag
-is
-set).
-The
-mapping
-rules
-are
-currently
-being
-debated
-as
-is
-which
-JSON-LD
-API
-methods
-the
-"use
-native
-types"
-will
-have
-an
-effect
-in.
-There
-may
-be
-changes
-made
-to
-the
-algorithm
-and
-API
-based
-on
-feedback
-during
-the
-2nd
-Last
-Call.
-Implementers
-and
-reviewers
-should
-keep
-a
-close
-eye
-on
-the
-details
-for
-this
-mechanism
-and
-comment
-on
-any
-round-tripping
-concerns
-that
-they
-may
-have.
-The
-algorithm
-and
-API
-will
-most
-likely
-change
-after
-the
-LC2
-period.
-</del>
-<p>
-When
-<del class="diff-old">converting
-</del>
-<a href="#deserialize-json-ld-to-rdf-algorithm">
-<ins class="diff-chg">deserializing
-</ins>
-JSON-LD
-to
-RDF
-</a>
-JSON-native
-<a class="tref internalDFN" title="number" href="#dfn-number">
-numbers
-</a>
-are
-automatically
-type-coerced
-to
-<code>
-xsd:integer
-</code>
-or
-<code>
-xsd:double
-</code>
-depending
-on
-whether
-the
-<a class="tref internalDFN" title="number" href="#dfn-number">
-number
-</a>
-has
-<del class="diff-old">fractions
-</del>
-<ins class="diff-chg">a
-non-zero
-fractional
-part
-</ins>
-or
-<del class="diff-old">not,
-</del>
-<ins class="diff-chg">not
-(the
-result
-of
-a
-modulo‑1
-operation),
-</ins>
-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>
-are
-coerced
-to
-<code>
-xsd:boolean
-</code>,
-and
-<a class="tref internalDFN" title="string" href="#dfn-string">
-strings
-</a>
-are
-coerced
-to
-<code>
-xsd:string
-</code>.
-The
-numeric
-or
-boolean
-values
-<del class="diff-old">itself
-</del>
-<ins class="diff-chg">themselves
-</ins>
-are
-converted
-to
-<dfn title="canonical-lexical-form" id="dfn-canonical-lexical-form">
-canonical
-lexical
-form
-</dfn>,
-i.e.,
-a
-deterministic
-string
-representation
-as
-defined
-in
-[
-<cite>
-<a class="bibref" href="#bib-XMLSCHEMA11-2">
-XMLSCHEMA11-2
-</a>
-</cite>
-].
-</p>
-<p>
-The
-<a class="tref internalDFN" title="canonical-lexical-form" href="#dfn-canonical-lexical-form">
-canonical
-lexical
-form
-</a>
-of
-an
-<em>
-integer
-</em>,
-i.e.,
-a
-<a class="tref internalDFN" title="number" href="#dfn-number">
-number
-</a>
-<del class="diff-old">without
-fractions
-</del>
-<ins class="diff-chg">with
-no
-non-zero
-fractional
-part
-</ins>
-or
-a
-<a class="tref internalDFN" title="number" href="#dfn-number">
-number
-</a>
-coerced
-to
-<code>
-xsd:integer
-</code>,
-is
-a
-finite-length
-sequence
-of
-decimal
-digits
-(
-<code>
-0-9
-</code>
-)
-with
-an
-optional
-leading
-minus
-sign;
-leading
-zeros
-are
-prohibited.
-In
-JavaScript,
-implementers
-can
-use
-the
-following
-snippet
-of
-code
-to
-convert
-an
-integer
-to
-<a class="tref internalDFN" title="canonical-lexical-form" href="#dfn-canonical-lexical-form">
-canonical
-lexical
-form
-</a>:
-</p>
-<div class="example">
-<div class="example-title">
-<span>
-Example
-12
-</span>:
-Sample
-integer
-serialization
-implementation
-in
-JavaScript
-</div>
-<pre class="example">
-(value).toFixed(0).toString()
-</pre>
-</div>
-<p>
-The
-<a class="tref internalDFN" title="canonical-lexical-form" href="#dfn-canonical-lexical-form">
-canonical
-lexical
-form
-</a>
-of
-a
-<em>
-double
-</em>,
-i.e.,
-a
-<a class="tref internalDFN" title="number" href="#dfn-number">
-number
-</a>
-with
-<del class="diff-old">fractions
-</del>
-<ins class="diff-chg">a
-non-zero
-fractional
-part
-</ins>
-or
-a
-<a class="tref internalDFN" title="number" href="#dfn-number">
-number
-</a>
-coerced
-to
-<code>
-xsd:double
-</code>,
-consists
-of
-a
-mantissa
-followed
-by
-the
-character
-<code>
-E
-</code>,
-followed
-by
-an
-exponent.
-The
-mantissa
-is
-a
-decimal
-number
-and
-the
-exponent
-is
-an
-integer.
-Leading
-zeros
-and
-a
-preceding
-plus
-sign
-(
-<code>
-+
-</code>
-)
-are
-prohibited
-in
-the
-exponent.
-If
-the
-exponent
-is
-zero,
-it
-is
-indicated
-by
-<code>
-E0
-</code>.
-For
-the
-mantissa,
-the
-preceding
-optional
-plus
-sign
-is
-prohibited
-and
-the
-decimal
-point
-is
-required.
-Leading
-and
-trailing
-zeros
-are
-prohibited
-subject
-to
-the
-following:
-number
-representations
-must
-be
-normalized
-such
-that
-there
-is
-a
-single
-digit
-which
-is
-non-zero
-to
-the
-left
-of
-the
-decimal
-point
-and
-at
-least
-a
-single
-digit
-to
-the
-right
-of
-the
-decimal
-point
-unless
-the
-value
-being
-represented
-is
-zero.
-The
-canonical
-representation
-for
-zero
-is
-<code>
-0.0E0
-</code>.
-<code>
-xsd:double
-</code>
-'s
-value
-space
-is
-defined
-by
-the
-IEEE
-double-precision
-64-bit
-floating
-point
-type
-[
-<cite>
-<a class="bibref" href="#bib-IEEE-754-1985">
-IEEE-754-1985
-</a>
-</cite>
-]
-whereas
-the
-value
-space
-of
-JSON
-<a class="tref internalDFN" title="number" href="#dfn-number">
-numbers
-</a>
-is
-not
-specified;
-when
-<del class="diff-old">converting
-</del>
-<ins class="diff-chg">deserializing
-</ins>
-JSON-LD
-to
-RDF
-the
-mantissa
-is
-rounded
-to
-15&nbsp;digits
-after
-the
-decimal
-point.
-In
-JavaScript,
-implementers
-can
-use
-the
-following
-snippet
-of
-code
-to
-convert
-a
-double
-to
-<a class="tref internalDFN" title="canonical-lexical-form" href="#dfn-canonical-lexical-form">
-canonical
-lexical
-form
-</a>:
-</p>
-<div class="example">
-<div class="example-title">
-<span>
-Example
-13
-</span>:
-Sample
-floating
-point
-number
-serialization
-implementation
-in
-JavaScript
-</div>
-<pre class="example">
-(value).toExponential(15).replace(/(\d)0*e\+?/,'$1E')
-</pre>
-</div>
-<p>
-The
-<a class="tref internalDFN" title="canonical-lexical-form" href="#dfn-canonical-lexical-form">
-canonical
-lexical
-form
-</a>
-of
-the
-<em>
-boolean
-</em>
-values
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-and
-<a class="tref internalDFN" title="false" href="#dfn-false">
-false
-</a>
-are
-the
-strings
-<code>
-true
-</code>
-and
-<code>
-false
-</code>.
-</p>
-<p>
-When
-JSON-native
-<a class="tref internalDFN" title="number" href="#dfn-number">
-numbers
-<del class="diff-old">,
-</del>
-</a>
-are
-<del class="diff-old">converted
-</del>
-<ins class="diff-chg">deserialized
-</ins>
-to
-RDF,
-lossless
-data
-round-tripping
-<del class="diff-old">can
-not
-</del>
-<ins class="diff-chg">cannot
-</ins>
-be
-<del class="diff-old">guaranteed
-</del>
-<ins class="diff-chg">guaranteed,
-</ins>
-as
-rounding
-errors
-might
-occur.
-When
-<del class="diff-old">converting
-</del>
-<a href="#serialize-rdf-as-json-ld-algorithm">
-<ins class="diff-chg">serializing
-</ins>
-RDF
-<del class="diff-old">to
-</del>
-<ins class="diff-chg">as
-</ins>
-JSON-LD
-</a>,
-similar
-rounding
-errors
-might
-occur.
-Furthermore,
-the
-datatype
-or
-the
-lexical
-representation
-might
-be
-lost.
-An
-<code>
-xsd:double
-</code>
-with
-a
-value
-of
-<code>
-2.0
-</code>
-will,
-e.g.,
-result
-in
-an
-<code>
-xsd:integer
-</code>
-with
-a
-value
-of
-<code>
-2
-</code>
-in
-<a class="tref internalDFN" title="canonical-lexical-form" href="#dfn-canonical-lexical-form">
-canonical
-lexical
-form
-</a>
-when
-converted
-from
-RDF
-to
-JSON-LD
-and
-back
-to
-RDF.
-It
-is
-important
-to
-highlight
-that
-in
-practice
-it
-might
-be
-impossible
-to
-losslessly
-convert
-an
-<code>
-xsd:integer
-</code>
-to
-a
-<a class="tref internalDFN" title="number" href="#dfn-number">
-number
-</a>
-because
-its
-value
-space
-is
-not
-limited.
-While
-the
-JSON
-specification
-[
-<cite>
-<a class="bibref" href="#bib-RFC4627">
-RFC4627
-</a>
-</cite>
-]
-does
-not
-limit
-the
-value
-space
-of
-<a class="tref internalDFN" title="number" href="#dfn-number">
-numbers
-</a>
-either,
-concrete
-implementations
-typically
-do
-have
-a
-limited
-value
-space.
-</p>
-<p>
-To
-ensure
-lossless
-round-tripping
-the
-<del class="diff-old">Converting
-from
-</del>
-<a href="#serialize-rdf-as-json-ld-algorithm">
-<ins class="diff-chg">Serialize
-</ins>
-RDF
-<ins class="diff-new">as
-JSON-LD
-</ins>
-algorithm
-</a>
-specifies
-a
-<i>
-use
-native
-types
-</i>
-flag
-which
-controls
-whether
-<a class="tref externalDFN" title="rdf-literals" href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">
-RDF
-literals
-</a>
-with
-a
-<a class="tref externalDFN" title="datatype-iri" href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri">
-datatype
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-equal
-to
-<code>
-xsd:integer
-</code>,
-<code>
-xsd:double
-</code>,
-or
-<code>
-xsd:boolean
-</code>
-are
-converted
-to
-their
-JSON-native
-counterparts.
-If
-the
-<i>
-use
-native
-types
-</i>
-flag
-is
-set
-to
-<a class="tref internalDFN" title="false" href="#dfn-false">
-false
-</a>,
-all
-literals
-remain
-in
-their
-original
-string
-representation.
-</p>
-<p>
-Some
-JSON
-serializers,
-such
-as
-PHP's
-native
-implementation
-in
-some
-versions,
-backslash-escape
-the
-forward
-slash
-character.
-For
-example,
-the
-value
-<code>
-http://example.com/
-</code>
-would
-be
-serialized
-as
-<code>
-http:\/\/example.com\/
-</code>.
-This
-is
-problematic
-as
-other
-JSON
-parsers
-might
-not
-understand
-those
-escaping
-characters.
-There
-is
-no
-need
-to
-backslash-escape
-forward
-slashes
-in
-JSON-LD.
-To
-aid
-interoperability
-between
-JSON-LD
-processors,
-forward
-slashes
-<em class="rfc2119" title="MUST NOT">
-MUST
-NOT
-</em>
-be
-backslash-escaped.
-</p>
-</section>
-</section>
-<section id="the-application-programming-interface">
-<h2>
-<span class="secno">
-11.
-</span>
-The
-Application
-Programming
-Interface
-</h2>
-<p>
-This
-API
-provides
-a
-clean
-mechanism
-that
-enables
-developers
-to
-convert
-JSON-LD
-data
-into
-a
-variety
-of
-output
-formats
-that
-are
-often
-easier
-to
-work
-with.
-A
-conformant
-<a class="tref internalDFN" title="json-ld-api-implementation" href="#dfn-json-ld-api-implementation">
-JSON-LD
-API
-Implementation
-</a>
-<em class="rfc2119" title="MUST">
-MUST
-</em>
-implement
-the
-entirety
-of
-the
-following
-API.
-</p>
-<p>
-The
-JSON-LD
-API
-uses
-<del class="diff-old">Futures
-</del>
-<a class="tref internalDFN" title="promise" href="#dfn-promise">
-<ins class="diff-chg">Promises
-</ins>
-</a>
-to
-represent
-the
-result
-of
-the
-various
-asynchronous
-operations.
-<del class="diff-old">Futures
-</del>
-<dfn title="promise" id="dfn-promise">
-<ins class="diff-chg">Promises
-</ins>
-</dfn>
-are
-defined
-in
-<cite>
-<a href="http://dom.spec.whatwg.org/#promises">
-section&nbsp;4
-<del class="diff-old">Futures
-</del>
-<ins class="diff-chg">Promises
-</ins>
-</a>
-</cite>
-of
-[
-<cite>
-<a class="bibref" href="#bib-DOM-WHATWG">
-DOM-WHATWG
-</a>
-</cite>
-].
-</p>
-<div class="issue atrisk">
-<div class="issue-title" role="heading" aria-level="3">
-<span>
-Feature
-at
-Risk
-<del class="diff-old">3
-</del>
-<ins class="diff-chg">8
-</ins>
-</span>:
-Properly
-referencing
-the
-DOM
-<del class="diff-old">Futures
-</del>
-<ins class="diff-chg">Promises
-</ins>
-spec
-</div>
-<div class="atrisk">
-<p class="atrisk-head">
-Note:
-This
-feature
-is
-<a href="http://www.w3.org/2005/10/Process-20051014/tr#cfi">
-"at
-risk"
-</a>
-and
-may
-be
-removed
-or
-modified
-heavily
-from
-the
-feature
-described
-in
-this
-specification
-based
-on
-reviewer
-feedback.
-Please
-send
-feedback
-to
-<a href="mailto:public-rdf-comments@w3.org">
-public-rdf-comments@w3.org
-</a>.
-For
-the
-current
-status
-see
-<a href="http://www.w3.org/2011/rdf-wg/wiki/JSON-LD_Features_at_Risk">
-features
-"at
-risk"
-in
-JSON-LD
-1.0
-</a>
-</p>
-<p>
-The
-JSON-LD
-API
-specification
-currently
-only
-refers
-to
-the
-<del class="diff-old">"Future"
-</del>
-<ins class="diff-chg">"Promise"
-</ins>
-interface
-and
-does
-not
-attempt
-to
-provide
-any
-details
-on
-the
-specific
-implementation
-of
-<del class="diff-old">Futures.
-</del>
-<ins class="diff-chg">Promises.
-</ins>
-That
-is,
-it
-does
-not
-reference
-whether
-or
-not
-'.then()'
-must
-be
-specified.
-This
-is
-done
-in
-order
-to
-allow
-for
-some
-implementation
-flexibility
-in
-the
-event
-the
-DOM
-<del class="diff-old">Futures
-</del>
-<ins class="diff-chg">Promises
-</ins>
-spec
-changes.
-The
-editors
-of
-the
-WHATWG
-DOM
-specification
-have
-asserted
-that
-the
-<del class="diff-old">Future
-</del>
-<ins class="diff-chg">Promise
-</ins>
-interface
-is
-ready
-to
-be
-incorporated
-into
-specifications.
-The
-issue
-relates
-to
-how
-to
-properly
-refer
-to
-a
-spec
-living
-in
-the
-WHATWG
-as
-a
-living
-standard
-as
-well
-as
-how
-to
-ensure
-that
-the
-interface
-provided
-by
-the
-spec
-is
-stable.
-</p>
-</div>
-</div>
-<section id="the-jsonldprocessor-interface">
-<h3>
-<span class="secno">
-11.1
-</span>
-The
-<a href="#idl-def-JsonLdProcessor" class="idlType">
-<code>
-JsonLdProcessor
-</code>
-</a>
-Interface
-</h3>
-<p>
-The
-<a href="#idl-def-JsonLdProcessor" class="idlType">
-<code>
-JsonLdProcessor
-</code>
-</a>
-interface
-is
-the
-high-level
-programming
-structure
-that
-developers
-use
-to
-access
-the
-JSON-LD
-transformation
-methods.
-</p>
-<p>
-It
-is
-important
-to
-highlight
-that
-conformant
-<a class="tref internalDFN" title="json-ld-api-implementation" href="#dfn-json-ld-api-implementation">
-JSON-LD
-API
-Implementations
-</a>
-<em class="rfc2119" title="MUST NOT">
-MUST
-NOT
-</em>
-modify
-the
-input
-parameters.
-If
-an
-error
-is
-detected,
-the
-<del class="diff-old">Future
-</del>
-<ins class="diff-chg">Promise
-</ins>
-is
-rejected
-passing
-a
-<a href="#idl-def-JsonLdError" class="idlType">
-<code>
-JsonLdError
-</code>
-</a>
-with
-the
-corresponding
-error
-<code class="idlMemberName">
-<a href="#widl-JsonLdError-code">
-code
-</a>
-</code>
-and
-processing
-is
-stopped.
-</p>
-    <pre class="idl"><span class="idlInterface" id="idl-def-JsonLdProcessor">[<span class="extAttr">Constructor</span>]
-interface <span class="idlInterfaceID">JsonLdProcessor</span> {
-<span class="idlMethod">    <span class="idlMethType"><a href="#dfn-promise" class="internalDFN">Promise</a></span> <span class="idlMethName"><a href="#widl-JsonLdProcessor-compact-Promise-any-input-JsonLdContext-context-JsonLdOptions-options">compact</a></span> (<span class="idlParam"><span class="idlParamType"><a>any</a></span> <span class="idlParamName">input</span></span>, <span class="idlParam"><span class="idlParamType"><a href="#idl-def-JsonLdContext" class="idlType"><code>JsonLdContext</code></a></span> <span class="idlParamName">context</span></span>, <span class="idlParam">optional <span class="idlParamType"><a href="#idl-def-JsonLdOptions" class="idlType"><code>JsonLdOptions</code></a></span> <span class="idlParamName">options</span></span>);</span>
-<span class="idlMethod">    <span class="idlMethType"><a href="#dfn-promise" class="internalDFN">Promise</a></span> <span class="idlMethName"><a href="#widl-JsonLdProcessor-expand-Promise-any-input-JsonLdOptions-options">expand</a></span> (<span class="idlParam"><span class="idlParamType"><a>any</a></span> <span class="idlParamName">input</span></span>, <span class="idlParam">optional <span class="idlParamType"><a href="#idl-def-JsonLdOptions" class="idlType"><code>JsonLdOptions</code></a></span> <span class="idlParamName">options</span></span>);</span>
-<span class="idlMethod">    <span class="idlMethType"><a href="#dfn-promise" class="internalDFN">Promise</a></span> <span class="idlMethName"><a href="#widl-JsonLdProcessor-flatten-Promise-any-input-JsonLdContext-context-JsonLdOptions-options">flatten</a></span> (<span class="idlParam"><span class="idlParamType"><a>any</a></span> <span class="idlParamName">input</span></span>, <span class="idlParam">optional <span class="idlParamType"><a href="#idl-def-JsonLdContext" class="idlType"><code>JsonLdContext</code></a>?</span> <span class="idlParamName">context</span></span>, <span class="idlParam">optional <span class="idlParamType"><a href="#idl-def-JsonLdOptions" class="idlType"><code>JsonLdOptions</code></a></span> <span class="idlParamName">options</span></span>);</span>
-};
-</span>
-</pre>
-<section>
-<h4 id="methods">
-Methods
-</h4>
-<dl class="methods">
-<dt id="widl-JsonLdProcessor-compact-Promise-any-input-JsonLdContext-context-JsonLdOptions-options">
-<code>
-compact
-</code>
-</dt>
-<dd>
-<p>
-<a href="#compaction">
-Compacts
-</a>
-the
-given
-<i>
-input
-</i>
-using
-the
-<i>
-context
-</i>
-according
-to
-the
-steps
-in
-the
-<a href="#compaction-algorithm">
-Compaction
-algorithm
-</a>:
-</p>
-<ol class="algorithm">
-<li>
-Create
-a
-new
-<del class="diff-old">Future
-</del>
-<a class="tref internalDFN" title="promise" href="#dfn-promise">
-<ins class="diff-chg">Promise
-</ins>
-</a>
-<i>
-<del class="diff-old">future
-</del>
-<ins class="diff-chg">promise
-</ins>
-</i>
-and
-return
-it.
-The
-following
-steps
-are
-then
-executed
-asynchronously.
-</li>
-<li>
-If
-the
-passed
-<i>
-input
-</i>
-is
-a
-<span class="idlParamType">
-DOMString
-</span>
-representing
-the
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-of
-a
-remote
-document,
-dereference
-it.
-If
-the
-retrieved
-<del class="diff-old">document
-has
-a
-</del>
-<ins class="diff-chg">document's
-</ins>
-content
-type
-<del class="diff-old">different
-than
-</del>
-<ins class="diff-chg">is
-neither
-</ins><code><ins class="diff-chg">
-application/json
-</ins></code>,<ins class="diff-chg">
-nor
-</ins>
-<code>
-application/ld+json
-<del class="diff-old">or
-</del>
-</code>,
-<ins class="diff-chg">nor
-any
-other
-media
-type
-using
-a
-</ins>
-<code>
-<del class="diff-old">application/json
-</del>
-<ins class="diff-chg">+json
-</ins>
-</code>
-<ins class="diff-new">suffix
-as
-defined
-in
-[
-</ins><cite><a class="bibref" href="#bib-RFC6839"><ins class="diff-new">
-RFC6839
-</ins></a></cite><ins class="diff-new">
-]
-</ins>
-or
-if
-the
-document
-cannot
-be
-parsed
-as
-JSON,
-reject
-the
-<i>
-<del class="diff-old">future
-</del>
-<ins class="diff-chg">promise
-</ins>
-</i>
-passing
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.loading-document-failed">
-loading
-document
-failed
-</a>
-</code>
-error.
-</li>
-<li>
-Initialize
-a
-new
-empty
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>.
-The
-<a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">
-base
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-of
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-is
-set
-to
-the
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-of
-the
-currently
-being
-processed
-document,
-if
-available;
-otherwise
-to
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>.
-If
-set,
-the
-<code class="idlMemberName">
-<del class="diff-old">compactArrays
-</del>
-<a href="#widl-JsonLdOptions-base">
-<ins class="diff-chg">base
-</ins>
-</a>
-</code>
-<ins class="diff-new">option
-</ins>
-overrides
-the
-<a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">
-base
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>.
-</li>
-<li>
-If
-an
-<code class="idlMemberName">
-<a href="#widl-JsonLdOptions-expandContext">
-expandContext
-</a>
-</code>
-has
-been
-passed,
-update
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-using
-the
-<a href="#context-processing-algorithm">
-Context
-Processing
-algorithm
-</a>,
-passing
-the
-<code class="idlMemberName">
-<a href="#widl-JsonLdOptions-expandContext">
-expandContext
-</a>
-</code>
-as
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>.
-<ins class="diff-new">If
-</ins><code class="idlMemberName"><a href="#widl-JsonLdOptions-expandContext"><ins class="diff-new">
-expandContext
-</ins></a></code><ins class="diff-new">
-is
-a
-</ins><a class="tref internalDFN" title="json-object" href="#dfn-json-object"><ins class="diff-new">
-JSON
-object
-</ins></a><ins class="diff-new">
-having
-a
-</ins><code><ins class="diff-new">
-@context
-</ins></code><ins class="diff-new">
-member,
-pass
-that
-member's
-value
-instead.
-</ins>
-</li>
-<li>
-If
-the
-<i>
-input
-</i>
-has
-been
-<del class="diff-old">retrieved
-and
-</del>
-<ins class="diff-chg">retrieved,
-</ins>
-the
-response
-has
-<del class="diff-old">a
-content
-type
-application/json
-and
-</del>
-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
-<del class="diff-old">relation,
-</del>
-<ins class="diff-chg">relation
-and
-a
-content
-type
-of
-</ins><code><ins class="diff-chg">
-application/json
-</ins></code><ins class="diff-chg">
-or
-any
-media
-type
-with
-a
-</ins><code><ins class="diff-chg">
-+json
-</ins></code><ins class="diff-chg">
-suffix
-as
-defined
-in
-[
-</ins><cite><a class="bibref" href="#bib-RFC6839"><ins class="diff-chg">
-RFC6839
-</ins></a></cite><ins class="diff-chg">
-]
-except
-</ins><code><ins class="diff-chg">
-application/ld+json
-</ins></code>,
-update
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-using
-the
-<a href="#context-processing-algorithm">
-Context
-Processing
-algorithm
-</a>,
-passing
-the
-context
-referenced
-in
-the
-HTTP
-Link
-Header
-as
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>.
-<ins class="diff-new">The
-HTTP
-Link
-Header
-is
-ignored
-for
-documents
-served
-as
-</ins><code><ins class="diff-new">
-application/ld+json
-</ins></code><ins class="diff-new">
-If
-multiple
-HTTP
-Link
-Headers
-using
-the
-</ins><code><ins class="diff-new">
-http://www.w3.org/ns/json-ld#context
-</ins></code><ins class="diff-new">
-link
-relation
-are
-found,
-the
-</ins><i><ins class="diff-new">
-promise
-</ins></i><ins class="diff-new">
-is
-rejected
-with
-a
-</ins><a href="#idl-def-JsonLdError" class="idlType"><code><ins class="diff-new">
-JsonLdError
-</ins></code></a><ins class="diff-new">
-whose
-code
-is
-set
-to
-</ins><code class="error"><a href="#idl-def-JsonLdErrorCode.multiple-context-link-headers"><ins class="diff-new">
-multiple
-context
-link
-headers
-</ins></a></code><ins class="diff-new">
-and
-processing
-is
-terminated.
-</ins>
-</li>
-<li>
-Set
-<i>
-expanded
-</i>
-to
-the
-result
-of
-using
-the
-<a href="#expansion-algorithm">
-Expansion
-algorithm
-</a>,
-passing
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-and
-<i>
-input
-</i>
-as
-<i>
-element
-</i>.
-</li>
-<li>
-<ins class="diff-new">If
-</ins><i><ins class="diff-new">
-context
-</ins></i><ins class="diff-new">
-is
-a
-</ins><a class="tref internalDFN" title="json-object" href="#dfn-json-object"><ins class="diff-new">
-JSON
-object
-</ins></a><ins class="diff-new">
-having
-a
-</ins><code><ins class="diff-new">
-@context
-</ins></code><ins class="diff-new">
-member,
-set
-</ins><i><ins class="diff-new">
-context
-</ins></i><ins class="diff-new">
-to
-that
-member's
-value.
-</ins></li><li>
-Set
-<i>
-compacted
-</i>
-to
-the
-result
-of
-using
-the
-<a href="#compaction-algorithm">
-Compaction
-algorithm
-</a>,
-passing
-<i>
-context
-</i>,
-<i>
-expanded
-</i>
-as
-<i>
-element
-</i>,
-and
-if
-passed,
-the
-<code class="idlMemberName">
-<a href="#widl-JsonLdOptions-compactArrays">
-compactArrays
-</a>
-</code>
-flag
-in
-<i>
-options
-</i>.
-</li>
-<li>
-<del class="diff-old">Accept
-</del>
-<ins class="diff-chg">Fulfill
-</ins>
-the
-<i>
-<del class="diff-old">future
-</del>
-<ins class="diff-chg">promise
-</ins>
-</i>
-passing
-<i>
-compacted
-</i>.
-</li>
-</ol>
-<table class="parameters">
-<tr>
-<th>
-Parameter
-</th>
-<th>
-Type
-</th>
-<th>
-Nullable
-</th>
-<th>
-Optional
-</th>
-<th>
-Description
-</th>
-</tr>
-<tr>
-<td class="prmName">
-input
-</td>
-<td class="prmType">
-<code>
-<a>
-any
-</a>
-</code>
-</td>
-<td class="prmNullFalse">
-✘
-</td>
-<td class="prmOptFalse">
-✘
-</td>
-<td class="prmDesc">
-The
-JSON-LD
-object
-or
-array
-of
-JSON-LD
-objects
-to
-perform
-the
-compaction
-upon
-or
-an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-referencing
-the
-JSON-LD
-document
-to
-compact.
-</td>
-</tr>
-<tr>
-<td class="prmName">
-context
-</td>
-<td class="prmType">
-<code>
-<a href="#idl-def-JsonLdContext" class="idlType">
-<code>
-JsonLdContext
-</code>
-</a>
-</code>
-</td>
-<td class="prmNullFalse">
-✘
-</td>
-<td class="prmOptFalse">
-✘
-</td>
-<td class="prmDesc">
-The
-context
-to
-use
-when
-compacting
-the
-<code>
-input
-</code>
-;
-<del class="diff-old">either
-in
-the
-form
-of
-</del>
-<ins class="diff-chg">it
-can
-be
-specified
-by
-using
-</ins>
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>,
-<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>,
-or
-<del class="diff-old">as
-</del>
-<ins class="diff-chg">an
-array
-consisting
-of
-</ins><a class="tref internalDFN" title="json-object" href="#dfn-json-object"><ins class="diff-chg">
-JSON
-object
-</ins></a><ins class="diff-chg">
-s
-and
-</ins>
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-<del class="diff-old">.
-</del>
-</a>
-<ins class="diff-chg">s.
-</ins>
-</td>
-</tr>
-<tr>
-<td class="prmName">
-options
-</td>
-<td class="prmType">
-<code>
-<a href="#idl-def-JsonLdOptions" class="idlType">
-<code>
-JsonLdOptions
-</code>
-</a>
-</code>
-</td>
-<td class="prmNullFalse">
-✘
-</td>
-<td class="prmOptTrue">
-✔
-</td>
-<td class="prmDesc">
-A
-set
-of
-options
-to
-configure
-the
-algorithms.
-This
-allows,
-e.g.,
-to
-set
-the
-input
-document's
-base
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>.
-</td>
-</tr>
-</table>
-<div>
-<em>
-Return
-type:
-</em>
-<code>
-<del class="diff-old">Future
-</del>
-<a href="#dfn-promise" class="internalDFN">
-<ins class="diff-chg">Promise
-</ins>
-</a>
-</code>
-</div>
-</dd>
-<dt id="widl-JsonLdProcessor-expand-Promise-any-input-JsonLdOptions-options">
-<code>
-expand
-</code>
-</dt>
-<dd>
-<p>
-<a href="#expansion">
-Expands
-</a>
-the
-given
-<i>
-input
-</i>
-according
-to
-the
-steps
-in
-the
-<a href="#expansion-algorithm">
-Expansion
-algorithm
-</a>:
-</p>
-<ol class="algorithm">
-<li>
-Create
-a
-new
-<del class="diff-old">Future
-</del>
-<a class="tref internalDFN" title="promise" href="#dfn-promise">
-<ins class="diff-chg">Promise
-</ins>
-</a>
-<i>
-<del class="diff-old">future
-</del>
-<ins class="diff-chg">promise
-</ins>
-</i>
-and
-return
-it.
-The
-following
-steps
-are
-then
-executed
-asynchronously.
-</li>
-<li>
-If
-the
-passed
-<i>
-input
-</i>
-is
-a
-<span class="idlParamType">
-DOMString
-</span>
-representing
-the
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-of
-a
-remote
-document,
-dereference
-it.
-If
-the
-retrieved
-<del class="diff-old">document
-has
-a
-</del>
-<ins class="diff-chg">document's
-</ins>
-content
-type
-<del class="diff-old">different
-than
-</del>
-<ins class="diff-chg">is
-neither
-</ins><code><ins class="diff-chg">
-application/json
-</ins></code>,<ins class="diff-chg">
-nor
-</ins>
-<code>
-application/ld+json
-<del class="diff-old">or
-</del>
-</code>,
-<ins class="diff-chg">nor
-any
-other
-media
-type
-using
-a
-</ins>
-<code>
-<del class="diff-old">application/json
-</del>
-<ins class="diff-chg">+json
-</ins>
-</code>
-<del class="diff-old">or
-if
-the
-document
-cannot
-be
-parsed
-</del>
-<ins class="diff-chg">suffix
-</ins>
-as
-<del class="diff-old">JSON,
-</del>
-<ins class="diff-chg">defined
-in
-[
-</ins><cite><a class="bibref" href="#bib-RFC6839"><ins class="diff-chg">
-RFC6839
-</ins></a></cite><ins class="diff-chg">
-],
-</ins>
-reject
-the
-<i>
-<del class="diff-old">future
-</del>
-<ins class="diff-chg">promise
-</ins>
-</i>
-passing
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.loading-document-failed">
-loading
-document
-failed
-</a>
-</code>
-error.
-</li>
-<li>
-Initialize
-a
-new
-empty
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>.
-The
-<a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">
-base
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-of
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-is
-set
-to
-the
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-of
-the
-currently
-being
-processed
-document,
-if
-available;
-otherwise
-to
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>.
-If
-set,
-the
-<code class="idlMemberName">
-<del class="diff-old">compactArrays
-</del>
-<a href="#widl-JsonLdOptions-base">
-<ins class="diff-chg">base
-</ins>
-</a>
-</code>
-<ins class="diff-new">option
-</ins>
-overrides
-the
-<a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">
-base
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>.
-</li>
-<li>
-If
-an
-<code class="idlMemberName">
-<a href="#widl-JsonLdOptions-expandContext">
-expandContext
-</a>
-</code>
-has
-been
-passed,
-update
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-using
-the
-<a href="#context-processing-algorithm">
-Context
-Processing
-algorithm
-</a>,
-passing
-the
-<code class="idlMemberName">
-<a href="#widl-JsonLdOptions-expandContext">
-expandContext
-</a>
-</code>
-as
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>.
-<ins class="diff-new">If
-</ins><code class="idlMemberName"><a href="#widl-JsonLdOptions-expandContext"><ins class="diff-new">
-expandContext
-</ins></a></code><ins class="diff-new">
-is
-a
-</ins><a class="tref internalDFN" title="json-object" href="#dfn-json-object"><ins class="diff-new">
-JSON
-object
-</ins></a><ins class="diff-new">
-having
-a
-</ins><code><ins class="diff-new">
-@context
-</ins></code><ins class="diff-new">
-member,
-pass
-that
-member's
-value
-instead.
-</ins>
-</li>
-<li>
-If
-the
-<i>
-input
-</i>
-has
-been
-<del class="diff-old">retrieved
-and
-</del>
-<ins class="diff-chg">retrieved,
-</ins>
-the
-response
-has
-<del class="diff-old">a
-content
-type
-application/json
-and
-</del>
-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
-<del class="diff-old">relation,
-</del>
-<ins class="diff-chg">relation
-and
-a
-content
-type
-of
-</ins><code><ins class="diff-chg">
-application/json
-</ins></code><ins class="diff-chg">
-or
-any
-media
-type
-with
-a
-</ins><code><ins class="diff-chg">
-+json
-</ins></code><ins class="diff-chg">
-suffix
-as
-defined
-in
-[
-</ins><cite><a class="bibref" href="#bib-RFC6839"><ins class="diff-chg">
-RFC6839
-</ins></a></cite><ins class="diff-chg">
-]
-except
-</ins><code><ins class="diff-chg">
-application/ld+json
-</ins></code>,
-update
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-using
-the
-<a href="#context-processing-algorithm">
-Context
-Processing
-algorithm
-</a>,
-passing
-the
-context
-referenced
-in
-the
-HTTP
-Link
-Header
-as
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>.
-<ins class="diff-new">The
-HTTP
-Link
-Header
-is
-ignored
-for
-documents
-served
-as
-</ins><code><ins class="diff-new">
-application/ld+json
-</ins></code><ins class="diff-new">
-If
-multiple
-HTTP
-Link
-Headers
-using
-the
-</ins><code><ins class="diff-new">
-http://www.w3.org/ns/json-ld#context
-</ins></code><ins class="diff-new">
-link
-relation
-are
-found,
-the
-</ins><i><ins class="diff-new">
-promise
-</ins></i><ins class="diff-new">
-is
-rejected
-with
-a
-</ins><a href="#idl-def-JsonLdError" class="idlType"><code><ins class="diff-new">
-JsonLdError
-</ins></code></a><ins class="diff-new">
-whose
-code
-is
-set
-to
-</ins><code class="error"><a href="#idl-def-JsonLdErrorCode.multiple-context-link-headers"><ins class="diff-new">
-multiple
-context
-link
-headers
-</ins></a></code><ins class="diff-new">
-and
-processing
-is
-terminated.
-</ins>
-</li>
-<li>
-Set
-<i>
-expanded
-</i>
-to
-the
-result
-of
-using
-the
-<a href="#expansion-algorithm">
-Expansion
-algorithm
-</a>,
-passing
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-and
-<i>
-input
-</i>
-as
-<i>
-element
-</i>.
-</li>
-<li>
-<del class="diff-old">Accept
-</del>
-<ins class="diff-chg">Fulfill
-</ins>
-the
-<i>
-<del class="diff-old">future
-</del>
-<ins class="diff-chg">promise
-</ins>
-</i>
-passing
-<i>
-expanded
-</i>.
-</li>
-</ol>
-<table class="parameters">
-<tr>
-<th>
-Parameter
-</th>
-<th>
-Type
-</th>
-<th>
-Nullable
-</th>
-<th>
-Optional
-</th>
-<th>
-Description
-</th>
-</tr>
-<tr>
-<td class="prmName">
-input
-</td>
-<td class="prmType">
-<code>
-<a>
-any
-</a>
-</code>
-</td>
-<td class="prmNullFalse">
-✘
-</td>
-<td class="prmOptFalse">
-✘
-</td>
-<td class="prmDesc">
-The
-JSON-LD
-object
-or
-array
-of
-JSON-LD
-objects
-to
-perform
-the
-expansion
-upon
-or
-an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-referencing
-the
-JSON-LD
-document
-to
-expand.
-</td>
-</tr>
-<tr>
-<td class="prmName">
-options
-</td>
-<td class="prmType">
-<code>
-<a href="#idl-def-JsonLdOptions" class="idlType">
-<code>
-JsonLdOptions
-</code>
-</a>
-</code>
-</td>
-<td class="prmNullFalse">
-✘
-</td>
-<td class="prmOptTrue">
-✔
-</td>
-<td class="prmDesc">
-A
-set
-of
-options
-to
-configure
-the
-used
-algorithms
-such.
-This
-allows,
-e.g.,
-to
-set
-the
-input
-document's
-base
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>.
-</td>
-</tr>
-</table>
-<div>
-<em>
-Return
-type:
-</em>
-<code>
-<del class="diff-old">Future
-</del>
-<a href="#dfn-promise" class="internalDFN">
-<ins class="diff-chg">Promise
-</ins>
-</a>
-</code>
-</div>
-</dd>
-<dt id="widl-JsonLdProcessor-flatten-Promise-any-input-JsonLdContext-context-JsonLdOptions-options">
-<code>
-flatten
-</code>
-</dt>
-<dd>
-<p>
-<a href="#flattening">
-Flattens
-</a>
-the
-given
-<i>
-input
-</i>
-and
-<a href="#compaction">
-compacts
-</a>
-it
-using
-the
-passed
-<i>
-context
-</i>
-according
-to
-the
-steps
-in
-the
-<a href="#flattening-algorithm">
-Flattening
-algorithm
-</a>:
-</p>
-<ol class="algorithm">
-<li>
-Create
-a
-new
-<del class="diff-old">Future
-</del>
-<a class="tref internalDFN" title="promise" href="#dfn-promise">
-<ins class="diff-chg">Promise
-</ins>
-</a>
-<i>
-<del class="diff-old">future
-</del>
-<ins class="diff-chg">promise
-</ins>
-</i>
-and
-return
-it.
-The
-following
-steps
-are
-then
-executed
-asynchronously.
-</li>
-<li>
-If
-the
-passed
-<i>
-input
-</i>
-is
-a
-<span class="idlParamType">
-DOMString
-</span>
-representing
-the
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-of
-a
-remote
-document,
-dereference
-it.
-If
-the
-retrieved
-<del class="diff-old">document
-has
-a
-</del>
-<ins class="diff-chg">document's
-</ins>
-content
-type
-<del class="diff-old">different
-than
-</del>
-<ins class="diff-chg">is
-neither
-</ins><code><ins class="diff-chg">
-application/json
-</ins></code>,<ins class="diff-chg">
-nor
-</ins>
-<code>
-application/ld+json
-<del class="diff-old">or
-</del>
-</code>,
-<ins class="diff-chg">nor
-any
-other
-media
-type
-using
-a
-</ins>
-<code>
-<del class="diff-old">application/json
-</del>
-<ins class="diff-chg">+json
-</ins>
-</code>
-<del class="diff-old">or
-if
-the
-document
-cannot
-be
-parsed
-</del>
-<ins class="diff-chg">suffix
-</ins>
-as
-<del class="diff-old">JSON,
-</del>
-<ins class="diff-chg">defined
-in
-[
-</ins><cite><a class="bibref" href="#bib-RFC6839"><ins class="diff-chg">
-RFC6839
-</ins></a></cite><ins class="diff-chg">
-],
-</ins>
-reject
-the
-<i>
-<del class="diff-old">future
-</del>
-<ins class="diff-chg">promise
-</ins>
-</i>
-passing
-an
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.loading-document-failed">
-loading
-document
-failed
-</a>
-</code>
-error.
-</li>
-<li>
-Initialize
-a
-new
-empty
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>.
-The
-<a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">
-base
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-of
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-is
-set
-to
-the
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-of
-the
-currently
-being
-processed
-document,
-if
-available;
-otherwise
-to
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>.
-If
-set,
-the
-<code class="idlMemberName">
-<del class="diff-old">compactArrays
-</del>
-<a href="#widl-JsonLdOptions-base">
-<ins class="diff-chg">base
-</ins>
-</a>
-</code>
-<ins class="diff-new">option
-</ins>
-overrides
-the
-<a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">
-base
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>.
-</li>
-<li>
-If
-an
-<code class="idlMemberName">
-<a href="#widl-JsonLdOptions-expandContext">
-expandContext
-</a>
-</code>
-has
-been
-passed,
-update
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-using
-the
-<a href="#context-processing-algorithm">
-Context
-Processing
-algorithm
-</a>,
-passing
-the
-<code class="idlMemberName">
-<a href="#widl-JsonLdOptions-expandContext">
-expandContext
-</a>
-</code>
-as
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>.
-<ins class="diff-new">If
-</ins><code class="idlMemberName"><a href="#widl-JsonLdOptions-expandContext"><ins class="diff-new">
-expandContext
-</ins></a></code><ins class="diff-new">
-is
-a
-</ins><a class="tref internalDFN" title="json-object" href="#dfn-json-object"><ins class="diff-new">
-JSON
-object
-</ins></a><ins class="diff-new">
-having
-a
-</ins><code><ins class="diff-new">
-@context
-</ins></code><ins class="diff-new">
-member,
-pass
-that
-member's
-value
-instead.
-</ins>
-</li>
-<li>
-If
-the
-<i>
-input
-</i>
-has
-been
-<del class="diff-old">retrieved
-and
-</del>
-<ins class="diff-chg">retrieved,
-</ins>
-the
-response
-has
-<del class="diff-old">a
-content
-type
-application/json
-and
-</del>
-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
-<del class="diff-old">relation,
-</del>
-<ins class="diff-chg">relation
-and
-a
-content
-type
-of
-</ins><code><ins class="diff-chg">
-application/json
-</ins></code><ins class="diff-chg">
-or
-any
-media
-type
-with
-a
-</ins><code><ins class="diff-chg">
-+json
-</ins></code><ins class="diff-chg">
-suffix
-as
-defined
-in
-[
-</ins><cite><a class="bibref" href="#bib-RFC6839"><ins class="diff-chg">
-RFC6839
-</ins></a></cite><ins class="diff-chg">
-]
-except
-</ins><code><ins class="diff-chg">
-application/ld+json
-</ins></code>,
-update
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-using
-the
-<a href="#context-processing-algorithm">
-Context
-Processing
-algorithm
-</a>,
-passing
-the
-context
-referenced
-in
-the
-HTTP
-Link
-Header
-as
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>.
-<ins class="diff-new">The
-HTTP
-Link
-Header
-is
-ignored
-for
-documents
-served
-as
-</ins><code><ins class="diff-new">
-application/ld+json
-</ins></code><ins class="diff-new">
-If
-multiple
-HTTP
-Link
-Headers
-using
-the
-</ins><code><ins class="diff-new">
-http://www.w3.org/ns/json-ld#context
-</ins></code><ins class="diff-new">
-link
-relation
-are
-found,
-the
-</ins><i><ins class="diff-new">
-promise
-</ins></i><ins class="diff-new">
-is
-rejected
-with
-a
-</ins><a href="#idl-def-JsonLdError" class="idlType"><code><ins class="diff-new">
-JsonLdError
-</ins></code></a><ins class="diff-new">
-whose
-code
-is
-set
-to
-</ins><code class="error"><a href="#idl-def-JsonLdErrorCode.multiple-context-link-headers"><ins class="diff-new">
-multiple
-context
-link
-headers
-</ins></a></code><ins class="diff-new">
-and
-processing
-is
-terminated.
-</ins>
-</li>
-<li>
-Set
-<i>
-expanded
-</i>
-to
-the
-result
-of
-using
-the
-<a href="#expansion-algorithm">
-Expansion
-algorithm
-</a>,
-passing
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-and
-<i>
-input
-</i>
-as
-<i>
-element
-</i>.
-</li>
-<li>
-<ins class="diff-new">If
-</ins><i><ins class="diff-new">
-context
-</ins></i><ins class="diff-new">
-is
-a
-</ins><a class="tref internalDFN" title="json-object" href="#dfn-json-object"><ins class="diff-new">
-JSON
-object
-</ins></a><ins class="diff-new">
-having
-a
-</ins><code><ins class="diff-new">
-@context
-</ins></code><ins class="diff-new">
-member,
-set
-</ins><i><ins class="diff-new">
-context
-</ins></i><ins class="diff-new">
-to
-that
-member's
-value.
-</ins></li><li>
-Initialize
-an
-empty
-<i>
-identifier
-map
-</i>
-and
-a
-<i>
-counter
-</i>
-(set
-to
-<code>
-0
-</code>
-)
-to
-be
-used
-by
-the
-<a href="#generate-blank-node-identifier">
-Generate
-Blank
-Node
-Identifier
-algorithm
-</a>.
-</li>
-<li>
-Set
-<i>
-flattened
-</i>
-to
-the
-result
-of
-using
-the
-<a href="#flattening-algorithm">
-Flattening
-algorithm
-</a>,
-passing
-<i>
-expanded
-</i>
-as
-<i>
-element
-</i>,
-<i>
-context
-</i>,
-and
-if
-passed,
-the
-<code class="idlMemberName">
-<a href="#widl-JsonLdOptions-compactArrays">
-compactArrays
-</a>
-</code>
-flag
-in
-<i>
-options
-</i>
-(which
-is
-internally
-passed
-to
-the
-<a href="#compaction-algorithm">
-Compaction
-algorithm
-</a>
-).
-</li>
-<li>
-<del class="diff-old">Accept
-</del>
-<ins class="diff-chg">Fulfill
-</ins>
-the
-<i>
-<del class="diff-old">future
-</del>
-<ins class="diff-chg">promise
-</ins>
-</i>
-passing
-<i>
-flattened
-</i>.
-</li>
-</ol>
-<table class="parameters">
-<tr>
-<th>
-Parameter
-</th>
-<th>
-Type
-</th>
-<th>
-Nullable
-</th>
-<th>
-Optional
-</th>
-<th>
-Description
-</th>
-</tr>
-<tr>
-<td class="prmName">
-input
-</td>
-<td class="prmType">
-<code>
-<a>
-any
-</a>
-</code>
-</td>
-<td class="prmNullFalse">
-✘
-</td>
-<td class="prmOptFalse">
-✘
-</td>
-<td class="prmDesc">
-The
-JSON-LD
-object
-or
-array
-of
-JSON-LD
-objects
-or
-an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-referencing
-the
-JSON-LD
-document
-to
-flatten.
-</td>
-</tr>
-<tr>
-<td class="prmName">
-context
-</td>
-<td class="prmType">
-<code>
-<a href="#idl-def-JsonLdContext" class="idlType">
-<code>
-JsonLdContext
-</code>
-</a>
-</code>
-</td>
-<td class="prmNullTrue">
-✔
-</td>
-<td class="prmOptTrue">
-✔
-</td>
-<td class="prmDesc">
-The
-context
-to
-use
-when
-compacting
-the
-flattened
-<code>
-input
-</code>
-;
-<del class="diff-old">either
-in
-the
-form
-of
-</del>
-<ins class="diff-chg">it
-can
-be
-specified
-by
-using
-</ins>
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>,
-<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>,
-or
-<del class="diff-old">as
-</del>
-<ins class="diff-chg">an
-array
-consisting
-of
-</ins><a class="tref internalDFN" title="json-object" href="#dfn-json-object"><ins class="diff-chg">
-JSON
-object
-</ins></a><ins class="diff-chg">
-s
-and
-</ins>
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-<del class="diff-old">.
-</del>
-</a>
-<ins class="diff-chg">s.
-</ins>
-If
-not
-passed
-or
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>
-is
-passed,
-the
-result
-will
-not
-be
-compacted
-but
-kept
-in
-expanded
-form.
-</td>
-</tr>
-<tr>
-<td class="prmName">
-options
-</td>
-<td class="prmType">
-<code>
-<a href="#idl-def-JsonLdOptions" class="idlType">
-<code>
-JsonLdOptions
-</code>
-</a>
-</code>
-</td>
-<td class="prmNullFalse">
-✘
-</td>
-<td class="prmOptTrue">
-✔
-</td>
-<td class="prmDesc">
-A
-set
-of
-options
-to
-configure
-the
-used
-algorithms
-such.
-This
-allows,
-e.g.,
-to
-set
-the
-input
-document's
-base
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>.
-</td>
-</tr>
-</table>
-<div>
-<em>
-Return
-type:
-</em>
-<code>
-<del class="diff-old">Future
-</del>
-<a href="#dfn-promise" class="internalDFN">
-<ins class="diff-chg">Promise
-</ins>
-</a>
-</code>
-</div>
-</dd>
-</dl>
-</section>
-<pre class="idl">
-<span class="idlTypedef" id="idl-def-JsonLdContext">
-typedef
-<span class="idlTypedefType">
-(
-<a>
-object
-</a>
-or
-<a>
-DOMString
-</a>
-<ins class="diff-new">or
-</ins><a><ins class="diff-new">
-(object
-</ins></a><ins class="diff-new">
-or
-</ins><a><ins class="diff-new">
-DOMString[])
-</ins></a>
-)
-</span>
-<span class="idlTypedefID">
-JsonLdContext
-</span>
-;
-</span>
-</pre>
-<div class="idlTypedefDesc">
-<p>
-The
-<del class="diff-old">identifier
-</del>
-<a href="#idl-def-JsonLdContext" class="idlType">
-<code>
-JsonLdContext
-</code>
-</a>
-<ins class="diff-new">type
-</ins>
-is
-used
-to
-refer
-to
-<del class="diff-old">the
-(object
-</del>
-<ins class="diff-chg">a
-value
-that
-that
-may
-be
-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">
-a
-</ins><a class="tref internalDFN" title="string" href="#dfn-string"><ins class="diff-chg">
-string
-</ins></a><ins class="diff-chg">
-representing
-an
-</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
-IRI
-</ins></abbr></a>,
-or
-<del class="diff-old">DOMString)
-type.
-</del>
-<ins class="diff-chg">an
-array
-of
-</ins><a class="tref internalDFN" title="json-object" href="#dfn-json-object"><ins class="diff-chg">
-JSON
-objects
-</ins></a><ins class="diff-chg">
-and
-</ins><a class="tref internalDFN" title="string" href="#dfn-string"><ins class="diff-chg">
-strings
-</ins></a>.
-</p>
-</div>
-</section>
-<section id="the-jsonldoptions-type">
-<h3>
-<span class="secno">
-11.2
-</span>
-The
-<a href="#idl-def-JsonLdOptions" class="idlType">
-<code>
-JsonLdOptions
-</code>
-</a>
-Type
-</h3>
-<p>
-The
-<a href="#idl-def-JsonLdOptions" class="idlType">
-<code>
-JsonLdOptions
-</code>
-</a>
-type
-is
-used
-to
-pass
-various
-options
-to
-the
-<a href="#idl-def-JsonLdProcessor" class="idlType">
-<code>
-JsonLdProcessor
-</code>
-</a>
-methods.
-</p>
-    <pre class="idl"><span class="idlDictionary" id="idl-def-JsonLdOptions">dictionary <span class="idlDictionaryID">JsonLdOptions</span> {
-<span class="idlMember">    <span class="idlMemberType"><a>DOMString</a>?</span>             <span class="idlMemberName"><a href="#widl-JsonLdOptions-base">base</a></span>;</span>
-<span class="idlMember">    <span class="idlMemberType"><a>boolean</a></span>                <span class="idlMemberName"><a href="#widl-JsonLdOptions-compactArrays">compactArrays</a></span> = <span class="idlMemberValue">true</span>;</span>
-<span class="idlMember">    <span class="idlMemberType"><a href="#idl-def-LoadDocumentCallback" class="idlType"><code>LoadDocumentCallback</code></a></span>   <span class="idlMemberName"><a href="#widl-JsonLdOptions-documentLoader">documentLoader</a></span> = <span class="idlMemberValue">null</span>;</span>
-<span class="idlMember">    <span class="idlMemberType">(<a>object?</a> or <a>DOMString</a>)</span> <span class="idlMemberName"><a href="#widl-JsonLdOptions-expandContext">expandContext</a></span> = <span class="idlMemberValue">null</span>;</span>
-<span class="idlMember">    <span class="idlMemberType"><a>DOMString</a></span>              <span class="idlMemberName"><a href="#widl-JsonLdOptions-processingMode">processingMode</a></span> = <span class="idlMemberValue">"json-ld-1.0"</span>;</span>
-};
-</span>
-</pre>
-<section>
-<h4 id="dictionary-jsonldoptions-members">
-Dictionary
-<a class="idlType" href="#idl-def-JsonLdOptions">
-<code>
-JsonLdOptions
-</code>
-</a>
-Members
-</h4>
-<dl class="dictionary-members">
-<dt id="widl-JsonLdOptions-base">
-<code>
-base
-</code>
-of
-type
-<span class="idlMemberType">
-<a>
-DOMString
-</a>
-</span>,
-nullable
-</dt>
-<dd>
-The
-base
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-to
-use
-when
-expanding
-or
-compacting
-the
-document.
-If
-set,
-this
-overrides
-the
-input
-document's
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>.
-</dd>
-<dt id="widl-JsonLdOptions-compactArrays">
-<code>
-compactArrays
-</code>
-of
-type
-<span class="idlMemberType">
-<a>
-boolean
-</a>
-</span>,
-defaulting
-to
-<code>
-true
-</code>
-</dt>
-<dd>
-If
-set
-to
-<code>
-true
-</code>,
-the
-JSON-LD
-processor
-replaces
-arrays
-with
-just
-one
-element
-with
-that
-element
-during
-compaction.
-If
-set
-to
-<code>
-false
-</code>,
-all
-arrays
-will
-remain
-arrays
-even
-if
-they
-have
-just
-one
-element.
-</dd>
-<dt id="widl-JsonLdOptions-documentLoader">
-<code>
-<del class="diff-old">expandContext
-</del>
-<ins class="diff-chg">documentLoader
-</ins>
-</code>
-of
-type
-<span class="idlMemberType">
-<del class="diff-old">(object?
-or
-DOMString)
-</del>
-<a href="#idl-def-LoadDocumentCallback" class="idlType">
-<del class="diff-old">,
-defaulting
-to
-</del>
-<code>
-<del class="diff-old">null
-</del>
-<ins class="diff-chg">LoadDocumentCallback
-</ins>
-</code>
-</a>
-<del class="diff-old">A
-context
-that
-is
-used
-</del>
-</span>,
-<ins class="diff-chg">defaulting
-</ins>
-to
-<del class="diff-old">initialize
-the
-active
-context
-when
-expanding
-a
-document.
-loadContext
-of
-type
-</del>
-<code>
-<del class="diff-old">LoadContextCallback
-</del>
-<ins class="diff-chg">null
-</ins>
-</code>
-</dt>
-<dd>
-The
-callback
-of
-the
-<del class="diff-old">context
-</del>
-loader
-to
-be
-used
-to
-retrieve
-remote
-<ins class="diff-new">documents
-and
-</ins>
-contexts.
-If
-specified,
-it
-<em class="rfc2119" title="MUST">
-MUST
-</em>
-be
-used
-to
-retrieve
-remote
-<ins class="diff-new">documents
-and
-</ins>
-contexts;
-otherwise,
-if
-not
-specified,
-the
-processor's
-built-in
-<del class="diff-old">context
-</del>
-loader
-<em class="rfc2119" title="MUST">
-MUST
-</em>
-be
-used.
-</dd>
-<dt id="widl-JsonLdOptions-expandContext">
-<code>
-<ins class="diff-new">expandContext
-</ins></code><ins class="diff-new">
-of
-type
-</ins><span class="idlMemberType"><a><ins class="diff-new">
-(object?
-or
-DOMString)
-</ins></a></span>,<ins class="diff-new">
-defaulting
-to
-</ins><code><ins class="diff-new">
-null
-</ins></code></dt><dd><ins class="diff-new">
-A
-context
-that
-is
-used
-to
-initialize
-the
-active
-context
-when
-expanding
-a
-document.
-</ins></dd>
-<dt id="widl-JsonLdOptions-processingMode">
-<code>
-processingMode
-</code>
-of
-type
-<span class="idlMemberType">
-<a>
-DOMString
-</a>
-</span>,
-defaulting
-to
-<code>
-"json-ld-1.0"
-</code>
-</dt>
-<dd>
-If
-set
-to
-<code>
-json-ld-1.0
-</code>,
-the
-JSON-LD
-processor
-<em class="rfc2119" title="MUST">
-MUST
-</em>
-produce
-exactly
-the
-same
-results
-as
-the
-algorithms
-defined
-in
-this
-specification.
-If
-set
-to
-another
-value,
-the
-JSON-LD
-processor
-is
-allowed
-to
-extend
-or
-modify
-the
-algorithms
-defined
-in
-this
-specification
-to
-enable
-application-specific
-optimizations.
-The
-definition
-of
-such
-optimizations
-is
-beyond
-the
-scope
-of
-this
-specification
-and
-thus
-not
-defined.
-Consequently,
-different
-implementations
-<em class="rfc2119" title="MAY">
-MAY
-</em>
-implement
-different
-optimizations.
-Developers
-<em class="rfc2119" title="MUST NOT">
-MUST
-NOT
-</em>
-define
-modes
-beginning
-with
-<code>
-json-ld
-</code>
-as
-they
-are
-reserved
-for
-future
-versions
-of
-this
-specification.
-</dd>
-</dl>
-</section>
-</section>
-<section id="remote-document-and-context-retrieval">
-<h3>
-<span class="secno">
-11.3
-</span>
-Remote
-<ins class="diff-new">Document
-and
-</ins>
-Context
-Retrieval
-</h3>
-<p>
-Developers
-can
-utilize
-a
-callback
-to
-control
-how
-remote
-<ins class="diff-new">documents
-and
-</ins>
-contexts
-are
-retrieved
-by
-<a class="tref internalDFN" title="json-ld-api-implementation" href="#dfn-json-ld-api-implementation">
-JSON-LD
-API
-Implementations
-</a>.
-This
-section
-details
-the
-parameters
-of
-that
-callback
-and
-the
-data
-structure
-used
-to
-return
-the
-retrieved
-context.
-</p>
-<section>
-<del class="diff-old">LoadContextCallback
-</del>
-<h4 id="loaddocumentcallback">
-<ins class="diff-chg">LoadDocumentCallback
-</ins>
-</h4>
-<p>
-The
-<a href="#idl-def-LoadDocumentCallback" class="idlType">
-<code>
-<del class="diff-old">LoadContextCallback
-</del>
-<ins class="diff-chg">LoadDocumentCallback
-</ins>
-</code>
-</a>
-defines
-<del class="diff-old">the
-</del>
-<ins class="diff-chg">a
-</ins>
-callback
-that
-custom
-<del class="diff-old">context
-</del>
-<ins class="diff-chg">document
-</ins>
-loaders
-have
-to
-implement
-to
-be
-used
-to
-retrieve
-remote
-<ins class="diff-new">documents
-and
-</ins>
-contexts.
-</p>
-<pre class="idl">
-<span class="idlCallback" id="idl-def-LoadDocumentCallback">
-callback
-<span class="idlCallbackID">
-<del class="diff-old">LoadContextCallback
-</del>
-<ins class="diff-chg">LoadDocumentCallback
-</ins>
-</span>
-=
-<span class="idlCallbackType">
-<del class="diff-old">Future
-</del>
-<a href="#dfn-promise" class="internalDFN">
-<ins class="diff-chg">Promise
-</ins>
-</a>
-</span>
-(
-<span class="idlParam">
-<span class="idlParamType">
-<a>
-DOMString
-</a>
-</span>
-<span class="idlParamName">
-url
-</span>
-</span>
-);
-</span>
-</pre>
-<section>
-<h5 id="callback-loaddocumentcallback-parameters">
-Callback
-<a class="idlType" href="#idl-def-LoadDocumentCallback">
-<code>
-<del class="diff-old">LoadContextCallback
-</del>
-<ins class="diff-chg">LoadDocumentCallback
-</ins>
-</code>
-</a>
-Parameters
-</h5>
-<dl class="callback-members">
-<dt id="widl-LoadDocumentCallback-url">
-<code>
-url
-</code>
-of
-type
-<span class="idlMemberType">
-<a>
-DOMString
-</a>
-</span>
-</dt>
-<dd>
-The
-URL
-of
-the
-remote
-<ins class="diff-new">document
-or
-</ins>
-context
-to
-load.
-</dd>
-</dl>
-</section>
-<p>
-All
-errors
-<em class="rfc2119" title="MUST">
-MUST
-</em>
-result
-in
-the
-<del class="diff-old">Future
-</del>
-<a class="tref internalDFN" title="promise" href="#dfn-promise">
-<ins class="diff-chg">Promise
-</ins>
-</a>
-being
-rejected
-with
-a
-<a href="#idl-def-JsonLdError" class="idlType">
-<code>
-JsonLdError
-</code>
-</a>
-whose
-code
-is
-set
-to
-<code class="error">
-<a href="#idl-def-JsonLdErrorCode.loading-document-failed">
-loading
-<del class="diff-old">remote
-context
-</del>
-<ins class="diff-chg">document
-</ins>
-failed
-</a>
-<del class="diff-old">.
-</del>
-</code>
-<ins class="diff-chg">or
-</ins><code class="error"><a href="#idl-def-JsonLdErrorCode.multiple-context-link-headers"><ins class="diff-chg">
-multiple
-context
-link
-headers
-</ins></a></code><ins class="diff-chg">
-as
-described
-in
-the
-next
-section.
-</ins>
-</p>
-</section>
-<section>
-<del class="diff-old">RemoteContext
-</del>
-<h4 id="remotedocument">
-<ins class="diff-chg">RemoteDocument
-</ins>
-</h4>
-<p>
-The
-<a href="#idl-def-RemoteDocument" class="idlType">
-<code>
-<del class="diff-old">RemoteContext
-</del>
-<ins class="diff-chg">RemoteDocument
-</ins>
-</code>
-</a>
-type
-is
-used
-by
-a
-<a href="#idl-def-LoadDocumentCallback" class="idlType">
-<code>
-<del class="diff-old">LoadContextCallback
-</del>
-<ins class="diff-chg">LoadDocumentCallback
-</ins>
-</code>
-</a>
-to
-return
-information
-about
-a
-remote
-<ins class="diff-new">document
-or
-</ins>
-context.
-</p>
-<del class="diff-old">       {
-</del>
-      <pre class="idl"><span class="idlDictionary" id="idl-def-RemoteDocument">dictionary <span class="idlDictionaryID">RemoteDocument</span> {
-<span class="idlMember">    <span class="idlMemberType"><a>DOMString</a></span> <span class="idlMemberName"><a href="#widl-RemoteDocument-contextUrl">contextUrl</a></span> = <span class="idlMemberValue">null</span>;</span>
-<span class="idlMember">    <span class="idlMemberType"><a>DOMString</a></span> <span class="idlMemberName"><a href="#widl-RemoteDocument-documentUrl">documentUrl</a></span>;</span>
-<span class="idlMember">    <span class="idlMemberType"><a>any</a></span>       <span class="idlMemberName"><a href="#widl-RemoteDocument-document">document</a></span>;</span>
-};
-</span>
-</pre>
-<section>
-<h5 id="dictionary-remotedocument-members">
-Dictionary
-<a class="idlType" href="#idl-def-RemoteDocument">
-<code>
-<del class="diff-old">RemoteContext
-</del>
-<ins class="diff-chg">RemoteDocument
-</ins>
-</code>
-</a>
-Members
-</h5>
-<dl class="dictionary-members">
-<dt id="widl-RemoteDocument-contextUrl">
-<code>
-<del class="diff-old">context
-</del>
-<ins class="diff-chg">contextUrl
-</ins>
-</code>
-of
-type
-<span class="idlMemberType">
-<a>
-DOMString
-</a>
-</span>,
-<ins class="diff-chg">defaulting
-to
-</ins><code><ins class="diff-chg">
-null
-</ins></code>
-</dt>
-<dd>
-<del class="diff-old">The
-raw
-</del>
-<ins class="diff-chg">If
-available,
-the
-value
-of
-the
-HTTP
-Link
-Header
-[
-</ins><cite><a class="bibref" href="#bib-RFC5988"><ins class="diff-chg">
-RFC5988
-</ins></a></cite><ins class="diff-chg">
-]
-using
-the
-</ins><code><ins class="diff-chg">
-http://www.w3.org/ns/json-ld#context
-</ins></code><ins class="diff-chg">
-link
-relation
-in
-the
-response.
-If
-the
-response's
-</ins>
-content
-<ins class="diff-new">type
-is
-</ins><code><ins class="diff-new">
-application/ld+json
-</ins></code>,<ins class="diff-new">
-the
-HTTP
-Link
-Header
-</ins><em class="rfc2119" title="MUST"><ins class="diff-new">
-MUST
-</ins></em><ins class="diff-new">
-be
-ignored.
-If
-multiple
-HTTP
-Link
-Headers
-using
-the
-</ins><code><ins class="diff-new">
-http://www.w3.org/ns/json-ld#context
-</ins></code><ins class="diff-new">
-link
-relation
-are
-found,
-the
-</ins><a class="tref internalDFN" title="promise" href="#dfn-promise"><ins class="diff-new">
-Promise
-</ins></a>
-of
-the
-<a href="#idl-def-LoadDocumentCallback" class="idlType">
-<code>
-<ins class="diff-new">LoadDocumentCallback
-</ins></code></a><em class="rfc2119" title="MUST"><ins class="diff-new">
-MUST
-</ins></em><ins class="diff-new">
-be
-rejected
-with
-a
-</ins><a href="#idl-def-JsonLdError" class="idlType"><code><ins class="diff-new">
-JsonLdError
-</ins></code></a><ins class="diff-new">
-whose
-code
-is
-set
-to
-</ins><code class="error"><a href="#idl-def-JsonLdErrorCode.multiple-context-link-headers"><ins class="diff-new">
-multiple
-context
-link
-headers
-</ins></a></code>.</dd><dt id="widl-RemoteDocument-document"><code><ins class="diff-new">
-document
-</ins></code><ins class="diff-new">
-of
-type
-</ins><span class="idlMemberType"><a><ins class="diff-new">
-any
-</ins></a></span></dt><dd><ins class="diff-new">
-The
-</ins>
-retrieved
-<del class="diff-old">JSON-LD
-context.
-</del>
-<ins class="diff-chg">document.
-This
-can
-either
-be
-the
-raw
-payload
-or
-the
-already
-parsed
-document.
-</ins>
-</dd>
-<dt id="widl-RemoteDocument-documentUrl">
-<code>
-<del class="diff-old">url
-</del>
-<ins class="diff-chg">documentUrl
-</ins>
-</code>
-of
-type
-<span class="idlMemberType">
-<a>
-DOMString
-</a>
-</span>
-</dt>
-<dd>
-The
-final
-URL
-of
-the
-loaded
-<del class="diff-old">JSON-LD
-context.
-</del>
-<ins class="diff-chg">document.
-</ins>
-This
-is
-important
-to
-handle
-HTTP
-redirects
-properly.
-</dd>
-</dl>
-</section>
-</section>
-</section>
-<section id="error-handling">
-<h3>
-<span class="secno">
-11.4
-</span>
-Error
-Handling
-</h3>
-<p>
-This
-section
-describes
-the
-datatype
-definitions
-used
-within
-the
-JSON-LD
-API
-for
-error
-handling.
-</p>
-<section>
-<h4 id="jsonlderror">
-JsonLdError
-</h4>
-<p>
-The
-<a href="#idl-def-JsonLdError" class="idlType">
-<code>
-JsonLdError
-</code>
-</a>
-type
-is
-used
-to
-report
-processing
-errors.
-</p>
-      <pre class="idl"><span class="idlDictionary" id="idl-def-JsonLdError">dictionary <span class="idlDictionaryID">JsonLdError</span> {
-<span class="idlMember">    <span class="idlMemberType"><a href="#idl-def-JsonLdErrorCode" class="idlType"><code>JsonLdErrorCode</code></a></span> <span class="idlMemberName"><a href="#widl-JsonLdError-code">code</a></span>;</span>
-<span class="idlMember">    <span class="idlMemberType"><a>DOMString</a>?</span>      <span class="idlMemberName"><a href="#widl-JsonLdError-message">message</a></span> = <span class="idlMemberValue">null</span>;</span>
-};
-</span>
-</pre>
-<section>
-<h5 id="dictionary-jsonlderror-members">
-Dictionary
-<a class="idlType" href="#idl-def-JsonLdError">
-<code>
-JsonLdError
-</code>
-</a>
-Members
-</h5>
-<dl class="dictionary-members">
-<dt id="widl-JsonLdError-code">
-<code>
-code
-</code>
-of
-type
-<span class="idlMemberType">
-<a href="#idl-def-JsonLdErrorCode" class="idlType">
-<code>
-JsonLdErrorCode
-</code>
-</a>
-</span>
-</dt>
-<dd>
-a
-string
-representing
-the
-particular
-error
-type,
-as
-described
-in
-the
-various
-algorithms
-in
-this
-document.
-</dd>
-<dt id="widl-JsonLdError-message">
-<code>
-message
-</code>
-of
-type
-<span class="idlMemberType">
-<a>
-DOMString
-</a>
-</span>,
-nullable,
-defaulting
-to
-<code>
-null
-</code>
-</dt>
-<dd>
-an
-optional
-error
-message
-containing
-additional
-debugging
-information.
-The
-specific
-contents
-of
-error
-messages
-are
-outside
-the
-scope
-of
-this
-specification.
-</dd>
-</dl>
-</section>
-</section>
-<section>
-<h4 id="jsonlderrorcode">
-JsonLdErrorCode
-</h4>
-<p>
-The
-<a href="#idl-def-JsonLdErrorCode" class="idlType">
-<code>
-JsonLdErrorCode
-</code>
-</a>
-represents
-the
-collection
-of
-valid
-JSON-LD
-error
-codes.
-</p>
-<div class="issue atrisk">
-<div class="issue-title" role="heading" aria-level="5">
-<span>
-<ins class="diff-new">Feature
-at
-Risk
-4
-</ins></span>:<ins class="diff-new">
-Lists
-of
-lists
-and
-partial
-list
-conversion
-from
-RDF
-</ins></div><div class="atrisk"><p class="atrisk-head"><ins class="diff-new">
-Note:
-This
-feature
-is
-</ins><a href="http://www.w3.org/2005/10/Process-20051014/tr#cfi"><ins class="diff-new">
-"at
-risk"
-</ins></a><ins class="diff-new">
-and
-may
-be
-removed
-from
-this
-specification
-based
-on
-feedback.
-Please
-send
-feedback
-to
-</ins><a href="mailto:public-rdf-comments@w3.org"><ins class="diff-new">
-public-rdf-comments@w3.org
-</ins></a>.<ins class="diff-new">
-For
-the
-current
-status
-see
-</ins><a href="http://www.w3.org/2011/rdf-wg/wiki/JSON-LD_Features_at_Risk"><ins class="diff-new">
-features
-"at
-risk"
-in
-JSON-LD
-1.0
-</ins></a></p><p><ins class="diff-new">
-The
-JSON-LD
-algorithms
-have
-been
-updated
-to
-support
-conversion
-of
-lists
-of
-lists
-to
-</ins><a class="tref internalDFN" title="list-object" href="#dfn-list-object"><ins class="diff-new">
-list
-objects
-</ins></a><ins class="diff-new">
-by
-preserving
-the
-blank
-node
-head
-of
-the
-inner
-list.
-Lists
-of
-lists
-can,
-however,
-not
-be
-represented
-directly
-in
-JSON-LD
-using
-the
-</ins><code><ins class="diff-new">
-@list
-</ins></code><ins class="diff-new">
-construct;
-they
-have
-to
-be
-represented
-as
-a
-set
-of
-interlinked
-node
-objects
-using
-RDF's
-rdf:first
-and
-rdf:rest
-properties.
-Implementors
-are
-asked
-to
-pay
-particular
-attention
-to
-the
-feature
-and
-provide
-feedback
-on
-lists
-of
-lists
-and
-partial
-lists.
-The
-feature
-may
-remain
-in
-the
-specification,
-or
-it
-may
-be
-removed
-after
-further
-implementation
-experience
-has
-been
-gathered.
-Similarly,
-partial
-list
-conversion
-in
-the
-RDF
-algorithms
-have
-been
-marked
-as
-a
-feature
-at
-risk
-and
-may
-be
-removed
-from
-the
-specification
-based
-on
-implementation
-feedback.
-</ins></p></div></div>
-      <pre class="idl"><span class="idlEnum" id="idl-def-JsonLdErrorCode">enum <span class="idlEnumID">JsonLdErrorCode</span> {
-    "<a href="#idl-def-JsonLdErrorCode.loading-document-failed" class="idlEnumItem">loading document failed</a>",
-    "<a href="#idl-def-JsonLdErrorCode.list-of-lists" class="idlEnumItem">list of lists</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid--index-value" class="idlEnumItem">invalid @index value</a>",
-    "<a href="#idl-def-JsonLdErrorCode.conflicting-indexes" class="idlEnumItem">conflicting indexes</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid--id-value" class="idlEnumItem">invalid @id value</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-local-context" class="idlEnumItem">invalid local context</a>",
-<ins class="diff-new">    "<a href="#idl-def-JsonLdErrorCode.multiple-context-link-headers" class="idlEnumItem">multiple context link headers</a>",
-</ins>
-    "<a href="#idl-def-JsonLdErrorCode.loading-remote-context-failed" class="idlEnumItem">loading remote context failed</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-remote-context" class="idlEnumItem">invalid remote context</a>",
-    "<a href="#idl-def-JsonLdErrorCode.recursive-context-inclusion" class="idlEnumItem">recursive context inclusion</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-base-IRI" class="idlEnumItem">invalid base IRI</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-vocab-mapping" class="idlEnumItem">invalid vocab mapping</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-default-language" class="idlEnumItem">invalid default language</a>",
-    "<a href="#idl-def-JsonLdErrorCode.keyword-redefinition" class="idlEnumItem">keyword redefinition</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-term-definition" class="idlEnumItem">invalid term definition</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-reverse-property" class="idlEnumItem">invalid reverse property</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-IRI-mapping" class="idlEnumItem">invalid IRI mapping</a>",
-    "<a href="#idl-def-JsonLdErrorCode.cyclic-IRI-mapping" class="idlEnumItem">cyclic IRI mapping</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-keyword-alias" class="idlEnumItem">invalid keyword alias</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-type-mapping" class="idlEnumItem">invalid type mapping</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-language-mapping" class="idlEnumItem">invalid language mapping</a>",
-    "<a href="#idl-def-JsonLdErrorCode.colliding-keywords" class="idlEnumItem">colliding keywords</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-container-mapping" class="idlEnumItem">invalid container mapping</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-type-value" class="idlEnumItem">invalid type value</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-value-object" class="idlEnumItem">invalid value object</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-value-object-value" class="idlEnumItem">invalid value object value</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-language-tagged-string" class="idlEnumItem">invalid language-tagged string</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-language-tagged-value" class="idlEnumItem">invalid language-tagged value</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-typed-value" class="idlEnumItem">invalid typed value</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-set-or-list-object" class="idlEnumItem">invalid set or list object</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-language-map-value" class="idlEnumItem">invalid language map value</a>",
-    "<a href="#idl-def-JsonLdErrorCode.compaction-to-list-of-lists" class="idlEnumItem">compaction to list of lists</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-reverse-property-map" class="idlEnumItem">invalid reverse property map</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid--reverse-value" class="idlEnumItem">invalid @reverse value</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-reverse-property-value" class="idlEnumItem">invalid reverse property value</a>"
-};
-</span>
-</pre>
-<table class="simple">
-<tr>
-<th colspan="2">
-Enumeration
-description
-</th>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.loading-document-failed">
-loading
-document
-failed
-</code>
-</td>
-<td>
-The
-document
-could
-not
-be
-loaded
-or
-parsed
-as
-JSON.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.list-of-lists">
-list
-of
-lists
-</code>
-</td>
-<td>
-A
-list
-of
-lists
-was
-detected.
-List
-of
-lists
-are
-not
-supported
-in
-this
-version
-of
-JSON-LD
-due
-to
-the
-algorithmic
-<del class="diff-old">complexity
-associated
-with
-conversion
-to
-RDF.
-</del>
-<ins class="diff-chg">complexity.
-</ins>
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.invalid--index-value">
-invalid
-@index
-value
-</code>
-</td>
-<td>
-An
-<code>
-@index
-</code>
-member
-was
-encountered
-whose
-value
-was
-not
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.conflicting-indexes">
-conflicting
-indexes
-</code>
-</td>
-<td>
-Multiple
-conflicting
-indexes
-have
-been
-found
-for
-the
-same
-node.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.invalid--id-value">
-invalid
-@id
-value
-</code>
-</td>
-<td>
-An
-<code>
-@id
-</code>
-member
-was
-encountered
-whose
-value
-was
-not
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.invalid-local-context">
-invalid
-local
-context
-</code>
-</td>
-<td>
-In
-invalid
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>
-was
-detected.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.multiple-context-link-headers">
-<ins class="diff-new">multiple
-context
-link
-headers
-</ins></code></td><td><ins class="diff-new">
-Multiple
-HTTP
-Link
-Headers
-[
-</ins><cite><a class="bibref" href="#bib-RFC5988"><ins class="diff-new">
-RFC5988
-</ins></a></cite><ins class="diff-new">
-]
-using
-the
-</ins><code><ins class="diff-new">
-http://www.w3.org/ns/json-ld#context
-</ins></code><ins class="diff-new">
-link
-relation
-have
-been
-detected.
-</ins></td></tr><tr><td>
-<code id="idl-def-JsonLdErrorCode.loading-remote-context-failed">
-loading
-remote
-context
-failed
-</code>
-</td>
-<td>
-There
-was
-a
-problem
-encountered
-loading
-a
-remote
-context.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.invalid-remote-context">
-invalid
-remote
-context
-</code>
-</td>
-<td>
-No
-valid
-context
-document
-has
-been
-found
-for
-a
-referenced,
-remote
-context.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.recursive-context-inclusion">
-recursive
-context
-inclusion
-</code>
-</td>
-<td>
-A
-cycle
-in
-remote
-context
-inclusions
-has
-been
-detected.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.invalid-base-IRI">
-invalid
-base
-IRI
-</code>
-</td>
-<td>
-An
-invalid
-<a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">
-base
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-has
-been
-detected,
-i.e.,
-it
-is
-neither
-an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
-absolute
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-nor
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.invalid-vocab-mapping">
-invalid
-vocab
-mapping
-</code>
-</td>
-<td>
-An
-invalid
-<a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">
-vocabulary
-mapping
-</a>
-has
-been
-detected,
-i.e.,
-it
-is
-neither
-an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
-absolute
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-nor
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.invalid-default-language">
-invalid
-default
-language
-</code>
-</td>
-<td>
-The
-value
-of
-the
-<a class="tref internalDFN" title="default-language" href="#dfn-default-language">
-default
-language
-</a>
-is
-not
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>
-or
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>
-and
-thus
-invalid.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.keyword-redefinition">
-keyword
-redefinition
-</code>
-</td>
-<td>
-A
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keyword
-</a>
-redefinition
-has
-been
-detected.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.invalid-term-definition">
-invalid
-term
-definition
-</code>
-</td>
-<td>
-An
-invalid
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-has
-been
-detected.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.invalid-reverse-property">
-invalid
-reverse
-property
-</code>
-</td>
-<td>
-An
-invalid
-reverse
-property
-definition
-has
-been
-detected.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.invalid-IRI-mapping">
-invalid
-IRI
-mapping
-</code>
-</td>
-<td>
-A
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
-local
-context
-</a>
-contains
-a
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-that
-has
-an
-invalid
-or
-missing
-<a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-mapping
-</a>.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.cyclic-IRI-mapping">
-cyclic
-IRI
-mapping
-</code>
-</td>
-<td>
-A
-cycle
-in
-<a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-mappings
-</a>
-has
-been
-detected.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.invalid-keyword-alias">
-invalid
-keyword
-alias
-</code>
-</td>
-<td>
-An
-invalid
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keyword
-</a>
-alias
-definition
-has
-been
-encountered.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.invalid-type-mapping">
-invalid
-type
-mapping
-</code>
-</td>
-<td>
-An
-<code>
-@type
-</code>
-member
-in
-a
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-was
-encountered
-whose
-value
-could
-not
-be
-expanded
-to
-an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
-absolute
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.invalid-language-mapping">
-invalid
-language
-mapping
-</code>
-</td>
-<td>
-An
-<code>
-@language
-</code>
-member
-in
-a
-<a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">
-term
-definition
-</a>
-was
-encountered
-whose
-value
-was
-neither
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>
-nor
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>
-and
-thus
-invalid.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.colliding-keywords">
-colliding
-keywords
-</code>
-</td>
-<td>
-Two
-properties
-which
-expand
-to
-the
-same
-keyword
-have
-been
-detected.
-This
-might
-occur
-if
-a
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keyword
-</a>
-and
-an
-<del class="diff-old">an
-</del>
-alias
-thereof
-are
-used
-at
-the
-same
-time.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.invalid-container-mapping">
-invalid
-container
-mapping
-</code>
-</td>
-<td>
-An
-<code>
-@container
-</code>
-member
-was
-encountered
-whose
-value
-was
-not
-one
-of
-the
-following
-<a class="tref internalDFN" title="string" href="#dfn-string">
-strings
-</a>:
-<code>
-@list
-</code>,
-<code>
-@set
-</code>,
-or
-<code>
-@index
-</code>.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.invalid-type-value">
-invalid
-type
-value
-</code>
-</td>
-<td>
-An
-invalid
-value
-for
-an
-<code>
-@type
-</code>
-member
-has
-been
-detected,
-i.e.,
-the
-value
-was
-neither
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>
-nor
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-of
-<a class="tref internalDFN" title="string" href="#dfn-string">
-strings
-</a>.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.invalid-value-object">
-invalid
-value
-object
-</code>
-</td>
-<td>
-A
-<a class="tref internalDFN" title="value-object" href="#dfn-value-object">
-value
-object
-</a>
-with
-disallowed
-members
-has
-been
-detected.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.invalid-value-object-value">
-invalid
-value
-object
-value
-</code>
-</td>
-<td>
-An
-invalid
-value
-for
-the
-<code>
-@value
-</code>
-member
-of
-a
-<a class="tref internalDFN" title="value-object" href="#dfn-value-object">
-value
-object
-</a>
-has
-been
-detected,
-i.e.,
-it
-is
-neither
-a
-<a class="tref internalDFN" title="scalar" href="#dfn-scalar">
-scalar
-</a>
-nor
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.invalid-language-tagged-string">
-invalid
-language-tagged
-string
-</code>
-</td>
-<td>
-A
-<a class="tref internalDFN" title="language-tagged-string" href="http://www.w3.org/TR/rdf11-concepts/#dfn-language-tagged-string">
-language-tagged
-string
-</a>
-with
-an
-invalid
-language
-value
-was
-detected.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.invalid-language-tagged-value">
-invalid
-language-tagged
-value
-</code>
-</td>
-<td>
-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>
-with
-an
-associated
-language
-tag
-was
-detected.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.invalid-typed-value">
-invalid
-typed
-value
-</code>
-</td>
-<td>
-A
-<a class="tref internalDFN" title="typed-value" href="#dfn-typed-value">
-typed
-value
-</a>
-with
-an
-invalid
-type
-was
-detected.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.invalid-set-or-list-object">
-invalid
-set
-or
-list
-object
-</code>
-</td>
-<td>
-A
-<a class="tref internalDFN" title="set-object" href="#dfn-set-object">
-set
-object
-</a>
-or
-<a class="tref internalDFN" title="list-object" href="#dfn-list-object">
-list
-object
-</a>
-with
-disallowed
-members
-has
-been
-detected.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.invalid-language-map-value">
-invalid
-language
-map
-value
-</code>
-</td>
-<td>
-An
-invalid
-value
-in
-a
-<a class="tref externalDFN" title="language-map" href="http://www.w3.org/TR/2013/CR-json-ld-20130822/#dfn-language-map">
-language
-map
-</a>
-has
-been
-detected.
-It
-has
-to
-be
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>
-or
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-of
-<a class="tref internalDFN" title="string" href="#dfn-string">
-strings
-</a>.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.compaction-to-list-of-lists">
-compaction
-to
-list
-of
-lists
-</code>
-</td>
-<td>
-The
-compacted
-document
-contains
-a
-list
-of
-lists
-as
-multiple
-lists
-have
-been
-compacted
-to
-the
-same
-term.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.invalid-reverse-property-map">
-invalid
-reverse
-property
-map
-</code>
-</td>
-<td>
-An
-invalid
-reverse
-property
-map
-has
-been
-detected.
-No
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keywords
-</a>
-apart
-from
-<code>
-@context
-</code>
-are
-allowed
-in
-reverse
-property
-maps.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.invalid--reverse-value">
-invalid
-@reverse
-value
-</code>
-</td>
-<td>
-An
-invalid
-value
-for
-an
-<code>
-@reverse
-</code>
-member
-has
-been
-detected,
-i.e.,
-the
-value
-was
-not
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>.
-</td>
-</tr>
-<tr>
-<td>
-<code id="idl-def-JsonLdErrorCode.invalid-reverse-property-value">
-invalid
-reverse
-property
-value
-</code>
-</td>
-<td>
-An
-invalid
-value
-for
-a
-reverse
-property
-has
-been
-detected.
-The
-value
-of
-an
-inverse
-property
-must
-be
-a
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
-node
-object
-</a>.
-</td>
-</tr>
-</table>
-</section>
-</section>
-</section>
-<section class="appendix informative" id="acknowledgements">
-<h2>
-<span class="secno">
-A.
-</span>
-Acknowledgements
-</h2>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</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
-Niklas
-Lindström,
-François
-Daoust,
-Lin
-Clark,
-and
-Zdenko
-'Denny'
-Vrandečić.
-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.
-The
-work
-of
-Dave
-Lehn
-and
-Mike
-Johnson
-are
-appreciated
-for
-reviewing,
-and
-performing
-several
-implementations
-of
-the
-specification.
-Ian
-Davis
-is
-thanked
-for
-his
-work
-on
-RDF/JSON.
-Thanks
-also
-to
-Nathan
-Rixham,
-Bradley
-P.
-Allen,
-Kingsley
-Idehen,
-Glenn
-McDonald,
-Alexandre
-Passant,
-Danny
-Ayers,
-Ted
-Thibodeau
-Jr.,
-Olivier
-Grisel,
-Josh
-Mandel,
-Eric
-Prud'hommeaux,
-David
-Wood,
-Guus
-Schreiber,
-Pat
-Hayes,
-Sandro
-Hawke,
-<del class="diff-old">Tab
-Atkins
-Jr.,
-Anne
-van
-Kesteren,
-Robin
-Berjon,
-Marcos
-Caceres,
-Boris
-Zbarsky,
-</del>
-and
-Richard
-Cyganiak
-for
-their
-input
-on
-the
-specification.
-</p>
-</section>
-<section id="references" class="appendix" typeof="bibo:Chapter" resource="#references" rel="bibo:chapter">
-<h2>
-<span class="secno">
-B.
-</span>
-References
-</h2>
-<section id="normative-references" typeof="bibo:Chapter" resource="#normative-references" rel="bibo:chapter">
-<h3>
-<span class="secno">
-B.1
-</span>
-Normative
-references
-</h3>
-<dl class="bibliography" about="">
-<dt id="bib-DOM-WHATWG">
-[DOM-WHATWG]
-</dt>
-<dd rel="dcterms:requires">
-Anne
-van
-Kesteren,
-Aryeh
-Gregor,
-Ms2ger,
-Editors.
-<cite>
-<a href="http://dom.spec.whatwg.org/">
-DOM
-</a>.
-</cite>
-April
-2013.
-WHATWG
-Living
-Standard
-(work
-in
-progress).
-URL:
-<a href="http://dom.spec.whatwg.org/">
-http://dom.spec.whatwg.org/
-</a>
-</dd>
-<dt id="bib-IEEE-754-1985">
-[IEEE-754-1985]
-</dt>
-<dd rel="dcterms:requires">
-IEEE.
-<cite>
-IEEE
-Standard
-for
-Binary
-Floating-Point
-Arithmetic.
-</cite>
-URL:
-<a href="http://standards.ieee.org/reading/ieee/std_public/description/busarch/754-1985_desc.html">
-http://standards.ieee.org/reading/ieee/std_public/description/busarch/754-1985_desc.html
-</a>
-</dd>
-<dt id="bib-JSON-LD">
-[JSON-LD]
-</dt>
-<dd rel="dcterms:requires">
-Manu
-Sporny,
-Gregg
-Kellogg,
-Markus
-Lanthaler,
-Editors.
-<cite>
-<a href="http://json-ld.org/spec/latest/json-ld/">
-JSON-LD
-1.0
-</a>.
-</cite>
-W3C
-Editor's
-Draft
-(work
-in
-progress).
-URL:
-<a href="http://json-ld.org/spec/latest/json-ld/">
-http://json-ld.org/spec/latest/json-ld/
-</a>
-</dd>
-<dt id="bib-RDF-MT">
-[RDF-MT]
-</dt>
-<dd rel="dcterms:requires">
-Patrick
-Hayes.
-<a href="http://www.w3.org/TR/rdf-mt/">
-<cite>
-RDF
-Semantics
-</cite>
-</a>.
-10
-February
-2004.
-W3C
-Recommendation.
-URL:
-<del class="diff-old">http://www.w3.org/TR/2004/REC-rdf-mt-20040210
-</del>
-<a href="http://www.w3.org/TR/rdf-mt/">
-<ins class="diff-chg">http://www.w3.org/TR/rdf-mt/
-</ins>
-</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-RFC3986">
-[RFC3986]
-</dt>
-<dd rel="dcterms:requires">
-T.
-Berners-Lee;
-R.
-Fielding;
-L.
-Masinter.
-<a href="http://www.ietf.org/rfc/rfc3986.txt">
-<cite>
-Uniform
-Resource
-Identifier
-(URI):
-Generic
-Syntax
-(RFC
-3986)
-</cite>
-</a>.
-January
-2005.
-RFC.
-URL:
-<a href="http://www.ietf.org/rfc/rfc3986.txt">
-http://www.ietf.org/rfc/rfc3986.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)
-<del class="diff-old">(RFC
-3987)
-</del>
-</cite>
-</a>.
-January
-2005.
-RFC.
-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)
-(RFC
-4627)
-</cite>
-</a>.
-July
-2006.
-RFC.
-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.
-<cite>
-<a href="http://www.ietf.org/rfc/rfc5988.txt">
-Web
-Linking
-</a>.
-</cite>
-October
-2010.
-Internet
-RFC
-5988.
-URL:
-<a href="http://www.ietf.org/rfc/rfc5988.txt">
-http://www.ietf.org/rfc/rfc5988.txt
-</a>
-</dd>
-<dt id="bib-WEBIDL">
-[WEBIDL]
-</dt>
-<dd rel="dcterms:requires">
-Cameron
-McCormack,
-Editor.
-<cite>
-<a href="http://www.w3.org/TR/2012/CR-WebIDL-20120419/">
-Web
-IDL.
-</a>
-</cite>
-19
-April
-2012.
-W3C
-Candidate
-Recommendation
-(work
-in
-progress).
-URL:
-<a href="http://www.w3.org/TR/2012/CR-WebIDL-20120419/">
-http://www.w3.org/TR/2012/CR-WebIDL-20120419/
-</a>.
-The
-latest
-edition
-is
-available
-at
-<a href="http://www.w3.org/TR/WebIDL/">
-http://www.w3.org/TR/WebIDL/
-</a>
-</dd>
-<dt id="bib-XMLSCHEMA11-2">
-[XMLSCHEMA11-2]
-</dt>
-<dd rel="dcterms:requires">
-<ins class="diff-new">David
-Peterson;
-Sandy
-Gao;
-Ashok
-Malhotra;
-Michael
-Sperberg-McQueen;
-</ins>
-Henry
-<del class="diff-old">S.
-Thompson
-</del>
-<ins class="diff-chg">Thompson;
-Paul
-V.
-Biron
-</ins>
-et
-al.
-<a href="http://www.w3.org/TR/xmlschema11-2/">
-<cite>
-W3C
-XML
-Schema
-Definition
-Language
-(XSD)
-1.1
-Part
-2:
-Datatypes
-</cite>
-</a>.
-5
-April
-2012.
-W3C
-Recommendation.
-URL:
-<del class="diff-old">http://www.w3.org/TR/2012/REC-xmlschema11-2-20120405/
-</del>
-<a href="http://www.w3.org/TR/xmlschema11-2/">
-<ins class="diff-chg">http://www.w3.org/TR/xmlschema11-2/
-</ins>
-</a>
-</dd>
-</dl>
-</section>
-<section id="informative-references" typeof="bibo:Chapter" resource="#informative-references" rel="bibo:chapter">
-<h3>
-<span class="secno">
-B.2
-</span>
-Informative
-references
-</h3>
-<dl class="bibliography" about="">
-<dt id="bib-BCP47">
-[BCP47]
-</dt>
-<dd rel="dcterms:references">
-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-ECMA-262">
-[ECMA-262]
-</dt>
-<dd rel="dcterms:references">
-<a href="http://www.ecma-international.org/publications/standards/Ecma-262.htm">
-<cite>
-ECMAScript
-Language
-Specification,
-Edition
-5.1
-</cite>
-</a>.
-June
-2011.
-URL:
-<a href="http://www.ecma-international.org/publications/standards/Ecma-262.htm">
-http://www.ecma-international.org/publications/standards/Ecma-262.htm
-</a>
-</dd>
-<dt id="bib-JSON-LD-TESTS">
-[JSON-LD-TESTS]
-</dt>
-<dd rel="dcterms:references">
-<cite>
-<a href="http://www.w3.org/2013/json-ld-tests/">
-JSON-LD
-1.0
-Test
-Suite
-</a>
-</cite>.
-W3C
-Test
-Suite
-(work
-in
-progress).
-URL:
-<a href="http://www.w3.org/2013/json-ld-tests/">
-http://www.w3.org/2013/json-ld-tests/
-</a>
-</dd>
-<dt id="bib-RDF11-CONCEPTS">
-[RDF11-CONCEPTS]
-</dt>
-<dd rel="dcterms:references">
-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>.
-The
-latest
-edition
-is
-available
-at
-<a href="http://www.w3.org/TR/rdf11-concepts/">
-http://www.w3.org/TR/rdf11-concepts/
-</a>
-</dd>
-<dt id="bib-RFC6839">
-<ins class="diff-new">[RFC6839]
-</ins></dt><dd rel="dcterms:references"><ins class="diff-new">
-Tony
-Hansen,
-Alexey
-Melnikov.
-</ins><cite><a href="http://www.ietf.org/rfc/rfc6839.txt"><ins class="diff-new">
-Additional
-Media
-Type
-Structured
-Syntax
-Suffixes
-</ins></a>.</cite><ins class="diff-new">
-January
-2013.
-Internet
-RFC
-6839.
-URL:
-</ins><a href="http://www.ietf.org/rfc/rfc6839.txt"><ins class="diff-new">
-http://www.ietf.org/rfc/rfc6839.txt
-</ins>
-</a>
-</dd>
-<dt id="bib-TURTLE">
-[TURTLE]
-</dt>
-<dd rel="dcterms:references">
-Eric
-Prud'hommeaux,
-Gavin
-Carothers,
-Editors.
-<cite>
-<a href="http://www.w3.org/TR/2013/CR-turtle-20130219/">
-Turtle:
-Terse
-RDF
-Triple
-Language.
-</a>
-</cite>
-19
-February
-2013.
-W3C
-Candidate
-Recommendation
-(work
-in
-progress).
-URL:
-<a href="http://www.w3.org/TR/2013/CR-turtle-20130219/">
-http://www.w3.org/TR/2013/CR-turtle-20130219/
-</a>.
-The
-latest
-edition
-is
-available
-at
-<a href="http://www.w3.org/TR/turtle/">
-http://www.w3.org/TR/turtle/
-</a>
-</dd>
-</dl>
-</section>
-</section>
-</body>
-</html>
--- a/spec/CR/json-ld-api/20130822/index.html	Thu Sep 05 22:36:04 2013 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4620 +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 Processing Algorithms and API</title>
-<meta http-equiv="content-type" content="text/html; charset=UTF-8">
-<style type="text/css">
-  .diff {
-    font-weight:bold; color:#0a3;
-  }
-  .error a {
-    color:  #ff4500;
-    border-bottom:  1px dotted #ff4500;
-    text-decoration: none;
-  }
-  .atrisk-head {
-    font-style: italic;
-  }
-  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, ".") ") ";
-  }
-</style>
-<style>
-/* --- 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;
-}
-
-/* --- 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: #2b2; }
-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: 1em 1.2em 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><style>/* --- WEB IDL --- */
-pre.idl {
-    border-top: 1px solid #90b8de;
-    border-bottom: 1px solid #90b8de;
-    padding:    1em;
-    line-height:    120%;
-}
-
-pre.idl::before {
-    content:    "WebIDL";
-    display:    block;
-    width:      150px;
-    background: #90b8de;
-    color:  #fff;
-    font-family:    initial;
-    padding:    3px;
-    font-weight:    bold;
-    margin: -1em 0 1em -1em;
-}
-
-.idlType {
-    color:  #ff4500;
-    font-weight:    bold;
-    text-decoration:    none;
-}
-
-/*.idlModule*/
-/*.idlModuleID*/
-/*.idlInterface*/
-.idlInterfaceID, .idlDictionaryID, .idlCallbackID, .idlEnumID {
-    font-weight:    bold;
-    color:  #005a9c;
-}
-a.idlEnumItem {
-    color:  #000;
-    border-bottom:  1px dotted #ccc;
-    text-decoration: none;
-}
-
-.idlSuperclass {
-    font-style: italic;
-    color:  #005a9c;
-}
-
-/*.idlAttribute*/
-.idlAttrType, .idlFieldType, .idlMemberType {
-    color:  #005a9c;
-}
-.idlAttrName, .idlFieldName, .idlMemberName {
-    color:  #ff4500;
-}
-.idlAttrName a, .idlFieldName a, .idlMemberName a {
-    color:  #ff4500;
-    border-bottom:  1px dotted #ff4500;
-    text-decoration: none;
-}
-
-/*.idlMethod*/
-.idlMethType, .idlCallbackType {
-    color:  #005a9c;
-}
-.idlMethName {
-    color:  #ff4500;
-}
-.idlMethName a {
-    color:  #ff4500;
-    border-bottom:  1px dotted #ff4500;
-    text-decoration: none;
-}
-
-/*.idlCtor*/
-.idlCtorName {
-    color:  #ff4500;
-}
-.idlCtorName a {
-    color:  #ff4500;
-    border-bottom:  1px dotted #ff4500;
-    text-decoration: none;
-}
-
-/*.idlParam*/
-.idlParamType {
-    color:  #005a9c;
-}
-.idlParamName, .idlDefaultValue {
-    font-style: italic;
-}
-
-.extAttr {
-    color:  #666;
-}
-
-/*.idlSectionComment*/
-.idlSectionComment {
-    color: gray;
-}
-
-/*.idlConst*/
-.idlConstType {
-    color:  #005a9c;
-}
-.idlConstName {
-    color:  #ff4500;
-}
-.idlConstName a {
-    color:  #ff4500;
-    border-bottom:  1px dotted #ff4500;
-    text-decoration: none;
-}
-
-/*.idlException*/
-.idlExceptionID {
-    font-weight:    bold;
-    color:  #c00;
-}
-
-.idlTypedefID, .idlTypedefType {
-    color:  #005a9c;
-}
-
-.idlRaises, .idlRaises a.idlType, .idlRaises a.idlType code, .excName a, .excName a code {
-    color:  #c00;
-    font-weight:    normal;
-}
-
-.excName a {
-    font-family:    monospace;
-}
-
-.idlRaises a.idlType, .excName a.idlType {
-    border-bottom:  1px dotted #c00;
-}
-
-.excGetSetTrue, .excGetSetFalse, .prmNullTrue, .prmNullFalse, .prmOptTrue, .prmOptFalse {
-    width:  45px;
-    text-align: center;
-}
-.excGetSetTrue, .prmNullTrue, .prmOptTrue { color:  #0c0; }
-.excGetSetFalse, .prmNullFalse, .prmOptFalse { color:  #c00; }
-
-.idlImplements a {
-    font-weight:    bold;
-}
-
-dl.attributes, dl.methods, dl.constants, dl.constructors, dl.fields, dl.dictionary-members {
-    margin-left:    2em;
-}
-
-.attributes dt, .methods dt, .constants dt, .constructors dt, .fields dt, .dictionary-members dt {
-    font-weight:    normal;
-}
-
-.attributes dt code, .methods dt code, .constants dt code, .constructors dt code, .fields dt code, .dictionary-members dt code {
-    font-weight:    bold;
-    color:  #000;
-    font-family:    monospace;
-}
-
-.attributes dt code, .fields dt code, .dictionary-members dt code {
-    background:  #ffffd2;
-}
-
-.attributes dt .idlAttrType code, .fields dt .idlFieldType code, .dictionary-members dt .idlMemberType code {
-    color:  #005a9c;
-    background:  transparent;
-    font-family:    inherit;
-    font-weight:    normal;
-    font-style: italic;
-}
-
-.methods dt code {
-    background:  #d9e6f8;
-}
-
-.constants dt code {
-    background:  #ddffd2;
-}
-
-.constructors dt code {
-    background:  #cfc;
-}
-
-.attributes dd, .methods dd, .constants dd, .constructors dd, .fields dd, .dictionary-members dd {
-    margin-bottom:  1em;
-}
-
-table.parameters, table.exceptions {
-    border-spacing: 0;
-    border-collapse:    collapse;
-    margin: 0.5em 0;
-    width:  100%;
-}
-table.parameters { border-bottom:  1px solid #90b8de; }
-table.exceptions { border-bottom:  1px solid #deb890; }
-
-.parameters th, .exceptions th {
-    color:  #fff;
-    padding:    3px 5px;
-    text-align: left;
-    font-family:    initial;
-    font-weight:    normal;
-    text-shadow:    #666 1px 1px 0;
-}
-.parameters th { background: #90b8de; }
-.exceptions th { background: #deb890; }
-
-.parameters td, .exceptions td {
-    padding:    3px 10px;
-    border-top: 1px solid #ddd;
-    vertical-align: top;
-}
-
-.parameters tr:first-child td, .exceptions tr:first-child td {
-    border-top: none;
-}
-
-.parameters td.prmName, .exceptions td.excName, .exceptions td.excCodeName {
-    width:  100px;
-}
-
-.parameters td.prmType {
-    width:  120px;
-}
-
-table.exceptions table {
-    border-spacing: 0;
-    border-collapse:    collapse;
-    width:  100%;
-}
-</style><link rel="stylesheet" href="https://www.w3.org/StyleSheets/TR/W3C-CR"><!--[if lt IE 9]><script src='https://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]--></head>
-
-<body class="h-entry"><div class="head">
-  <p>
-
-      <a href="http://www.w3.org/"><img width="72" height="48" src="https://www.w3.org/Icons/w3c_home" alt="W3C"></a>
-
-  </p>
-  <h1 class="title p-name" id="title">JSON-LD 1.0 Processing Algorithms and API</h1>
-
-  <h2 id="w3c-candidate-recommendation-22-august-2013"><abbr title="World Wide Web Consortium">W3C</abbr> Candidate Recommendation <time class="dt-published" datetime="2013-08-22">22 August 2013</time></h2>
-  <dl>
-
-      <dt>This version:</dt>
-      <dd><a class="u-url" href="http://www.w3.org/TR/2013/CR-json-ld-api-20130822/">http://www.w3.org/TR/2013/CR-json-ld-api-20130822/</a></dd>
-      <dt>Latest published version:</dt>
-      <dd><a href="http://www.w3.org/TR/json-ld-api/">http://www.w3.org/TR/json-ld-api/</a></dd>
-
-
-      <dt>Latest editor's draft:</dt>
-      <dd><a href="http://json-ld.org/spec/latest/json-ld-api/index.html">http://json-ld.org/spec/latest/json-ld-api/index.html</a></dd>
-
-
-      <dt>Test suite:</dt>
-      <dd><a href="http://www.w3.org/2013/json-ld-tests/">http://www.w3.org/2013/json-ld-tests/</a></dd>
-
-
-
-
-      <dt>Previous version:</dt>
-      <dd><a href="http://www.w3.org/TR/2013/WD-json-ld-api-20130516/">http://www.w3.org/TR/2013/WD-json-ld-api-20130516/</a></dd>
-
-
-    <dt>Editors:</dt>
-    <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" class="p-org org h-org h-card" href="http://www.tugraz.at/">Graz University of Technology</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" class="p-org org h-org h-card" 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="Manu Sporny" href="http://manu.sporny.org/">Manu Sporny</a>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://digitalbazaar.com/">Digital Bazaar</a></span>
-</dd>
-
-
-      <dt>Authors:</dt>
-      <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" class="p-org org h-org h-card" 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" class="p-org org h-org h-card" 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" class="p-org org h-org h-card" 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="Manu Sporny" href="http://digitalbazaar.com/">Manu Sporny</a>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://digitalbazaar.com/">Digital Bazaar</a></span>
-</dd>
-
-
-
-  </dl>
-
-
-    <p>
-
-        This document is also available in this non-normative format:
-
-      <a rel="alternate" href="diff-20130516.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
-
-        <a href="http://www.w3.org/"><abbr title="World Wide Web Consortium">W3C</abbr></a><sup>®</sup>
-        (<a href="http://www.csail.mit.edu/"><abbr title="Massachusetts Institute of Technology">MIT</abbr></a>,
-        <a href="http://www.ercim.eu/"><abbr title="European Research Consortium for Informatics and Mathematics">ERCIM</abbr></a>,
-        <a href="http://www.keio.ac.jp/">Keio</a>, <a href="http://ev.buaa.edu.cn/">Beihang</a>), All Rights Reserved.
-        <abbr title="World Wide Web Consortium">W3C</abbr> <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
-        <a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a> and
-        <a href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> rules apply.
-      </p>
-
-
-  <hr>
-</div>
-<section id="abstract" class="introductory" property="dcterms:abstract" datatype="" typeof="bibo:Chapter" resource="#abstract" rel="bibo:chapter"><h2>Abstract</h2>
-  <p>This specification defines an Application Programming Interface (API)
-    and a set of algorithms for programmatic transformations of JSON-LD
-    documents. Restructuring data according to the defined transformations
-    often dramatically simplifies its usage.</p>
-</section><section id="sotd" class="introductory" typeof="bibo:Chapter" resource="#sotd" rel="bibo:chapter"><h2>Status of This Document</h2>
-
-
-
-        <p>
-          <em>This section describes the status of this document at the time of its publication. Other
-          documents may supersede this document. A list of current <abbr title="World Wide Web Consortium">W3C</abbr> publications and the latest revision
-          of this technical report can be found in the <a href="http://www.w3.org/TR/"><abbr title="World Wide Web Consortium">W3C</abbr> technical reports
-          index</a> at http://www.w3.org/TR/.</em>
-        </p>
-
-  <p>This document has been under development for over 30 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
-    along the Recommendation track. The specification has undergone significant
-    development, review, and changes during the course of the last 30 months.</p>
-
-  <p>There are several independent
-    <a href="http://json-ld.org/test-suite/reports/">interoperable implementations</a> of
-    this specification. There is a fairly complete test suite [<cite><a class="bibref" href="#bib-JSON-LD-TESTS">JSON-LD-TESTS</a></cite>]
-    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 there will be continuous development on implementations,
-    the test suite, and the live editor, they are believed to be mature enough
-    to be integrated into a non-production system at this point in time. There
-    is an expectation that they could be used in a production system within the
-    next three months.</p>
-
-  <p>Changes since the
-    <a href="http://www.w3.org/TR/2013/WD-json-ld-api-20130411/">11&nbsp;April&nbsp;2013 Last Call Working Draft</a>:</p>
-
-  <ul>
-    <li>Use of DOM Futures instead of callbacks in the Application Programming Interface</li>
-    <li>Processing of terms that are redefined to themselves without raising an
-      <code class="error"><a href="#idl-def-JsonLdErrorCode.cyclic-IRI-mapping">cyclic <abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a></code> error</li>
-    <li>Raise an <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid-IRI-mapping">invalid <abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a></code>
-      error if relative URLs are used in term definitions</li>
-    <li>Support relative IRIs in <code>@base</code></li>
-    <li>Remove default value of <code class="idlMemberName"><a href="#idl-def-JsonLdOptions">JsonLdOption's</a></code>
-      <code class="idlMemberName"><a href="#widl-JsonLdOptions-base">base</a></code> member</li>
-    <li>Support lists of lists when serializing RDF as JSON-LD</li>
-    <li>Support for relative URLs in <code>@base</code> and documents that
-      do not have a base value</li>
-  </ul>
-
-  <p>Changes since the
-    <a href="http://www.w3.org/TR/2013/WD-json-ld-api-20130516/">16&nbsp;May&nbsp;2013 Last Call Working Draft</a>:</p>
-
-  <ul>
-    <li>Ensure determinism of the Deserialize JSON-LD to RDF algorithm by specifying the processing order</li>
-    <li>Change the default value of the <em>use native types</em> flag in the Serialize RDF as JSON-LD
-      algorithm to <code>false</code></li>
-    <li>Clarify that the <i>identifier map</i> and the <i>counter</i> used by the
-      Generate Blank Node Identifier algorithm are reset before running the Flattening
-      and the Deserialize JSON-LD to RDF algorithms</li>
-    <li>Raise an error if a blank node is used as data type</li>
-    <li>Clarify that blank node identifier are supported as value of <code>@vocab</code></li>
-    <li>When generating RDF, exclude <a class="tref internalDFN" title="rdf-triple" href="#dfn-rdf-triple">triples</a> containing a
-      <a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">blank node</a> <a class="tref internalDFN" title="rdf-predicate" href="#dfn-rdf-predicate">predicate</a>, unless the
-      <i>produce generalized RDF</i> flag is set; discard <a class="tref internalDFN" title="rdf-triple" href="#dfn-rdf-triple">triples</a>
-      containing relative IRIs and graphs with a relative <abbr title="Internationalized Resource Identifier">IRI</abbr> as graph name</li>
-    <li>Update reference to DOM Promises (have been called DOM Futures)</li>
-    <li>Fix bug in <a href="#serialize-rdf-as-json-ld-algorithm">Serialize RDF to JSON-LD algorithm</a> to
-      handle lists correctly</li>
-    <li>Support processing of documents with a <code>+json</code> media type as defined in
-      [<cite><a class="bibref" href="#bib-RFC6839">RFC6839</a></cite>]</li>
-    <li>Use the <a href="#idl-def-LoadDocumentCallback" class="idlType"><code>LoadDocumentCallback</code></a> (previously <code>LoadContextCallback</code>)
-      to retrieve remote contexts and remote documents</li>
-    <li>Allow contexts to be passed into the API directly. Previously only context documents, i.e.,
-      objects having a <code>@context</code> member were allowed.</li>
-  </ul>
-
-  <p>This document was published by the <a href="http://www.w3.org/2011/rdf-wg/">RDF Working Group</a> as a Candidate Recommendation.
-    This document is intended to become a <abbr title="World Wide Web Consortium">W3C</abbr> Recommendation.
-    If you wish to make comments regarding this document, please send them to
-    <a href="mailto:public-rdf-comments@w3.org">public-rdf-comments@w3.org</a>
-    (<a href="mailto:public-rdf-comments-request@w3.org?subject=subscribe">subscribe</a>,
-    <a href="http://lists.w3.org/Archives/Public/public-rdf-comments/">archives</a>).
-    <abbr title="World Wide Web Consortium">W3C</abbr> publishes a Candidate Recommendation to indicate that the document is believed
-    to be stable and to encourage implementation by the developer community. This
-    Candidate Recommendation is expected to advance to Proposed Recommendation no earlier than
-    19 September 2013. All comments are welcome.</p>
-
-  <p>Publication as a Candidate Recommendation does not imply endorsement by the <abbr title="World Wide Web Consortium">W3C</abbr> 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.</p>
-
-  <p>Before this specification exits Candidate Recommendation, two or more
-    independent implementations must pass each test, although no single
-    implementation must pass each test. The working group will decide when
-    the test suite is of sufficient quality to test interoperability and will
-    produce an implementation report (hosted together with the test suite).</p>
-
-  <p>This document was produced by a group operating under the
-    <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February 2004 <abbr title="World Wide Web Consortium">W3C</abbr> Patent Policy</a>.
-    <abbr title="World Wide Web Consortium">W3C</abbr> maintains a <a href="http://www.w3.org/2004/01/pp-impl/46168/status" rel="disclosure">public list of any patent disclosures</a>
-    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
-    <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential Claim(s)</a> must disclose the
-    information in accordance with <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section
-    6 of the <abbr title="World Wide Web Consortium">W3C</abbr> Patent Policy</a>.</p>
-
-</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></li><li class="tocline"><a href="#features" class="tocxref"><span class="secno">2. </span>Features</a><ul class="toc"><li class="tocline"><a href="#expansion" class="tocxref"><span class="secno">2.1 </span>Expansion</a></li><li class="tocline"><a href="#compaction" class="tocxref"><span class="secno">2.2 </span>Compaction</a></li><li class="tocline"><a href="#flattening" class="tocxref"><span class="secno">2.3 </span>Flattening</a></li><li class="tocline"><a href="#rdf-serialization-deserialization" class="tocxref"><span class="secno">2.4 </span>RDF Serialization/Deserialization</a></li></ul></li><li class="tocline"><a href="#conformance" class="tocxref"><span class="secno">3. </span>Conformance</a></li><li class="tocline"><a href="#general-terminology" class="tocxref"><span class="secno">4. </span>General Terminology</a></li><li class="tocline"><a href="#algorithm-terms" class="tocxref"><span class="secno">5. </span>Algorithm Terms</a></li><li class="tocline"><a href="#context-processing-algorithms" class="tocxref"><span class="secno">6. </span>Context Processing Algorithms</a><ul class="toc"><li class="tocline"><a href="#context-processing-algorithm" class="tocxref"><span class="secno">6.1 </span>Context Processing Algorithm</a></li><li class="tocline"><a href="#create-term-definition" class="tocxref"><span class="secno">6.2 </span>Create Term Definition</a></li><li class="tocline"><a href="#iri-expansion" class="tocxref"><span class="secno">6.3 </span><abbr title="Internationalized Resource Identifier">IRI</abbr> Expansion</a></li></ul></li><li class="tocline"><a href="#expansion-algorithms" class="tocxref"><span class="secno">7. </span>Expansion Algorithms</a><ul class="toc"><li class="tocline"><a href="#expansion-algorithm" class="tocxref"><span class="secno">7.1 </span>Expansion Algorithm</a></li><li class="tocline"><a href="#value-expansion" class="tocxref"><span class="secno">7.2 </span>Value Expansion</a></li></ul></li><li class="tocline"><a href="#compaction-algorithms" class="tocxref"><span class="secno">8. </span>Compaction Algorithms</a><ul class="toc"><li class="tocline"><a href="#compaction-algorithm" class="tocxref"><span class="secno">8.1 </span>Compaction Algorithm</a></li><li class="tocline"><a href="#inverse-context-creation" class="tocxref"><span class="secno">8.2 </span>Inverse Context Creation</a></li><li class="tocline"><a href="#iri-compaction" class="tocxref"><span class="secno">8.3 </span><abbr title="Internationalized Resource Identifier">IRI</abbr> Compaction</a></li><li class="tocline"><a href="#term-selection" class="tocxref"><span class="secno">8.4 </span>Term Selection</a></li><li class="tocline"><a href="#value-compaction" class="tocxref"><span class="secno">8.5 </span>Value Compaction</a></li></ul></li><li class="tocline"><a href="#flattening-algorithms" class="tocxref"><span class="secno">9. </span>Flattening Algorithms</a><ul class="toc"><li class="tocline"><a href="#flattening-algorithm" class="tocxref"><span class="secno">9.1 </span>Flattening Algorithm</a></li><li class="tocline"><a href="#node-map-generation" class="tocxref"><span class="secno">9.2 </span>Node Map Generation</a></li><li class="tocline"><a href="#generate-blank-node-identifier" class="tocxref"><span class="secno">9.3 </span>Generate Blank Node Identifier</a></li></ul></li><li class="tocline"><a href="#rdf-serialization-deserialization-algorithms" class="tocxref"><span class="secno">10. </span>RDF Serialization/Deserialization Algorithms</a><ul class="toc"><li class="tocline"><a href="#deserialize-json-ld-to-rdf-algorithm" class="tocxref"><span class="secno">10.1 </span>Deserialize JSON-LD to RDF algorithm</a></li><li class="tocline"><a href="#object-to-rdf-conversion" class="tocxref"><span class="secno">10.2 </span>Object to RDF Conversion</a></li><li class="tocline"><a href="#list-to-rdf-conversion" class="tocxref"><span class="secno">10.3 </span>List to RDF Conversion</a></li><li class="tocline"><a href="#serialize-rdf-as-json-ld-algorithm" class="tocxref"><span class="secno">10.4 </span>Serialize RDF as JSON-LD Algorithm</a></li><li class="tocline"><a href="#rdf-to-object-conversion" class="tocxref"><span class="secno">10.5 </span>RDF to Object Conversion</a></li><li class="tocline"><a href="#data-round-tripping" class="tocxref"><span class="secno">10.6 </span>Data Round Tripping</a></li></ul></li><li class="tocline"><a href="#the-application-programming-interface" class="tocxref"><span class="secno">11. </span>The Application Programming Interface</a><ul class="toc"><li class="tocline"><a href="#the-jsonldprocessor-interface" class="tocxref"><span class="secno">11.1 </span>The <span class="formerLink"><code>JsonLdProcessor</code></span> Interface</a></li><li class="tocline"><a href="#the-jsonldoptions-type" class="tocxref"><span class="secno">11.2 </span>The <span class="formerLink"><code>JsonLdOptions</code></span> Type</a></li><li class="tocline"><a href="#remote-document-and-context-retrieval" class="tocxref"><span class="secno">11.3 </span>Remote Document and Context Retrieval</a></li><li class="tocline"><a href="#error-handling" class="tocxref"><span class="secno">11.4 </span>Error Handling</a></li></ul></li><li class="tocline"><a href="#acknowledgements" class="tocxref"><span class="secno">A. </span>Acknowledgements</a></li><li class="tocline"><a href="#references" class="tocxref"><span class="secno">B. </span>References</a><ul class="toc"><li class="tocline"><a href="#normative-references" class="tocxref"><span class="secno">B.1 </span>Normative references</a></li><li class="tocline"><a href="#informative-references" class="tocxref"><span class="secno">B.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>This document is a detailed specification for an Application Programming
-    Interface for the JSON-LD syntax. The document is primarily intended for
-    the following audiences:</p>
-
-  <ul>
-    <li>Developers who want an overview of the JSON-LD API.</li>
-    <li>Web authors and developers who want a very detailed view of how
-      a <a class="tref internalDFN" title="json-ld-processor" href="#dfn-json-ld-processor">JSON-LD Processor</a> or a <a class="tref internalDFN" title="json-ld-api-implementation" href="#dfn-json-ld-api-implementation">JSON-LD API Implementation</a>
-      operates.</li>
-    <li>Software developers who want to implement the algorithms to transform
-      JSON-LD documents.</li>
-  </ul>
-
-  <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>]. You must also understand the
-    JSON-LD syntax defined in [<cite><a class="bibref" href="#bib-JSON-LD">JSON-LD</a></cite>], which is the base syntax used by all
-    of the algorithms in this document. To understand the API and how it is
-    intended to operate in a programming environment, it is useful to have working
-    knowledge of the JavaScript programming language [<cite><a class="bibref" href="#bib-ECMA-262">ECMA-262</a></cite>] and
-    WebIDL [<cite><a class="bibref" href="#bib-WEBIDL">WEBIDL</a></cite>]. To understand how JSON-LD maps to RDF, it is helpful to be
-    familiar with the basic RDF concepts [<cite><a class="bibref" href="#bib-RDF11-CONCEPTS">RDF11-CONCEPTS</a></cite>].</p>
-</section> <!-- end of Introduction -->
-
-
-<section class="informative" id="features">
-  <!--OddPage--><h2><span class="secno">2. </span>Features</h2><p><em>This section is non-normative.</em></p>
-
-  <p>The JSON-LD Syntax specification [<cite><a class="bibref" href="#bib-JSON-LD">JSON-LD</a></cite>] defines a syntax to
-    express Linked Data in JSON. Because there is more than one way to
-    express Linked Data using this syntax, it is often useful to be able to
-    transform JSON-LD documents so that they may be more easily consumed by
-    specific applications.</p>
-
-  <p>JSON-LD uses <a class="tref internalDFN" title="context" href="#dfn-context">contexts</a> to allow Linked Data
-    to be expressed in a way that is specifically tailored to a particular
-    person or application. By providing a <a class="tref internalDFN" title="context" href="#dfn-context">context</a>,
-    JSON data can be expressed in a way that is a natural fit for a particular
-    person or application whilst also indicating how the data should be
-    understood at a global scale. In order for people or applications to
-    share data that was created using a <a class="tref internalDFN" title="context" href="#dfn-context">context</a> that is different
-    from their own, a JSON-LD processor must be able to transform a document
-    from one <a class="tref internalDFN" title="context" href="#dfn-context">context</a> to another. Instead of requiring JSON-LD
-    processors to write specific code for every imaginable
-    <a class="tref internalDFN" title="context" href="#dfn-context">context</a> switching scenario, it is much easier to specify a
-    single algorithm that can remove any <a class="tref internalDFN" title="context" href="#dfn-context">context</a>. Similarly,
-    another algorithm can be specified to subsequently apply any
-    <a class="tref internalDFN" title="context" href="#dfn-context">context</a>. These two algorithms represent the most basic
-    transformations of JSON-LD documents. They are referred to as
-    <a class="tref internalDFN" title="expansion" href="#dfn-expansion">expansion</a> and <a class="tref internalDFN" title="compaction" href="#dfn-compaction">compaction</a>, respectively.</p>
-
-  <p>There are four major types of transformation that are discussed in this
-    document: expansion, compaction, flattening, and RDF serialization/deserialization.</p>
-
-  <section class="informative" id="expansion">
-    <h3><span class="secno">2.1 </span>Expansion</h3><p><em>This section is non-normative.</em></p>
-
-    <p>The algorithm that removes <a class="tref internalDFN" title="context" href="#dfn-context">context</a> is
-      called <dfn title="expansion" id="dfn-expansion">expansion</dfn>. Before performing any other
-      transformations on a JSON-LD document, it is easiest to
-      remove any <a class="tref internalDFN" title="context" href="#dfn-context">context</a> from it and to make data structures
-      more regular.</p>
-
-    <p>To get an idea of how context and data structuring affects the same data,
-      here is an example of JSON-LD that uses only <a class="tref internalDFN" title="term" href="#dfn-term">terms</a>
-      and is fairly compact:</p>
-
-    <div class="example"><div class="example-title"><span>Example 1</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"
-    }
-  },
-  "@id": "http://me.markus-lanthaler.com/",
-  "name": "Markus Lanthaler",
-  "homepage": "http://www.markus-lanthaler.com/"
-}</pre></div>
-
-    <p>The next input example uses one <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> to express a property
-    and an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> to encapsulate another, but
-    leaves the rest of the information untouched.</p>
-
-    <div class="example"><div class="example-title"><span>Example 2</span>: Sample JSON-LD document using an IRI instead of a term to express a property</div><pre class="example">{
-  "@context": {
-    <span class="diff">"website": "http://xmlns.com/foaf/0.1/homepage"</span>
-  },
-  "@id": "http://me.markus-lanthaler.com/",
-  "<span class="diff">http://xmlns.com/foaf/0.1/name</span>": "Markus Lanthaler",
-  <span class="diff">"website"</span>: <span class="diff">{ "@id":</span> "http://www.markus-lanthaler.com/" <span class="diff">}</span>
-}</pre></div>
-
-    <p>Note that both inputs are valid JSON-LD and both represent the same
-      information. The difference is in their <a class="tref internalDFN" title="context" href="#dfn-context">context</a> information
-      and in the data structures used. A JSON-LD processor can remove
-      <a class="tref internalDFN" title="context" href="#dfn-context">context</a> and ensure that the data is more regular by employing
-      <a class="tref internalDFN" title="expansion" href="#dfn-expansion">expansion</a>.</p>
-
-    <p><a class="tref internalDFN" title="expansion" href="#dfn-expansion">Expansion</a> has two important goals: removing any contextual
-      information from the document, and ensuring all values are represented
-      in a regular form. These goals are accomplished by expanding all properties
-      to <a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">absolute IRIs</a> and by expressing all
-      values in <a class="tref internalDFN" title="array" href="#dfn-array">arrays</a> in
-      <a class="tref internalDFN" title="expanded-form" href="#dfn-expanded-form">expanded form</a>. <a class="tref internalDFN" title="expanded-form" href="#dfn-expanded-form">Expanded form</a> is the most verbose
-      and regular way of expressing of values in JSON-LD; all contextual
-      information from the document is instead stored locally with each value.
-      Running the <a href="#expansion-algorithm">Expansion algorithm</a>
-      (<code class="idlMemberName"><a href="#widl-JsonLdProcessor-expand-Promise-any-input-JsonLdOptions-options">expand</a></code>
-      operation) against the above examples results in the following output:</p>
-
-    <div class="example"><div class="example-title"><span>Example 3</span>: Expanded sample document</div><pre class="example">[
-  {
-    "@id": "http://me.markus-lanthaler.com/",
-    "http://xmlns.com/foaf/0.1/name": [
-      { "@value": "Markus Lanthaler" }
-    ],
-    "http://xmlns.com/foaf/0.1/homepage": [
-      { "@id": "http://www.markus-lanthaler.com/" }
-    ]
-  }
-]</pre></div>
-
-    <p>Note that in the output above all <a class="tref internalDFN" title="context" href="#dfn-context">context</a> definitions have
-      been removed, all <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> and
-      <a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">compact IRIs</a> have been expanded to absolute
-      <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>, and all
-      <a class="tref internalDFN" title="json-ld-value" href="#dfn-json-ld-value">JSON-LD values</a> are expressed in
-      <a class="tref internalDFN" title="array" href="#dfn-array">arrays</a> in <a class="tref internalDFN" title="expanded-form" href="#dfn-expanded-form">expanded form</a>. While the
-      output is more verbose and difficult for a human to read, it establishes a
-      baseline that makes JSON-LD processing easier because of its very regular
-      structure.</p>
-  </section> <!-- end of Expansion -->
-
-  <section class="informative" id="compaction">
-    <h3><span class="secno">2.2 </span>Compaction</h3><p><em>This section is non-normative.</em></p>
-
-    <p>While <a class="tref internalDFN" title="expansion" href="#dfn-expansion">expansion</a> removes <a class="tref internalDFN" title="context" href="#dfn-context">context</a> from a given
-      input, <a class="tref internalDFN" title="compaction" href="#dfn-compaction">compaction's</a> primary function is to
-      perform the opposite operation: to express a given input according to
-      a particular <a class="tref internalDFN" title="context" href="#dfn-context">context</a>. <dfn title="compaction" id="dfn-compaction">Compaction</dfn> applies a
-      <a class="tref internalDFN" title="context" href="#dfn-context">context</a> that specifically tailors the way information is
-      expressed for a particular person or application. This simplifies applications
-      that consume JSON or JSON-LD by expressing the data in application-specific
-      terms, and it makes the data easier to read by humans.</p>
-
-    <p><a class="tref internalDFN" title="compaction" href="#dfn-compaction">Compaction</a> uses a developer-supplied <a class="tref internalDFN" title="context" href="#dfn-context">context</a> to
-      shorten <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> to <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> and
-      <a class="tref internalDFN" title="json-ld-value" href="#dfn-json-ld-value">JSON-LD values</a> expressed in
-      <a class="tref internalDFN" title="expanded-form" href="#dfn-expanded-form">expanded form</a> to simple values such as <a class="tref internalDFN" title="string" href="#dfn-string">strings</a>
-      or <a class="tref internalDFN" title="number" href="#dfn-number">numbers</a>.</p>
-
-    <p>For example, assume the following expanded JSON-LD input document:</p>
-
-    <div class="example"><div class="example-title"><span>Example 4</span>: Expanded sample document</div><pre class="example">[
-  {
-    "@id": "http://me.markus-lanthaler.com/",
-    "http://xmlns.com/foaf/0.1/name": [
-      { "@value": "Markus Lanthaler" }
-    ],
-    "http://xmlns.com/foaf/0.1/homepage": [
-      { "@id": "http://www.markus-lanthaler.com/" }
-    ]
-  }
-]</pre></div>
-
-    <p>Additionally, assume the following developer-supplied JSON-LD
-      <a class="tref internalDFN" title="context" href="#dfn-context">context</a>:</p>
-
-    <div class="example"><div class="example-title"><span>Example 5</span>: JSON-LD 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 <a href="#compaction-algorithm">Compaction Algorithm</a>
-      (<code class="idlMemberName"><a href="#widl-JsonLdProcessor-compact-Promise-any-input-JsonLdContext-context-JsonLdOptions-options">compact</a></code>
-      operation) 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 6</span>: Compacted sample 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"
-    }
-  },
-  "@id": "http://me.markus-lanthaler.com/",
-  "name": "Markus Lanthaler",
-  "homepage": "http://www.markus-lanthaler.com/"
-}</pre></div>
-
-    <p>Note that all <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> have been compacted to
-      <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> as specified in the <a class="tref internalDFN" title="context" href="#dfn-context">context</a>,
-      which has been injected into the output. While compacted output is
-      useful to humans, it is also used to generate structures that are easy to
-      program against. Compaction enables developers to map any expanded document
-      into an application-specific compacted document. While the context provided
-      above mapped <code>http://xmlns.com/foaf/0.1/name</code> to <code>name</code>, it
-      could also have been mapped to any other term provided by the developer.</p>
-  </section> <!-- end of Compaction -->
-
-  <section class="informative" id="flattening">
-    <h3><span class="secno">2.3 </span>Flattening</h3><p><em>This section is non-normative.</em></p>
-
-    <p>While expansion ensures that a document is in a uniform structure,
-      flattening goes a step further to ensure that the shape of the data
-      is deterministic. In expanded documents, the properties of a single
-      <a class="tref internalDFN" title="node" href="#dfn-node">node</a> may be spread across a number of different
-      <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON objects</a>. By flattening a
-      document, all properties of a <a class="tref internalDFN" title="node" href="#dfn-node">node</a> are collected in a single
-      <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> and all <a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">blank nodes</a>
-      are labeled with a <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifier</a>. This may drastically
-      simplify the code required to process JSON-LD data in certain applications.</p>
-
-    <p>For example, assume the following JSON-LD input document:</p>
-
-    <div class="example"><div class="example-title"><span>Example 7</span>: Sample JSON-LD document</div><pre class="example">{
-  "@context": {
-    "name": "http://xmlns.com/foaf/0.1/name",
-    "knows": "http://xmlns.com/foaf/0.1/knows"
-  },
-  "@id": "http://me.markus-lanthaler.com/",
-  "name": "Markus Lanthaler",
-  "knows": [
-    {
-      "name": "Dave Longley"
-    }
-  ]
-}</pre></div>
-
-    <p>Running the <a href="#flattening-algorithm">Flattening algorithm</a>
-      (<code class="idlMemberName"><a href="#widl-JsonLdProcessor-flatten-Promise-any-input-JsonLdContext-context-JsonLdOptions-options">flatten</a></code>
-      operation) with a context set to <a class="tref internalDFN" title="null" href="#dfn-null">null</a> to prevent compaction
-      returns the following document:</p>
-
-    <div class="example"><div class="example-title"><span>Example 8</span>: Flattened sample document in expanded form</div><pre class="example">[
-  {
-    "@id": "_:t0",
-    "http://xmlns.com/foaf/0.1/name": [
-      { "@value": "Dave Longley" }
-    ]
-  },
-  {
-    "@id": "http://me.markus-lanthaler.com/",
-    "http://xmlns.com/foaf/0.1/name": [
-      { "@value": "Markus Lanthaler" }
-    ],
-    "http://xmlns.com/foaf/0.1/knows": [
-      { "@id": "_:t0" }
-    ]
-  }
-]</pre></div>
-
-    <p>Note how in the output above all properties of a <a class="tref internalDFN" title="node" href="#dfn-node">node</a> are collected in a
-      single <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> and how the <a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">blank node</a> representing
-      "Dave Longley" has been assigned the <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifier</a>
-      <code>_:t0</code>.</p>
-
-    <p>To make it easier for humans to read or for certain applications to
-      process it, a flattened document can be compacted by passing a context. Using
-      the same context as the input document, the flattened and compacted document
-      looks as follows:</p>
-
-    <div class="example"><div class="example-title"><span>Example 9</span>: Flattened and compacted sample document</div><pre class="example">{
-  "@context": {
-    "name": "http://xmlns.com/foaf/0.1/name",
-    "knows": "http://xmlns.com/foaf/0.1/knows"
-  },
-  "@graph": [
-    {
-      "@id": "_:t0",
-      "name": "Dave Longley"
-    },
-    {
-      "@id": "http://me.markus-lanthaler.com/",
-      "name": "Markus Lanthaler",
-      "knows": { "@id": "_:t0" }
-    }
-  ]
-}</pre></div>
-
-    <p>Please note that the result of flattening and compacting a document
-      is always a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> which contains an <code>@graph</code>
-      member that represents the <a class="tref internalDFN" title="default-graph" href="#dfn-default-graph">default graph</a>.</p>
-  </section> <!-- end of Flattening -->
-
-  <section class="informative" id="rdf-serialization-deserialization">
-    <h3><span class="secno">2.4 </span>RDF Serialization/Deserialization</h3><p><em>This section is non-normative.</em></p>
-
-    <p>JSON-LD can be used to serialize RDF data as described in
-      [<cite><a class="bibref" href="#bib-RDF11-CONCEPTS">RDF11-CONCEPTS</a></cite>]. This ensures that data can be round-tripped to and from
-      any RDF syntax without any loss in fidelity.</p>
-
-    <p>For example, assume the following RDF input serialized in Turtle [<cite><a class="bibref" href="#bib-TURTLE">TURTLE</a></cite>]:</p>
-
-    <div class="example"><div class="example-title"><span>Example 10</span>: Sample Turtle document</div><pre class="example">&lt;http://me.markus-lanthaler.com/&gt; &lt;http://xmlns.com/foaf/0.1/name&gt; "Markus Lanthaler" .
-&lt;http://me.markus-lanthaler.com/&gt; &lt;http://xmlns.com/foaf/0.1/homepage&gt; &lt;http://www.markus-lanthaler.com/&gt; .</pre></div>
-
-    <p>Using the <a href="#serialize-rdf-as-json-ld-algorithm">Serialize RDF as JSON-LD algorithm</a>
-      a developer could transform this document into expanded JSON-LD:</p>
-
-    <div class="example"><div class="example-title"><span>Example 11</span>: Sample Turtle document converted to JSON-LD</div><pre class="example">[
-  {
-    "@id": "http://me.markus-lanthaler.com/",
-    "http://xmlns.com/foaf/0.1/name": [
-      { "@value": "Markus Lanthaler" }
-    ],
-    "http://xmlns.com/foaf/0.1/homepage": [
-      { "@id": "http://www.markus-lanthaler.com/" }
-    ]
-  }
-]</pre></div>
-
-    <p>Note that the output above could easily be compacted using the technique outlined
-      in the previous section. It is also possible to deserialize the JSON-LD document back
-      to RDF using the <a href="#deserialize-json-ld-to-rdf-algorithm">Deserialize JSON-LD to RDF algorithm</a>.</p>
-  </section> <!-- end of RDF Serialization/Deserialization -->
-</section> <!-- end of Features section -->
-
-
-<section id="conformance">
-  <!--OddPage--><h2><span class="secno">3. </span>Conformance</h2>
-
-  <p>All examples and notes as well as sections marked as non-normative in this
-    specification are non-normative. Everything else in this specification is
-    normative.</p>
-
-  <p>The keywords <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="SHOULD">SHOULD</em>, <em class="rfc2119" title="SHOULD NOT">SHOULD NOT</em>, <em class="rfc2119" title="RECOMMENDED">RECOMMENDED</em>,
-    <em class="rfc2119" title="MAY">MAY</em>, and <em class="rfc2119" title="OPTIONAL">OPTIONAL</em> in this specification are to be interpreted as described
-    in [<cite><a class="bibref" href="#bib-RFC2119">RFC2119</a></cite>].</p>
-
-  <p>There are three classes of products that can claim conformance to this
-    specification: <a class="tref internalDFN" title="json-ld-processor" href="#dfn-json-ld-processor">JSON-LD Processors</a>,
-    <a class="tref internalDFN" title="json-ld-api-implementation" href="#dfn-json-ld-api-implementation">JSON-LD API Implementations</a>,
-    and <a class="tref internalDFN" title="rdf-serializer/deserializer" href="#dfn-rdf-serializer/deserializer">RDF Serializers/Deserializers</a>.</p>
-
-  <p>A conforming <dfn title="json-ld-processor" id="dfn-json-ld-processor">JSON-LD Processor</dfn> is a system which can perform the
-    <a href="#expansion-algorithm">Expansion</a>, <a href="#compaction-algorithm">Compaction</a>,
-    and <a href="#flattening-algorithm">Flattening</a> operations defined in this specification.</p>
-
-  <p>A conforming <dfn title="json-ld-api-implementation" id="dfn-json-ld-api-implementation">JSON-LD API Implementation</dfn> is a conforming <a class="tref internalDFN" title="json-ld-processor" href="#dfn-json-ld-processor">JSON-LD Processor</a>
-    that exposes the <a href="#the-application-programming-interface">Application Programming Interface (API)</a>
-    defined in this specification. It <em class="rfc2119" title="MUST">MUST</em> implement the <code>json-ld-1.0</code>
-    processing mode (for further details, see the
-    <code class="idlMemberName"><a href="#widl-JsonLdOptions-processingMode">processingMode</a></code>
-    option of <a href="#idl-def-JsonLdOptions" class="idlType"><code>JsonLdOptions</code></a>).</p>
-
-  <p><a class="tref internalDFN" title="json-ld-processor" href="#dfn-json-ld-processor">JSON-LD Processors</a> and
-    <a class="tref internalDFN" title="json-ld-api-implementation" href="#dfn-json-ld-api-implementation">API Implementations</a> <em class="rfc2119" title="MUST NOT">MUST NOT</em>
-    attempt to correct malformed <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> or language tags;
-    however, they <em class="rfc2119" title="MAY">MAY</em> issue validation warnings. IRIs are not modified other
-    than conversion between <a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">relative</a> and
-    <a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">absolute IRIs</a>.</p>
-
-  <p>A conforming <dfn title="rdf-serializer/deserializer" id="dfn-rdf-serializer/deserializer">RDF Serializer/Deserializer</dfn> is a system that can
-    <a href="#deserialize-json-ld-to-rdf-algorithm">deserialize JSON-LD to RDF</a> and
-    <a href="#serialize-rdf-as-json-ld-algorithm">serialize RDF as JSON-LD</a> as
-    defined in this specification.</p>
-
-  <p>The algorithms in this specification are generally written with more concern for clarity
-    than efficiency. Thus, <a class="tref internalDFN" title="json-ld-processor" href="#dfn-json-ld-processor">JSON-LD Processors</a>
-    and <a class="tref internalDFN" title="json-ld-api-implementation" href="#dfn-json-ld-api-implementation">API Implementations</a> may
-    implement the algorithms given in this specification in any way desired,
-    so long as the end result is indistinguishable from the result that would
-    be obtained by the specification's algorithms.</p>
-
-  <div class="note"><div class="note-title" role="heading" aria-level="3"><span>Note</span></div><p class="">Implementers can partially check their level of conformance to
-    this specification by successfully passing the test cases of the JSON-LD test
-    suite [<cite><a class="bibref" href="#bib-JSON-LD-TESTS">JSON-LD-TESTS</a></cite>]. Note, however, that passing all the tests in the test
-    suite does not imply complete conformance to this specification. It only implies
-    that the implementation conforms to aspects tested by the test suite.</p></div>
-</section> <!-- end of Conformance section -->
-
-
-<section id="general-terminology">
-  <!--OddPage--><h2><span class="secno">4. </span>General Terminology</h2>
-
-  <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. In contrast to JSON,
-      in JSON-LD the keys in an object must be unique.</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 specifically defined (see
-      <cite><a href="http://www.w3.org/TR/2013/CR-json-ld-20130822/#sets-and-lists">Sets and Lists</a></cite> in
-      the JSON-LD specification [<cite><a class="bibref" href="#bib-JSON-LD">JSON-LD</a></cite>]).</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. A key-value pair in the
-      <code>@context</code> where the value, or the <code>@id</code> of the
-      value, is <a class="tref internalDFN" title="null" href="#dfn-null">null</a> explicitly decouples a term's association
-      with an <abbr title="Internationalized Resource Identifier">IRI</abbr>. 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>
-
-  <p>Furthermore, the following terminology is used throughout this document:</p>
-
-  <dl>
-    <dt><dfn title="keyword" id="dfn-keyword">keyword</dfn></dt>
-    <dd>A JSON key that is specific to JSON-LD, specified in the section
-      <cite><a href="http://www.w3.org/TR/2013/CR-json-ld-20130822/#syntax-tokens-and-keywords">Syntax Tokens and Keywords</a></cite>
-      of the JSON-LD specification [<cite><a class="bibref" href="#bib-JSON-LD">JSON-LD</a></cite>].</dd>
-    <dt><dfn title="context" id="dfn-context">context</dfn></dt>
-    <dd>A set of rules for interpreting a JSON-LD document as specified in the section
-      <cite><a href="http://www.w3.org/TR/2013/CR-json-ld-20130822/#the-context">The Context</a></cite> of the JSON-LD
-      specification [<cite><a class="bibref" href="#bib-JSON-LD">JSON-LD</a></cite>].</dd>
-    <dt><dfn title="json-ld-document" id="dfn-json-ld-document">JSON-LD document</dfn></dt>
-    <dd>A <a class="tref internalDFN" title="json-ld-document" href="#dfn-json-ld-document">JSON-LD document</a> is a serialization of a collection of
-      <a class="tref internalDFN" title="graph" href="#dfn-graph">graphs</a> and comprises exactly one
-      <a class="tref internalDFN" title="default-graph" href="#dfn-default-graph">default graph</a> and zero or more <a class="tref internalDFN" title="named-graph" href="#dfn-named-graph">named graphs</a>.</dd>
-    <dt><dfn title="named-graph" id="dfn-named-graph">named graph</dfn></dt>
-    <dd>A named graph is a pair consisting of 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>
-      (the <dfn title="graph-name" id="dfn-graph-name">graph name</dfn>) and a <a class="tref internalDFN" title="graph" href="#dfn-graph">graph</a>.</dd>
-    <dt><dfn title="default-graph" id="dfn-default-graph">default graph</dfn></dt>
-    <dd>The default graph is the only graph in a JSON-LD document which has no <a class="tref internalDFN" title="graph-name" href="#dfn-graph-name">graph name</a>.</dd>
-    <dt><dfn title="graph" id="dfn-graph">Graph</dfn></dt>
-    <dd>A labeled directed graph, i.e., a set of <a class="tref internalDFN" title="node" href="#dfn-node">nodes</a>
-      connected by <a class="tref internalDFN" title="edge" href="#dfn-edge">edges</a>,
-      as specified in the <cite><a href="http://www.w3.org/TR/2013/CR-json-ld-20130822/#data-model">Data Model</a></cite>
-      section of the JSON-LD specification [<cite><a class="bibref" href="#bib-JSON-LD">JSON-LD</a></cite>].</dd>
-    <dt><dfn title="edge" id="dfn-edge">edge</dfn></dt>
-    <dd>Every <a class="tref internalDFN" title="edge" href="#dfn-edge">edge</a> 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>. Whenever possible, an
-      <a class="tref internalDFN" title="edge" href="#dfn-edge">edge</a> should be labeled with an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</dd>
-    <dt><dfn title="node" id="dfn-node">node</dfn></dt>
-    <dd>Every <a class="tref internalDFN" title="node" href="#dfn-node">node</a> is 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>.</dd>
-    <dt><dfn title="iri" id="dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></dfn></dt>
-    <dd>An <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> (Internationalized Resource Identifier) is a string that conforms to the syntax
-      defined in [<cite><a class="bibref" href="#bib-RFC3987">RFC3987</a></cite>].</dd>
-    <dt><dfn title="absolute-iri" id="dfn-absolute-iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></dfn></dt>
-    <dd>An absolute <abbr title="Internationalized Resource Identifier">IRI</abbr> is defined in [<cite><a class="bibref" href="#bib-RFC3987">RFC3987</a></cite>] containing a <em>scheme</em> along with a <em>path</em> and
-      optional <em>query</em> and fragment segments.</dd>
-    <dt><dfn title="relative-iri" id="dfn-relative-iri">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></dfn></dt>
-    <dd>A relative <abbr title="Internationalized Resource Identifier">IRI</abbr> 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>.</dd>
-    <dt><dfn title="blank-node" id="dfn-blank-node">blank node</dfn></dt>
-    <dd>A <a class="tref internalDFN" title="node" href="#dfn-node">node</a> in a <a class="tref internalDFN" title="graph" href="#dfn-graph">graph</a> that is neither an
-      <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>, nor a <a class="tref internalDFN" title="json-ld-value" href="#dfn-json-ld-value">JSON-LD value</a>, nor a <a class="tref internalDFN" title="list" href="#dfn-list">list</a>.</dd>
-    <dt><dfn title="blank-node-identifier" id="dfn-blank-node-identifier">blank node identifier</dfn></dt>
-    <dd>A blank node identifier 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 JSON-LD document. Blank node identifiers
-      begin with <code>_:</code>.</dd>
-    <dt><dfn title="json-ld-value" id="dfn-json-ld-value">JSON-LD value</dfn></dt>
-    <dd>A <a class="tref internalDFN" title="json-ld-value" href="#dfn-json-ld-value">JSON-LD value</a> 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>.</dd>
-    <dt><dfn title="typed-value" id="dfn-typed-value">typed value</dfn></dt>
-    <dd>A <a class="tref internalDFN" title="typed-value" href="#dfn-typed-value">typed value</a> consists of a value, which is a string, and a type,
-      which is an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</dd>
-    <dt><dfn title="language-tagged-string" id="dfn-language-tagged-string">language-tagged string</dfn></dt>
-    <dd>A <a class="tref internalDFN" title="language-tagged-string" href="#dfn-language-tagged-string">language-tagged string</a> 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 must be well-formed according to
-      <a href="http://tools.ietf.org/html/bcp47#section-2.2.9">section 2.2.9 Classes of Conformance</a>
-      of [<cite><a class="bibref" href="#bib-BCP47">BCP47</a></cite>], and is normalized to lowercase.</dd>
-    <dt><dfn title="list" id="dfn-list">list</dfn></dt>
-    <dd>A <a class="tref internalDFN" title="list" href="#dfn-list">list</a> is an ordered sequence of <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>.</dd>
-  </dl>
-</section> <!-- end of General Terminology section -->
-
-
-<section id="algorithm-terms">
-  <!--OddPage--><h2><span class="secno">5. </span>Algorithm Terms</h2>
-
-  <dl>
-    <dt><dfn title="active-graph" id="dfn-active-graph">active graph</dfn></dt>
-    <dd>The name of the currently active graph that the processor should use when
-      processing.</dd>
-    <dt><dfn title="active-subject" id="dfn-active-subject">active subject</dfn></dt>
-    <dd>The currently active subject that the processor should use when
-      processing.</dd>
-    <dt><dfn title="active-property" id="dfn-active-property">active property</dfn></dt>
-    <dd>The currently active <a class="tref internalDFN" title="property" href="#dfn-property">property</a> or <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> that
-      the processor should use when processing.</dd>
-    <dt><dfn title="active-context" id="dfn-active-context">active context</dfn></dt>
-    <dd>A context that is used to resolve <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> while
-      the processing algorithm is running.</dd>
-    <dt><dfn title="local-context" id="dfn-local-context">local context</dfn></dt>
-    <dd>A context that is specified within a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>,
-      specified via the <code>@context</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>.</dd>
-    <dt><dfn title="json-ld-input" id="dfn-json-ld-input">JSON-LD input</dfn></dt>
-    <dd>The JSON-LD data structure that is provided as input to the algorithm.</dd>
-    <dt><dfn title="term" id="dfn-term">term</dfn></dt>
-    <dd>A <a class="tref internalDFN" title="term" href="#dfn-term">term</a> is a short word defined in a context that may be expanded to
-      an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a></dd>
-    <dt><dfn title="compact-iri" id="dfn-compact-iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></dfn></dt>
-    <dd>A compact <abbr title="Internationalized Resource Identifier">IRI</abbr> has the form of <dfn title="prefix" id="dfn-prefix">prefix</dfn>:<em>suffix</em> and is used as a way
-      of expressing an <abbr title="Internationalized Resource Identifier">IRI</abbr> without needing to define separate <a class="tref internalDFN" title="term" href="#dfn-term">term</a> definitions for
-      each <abbr title="Internationalized Resource Identifier">IRI</abbr> contained within a common vocabulary identified by <a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a>.</dd>
-    <dt><dfn title="node-object" id="dfn-node-object">node object</dfn></dt>
-    <dd>A <a class="tref internalDFN" title="node-object" href="#dfn-node-object">node object</a> 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="graph" href="#dfn-graph">graph</a> serialized by the
-      JSON-LD document. 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 the JSON-LD <a class="tref internalDFN" title="context" href="#dfn-context">context</a> and:
-      <ul>
-        <li>it does not contain the <code>@value</code>, <code>@list</code>,
-          or <code>@set</code> keywords, or</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>
-    </dd>
-    <dt><dfn title="value-object" id="dfn-value-object">value object</dfn></dt>
-    <dd>A <a class="tref internalDFN" title="value-object" href="#dfn-value-object">value object</a> is a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> that has an <code>@value</code>
-      member.</dd>
-    <dt><dfn title="list-object" id="dfn-list-object">list object</dfn></dt>
-    <dd>A <a class="tref internalDFN" title="list-object" href="#dfn-list-object">list object</a> is a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> that has an <code>@list</code>
-      member.</dd>
-    <dt><dfn title="set-object" id="dfn-set-object">set object</dfn></dt>
-    <dd>A <a class="tref internalDFN" title="set-object" href="#dfn-set-object">set object</a> is a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> that has an <code>@set</code>
-      member.</dd>
-    <dt><dfn title="scalar" id="dfn-scalar">scalar</dfn></dt>
-    <dd>A scalar is either a JSON <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>,
-      or <a class="tref internalDFN" title="false" href="#dfn-false">false</a>.</dd>
-    <dt><dfn title="rdf-subject" id="dfn-rdf-subject">RDF subject</dfn></dt>
-    <dd>A <a class="tref externalDFN" title="subject" href="http://www.w3.org/TR/rdf11-concepts/#dfn-subject">subject</a>
-      as specified by [<cite><a class="bibref" href="#bib-RDF11-CONCEPTS">RDF11-CONCEPTS</a></cite>].</dd>
-    <dt><dfn title="rdf-predicate" id="dfn-rdf-predicate">RDF predicate</dfn></dt>
-    <dd>A <a class="tref externalDFN" title="predicate" href="http://www.w3.org/TR/rdf11-concepts/#dfn-predicate">predicate</a>
-      as specified by [<cite><a class="bibref" href="#bib-RDF11-CONCEPTS">RDF11-CONCEPTS</a></cite>].</dd>
-    <dt><dfn title="rdf-object" id="dfn-rdf-object">RDF object</dfn></dt>
-    <dd>An <a class="tref externalDFN" title="object" href="http://www.w3.org/TR/rdf11-concepts/#dfn-object">object</a>
-      as specified by [<cite><a class="bibref" href="#bib-RDF11-CONCEPTS">RDF11-CONCEPTS</a></cite>].</dd>
-    <dt><dfn title="rdf-triple" id="dfn-rdf-triple">RDF triple</dfn></dt>
-    <dd>A <a class="tref externalDFN" title="triple" href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple">triple</a>
-      as specified by [<cite><a class="bibref" href="#bib-RDF11-CONCEPTS">RDF11-CONCEPTS</a></cite>].</dd>
-    <dt><dfn title="rdf-dataset" id="dfn-rdf-dataset">RDF dataset</dfn></dt>
-    <dd>A <a class="tref externalDFN" title="dataset" href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-dataset">dataset</a>
-      as specified by [<cite><a class="bibref" href="#bib-RDF11-CONCEPTS">RDF11-CONCEPTS</a></cite>] representing a collection of
-      <a class="tref externalDFN" title="rdf-graphs" href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-graph">RDF graphs</a>.</dd>
-  </dl>
-</section> <!-- end of Algorithm Terms section -->
-
-
-<section id="context-processing-algorithms">
-  <!--OddPage--><h2><span class="secno">6. </span>Context Processing Algorithms</h2>
-
-  <section id="context-processing-algorithm">
-    <h3><span class="secno">6.1 </span>Context Processing Algorithm</h3>
-
-    <p>When processing a JSON-LD data structure, each processing rule is applied
-      using information provided by the <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>. This
-      section describes how to produce an <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>.</p>
-
-    <p>The <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> contains the active
-      <dfn title="term-definition" id="dfn-term-definition">term definitions</dfn> which specify how
-      properties and values have to be interpreted as well as the current <dfn title="base-iri" id="dfn-base-iri">base <abbr title="Internationalized Resource Identifier">IRI</abbr></dfn>,
-      the <dfn title="vocabulary-mapping" id="dfn-vocabulary-mapping">vocabulary mapping</dfn> and the <dfn title="default-language" id="dfn-default-language">default language</dfn>. Each
-      <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> consists of an <dfn title="iri-mapping" id="dfn-iri-mapping"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</dfn>, a boolean
-      flag <dfn title="reverse-property" id="dfn-reverse-property">reverse property</dfn>, an optional <dfn title="type-mapping" id="dfn-type-mapping">type mapping</dfn>
-      or <dfn title="language-mapping" id="dfn-language-mapping">language mapping</dfn>, and an optional  <dfn title="container-mapping" id="dfn-container-mapping">container mapping</dfn>.
-      A <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> can not only be used to map a <a class="tref internalDFN" title="term" href="#dfn-term">term</a>
-      to an <abbr title="Internationalized Resource Identifier">IRI</abbr>, but also to map a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> to a <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>,
-      in which case it is referred to as a <dfn title="keyword-alias" id="dfn-keyword-alias">keyword alias</dfn>.</p>
-
-    <p>When processing, the <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> is initialized
-      without any <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definitions</a>,
-      <a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">vocabulary mapping</a>, or <a class="tref internalDFN" title="default-language" href="#dfn-default-language">default language</a>.
-      If a <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a> is encountered during processing, a new
-      <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> is created by cloning the existing
-      <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>. Then the information from the
-      <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a> is merged into the new <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>.
-      Given that <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local contexts</a> may contain
-      references to remote contexts, this includes their retrieval.</p>
-
-    <section class="informative">
-      <h4 id="overview">Overview</h4><p><em>This section is non-normative.</em></p>
-
-      <p>First we prepare a new <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> <i>result</i> by cloning
-        the current <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>. Then we normalize the form of the passed
-        <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a> to an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>.
-        <a class="tref internalDFN" title="local-context" href="#dfn-local-context">Local contexts</a> may be in the form of a
-        <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>, a <a class="tref internalDFN" title="string" href="#dfn-string">string</a>, or an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> containing
-        a combination of the two. Finally we process each <a class="tref internalDFN" title="context" href="#dfn-context">context</a> contained
-        in the <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a> <a class="tref internalDFN" title="array" href="#dfn-array">array</a> as follows.</p>
-
-      <p>If <a class="tref internalDFN" title="context" href="#dfn-context">context</a> is a <a class="tref internalDFN" title="string" href="#dfn-string">string</a>, it represents a reference to
-        a remote context. We dereference the remote context and replace <a class="tref internalDFN" title="context" href="#dfn-context">context</a>
-        with the value of the <code>@context</code> key of the top-level object in the
-        retrieved JSON-LD document. If there's no such key, an invalid remote context has
-        been detected. Otherwise, we process <a class="tref internalDFN" title="context" href="#dfn-context">context</a> by recursively using
-        this algorithm ensuring that there is no cyclical reference.</p>
-
-      <p>If <a class="tref internalDFN" title="context" href="#dfn-context">context</a> is a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>, we first update the
-        <a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">base <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, the <a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">vocabulary mapping</a>, and the
-        <a class="tref internalDFN" title="default-language" href="#dfn-default-language">default language</a> by processing three specific keywords:
-        <code>@base</code>, <code>@vocab</code>, and <code>@language</code>.
-        These are handled before any other keys in the <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a> because
-        they affect how the other keys are processed. Please note that <code>@base</code> is
-        ignored when processing remote contexts.</p>
-
-      <p>Then, for every other key in <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a>, we update
-        the <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> in <i>result</i>. Since
-        <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definitions</a> in a <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a>
-        may themselves contain <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>, we may need to recurse.
-        When doing so, we must ensure that there is no cyclical dependency,
-        which is an error. After we have processed any
-        <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> dependencies,
-        we update the current <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a>,
-        which may be a <a class="tref internalDFN" title="keyword-alias" href="#dfn-keyword-alias">keyword alias</a>.</p>
-
-      <p>Finally, we return <i>result</i> as the new <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>.</p>
-    </section>
-
-    <section>
-      <h4 id="algorithm">Algorithm</h4>
-
-      <p>This algorithm specifies how a new <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> is updated
-        with a <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a>. The algorithm takes three input variables:
-        an <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, a <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a>, and an  <a class="tref internalDFN" title="array" href="#dfn-array">array</a>
-        <i>remote contexts</i> which is used to detect cyclical context inclusions.
-        If <i>remote contexts</i> is not passed, it is initialized to an empty
-        <a class="tref internalDFN" title="array" href="#dfn-array">array</a>.</p>
-
-      <div class="issue atrisk"><div class="issue-title" role="heading" aria-level="5"><span>Feature at Risk 10</span>: Support for @base: null </div><div class="atrisk">
-        <p class="atrisk-head">Note: This feature is
-          <a href="http://www.w3.org/2005/10/Process-20051014/tr#cfi">"at risk"</a> and may
-          be removed from this specification based on feedback. Please send feedback to
-          <a href="mailto:public-rdf-comments@w3.org">public-rdf-comments@w3.org</a>.
-          For the current status see
-          <a href="http://www.w3.org/2011/rdf-wg/wiki/JSON-LD_Features_at_Risk">features "at risk" in JSON-LD 1.0</a></p>
-       <p>Unlike many other serialization formats, JSON-LD allows to specify that
-        there is no base <abbr title="Internationalized Resource Identifier">IRI</abbr> from within the document (by setting <code>@base</code> to
-        <a class="tref internalDFN" title="null" href="#dfn-null">null</a>). The result is that the algorithm for establishing a base <abbr title="Internationalized Resource Identifier">IRI</abbr>
-        as specified in <a href="http://tools.ietf.org/html/rfc3986#section-5.1">RFC3986 section 5.1</a>
-        is overridden so relative IRIs remain relative IRIs even in the case that an <abbr title="Internationalized Resource Identifier">IRI</abbr>
-        would be available in one of the outer layers (e.g., the <abbr title="Internationalized Resource Identifier">IRI</abbr> used to retrieve
-        the document or an application supplied base <abbr title="Internationalized Resource Identifier">IRI</abbr>). Based on implementer feedback,
-        the Working Group may decide to remove this feature from JSON-LD 1.0.</p>
-      </div></div>
-
-      <ol class="algorithm">
-        <li>Initialize <i>result</i> to the result of cloning
-          <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>.</li>
-        <li>If <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a> is not an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>,
-          set it to an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> containing only
-          <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a>.</li>
-        <li>
-          For each item <i>context</i> in <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a>:
-          <ol class="algorithm">
-            <li>If <i>context</i> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, set <i>result</i> to a
-              newly-initialized <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> and continue with the
-              next <i>context</i>. The <a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">base <abbr title="Internationalized Resource Identifier">IRI</abbr></a> of the
-              <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> is set to the <abbr title="Internationalized Resource Identifier">IRI</abbr> of the currently being processed
-              document (which might be different from the currently being processed context),
-              if available; otherwise to <a class="tref internalDFN" title="null" href="#dfn-null">null</a>. If set, the
-              <code class="idlMemberName"><a href="#widl-JsonLdOptions-base">base</a></code>
-              option of a <a class="tref internalDFN" title="json-ld-api-implementation" href="#dfn-json-ld-api-implementation">JSON-LD API Implementation</a> overrides the <a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">base <abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</li>
-            <li>If <i>context</i> is a <a class="tref internalDFN" title="string" href="#dfn-string">string</a>,
-              <ol class="algorithm">
-                <li>Set <i>context</i> to the result of resolving <i>value</i> against
-                  the base <abbr title="Internationalized Resource Identifier">IRI</abbr> which is established as specified in
-                  <cite><a href="http://tools.ietf.org/html/rfc3986#section-5.1">section 5.1 Establishing a Base URI</a></cite>
-                  of [<cite><a class="bibref" href="#bib-RFC3986">RFC3986</a></cite>]. Only the basic algorithm in
-                  <cite><a href="http://tools.ietf.org/html/rfc3986#section-5.2">section 5.2</a></cite>
-                  of [<cite><a class="bibref" href="#bib-RFC3986">RFC3986</a></cite>] is used; neither
-                  <cite><a href="http://tools.ietf.org/html/rfc3986#section-6.2.2">Syntax-Based Normalization</a></cite> nor
-                  <cite><a href="http://tools.ietf.org/html/rfc3986#section-6.2.3">Scheme-Based Normalization</a></cite>
-                  are performed. Characters additionally allowed in <abbr title="Internationalized Resource Identifier">IRI</abbr>
-                  references are treated in the same way that unreserved
-                  characters are treated in URI references, per
-                  <cite><a href="http://tools.ietf.org/html/rfc3987#section-6.5">section 6.5</a></cite>
-                  of [<cite><a class="bibref" href="#bib-RFC3987">RFC3987</a></cite>].</li>
-                <li>If <i>context</i> is in the <i>remote contexts</i> array, a
-                  <code class="error"><a href="#idl-def-JsonLdErrorCode.recursive-context-inclusion">recursive context inclusion</a></code>
-                  error has been detected and processing is aborted;
-                  otherwise, add <i>context</i> to <i>remote contexts</i>.</li>
-                <li>Dereference <i>context</i>. If <i>context</i> cannot be dereferenced, a
-                  <code class="error"><a href="#idl-def-JsonLdErrorCode.loading-remote-context-failed">loading remote context failed</a></code>
-                  error has been detected and processing is aborted. If the dereferenced document has no
-                  top-level <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> with an <code>@context</code> member, an
-                  <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid-remote-context">invalid remote context</a></code>
-                  has been detected and processing is aborted; otherwise,
-                  set <i>context</i> to the value of that member.</li>
-                <li>Set <i>result</i> to the result of recursively calling this algorithm,
-                  passing <i>result</i> for <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>,
-                  <i>context</i> for <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a>, and <i>remote contexts</i>.</li>
-                <li>Continue with the next <i>context</i>.</li>
-              </ol>
-            </li>
-            <li>If <i>context</i> is not a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>, an
-              <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid-local-context">invalid local context</a></code>
-              error has been detected and processing is aborted.</li>
-            <li>If <i>context</i> has an <code>@base</code> key and <i>remote contexts</i> is empty, i.e., the currently
-              being processed context is not a remote context:
-              <ol class="algorithm">
-                <li>Initialize <i>value</i> to the value associated with the
-                  <code>@base</code> key.</li>
-                <li>If <i>value</i> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, remove the
-                  <a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">base <abbr title="Internationalized Resource Identifier">IRI</abbr></a> of <i>result</i>.</li>
-                <li>Otherwise, if <i>value</i> is an <a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
-                  the <a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">base <abbr title="Internationalized Resource Identifier">IRI</abbr></a> of <i>result</i> is set to <i>value</i>.</li>
-                <li>Otherwise, if <i>value</i> is a <a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a> and
-                  the <a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">base <abbr title="Internationalized Resource Identifier">IRI</abbr></a> of <i>result</i> is not <a class="tref internalDFN" title="null" href="#dfn-null">null</a>,
-                  set the <a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">base <abbr title="Internationalized Resource Identifier">IRI</abbr></a> of <i>result</i> to the result of
-                  resolving <i>value</i> against the current <a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">base <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
-                  of <i>result</i>.</li>
-                <li>Otherwise, an
-                  <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid-base-IRI">invalid base <abbr title="Internationalized Resource Identifier">IRI</abbr></a></code>
-                  error has been detected and processing is aborted.</li>
-              </ol>
-            </li>
-            <li>If <i>context</i> has an <code>@vocab</code> key:
-              <ol class="algorithm">
-                <li>Initialize <i>value</i> to the value associated with the
-                  <code>@vocab</code> key.</li>
-                <li>If <i>value</i> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, remove
-                  any <a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">vocabulary mapping</a> from <i>result</i>.</li>
-                <li>Otherwise, if <i>value</i> is an <a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">absolute <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>, the <a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">vocabulary mapping</a>
-                  of <i>result</i> is set to <i>value</i>. If it is not an
-                  <a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">absolute <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>, an
-                  <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid-vocab-mapping">invalid vocab mapping</a></code>
-                  error has been detected and processing is aborted.</li>
-              </ol>
-            </li>
-            <li>If <i>context</i> has an <code>@language</code> key:
-              <ol class="algorithm">
-                <li>Initialize <i>value</i> to the value associated with the
-                  <code>@language</code> key.</li>
-                <li>If <i>value</i> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, remove
-                  any <a class="tref internalDFN" title="default-language" href="#dfn-default-language">default language</a> from <i>result</i>.</li>
-                <li>Otherwise, if <i>value</i> is <a class="tref internalDFN" title="string" href="#dfn-string">string</a>, the
-                  <a class="tref internalDFN" title="default-language" href="#dfn-default-language">default language</a> of <i>result</i> is set to
-                  lowercased <i>value</i>. If it is not a <a class="tref internalDFN" title="string" href="#dfn-string">string</a>, an
-                  <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid-default-language">invalid default language</a></code>
-                  error has been detected and processing is aborted.</li>
-              </ol>
-            </li>
-            <li>Create a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> <i>defined</i> to use to keep
-              track of whether or not a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> has already been defined
-              or currently being defined during recursion.</li>
-            <li>For each <i>key</i>-<i>value</i> pair in <i>context</i> where
-              <i>key</i> is not <code>@base</code>, <code>@vocab</code>, or
-              <code>@language</code>, invoke the
-              <a href="#create-term-definition">Create Term Definition algorithm</a>,
-              passing <i>result</i> for <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>,
-              <i>context</i> for <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a>, <i>key</i>,
-              and <i>defined</i>.</li>
-          </ol>
-        </li>
-        <li>Return <i>result</i>.</li>
-      </ol>
-    </section>
-  </section> <!-- end of Context Processing -->
-
-  <section id="create-term-definition">
-    <h3><span class="secno">6.2 </span>Create Term Definition</h3>
-
-    <p>This algorithm is called from the
-      <a href="#context-processing-algorithm">Context Processing algorithm</a>
-      to create a <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> in the <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>
-      for a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> being processed in a <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a>.</p>
-
-    <section class="informative">
-      <h4 id="overview-1">Overview</h4><p><em>This section is non-normative.</em></p>
-
-      <p><a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">Term definitions</a> are created by
-        parsing the information in the given <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a> for the
-        given <a class="tref internalDFN" title="term" href="#dfn-term">term</a>. If the given <a class="tref internalDFN" title="term" href="#dfn-term">term</a> is a
-        <a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, it may omit an <a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a> by
-        depending on its <a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a> having its own
-        <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a>. If the <a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a> is
-        a key in the <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a>, then its <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a>
-        must first be created, through recursion, before continuing. Because a
-        <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> can depend on other
-        <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definitions</a>, a mechanism must
-        be used to detect cyclical dependencies. The solution employed here
-        uses a map, <i>defined</i>, that keeps track of whether or not a
-        <a class="tref internalDFN" title="term" href="#dfn-term">term</a> has been defined or is currently in the process of
-        being defined. This map is checked before any recursion is attempted.</p>
-
-      <p>After all dependencies for a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> have been defined, the rest of
-        the information in the <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a> for the given
-        <a class="tref internalDFN" title="term" href="#dfn-term">term</a> is taken into account, creating the appropriate
-        <a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a>, <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mapping</a>, and
-        <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a> or <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mapping</a> for the
-        <a class="tref internalDFN" title="term" href="#dfn-term">term</a>.</p>
-    </section>
-
-    <section>
-      <h4 id="algorithm-1">Algorithm</h4>
-
-      <p>The algorithm has four required inputs which are:
-        an <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, a <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a>,
-        a <i>term</i>, and a map <i>defined</i>.</p>
-
-      <ol class="algorithm">
-        <li>If <i>defined</i> contains the key <i>term</i> and the associated
-          value is <a class="tref internalDFN" title="true" href="#dfn-true">true</a> (indicating that the
-          <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> has already been created), return. Otherwise,
-          if the value is <a class="tref internalDFN" title="false" href="#dfn-false">false</a>, a
-          <code class="error"><a href="#idl-def-JsonLdErrorCode.cyclic-IRI-mapping">cyclic <abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a></code>
-          error has been detected and processing is aborted.</li>
-        <li>Set the value associated with <i>defined</i>'s <i>term</i> key to
-          <a class="tref internalDFN" title="false" href="#dfn-false">false</a>. This indicates that the <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a>
-          is now being created but is not yet complete.</li>
-        <li>Since <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a> cannot be overridden,
-          <i>term</i> must not be a <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>. Otherwise, a
-          <code class="error"><a href="#idl-def-JsonLdErrorCode.keyword-redefinition">keyword redefinition</a></code>
-          error has been detected and processing is aborted.</li>
-        <li>Remove any existing <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> for <i>term</i> in
-          <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>.</li>
-        <li>Initialize <i>value</i> to a copy of the value associated with the key
-          <i>term</i> in <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a>.</li>
-        <li>If <i>value</i> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a> or <i>value</i>
-          is a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> containing the key-value pair
-          <code>@id</code>-<a class="tref internalDFN" title="null" href="#dfn-null">null</a>, set the
-          <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> in <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> to
-          <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, set the value associated with <i>defined</i>'s
-          key <i>term</i> to <a class="tref internalDFN" title="true" href="#dfn-true">true</a>, and return.</li>
-        <li>Otherwise, if <i>value</i> is a <a class="tref internalDFN" title="string" href="#dfn-string">string</a>, convert it
-          to a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> consisting of a single member whose
-          key is <code>@id</code> and whose value is <i>value</i>.</li>
-        <li>Otherwise, <i>value</i> must be a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>, if not, an
-          <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid-term-definition">invalid term definition</a></code>
-          error has been detected and processing is aborted.</li>
-        <li>Create a new <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a>, <i>definition</i>.</li>
-        <li>If <i>value</i> contains the key <code>@type</code>:
-          <ol class="algorithm">
-            <li>Initialize <i>type</i> to the value associated with the
-              <code>@type</code> key, which must be a <a class="tref internalDFN" title="string" href="#dfn-string">string</a>. Otherwise, an
-              <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid-type-mapping">invalid type mapping</a></code>
-              error has been detected and processing is aborted.</li>
-            <li>Set <i>type</i> to the result of using the
-              <a href="#iri-expansion"><abbr title="Internationalized Resource Identifier">IRI</abbr> Expansion algorithm</a>, passing
-              <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, <i>type</i> for <i>value</i>,
-              <a class="tref internalDFN" title="true" href="#dfn-true">true</a> for <i>vocab</i>,
-              <a class="tref internalDFN" title="false" href="#dfn-false">false</a> for <i>document relative</i>,
-              <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a>, and <i>defined</i>. If the expanded <i>type</i> is
-              neither <code>@id</code>, nor <code>@vocab</code>, nor an <a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, an
-              <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid-type-mapping">invalid type mapping</a></code>
-              error has been detected and processing is aborted.</li>
-            <li>Set the <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a> for <i>definition</i> to <i>type</i>.</li>
-          </ol>
-        </li>
-        <li>If <i>value</i> contains the key <code>@reverse</code>:
-          <ol class="algorithm">
-            <li>If <i>value</i> contains an <code>@id</code>, member, an
-              <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid-reverse-property">invalid reverse property</a></code>
-              error has been detected and processing is aborted.</li>
-            <li>If the value associated with the <code>@reverse</code> key
-              is not a <a class="tref internalDFN" title="string" href="#dfn-string">string</a>, an
-              <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid-IRI-mapping">invalid <abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a></code>
-              error has been detected and processing is aborted.</li>
-            <li>Otherwise, set the <a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a> of <i>definition</i> to the
-              result of using the <a href="#iri-expansion"><abbr title="Internationalized Resource Identifier">IRI</abbr> Expansion algorithm</a>,
-              passing <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, the value associated with
-              the <code>@reverse</code> key for <i>value</i>, <a class="tref internalDFN" title="true" href="#dfn-true">true</a>
-              for <i>vocab</i>, <a class="tref internalDFN" title="false" href="#dfn-false">false</a> for <i>document relative</i>,
-              <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a>, and <i>defined</i>. If the result
-              is not an <a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, i.e., it contains no
-              colon (<code>:</code>), an
-              <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid-IRI-mapping">invalid <abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a></code>
-              error has been detected and processing is aborted.</li>
-            <li>If <i>value</i> contains an <code>@container</code> member,
-              set the <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mapping</a> of <i>definition</i>
-              to its value; if its value is neither <code>@set</code>, nor
-              <code>@index</code>, nor <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, an
-              <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid-reverse-property">invalid reverse property</a></code>
-              error has been detected (reverse properties only support set- and
-              index-containers) and processing is aborted.</li>
-            <li>Set the <a class="tref internalDFN" title="reverse-property" href="#dfn-reverse-property">reverse property</a> flag of <i>definition</i>
-              to <a class="tref internalDFN" title="true" href="#dfn-true">true</a>.</li>
-            <li>Set the <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> of <i>term</i> in
-              <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> to <i>definition</i> and the
-              value associated with <i>defined</i>'s key <i>term</i> to
-              <a class="tref internalDFN" title="true" href="#dfn-true">true</a> and return.</li>
-          </ol>
-        </li>
-        <li>Set the <a class="tref internalDFN" title="reverse-property" href="#dfn-reverse-property">reverse property</a> flag of <i>definition</i>
-          to <a class="tref internalDFN" title="false" href="#dfn-false">false</a>.</li>
-        <li>If <i>value</i> contains the key <code>@id</code> and its value
-          does not equal <i>term</i>:
-          <ol class="algorithm">
-            <li>If the value associated with the <code>@id</code> key is not a <a class="tref internalDFN" title="string" href="#dfn-string">string</a>, an
-              <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid-IRI-mapping">invalid <abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a></code>
-              error has been detected and processing is aborted.</li>
-            <li>Otherwise, set the <a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a> of <i>definition</i> to the
-              result of using the <a href="#iri-expansion"><abbr title="Internationalized Resource Identifier">IRI</abbr> Expansion algorithm</a>, passing
-              <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, the value associated with the <code>@id</code> key for
-              <i>value</i>, <a class="tref internalDFN" title="true" href="#dfn-true">true</a> for <i>vocab</i>,
-              <a class="tref internalDFN" title="false" href="#dfn-false">false</a> for <i>document relative</i>,
-              <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a>, and <i>defined</i>. If the resulting
-              <a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a> equals <code>@context</code>, an
-              <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid-keyword-alias">invalid keyword alias</a></code>
-              error has been detected and processing is aborted.</li>
-          </ol>
-        </li>
-        <li>
-          Otherwise if the <i>term</i> contains a colon (<code>:</code>):
-          <ol class="algorithm">
-            <li>If <i>term</i> is a <a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> with a
-              <a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a> that is a key in <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a>
-              a dependency has been found. Use this algorithm recursively passing
-              <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a>, the
-              <a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a> as <i>term</i>, and <i>defined</i>.</li>
-            <li>If <i>term</i>'s <a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a> has a
-              <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> in <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, set
-              the <a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a> of <i>definition</i> to the result of
-              concatenating the value associated with the <a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a>'s
-              <a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a> and the <i>term</i>'s <i>suffix</i>.</li>
-            <li>Otherwise, <i>term</i> is an <a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>. Set the
-              <a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a> of <i>definition</i> to <i>term</i>.</li>
-          </ol>
-        </li>
-        <li>Otherwise, if <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> has a
-          <a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">vocabulary mapping</a>, the <a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a>
-          of <i>definition</i> is set to the result of concatenating the value
-          associated with the <a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">vocabulary mapping</a> and <i>term</i>.
-          If it does not have a <a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">vocabulary mapping</a>, an
-          <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid-IRI-mapping">invalid <abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a></code>
-          error been detected and processing is aborted.</li>
-        <li>If <i>value</i> contains the key <code>@container</code>:
-          <ol class="algorithm">
-            <li>Initialize <i>container</i> to the value associated with the
-              <code>@container</code> key, which must be either
-              <code>@list</code>, <code>@set</code>, <code>@index</code>,
-              or <code>@language</code>. Otherwise, an
-              <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid-container-mapping">invalid container mapping</a></code> error
-              has been detected and processing is aborted.</li>
-            <li>Set the <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mapping</a> of <i>definition</i> to
-              <i>container</i>.</li>
-          </ol>
-        </li>
-        <li>If <i>value</i> contains the key <code>@language</code> and
-          does not contain the key <code>@type</code>:
-          <ol class="algorithm">
-            <li>Initialize <i>language</i> to the value associated with the
-              <code>@language</code> key, which must be either <a class="tref internalDFN" title="null" href="#dfn-null">null</a>
-              or a <a class="tref internalDFN" title="string" href="#dfn-string">string</a>. Otherwise, an
-              <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid-language-mapping">invalid language mapping</a></code>
-              error has been detected and processing is aborted.</li>
-            <li>If <i>language</i> is a <a class="tref internalDFN" title="string" href="#dfn-string">string</a> set it to
-              lowercased <i>language</i>. Set the <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mapping</a>
-              of <i>definition</i> to <i>language</i>.</li>
-          </ol>
-        </li>
-        <li>Set the <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> of <i>term</i> in
-          <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> to <i>definition</i> and set the value
-          associated with <i>defined</i>'s key <i>term</i> to
-          <a class="tref internalDFN" title="true" href="#dfn-true">true</a>.</li>
-      </ol>
-    </section>
-  </section> <!-- end of Term Creation -->
-
-  <section id="iri-expansion">
-    <h3><span class="secno">6.3 </span><abbr title="Internationalized Resource Identifier">IRI</abbr> Expansion</h3>
-
-    <p>In JSON-LD documents, some keys and values may represent
-      <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>. This section defines an algorithm for
-      transforming a <a class="tref internalDFN" title="string" href="#dfn-string">string</a> that represents an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> into
-      an <a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">absolute <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>.
-      It also covers transforming <a class="tref internalDFN" title="keyword-alias" href="#dfn-keyword-alias">keyword aliases</a>
-      into <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a>.</p>
-
-    <p><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> expansion may occur during context processing or during
-      any of the other JSON-LD algorithms. If <abbr title="Internationalized Resource Identifier">IRI</abbr> expansion occurs during context
-      processing, then the <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a> and its related <i>defined</i>
-      map from the <a href="#context-processing-algorithm">Context Processing algorithm</a>
-      are passed to this algorithm. This allows for <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a>
-      dependencies to be processed via the
-      <a href="#create-term-definition">Create Term Definition algorithm</a>.</p>
-
-    <section class="informative">
-      <h4 id="overview-2">Overview</h4><p><em>This section is non-normative.</em></p>
-
-      <p>In order to expand <i>value</i> to an <a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, we must
-        first determine if it is <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, a <a class="tref internalDFN" title="term" href="#dfn-term">term</a>, a
-        <a class="tref internalDFN" title="keyword-alias" href="#dfn-keyword-alias">keyword alias</a>, or some form of <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>. Based on what
-        we find, we handle the specific kind of expansion; for example, we expand
-        a <a class="tref internalDFN" title="keyword-alias" href="#dfn-keyword-alias">keyword alias</a> to a <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> and a <a class="tref internalDFN" title="term" href="#dfn-term">term</a>
-        to an <a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> according to its <a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a>
-        in the <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>. While inspecting <i>value</i> we
-        may also find that we need to create <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a>
-        dependencies because we're running this algorithm during context processing.
-        We can tell whether or not we're running during context processing by
-        checking <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a> against <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.
-        We know we need to create a <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> in the
-        <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> when <i>value</i> is
-        a key in the <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a> and the <i>defined</i> map
-        does not have a key for <i>value</i> with an associated value of
-        <a class="tref internalDFN" title="true" href="#dfn-true">true</a>. The <i>defined</i> map is used during
-        <a href="#context-processing-algorithm">Context Processing</a> to keep track of
-        which <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> have already been defined or are
-        in the process of being defined. We create a
-        <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> by using the
-        <a href="#create-term-definition">Create Term Definition algorithm</a>.</p>
-    </section>
-
-    <section>
-      <h4 id="algorithm-2">Algorithm</h4>
-
-      <p>The algorithm takes two required and four optional input variables. The
-        required inputs are an <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> and a <i>value</i>
-        to be expanded. The optional inputs are two flags,
-        <i>document relative</i> and <i>vocab</i>, that specifying
-        whether <i>value</i> can be interpreted as a <a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
-        against the document's base <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or the
-        <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context's</a>
-        <a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">vocabulary mapping</a>, respectively, and
-        a <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a> and a map <i>defined</i> to be used when
-        this algorithm is used during <a href="#context-processing-algorithm">Context Processing</a>.
-        If not passed, the two flags are set to <code>false</code> and
-        <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a> and <i>defined</i> are initialized to <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</p>
-
-      <ol class="algorithm">
-        <li>If <i>value</i> is a <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> or <a class="tref internalDFN" title="null" href="#dfn-null">null</a>,
-          return <i>value</i> as is.</li>
-        <li>If <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a> is not <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, it contains
-          a key that equals <i>value</i>, and the value associated with the key
-          that equals <i>value</i> in <i>defined</i> is not <a class="tref internalDFN" title="true" href="#dfn-true">true</a>,
-          invoke the <a href="#create-term-definition">Create Term Definition algorithm</a>,
-          passing <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a>,
-          <i>value</i> as <i>term</i>, and <i>defined</i>. This will ensure that
-          a <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> is created for <i>value</i> in
-          <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> during <a href="#context-processing-algorithm">Context Processing</a>.
-        </li>
-        <li>If <i>vocab</i> is <a class="tref internalDFN" title="true" href="#dfn-true">true</a> and the
-          <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> has a <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> for
-          <i>value</i>, return the associated <a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a>.</li>
-        <li>If <i>value</i> contains a colon (<code>:</code>), it is either
-          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="compact-iri" href="#dfn-compact-iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>:
-          <ol class="algorithm">
-            <li>Split <i>value</i> into a <a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a> and <i>suffix</i>
-              at the first occurrence of a colon (<code>:</code>).</li>
-            <li>If <a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a> is underscore (<code>_</code>)
-              or <i>suffix</i> begins with double-forward-slash
-              (<code>//</code>), return <i>value</i> as it is already 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="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifier</a>.</li>
-            <li>If <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a> is not <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, it
-              contains a key that equals <a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a>, and the value
-              associated with the key that equals <i>prefix</i> in <i>defined</i>
-              is not <a class="tref internalDFN" title="true" href="#dfn-true">true</a>, invoke the
-              <a href="#create-term-definition">Create Term Definition algorithm</a>,
-              passing <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>,
-              <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a>, <i>prefix</i> as <i>term</i>,
-              and <i>defined</i>. This will ensure that a
-              <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> is created for <a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a>
-              in <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> during
-              <a href="#context-processing-algorithm">Context Processing</a>.</li>
-            <li>If <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> contains a <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a>
-              for <a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a>, return the result of concatenating
-              the <a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a> associated with <a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a> and
-              <i>suffix</i>.</li>
-            <li>Return <i>value</i> as it is already an <a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</li>
-          </ol>
-        </li>
-        <li>If <i>vocab</i> is <a class="tref internalDFN" title="true" href="#dfn-true">true</a>, and
-          <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> has a <a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">vocabulary mapping</a>,
-          return the result of concatenating the <a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">vocabulary mapping</a>
-          with <i>value</i>.</li>
-        <li>Otherwise, if <i>document relative</i> is <a class="tref internalDFN" title="true" href="#dfn-true">true</a>,
-          set <i>value</i> to the result of resolving <i>value</i> against
-          the <a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">base <abbr title="Internationalized Resource Identifier">IRI</abbr></a>. Only the basic algorithm in
-          <cite><a href="http://tools.ietf.org/html/rfc3986#section-5.2">section 5.2</a></cite>
-          of [<cite><a class="bibref" href="#bib-RFC3986">RFC3986</a></cite>] is used; neither
-          <cite><a href="http://tools.ietf.org/html/rfc3986#section-6.2.2">Syntax-Based Normalization</a></cite> nor
-          <cite><a href="http://tools.ietf.org/html/rfc3986#section-6.2.3">Scheme-Based Normalization</a></cite>
-          are performed. Characters additionally allowed in <abbr title="Internationalized Resource Identifier">IRI</abbr> references are treated
-          in the same way that unreserved characters are treated in URI references, per
-          <cite><a href="http://tools.ietf.org/html/rfc3987#section-6.5">section 6.5</a></cite>
-          of [<cite><a class="bibref" href="#bib-RFC3987">RFC3987</a></cite>].</li>
-        <li>If <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a> is not <a class="tref internalDFN" title="null" href="#dfn-null">null</a> and
-          <i>value</i> is not an <a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, an
-          <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid-IRI-mapping">invalid <abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a></code>
-          error has been detected and processing is aborted.</li>
-        <li>Otherwise, return <i>value</i> as is.</li>
-      </ol>
-    </section>
-  </section> <!-- end of IRI Expansion -->
-</section> <!-- end of Context Processing section -->
-
-
-<section id="expansion-algorithms">
-  <!--OddPage--><h2><span class="secno">7. </span>Expansion Algorithms</h2>
-
-  <section id="expansion-algorithm">
-    <h3><span class="secno">7.1 </span>Expansion Algorithm</h3>
-
-    <p>This algorithm expands a JSON-LD document, such that all <a class="tref internalDFN" title="context" href="#dfn-context">context</a>
-      definitions are removed, all <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> and
-      <a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">compact IRIs</a> are expanded to
-      <a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">absolute IRIs</a>,
-      <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifiers</a>, or
-      <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a> and all
-      <a class="tref internalDFN" title="json-ld-value" href="#dfn-json-ld-value">JSON-LD values</a> are expressed in
-      <a class="tref internalDFN" title="array" href="#dfn-array">arrays</a> in <a class="tref internalDFN" title="expanded-form" href="#dfn-expanded-form">expanded form</a>.</p>
-
-    <section class="informative">
-      <h4 id="overview-3">Overview</h4><p><em>This section is non-normative.</em></p>
-
-      <p>Starting with its root <i>element</i>, we can process the
-        JSON-LD document recursively, until we have a fully
-        <a class="tref internalDFN" title="expansion" href="#dfn-expansion">expanded</a> <i>result</i>. When
-        <a class="tref internalDFN" title="expansion" href="#dfn-expansion">expanding</a> an <i>element</i>, we can treat
-        each one differently according to its type, in order to break down the
-        problem:</p>
-
-      <ol>
-        <li>If the <i>element</i> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, there is nothing
-          to expand.</li>
-        <li>Otherwise, if <i>element</i> is a <a class="tref internalDFN" title="scalar" href="#dfn-scalar">scalar</a>, we expand it
-          according to the <a href="#value-expansion">Value Expansion algorithm</a>.</li>
-        <li>Otherwise, if the <i>element</i> is an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>, then we expand
-          each of its items recursively and return them in a new
-          <a class="tref internalDFN" title="array" href="#dfn-array">array</a>.</li>
-        <li>Otherwise, <i>element</i> is a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>. We expand
-          each of its keys, adding them to our <i>result</i>, and then we expand
-          each value for each key recursively. Some of the keys will be
-          <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> and others will be
-          <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a> or simply ignored because
-          they do not have definitions in the <a class="tref internalDFN" title="context" href="#dfn-context">context</a>. Any
-          <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> will be expanded using the
-          <a href="#iri-expansion"><abbr title="Internationalized Resource Identifier">IRI</abbr> Expansion algorithm</a>.
-        </li>
-      </ol>
-
-      <p>Finally, after ensuring <i>result</i> is in an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>,
-        we return <i>result</i>.</p>
-    </section>
-
-    <section>
-      <h4 id="algorithm-3">Algorithm</h4>
-
-      <p>The algorithm takes three input variables: an <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>,
-        an <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>, and an <i>element</i> to be expanded.
-        To begin, the <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a> is set to <a class="tref internalDFN" title="null" href="#dfn-null">null</a>,
-        and <i>element</i> is set to the <a class="tref internalDFN" title="json-ld-input" href="#dfn-json-ld-input">JSON-LD input</a>.</p>
-
-      <ol class="algorithm">
-        <li>If <i>element</i> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, return <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</li>
-        <li>If <i>element</i> is a <a class="tref internalDFN" title="scalar" href="#dfn-scalar">scalar</a>,
-          <ol class="algorithm">
-            <li>If <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a> or <code>@graph</code>,
-              drop the free-floating <a class="tref internalDFN" title="scalar" href="#dfn-scalar">scalar</a> by returning <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</li>
-            <li>Return the result of the
-              <a href="#value-expansion">Value Expansion algorithm</a>, passing the
-              <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>, and
-              <i>element</i> as <i>value</i>.</li>
-          </ol>
-        </li>
-        <li>If <i>element</i> is an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>,
-          <ol class="algorithm">
-            <li>Initialize an empty array, <i>result</i>.</li>
-            <li>For each <i>item</i> in <i>element</i>:
-              <ol class="algorithm">
-                <li>Initialize <i>expanded item</i> to the result of using this
-                  algorithm recursively, passing <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>,
-                  <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>, and <i>item</i> as <i>element</i>.</li>
-                <li>If the <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a> is <code>@list</code> or its
-                  <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mapping</a> is set to <code>@list</code>, the
-                  <i>expanded item</i> must not be an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> or a
-                  <a class="tref internalDFN" title="list-object" href="#dfn-list-object">list object</a>, otherwise a
-                  <code class="error"><a href="#idl-def-JsonLdErrorCode.list-of-lists">list of lists</a></code>
-                  error has been detected and processing is aborted.</li>
-                <li>If <i>expanded item</i> is an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>, append each
-                  of its items to <i>result</i>. Otherwise, if
-                  <i>expanded item</i> is not null, append it to <i>result</i>.</li>
-              </ol>
-            </li>
-            <li>Return <i>result</i>.</li>
-          </ol>
-        </li>
-        <li>Otherwise <i>element</i> is a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>.</li>
-        <li>If <i>element</i> contains the key <code>@context</code>, set
-          <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> to the result of the
-          <a href="#context-processing-algorithm">Context Processing algorithm</a>,
-          passing <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> and the value of the
-          <code>@context</code> key as <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a>.</li>
-        <li>Initialize an empty <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>, <i>result</i>.</li>
-        <li>For each <i>key</i> and <i>value</i> in <i>element</i>,
-          ordered lexicographically by <i>key</i>:
-          <ol class="algorithm">
-            <li>If <i>key</i> is <code>@context</code>, continue to
-              the next <i>key</i>.</li>
-            <li>Set <i>expanded property</i> to the result of
-              using the <a href="#iri-expansion"><abbr title="Internationalized Resource Identifier">IRI</abbr> Expansion algorithm</a>,
-              passing <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, <i>key</i> for
-              <i>value</i>, and <a class="tref internalDFN" title="true" href="#dfn-true">true</a> for <i>vocab</i>.</li>
-            <li>If <i>expanded property</i> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a> or it neither
-              contains a colon (<code>:</code>) nor it is a <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>,
-              drop <i>key</i> by continuing to the next <i>key</i>.</li>
-            <li>If <i>expanded property</i> is a <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>:
-              <ol class="algorithm">
-                <li>If <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a> equals <code>@reverse</code>, an
-                  <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid-reverse-property-map">invalid reverse property map</a></code>
-                  error has been detected and processing is aborted.</li>
-                <li>If <i>result</i> has already an <i>expanded property</i> member, an
-                  <code class="error"><a href="#idl-def-JsonLdErrorCode.colliding-keywords">colliding keywords</a></code>
-                  error has been detected and processing is aborted.</li>
-                <li>If <i>expanded property</i> is <code>@id</code> and
-                  <i>value</i> is not a <a class="tref internalDFN" title="string" href="#dfn-string">string</a>, an
-                  <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid--id-value">invalid @id value</a></code>
-                  error has been detected and processing is aborted. Otherwise,
-                  set <i>expanded value</i> to the result of using the
-                  <a href="#iri-expansion"><abbr title="Internationalized Resource Identifier">IRI</abbr> Expansion algorithm</a>,
-                  passing <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, <i>value</i>, and <a class="tref internalDFN" title="true" href="#dfn-true">true</a>
-                  for <i>document relative</i>.</li>
-                <li>If <i>expanded property</i> is <code>@type</code> and <i>value</i>
-                  is neither a <a class="tref internalDFN" title="string" href="#dfn-string">string</a> nor an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> of
-                  <a class="tref internalDFN" title="string" href="#dfn-string">strings</a>, an
-                  <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid-type-value">invalid type value</a></code>
-                  error has been detected and processing is aborted. Otherwise,
-                  set <i>expanded value</i> to the result of using the
-                  <a href="#iri-expansion"><abbr title="Internationalized Resource Identifier">IRI</abbr> Expansion algorithm</a>, passing
-                  <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, <a class="tref internalDFN" title="true" href="#dfn-true">true</a> for <i>vocab</i>,
-                  and <a class="tref internalDFN" title="true" href="#dfn-true">true</a> for <i>document relative</i> to expand the <i>value</i>
-                  or each of its items.</li>
-                <li>If <i>expanded property</i> is <code>@graph</code>, set
-                  <i>expanded value</i> to the result of using this algorithm
-                  recursively passing <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, <code>@graph</code>
-                  for <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>, and <i>value</i> for <i>element</i>.</li>
-                <li>If <i>expanded property</i> is <code>@value</code> and
-                  <i>value</i> is not a <a class="tref internalDFN" title="scalar" href="#dfn-scalar">scalar</a> or <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, an
-                  <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid-value-object-value">invalid value object value</a></code>
-                  error has been detected and processing is aborted. Otherwise,
-                  set <i>expanded value</i> to <i>value</i>. If <i>expanded value</i>
-                  is <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, set the <code>@value</code>
-                  member of <i>result</i> to <a class="tref internalDFN" title="null" href="#dfn-null">null</a> and continue with the
-                  next <i>key</i> from <i>element</i>. Null values need to be preserved
-                  in this case as the meaning of an <code>@type</code> member depends
-                  on the existence of an <code>@value</code> member.</li>
-                <li>If <i>expanded property</i> is <code>@language</code> and
-                  <i>value</i> is not a <a class="tref internalDFN" title="string" href="#dfn-string">string</a>, an
-                  <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid-language-tagged-string">invalid language-tagged string</a></code>
-                  error has been detected and processing is aborted. Otherwise,
-                  set <i>expanded value</i> to lowercased <i>value</i>.</li>
-                <li>If <i>expanded property</i> is <code>@index</code> and
-                  <i>value</i> is not a <a class="tref internalDFN" title="string" href="#dfn-string">string</a>, an
-                  <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid--index-value">invalid @index value</a></code>
-                  error has been detected and processing is aborted. Otherwise,
-                  set <i>expanded value</i> to <i>value</i>.</li>
-                <li>If <i>expanded property</i> is <code>@list</code>:
-                  <ol class="algorithm">
-                    <li>If <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a> or
-                      <code>@graph</code>, continue with the next <i>key</i>
-                      from <i>element</i> to remove the free-floating list.</li>
-                    <li>Otherwise, initialize <i>expanded value</i> to the result of using
-                      this algorithm recursively passing <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>,
-                      <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>, and <i>value</i> for <i>element</i>.</li>
-                    <li>If <i>expanded value</i> is a <a class="tref internalDFN" title="list-object" href="#dfn-list-object">list object</a>, a
-                      <code class="error"><a href="#idl-def-JsonLdErrorCode.list-of-lists">list of lists</a></code>
-                      error has been detected and processing is aborted.</li>
-                  </ol>
-                </li>
-                <li>If <i>expanded property</i> is <code>@set</code>, set
-                  <i>expanded value</i> to the result of using this algorithm
-                  recursively, passing <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>,
-                  <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>, and <i>value</i> for
-                  <i>element</i>.</li>
-                <li>If <i>expanded property</i> is <code>@reverse</code> and
-                  <i>value</i> is not a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>, an
-                  <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid--reverse-value">invalid @reverse value</a></code>
-                  error has been detected and processing is aborted. Otherwise
-                  <ol class="algorithm">
-                    <li>Initialize <i>expanded value</i> to the result of using this
-                      algorithm recursively, passing <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>,
-                      <code>@reverse</code> as <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>, and
-                      <i>value</i> as <i>element</i>.</li>
-                    <li>If <i>expanded value</i> contains an <code>@reverse</code> member,
-                      i.e., properties that are reversed twice, execute for each of its
-                      <i>property</i> and <i>item</i> the following steps:
-                      <ol class="algorithm">
-                        <li>If <i>result</i> does not have a <i>property</i> member, create
-                          one and set its value to an empty <a class="tref internalDFN" title="array" href="#dfn-array">array</a>.</li>
-                        <li>Append <i>item</i> to the value of the <i>property</i> member
-                          of <i>result</i>.</li>
-                      </ol>
-                    </li>
-                    <li>If <i>expanded value</i> contains members other than <code>@reverse</code>:
-                      <ol class="algorithm">
-                        <li>If <i>result</i> does not have an <code>@reverse</code> member, create
-                          one and set its value to an empty <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>.</li>
-                        <li>Reference the value of the <code>@reverse</code> member in <i>result</i>
-                          using the variable <i>reverse map</i>.</li>
-                        <li>For each <i>property</i> and <i>items</i> in <i>expanded value</i>
-                          other than <code>@reverse</code>:
-                          <ol class="algorithm">
-                            <li>For each <i>item</i> in <i>items</i>:
-                              <ol class="algorithm">
-                                <li>If <i>item</i> is a <a class="tref internalDFN" title="value-object" href="#dfn-value-object">value object</a> or <a class="tref internalDFN" title="list-object" href="#dfn-list-object">list object</a>, an
-                                  <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid--reverse-value">invalid reverse property value</a></code>
-                                  has been detected and processing is aborted.</li>
-                                <li>If <i>reverse map</i> has no <i>property</i> member, create one
-                                  and initialize its value to an empty <a class="tref internalDFN" title="array" href="#dfn-array">array</a>.</li>
-                                <li>Append <i>item</i> to the value of the <i>property</i>
-                                  member in <i>reverse map</i>.</li>
-                              </ol>
-                            </li>
-                          </ol>
-                        </li>
-                      </ol>
-                    </li>
-                    <li>Continue with the next <i>key</i> from <i>element</i>.</li>
-                  </ol>
-                </li>
-                <li>Unless <i>expanded value</i> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, set
-                  the <i>expanded property</i> member of <i>result</i> to
-                  <i>expanded value</i>.</li>
-                <li>Continue with the next <i>key</i> from <i>element</i>.</li>
-              </ol>
-            </li>
-            <li>Otherwise, if <i>key</i>'s <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mapping</a> in
-              <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> is <code>@language</code> and
-              <i>value</i> is a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> then <i>value</i>
-              is expanded from a <a class="tref externalDFN" title="language-map" href="http://www.w3.org/TR/2013/CR-json-ld-20130822/#dfn-language-map">language map</a>
-              as follows:
-              <ol class="algorithm">
-                <li>Initialize <i>expanded value</i> to an empty
-                  <a class="tref internalDFN" title="array" href="#dfn-array">array</a>.</li>
-                <li>For each key-value pair <i>language</i>-<i>language value</i>
-                  in <i>value</i>, ordered lexicographically by <i>language</i>:
-                  <ol class="algorithm">
-                    <li>If <i>language value</i> is not an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>
-                      set it to an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> containing only
-                      <i>language value</i>.</li>
-                    <li>For each <i>item</i> in <i>language value</i>:
-                      <ol class="algorithm">
-                        <li><i>item</i> must be a <a class="tref internalDFN" title="string" href="#dfn-string">string</a>,
-                          otherwise an
-                          <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid-language-map-value">invalid language map value</a></code>
-                          error has been detected and processing is aborted.</li>
-                        <li>Append a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> to
-                          <i>expanded value</i> that consists of two
-                          key-value pairs: (<code>@value</code>-<i>item</i>)
-                          and (<code>@language</code>-lowercased
-                          <i>language</i>).</li>
-                      </ol>
-                    </li>
-                  </ol>
-                </li>
-              </ol>
-            </li>
-            <li>Otherwise, if <i>key</i>'s <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mapping</a> in
-              <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> is <code>@index</code> and
-              <i>value</i> is a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> then <i>value</i>
-              is expanded from an index map as follows:
-              <ol class="algorithm">
-                <li>Initialize <i>expanded value</i> to an empty
-                  <a class="tref internalDFN" title="array" href="#dfn-array">array</a>.</li>
-                <li>For each key-value pair <i>index</i>-<i>index value</i>
-                  in <i>value</i>, ordered lexicographically by <i>index</i>:
-                  <ol class="algorithm">
-                    <li>If <i>index value</i> is not an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>
-                      set it to an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> containing only
-                      <i>index value</i>.</li>
-                    <li>Initialize <i>index value</i> to the result of
-                      using this algorithm recursively, passing
-                      <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>,
-                      <i>key</i> as <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>,
-                      and <i>index value</i> as <i>element</i>.</li>
-                    <li>For each <i>item</i> in <i>index value</i>:
-                      <ol class="algorithm">
-                        <li>If <i>item</i> does not have the key
-                          <code>@index</code>, add the key-value pair
-                          (<code>@index</code>-<i>index</i>) to
-                          <i>item</i>.</li>
-                        <li>Append <i>item</i> to <i>expanded value</i>.</li>
-                      </ol>
-                    </li>
-                  </ol>
-                </li>
-              </ol>
-            </li>
-            <li>Otherwise, initialize <i>expanded value</i> to the result of
-              using this algorithm recursively, passing <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>,
-              <i>key</i> for <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>, and <i>value</i>
-              for <i>element</i>.</li>
-            <li>If <i>expanded value</i> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, ignore <i>key</i>
-              by continuing to the next <i>key</i> from <i>element</i>.</li>
-            <li>If the <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mapping</a> associated to <i>key</i> in
-              <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> is <code>@list</code> and
-              <i>expanded value</i> is not already a <a class="tref internalDFN" title="list-object" href="#dfn-list-object">list object</a>,
-              convert <i>expanded value</i> to a <a class="tref internalDFN" title="list-object" href="#dfn-list-object">list object</a>
-              by first setting it to an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> containing only
-              <i>expanded value</i> if it is not already an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>,
-              and then by setting it to a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> containing
-              the key-value pair <code>@list</code>-<i>expanded value</i>.</li>
-            <li>Otherwise, if the <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> associated to
-              <i>key</i> indicates that it is a <a class="tref internalDFN" title="reverse-property" href="#dfn-reverse-property">reverse property</a>
-              <ol class="algorithm">
-                <li>If <i>result</i> has no <code>@reverse</code> member, create
-                  one and initialize its value to an empty <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>.</li>
-                <li>Reference the value of the <code>@reverse</code> member in <i>result</i>
-                  using the variable <i>reverse map</i>.</li>
-                <li>If <i>expanded value</i> is not an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>, set
-                  it to an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> containing <i>expanded value</i>.</li>
-                <li>For each <i>item</i> in <i>expanded value</i>
-                  <ol class="algorithm">
-                    <li>If <i>item</i> is a <a class="tref internalDFN" title="value-object" href="#dfn-value-object">value object</a> or <a class="tref internalDFN" title="list-object" href="#dfn-list-object">list object</a>, an
-                      <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid--reverse-value">invalid reverse property value</a></code>
-                      has been detected and processing is aborted.</li>
-                    <li>If <i>reverse map</i> has no <i>expanded property</i> member,
-                      create one and initialize its value to an empty <a class="tref internalDFN" title="array" href="#dfn-array">array</a>.</li>
-                    <li>Append <i>item</i> to the value of the <i>expanded property</i>
-                      member of <i>reverse map</i>.</li>
-                  </ol>
-                </li>
-              </ol>
-            </li>
-            <li>Otherwise, if <i>key</i> is not a <a class="tref internalDFN" title="reverse-property" href="#dfn-reverse-property">reverse property</a>:
-              <ol class="algorithm">
-                <li>If <i>result</i> does not have an <i>expanded property</i>
-                  member, create one and initialize its value to an empty
-                  <a class="tref internalDFN" title="array" href="#dfn-array">array</a>.</li>
-                <li>Append <i>expanded value</i> to value of the <i>expanded property</i>
-                  member of <i>result</i>.</li>
-              </ol>
-            </li>
-          </ol>
-        </li>
-        <li>If <i>result</i> contains the key <code>@value</code>:
-          <ol class="algorithm">
-            <li>The <i>result</i> must not contain any keys other than
-              <code>@value</code>, <code>@language</code>, <code>@type</code>,
-              and <code>@index</code>. It must not contain both the
-              <code>@language</code> key and the <code>@type</code> key.
-              Otherwise, an
-              <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid-value-object">invalid value object</a></code>
-              error has been detected and processing is aborted.</li>
-            <li>If the value of <i>result</i>'s <code>@value</code> key is
-              <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, then set <i>result</i> to <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</li>
-            <li>Otherwise, if the value of <i>result</i>'s <code>@value</code> member
-              is not a <a class="tref internalDFN" title="string" href="#dfn-string">string</a> and <i>result</i> contains the key
-              <code>@language</code>, an
-              <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid-language-tagged-value">invalid language-tagged value</a></code>
-              error has been detected (only <a class="tref internalDFN" title="string" href="#dfn-string">strings</a>
-              can be language-tagged) and processing is aborted.</li>
-            <li>Otherwise, if the <i>result</i> has a <code>@type</code> member
-              and its value is not an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>, an
-              <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid-typed-value">invalid typed value</a></code>
-              error has been detected and processing is aborted.</li>
-          </ol>
-        </li>
-        <li>Otherwise, if <i>result</i> contains the key <code>@type</code>
-          and its associated value is not an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>, set it to
-          an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> containing only the associated value.</li>
-        <li>Otherwise, if <i>result</i> contains the key <code>@set</code>
-          or <code>@list</code>:
-          <ol class="algorithm">
-            <li>The <i>result</i> must contain at most one other key and that
-              key must be <code>@index</code>. Otherwise, an
-              <code class="error"><a href="#idl-def-JsonLdErrorCode.invalid-set-or-list-object">invalid set or list object</a></code>
-              error has been detected and processing is aborted.</li>
-            <li>If <i>result</i> contains the key <code>@set</code>, then
-              set <i>result</i> to the key's associated value.</li>
-          </ol>
-        </li>
-        <li>If <i>result</i> contains only the key
-          <code>@language</code>, set <i>result</i> to <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</li>
-        <li>If <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a> or <code>@graph</code>,
-          drop free-floating values as follows:
-          <ol class="algorithm">
-            <li>If <i>result</i> is an empty <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> or contains
-              the keys <code>@value</code> or <code>@list</code>, set <i>result</i> to
-              <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</li>
-            <li>Otherwise, if <i>result</i> is a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> whose only
-              key is <code>@id</code>, set <i>result</i> to <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</li>
-          </ol>
-        </li>
-        <li>Return <i>result</i>.</li>
-      </ol>
-
-      <p>If, after the above algorithm is run, the result is a
-        <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> that contains only an <code>@graph</code> key, set the
-        result to the value of <code>@graph</code>'s value. Otherwise, if the result
-        is <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, set it to an empty <a class="tref internalDFN" title="array" href="#dfn-array">array</a>. Finally, if
-        the result is not an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>, then set the result to an
-        <a class="tref internalDFN" title="array" href="#dfn-array">array</a> containing only the result.</p>
-    </section>
-  </section> <!-- end of Expansion Algorithm -->
-
-
-  <section id="value-expansion">
-    <h3><span class="secno">7.2 </span>Value Expansion</h3>
-
-    <p>Some values in JSON-LD can be expressed in a
-      <a class="tref internalDFN" title="compacted-form" href="#dfn-compacted-form">compact form</a>. These values are required
-      to be <a class="tref internalDFN" title="expansion" href="#dfn-expansion">expanded</a> at times when processing
-      JSON-LD documents. A value is said to be in <dfn title="expanded-form" id="dfn-expanded-form">expanded form</dfn>
-      after the application of this algorithm.</p>
-
-    <section class="informative">
-      <h4 id="overview-4">Overview</h4><p><em>This section is non-normative.</em></p>
-
-      <p>If <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a> has a <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a> in the
-        <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> set to <code>@id</code> or <code>@vocab</code>,
-        a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> with a single member <code>@id</code> whose
-        value is the result of using the
-        <a href="#iri-expansion"><abbr title="Internationalized Resource Identifier">IRI</abbr> Expansion algorithm</a> on <i>value</i>
-        is returned.</p>
-
-      <p>Otherwise, the result will be a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> containing
-        an <code>@value</code> member whose value is the passed <i>value</i>.
-        Additionally, an <code>@type</code> member will be included if there is a
-        <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a> associated with the <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>
-        or an <code>@language</code> member if <i>value</i> is a
-        <a class="tref internalDFN" title="string" href="#dfn-string">string</a> and there is <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mapping</a> associated
-        with the <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>.</p>
-    </section>
-
-    <section>
-      <h4 id="algorithm-4">Algorithm</h4>
-
-      <p>The algorithm takes three required inputs: an <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>,
-        an <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>, and a <i>value</i> to expand.</p>
-
-      <ol class="algorithm">
-        <li>If the <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a> has a <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a>
-          in <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> that is <code>@id</code>, return a new
-          <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> containing a single key-value pair where the
-          key is <code>@id</code> and the value is the result of using the
-          <a href="#iri-expansion"><abbr title="Internationalized Resource Identifier">IRI</abbr> Expansion algorithm</a>, passing
-          <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, <i>value</i>, and <a class="tref internalDFN" title="true" href="#dfn-true">true</a> for
-          <i>document relative</i>.</li>
-        <li>If <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a> has a <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a> in
-          <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> that is <code>@vocab</code>, return
-          a new <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> containing a single key-value pair
-          where the key is <code>@id</code> and the value is the result of
-          using the <a href="#iri-expansion"><abbr title="Internationalized Resource Identifier">IRI</abbr> Expansion algorithm</a>, passing
-          <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, <i>value</i>, <a class="tref internalDFN" title="true" href="#dfn-true">true</a> for
-          <i>vocab</i>, and <a class="tref internalDFN" title="true" href="#dfn-true">true</a> for
-          <i>document relative</i>.</li>
-        <li>Otherwise, initialize <i>result</i> to a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>
-          with an <code>@value</code> member whose value is set to
-          <i>value</i>.</li>
-        <li>If <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a> has a <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a> in
-          <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, add an <code>@type</code> member to
-          <i>result</i> and set its value to the value associated with the
-          <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a>.</li>
-        <li>Otherwise, if <i>value</i> is a <a class="tref internalDFN" title="string" href="#dfn-string">string</a>:
-          <ol class="algorithm">
-            <li>If a <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mapping</a> is associated with
-              <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a> in <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>,
-              add an <code>@language</code> to <i>result</i> and set its
-              value to the language code associated with the
-              <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mapping</a>; unless the
-              <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mapping</a> is set to <a class="tref internalDFN" title="null" href="#dfn-null">null</a> in
-              which case no member is added.</li>
-            <li>Otherwise, if the <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> has a
-              <a class="tref internalDFN" title="default-language" href="#dfn-default-language">default language</a>, add an <code>@language</code>
-              to <i>result</i> and set its value to the
-              <a class="tref internalDFN" title="default-language" href="#dfn-default-language">default language</a>.</li>
-          </ol>
-        </li>
-        <li>Return <i>result</i>.</li>
-      </ol>
-    </section>
-  </section> <!-- end of Value Expansion -->
-
-</section> <!-- end of Expansion section -->
-
-
-<section id="compaction-algorithms">
-  <!--OddPage--><h2><span class="secno">8. </span>Compaction Algorithms</h2>
-
-  <section id="compaction-algorithm">
-    <h3><span class="secno">8.1 </span>Compaction Algorithm</h3>
-
-    <p>This algorithm compacts a JSON-LD document, such that the given
-      <a class="tref internalDFN" title="context" href="#dfn-context">context</a> is applied. This must result in shortening
-      any applicable <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> to
-      <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>, any applicable
-      <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a> to
-      <a class="tref internalDFN" title="keyword-alias" href="#dfn-keyword-alias">keyword aliases</a>, and
-      any applicable <a class="tref internalDFN" title="json-ld-value" href="#dfn-json-ld-value">JSON-LD values</a>
-      expressed in <a class="tref internalDFN" title="expanded-form" href="#dfn-expanded-form">expanded form</a> to simple values such as
-      <a class="tref internalDFN" title="string" href="#dfn-string">strings</a> or
-      <a class="tref internalDFN" title="number" href="#dfn-number">numbers</a>.</p>
-
-    <section class="informative">
-      <h4 id="overview-5">Overview</h4><p><em>This section is non-normative.</em></p>
-
-      <p>Starting with its root <i>element</i>, we can process the
-        JSON-LD document recursively, until we have a fully
-        <a class="tref internalDFN" title="compaction" href="#dfn-compaction">compacted</a> <i>result</i>. When
-        <a class="tref internalDFN" title="compaction" href="#dfn-compaction">compacting</a> an <i>element</i>, we can treat
-        each one differently according to its type, in order to break down the
-        problem:</p>
-
-      <ol>
-        <li>If the <i>element</i> is a <a class="tref internalDFN" title="scalar" href="#dfn-scalar">scalar</a>, it is
-          already in <a class="tref internalDFN" title="compacted-form" href="#dfn-compacted-form">compacted form</a>, so we simply return it.</li>
-        <li>If the <i>element</i> is an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>, we compact
-          each of its items recursively and return them in a new
-          <a class="tref internalDFN" title="array" href="#dfn-array">array</a>.</li>
-        <li>Otherwise <i>element</i> is a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>. The value
-          of each key in element is compacted recursively. Some of the keys will be
-          compacted, using the <a href="#iri-compaction"><abbr title="Internationalized Resource Identifier">IRI</abbr> Compaction algorithm</a>,
-          to <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>
-          and others will be compacted from <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a> to
-          <a class="tref internalDFN" title="keyword-alias" href="#dfn-keyword-alias">keyword aliases</a> or simply left
-          unchanged because they do not have definitions in the <a class="tref internalDFN" title="context" href="#dfn-context">context</a>.
-          Values will be converted to <a class="tref internalDFN" title="compacted-form" href="#dfn-compacted-form">compacted form</a> via the
-          <a href="#value-compaction">Value Compaction algorithm</a>. Some data
-          will be reshaped based on <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mappings</a>
-          specified in the context such as <code>@index</code> or <code>@language</code>
-          maps.</li>
-      </ol>
-
-      <p>The final output is a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> with a <code>@context</code>
-        key, if a non-empty <a class="tref internalDFN" title="context" href="#dfn-context">context</a> was given, where the <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>
-        is either <i>result</i> or a wrapper for it where <i>result</i> appears
-        as the value of an (aliased) <code>@graph</code> key because <i>result</i>
-        contained two or more items in an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>.</p>
-    </section>
-
-    <section>
-      <h4 id="algorithm-5">Algorithm</h4>
-
-      <p>The algorithm takes five required input variables: an <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>,
-        an <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a>, an <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>, an
-        <i>element</i> to be compacted, and a flag
-        <code class="idlMemberName"><a href="#widl-JsonLdOptions-compactArrays">compactArrays</a></code>.
-        To begin, the <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> is set to the result of
-        performing <a href="#context-processing-algorithm">Context Processing</a>
-        on the passed <a class="tref internalDFN" title="context" href="#dfn-context">context</a>, the <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a> is
-        set to the result of performing the
-        <a href="#inverse-context-creation">Inverse Context Creation algorithm</a>
-        on <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, the <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a> is
-        set to <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, <i>element</i> is set to the result of
-        performing the <a href="#expansion-algorithm">Expansion algorithm</a>
-        on the <a class="tref internalDFN" title="json-ld-input" href="#dfn-json-ld-input">JSON-LD input</a>, and, if not passed,
-        <code class="idlMemberName"><a href="#widl-JsonLdOptions-compactArrays">compactArrays</a></code>
-        is set to <a class="tref internalDFN" title="true" href="#dfn-true">true</a>.</p>
-
-      <ol class="algorithm">
-        <li>If <i>element</i> is a <a class="tref internalDFN" title="scalar" href="#dfn-scalar">scalar</a>, it is already in its most
-          compact form, so simply return <i>element</i>.</li>
-        <li>If <i>element</i> is an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>:
-          <ol class="algorithm">
-            <li>Initialize <i>result</i> to an empty <a class="tref internalDFN" title="array" href="#dfn-array">array</a>.</li>
-            <li>For each <i>item</i> in <i>element</i>:
-              <ol class="algorithm">
-                <li>Initialize <i>compacted item</i> to the result of using this
-                  algorithm recursively, passing <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>,
-                  <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a>, <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>, and
-                  <em>item</em> for <i>element</i>.</li>
-                <li>If <i>compacted item</i> is not <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, then append
-                  it to <i>result</i>.</li>
-              </ol>
-            </li>
-            <li>If <i>result</i> contains only one item (it has a length of
-              <code>1</code>), <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a> has no
-              <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mapping</a> in <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, and
-              <code class="idlMemberName"><a href="#widl-JsonLdOptions-compactArrays">compactArrays</a></code>
-              is <a class="tref internalDFN" title="true" href="#dfn-true">true</a>, set <i>result</i> to its only item.</li>
-            <li>Return <i>result</i>.</li>
-          </ol>
-        </li>
-        <li>Otherwise <i>element</i> is a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>.</li>
-        <li>If <i>element</i> has an <code>@value</code> or <code>@id</code>
-          member and the result of using the
-          <a href="#value-compaction">Value Compaction algorithm</a>,
-          passing <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a>,
-          <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>,and <i>element</i> as <i>value</i> is
-          a <a class="tref internalDFN" title="scalar" href="#dfn-scalar">scalar</a>, return that result.</li>
-        <li>Initialize <i>inside reverse</i> to <a class="tref internalDFN" title="true" href="#dfn-true">true</a> if
-          <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a> equals <code>@reverse</code>,
-          otherwise to <a class="tref internalDFN" title="false" href="#dfn-false">false</a>.</li>
-        <li>Initialize <i>result</i> to an empty <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>.</li>
-        <li>For each key <i>expanded property</i> and value <i>expanded value</i>
-          in <i>element</i>,  ordered lexicographically by <i>expanded property</i>:
-          <ol class="algorithm">
-            <li>If <i>expanded property</i> is <code>@id</code> or
-              <code>@type</code>:
-                <ol class="algorithm">
-                  <li>If <i>expanded value</i> is a <a class="tref internalDFN" title="string" href="#dfn-string">string</a>,
-                    then initialize <i>compacted value</i> to the result
-                    of using the <a href="#iri-compaction"><abbr title="Internationalized Resource Identifier">IRI</abbr> Compaction algorithm</a>,
-                    passing <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a>,
-                    <i>expanded value</i> for <i>iri</i>,
-                    and <a class="tref internalDFN" title="true" href="#dfn-true">true</a> for <i>vocab</i> if
-                    <i>expanded property</i> is <code>@type</code>,
-                    <a class="tref internalDFN" title="false" href="#dfn-false">false</a> otherwise.</li>
-                  <li>Otherwise, <i>expanded value</i> must be a
-                    <code>@type</code> <a class="tref internalDFN" title="array" href="#dfn-array">array</a>:
-                    <ol class="algorithm">
-                      <li>Initialize <i>compacted value</i> to an empty
-                        <a class="tref internalDFN" title="array" href="#dfn-array">array</a>.</li>
-                      <li>For each item <i>expanded type</i> in
-                        <i>expanded value</i>, append the result of
-                        of using the <a href="#iri-compaction"><abbr title="Internationalized Resource Identifier">IRI</abbr> Compaction algorithm</a>,
-                        passing <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a>,
-                        <i>expanded type</i> for <i>iri</i>, and
-                        <a class="tref internalDFN" title="true" href="#dfn-true">true</a> for <i>vocab</i>,
-                        to <i>compacted value</i>.</li>
-                      <li>If <i>compacted value</i> contains only one
-                        item (it has a length of <code>1</code>), then
-                        set <i>compacted value</i> to its only item.</li>
-                    </ol>
-                  </li>
-                  <li>Initialize <i>alias</i> to the result of using the
-                    <a href="#iri-compaction"><abbr title="Internationalized Resource Identifier">IRI</abbr> Compaction algorithm</a>,
-                    passing <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a>,
-                    <i>expanded property</i> for <i>iri</i>,
-                    and <a class="tref internalDFN" title="true" href="#dfn-true">true</a> for <i>vocab</i>.</li>
-                  <li>Add a member <i>alias</i> to <i>result</i> whose value is
-                    set to <i>compacted value</i> and continue to the next
-                    <i>expanded property</i>.</li>
-                </ol>
-              </li>
-            <li>If <i>expanded property</i> is <code>@reverse</code>:
-              <ol class="algorithm">
-                <li>Initialize <i>compacted value</i> to the result of using this
-                  algorithm recursively, passing <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>,
-                  <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a>, <code>@reverse</code> for
-                  <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>, and <i>expanded value</i>
-                  for <i>element</i>.</li>
-                <li>For each <i>property</i> and <i>value</i> in <i>compacted value</i>:
-                  <ol class="algorithm">
-                    <li>If the <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> for <i>property</i> in the
-                      <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> indicates that <i>property</i> is
-                      a <a class="tref internalDFN" title="reverse-property" href="#dfn-reverse-property">reverse property</a>
-                      <ol class="algorithm">
-                        <li>If the <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> for <i>property</i> in
-                          the <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> has a
-                          <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mapping</a> of <code>@set</code> or
-                          <code class="idlMemberName"><a href="#widl-JsonLdOptions-compactArrays">compactArrays</a></code>
-                          is <a class="tref internalDFN" title="false" href="#dfn-false">false</a>, and <i>value</i> is not an
-                          <a class="tref internalDFN" title="array" href="#dfn-array">array</a>, set <i>value</i> to a new
-                          <a class="tref internalDFN" title="array" href="#dfn-array">array</a> containing only <i>value</i>.</li>
-                        <li>If <i>property</i> is not a member of
-                          <i>result</i>, add one and set its value to <i>value</i>.</li>
-                        <li>Otherwise, if the value of the <i>property</i> member of
-                          <i>result</i> is not an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>, set it to a new
-                          <a class="tref internalDFN" title="array" href="#dfn-array">array</a> containing only the value. Then
-                          append <i>value</i> to its value if <i>value</i>
-                          is not an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>, otherwise append each
-                          of its items.</li>
-                        <li>Remove the <i>property</i> member from
-                          <i>compacted value</i>.</li>
-                      </ol>
-                    </li>
-                  </ol>
-                </li>
-                <li>If <i>compacted value</i> has some remaining members, i.e.,
-                  it is not an empty <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>:
-                  <ol class="algorithm">
-                    <li>Initialize <i>alias</i> to the result of using the
-                      <a href="#iri-compaction"><abbr title="Internationalized Resource Identifier">IRI</abbr> Compaction algorithm</a>,
-                      passing <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a>,
-                      <code>@reverse</code> for <i>iri</i>,
-                      and <a class="tref internalDFN" title="true" href="#dfn-true">true</a> for <i>vocab</i>.</li>
-                    <li>Set the value of the <i>alias</i> member of <i>result</i> to
-                      <i>compacted value</i>.</li>
-                  </ol>
-                </li>
-                <li>Continue with the next <i>expanded property</i> from <i>element</i>.</li>
-              </ol>
-            </li>
-            <li>If <i>expanded property</i> is <code>@index</code> and
-              <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a> has a <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mapping</a>
-              in <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> that is <code>@index</code>,
-              then the compacted result will be inside of an <code>@index</code>
-              container, drop the <code>@index</code> property by continuing
-              to the next <i>expanded property</i>.</li>
-            <li>Otherwise, if <i>expanded property</i> is <code>@index</code>,
-              <code>@value</code>, or <code>@language</code>:
-              <ol class="algorithm">
-                <li>Initialize <i>alias</i> to the result of using
-                  the <a href="#iri-compaction"><abbr title="Internationalized Resource Identifier">IRI</abbr> Compaction algorithm</a>,
-                  passing <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a>,
-                  <i>expanded property</i> for <i>iri</i>,
-                  and <a class="tref internalDFN" title="true" href="#dfn-true">true</a> for <i>vocab</i>.</li>
-                <li>Add a member <i>alias</i> to <i>result</i> whose value is
-                  set to <i>expanded value</i> and continue with the next
-                  <i>expanded property</i>.</li>
-              </ol>
-            </li>
-            <li>If <i>expanded value</i> is an empty <a class="tref internalDFN" title="array" href="#dfn-array">array</a>:
-              <ol class="algorithm">
-                <li>Initialize <i>item active property</i> to the result of
-                  using the <a href="#iri-compaction"><abbr title="Internationalized Resource Identifier">IRI</abbr> Compaction algorithm</a>,
-                  passing <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a>,
-                  <i>expanded property</i> for <i>iri</i>,
-                  <i>expanded value</i> for <i>value</i>,
-                  <a class="tref internalDFN" title="true" href="#dfn-true">true</a> for <i>vocab</i>, and
-                  <i>inside reverse</i>.</li>
-                <li>If <i>result</i> does not have the key that equals
-                  <i>item active property</i>, set this key's value in
-                  <i>result</i> to an empty <a class="tref internalDFN" title="array" href="#dfn-array">array</a>. Otherwise, if
-                  the key's value is not an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>, then set it
-                  to one containing only the value.</li>
-              </ol>
-            </li>
-            <li>
-              At this point, <i>expanded value</i> must be an
-              <a class="tref internalDFN" title="array" href="#dfn-array">array</a> due to the
-              <a href="#expansion-algorithm">Expansion algorithm</a>.
-              For each item <i>expanded item</i> in <i>expanded value</i>:
-              <ol class="algorithm">
-                <li>Initialize <i>item active property</i> to the result of using
-                  the <a href="#iri-compaction"><abbr title="Internationalized Resource Identifier">IRI</abbr> Compaction algorithm</a>,
-                  passing <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a>,
-                  <i>expanded property</i> for <i>iri</i>,
-                  <i>expanded item</i> for <i>value</i>,
-                  <a class="tref internalDFN" title="true" href="#dfn-true">true</a> for <i>vocab</i>, and
-                  <i>inside reverse</i>.</li>
-                <li>Initialize <i>container</i> to <a class="tref internalDFN" title="null" href="#dfn-null">null</a>. If there
-                  is a <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mapping</a> for
-                  <i>item active property</i> in <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>,
-                  set <i>container</i> to its value.</li>
-                <li>Initialize <i>compacted item</i> to the result of using
-                  this algorithm recursively, passing
-                  <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a>,
-                  <i>item active property</i> for <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>,
-                  <i>expanded item</i> for <i>element</i> if it does
-                  not contain the key <code>@list</code>, otherwise pass
-                  the key's associated value for <i>element</i>.</li>
-                <li>
-                  If <i>expanded item</i> is a <a class="tref internalDFN" title="list-object" href="#dfn-list-object">list object</a>:
-                  <ol class="algorithm">
-                    <li>If <i>compacted item</i> is not an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>,
-                      then set it to an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> containing only
-                      <i>compacted item</i>.</li>
-                    <li>If <i>container</i> is not <code>@list</code>:
-                      <ol class="algorithm">
-                        <li>Convert <i>compacted item</i> to a
-                          <a class="tref internalDFN" title="list-object" href="#dfn-list-object">list object</a> by setting it to a
-                          <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> containing key-value pair
-                          where the key is the result of the
-                          <a href="#iri-compaction"><abbr title="Internationalized Resource Identifier">IRI</abbr> Compaction algorithm</a>,
-                          passing <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a>,
-                          <code>@list</code> for <i>iri</i>, and <i>compacted item</i>
-                          for <i>value</i>.</li>
-                        <li>If <i>expanded item</i> contains the key
-                          <code>@index</code>, then add a key-value pair
-                          to <i>compacted item</i> where the key is the
-                          result of the <a href="#iri-compaction"><abbr title="Internationalized Resource Identifier">IRI</abbr> Compaction algorithm</a>,
-                          passing <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a>,
-                          <code>@index</code> as <i>iri</i>, and the value associated with the
-                          <code>@index</code> key in <i>expanded item</i> as <i>value</i>.</li>
-                      </ol>
-                    </li>
-                    <li>Otherwise, <i>item active property</i> must not be a key
-                      in <i>result</i> because there cannot be two
-                      <a class="tref internalDFN" title="list-object" href="#dfn-list-object">list objects</a> associated
-                      with an <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a> that has a
-                      <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mapping</a>; a
-                      <code class="error"><a href="#idl-def-JsonLdErrorCode.compaction-to-list-of-lists">compaction to list of lists</a></code>
-                      error has been detected and processing is aborted.</li>
-                  </ol>
-                </li>
-                <li>
-                  If <i>container</i> is <code>@language</code> or
-                  <code>@index</code>:
-                  <ol class="algorithm">
-                    <li>If <i>item active property</i> is not a key in
-                      <i>result</i>, initialize it to an empty <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>.
-                      Initialize <i>map object</i> to the value of <i>item active property</i>
-                      in <i>result</i>.</li>
-                    <li>If <i>container</i> is <code>@language</code> and
-                      <i>compacted item</i> contains the key
-                      <code>@value</code>, then set <i>compacted item</i>
-                      to the value associated with its <code>@value</code> key.</li>
-                    <li>Initialize <i>map key</i> to the value associated with
-                      with the key that equals <i>container</i> in
-                      <i>expanded item</i>.</li>
-                    <li>If <i>map key</i> is not a key in <i>map object</i>,
-                      then set this key's value in <i>map object</i>
-                      to <i>compacted item</i>. Otherwise, if the value
-                      is not an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>, then set it to one
-                      containing only the value and then append
-                      <i>compacted item</i> to it.</li>
-                  </ol>
-                </li>
-                <li>
-                  Otherwise,
-                  <ol class="algorithm">
-                    <li>If
-                      <code class="idlMemberName"><a href="#widl-JsonLdOptions-compactArrays">compactArrays</a></code>
-                      is <a class="tref internalDFN" title="false" href="#dfn-false">false</a>, <i>container</i> is <code>@set</code> or
-                      <code>@list</code>, or <i>expanded property</i> is
-                      <code>@list</code> or <code>@graph</code> and
-                      <i>compacted item</i> is not an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>,
-                      set it to a new <a class="tref internalDFN" title="array" href="#dfn-array">array</a>
-                      containing only <i>compacted item</i>.</li>
-                    <li>If <i>item active property</i> is not a key in
-                      <i>result</i> then add the key-value pair,
-                      (<i>item active property</i>-<i>compacted item</i>),
-                      to <i>result</i>.</li>
-                    <li>Otherwise, if the value associated with the key that
-                      equals <i>item active property</i> in <i>result</i>
-                      is not an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>, set it to a new
-                      <a class="tref internalDFN" title="array" href="#dfn-array">array</a> containing only the value. Then
-                      append <i>compacted item</i> to the value if
-                      <i>compacted item</i> is not an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>,
-                      otherwise, concatenate it.</li>
-                  </ol>
-                </li>
-              </ol>
-            </li>
-          </ol>
-        </li>
-        <li>Return <i>result</i>.</li>
-      </ol>
-
-      <p>If, after the algorithm outlined above is run, the result <i>result</i>
-        is an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>, replace it with a new
-        <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> with a single member whose key is the result
-        of using the <a href="#iri-compaction"><abbr title="Internationalized Resource Identifier">IRI</abbr> Compaction algorithm</a>,
-        passing <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a>, and
-        <code>@graph</code> as <i>iri</i> and whose value is the <a class="tref internalDFN" title="array" href="#dfn-array">array</a>
-        <i>result</i>. Finally, if a non-empty <i>context</i> has been passed,
-        add an <code>@context</code> member to <i>result</i> and set its value
-        to the passed <i>context</i>.</p>
-    </section>
-  </section> <!-- end of Compaction -->
-
-  <section id="inverse-context-creation">
-    <h3><span class="secno">8.2 </span>Inverse Context Creation</h3>
-
-    <p>When there is more than one <a class="tref internalDFN" title="term" href="#dfn-term">term</a> that could be chosen
-      to compact an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>, it has to be ensured that the <a class="tref internalDFN" title="term" href="#dfn-term">term</a>
-      selection is both deterministic and represents the most context-appropriate
-      choice whilst taking into consideration algorithmic complexity.</p>
-
-    <p>In order to make <a class="tref internalDFN" title="term" href="#dfn-term">term</a> selections, the concept of an
-      <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a> is introduced. An <dfn title="inverse-context" id="dfn-inverse-context">inverse context</dfn>
-      is essentially a reverse lookup table that maps
-      <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mappings</a>,
-      <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mappings</a>, and
-      <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mappings</a> to a simple
-      <a class="tref internalDFN" title="term" href="#dfn-term">term</a> for a given <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>. A
-      <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a> only needs to be generated for an
-      <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> if it is being used for <a class="tref internalDFN" title="compaction" href="#dfn-compaction">compaction</a>.</p>
-
-    <p>To make use of an <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a>, a list of preferred
-      <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mappings</a> and the
-      <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a> or <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mapping</a> are gathered
-      for a particular value associated with an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>. These parameters
-      are then fed to the <a href="#term-selection">Term Selection algorithm</a>,
-      which will find the <a class="tref internalDFN" title="term" href="#dfn-term">term</a> that most appropriately
-      matches the value's mappings.</p>
-
-    <section class="informative">
-      <h4 id="overview-6">Overview</h4><p><em>This section is non-normative.</em></p>
-
-      <p>To create an <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a> for a given
-        <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, each <a class="tref internalDFN" title="term" href="#dfn-term">term</a> in the
-        <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> is visited, ordered by length, shortest
-        first (ties are broken by choosing the lexicographically least
-        <a class="tref internalDFN" title="term" href="#dfn-term">term</a>). For each <a class="tref internalDFN" title="term" href="#dfn-term">term</a>, an entry is added to
-        the <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a> for each possible combination of
-        <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mapping</a> and <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a>
-        or <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mapping</a> that would legally match the
-        <a class="tref internalDFN" title="term" href="#dfn-term">term</a>. Illegal matches include differences between a
-        value's <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a> or <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mapping</a> and
-        that of the <a class="tref internalDFN" title="term" href="#dfn-term">term</a>. If a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> has no
-        <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mapping</a>, <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a>, or
-        <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mapping</a> (or some combination of these), then it
-        will have an entry in the <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a> using the special
-        key <code>@none</code>. This allows the
-        <a href="#term-selection">Term Selection algorithm</a> to fall back
-        to choosing more generic <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> when a more
-        specifically-matching <a class="tref internalDFN" title="term" href="#dfn-term">term</a> is not available for a particular
-        <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> and value combination.</p>
-    </section>
-
-    <section>
-      <h4 id="algorithm-6">Algorithm</h4>
-
-      <p>The algorithm takes one required input: the <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> that
-        the <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a> is being created for.</p>
-
-      <ol class="algorithm">
-        <li>Initialize <i>result</i> to an empty <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>.</li>
-        <li>Initialize <i>default language</i> to <code>@none</code>. If the
-          <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> has a <a class="tref internalDFN" title="default-language" href="#dfn-default-language">default language</a>,
-          set <i>default language</i> to it.</li>
-        <li>For each key <a class="tref internalDFN" title="term" href="#dfn-term">term</a> and value <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> in
-          the <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, ordered by shortest <a class="tref internalDFN" title="term" href="#dfn-term">term</a>
-          first (breaking ties by choosing the lexicographically least
-          <a class="tref internalDFN" title="term" href="#dfn-term">term</a>):
-          <ol class="algorithm">
-            <li>If the <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a>,
-              <a class="tref internalDFN" title="term" href="#dfn-term">term</a> cannot be selected during <a class="tref internalDFN" title="compaction" href="#dfn-compaction">compaction</a>,
-              so continue to the next <a class="tref internalDFN" title="term" href="#dfn-term">term</a>.</li>
-            <li>Initialize <i>container</i> to <code>@none</code>. If there
-              is a <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mapping</a> in
-              <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a>, set <i>container</i> to
-              its associated value.</li>
-            <li>Initialize <i>iri</i> to the value of the <a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a>
-              for the <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a>.</li>
-            <li>If <i>iri</i> is not a key in <i>result</i>, add
-              a key-value pair where the key is <i>iri</i> and the value
-              is an empty <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> to <i>result</i>.</li>
-            <li>Reference the value associated with the <i>iri</i> member in
-              <i>result</i> using the variable <i>container map</i>.</li>
-            <li>If <i>container map</i> has no <i>container</i> member,
-              create one and set its value to a new
-              <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> with two members. The first member is
-              <code>@language</code> and its value is a new empty
-              <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>, the second member is <code>@type</code>
-              and its value is a new empty <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>.</li>
-            <li>Reference the value associated with the <i>container</i> member
-              in <i>container map</i> using the variable <i>type/language map</i>.</li>
-            <li>If the <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> indicates that the <a class="tref internalDFN" title="term" href="#dfn-term">term</a>
-              represents a <a class="tref internalDFN" title="reverse-property" href="#dfn-reverse-property">reverse property</a>:
-              <ol class="algorithm">
-                <li>Reference the value associated with the <code>@type</code>
-                  member in <i>type/language map</i> using the variable
-                  <i>type map</i>.</li>
-                <li>If <i>type map</i> does not have a <code>@reverse</code>
-                  member, create one and set its value to the <a class="tref internalDFN" title="term" href="#dfn-term">term</a>
-                  being processed.</li>
-              </ol>
-            </li>
-            <li>Otherwise, if <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> has a
-              <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a>:
-              <ol class="algorithm">
-                <li>Reference the value associated with the <code>@type</code>
-                  member in <i>type/language map</i> using the variable
-                  <i>type map</i>.</li>
-                <li>If <i>type map</i> does not have a member corresponding
-                  to the <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a> in <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a>,
-                  create one and set its value to the <a class="tref internalDFN" title="term" href="#dfn-term">term</a>
-                  being processed.</li>
-              </ol>
-            </li>
-            <li>Otherwise, if <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> has a
-              <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mapping</a> (might be <a class="tref internalDFN" title="null" href="#dfn-null">null</a>):
-              <ol class="algorithm">
-                <li>Reference the value associated with the <code>@language</code>
-                  member in <i>type/language map</i> using the variable
-                  <i>language map</i>.</li>
-                <li>If the <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mapping</a> equals <a class="tref internalDFN" title="null" href="#dfn-null">null</a>,
-                  set <i>language</i> to <code>@null</code>; otherwise set it
-                  to the language code in <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mapping</a>.</li>
-                <li>If <i>language map</i> does not have a <i>language</i> member,
-                  create one and set its value to the <a class="tref internalDFN" title="term" href="#dfn-term">term</a>
-                  being processed.</li>
-              </ol>
-            </li>
-            <li>Otherwise:
-              <ol class="algorithm">
-                <li>Reference the value associated with the <code>@language</code>
-                  member in <i>type/language map</i> using the variable
-                  <i>language map</i>.</li>
-                <li>If <i>language map</i> does not have a <i>default language</i>
-                  member, create one and set its value to the <a class="tref internalDFN" title="term" href="#dfn-term">term</a>
-                  being processed.</li>
-                <li>If <i>language map</i> does not have a <code>@none</code>
-                  member, create one and set its value to the <a class="tref internalDFN" title="term" href="#dfn-term">term</a>
-                  being processed.</li>
-                <li>Reference the value associated with the <code>@type</code>
-                  member in <i>type/language map</i> using the variable
-                  <i>type map</i>.</li>
-                <li>If <i>type map</i> does not have a <code>@none</code>
-                  member, create one and set its value to the <a class="tref internalDFN" title="term" href="#dfn-term">term</a>
-                  being processed.</li>
-              </ol>
-            </li>
-          </ol>
-        </li>
-        <li>Return <i>result</i>.</li>
-      </ol>
-    </section>
-  </section> <!-- end of Inverse Context Creation -->
-
-  <section id="iri-compaction">
-    <h3><span class="secno">8.3 </span><abbr title="Internationalized Resource Identifier">IRI</abbr> Compaction</h3>
-
-    <p>This algorithm compacts an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> to a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> or
-      <a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, or a <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> to a
-      <a class="tref internalDFN" title="keyword-alias" href="#dfn-keyword-alias">keyword alias</a>. A value that is associated with the
-      <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> may be passed in order to assist in selecting the most
-      context-appropriate <a class="tref internalDFN" title="term" href="#dfn-term">term</a>.</p>
-
-    <section class="informative">
-      <h4 id="overview-7">Overview</h4><p><em>This section is non-normative.</em></p>
-
-      <p>If the passed <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, we simply
-        return <a class="tref internalDFN" title="null" href="#dfn-null">null</a>. Otherwise, we first try to find a <a class="tref internalDFN" title="term" href="#dfn-term">term</a>
-        that the <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> can be compacted to if
-        it is relative to <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context's</a>
-        <a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">vocabulary mapping</a>. In order to select the most appropriate
-        <a class="tref internalDFN" title="term" href="#dfn-term">term</a>, we may have to collect information about the passed
-        <i>value</i>. This information includes which
-        <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mappings</a>
-        would be preferred for expressing the <i>value</i>, and what its
-        <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a> or <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mapping</a> is. For
-        <a class="tref internalDFN" title="list-object" href="#dfn-list-object">JSON-LD lists</a>, the <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a>
-        or <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mapping</a> will be chosen based on the most
-        specific values that work for all items in the list. Once this
-        information is gathered, it is passed to the
-        <a href="#term-selection">Term Selection algorithm</a>, which will
-        return the most appropriate <a class="tref internalDFN" title="term" href="#dfn-term">term</a> to use.</p>
-
-      <p>If no <a class="tref internalDFN" title="term" href="#dfn-term">term</a> was found that could be used to compact the
-        <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>, an attempt is made to compact the <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> using the
-        <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context's</a> <a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">vocabulary mapping</a>,
-        if there is one. If the <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> could not be compacted, an
-        attempt is made to find a <a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>. If there is no
-        appropriate <a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, the <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> is
-        transformed to a <a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a> using the document's
-        <a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">base <abbr title="Internationalized Resource Identifier">IRI</abbr></a>. Finally, if the <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or
-        <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> still could not be compacted, it is returned
-        as is.</p>
-    </section>
-
-    <section>
-      <h4 id="algorithm-7">Algorithm</h4>
-
-      <p>This algorithm takes three required inputs and three optional inputs.
-        The required inputs are an <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, an <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a>,
-        and the <i>iri</i> to be compacted. The optional inputs are a <i>value</i> associated
-        with the <i>iri</i>, a <i>vocab</i> flag which specifies whether the
-        passed <i>iri</i> should be compacted using the
-        <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context's</a>
-        <a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">vocabulary mapping</a>, and a <i>reverse</i> flag which specifies whether
-        a <a class="tref internalDFN" title="reverse-property" href="#dfn-reverse-property">reverse property</a> is being compacted. If not passed, <i>value</i> is set to
-        <a class="tref internalDFN" title="null" href="#dfn-null">null</a> and <i>vocab</i> and <i>reverse</i> are both set to
-        <code>false</code>.</p>
-
-      <ol class="algorithm">
-        <li>If <i>iri</i> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, return <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</li>
-        <li>If <i>vocab</i> is <a class="tref internalDFN" title="true" href="#dfn-true">true</a> and <i>iri</i> is a
-          key in <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a>:
-          <ol class="algorithm">
-            <li>Initialize <i>default language</i> to
-              <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context's</a>
-              <a class="tref internalDFN" title="default-language" href="#dfn-default-language">default language</a>, if it has one, otherwise to
-              <code>@none</code>.</li>
-            <li>Initialize <i>containers</i> to an empty <a class="tref internalDFN" title="array" href="#dfn-array">array</a>. This
-              <a class="tref internalDFN" title="array" href="#dfn-array">array</a> will be used to keep track of an ordered list of
-              preferred <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mappings</a>
-              for a <a class="tref internalDFN" title="term" href="#dfn-term">term</a>, based on what is compatible with
-              <i>value</i>.</li>
-            <li>Initialize <i>type/language</i> to <code>@language</code>,
-              and <i>type/language value</i> to <code>@null</code>. These two
-              variables will keep track of the preferred
-              <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a> or <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mapping</a> for
-              a <a class="tref internalDFN" title="term" href="#dfn-term">term</a>, based on what is compatible with <i>value</i>.</li>
-            <li>If <i>value</i> is a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> that contains the
-              key <code>@index</code>, then append the value <code>@index</code>
-              to <i>containers</i>.</li>
-            <li>If <i>reverse</i> is <a class="tref internalDFN" title="true" href="#dfn-true">true</a>, set <i>type/language</i>
-              to <code>@type</code>, <i>type/language value</i> to
-              <code>@reverse</code>, and append <code>@set</code> to <i>containers</i>.</li>
-            <li>Otherwise, if <i>value</i> is a <a class="tref internalDFN" title="list-object" href="#dfn-list-object">list object</a>, then set
-              <i>type/language</i> and <i>type/language value</i>
-              to the most specific values that work for all items in
-              the list as follows:
-              <ol class="algorithm">
-                <li>If <code>@index</code> is a not key in <i>value</i>, then
-                  append <code>@list</code> to <i>containers</i>.</li>
-                <li>Initialize <i>list</i> to the <a class="tref internalDFN" title="array" href="#dfn-array">array</a> associated
-                  with the key <code>@list</code> in <i>value</i>.</li>
-                <li>Initialize <i>common type</i> and <i>common language</i> to <a class="tref internalDFN" title="null" href="#dfn-null">null</a>. If
-                  <i>list</i> is empty, set <i>common language</i> to
-                  <i>default language</i>.</li>
-                <li>For each <i>item</i> in <i>list</i>:
-                  <ol class="algorithm">
-                    <li>Initialize <i>item language</i> to <code>@none</code> and
-                      <i>item type</i> to <code>@none</code>.</li>
-                    <li>If <i>item</i> contains the key <code>@value</code>:
-                      <ol class="algorithm">
-                        <li>If <i>item</i> contains the key <code>@language</code>,
-                          then set <i>item language</i> to its associated
-                          value.</li>
-                        <li>Otherwise, if <i>item</i> contains the key
-                          <code>@type</code>, set <i>item type</i> to its
-                          associated value.</li>
-                        <li>Otherwise, set <i>item language</i> to
-                          <code>@null</code>.</li>
-                      </ol>
-                    </li>
-                    <li>Otherwise, set <i>item type</i> to <code>@id</code>.</li>
-                    <li>If <i>common language</i> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, set it
-                      to <i>item language</i>.</li>
-                    <li>Otherwise, if <i>item language</i> does not equal
-                      <i>common language</i> and <i>item</i> contains the
-                      key <code>@value</code>, then set <i>common language</i>
-                      to <code>@none</code> because list items have conflicting
-                      languages.</li>
-                    <li>If <i>common type</i> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, set it
-                      to <i>item type</i>.</li>
-                    <li>Otherwise, if <i>item type</i> does not equal
-                      <i>common type</i>, then set <i>common type</i>
-                      to <code>@none</code> because list items have conflicting
-                      types.</li>
-                    <li>If <i>common language</i> is <code>@none</code> and
-                      <i>common type</i> is <code>@none</code>, then
-                      stop processing items in the list because it has been
-                      detected that there is no common language or type amongst
-                      the items.</li>
-                  </ol>
-                </li>
-                <li>If <i>common language</i> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, set it to
-                  <code>@none</code>.</li>
-                <li>If <i>common type</i> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, set it to
-                  <code>@none</code>.</li>
-                <li>If <i>common type</i> is not <code>@none</code> then set
-                  <i>type/language</i> to <code>@type</code> and
-                  <i>type/language value</i> to <i>common type</i>.</li>
-                <li>Otherwise, set <i>type/language value</i> to
-                  <i>common language</i>.</li>
-              </ol>
-            </li>
-            <li>Otherwise:
-              <ol class="algorithm">
-                <li>If <i>value</i> is a <a class="tref internalDFN" title="value-object" href="#dfn-value-object">value object</a>:
-                  <ol class="algorithm">
-                    <li>If <i>value</i> contains the key <code>@language</code>
-                      and does not contain the key <code>@index</code>,
-                      then set <i>type/language value</i> to its associated
-                      value and append <code>@language</code> to
-                      <i>containers</i>.</li>
-                    <li>Otherwise, if <i>value</i> contains the key
-                      <code>@type</code>, then set <i>type/language value</i> to
-                      its associated value and set <i>type/language</i> to
-                      <code>@type</code>.</li>
-                  </ol>
-                </li>
-                <li>Otherwise, set <i>type/language</i> to <code>@type</code>
-                  and set <i>type/language value</i> to <code>@id</code>.</li>
-                <li>Append <code>@set</code> to <i>containers</i>.</li>
-              </ol>
-            </li>
-            <li>Append <code>@none</code> to <i>containers</i>. This represents
-              the non-existence of a <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mapping</a>, and it will
-              be the last <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mapping</a> value to be checked as it
-              is the most generic.</li>
-            <li>If <i>type/language value</i> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, set it to
-              <code>@null</code>. This is the key under which <a class="tref internalDFN" title="null" href="#dfn-null">null</a> values
-              are stored in the <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a> <i>entry</i>.</li>
-            <li>Initialize <i>preferred values</i> to an empty <a class="tref internalDFN" title="array" href="#dfn-array">array</a>.
-              This <a class="tref internalDFN" title="array" href="#dfn-array">array</a> will indicate, in order, the preferred values for
-              a <a class="tref internalDFN" title="term" href="#dfn-term">term's</a> <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a> or
-              <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mapping</a>.</li>
-            <li>If <i>type/language value</i> is <code>@reverse</code>, append
-              <code>@reverse</code> to <i>preferred values</i>.</li>
-            <li>If <i>type/language value</i> is <code>@id</code> or <code>@reverse</code>
-              and <i>value</i> has an <code>@id</code> member:
-              <ol class="algorithm">
-                <li>If the result of using the
-                  <a href="#iri-compaction"><abbr title="Internationalized Resource Identifier">IRI</abbr> compaction algorithm</a>,
-                  passing <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a>,
-                  the value associated with the <code>@id</code> key in <i>value</i> for
-                  <i>iri</i>, <a class="tref internalDFN" title="true" href="#dfn-true">true</a> for <i>vocab</i>, and
-                  <a class="tref internalDFN" title="true" href="#dfn-true">true</a> for <i>document relative</i> has a
-                  <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> in the <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>
-                  with an <a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a> that equals the value associated
-                  with the <code>@id</code> key in <i>value</i>,
-                  then append <code>@vocab</code>, <code>@id</code>, and
-                  <code>@none</code>, in that order, to <i>preferred values</i>.</li>
-                <li>Otherwise, append <code>@id</code>, <code>@vocab</code>, and
-                  <code>@none</code>, in that order, to <i>preferred values</i>.</li>
-              </ol>
-            </li>
-            <li>Otherwise, append <i>type/language value</i> and <code>@none</code>, in
-              that order, to <i>preferred values</i>.</li>
-            <li>Initialize <i>term</i> to the result of the
-              <a href="#term-selection">Term Selection algorithm</a>, passing
-              <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a>, <i>iri</i>, <i>containers</i>,
-              <i>type/language</i>, and <i>preferred values</i>.</li>
-            <li>If <i>term</i> is not <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, return <i>term</i>.</li>
-          </ol>
-        </li>
-        <li>At this point, there is no simple <a class="tref internalDFN" title="term" href="#dfn-term">term</a> that <i>iri</i>
-          can be compacted to. If <i>vocab</i> is <a class="tref internalDFN" title="true" href="#dfn-true">true</a> and
-          <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> has a <a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">vocabulary mapping</a>:
-          <ol class="algorithm">
-            <li>If <i>iri</i> begins with the
-              <a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">vocabulary mapping's</a> value
-              but is longer, then initialize <i>suffix</i> to the substring
-              of <i>iri</i> that does not match. If <i>suffix</i> does not
-              have a <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> in <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>,
-              then return <i>suffix</i>.</li>
-          </ol>
-        </li>
-        <li>The <i>iri</i> could not be compacted using the
-          <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context's</a> <a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">vocabulary mapping</a>.
-          Try to create a <a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, starting by initializing
-          <i>compact <abbr title="Internationalized Resource Identifier">IRI</abbr></i> to <a class="tref internalDFN" title="null" href="#dfn-null">null</a>. This variable will be used to
-          tore the created <a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, if any.</li>
-        <li>For each key <a class="tref internalDFN" title="term" href="#dfn-term">term</a> and value <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> in
-          the <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>:
-          <ol class="algorithm">
-            <li>If the <a class="tref internalDFN" title="term" href="#dfn-term">term</a> contains a colon (<code>:</code>),
-              then continue to the next <a class="tref internalDFN" title="term" href="#dfn-term">term</a> because
-              <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> with colons can't be
-              used as <a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefixes</a>.</li>
-            <li>If the <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a>,
-              its <a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a> equals <i>iri</i>, or its
-              <a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a> is not a substring at the beginning of
-              <i>iri</i>, the <a class="tref internalDFN" title="term" href="#dfn-term">term</a> cannot be used as a <a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a>
-              because it is not a partial match with <i>iri</i>.
-              Continue with the next <a class="tref internalDFN" title="term" href="#dfn-term">term</a>.</li>
-            <li>Initialize <i>candidate</i> by concatenating <a class="tref internalDFN" title="term" href="#dfn-term">term</a>,
-              a colon (<code>:</code>), and the substring of <i>iri</i>
-              that follows after the value of the
-              <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition's</a>
-              <a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a>.</li>
-            <li>If either <i>compact <abbr title="Internationalized Resource Identifier">IRI</abbr></i> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a> or <i>candidate</i> is
-              shorter or the same length but lexicographically less than
-              <i>compact <abbr title="Internationalized Resource Identifier">IRI</abbr></i> and <i>candidate</i> does not have a
-              <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> in <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> or if the
-              <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> has an <a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a>
-              that equals <i>iri</i> and <i>value</i> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a>,
-              set <i>compact <abbr title="Internationalized Resource Identifier">IRI</abbr></i> to <i>candidate</i>.</li>
-          </ol>
-        </li>
-        <li>If <i>compact <abbr title="Internationalized Resource Identifier">IRI</abbr></i> is not <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, return <i>compact <abbr title="Internationalized Resource Identifier">IRI</abbr></i>.</li>
-        <li>If <i>vocab</i> is <a class="tref internalDFN" title="false" href="#dfn-false">false</a> then
-          transform <i>iri</i> to a <a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a> using
-          the document's base <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</li>
-        <li>Finally, return <i>iri</i> as is.</li>
-      </ol>
-    </section>
-  </section> <!-- end of IRI Compaction -->
-
-  <section id="term-selection">
-    <h3><span class="secno">8.4 </span>Term Selection</h3>
-
-    <p>This algorithm, invoked via the <a href="#iri-compaction"><abbr title="Internationalized Resource Identifier">IRI</abbr> Compaction algorithm</a>,
-      makes use of an <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context's</a>
-      <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a> to find the <a class="tref internalDFN" title="term" href="#dfn-term">term</a> that is best
-      used to <a class="tref internalDFN" title="compaction" href="#dfn-compaction">compact</a> an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>. Other
-      information about a value associated with the <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> is given,
-      including which <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mappings</a>
-      and which <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a> or <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mapping</a> would
-      be best used to express the value.</p>
-
-    <section class="informative">
-      <h4 id="overview-8">Overview</h4><p><em>This section is non-normative.</em></p>
-
-      <p>The <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context's</a> entry for
-        the <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> will be first searched according to the preferred
-        <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mappings</a>, in the order
-        that they are given. Amongst <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> with a matching
-        <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mapping</a>, preference will be given to those
-        with a matching <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a> or <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mapping</a>,
-        over those without a <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a> or
-        <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mapping</a>. If there is no <a class="tref internalDFN" title="term" href="#dfn-term">term</a>
-        with a matching <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mapping</a> then the <a class="tref internalDFN" title="term" href="#dfn-term">term</a>
-        without a <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mapping</a> that matches the given
-        <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a> or <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mapping</a> is selected. If
-        there is still no selected <a class="tref internalDFN" title="term" href="#dfn-term">term</a>, then a <a class="tref internalDFN" title="term" href="#dfn-term">term</a>
-        with no <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a> or <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mapping</a> will
-        be selected if available. No <a class="tref internalDFN" title="term" href="#dfn-term">term</a> will be selected that
-        has a conflicting <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a> or <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mapping</a>.
-        Ties between <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> that have the same
-        mappings are resolved by first choosing the shortest terms, and then by
-        choosing the lexicographically least term. Note that these ties are
-        resolved automatically because they were previously resolved when the
-        <a href="#inverse-context-creation">Inverse Context Creation algorithm</a>
-        was used to create the <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a>.</p>
-    </section>
-
-    <section>
-      <h4 id="algorithm-8">Algorithm</h4>
-
-      <p>This algorithm has five required inputs. They are:
-        an <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a>, a <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> or <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>
-        <i>iri</i>, an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> <i>containers</i> that represents an
-        ordered list of preferred <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mappings</a>,
-        a <a class="tref internalDFN" title="string" href="#dfn-string">string</a> <i>type/language</i> that indicates whether
-        to look for a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> with a matching <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a>
-        or <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mapping</a>, and an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> representing
-        an ordered list of <i>preferred values</i> for the <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a>
-        or <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mapping</a> to look for.</p>
-
-      <ol class="algorithm">
-        <li>Initialize <i>container map</i> to the value associated with
-          <i>iri</i> in the <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a>.</li>
-        <li>For each item <i>container</i> in <i>containers</i>:
-          <ol class="algorithm">
-            <li>If <i>container</i> is not a key in <i>container map</i>, then
-              there is no <a class="tref internalDFN" title="term" href="#dfn-term">term</a> with a matching
-              <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mapping</a> for it, so continue to the next
-              <i>container</i>.</li>
-            <li>Initialize <i>type/language map</i> to the value associated
-              with the <i>container</i> member in <i>container map</i>.</li>
-            <li>Initialize <i>value map</i> to the value associated
-              with <i>type/language</i> member in <i>type/language map</i>.</li>
-            <li>For each <i>item</i> in <i>preferred values</i>:
-              <ol class="algorithm">
-                <li>If <i>item</i> is not a key in <i>value map</i>,
-                  then there is no <a class="tref internalDFN" title="term" href="#dfn-term">term</a> with a matching
-                  <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a> or <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mapping</a>,
-                  so continue to the next <i>item</i>.</li>
-                <li>Otherwise, a matching term has been found, return the value
-                  associated with the <i>item</i> member in
-                  <i>value map</i>.</li>
-              </ol>
-            </li>
-          </ol>
-        </li>
-        <li>No matching term has been found. Return <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</li>
-      </ol>
-    </section>
-  </section> <!-- end of Term Selection -->
-
-  <section id="value-compaction">
-    <h3><span class="secno">8.5 </span>Value Compaction</h3>
-
-    <p><a class="tref internalDFN" title="expansion" href="#dfn-expansion">Expansion</a> transforms all values into <a class="tref internalDFN" title="expanded-form" href="#dfn-expanded-form">expanded form</a>
-      in JSON-LD. This algorithm performs the opposite operation, transforming
-      a value into <dfn title="compacted-form" id="dfn-compacted-form">compacted form</dfn>. This algorithm compacts a
-      value according to the <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> in the given
-      <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> that is associated with the value's associated
-      <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>.</p>
-
-    <section class="informative">
-      <h4 id="overview-9">Overview</h4><p><em>This section is non-normative.</em></p>
-
-      <p>The <i>value</i> to compact has either an <code>@id</code> or an
-        <code>@value</code> member.</p>
-
-      <p>For the former case, if the <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a> of
-        <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a> is set to <code>@id</code> or <code>@vocab</code>
-        and <i>value</i> consists of only an <code>@id</code> member and, if
-        the <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mapping</a> of <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>
-        is set to <code>@index</code>, an <code>@index</code> member, <i>value</i>
-        can be compacted to a <a class="tref internalDFN" title="string" href="#dfn-string">string</a> by returning the result of
-        using the <a href="#iri-compaction"><abbr title="Internationalized Resource Identifier">IRI</abbr> Compaction algorithm</a>
-        to compact the value associated with the <code>@id</code> member.
-        Otherwise, <i>value</i> cannot be compacted and is returned as is.</p>
-
-      <p>For the latter case, it might be possible to compact <i>value</i>
-        just into the value associated with the <code>@value</code> member.
-        This can be done if the <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a> has a matching
-        <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a> or <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mapping</a> and there
-        is either no <code>@index</code> member or the <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mapping</a>
-        of <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a> is set to <code>@index</code>. It can
-        also be done if <code>@value</code> is the only member in <i>value</i>
-        (apart an <code>@index</code> member in case the <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mapping</a>
-        of <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a> is set to <code>@index</code>) and
-        either its associated value is not a <a class="tref internalDFN" title="string" href="#dfn-string">string</a>, there is
-        no <a class="tref internalDFN" title="default-language" href="#dfn-default-language">default language</a>, or there is an explicit
-        <a class="tref internalDFN" title="null" href="#dfn-null">null</a> <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mapping</a> for the
-        <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>.</p>
-    </section>
-
-    <section>
-      <h4 id="algorithm-9">Algorithm</h4>
-
-      <p>This algorithm has four required inputs: an <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, an
-        <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a>,  an <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>, and a <i>value</i>
-        to be compacted.</p>
-
-      <ol class="algorithm">
-        <li>Initialize <i>number members</i> to the number of members
-          <i>value</i> contains.</li>
-        <li>If <i>value</i> has an <code>@index</code> member and the
-          <a class="tref internalDFN" title="container-mapping" href="#dfn-container-mapping">container mapping</a> associated to <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>
-          is set to <code>@index</code>, decrease <i>number members</i> by
-          <code>1</code>.</li>
-        <li>If <i>number members</i> is greater than <code>2</code>, return
-          <i>value</i> as it cannot be compacted.</li>
-        <li>If <i>value</i> has an <code>@id</code> member:
-          <ol class="algorithm">
-            <li>If <i>number members</i> is <code>1</code> and
-              the <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a> of <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>
-              is set to <code>@id</code>, return the result of using the
-              <a href="#iri-compaction"><abbr title="Internationalized Resource Identifier">IRI</abbr> compaction algorithm</a>,
-              passing <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a>,
-              and the value of the <code>@id</code> member for <i>iri</i>.</li>
-            <li>Otherwise, if <i>number members</i> is <code>1</code> and
-              the <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a> of <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>
-              is set to <code>@vocab</code>, return the result of using the
-              <a href="#iri-compaction"><abbr title="Internationalized Resource Identifier">IRI</abbr> compaction algorithm</a>,
-              passing <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, <a class="tref internalDFN" title="inverse-context" href="#dfn-inverse-context">inverse context</a>,
-              the value of the <code>@id</code> member for <i>iri</i>, and
-              <a class="tref internalDFN" title="true" href="#dfn-true">true</a> for <i>vocab</i>.</li>
-            <li>Otherwise, return <i>value</i> as is.</li>
-          </ol>
-        </li>
-        <li>Otherwise, if <i>value</i> has an <code>@type</code> member whose
-          value matches the <a class="tref internalDFN" title="type-mapping" href="#dfn-type-mapping">type mapping</a> of <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>,
-          return the value associated with the <code>@value</code> member
-          of <i>value</i>.</li>
-        <li>Otherwise, if <i>value</i> has an <code>@language</code> member whose
-          value matches the <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mapping</a> of
-          <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>, return the value associated with the
-          <code>@value</code> member of <i>value</i>.</li>
-        <li>Otherwise, if <i>number members</i> equals <code>1</code> and either
-          the value of the <code>@value</code> member is not a <a class="tref internalDFN" title="string" href="#dfn-string">string</a>,
-          or the <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> has no <a class="tref internalDFN" title="default-language" href="#dfn-default-language">default language</a>,
-          or the <a class="tref internalDFN" title="language-mapping" href="#dfn-language-mapping">language mapping</a> of <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>
-          is set to <a class="tref internalDFN" title="null" href="#dfn-null">null</a>,, return the value associated with the
-          <code>@value</code> member.</li>
-        <li>Otherwise, return <i>value</i> as is.</li>
-      </ol>
-    </section>
-  </section> <!-- end of Value Compaction algorithm -->
-</section> <!-- end of Compaction section -->
-
-
-<section id="flattening-algorithms">
-  <!--OddPage--><h2><span class="secno">9. </span>Flattening Algorithms</h2>
-
-  <section id="flattening-algorithm">
-    <h3><span class="secno">9.1 </span>Flattening Algorithm</h3>
-
-    <p>This algorithm flattens an expanded JSON-LD document by collecting all
-      properties of a <a class="tref internalDFN" title="node" href="#dfn-node">node</a> in a single <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>
-      and labeling all <a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">blank nodes</a> with
-      <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifiers</a>.
-      This resulting uniform shape of the document, may drastically simplify
-      the code required to process JSON-LD data in certain applications.</p>
-
-    <section class="informative">
-      <h4 id="overview-10">Overview</h4><p><em>This section is non-normative.</em></p>
-
-      <p>First, a <i>node map</i> is generated using the
-        <a href="#node-map-generation">Node Map Generation algorithm</a>
-        which collects all properties of a <a class="tref internalDFN" title="node" href="#dfn-node">node</a> in a single
-        <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>. In the next step, the <i>node map</i> is
-        converted to a JSON-LD document in
-        <a class="tref externalDFN" title="flattened-document-form" href="http://www.w3.org/TR/2013/CR-json-ld-20130822/#flattened-document-form">flattened document form</a>.
-        Finally, if a <a class="tref internalDFN" title="context" href="#dfn-context">context</a> has been passed, the flattened document
-        is compacted using the <a href="#compaction-algorithm">Compaction algorithm</a>
-        before being returned.</p>
-    </section>
-
-    <section>
-      <h4 id="algorithm-10">Algorithm</h4>
-
-      <p>The algorithm takes two input variables, an <i>element</i> to flatten and
-        an optional <i>context</i> used to compact the flattened document. If not
-        passed, <i>context</i> is set to <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</p>
-
-      <p>This algorithm generates new <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifiers</a>
-        and relabels existing <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifiers</a>.
-        The used <a href="#generate-blank-node-identifier">Generate Blank Node Identifier algorithm</a>
-        keeps an <i>identifier map</i> and a <i>counter</i> to ensure consistent
-        relabeling and avoid collisions. Thus, before this algorithm is run,
-        the <i>identifier map</i> is reset and the <i>counter</i> is initialized
-        to <code>0</code>.</p>
-
-      <ol class="algorithm">
-        <li>Initialize <i>node map</i> to a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> consisting of
-          a single member whose key is <code>@default</code> and whose value is
-          an empty <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>.</li>
-        <li>Perform the <a href="#node-map-generation">Node Map Generation algorithm</a>, passing
-          <i>element</i> and <i>node map</i>.</li>
-        <li>Initialize <i>default graph</i> to the value of the <code>@default</code>
-          member of <i>node map</i>, which is a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> representing
-          the <a class="tref internalDFN" title="default-graph" href="#dfn-default-graph">default graph</a>.</li>
-        <li>For each key-value pair <i>graph name</i>-<i>graph</i> in <i>node map</i>
-          where <i>graph name</i> is not <code>@default</code>,  perform the following steps:
-          <ol class="algorithm">
-            <li>If <i>default graph</i> does not have a <i>graph name</i> member, create
-              one and initialize its value to a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> consisting of an
-              <code>@id</code> member whose value is set to <i>graph name</i>.</li>
-            <li>Reference the value associated with the <i>graph name</i> member in
-              <i>default graph</i> using the variable <i>entry</i>.</li>
-            <li>Add an <code>@graph</code> member to <i>entry</i> and set it to an
-              empty <a class="tref internalDFN" title="array" href="#dfn-array">array</a>.</li>
-            <li>For each <i>id</i>-<i>node</i> pair in <i>graph</i> ordered by <i>id</i>,
-              add <i>node</i> to the <code>@graph</code> member of <i>entry</i>,
-              unless the only member of <i>node</i> is <code>@id</code>.</li>
-          </ol>
-        </li>
-        <li>Initialize an empty <a class="tref internalDFN" title="array" href="#dfn-array">array</a> <i>flattened</i>.</li>
-        <li>For each <i>id</i>-<i>node</i> pair in <i>default graph</i> ordered by <i>id</i>,
-          add <i>node</i> to <i>flattened</i>,
-          unless the only member of <i>node</i> is <code>@id</code>.</li>
-        <li>If <i>context</i> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, return <i>flattened</i>.</li>
-        <li>Otherwise, return the result of compacting <i>flattened</i> according the
-          <a href="#compaction-algorithm">Compaction algorithm</a> passing <i>context</i>
-          ensuring that the compaction result has only the <code>@graph</code> keyword (or its alias)
-          at the top-level other than <code>@context</code>, even if the context is empty or if there is only one element to
-          put in the <code>@graph</code> <a class="tref internalDFN" title="array" href="#dfn-array">array</a>. This ensures that the returned
-          document has a deterministic structure.</li>
-      </ol>
-    </section>
-  </section> <!-- end of Flattening Algorithm -->
-
-  <section id="node-map-generation">
-    <h3><span class="secno">9.2 </span>Node Map Generation</h3>
-
-    <p>This algorithm creates a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> <i>node map</i> holding an indexed
-      representation of the <a class="tref internalDFN" title="graph" href="#dfn-graph">graphs</a> and <a class="tref internalDFN" title="node" href="#dfn-node">nodes</a>
-      represented in the passed expanded document. All <a class="tref internalDFN" title="node" href="#dfn-node">nodes</a> that are not
-      uniquely identified by an <abbr title="Internationalized Resource Identifier">IRI</abbr> get assigned a (new) <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifier</a>.
-      The resulting <i>node map</i> will have a member for every graph in the document whose
-      value is another object with a member for every <a class="tref internalDFN" title="node" href="#dfn-node">node</a> represented in the document.
-      The default graph is stored under the <code>@default</code> member, all other graphs are
-      stored under their <a class="tref internalDFN" title="graph-name" href="#dfn-graph-name">graph name</a>.</p>
-
-    <section class="informative">
-      <h4 id="overview-11">Overview</h4><p><em>This section is non-normative.</em></p>
-
-      <p>The algorithm recursively runs over an expanded JSON-LD document to
-        collect all <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 single <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>. The algorithm constructs a
-        <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> <i>node map</i> whose keys represent the
-        <a class="tref internalDFN" title="graph-name" href="#dfn-graph-name">graph names</a> used in the document
-        (the <a class="tref internalDFN" title="default-graph" href="#dfn-default-graph">default graph</a> is stored under the key <code>@default</code>)
-        and whose associated values are <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON objects</a>
-        which index the <a class="tref internalDFN" title="node" href="#dfn-node">nodes</a> in the
-        <a class="tref internalDFN" title="graph" href="#dfn-graph">graph</a>. If a
-        <a class="tref internalDFN" title="property" href="#dfn-property">property's</a> value is a <a class="tref internalDFN" title="node-object" href="#dfn-node-object">node object</a>,
-        it is replaced by a <a class="tref internalDFN" title="node-object" href="#dfn-node-object">node object</a> consisting of only an
-        <code>@id</code> member. If a <a class="tref internalDFN" title="node-object" href="#dfn-node-object">node object</a> has no <code>@id</code>
-        member or it is identified by a <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifier</a>,
-        a new <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifier</a> is generated. This relabeling
-        of <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifiers</a> is
-        also done for <a class="tref internalDFN" title="property" href="#dfn-property">properties</a> and values of
-        <code>@type</code>.</p>
-    </section>
-
-    <section>
-      <h4 id="algorithm-11">Algorithm</h4>
-
-      <p>The algorithm takes as input an expanded JSON-LD document <i>element</i> and a reference to
-        a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> <i>node map</i>. Furthermore it has the optional parameters
-        <a class="tref internalDFN" title="active-graph" href="#dfn-active-graph">active graph</a> (which defaults to <code>@default</code>), an <a class="tref internalDFN" title="active-subject" href="#dfn-active-subject">active subject</a>,
-        <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>, and a reference to a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> <i>list</i>. If
-        not passed, <a class="tref internalDFN" title="active-subject" href="#dfn-active-subject">active subject</a>, <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>, and <i>list</i> are
-        set to <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</p>
-
-      <ol class="algorithm">
-        <li>If <i>element</i> is an array, process each <i>item</i> in <i>element</i>
-          as follows and then return:
-          <ol class="algorithm">
-            <li>Run this algorithm recursively by passing <i>item</i> for <i>element</i>,
-              <i>node map</i>, <a class="tref internalDFN" title="active-graph" href="#dfn-active-graph">active graph</a>, <a class="tref internalDFN" title="active-subject" href="#dfn-active-subject">active subject</a>,
-              <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>, and <i>list</i>.</li>
-          </ol>
-        </li>
-        <li>Otherwise <i>element</i> is a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>. Reference the
-          <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> which is the value of the <a class="tref internalDFN" title="active-graph" href="#dfn-active-graph">active graph</a>
-          member of <i>node map</i> using the variable <i>graph</i>. If the
-          <a class="tref internalDFN" title="active-subject" href="#dfn-active-subject">active subject</a> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, set <i>node</i> to <a class="tref internalDFN" title="null" href="#dfn-null">null</a>
-          otherwise reference the <a class="tref internalDFN" title="active-subject" href="#dfn-active-subject">active subject</a> member of <i>graph</i> using the
-          variable <i>node</i>.</li>
-        <li>If <i>element</i> has an <code>@type</code> member, perform for each
-          <i>item</i> the following steps:
-          <ol class="algorithm">
-            <li>If <i>item</i> is a <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifier</a>, replace it with a newly
-              <a href="#generate-blank-node-identifier">generated blank node identifier</a>
-              passing <i>item</i> for <i>identifier</i>.</li>
-          </ol>
-        </li>
-        <li>If <i>element</i> has an <code>@value</code> member, perform the following steps:
-          <ol class="algorithm">
-            <li>If <i>list</i> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a>:
-              <ol class="algorithm">
-                <li>If <i>node</i> does not have an <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a> member,
-                  create one and initialize its value to an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>
-                  containing <i>element</i>.</li>
-                <li>Otherwise, compare <i>element</i> against every item in the
-                  <a class="tref internalDFN" title="array" href="#dfn-array">array</a> associated with the <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>
-                  member of <i>node</i>. If there is no item equivalent to <i>element</i>,
-                  append <i>element</i> to the <a class="tref internalDFN" title="array" href="#dfn-array">array</a>. Two
-                  <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON objects</a> are considered
-                  equal if they have equivalent key-value pairs.</li>
-              </ol>
-            </li>
-            <li>Otherwise, append <i>element</i> to the <code>@list</code> member of <i>list</i>.</li>
-          </ol>
-        </li>
-        <li>Otherwise, if <i>element</i> has an <code>@list</code> member, perform
-          the following steps:
-          <ol class="algorithm">
-            <li>Initialize a new <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> <i>result</i> consisting of a single member
-              <code>@list</code> whose value is initialized to an empty <a class="tref internalDFN" title="array" href="#dfn-array">array</a>.</li>
-            <li>Recursively call this algorithm passing the value of <i>element's</i>
-              <code>@list</code> member for <i>element</i>, <a class="tref internalDFN" title="active-graph" href="#dfn-active-graph">active graph</a>,
-              <a class="tref internalDFN" title="active-subject" href="#dfn-active-subject">active subject</a>, <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>, and
-              <i>result</i> for <i>list</i>.</li>
-            <li>Append <i>result</i> to the value of the <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a> member
-              of <i>node</i>.</li>
-          </ol>
-        </li>
-        <li>Otherwise <i>element</i> is a <a class="tref internalDFN" title="node-object" href="#dfn-node-object">node object</a>, perform
-          the following steps:
-          <ol class="algorithm">
-            <li>If <i>element</i> has an <code>@id</code> member, set <i>id</i>
-              to its value and remove the member from <i>element</i>. If <i>id</i>
-              is a <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifier</a>, replace it with a newly
-              <a href="#generate-blank-node-identifier">generated blank node identifier</a>
-              passing <i>id</i> for <i>identifier</i>.</li>
-            <li>Otherwise, set <i>id</i> to the result of the
-              <a href="#generate-blank-node-identifier">Generate Blank Node Identifier algorithm</a>
-              passing <a class="tref internalDFN" title="null" href="#dfn-null">null</a> for <i>identifier</i>.</li>
-            <li>If <i>graph</i> does not contain a member <i>id</i>, create one and initialize
-              its value to a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> consisting of a single member <code>@id</code> whose
-              value is <i>id</i>.</li>
-            <li>If <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a> is not <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, perform the following steps:
-              <ol class="algorithm">
-                <li>Create a new <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> <i>reference</i> consisting of a single member
-                  <code>@id</code> whose value is <i>id</i>.</li>
-                <li>If <i>list</i> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a>:
-                  <ol class="algorithm">
-                    <li>If <i>node</i> does not have an <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a> member,
-                      create one and initialize its value to an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>
-                      containing <i>reference</i>.</li>
-                    <li>Otherwise, compare <i>reference</i> against every item in the
-                      <a class="tref internalDFN" title="array" href="#dfn-array">array</a> associated with the <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>
-                      member of <i>node</i>. If there is no item equivalent to <i>reference</i>,
-                      append <i>reference</i> to the <a class="tref internalDFN" title="array" href="#dfn-array">array</a>. Two
-                      <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON objects</a> are considered
-                      equal if they have equivalent key-value pairs.</li>
-                  </ol>
-                </li>
-                <li>Otherwise, append <i>element</i> to the <code>@list</code> member of <i>list</i>.</li>
-              </ol>
-            </li>
-            <li>Reference the value of the <i>id</i> member of <i>graph</i> using the
-              variable <i>node</i>.</li>
-            <li>If <i>element</i> has an <code>@type</code> key, append
-              each item of its associated <a class="tref internalDFN" title="array" href="#dfn-array">array</a> to the
-              <a class="tref internalDFN" title="array" href="#dfn-array">array</a> associated with the <code>@type</code> key of
-              <i>node</i> unless it is already in that <a class="tref internalDFN" title="array" href="#dfn-array">array</a>. Finally
-              remove the <code>@type</code> member from <i>element</i>.</li>
-            <li>If <i>element</i> has an <code>@index</code> member, set the <code>@index</code>
-              member of <i>node</i> to its value. If <a class="tref internalDFN" title="node" href="#dfn-node">node</a> has already an
-              <code>@index</code> member with a different value, a
-              <code class="error"><a href="#idl-def-JsonLdErrorCode.conflicting-indexes">conflicting indexes</a></code>
-              error has been detected and processing is aborted. Otherwise, continue by
-              removing the <code>@index</code> member from <i>element</i>.</li>
-            <li>If <i>element</i> has an <code>@reverse</code> member:
-              <ol class="algorithm">
-                <li>Create a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> <i>referenced node</i> with a single member <code>@id</code> whose
-                  value is <i>id</i>.</li>
-                <li>Set <i>reverse map</i> to the value of the <code>@reverse</code> member of
-                  <i>element</i>.</li>
-                <li>For each key-value pair <i>property</i>-<i>values</i> in <i>reverse map</i>:
-                  <ol class="algorithm">
-                    <li>For each <i>value</i> of <i>values</i>:
-                      <ol class="algorithm">
-                        <li>If <i>value</i> has a <i>property</i> member, append <i>referenced node</i> to
-                          its value; otherwise create a <i>property</i> member whose value is an
-                          <a class="tref internalDFN" title="array" href="#dfn-array">array</a> containing <i>referenced node</i>.</li>
-                        <li>Recursively invoke this algorithm passing <i>value</i> for
-                          <i>element</i>, <i>node map</i>, and <a class="tref internalDFN" title="active-graph" href="#dfn-active-graph">active graph</a>.</li>
-                      </ol>
-                    </li>
-                  </ol>
-                </li>
-                <li>Remove the <code>@reverse</code> member from <i>element</i>.</li>
-              </ol>
-            </li>
-            <li>If <i>element</i> has an <code>@graph</code> member, recursively invoke this
-              algorithm passing the value of the <code>@graph</code> member for <i>element</i>,
-              <i>node map</i>, and <i>id</i> for <a class="tref internalDFN" title="active-graph" href="#dfn-active-graph">active graph</a> before removing
-              the <code>@graph</code> member from <i>element</i>.</li>
-            <li>Finally, for each key-value pair <i>property</i>-<i>value</i> in <i>element</i> ordered by
-              <i>property</i> perform the following steps:
-              <ol class="algorithm">
-                <li>If <i>property</i> is a <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifier</a>, replace it with a newly
-                  <a href="#generate-blank-node-identifier">generated blank node identifier</a>
-                  passing <i>property</i> for <i>identifier</i>.</li>
-                <li>If <i>node</i> does not have a <i>property</i> member, create one and initialize
-                  its value to an empty <a class="tref internalDFN" title="array" href="#dfn-array">array</a>.</li>
-                <li>Recursively invoke this algorithm passing <i>value</i> for <i>element</i>,
-                  <i>node map</i>, <a class="tref internalDFN" title="active-graph" href="#dfn-active-graph">active graph</a>, <i>id</i> for <a class="tref internalDFN" title="active-subject" href="#dfn-active-subject">active subject</a>,
-                  and <i>property</i> for <a class="tref internalDFN" title="active-property" href="#dfn-active-property">active property</a>.</li>
-              </ol>
-            </li>
-          </ol>
-        </li>
-      </ol>
-    </section>
-  </section> <!-- end of Node Map Generation -->
-
-  <section id="generate-blank-node-identifier">
-    <h3><span class="secno">9.3 </span>Generate Blank Node Identifier</h3>
-
-    <p>This algorithm is used to generate new
-      <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifiers</a> or to
-      relabel an existing <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifier</a> to avoid collision
-      by the introduction of new ones.</p>
-
-    <section class="informative">
-      <h4 id="overview-12">Overview</h4><p><em>This section is non-normative.</em></p>
-
-      <p>The simplest case is if there exists already a <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifier</a>
-        in the <i>identifier map</i> for the passed <i>identifier</i>, in which
-        case it is simply returned. Otherwise, a new <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifier</a>
-        is generated by concatenating the string <code>_:b</code> and the
-        <i>counter</i>. If the passed <i>identifier</i> is not <a class="tref internalDFN" title="null" href="#dfn-null">null</a>,
-        an entry is created in the <i>identifier map</i> associating the
-        <i>identifier</i> with the <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifier</a>. Finally,
-        the <i>counter</i> is increased by one and the new
-        <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifier</a> is returned.</p>
-    </section>
-
-    <section>
-      <h4 id="algorithm-12">Algorithm</h4>
-
-      <p>The algorithm takes a single input variable <i>identifier</i> which may
-        be <a class="tref internalDFN" title="null" href="#dfn-null">null</a>. Between its executions, the algorithm needs to
-        keep an <i>identifier map</i> to relabel existing
-        <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifiers</a>
-        consistently and a <i>counter</i> to generate new
-        <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifiers</a>. The
-        <i>counter</i> is initialized to <code>0</code> by default.</p>
-
-      <ol class="algorithm">
-        <li>If <i>identifier</i> is not <a class="tref internalDFN" title="null" href="#dfn-null">null</a> and has an entry in the
-          <i>identifier map</i>, return the mapped identifier.</li>
-        <li>Otherwise, generate a new <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifier</a> by concatenating
-          the string <code>_:b</code> and <i>counter</i>.</li>
-        <li>Increment <i>counter</i> by <code>1</code>.</li>
-        <li>If <i>identifier</i> is not <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, create a new entry
-          for <i>identifier</i> in <i>identifier map</i> and set its value
-          to the new <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifier</a>.</li>
-        <li>Return the new <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifier</a>.</li>
-      </ol>
-    </section>
-  </section> <!-- end of Generate Blank Node Identifier -->
-</section> <!-- end of Flattening section -->
-
-
-<section id="rdf-serialization-deserialization-algorithms">
-  <!--OddPage--><h2><span class="secno">10. </span>RDF Serialization/Deserialization Algorithms</h2>
-
-  <p>This section describes algorithms to deserialize a JSON-LD document to an
-    <a class="tref internalDFN" title="rdf-dataset" href="#dfn-rdf-dataset">RDF dataset</a> and vice versa. The algorithms are designed for in-memory
-    implementations with random access to <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> elements.</p>
-
-  <p>Throughout this section, the following vocabulary
-    <a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefixes</a> are used in
-    <a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">compact IRIs</a>:</p>
-
-  <table class="simple">
-    <thead>
-      <tr><th>Prefix</th>
-      <th><abbr title="Internationalized Resource Identifier">IRI</abbr></th>
-    </tr></thead>
-    <tbody>
-      <tr>
-        <td>rdf</td>
-        <td>http://www.w3.org/1999/02/22-rdf-syntax-ns#</td>
-      </tr>
-      <tr>
-        <td>rdfs</td>
-        <td> http://www.w3.org/2000/01/rdf-schema#</td>
-      </tr>
-      <tr>
-        <td>xsd</td>
-        <td>http://www.w3.org/2001/XMLSchema#</td>
-      </tr>
-    </tbody>
-  </table>
-
-  <section id="deserialize-json-ld-to-rdf-algorithm">
-    <h3><span class="secno">10.1 </span>Deserialize JSON-LD to RDF algorithm</h3>
-
-    <p>This algorithm deserializes a JSON-LD document to an <a class="tref internalDFN" title="rdf-dataset" href="#dfn-rdf-dataset">RDF dataset</a>.
-      Please note that RDF does not allow a <a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">blank node</a> to be used
-      as a <a class="tref internalDFN" title="property" href="#dfn-property">property</a>, while JSON-LD does.  Therefore, by default
-      RDF triples that would have contained blank nodes as properties are
-      discarded when interpreting JSON-LD as RDF.</p>
-
-    <div class="issue atrisk"><div class="issue-title" role="heading" aria-level="4"><span>Feature at Risk 3</span>: Allow blank nodes to be used as properties</div><div class="atrisk">
-      <p class="atrisk-head">Note: This feature is
-        <a href="http://www.w3.org/2005/10/Process-20051014/tr#cfi">"at risk"</a> and
-        may be removed from this specification based on feedback. Please send feedback to
-        <a href="mailto:public-rdf-comments@w3.org">public-rdf-comments@w3.org</a>.
-        For the current status see
-        <a href="http://www.w3.org/2011/rdf-wg/wiki/JSON-LD_Features_at_Risk">features "at risk" in JSON-LD 1.0</a></p>
-      <p>RDF graphs do not allow <a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">blank nodes</a> to be used
-        as an <a class="tref internalDFN" title="rdf-predicate" href="#dfn-rdf-predicate">RDF predicate</a>, while JSON-LD does.
-        Unless the <i>produce generalized RDF</i> flag is set, this algorithm will exclude
-        triples including a <a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">blank node</a> <a class="tref internalDFN" title="rdf-predicate" href="#dfn-rdf-predicate">RDF predicate</a>.</p>
-    </div></div>
-
-    <section class="informative">
-      <h4 id="overview-13">Overview</h4><p><em>This section is non-normative.</em></p>
-
-      <p>The JSON-LD document is expanded and converted to a <i>node map</i> using the
-        <a href="#node-map-generation">Node Map Generation algorithm</a>.
-        This allows each graph represented within the document to be
-        extracted and flattened, making it easier to process each
-        <a class="tref internalDFN" title="node-object" href="#dfn-node-object">node object</a>. Each graph from the <i>node map</i>
-        is processed to extract <a class="tref internalDFN" title="rdf-triple" href="#dfn-rdf-triple">RDF triples</a>,
-        to which any (non-default) graph name is applied to create an
-        <a class="tref internalDFN" title="rdf-dataset" href="#dfn-rdf-dataset">RDF dataset</a>. Each <a class="tref internalDFN" title="node-object" href="#dfn-node-object">node object</a> in the
-        <i>node map</i> has an <code>@id</code> member which corresponds to the
-        <a class="tref internalDFN" title="rdf-subject" href="#dfn-rdf-subject">RDF subject</a>, the other members
-        represent <a class="tref internalDFN" title="rdf-predicate" href="#dfn-rdf-predicate">RDF predicates</a>. Each
-        member value is either 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> or can be transformed to an
-        <a class="tref externalDFN" title="rdf-literal" href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">RDF literal</a>
-        to generate an <a class="tref internalDFN" title="rdf-triple" href="#dfn-rdf-triple">RDF triple</a>. <a class="tref internalDFN" title="list" href="#dfn-list">Lists</a>
-        are transformed into an
-        <a class="tref externalDFN" title="rdf-collection" href="http://www.w3.org/TR/rdf-schema/#ch_collectionvocab">RDF Collection</a>
-        using the <a href="#list-to-rdf-conversion">List to RDF Conversion algorithm.</a></p>
-    </section>
-
-    <section>
-      <h4 id="algorithm-13">Algorithm</h4>
-
-      <p>The algorithm takes a JSON-LD document <i>element</i> and returns an
-        <a class="tref internalDFN" title="rdf-dataset" href="#dfn-rdf-dataset">RDF dataset</a>. Unless the <i>produce generalized RDF</i> flag
-        is set to <a class="tref internalDFN" title="true" href="#dfn-true">true</a>, <a class="tref internalDFN" title="rdf-triple" href="#dfn-rdf-triple">RDF triples</a>
-        containing a <a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">blank node</a> <a class="tref internalDFN" title="rdf-predicate" href="#dfn-rdf-predicate">predicate</a>
-        are excluded from output.</p>
-
-      <p>This algorithm generates new <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifiers</a>
-        and relabels existing <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifiers</a>.
-        The used <a href="#generate-blank-node-identifier">Generate Blank Node Identifier algorithm</a>
-        keeps an <i>identifier map</i> and a <i>counter</i> to ensure consistent
-        relabeling and avoid collisions. Thus, before this algorithm is run,
-        the <i>identifier map</i> is reset and the <i>counter</i> is initialized
-        to <code>0</code>.</p>
-
-      <ol class="algorithm">
-        <li>Expand <i>element</i> according to the
-          <a href="#expansion-algorithm">Expansion algorithm</a>.</li>
-        <li>Generate a <i>node map</i> according to the
-          <a href="#node-map-generation">Node Map Generation algorithm</a>.</li>
-        <li>Initialize an empty <a class="tref internalDFN" title="rdf-dataset" href="#dfn-rdf-dataset">RDF dataset</a> <i>dataset</i>.</li>
-        <li>For each <i>graph name</i> and <i>graph</i> in <i>node map</i>
-          ordered by <i>graph name</i>:
-          <ol class="algorithm">
-            <li>If <i>graph name</i> is a <a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, continue
-              with the next <i>graph name</i>-<i>graph</i> pair.</li>
-            <li>Initialize <i>triples</i> as an empty <a class="tref internalDFN" title="array" href="#dfn-array">array</a>.</li>
-            <li>For each <i>subject</i> and <i>node</i> in <i>graph</i> ordered
-              by <i>subject</i>:
-              <ol class="algorithm">
-                <li>If <i>subject</i> is a <a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, continue
-                  with the next <i>subject</i>-<i>node</i> pair.</li>
-                <li>For each <i>property</i> and <i>values</i> in <i>node</i>
-                  ordered by <i>property</i>:
-                  <ol class="algorithm">
-                    <li>If <i>property</i> is <code>@type</code>, then for each
-                      <i>type</i> in <i>values</i>, append a <a class="tref internalDFN" title="triple" href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple">triple</a>
-                      composed of <i>subject</i>, <code>rdf:type</code>,
-                      and <i>type</i> to <i>triples</i>.</li>
-                    <li>Otherwise, if <i>property</i> is a <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>
-                      continue with the next <i>property</i>-<i>values</i> pair.</li>
-                    <li>Otherwise, if <i>property</i> is a <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifier</a> and
-                      the <i>produce generalized RDF</i> flag is not <a class="tref internalDFN" title="true" href="#dfn-true">true</a>,
-                      continue with the next <i>property</i>-<i>values</i> pair.</li>
-                    <li>Otherwise, if <i>property</i> is a <a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
-                      continue with the next <i>property</i>-<i>values</i> pair.</li>
-                    <li>Otherwise, <i>property</i> is an <a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">absolute <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>. For each <i>item</i>
-                      in <i>values</i>:
-                      <ol class="algorithm">
-                        <li>If <i>item</i> is a <a class="tref internalDFN" title="list-object" href="#dfn-list-object">list object</a>, initialize
-                          <i>list triples</i> as an empty <a class="tref internalDFN" title="array" href="#dfn-array">array</a> and
-                          <i>list head</i> to the result of the <a href="#list-to-rdf-conversion">List Conversion algorithm</a>, passing
-                          the value associated with the <code>@list</code> key from
-                          <i>item</i> and <i>list triples</i>. Append first a
-                          <a class="tref internalDFN" title="triple" href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple">triple</a> composed of <i>subject</i>,
-                          <i>property</i>, and <i>list head</i> to <i>triples</i> and
-                          finally append all <a class="tref internalDFN" title="triple" href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple">triples</a> from
-                          <i>list triples</i> to <i>triples</i>.</li>
-                        <li>Otherwise, <i>item</i> is a <a class="tref internalDFN" title="value-object" href="#dfn-value-object">value object</a>
-                          or a <a class="tref internalDFN" title="node-object" href="#dfn-node-object">node object</a>. Append a <a class="tref internalDFN" title="triple" href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple">triple</a>
-                          composed of <i>subject</i>, <i>property</i>, and
-                          the result of using the
-                          <a href="#object-to-rdf-conversion">Object to RDF Conversion algorithm</a>
-                          passing <i>item</i> to <i>triples</i>, unless the result is
-                          <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, indicating a <a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a> that has
-                          to be ignored.</li>
-                      </ol>
-                    </li>
-                  </ol>
-                </li>
-              </ol>
-            </li>
-            <li>If <i>graph name</i> is <code>@default</code>, add
-              <i>triples</i> to the <a class="tref internalDFN" title="default-graph" href="#dfn-default-graph">default graph</a> in <i>dataset</i>.</li>
-            <li>Otherwise, create a <a class="tref internalDFN" title="named-graph" href="#dfn-named-graph">named graph</a> in <i>dataset</i>
-              composed of <i>graph name</i> and add <i>triples</i>.</li>
-          </ol>
-        </li>
-        <li>Return <i>dataset</i>.</li>
-      </ol>
-    </section>
-  </section> <!-- end of Deserialize JSON-LD to RDF algorithm -->
-
-  <section id="object-to-rdf-conversion">
-    <h3><span class="secno">10.2 </span>Object to RDF Conversion</h3>
-
-    <p>This algorithm takes a <a class="tref internalDFN" title="node-object" href="#dfn-node-object">node object</a> or <a class="tref internalDFN" title="value-object" href="#dfn-value-object">value object</a>
-      and transforms it into an
-      <a class="tref externalDFN" title="rdf-resource" href="http://www.w3.org/TR/rdf11-concepts/#dfn-resource">RDF resource</a>
-      to be used as the <a class="tref internalDFN" title="object" href="http://www.w3.org/TR/rdf11-concepts/#dfn-object">object</a> of an <a class="tref internalDFN" title="rdf-triple" href="#dfn-rdf-triple">RDF triple</a>. If a
-      <a class="tref internalDFN" title="node-object" href="#dfn-node-object">node object</a> containing a <a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a> is passed to
-      the algorithm, <a class="tref internalDFN" title="null" href="#dfn-null">null</a> is returned which then causes the resulting
-      <a class="tref internalDFN" title="rdf-triple" href="#dfn-rdf-triple">RDF triple</a> to be ignored.</p>
-
-    <section class="informative">
-      <h4 id="overview-14">Overview</h4><p><em>This section is non-normative.</em></p>
-
-      <p><a class="tref internalDFN" title="value-object" href="#dfn-value-object">Value objects</a> are transformed to
-        <a class="tref internalDFN" title="rdf-literal" href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">RDF literals</a> as described in
-        <a class="sectionRef" href="#data-round-tripping">section 10.6 Data Round Tripping</a>
-        whereas <a class="tref internalDFN" title="node-object" href="#dfn-node-object">node objects</a> are transformed
-        to <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>,
-        <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifiers</a>,
-        or <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</p>
-    </section>
-
-    <section>
-      <h4 id="algorithm-14">Algorithm</h4>
-
-      <p>The algorithm takes as its sole argument <i>item</i> which must be
-        either a <a class="tref internalDFN" title="value-object" href="#dfn-value-object">value object</a> or <a class="tref internalDFN" title="node-object" href="#dfn-node-object">node object</a>.</p>
-
-      <ol class="algorithm">
-        <li>If <i>item</i> is a <a class="tref internalDFN" title="node-object" href="#dfn-node-object">node object</a> and the value of
-          its <code>@id</code> member is a <a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, return
-          <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</li>
-        <li>If <i>item</i> is a <a class="tref internalDFN" title="node-object" href="#dfn-node-object">node object</a>, return the
-          <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> associated
-          with its <code>@id</code> member.</li>
-        <li>Otherwise, <i>item</i> is a <a class="tref internalDFN" title="value-object" href="#dfn-value-object">value object</a>. Initialize
-          <i>value</i> to the value associated with the <code>@value</code>
-          member in <i>item</i>.
-        </li><li>Initialize <i>datatype</i> to the value associated with the
-          <code>@type</code> member of <i>item</i> or  <a class="tref internalDFN" title="null" href="#dfn-null">null</a> if
-          <i>item</i> does not have such a member.</li>
-        <li>If <i>value</i> is <a class="tref internalDFN" title="true" href="#dfn-true">true</a> or
-          <a class="tref internalDFN" title="false" href="#dfn-false">false</a>, set <i>value</i> to the <a class="tref internalDFN" title="string" href="#dfn-string">string</a>
-          <code>true</code> or <code>false</code> which is the
-          <a class="tref internalDFN" title="canonical-lexical-form" href="#dfn-canonical-lexical-form">canonical lexical form</a> as described in
-          <a class="sectionRef" href="#data-round-tripping">section 10.6 Data Round Tripping</a>
-          If <i>datatype</i> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, set it to
-          <code>xsd:boolean</code>.</li>
-        <li>Otherwise, if <i>value</i> is a <a class="tref internalDFN" title="number" href="#dfn-number">number</a> with a non-zero fractional
-          part (the result of a modulo‑1 operation) or <i>value</i> is a <a class="tref internalDFN" title="number" href="#dfn-number">number</a>
-          and <i>datatype</i> equals <code>xsd:double</code>, convert <i>value</i> to a
-          <a class="tref internalDFN" title="string" href="#dfn-string">string</a> in <a class="tref internalDFN" title="canonical-lexical-form" href="#dfn-canonical-lexical-form">canonical lexical form</a> of
-          an <code>xsd:double</code> as defined in [<cite><a class="bibref" href="#bib-XMLSCHEMA11-2">XMLSCHEMA11-2</a></cite>]
-          and described in
-          <a class="sectionRef" href="#data-round-tripping">section 10.6 Data Round Tripping</a>.
-          If <i>datatype</i> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, set it to
-          <code>xsd:double</code>.</li>
-        <li>Otherwise, if <i>value</i> is a <a class="tref internalDFN" title="number" href="#dfn-number">number</a> with no non-zero
-          fractional part (the result of a modulo‑1 operation) or <i>value</i>
-          is a <a class="tref internalDFN" title="number" href="#dfn-number">number</a> and <i>datatype</i>
-          equals <code>xsd:integer</code>, convert <i>value</i> to a
-          <a class="tref internalDFN" title="string" href="#dfn-string">string</a> in <a class="tref internalDFN" title="canonical-lexical-form" href="#dfn-canonical-lexical-form">canonical lexical form</a> of
-          an <code>xsd:integer</code> as defined in [<cite><a class="bibref" href="#bib-XMLSCHEMA11-2">XMLSCHEMA11-2</a></cite>]
-          and described in
-          <a class="sectionRef" href="#data-round-tripping">section 10.6 Data Round Tripping</a>.
-          If <i>datatype</i> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, set it to
-          <code>xsd:integer</code>.</li>
-        <li>Otherwise, if <i>datatype</i> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, set it to
-          <code>xsd:string</code> or <code>rdf:langString</code>, depending on if
-          item has an <code>@language</code> member.</li>
-        <li>Initialize <i>literal</i> as an <a class="tref internalDFN" title="rdf-literal" href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">RDF literal</a> using
-          <i>value</i> and <i>datatype</i>. If <i>item</i> has an
-          <code>@language</code> member, add the value associated with the
-          <code>@language</code> key as the language tag of <i>literal</i>.</li>
-        <li>Return <i>literal</i>.</li>
-
-      </ol>
-    </section>
-  </section> <!-- end of Object to RDF Conversion -->
-
-  <section id="list-to-rdf-conversion">
-    <h3><span class="secno">10.3 </span>List to RDF Conversion</h3>
-
-    <p>List Conversion is the process of taking a <a class="tref internalDFN" title="list-object" href="#dfn-list-object">list object</a>
-      and transforming it into an
-      <a class="tref externalDFN" title="rdf-collection" href="http://www.w3.org/TR/rdf-schema/#ch_collectionvocab">RDF Collection</a>
-      as defined in RDF Semantics [<cite><a class="bibref" href="#bib-RDF-MT">RDF-MT</a></cite>].</p>
-
-    <section class="informative">
-      <h4 id="overview-15">Overview</h4><p><em>This section is non-normative.</em></p>
-
-      <p>For each element of the <a class="tref internalDFN" title="list" href="#dfn-list">list</a> a new <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifier</a>
-        is allocated which is used to generate <code>rdf:first</code> and
-        <code>rdf:rest</code> <a class="tref internalDFN" title="rdf-triple" href="#dfn-rdf-triple">triples</a>. The
-        algorithm returns the list head, which is either the first allocated
-        <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifier</a> or <code>rdf:nil</code> if the
-        <a class="tref internalDFN" title="list" href="#dfn-list">list</a> is empty. If a list element represents a <a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
-        the corresponding <code>rdf:first</code> triple is omitted.</p>
-    </section>
-
-    <section>
-      <h4 id="algorithm-15">Algorithm</h4>
-
-      <p>The algorithm takes two inputs: an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> <i>list</i>
-        and an empty <a class="tref internalDFN" title="array" href="#dfn-array">array</a> <i>list triples</i> used for returning
-        the generated <a class="tref internalDFN" title="rdf-triple" href="#dfn-rdf-triple">triples</a>.</p>
-
-      <ol class="algorithm">
-        <li>If <i>list</i> is empty, return <code>rdf:nil</code>.</li>
-        <li>Otherwise, create an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> <i>bnodes</i> composed of a
-          <a href="#generate-blank-node-identifier">newly generated blank node identifier</a>
-          for each entry in <i>list</i>.</li>
-        <li>Initialize an empty <a class="tref internalDFN" title="array" href="#dfn-array">array</a> <i>list triples</i>.</li>
-        <li>For each pair of <i>subject</i> from <i>bnodes</i> and <i>item</i> from <i>list</i>:
-          <ol class="algorithm">
-            <li>Initialize <i>object</i> to the result of using the
-              <a href="#object-to-rdf-conversion">Object to RDF Conversion algorithm</a>
-              passing <i>item</i> to <i>list triples</i>.</li>
-            <li>Unless <i>object</i> is <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, append a <a class="tref internalDFN" title="triple" href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple">triple</a>
-              composed of <i>subject</i>, <code>rdf:first</code>, and <i>object</i>.</li>
-            <li>Set <i>rest</i> as the next entry in <i>bnodes</i>, or if that
-              does not exist, <code>rdf:nil</code>. Append a
-              <a class="tref internalDFN" title="triple" href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple">triple</a> composed of <i>subject</i>,
-              <code>rdf:rest</code>, and <i>rest</i> to <i>list triples</i>.</li>
-          </ol>
-        </li>
-        <li>Return the first <a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">blank node</a> from <i>bnodes</i> or
-          <code>rdf:nil</code> if <i>bnodes</i> is empty.</li>
-      </ol>
-    </section>
-  </section> <!-- end of List to RDF -->
-
-  <section id="serialize-rdf-as-json-ld-algorithm">
-    <h3><span class="secno">10.4 </span>Serialize RDF as JSON-LD Algorithm</h3>
-
-    <p>This algorithm serializes an <a class="tref internalDFN" title="rdf-dataset" href="#dfn-rdf-dataset">RDF dataset</a> consisting of a
-      <a class="tref internalDFN" title="default-graph" href="#dfn-default-graph">default graph</a> and zero or more
-      <a class="tref internalDFN" title="named-graph" href="#dfn-named-graph">named graphs</a> into a JSON-LD document.</p>
-
-    <section class="informative">
-      <h4 id="overview-16">Overview</h4><p><em>This section is non-normative.</em></p>
-
-      <p>Iterate through each graph in the dataset, converting each
-        <a class="tref internalDFN" title="rdf-collection" href="http://www.w3.org/TR/rdf-schema/#ch_collectionvocab">RDF Collection</a> into a <a class="tref internalDFN" title="list" href="#dfn-list">list</a>
-        and generating a JSON-LD document in expanded form for all
-        <a class="tref internalDFN" title="rdf-literal" href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">RDF literals</a>, <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>
-        and <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifiers</a>.
-        If the <i>use native types</i> flag is set to <a class="tref internalDFN" title="true" href="#dfn-true">true</a>,
-        <a class="tref internalDFN" title="rdf-literal" href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">RDF literals</a> with a
-        <a class="tref externalDFN" title="datatype-iri" href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri">datatype <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
-        that equals <code>xsd:integer</code> or <code>xsd:double</code> are converted
-        to a <a class="tref internalDFN" title="number" href="#dfn-number">JSON numbers</a> and <a class="tref internalDFN" title="rdf-literal" href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">RDF literals</a>
-        with a <a class="tref externalDFN" title="datatype-iri" href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri">datatype <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
-        that equals <code>xsd:boolean</code> are converted to <a class="tref internalDFN" title="true" href="#dfn-true">true</a> or
-        <a class="tref internalDFN" title="false" href="#dfn-false">false</a> based on their
-        <a class="tref externalDFN" title="lexical-form" href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form">lexical form</a>
-        as described in
-        <a class="sectionRef" href="#data-round-tripping">section 10.6 Data Round Tripping</a>.</p>
-    </section>
-
-    <section>
-      <h4 id="algorithm-16">Algorithm</h4>
-
-      <p>The algorithm takes two required inputs: an <a class="tref internalDFN" title="rdf-dataset" href="#dfn-rdf-dataset">RDF dataset</a> and a flag
-        <i>use native types</i> that defaults to <a class="tref internalDFN" title="false" href="#dfn-false">false</a>.</p>
-
-      <ol class="algorithm">
-        <li>Initialize <i>default graph</i> to an empty <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>.</li>
-        <li>Initialize <i>graph map</i> to a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> consisting
-          of a single member <code>@default</code> whose value references
-          <i>default graph</i>.</li>
-        <li>For each <i>graph</i> in <a class="tref internalDFN" title="rdf-dataset" href="#dfn-rdf-dataset">RDF dataset</a>:
-          <ol class="algorithm">
-            <li>If <i>graph</i> is the <a class="tref internalDFN" title="default-graph" href="#dfn-default-graph">default graph</a>,
-              set <i>name</i> to <code>@default</code>, otherwise to the
-              <a class="tref internalDFN" title="graph-name" href="#dfn-graph-name">graph name</a> associated with <i>graph</i>.</li>
-            <li>If <i>graph map</i> has no <i>name</i> member, create one and set
-              its value to an empty <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>.</li>
-            <li>If <i>graph</i> is not the <a class="tref internalDFN" title="default-graph" href="#dfn-default-graph">default graph</a> and
-              <i>default graph</i> does not have a <i>name</i> member,
-              create such a member and initialize its value to a new
-              <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> with a single member <code>@id</code>
-              whose value is <i>name</i>.</li>
-            <li>Reference the value of the <i>name</i> member in <i>graph map</i>
-              using the variable <i>node map</i>.</li>
-            <li>For each <a class="tref internalDFN" title="rdf-triple" href="#dfn-rdf-triple">RDF triple</a> in <i>graph</i>
-              consisting of <i>subject</i>, <i>predicate</i>, and <i>object</i>:
-              <ol class="algorithm">
-                <li>If <i>node map</i> does not have a <i>subject</i> member,
-                  create one and initialize its value to a new <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>
-                  consisting of a single member <code>@id</code> whose value is
-                  set to <i>subject</i>.</li>
-                <li>Reference the value of the <i>subject</i> member in <i>node map</i>
-                  using the variable <i>node</i>.</li>
-                <li>If <i>object</i> is 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>,
-                  and <i>node map</i> does not have an <i>object</i> member,
-                  create one and initialize its value to a new <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>
-                  consisting of a single member <code>@id</code> whose value is
-                  set to <i>object</i>.</li>
-                <li>If <i>predicate</i> equals <code>rdf:type</code>, and <i>object</i>
-                  is 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>,
-                  append <i>object</i> to the value of the <code>@type</code>
-                  member of <i>node</i>; unless such an item already exists.
-                  If no such member exists, create one
-                  and initialize it to an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> whose only item is
-                  <i>object</i>. Finally, continue to the next
-                  <a class="tref internalDFN" title="rdf-triple" href="#dfn-rdf-triple">RDF triple</a>.</li>
-                <li>Set <i>value</i> to the result of using the
-                  <a href="#rdf-to-object-conversion">RDF to Object Conversion algorithm</a>,
-                  passing <i>object</i> and <i>use native types</i>.</li>
-                <li>If <i>node</i> does not have an <i>predicate</i> member, create one
-                  and initialize its value to an empty <a class="tref internalDFN" title="array" href="#dfn-array">array</a>.</li>
-                <li>If there is no item equivalent to <i>value</i> in the <a class="tref internalDFN" title="array" href="#dfn-array">array</a>
-                  associated with the <i>predicate</i> member of <i>node</i>, append a
-                  reference to <i>value</i> to the <a class="tref internalDFN" title="array" href="#dfn-array">array</a>. Two JSON objects
-                  are considered equal if they have equivalent key-value pairs.</li>
-                <li>If <i>object</i> is a <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifier</a> or <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
-                  it might represent the list node:
-                  <ol class="algorithm">
-                    <li>If the <i>object</i> member of <i>node map</i> has no
-                      <code>usages</code> member, create one and initialize it to
-                      an empty <a class="tref internalDFN" title="array" href="#dfn-array">array</a>.</li>
-                    <li>Reference the <code>usages</code> member of the <i>object</i>
-                      member of <i>node map</i> using the variable <i>usages</i>.</li>
-                    <li>Append a new <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> consisting of three
-                      members, <code>node</code>, <code>property</code>, and <code>value</code>
-                      to the <i>usages</i> <a class="tref internalDFN" title="array" href="#dfn-array">array</a>. The <code>node</code> member
-                      is set to a reference to <i>node</i>, <code>property</code> to <i>predicate</i>,
-                      and <code>value</code> to a reference to <i>value</i>.</li>
-                  </ol>
-                </li>
-              </ol>
-            </li>
-          </ol>
-        </li>
-        <li>For each <i>name</i> and <i>graph object</i> in <i>graph map</i>:
-          <ol class="algorithm">
-            <li>If <i>graph object</i> has no <code>rdf:nil</code> member, continue
-              with the next <i>name</i>-<i>graph object</i> pair as the graph does
-              not contain any lists that need to be converted.</li>
-            <li>Initialize <i>nil</i> to the value of the <code>rdf:nil</code> member
-              of <i>graph object</i>.</li>
-            <li>For each item <i>usage</i> in the <code>usages</code> member of
-              <i>nil</i>, perform the following steps:
-              <ol class="algorithm">
-                <li>Initialize <i>node</i> to the value of the value of the
-                  <code>node</code> member of <i>usage</i>, <i>property</i> to
-                  the value of the <code>property</code> member of <i>usage</i>,
-                  and <i>head</i> to the value of the <code>value</code> member
-                  of <i>usage</i>.</li>
-                <li>Initialize two empty <a class="tref internalDFN" title="array" href="#dfn-array">arrays</a> <i>list</i>
-                  and <i>list nodes</i>.</li>
-                <li>While <i>property</i> equals <code>rdf:rest</code>, the value
-                  associated to the <code>usages</code> member of <i>node</i> has
-                  exactly 1 entry, <i>node</i> has a <code>rdf:first</code> and
-                  <code>rdf:rest</code> property, both of which have as value an
-                  <a class="tref internalDFN" title="array" href="#dfn-array">array</a> consisting of a single element, and <i>node</i>
-                  has no other members apart from an optional <code>@type</code>
-                  member whose value is an array with a single item equal to
-                  <code>rdf:List</code>, <i>node</i> represents a well-formed list
-                  node. Perform the following steps to traverse the list backwards
-                  towards its head:
-                  <ol class="algorithm">
-                    <li>Append the only item of <code>rdf:first</code> member of
-                      <i>node</i> to the <i>list</i> <a class="tref internalDFN" title="array" href="#dfn-array">array</a>.</li>
-                    <li>Append the value of the <code>@id</code> member of
-                      <i>node</i> to the <i>list nodes</i> <a class="tref internalDFN" title="array" href="#dfn-array">array</a>.</li>
-                    <li>Initialize <i>node usage</i> to the only item of the
-                      <code>usages</code> member of <i>node</i>.</li>
-                    <li>Set <i>node</i> to the value of the <code>node</code> member
-                      of <i>node usage</i>, <i>property</i> to the value of the
-                      <code>property</code> member of <i>node usage</i>, and
-                      <i>head</i> to the value of the <code>value</code> member
-                      of <i>node usage</i>.</li>
-                    <li>If the <code>@id</code> member of <i>node</i> is an
-                      <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> instead of a <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifier</a>,
-                      exit the while loop.</li>
-                  </ol>
-                </li>
-                <li>If <i>property</i> equals <code>rdf:first</code>, i.e., the
-                  detected list is nested inside another list
-                  <ol class="algorithm">
-                    <li>and the value of the <code>@id</code> of <i>node</i> equals
-                      <code>rdf:nil</code>, i.e., the detected list is empty,
-                      continue with the next <i>usage</i> item. The
-                      <code>rdf:nil</code> node cannot be converted to a
-                      <a class="tref internalDFN" title="list-object" href="#dfn-list-object">list object</a> as it would result in a list of
-                      lists, which isn't supported.</li>
-                    <li>Otherwise, the list consists of at least one item. We preserve the
-                      head node and transform the rest of the linked list to a
-                      <a class="tref internalDFN" title="list-object" href="#dfn-list-object">list object</a>.</li>
-                    <li>Set <i>head id</i> to the value of the <code>@id</code>
-                      member of <i>head</i>.</li>
-                    <li>Set <i>head</i> to the value of the <i>head id</i> member of
-                      <i>graph object</i> so that all it's properties can be accessed.</li>
-                    <li>Then, set <i>head</i> to the only item in the value of the
-                      <code>rdf:rest</code> member of <i>head</i>.</li>
-                    <li>Finally, remove the last item of the <i>list</i> <a class="tref internalDFN" title="array" href="#dfn-array">array</a>
-                      and the last item of the <i>list nodes</i> <a class="tref internalDFN" title="array" href="#dfn-array">array</a>.</li>
-                  </ol>
-                </li>
-                <li>Remove the <code>@id</code> member from <i>head</i>.</li>
-                <li>Reverse the order of the <i>list</i> <a class="tref internalDFN" title="array" href="#dfn-array">array</a>.</li>
-                <li>Add a <code>@list</code> member to <i>head</i> and initialize
-                  its value to the <i>list</i> <a class="tref internalDFN" title="array" href="#dfn-array">array</a>.</li>
-                <li>For each item <i>node id</i> in <i>list nodes</i>, remove the
-                  <i>node id</i> member from <i>graph object</i>.</li>
-              </ol>
-            </li>
-          </ol>
-        </li>
-        <li>Initialize an empty <a class="tref internalDFN" title="array" href="#dfn-array">array</a> <i>result</i>.</li>
-        <li>For each <i>subject</i> and <i>node</i> in <i>default graph</i>
-          ordered by <i>subject</i>:
-          <ol class="algorithm">
-            <li>If <i>graph map</i> has a <i>subject</i> member:
-              <ol class="algorithm">
-                <li>Add a <code>@graph</code> member to <i>node</i> and initialize
-                  its value to an empty <a class="tref internalDFN" title="array" href="#dfn-array">array</a>.</li>
-                <li>For each key-value pair <i>s</i>-<i>n</i> in the <i>subject</i>
-                  member of <i>graph map</i> ordered by <i>s</i>, append <i>n</i>
-                  to the <code>@graph</code> member of <i>node</i> after
-                  removing its <code>usages</code> member, unless the only
-                  remaining member of <i>n</i> is <code>@id</code>.</li>
-              </ol>
-            </li>
-            <li>Append <i>node</i> to <i>result</i> after removing its
-              <code>usages</code> member, unless the only remaining member of
-              <i>node</i> is <code>@id</code>.</li>
-          </ol>
-        </li>
-        <li>Return <i>result</i>.</li>
-      </ol>
-    </section>
-  </section> <!-- end of Serialize RDF as JSON-LD Algorithm -->
-
-  <section id="rdf-to-object-conversion">
-    <h3><span class="secno">10.5 </span>RDF to Object Conversion</h3>
-
-    <p>This algorithm transforms an RDF literal to a JSON-LD <a class="tref internalDFN" title="value-object" href="#dfn-value-object">value object</a>
-      and a RDF blank node or <abbr title="Internationalized Resource Identifier">IRI</abbr> to an JSON-LD <a class="tref internalDFN" title="node-object" href="#dfn-node-object">node object</a>.</p>
-
-    <section class="informative">
-      <h4 id="overview-17">Overview</h4><p><em>This section is non-normative.</em></p>
-
-      <p><a class="tref internalDFN" title="rdf-literal" href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">RDF literals</a> are transformed to
-        <a class="tref internalDFN" title="value-object" href="#dfn-value-object">value objects</a> whereas <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> and
-        <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifiers</a> are
-        transformed to <a class="tref internalDFN" title="node-object" href="#dfn-node-object">node objects</a>.
-        If the <i>use native types</i> flag is set to <a class="tref internalDFN" title="true" href="#dfn-true">true</a>,
-        <a class="tref internalDFN" title="rdf-literal" href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">RDF literals</a> with a
-        <a class="tref externalDFN" title="datatype-iri" href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri">datatype <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
-        that equals <code>xsd:integer</code> or <code>xsd:double</code> are converted
-        to a <a class="tref internalDFN" title="number" href="#dfn-number">JSON numbers</a> and <a class="tref internalDFN" title="rdf-literal" href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">RDF literals</a>
-        with a <a class="tref externalDFN" title="datatype-iri" href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri">datatype <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
-        that equals <code>xsd:boolean</code> are converted to <a class="tref internalDFN" title="true" href="#dfn-true">true</a> or
-        <a class="tref internalDFN" title="false" href="#dfn-false">false</a> based on their
-        <a class="tref externalDFN" title="lexical-form" href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form">lexical form</a>
-        as described in
-        <a class="sectionRef" href="#data-round-tripping">section 10.6 Data Round Tripping</a>.</p>
-    </section>
-
-    <section>
-      <h4 id="algorithm-17">Algorithm</h4>
-
-      <p>This algorithm takes two required inputs: a <i>value</i> to be converted
-        to a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> and a flag <i>use native types</i>.</p>
-
-      <ol class="algorithm">
-        <li>If <i>value</i> is 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>, return a new <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>
-          consisting of a single member <code>@id</code> whose value is set to
-          <i>value</i>.</li>
-        <li>Otherwise <i>value</i> is an
-          <a class="tref externalDFN" title="rdf-literal" href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">RDF literal</a>:
-          <ol class="algorithm">
-            <li>Initialize a new empty <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> result.</li>
-            <li>Initialize <i>converted value</i> to <i>value</i>.</li>
-            <li>Initialize <i>type</i> to <a class="tref internalDFN" title="null" href="#dfn-null">null</a></li>
-            <li>If <i>use native types</i> is <a class="tref internalDFN" title="true" href="#dfn-true">true</a>
-              <ol class="algorithm">
-                <li>If the
-                  <a class="tref externalDFN" title="datatype-iri" href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri">datatype <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
-                  of <i>value</i> equals <code>xsd:string</code>, set
-                  <i>converted value</i> to the
-                  <a class="tref externalDFN" title="lexical-form" href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form">lexical form</a>
-                  of <i>value</i>.</li>
-                <li>Otherwise, if the
-                  <a class="tref externalDFN" title="datatype-iri" href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri">datatype <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
-                  of <i>value</i> equals <code>xsd:boolean</code>, set
-                  <i>converted value</i> to <a class="tref internalDFN" title="true" href="#dfn-true">true</a> if the
-                  <a class="tref externalDFN" title="lexical-form" href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form">lexical form</a>
-                  of <i>value</i> matches <code>true</code>, or <a class="tref internalDFN" title="false" href="#dfn-false">false</a>
-                  if it matches <code>false</code>. If it matches neither,
-                  set <i>type</i> to <code>xsd:boolean</code>.</li>
-                <li>Otherwise, if the
-                  <a class="tref externalDFN" title="datatype-iri" href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri">datatype <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
-                  of <i>value</i> equals <code>xsd:integer</code> or
-                  <code>xsd:double</code> and its
-                  <a class="tref externalDFN" title="lexical-form" href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form">lexical form</a>
-                  is a valid <code>xsd:integer</code> or <code>xsd:double</code>
-                  according [<cite><a class="bibref" href="#bib-XMLSCHEMA11-2">XMLSCHEMA11-2</a></cite>], set <i>converted value</i>
-                  to the result of converting the
-                  <a class="tref externalDFN" title="lexical-form" href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form">lexical form</a>
-                  to a JSON <a class="tref internalDFN" title="number" href="#dfn-number">number</a>.</li>
-              </ol>
-            </li>
-            <li>Otherwise, if <i>value</i> is a
-              <a class="tref externalDFN" title="language-tagged-string" href="http://www.w3.org/TR/rdf11-concepts/#dfn-language-tagged-string">language-tagged string</a>
-              add a member <code>@language</code> to <i>result</i> and set its value to the
-              <a class="tref externalDFN" title="language-tag" href="http://www.w3.org/TR/rdf11-concepts/#dfn-language-tag">language tag</a>
-              of <i>value</i>.</li>
-            <li>Otherwise, set <i>type</i> to the
-              <a class="tref externalDFN" title="datatype-iri" href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri">datatype <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
-              of <i>value</i>, unless it equals <code>xsd:string</code> which is ignored.</li>
-            <li>Add a member <code>@value</code> to <i>result</i> whose value
-              is set to <i>converted value</i>.</li>
-            <li>If <i>type</i> is not <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, add a member <code>@type</code>
-              to <i>result</i> whose value is set to <i>type</i>.</li>
-            <li>Return <i>result</i>.</li>
-          </ol>
-        </li>
-      </ol>
-    </section>
-  </section>
-
-  <section id="data-round-tripping">
-    <h3><span class="secno">10.6 </span>Data Round Tripping</h3>
-
-    <p>When <a href="#deserialize-json-ld-to-rdf-algorithm">deserializing JSON-LD to RDF</a>
-      JSON-native <a class="tref internalDFN" title="number" href="#dfn-number">numbers</a> are automatically
-      type-coerced to <code>xsd:integer</code> or <code>xsd:double</code>
-      depending on whether the <a class="tref internalDFN" title="number" href="#dfn-number">number</a> has a non-zero fractional part
-      or not (the result of a modulo‑1 operation), 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> are coerced to <code>xsd:boolean</code>,
-      and <a class="tref internalDFN" title="string" href="#dfn-string">strings</a> are coerced to <code>xsd:string</code>.
-      The numeric or boolean values themselves are converted to
-      <dfn title="canonical-lexical-form" id="dfn-canonical-lexical-form">canonical lexical form</dfn>, i.e., a deterministic string
-      representation as defined in [<cite><a class="bibref" href="#bib-XMLSCHEMA11-2">XMLSCHEMA11-2</a></cite>].</p>
-
-    <p>The <a class="tref internalDFN" title="canonical-lexical-form" href="#dfn-canonical-lexical-form">canonical lexical form</a> of an <em>integer</em>, i.e., a
-      <a class="tref internalDFN" title="number" href="#dfn-number">number</a> with no non-zero fractional part or a <a class="tref internalDFN" title="number" href="#dfn-number">number</a>
-      coerced to <code>xsd:integer</code>, is a finite-length sequence of decimal
-      digits (<code>0-9</code>) with an optional leading minus sign; leading
-      zeros are prohibited. In JavaScript, implementers can use the following
-      snippet of code to convert an integer to
-      <a class="tref internalDFN" title="canonical-lexical-form" href="#dfn-canonical-lexical-form">canonical lexical form</a>:</p>
-
-    <div class="example"><div class="example-title"><span>Example 12</span>: Sample integer serialization implementation in JavaScript</div><pre class="example">(value).toFixed(0).toString()</pre></div>
-
-    <p>The <a class="tref internalDFN" title="canonical-lexical-form" href="#dfn-canonical-lexical-form">canonical lexical form</a> of a <em>double</em>, i.e., a
-      <a class="tref internalDFN" title="number" href="#dfn-number">number</a> with a non-zero fractional part or a <a class="tref internalDFN" title="number" href="#dfn-number">number</a>
-      coerced to <code>xsd:double</code>, consists of a mantissa followed by the
-      character <code>E</code>, followed by an exponent. The mantissa is a
-      decimal number and the exponent is an integer. Leading zeros and a
-      preceding plus sign (<code>+</code>) are prohibited in the exponent.
-      If the exponent is zero, it is indicated by <code>E0</code>. For the
-      mantissa, the preceding optional plus sign is prohibited and the
-      decimal point is required. Leading and trailing zeros are prohibited
-      subject to the following: number representations must be normalized
-      such that there is a single digit which is non-zero to the left of
-      the decimal point and at least a single digit to the right of the
-      decimal point unless the value being represented is zero. The
-      canonical representation for zero is <code>0.0E0</code>.
-      <code>xsd:double</code>'s value space is defined by the IEEE
-      double-precision 64-bit floating point type [<cite><a class="bibref" href="#bib-IEEE-754-1985">IEEE-754-1985</a></cite>] whereas
-      the value space of JSON <a class="tref internalDFN" title="number" href="#dfn-number">numbers</a> is not
-      specified; when deserializing JSON-LD to RDF the mantissa is rounded to
-      15&nbsp;digits after the decimal point. In JavaScript, implementers
-      can use the following snippet of code to convert a double to
-      <a class="tref internalDFN" title="canonical-lexical-form" href="#dfn-canonical-lexical-form">canonical lexical form</a>:</p>
-
-    <div class="example"><div class="example-title"><span>Example 13</span>: Sample floating point number serialization implementation in JavaScript</div><pre class="example">(value).toExponential(15).replace(/(\d)0*e\+?/,'$1E')</pre></div>
-
-    <p>The <a class="tref internalDFN" title="canonical-lexical-form" href="#dfn-canonical-lexical-form">canonical lexical form</a> of the <em>boolean</em>
-      values <a class="tref internalDFN" title="true" href="#dfn-true">true</a> and <a class="tref internalDFN" title="false" href="#dfn-false">false</a> are the strings
-      <code>true</code> and <code>false</code>.</p>
-
-    <p>When JSON-native <a class="tref internalDFN" title="number" href="#dfn-number">numbers</a> are deserialized
-      to RDF, lossless data round-tripping cannot be guaranteed, as rounding
-      errors might occur. When
-      <a href="#serialize-rdf-as-json-ld-algorithm">serializing RDF as JSON-LD</a>,
-      similar rounding errors might occur. Furthermore, the datatype or the lexical
-      representation might be lost. An <code>xsd:double</code> with a value
-      of <code>2.0</code> will, e.g., result in an <code>xsd:integer</code>
-      with a value of <code>2</code> in <a class="tref internalDFN" title="canonical-lexical-form" href="#dfn-canonical-lexical-form">canonical lexical form</a>
-      when converted from RDF to JSON-LD and back to RDF. It is important
-      to highlight that in practice it might be impossible to losslessly
-      convert an <code>xsd:integer</code> to a <a class="tref internalDFN" title="number" href="#dfn-number">number</a> because
-      its value space is not limited. While the JSON specification [<cite><a class="bibref" href="#bib-RFC4627">RFC4627</a></cite>]
-      does not limit the value space of <a class="tref internalDFN" title="number" href="#dfn-number">numbers</a>
-      either, concrete implementations typically do have a limited value
-      space.</p>
-
-    <p>To ensure lossless round-tripping the
-      <a href="#serialize-rdf-as-json-ld-algorithm">Serialize RDF as JSON-LD algorithm</a>
-      specifies a <i>use native types</i> flag which controls whether
-      <a class="tref externalDFN" title="rdf-literals" href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">RDF literals</a>
-      with a <a class="tref externalDFN" title="datatype-iri" href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri">datatype <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
-      equal to <code>xsd:integer</code>, <code>xsd:double</code>, or
-      <code>xsd:boolean</code> are converted to their JSON-native
-      counterparts. If the <i>use native types</i> flag is set to
-      <a class="tref internalDFN" title="false" href="#dfn-false">false</a>, all literals remain in their original string
-      representation.</p>
-
-    <p>Some JSON serializers, such as PHP's native implementation in some versions,
-      backslash-escape the forward slash character. For example, the value
-      <code>http://example.com/</code> would be serialized as <code>http:\/\/example.com\/</code>.
-      This is problematic as other JSON parsers might not understand those escaping characters.
-      There is no need to backslash-escape forward slashes in JSON-LD. To aid
-      interoperability between JSON-LD processors, forward slashes <em class="rfc2119" title="MUST NOT">MUST NOT</em> be
-      backslash-escaped.</p>
-  </section> <!-- end of Data Round Tripping -->
-</section>
-
-
-<section id="the-application-programming-interface">
-  <!--OddPage--><h2><span class="secno">11. </span>The Application Programming Interface</h2>
-
-  <p>This API provides a clean mechanism that enables developers to convert
-    JSON-LD data into a variety of output formats that are often easier to
-    work with. A conformant <a class="tref internalDFN" title="json-ld-api-implementation" href="#dfn-json-ld-api-implementation">JSON-LD API Implementation</a> <em class="rfc2119" title="MUST">MUST</em>
-    implement the entirety of the following API.</p>
-
-  <p>The JSON-LD API uses <a class="tref internalDFN" title="promise" href="#dfn-promise">Promises</a> to represent
-    the result of the various asynchronous operations.
-    <dfn title="promise" id="dfn-promise">Promises</dfn> are defined in
-    <cite><a href="http://dom.spec.whatwg.org/#promises">section&nbsp;4 Promises</a></cite>
-    of [<cite><a class="bibref" href="#bib-DOM-WHATWG">DOM-WHATWG</a></cite>].</p>
-
-    <div class="issue atrisk"><div class="issue-title" role="heading" aria-level="3"><span>Feature at Risk 8</span>: Properly referencing the DOM Promises spec</div><div class="atrisk">
-      <p class="atrisk-head">Note: This feature is
-        <a href="http://www.w3.org/2005/10/Process-20051014/tr#cfi">"at risk"</a> and may
-        be removed or modified heavily from the feature described in this specification
-        based on reviewer feedback. Please send feedback to
-        <a href="mailto:public-rdf-comments@w3.org">public-rdf-comments@w3.org</a>.
-        For the current status see
-        <a href="http://www.w3.org/2011/rdf-wg/wiki/JSON-LD_Features_at_Risk">features "at risk" in JSON-LD 1.0</a></p>
-      <p>The JSON-LD API specification currently only refers to the "Promise" interface and does not attempt to provide any details on the specific implementation of Promises. That is, it does not reference whether or not '.then()' must be specified. This is done in order to allow for some implementation flexibility in the event the DOM Promises spec changes. The editors of the WHATWG DOM specification have asserted that the Promise interface is ready to be incorporated into specifications. The issue relates to how to properly refer to a spec living in the WHATWG as a living standard as well as how to ensure that the interface provided by the spec is stable.</p>
-    </div></div>
-
-  <section id="the-jsonldprocessor-interface">
-    <h3><span class="secno">11.1 </span>The <a href="#idl-def-JsonLdProcessor" class="idlType"><code>JsonLdProcessor</code></a> Interface</h3>
-
-    <p>The <a href="#idl-def-JsonLdProcessor" class="idlType"><code>JsonLdProcessor</code></a> interface is the high-level programming structure
-      that developers use to access the JSON-LD transformation methods.</p>
-
-    <p>It is important to highlight that conformant
-      <a class="tref internalDFN" title="json-ld-api-implementation" href="#dfn-json-ld-api-implementation">JSON-LD API Implementations</a>
-      <em class="rfc2119" title="MUST NOT">MUST NOT</em> modify the input parameters. If an error is detected, the Promise is
-      rejected passing a <a href="#idl-def-JsonLdError" class="idlType"><code>JsonLdError</code></a> with the corresponding error
-      <code class="idlMemberName"><a href="#widl-JsonLdError-code">code</a></code>
-      and processing is stopped.</p>
-
-    <pre class="idl"><span class="idlInterface" id="idl-def-JsonLdProcessor">[<span class="extAttr">Constructor</span>]
-interface <span class="idlInterfaceID">JsonLdProcessor</span> {
-<span class="idlMethod">    <span class="idlMethType"><a href="#dfn-promise" class="internalDFN">Promise</a></span> <span class="idlMethName"><a href="#widl-JsonLdProcessor-compact-Promise-any-input-JsonLdContext-context-JsonLdOptions-options">compact</a></span> (<span class="idlParam"><span class="idlParamType"><a>any</a></span> <span class="idlParamName">input</span></span>, <span class="idlParam"><span class="idlParamType"><a href="#idl-def-JsonLdContext" class="idlType"><code>JsonLdContext</code></a></span> <span class="idlParamName">context</span></span>, <span class="idlParam">optional <span class="idlParamType"><a href="#idl-def-JsonLdOptions" class="idlType"><code>JsonLdOptions</code></a></span> <span class="idlParamName">options</span></span>);</span>
-<span class="idlMethod">    <span class="idlMethType"><a href="#dfn-promise" class="internalDFN">Promise</a></span> <span class="idlMethName"><a href="#widl-JsonLdProcessor-expand-Promise-any-input-JsonLdOptions-options">expand</a></span> (<span class="idlParam"><span class="idlParamType"><a>any</a></span> <span class="idlParamName">input</span></span>, <span class="idlParam">optional <span class="idlParamType"><a href="#idl-def-JsonLdOptions" class="idlType"><code>JsonLdOptions</code></a></span> <span class="idlParamName">options</span></span>);</span>
-<span class="idlMethod">    <span class="idlMethType"><a href="#dfn-promise" class="internalDFN">Promise</a></span> <span class="idlMethName"><a href="#widl-JsonLdProcessor-flatten-Promise-any-input-JsonLdContext-context-JsonLdOptions-options">flatten</a></span> (<span class="idlParam"><span class="idlParamType"><a>any</a></span> <span class="idlParamName">input</span></span>, <span class="idlParam">optional <span class="idlParamType"><a href="#idl-def-JsonLdContext" class="idlType"><code>JsonLdContext</code></a>?</span> <span class="idlParamName">context</span></span>, <span class="idlParam">optional <span class="idlParamType"><a href="#idl-def-JsonLdOptions" class="idlType"><code>JsonLdOptions</code></a></span> <span class="idlParamName">options</span></span>);</span>
-};</span></pre><section><h4 id="methods">Methods</h4><dl class="methods"><dt id="widl-JsonLdProcessor-compact-Promise-any-input-JsonLdContext-context-JsonLdOptions-options"><code>compact</code></dt><dd>
-        <p><a href="#compaction">Compacts</a> the given <i>input</i> using the
-          <i>context</i> according to the steps in the
-          <a href="#compaction-algorithm">Compaction algorithm</a>:</p>
-
-        <ol class="algorithm">
-          <li>Create a new <a class="tref internalDFN" title="promise" href="#dfn-promise">Promise</a> <i>promise</i> and return it. The
-            following steps are then executed asynchronously.</li>
-          <li>If the passed <i>input</i> is a <span class="idlParamType">DOMString</span>
-            representing the <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> of a remote document, dereference it.
-            If the retrieved document's content type is neither <code>application/json</code>,
-            nor <code>application/ld+json</code>, nor any other media type using a
-            <code>+json</code> suffix as defined in [<cite><a class="bibref" href="#bib-RFC6839">RFC6839</a></cite>]
-            or if the document cannot be parsed as JSON, reject the <i>promise</i> passing an
-            <code class="error"><a href="#idl-def-JsonLdErrorCode.loading-document-failed">loading document failed</a></code>
-            error.</li>
-          <li>Initialize a new empty <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>. The <a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">base <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
-            of the <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> is set to the <abbr title="Internationalized Resource Identifier">IRI</abbr> of the currently being processed
-            document, if available; otherwise to <a class="tref internalDFN" title="null" href="#dfn-null">null</a>. If set, the
-            <code class="idlMemberName"><a href="#widl-JsonLdOptions-base">base</a></code> option
-            overrides the <a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">base <abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</li>
-          <li>If an
-            <code class="idlMemberName"><a href="#widl-JsonLdOptions-expandContext">expandContext</a></code>
-            has been passed, update the <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> using the
-            <a href="#context-processing-algorithm">Context Processing algorithm</a>, passing the
-            <code class="idlMemberName"><a href="#widl-JsonLdOptions-expandContext">expandContext</a></code>
-            as <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a>. If
-            <code class="idlMemberName"><a href="#widl-JsonLdOptions-expandContext">expandContext</a></code>
-            is a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> having a <code>@context</code> member, pass that member's value instead.</li>
-          <li>If the <i>input</i> has been retrieved, the response has 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
-            and a content type of <code>application/json</code> or any media type
-            with a <code>+json</code> suffix as defined in [<cite><a class="bibref" href="#bib-RFC6839">RFC6839</a></cite>] except
-            <code>application/ld+json</code>, update the <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> using the
-            <a href="#context-processing-algorithm">Context Processing algorithm</a>, passing the
-            context referenced in the HTTP Link Header as <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a>. The
-            HTTP Link Header is ignored for documents served as <code>application/ld+json</code> If
-            multiple HTTP Link Headers using the <code>http://www.w3.org/ns/json-ld#context</code>
-            link relation are found, the <i>promise</i> is rejected with a <a href="#idl-def-JsonLdError" class="idlType"><code>JsonLdError</code></a> whose code is set to
-            <code class="error"><a href="#idl-def-JsonLdErrorCode.multiple-context-link-headers">multiple context link headers</a></code>
-            and processing is terminated.</li>
-          <li>Set <i>expanded</i> to the result of using the
-            <a href="#expansion-algorithm">Expansion algorithm</a>, passing the
-            <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> and <i>input</i> as <i>element</i>.</li>
-          <li>If <i>context</i> is a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> having a <code>@context</code> member, set
-            <i>context</i> to that member's value.</li>
-          <li>Set <i>compacted</i> to the result of using the
-            <a href="#compaction-algorithm">Compaction algorithm</a>, passing
-            <i>context</i>, <i>expanded</i> as <i>element</i>, and if passed, the
-            <code class="idlMemberName"><a href="#widl-JsonLdOptions-compactArrays">compactArrays</a></code>
-            flag in <i>options</i>.</li>
-          <li>Fulfill the <i>promise</i> passing <i>compacted</i>.</li>
-        </ol>
-
-
-      <table class="parameters"><tr><th>Parameter</th><th>Type</th><th>Nullable</th><th>Optional</th><th>Description</th></tr><tr><td class="prmName">input</td><td class="prmType"><code><a>any</a></code></td><td class="prmNullFalse">✘</td><td class="prmOptFalse">✘</td><td class="prmDesc">The JSON-LD object or array of JSON-LD objects to perform the compaction upon or an
-            <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> referencing the JSON-LD document to compact.</td></tr><tr><td class="prmName">context</td><td class="prmType"><code><a href="#idl-def-JsonLdContext" class="idlType"><code>JsonLdContext</code></a></code></td><td class="prmNullFalse">✘</td><td class="prmOptFalse">✘</td><td class="prmDesc">The context to use when compacting the <code>input</code>;
-            it can be specified by using a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>, an
-            <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>, or an array consisting of
-            <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>s and <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>s.</td></tr><tr><td class="prmName">options</td><td class="prmType"><code><a href="#idl-def-JsonLdOptions" class="idlType"><code>JsonLdOptions</code></a></code></td><td class="prmNullFalse">✘</td><td class="prmOptTrue">✔</td><td class="prmDesc">A set of options to configure the algorithms. This allows, e.g.,
-            to set the input document's base <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</td></tr></table><div><em>Return type: </em><code><a href="#dfn-promise" class="internalDFN">Promise</a></code></div></dd><dt id="widl-JsonLdProcessor-expand-Promise-any-input-JsonLdOptions-options"><code>expand</code></dt><dd>
-        <p><a href="#expansion">Expands</a> the given <i>input</i> according to
-          the steps in the <a href="#expansion-algorithm">Expansion algorithm</a>:</p>
-
-        <ol class="algorithm">
-          <li>Create a new <a class="tref internalDFN" title="promise" href="#dfn-promise">Promise</a> <i>promise</i> and return it. The
-            following steps are then executed asynchronously.</li>
-          <li>If the passed <i>input</i> is a <span class="idlParamType">DOMString</span>
-            representing the <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> of a remote document, dereference it.
-            If the retrieved document's content type is neither <code>application/json</code>,
-            nor <code>application/ld+json</code>, nor any other media type using a
-            <code>+json</code> suffix as defined in [<cite><a class="bibref" href="#bib-RFC6839">RFC6839</a></cite>], reject the <i>promise</i> passing an
-            <code class="error"><a href="#idl-def-JsonLdErrorCode.loading-document-failed">loading document failed</a></code>
-            error.</li>
-          <li>Initialize a new empty <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>. The <a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">base <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
-            of the <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> is set to the <abbr title="Internationalized Resource Identifier">IRI</abbr> of the currently being processed
-            document, if available; otherwise to <a class="tref internalDFN" title="null" href="#dfn-null">null</a>. If set, the
-            <code class="idlMemberName"><a href="#widl-JsonLdOptions-base">base</a></code> option
-            overrides the <a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">base <abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</li>
-          <li>If an
-            <code class="idlMemberName"><a href="#widl-JsonLdOptions-expandContext">expandContext</a></code>
-            has been passed, update the <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> using the
-            <a href="#context-processing-algorithm">Context Processing algorithm</a>, passing the
-            <code class="idlMemberName"><a href="#widl-JsonLdOptions-expandContext">expandContext</a></code>
-            as <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a>. If
-            <code class="idlMemberName"><a href="#widl-JsonLdOptions-expandContext">expandContext</a></code>
-            is a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> having a <code>@context</code> member, pass that member's value instead.</li>
-          <li>If the <i>input</i> has been retrieved, the response has 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
-            and a content type of <code>application/json</code> or any media type
-            with a <code>+json</code> suffix as defined in [<cite><a class="bibref" href="#bib-RFC6839">RFC6839</a></cite>] except
-            <code>application/ld+json</code>, update the <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> using the
-            <a href="#context-processing-algorithm">Context Processing algorithm</a>, passing the
-            context referenced in the HTTP Link Header as <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a>. The
-            HTTP Link Header is ignored for documents served as <code>application/ld+json</code> If
-            multiple HTTP Link Headers using the <code>http://www.w3.org/ns/json-ld#context</code>
-            link relation are found, the <i>promise</i> is rejected with a <a href="#idl-def-JsonLdError" class="idlType"><code>JsonLdError</code></a> whose code is set to
-            <code class="error"><a href="#idl-def-JsonLdErrorCode.multiple-context-link-headers">multiple context link headers</a></code>
-            and processing is terminated.</li>
-          <li>Set <i>expanded</i> to the result of using the
-            <a href="#expansion-algorithm">Expansion algorithm</a>, passing the
-            <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> and <i>input</i> as <i>element</i>.</li>
-          <li>Fulfill the <i>promise</i> passing <i>expanded</i>.</li>
-        </ol>
-
-
-      <table class="parameters"><tr><th>Parameter</th><th>Type</th><th>Nullable</th><th>Optional</th><th>Description</th></tr><tr><td class="prmName">input</td><td class="prmType"><code><a>any</a></code></td><td class="prmNullFalse">✘</td><td class="prmOptFalse">✘</td><td class="prmDesc">The JSON-LD object or array of JSON-LD objects to perform the expansion upon or an
-            <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> referencing the JSON-LD document to expand.</td></tr><tr><td class="prmName">options</td><td class="prmType"><code><a href="#idl-def-JsonLdOptions" class="idlType"><code>JsonLdOptions</code></a></code></td><td class="prmNullFalse">✘</td><td class="prmOptTrue">✔</td><td class="prmDesc">A set of options to configure the used algorithms such. This allows, e.g.,
-            to set the input document's base <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</td></tr></table><div><em>Return type: </em><code><a href="#dfn-promise" class="internalDFN">Promise</a></code></div></dd><dt id="widl-JsonLdProcessor-flatten-Promise-any-input-JsonLdContext-context-JsonLdOptions-options"><code>flatten</code></dt><dd>
-        <p><a href="#flattening">Flattens</a> the given <i>input</i> and
-          <a href="#compaction">compacts</a> it using the passed <i>context</i>
-          according to the steps in the <a href="#flattening-algorithm">Flattening algorithm</a>:</p>
-
-        <ol class="algorithm">
-          <li>Create a new <a class="tref internalDFN" title="promise" href="#dfn-promise">Promise</a> <i>promise</i> and return it. The
-            following steps are then executed asynchronously.</li>
-          <li>If the passed <i>input</i> is a <span class="idlParamType">DOMString</span>
-            representing the <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> of a remote document, dereference it.
-            If the retrieved document's content type is neither <code>application/json</code>,
-            nor <code>application/ld+json</code>, nor any other media type using a
-            <code>+json</code> suffix as defined in [<cite><a class="bibref" href="#bib-RFC6839">RFC6839</a></cite>], reject the <i>promise</i> passing an
-            <code class="error"><a href="#idl-def-JsonLdErrorCode.loading-document-failed">loading document failed</a></code>
-            error.</li>
-          <li>Initialize a new empty <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>. The <a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">base <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
-            of the <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> is set to the <abbr title="Internationalized Resource Identifier">IRI</abbr> of the currently being processed
-            document, if available; otherwise to <a class="tref internalDFN" title="null" href="#dfn-null">null</a>. If set, the
-            <code class="idlMemberName"><a href="#widl-JsonLdOptions-base">base</a></code> option
-            overrides the <a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">base <abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</li>
-          <li>If an
-            <code class="idlMemberName"><a href="#widl-JsonLdOptions-expandContext">expandContext</a></code>
-            has been passed, update the <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> using the
-            <a href="#context-processing-algorithm">Context Processing algorithm</a>, passing the
-            <code class="idlMemberName"><a href="#widl-JsonLdOptions-expandContext">expandContext</a></code>
-            as <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a>. If
-            <code class="idlMemberName"><a href="#widl-JsonLdOptions-expandContext">expandContext</a></code>
-            is a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> having a <code>@context</code> member, pass that member's value instead.</li>
-          <li>If the <i>input</i> has been retrieved, the response has 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
-            and a content type of <code>application/json</code> or any media type
-            with a <code>+json</code> suffix as defined in [<cite><a class="bibref" href="#bib-RFC6839">RFC6839</a></cite>] except
-            <code>application/ld+json</code>, update the <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> using the
-            <a href="#context-processing-algorithm">Context Processing algorithm</a>, passing the
-            context referenced in the HTTP Link Header as <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a>. The
-            HTTP Link Header is ignored for documents served as <code>application/ld+json</code> If
-            multiple HTTP Link Headers using the <code>http://www.w3.org/ns/json-ld#context</code>
-            link relation are found, the <i>promise</i> is rejected with a <a href="#idl-def-JsonLdError" class="idlType"><code>JsonLdError</code></a> whose code is set to
-            <code class="error"><a href="#idl-def-JsonLdErrorCode.multiple-context-link-headers">multiple context link headers</a></code>
-            and processing is terminated.</li>
-          <li>Set <i>expanded</i> to the result of using the
-            <a href="#expansion-algorithm">Expansion algorithm</a>, passing the
-            <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> and <i>input</i> as <i>element</i>.</li>
-          <li>If <i>context</i> is a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> having a <code>@context</code> member, set
-            <i>context</i> to that member's value.</li>
-          <li>Initialize an empty <i>identifier map</i> and a <i>counter</i> (set to <code>0</code>)
-            to be used by the
-            <a href="#generate-blank-node-identifier">Generate Blank Node Identifier algorithm</a>.</li>
-          <li>Set <i>flattened</i> to the result of using the
-            <a href="#flattening-algorithm">Flattening algorithm</a>, passing
-            <i>expanded</i> as <i>element</i>, <i>context</i>, and if passed, the
-            <code class="idlMemberName"><a href="#widl-JsonLdOptions-compactArrays">compactArrays</a></code>
-            flag in <i>options</i> (which is internally passed to the
-            <a href="#compaction-algorithm">Compaction algorithm</a>).</li>
-          <li>Fulfill the <i>promise</i> passing <i>flattened</i>.</li>
-        </ol>
-
-
-      <table class="parameters"><tr><th>Parameter</th><th>Type</th><th>Nullable</th><th>Optional</th><th>Description</th></tr><tr><td class="prmName">input</td><td class="prmType"><code><a>any</a></code></td><td class="prmNullFalse">✘</td><td class="prmOptFalse">✘</td><td class="prmDesc">The JSON-LD object or array of JSON-LD objects or an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>
-            referencing the JSON-LD document to flatten.</td></tr><tr><td class="prmName">context</td><td class="prmType"><code><a href="#idl-def-JsonLdContext" class="idlType"><code>JsonLdContext</code></a></code></td><td class="prmNullTrue">✔</td><td class="prmOptTrue">✔</td><td class="prmDesc">The context to use when compacting the flattened <code>input</code>;
-            it can be specified by using a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>, an
-            <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>, or an array consisting of <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>s
-            and <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>s. If not
-            passed or <a class="tref internalDFN" title="null" href="#dfn-null">null</a> is passed, the result will not be compacted
-            but kept in expanded form.</td></tr><tr><td class="prmName">options</td><td class="prmType"><code><a href="#idl-def-JsonLdOptions" class="idlType"><code>JsonLdOptions</code></a></code></td><td class="prmNullFalse">✘</td><td class="prmOptTrue">✔</td><td class="prmDesc">A set of options to configure the used algorithms such. This allows, e.g.,
-            to set the input document's base <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</td></tr></table><div><em>Return type: </em><code><a href="#dfn-promise" class="internalDFN">Promise</a></code></div></dd></dl></section>
-
-    <pre class="idl"><span class="idlTypedef" id="idl-def-JsonLdContext">typedef <span class="idlTypedefType">(<a>object</a> or <a>DOMString</a> or <a>(object</a> or <a>DOMString[])</a>)</span> <span class="idlTypedefID">JsonLdContext</span>;</span></pre><div class="idlTypedefDesc">
-      <p>The <a href="#idl-def-JsonLdContext" class="idlType"><code>JsonLdContext</code></a> type is used to refer to a value that
-        that may be a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>, a <a class="tref internalDFN" title="string" href="#dfn-string">string</a> representing an
-        <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>, or an array of <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON objects</a>
-        and <a class="tref internalDFN" title="string" href="#dfn-string">strings</a>.</p>
-    </div>
-  </section> <!-- end of JsonLdProcessor -->
-
-  <section id="the-jsonldoptions-type">
-    <h3><span class="secno">11.2 </span>The <a href="#idl-def-JsonLdOptions" class="idlType"><code>JsonLdOptions</code></a> Type</h3>
-
-    <p>The <a href="#idl-def-JsonLdOptions" class="idlType"><code>JsonLdOptions</code></a> type is used to pass various options to the
-      <a href="#idl-def-JsonLdProcessor" class="idlType"><code>JsonLdProcessor</code></a> methods.</p>
-
-    <pre class="idl"><span class="idlDictionary" id="idl-def-JsonLdOptions">dictionary <span class="idlDictionaryID">JsonLdOptions</span> {
-<span class="idlMember">    <span class="idlMemberType"><a>DOMString</a>?</span>             <span class="idlMemberName"><a href="#widl-JsonLdOptions-base">base</a></span>;</span>
-<span class="idlMember">    <span class="idlMemberType"><a>boolean</a></span>                <span class="idlMemberName"><a href="#widl-JsonLdOptions-compactArrays">compactArrays</a></span> = <span class="idlMemberValue">true</span>;</span>
-<span class="idlMember">    <span class="idlMemberType"><a href="#idl-def-LoadDocumentCallback" class="idlType"><code>LoadDocumentCallback</code></a></span>   <span class="idlMemberName"><a href="#widl-JsonLdOptions-documentLoader">documentLoader</a></span> = <span class="idlMemberValue">null</span>;</span>
-<span class="idlMember">    <span class="idlMemberType">(<a>object?</a> or <a>DOMString</a>)</span> <span class="idlMemberName"><a href="#widl-JsonLdOptions-expandContext">expandContext</a></span> = <span class="idlMemberValue">null</span>;</span>
-<span class="idlMember">    <span class="idlMemberType"><a>DOMString</a></span>              <span class="idlMemberName"><a href="#widl-JsonLdOptions-processingMode">processingMode</a></span> = <span class="idlMemberValue">"json-ld-1.0"</span>;</span>
-};</span></pre><section><h4 id="dictionary-jsonldoptions-members">Dictionary <a class="idlType" href="#idl-def-JsonLdOptions"><code>JsonLdOptions</code></a> Members</h4><dl class="dictionary-members"><dt id="widl-JsonLdOptions-base"><code>base</code> of type <span class="idlMemberType"><a>DOMString</a></span>, nullable</dt><dd>The base <abbr title="Internationalized Resource Identifier">IRI</abbr> to use when expanding or compacting the document. If set, this overrides
-        the input document's <abbr title="Internationalized Resource Identifier">IRI</abbr>.</dd><dt id="widl-JsonLdOptions-compactArrays"><code>compactArrays</code> of type <span class="idlMemberType"><a>boolean</a></span>, defaulting to <code>true</code></dt><dd>If set to <code>true</code>, the JSON-LD processor replaces arrays with just
-        one element with that element during compaction. If set to <code>false</code>,
-        all arrays will remain arrays even if they have just one element.
-      </dd><dt id="widl-JsonLdOptions-documentLoader"><code>documentLoader</code> of type <span class="idlMemberType"><a href="#idl-def-LoadDocumentCallback" class="idlType"><code>LoadDocumentCallback</code></a></span>, defaulting to <code>null</code></dt><dd>The callback of the loader to be used to retrieve remote documents and contexts.
-        If specified, it <em class="rfc2119" title="MUST">MUST</em> be used to retrieve remote documents and contexts; otherwise,
-        if not specified, the processor's built-in loader <em class="rfc2119" title="MUST">MUST</em> be used.</dd><dt id="widl-JsonLdOptions-expandContext"><code>expandContext</code> of type <span class="idlMemberType"><a>(object? or DOMString)</a></span>, defaulting to <code>null</code></dt><dd>A context that is used to initialize the active context when expanding a document.</dd><dt id="widl-JsonLdOptions-processingMode"><code>processingMode</code> of type <span class="idlMemberType"><a>DOMString</a></span>, defaulting to <code>"json-ld-1.0"</code></dt><dd>If set to <code>json-ld-1.0</code>, the JSON-LD processor <em class="rfc2119" title="MUST">MUST</em> produce
-        exactly the same results as the algorithms defined in this specification.
-        If set to another value, the JSON-LD processor is allowed to extend
-        or modify the algorithms defined in this specification to enable
-        application-specific optimizations. The definition of such
-        optimizations is beyond the scope of this specification and thus
-        not defined. Consequently, different implementations <em class="rfc2119" title="MAY">MAY</em> implement
-        different optimizations. Developers <em class="rfc2119" title="MUST NOT">MUST NOT</em> define modes beginning
-        with <code>json-ld</code> as they are reserved for future versions
-        of this specification.</dd></dl></section>
-  </section> <!-- end JsonLdOptions -->
-
-  <section id="remote-document-and-context-retrieval">
-    <h3><span class="secno">11.3 </span>Remote Document and Context Retrieval</h3>
-
-    <p>Developers can utilize a callback to control how remote documents and contexts are retrieved
-      by <a class="tref internalDFN" title="json-ld-api-implementation" href="#dfn-json-ld-api-implementation">JSON-LD API Implementations</a>.
-      This section details the parameters of that callback and the data structure
-      used to return the retrieved context.</p>
-
-    <section>
-      <h4 id="loaddocumentcallback">LoadDocumentCallback</h4>
-
-      <p>The <a href="#idl-def-LoadDocumentCallback" class="idlType"><code>LoadDocumentCallback</code></a> defines a callback that custom document loaders
-        have to implement to be used to retrieve remote documents and contexts.</p>
-
-      <pre class="idl"><span class="idlCallback" id="idl-def-LoadDocumentCallback">callback <span class="idlCallbackID">LoadDocumentCallback</span> = <span class="idlCallbackType"><a href="#dfn-promise" class="internalDFN">Promise</a></span> (<span class="idlParam"><span class="idlParamType"><a>DOMString</a></span> <span class="idlParamName">url</span></span>);</span></pre><section><h5 id="callback-loaddocumentcallback-parameters">Callback <a class="idlType" href="#idl-def-LoadDocumentCallback"><code>LoadDocumentCallback</code></a> Parameters</h5><dl class="callback-members"><dt id="widl-LoadDocumentCallback-url"><code>url</code> of type <span class="idlMemberType"><a>DOMString</a></span></dt><dd>The URL of the remote document or context to load.</dd></dl></section>
-
-      <p>All errors <em class="rfc2119" title="MUST">MUST</em> result in the <a class="tref internalDFN" title="promise" href="#dfn-promise">Promise</a> being rejected with
-        a <a href="#idl-def-JsonLdError" class="idlType"><code>JsonLdError</code></a> whose code is set to
-        <code class="error"><a href="#idl-def-JsonLdErrorCode.loading-document-failed">loading document failed</a></code>
-        or <code class="error"><a href="#idl-def-JsonLdErrorCode.multiple-context-link-headers">multiple context link headers</a></code>
-        as described in the next section.</p>
-    </section>
-
-    <section>
-      <h4 id="remotedocument">RemoteDocument</h4>
-
-      <p>The <a href="#idl-def-RemoteDocument" class="idlType"><code>RemoteDocument</code></a> type is used by a <a href="#idl-def-LoadDocumentCallback" class="idlType"><code>LoadDocumentCallback</code></a>
-        to return information about a remote document or context.</p>
-
-      <pre class="idl"><span class="idlDictionary" id="idl-def-RemoteDocument">dictionary <span class="idlDictionaryID">RemoteDocument</span> {
-<span class="idlMember">    <span class="idlMemberType"><a>DOMString</a></span> <span class="idlMemberName"><a href="#widl-RemoteDocument-contextUrl">contextUrl</a></span> = <span class="idlMemberValue">null</span>;</span>
-<span class="idlMember">    <span class="idlMemberType"><a>DOMString</a></span> <span class="idlMemberName"><a href="#widl-RemoteDocument-documentUrl">documentUrl</a></span>;</span>
-<span class="idlMember">    <span class="idlMemberType"><a>any</a></span>       <span class="idlMemberName"><a href="#widl-RemoteDocument-document">document</a></span>;</span>
-};</span></pre><section><h5 id="dictionary-remotedocument-members">Dictionary <a class="idlType" href="#idl-def-RemoteDocument"><code>RemoteDocument</code></a> Members</h5><dl class="dictionary-members"><dt id="widl-RemoteDocument-contextUrl"><code>contextUrl</code> of type <span class="idlMemberType"><a>DOMString</a></span>, defaulting to <code>null</code></dt><dd>If available, the value of the 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 in the
-          response. If the response's content type is <code>application/ld+json</code>,
-          the HTTP Link Header <em class="rfc2119" title="MUST">MUST</em> be ignored. If multiple HTTP Link Headers using
-          the <code>http://www.w3.org/ns/json-ld#context</code> link relation are found,
-          the <a class="tref internalDFN" title="promise" href="#dfn-promise">Promise</a> of the <a href="#idl-def-LoadDocumentCallback" class="idlType"><code>LoadDocumentCallback</code></a> <em class="rfc2119" title="MUST">MUST</em> be rejected with
-          a <a href="#idl-def-JsonLdError" class="idlType"><code>JsonLdError</code></a> whose code is set to
-          <code class="error"><a href="#idl-def-JsonLdErrorCode.multiple-context-link-headers">multiple context link headers</a></code>.</dd><dt id="widl-RemoteDocument-document"><code>document</code> of type <span class="idlMemberType"><a>any</a></span></dt><dd>The retrieved document. This can either be the raw payload or the already
-          parsed document.</dd><dt id="widl-RemoteDocument-documentUrl"><code>documentUrl</code> of type <span class="idlMemberType"><a>DOMString</a></span></dt><dd>The final URL of the loaded document. This is important
-          to handle HTTP redirects properly.</dd></dl></section>
-    </section>
-  </section> <!-- end of Remote Document and Context Retrieval -->
-
-  <section id="error-handling">
-    <h3><span class="secno">11.4 </span>Error Handling</h3>
-
-    <p>This section describes the datatype definitions used within the
-      JSON-LD API for error handling.</p>
-
-    <section>
-      <h4 id="jsonlderror">JsonLdError</h4>
-
-      <p>The <a href="#idl-def-JsonLdError" class="idlType"><code>JsonLdError</code></a> type is used to report processing errors.</p>
-
-      <pre class="idl"><span class="idlDictionary" id="idl-def-JsonLdError">dictionary <span class="idlDictionaryID">JsonLdError</span> {
-<span class="idlMember">    <span class="idlMemberType"><a href="#idl-def-JsonLdErrorCode" class="idlType"><code>JsonLdErrorCode</code></a></span> <span class="idlMemberName"><a href="#widl-JsonLdError-code">code</a></span>;</span>
-<span class="idlMember">    <span class="idlMemberType"><a>DOMString</a>?</span>      <span class="idlMemberName"><a href="#widl-JsonLdError-message">message</a></span> = <span class="idlMemberValue">null</span>;</span>
-};</span></pre><section><h5 id="dictionary-jsonlderror-members">Dictionary <a class="idlType" href="#idl-def-JsonLdError"><code>JsonLdError</code></a> Members</h5><dl class="dictionary-members"><dt id="widl-JsonLdError-code"><code>code</code> of type <span class="idlMemberType"><a href="#idl-def-JsonLdErrorCode" class="idlType"><code>JsonLdErrorCode</code></a></span></dt><dd>a string representing the particular error type, as described in
-          the various algorithms in this document.</dd><dt id="widl-JsonLdError-message"><code>message</code> of type <span class="idlMemberType"><a>DOMString</a></span>, nullable, defaulting to <code>null</code></dt><dd>an optional error message containing additional debugging information.
-          The specific contents of error messages are outside the scope of this
-          specification.</dd></dl></section>
-    </section>
-
-    <section>
-      <h4 id="jsonlderrorcode">JsonLdErrorCode</h4>
-      <p>The <a href="#idl-def-JsonLdErrorCode" class="idlType"><code>JsonLdErrorCode</code></a> represents the collection of valid JSON-LD error
-        codes.</p>
-
-      <div class="issue atrisk"><div class="issue-title" role="heading" aria-level="5"><span>Feature at Risk 4</span>: Lists of lists and partial list conversion from RDF</div><div class="atrisk">
-        <p class="atrisk-head">Note: This feature is
-          <a href="http://www.w3.org/2005/10/Process-20051014/tr#cfi">"at risk"</a> and may
-          be removed from this specification based on feedback. Please send feedback to
-          <a href="mailto:public-rdf-comments@w3.org">public-rdf-comments@w3.org</a>.
-          For the current status see
-          <a href="http://www.w3.org/2011/rdf-wg/wiki/JSON-LD_Features_at_Risk">features "at risk" in JSON-LD 1.0</a></p>
-       <p>The JSON-LD algorithms have been updated to support conversion of lists
-          of lists to <a class="tref internalDFN" title="list-object" href="#dfn-list-object">list objects</a> by preserving
-          the blank node head of the inner list. Lists of lists can, however, not be
-          represented directly in JSON-LD using the <code>@list</code> construct;
-          they have to be represented as a set of interlinked node objects using
-          RDF's rdf:first and rdf:rest properties. Implementors are asked to pay
-          particular attention to the feature and provide feedback on lists of lists
-          and partial lists. The feature may remain in the specification, or it may
-          be removed after further implementation experience has been gathered.
-          Similarly, partial list conversion in the RDF algorithms have been marked
-          as a feature at risk and may be removed from the specification based
-          on implementation feedback.</p>
-      </div></div>
-
-      <pre class="idl"><span class="idlEnum" id="idl-def-JsonLdErrorCode">enum <span class="idlEnumID">JsonLdErrorCode</span> {
-    "<a href="#idl-def-JsonLdErrorCode.loading-document-failed" class="idlEnumItem">loading document failed</a>",
-    "<a href="#idl-def-JsonLdErrorCode.list-of-lists" class="idlEnumItem">list of lists</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid--index-value" class="idlEnumItem">invalid @index value</a>",
-    "<a href="#idl-def-JsonLdErrorCode.conflicting-indexes" class="idlEnumItem">conflicting indexes</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid--id-value" class="idlEnumItem">invalid @id value</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-local-context" class="idlEnumItem">invalid local context</a>",
-    "<a href="#idl-def-JsonLdErrorCode.multiple-context-link-headers" class="idlEnumItem">multiple context link headers</a>",
-    "<a href="#idl-def-JsonLdErrorCode.loading-remote-context-failed" class="idlEnumItem">loading remote context failed</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-remote-context" class="idlEnumItem">invalid remote context</a>",
-    "<a href="#idl-def-JsonLdErrorCode.recursive-context-inclusion" class="idlEnumItem">recursive context inclusion</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-base-IRI" class="idlEnumItem">invalid base IRI</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-vocab-mapping" class="idlEnumItem">invalid vocab mapping</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-default-language" class="idlEnumItem">invalid default language</a>",
-    "<a href="#idl-def-JsonLdErrorCode.keyword-redefinition" class="idlEnumItem">keyword redefinition</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-term-definition" class="idlEnumItem">invalid term definition</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-reverse-property" class="idlEnumItem">invalid reverse property</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-IRI-mapping" class="idlEnumItem">invalid IRI mapping</a>",
-    "<a href="#idl-def-JsonLdErrorCode.cyclic-IRI-mapping" class="idlEnumItem">cyclic IRI mapping</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-keyword-alias" class="idlEnumItem">invalid keyword alias</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-type-mapping" class="idlEnumItem">invalid type mapping</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-language-mapping" class="idlEnumItem">invalid language mapping</a>",
-    "<a href="#idl-def-JsonLdErrorCode.colliding-keywords" class="idlEnumItem">colliding keywords</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-container-mapping" class="idlEnumItem">invalid container mapping</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-type-value" class="idlEnumItem">invalid type value</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-value-object" class="idlEnumItem">invalid value object</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-value-object-value" class="idlEnumItem">invalid value object value</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-language-tagged-string" class="idlEnumItem">invalid language-tagged string</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-language-tagged-value" class="idlEnumItem">invalid language-tagged value</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-typed-value" class="idlEnumItem">invalid typed value</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-set-or-list-object" class="idlEnumItem">invalid set or list object</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-language-map-value" class="idlEnumItem">invalid language map value</a>",
-    "<a href="#idl-def-JsonLdErrorCode.compaction-to-list-of-lists" class="idlEnumItem">compaction to list of lists</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-reverse-property-map" class="idlEnumItem">invalid reverse property map</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid--reverse-value" class="idlEnumItem">invalid @reverse value</a>",
-    "<a href="#idl-def-JsonLdErrorCode.invalid-reverse-property-value" class="idlEnumItem">invalid reverse property value</a>"
-};</span></pre><table class="simple"><tr><th colspan="2">Enumeration description</th></tr><tr><td><code id="idl-def-JsonLdErrorCode.loading-document-failed">loading document failed</code></td><td>The document could not be loaded or parsed as JSON.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.list-of-lists">list of lists</code></td><td>A list of lists was detected. List of lists are not supported in
-          this version of JSON-LD due to the algorithmic complexity.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.invalid--index-value">invalid @index value</code></td><td>An <code>@index</code> member was encountered whose value was
-          not a <a class="tref internalDFN" title="string" href="#dfn-string">string</a>.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.conflicting-indexes">conflicting indexes</code></td><td>Multiple conflicting indexes have been found for the same node.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.invalid--id-value">invalid @id value</code></td><td>An <code>@id</code> member was encountered whose value was not a
-          <a class="tref internalDFN" title="string" href="#dfn-string">string</a>.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.invalid-local-context">invalid local context</code></td><td>In invalid <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a> was detected.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.multiple-context-link-headers">multiple context link headers</code></td><td>Multiple HTTP Link Headers [<cite><a class="bibref" href="#bib-RFC5988">RFC5988</a></cite>] using the
-          <code>http://www.w3.org/ns/json-ld#context</code> link relation
-          have been detected.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.loading-remote-context-failed">loading remote context failed</code></td><td>There was a problem encountered loading a remote context.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.invalid-remote-context">invalid remote context</code></td><td>No valid context document has been found for a referenced,
-         remote context.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.recursive-context-inclusion">recursive context inclusion</code></td><td>A cycle in remote context inclusions has been detected.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.invalid-base-IRI">invalid base IRI</code></td><td>An invalid <a class="tref internalDFN" title="base-iri" href="#dfn-base-iri">base <abbr title="Internationalized Resource Identifier">IRI</abbr></a> has been detected, i.e., it is
-          neither an <a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> nor <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.invalid-vocab-mapping">invalid vocab mapping</code></td><td>An invalid <a class="tref internalDFN" title="vocabulary-mapping" href="#dfn-vocabulary-mapping">vocabulary mapping</a> has been detected, i.e.,
-          it is neither an <a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> nor <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.invalid-default-language">invalid default language</code></td><td>The value of the <a class="tref internalDFN" title="default-language" href="#dfn-default-language">default language</a> is not a <a class="tref internalDFN" title="string" href="#dfn-string">string</a>
-          or <a class="tref internalDFN" title="null" href="#dfn-null">null</a> and thus invalid.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.keyword-redefinition">keyword redefinition</code></td><td>A <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> redefinition has been detected.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.invalid-term-definition">invalid term definition</code></td><td>An invalid <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a> has been detected.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.invalid-reverse-property">invalid reverse property</code></td><td>An invalid reverse property definition has been detected.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.invalid-IRI-mapping">invalid IRI mapping</code></td><td>A <a class="tref internalDFN" title="local-context" href="#dfn-local-context">local context</a> contains a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> that has
-          an invalid or missing <a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a>.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.cyclic-IRI-mapping">cyclic IRI mapping</code></td><td>A cycle in <a class="tref internalDFN" title="iri-mapping" href="#dfn-iri-mapping"><abbr title="Internationalized Resource Identifier">IRI</abbr> mappings</a> has been detected.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.invalid-keyword-alias">invalid keyword alias</code></td><td>An invalid <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> alias definition has been
-          encountered.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.invalid-type-mapping">invalid type mapping</code></td><td>An <code>@type</code> member in a <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a>
-          was encountered whose value could not be expanded to an
-          <a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.invalid-language-mapping">invalid language mapping</code></td><td>An <code>@language</code> member in a <a class="tref internalDFN" title="term-definition" href="#dfn-term-definition">term definition</a>
-          was encountered whose value was neither a <a class="tref internalDFN" title="string" href="#dfn-string">string</a> nor
-          <a class="tref internalDFN" title="null" href="#dfn-null">null</a> and thus invalid.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.colliding-keywords">colliding keywords</code></td><td>Two properties which expand to the same keyword have been detected.
-          This might occur if a <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> and an alias thereof
-          are used at the same time.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.invalid-container-mapping">invalid container mapping</code></td><td>An <code>@container</code> member was encountered whose value was
-          not one of the following <a class="tref internalDFN" title="string" href="#dfn-string">strings</a>:
-          <code>@list</code>, <code>@set</code>, or <code>@index</code>.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.invalid-type-value">invalid type value</code></td><td>An invalid value for an <code>@type</code> member has been detected,
-          i.e., the value was neither a <a class="tref internalDFN" title="string" href="#dfn-string">string</a> nor an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>
-          of <a class="tref internalDFN" title="string" href="#dfn-string">strings</a>.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.invalid-value-object">invalid value object</code></td><td>A <a class="tref internalDFN" title="value-object" href="#dfn-value-object">value object</a> with disallowed members has been
-          detected.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.invalid-value-object-value">invalid value object value</code></td><td>An invalid value for the <code>@value</code> member of a
-          <a class="tref internalDFN" title="value-object" href="#dfn-value-object">value object</a> has been detected, i.e., it is neither
-          a <a class="tref internalDFN" title="scalar" href="#dfn-scalar">scalar</a> nor <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.invalid-language-tagged-string">invalid language-tagged string</code></td><td>A <a class="tref internalDFN" title="language-tagged-string" href="http://www.w3.org/TR/rdf11-concepts/#dfn-language-tagged-string">language-tagged string</a> with an invalid language
-          value was detected.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.invalid-language-tagged-value">invalid language-tagged value</code></td><td>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> with an
-          associated language tag was detected.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.invalid-typed-value">invalid typed value</code></td><td>A <a class="tref internalDFN" title="typed-value" href="#dfn-typed-value">typed value</a> with an invalid type was detected.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.invalid-set-or-list-object">invalid set or list object</code></td><td>A <a class="tref internalDFN" title="set-object" href="#dfn-set-object">set object</a> or <a class="tref internalDFN" title="list-object" href="#dfn-list-object">list object</a> with
-          disallowed members has been detected.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.invalid-language-map-value">invalid language map value</code></td><td>An invalid value in a <a class="tref externalDFN" title="language-map" href="http://www.w3.org/TR/2013/CR-json-ld-20130822/#dfn-language-map">language map</a>
-          has been detected. It has to be a <a class="tref internalDFN" title="string" href="#dfn-string">string</a> or an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> of
-          <a class="tref internalDFN" title="string" href="#dfn-string">strings</a>.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.compaction-to-list-of-lists">compaction to list of lists</code></td><td>The compacted document contains a list of lists as multiple
-          lists have been compacted to the same term.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.invalid-reverse-property-map">invalid reverse property map</code></td><td>An invalid reverse property map has been detected. No
-          <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a> apart from <code>@context</code>
-          are allowed in reverse property maps.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.invalid--reverse-value">invalid @reverse value</code></td><td>An invalid value for an <code>@reverse</code> member has been detected,
-          i.e., the value was not a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a>.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.invalid-reverse-property-value">invalid reverse property value</code></td><td>An invalid value for a reverse property has been detected. The value of an inverse
-          property must be a <a class="tref internalDFN" title="node-object" href="#dfn-node-object">node object</a>.</td></tr></table>
-    </section>
-  </section> <!-- end of Error Handling -->
-</section> <!-- end of The Application Programming Interfaces -->
-
-<section class="appendix informative" id="acknowledgements">
-  <!--OddPage--><h2><span class="secno">A. </span>Acknowledgements</h2><p><em>This section is non-normative.</em></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 Niklas Lindström,
-    François Daoust, Lin Clark, and Zdenko 'Denny' Vrandečić.
-    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.
-    The work of Dave Lehn and Mike Johnson are appreciated for reviewing,
-    and performing several implementations of the specification. Ian Davis is
-    thanked for his work on RDF/JSON. Thanks also to Nathan Rixham,
-    Bradley P. Allen, Kingsley Idehen, Glenn McDonald, Alexandre Passant,
-    Danny Ayers, Ted Thibodeau Jr., Olivier Grisel, Josh Mandel, Eric Prud'hommeaux,
-    David Wood, Guus Schreiber, Pat Hayes, Sandro Hawke, and Richard Cyganiak
-    for their input on the specification.</p>
-</section>
-
-
-
-<section id="references" class="appendix" typeof="bibo:Chapter" resource="#references" rel="bibo:chapter"><!--OddPage--><h2><span class="secno">B. </span>References</h2><section id="normative-references" typeof="bibo:Chapter" resource="#normative-references" rel="bibo:chapter"><h3><span class="secno">B.1 </span>Normative references</h3><dl class="bibliography" about=""><dt id="bib-DOM-WHATWG">[DOM-WHATWG]</dt><dd rel="dcterms:requires">Anne van Kesteren, Aryeh Gregor, Ms2ger, Editors. <cite><a href="http://dom.spec.whatwg.org/">DOM</a>.</cite> April 2013. WHATWG Living Standard (work in progress). URL: <a href="http://dom.spec.whatwg.org/">http://dom.spec.whatwg.org/</a>
-</dd><dt id="bib-IEEE-754-1985">[IEEE-754-1985]</dt><dd rel="dcterms:requires">IEEE. <cite>IEEE Standard for Binary Floating-Point Arithmetic.</cite> URL: <a href="http://standards.ieee.org/reading/ieee/std_public/description/busarch/754-1985_desc.html">http://standards.ieee.org/reading/ieee/std_public/description/busarch/754-1985_desc.html</a>
-</dd><dt id="bib-JSON-LD">[JSON-LD]</dt><dd rel="dcterms:requires">Manu Sporny, Gregg Kellogg, Markus Lanthaler, Editors. <cite><a href="http://json-ld.org/spec/latest/json-ld/">JSON-LD 1.0</a>.</cite> W3C Editor's Draft (work in progress). URL: <a href="http://json-ld.org/spec/latest/json-ld/">http://json-ld.org/spec/latest/json-ld/</a>
-</dd><dt id="bib-RDF-MT">[RDF-MT]</dt><dd rel="dcterms:requires">Patrick Hayes. <a href="http://www.w3.org/TR/rdf-mt/"><cite>RDF Semantics</cite></a>. 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/rdf-mt/">http://www.w3.org/TR/rdf-mt/</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-RFC3986">[RFC3986]</dt><dd rel="dcterms:requires">T. Berners-Lee; R. Fielding; L. Masinter. <a href="http://www.ietf.org/rfc/rfc3986.txt"><cite>Uniform Resource Identifier (URI): Generic Syntax (RFC 3986)</cite></a>. January 2005. RFC. URL: <a href="http://www.ietf.org/rfc/rfc3986.txt">http://www.ietf.org/rfc/rfc3986.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. RFC. 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) (RFC 4627)</cite></a>. July 2006. RFC. 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. <cite><a href="http://www.ietf.org/rfc/rfc5988.txt">Web Linking</a>.</cite> October 2010. Internet RFC 5988. URL: <a href="http://www.ietf.org/rfc/rfc5988.txt">http://www.ietf.org/rfc/rfc5988.txt</a>
-</dd><dt id="bib-WEBIDL">[WEBIDL]</dt><dd rel="dcterms:requires">Cameron McCormack, Editor. <cite><a href="http://www.w3.org/TR/2012/CR-WebIDL-20120419/">Web IDL.</a></cite> 19 April 2012. W3C Candidate Recommendation (work in progress). URL: <a href="http://www.w3.org/TR/2012/CR-WebIDL-20120419/">http://www.w3.org/TR/2012/CR-WebIDL-20120419/</a>. The latest edition is available at <a href="http://www.w3.org/TR/WebIDL/">http://www.w3.org/TR/WebIDL/</a>
-</dd><dt id="bib-XMLSCHEMA11-2">[XMLSCHEMA11-2]</dt><dd rel="dcterms:requires">David Peterson; Sandy Gao; Ashok Malhotra; Michael Sperberg-McQueen; Henry Thompson; Paul V. Biron et al. <a href="http://www.w3.org/TR/xmlschema11-2/"><cite>W3C XML Schema Definition Language (XSD) 1.1 Part 2: Datatypes</cite></a>. 5 April 2012. W3C Recommendation. URL: <a href="http://www.w3.org/TR/xmlschema11-2/">http://www.w3.org/TR/xmlschema11-2/</a>
-</dd></dl></section><section id="informative-references" typeof="bibo:Chapter" resource="#informative-references" rel="bibo:chapter"><h3><span class="secno">B.2 </span>Informative references</h3><dl class="bibliography" about=""><dt id="bib-BCP47">[BCP47]</dt><dd rel="dcterms:references">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-ECMA-262">[ECMA-262]</dt><dd rel="dcterms:references"><a href="http://www.ecma-international.org/publications/standards/Ecma-262.htm"><cite>ECMAScript Language Specification, Edition 5.1</cite></a>. June 2011. URL: <a href="http://www.ecma-international.org/publications/standards/Ecma-262.htm">http://www.ecma-international.org/publications/standards/Ecma-262.htm</a>
-</dd><dt id="bib-JSON-LD-TESTS">[JSON-LD-TESTS]</dt><dd rel="dcterms:references"><cite><a href="http://www.w3.org/2013/json-ld-tests/">JSON-LD 1.0 Test Suite</a></cite>. W3C Test Suite (work in progress). URL: <a href="http://www.w3.org/2013/json-ld-tests/">http://www.w3.org/2013/json-ld-tests/</a>
-</dd><dt id="bib-RDF11-CONCEPTS">[RDF11-CONCEPTS]</dt><dd rel="dcterms:references">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>. The latest edition is available at <a href="http://www.w3.org/TR/rdf11-concepts/">http://www.w3.org/TR/rdf11-concepts/</a>
-</dd><dt id="bib-RFC6839">[RFC6839]</dt><dd rel="dcterms:references">Tony Hansen, Alexey Melnikov. <cite><a href="http://www.ietf.org/rfc/rfc6839.txt">Additional Media Type Structured Syntax Suffixes</a>.</cite> January 2013. Internet RFC 6839. URL: <a href="http://www.ietf.org/rfc/rfc6839.txt">http://www.ietf.org/rfc/rfc6839.txt</a>
-</dd><dt id="bib-TURTLE">[TURTLE]</dt><dd rel="dcterms:references">Eric Prud'hommeaux, Gavin Carothers, Editors. <cite><a href="http://www.w3.org/TR/2013/CR-turtle-20130219/">Turtle: Terse RDF Triple Language.</a></cite> 19 February 2013. W3C Candidate Recommendation (work in progress). URL: <a href="http://www.w3.org/TR/2013/CR-turtle-20130219/">http://www.w3.org/TR/2013/CR-turtle-20130219/</a>. The latest edition is available at <a href="http://www.w3.org/TR/turtle/">http://www.w3.org/TR/turtle/</a>
-</dd></dl></section></section></body></html>
--- a/spec/CR/json-ld/20130822/diff-20130411.html	Thu Sep 05 22:36:04 2013 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24240 +0,0 @@
-<!DOCTYPE html>
-<html lang="en" dir="ltr" typeof="bibo:Document w3p:CR" about="" property="dcterms:language" content="en">
-<head>
-<title>JSON-LD 1.0</title>
-<meta http-equiv="content-type" content="text/html; charset=UTF-8">
-
-
-
-<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; }
-  .atrisk-head { font-style: italic; }
-</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;
-}
-
-/* --- 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: #2b2; }
-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: 1em 1.2em 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="https://www.w3.org/StyleSheets/TR/W3C-CR"><!--[if lt IE 9]><script src='https://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 class="h-entry" role="document" id="respecDocument">
-<div class="head" role="contentinfo" id="respecHeader">
-<p>
-<a href="http://www.w3.org/">
-<img width="72" height="48" src="https://www.w3.org/Icons/w3c_home" alt="W3C">
-</a>
-</p>
-<h1 class="title p-name" id="title" property="dcterms:title">
-JSON-LD
-1.0
-</h1>
-<h2 property="bibo:subtitle" id="subtitle">
-A
-JSON-based
-Serialization
-for
-Linked
-Data
-</h2>
-<h2 property="dcterms:issued" datatype="xsd:dateTime" content="2013-08-22T04:00:00.000Z" id="w3c-candidate-recommendation-22-august-2013">
-<abbr title="World Wide Web Consortium">
-W3C
-</abbr>
-<del class="diff-old">Last
-Call
-Working
-Draft
-11
-April
-</del>
-<ins class="diff-chg">Candidate
-Recommendation
-</ins><time class="dt-published" datetime="2013-08-22"><ins class="diff-chg">
-22
-August
-</ins>
-2013
-</time>
-</h2>
-<dl>
-<dt>
-This
-version:
-</dt>
-<dd>
-<del class="diff-old">http://www.w3.org/TR/2013/WD-json-ld-20130411/
-</del>
-<a class="u-url" href="http://www.w3.org/TR/2013/CR-json-ld-20130822/">
-<ins class="diff-chg">http://www.w3.org/TR/2013/CR-json-ld-20130822/
-</ins>
-</a>
-</dd>
-<dt>
-Latest
-published
-version:
-</dt>
-<dd>
-<a href="http://www.w3.org/TR/json-ld/">
-http://www.w3.org/TR/json-ld/
-</a>
-</dd>
-<dt>
-Latest
-editor's
-draft:
-</dt>
-<dd>
-<a href="http://dvcs.w3.org/hg/json-ld/raw-file/default/spec/latest/json-ld/index.html">
-http://dvcs.w3.org/hg/json-ld/raw-file/default/spec/latest/json-ld/index.html
-</a>
-</dd>
-<dt>
-Previous
-version:
-</dt>
-<dd>
-<del class="diff-old">http://www.w3.org/TR/2012/WD-json-ld-20120712/
-</del>
-<a rel="dcterms:replaces" href="http://www.w3.org/TR/2013/WD-json-ld-20130411/">
-<ins class="diff-chg">http://www.w3.org/TR/2013/WD-json-ld-20130411/
-</ins>
-</a>
-</dd>
-<dt>
-Editors:
-</dt>
-<dd class="p-author h-card vcard" rel="bibo:editor" inlist="">
-<span typeof="foaf:Person">
-<a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Manu Sporny" href="http://manu.sporny.org/">
-Manu
-Sporny
-</a>,
-<a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://digitalbazaar.com/">
-Digital
-Bazaar
-</a>
-</span>
-</dd>
-<dd class="p-author h-card vcard" rel="bibo:editor" inlist="">
-<span typeof="foaf:Person">
-<a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Gregg Kellogg" href="http://greggkellogg.net/">
-Gregg
-Kellogg
-</a>,
-<a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://kellogg-assoc.com/">
-Kellogg
-Associates
-</a>
-</span>
-</dd>
-<dd class="p-author h-card vcard" rel="bibo:editor" inlist="">
-<span typeof="foaf:Person">
-<a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Markus Lanthaler" href="http://www.markus-lanthaler.com/">
-Markus
-Lanthaler
-</a>,
-<a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://www.tugraz.at/">
-Graz
-University
-of
-Technology
-</a>
-</span>
-</dd>
-<dt>
-Authors:
-</dt>
-<dd class="p-author h-card vcard" rel="dcterms:contributor">
-<span typeof="foaf:Person">
-<a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Manu Sporny" href="http://digitalbazaar.com/">
-Manu
-Sporny
-</a>,
-<a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://digitalbazaar.com/">
-Digital
-Bazaar
-</a>
-</span>
-</dd>
-<dd class="p-author h-card vcard" rel="dcterms:contributor">
-<span typeof="foaf:Person">
-<a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Dave Longley" href="http://digitalbazaar.com/">
-Dave
-Longley
-</a>,
-<a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://digitalbazaar.com/">
-Digital
-Bazaar
-</a>
-</span>
-</dd>
-<dd class="p-author h-card vcard" rel="dcterms:contributor">
-<span typeof="foaf:Person">
-<a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Gregg Kellogg" href="http://greggkellogg.net/">
-Gregg
-Kellogg
-</a>,
-<a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://kellogg-assoc.com/">
-Kellogg
-Associates
-</a>
-</span>
-</dd>
-<dd class="p-author h-card vcard" rel="dcterms:contributor">
-<span typeof="foaf:Person">
-<a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Markus Lanthaler" href="http://www.markus-lanthaler.com/">
-Markus
-Lanthaler
-</a>,
-<a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://www.tugraz.at/">
-Graz
-University
-of
-Technology
-</a>
-</span>
-</dd>
-<dd class="p-author h-card vcard" rel="dcterms:contributor">
-<span typeof="foaf:Person">
-<a class="u-url url p-name fn" 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 rel="alternate" href="diff-20130411.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
-<a href="http://www.w3.org/">
-<abbr title="World Wide Web Consortium">
-W3C
-</abbr>
-</a>
-<sup>

-</sup>
-(
-<a href="http://www.csail.mit.edu/">
-<abbr title="Massachusetts Institute of Technology">
-MIT
-</abbr>
-</a>,
-<a href="http://www.ercim.eu/">
-<abbr title="European Research Consortium for Informatics and Mathematics">
-ERCIM
-</abbr>
-</a>,
-<a href="http://www.keio.ac.jp/">
-Keio
-</a>,
-<a href="http://ev.buaa.edu.cn/">
-Beihang
-</a>
-),
-All
-Rights
-Reserved.
-<abbr title="World Wide Web Consortium">
-W3C
-</abbr>
-<a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">
-liability
-</a>,
-<a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">
-trademark
-</a>
-and
-<a href="http://www.w3.org/Consortium/Legal/copyright-documents">
-document
-use
-</a>
-rules
-apply.
-</p>
-<hr>
-</div>
-<section id="abstract" class="introductory" property="dcterms:abstract" datatype="" typeof="bibo:Chapter" resource="#abstract" rel="bibo:chapter">
-<h2 aria-level="1" role="heading" id="h2_abstract">
-Abstract
-</h2>
-<p>
-JSON
-<del class="diff-old">has
-proven
-to
-be
-</del>
-<ins class="diff-chg">is
-</ins>
-a
-<del class="diff-old">highly
-</del>
-useful
-<del class="diff-old">object
-</del>
-<ins class="diff-chg">data
-</ins>
-serialization
-and
-messaging
-format.
-This
-specification
-defines
-JSON-LD,
-a
-JSON-based
-format
-to
-serialize
-Linked
-Data.
-The
-syntax
-is
-designed
-to
-<del class="diff-old">not
-disturb
-already
-</del>
-<ins class="diff-chg">easily
-integrate
-into
-</ins>
-deployed
-systems
-<del class="diff-old">running
-on
-</del>
-<ins class="diff-chg">that
-already
-use
-</ins>
-JSON,
-<del class="diff-old">but
-provide
-</del>
-<ins class="diff-chg">and
-provides
-</ins>
-a
-smooth
-upgrade
-path
-from
-JSON
-to
-JSON-LD.
-It
-is
-primarily
-intended
-to
-be
-a
-way
-to
-use
-Linked
-Data
-in
-Web-based
-programming
-environments,
-to
-build
-interoperable
-Web
-services,
-and
-to
-store
-Linked
-Data
-in
-JSON-based
-storage
-engines.
-</p>
-</section>
-<section id="sotd" class="introductory" typeof="bibo:Chapter" resource="#sotd" rel="bibo:chapter">
-<h2 aria-level="1" role="heading" id="h2_sotd">
-Status
-of
-This
-Document
-</h2>
-<p>
-<em>
-This
-section
-describes
-the
-status
-of
-this
-document
-at
-the
-time
-of
-its
-publication.
-Other
-documents
-may
-supersede
-this
-document.
-A
-list
-of
-current
-<abbr title="World Wide Web Consortium">
-W3C
-</abbr>
-publications
-and
-the
-latest
-revision
-of
-this
-technical
-report
-can
-be
-found
-in
-the
-<a href="http://www.w3.org/TR/">
-<abbr title="World Wide Web Consortium">
-W3C
-</abbr>
-technical
-reports
-index
-</a>
-at
-http://www.w3.org/TR/.
-</em>
-</p>
-<p>
-This
-document
-has
-been
-under
-development
-for
-over
-<del class="diff-old">25
-</del>
-<ins class="diff-chg">30
-</ins>
-months
-in
-the
-JSON
-for
-Linking
-Data
-Community
-Group.
-The
-document
-has
-<del class="diff-old">recently
-</del>
-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
-<del class="diff-old">25
-</del>
-<ins class="diff-chg">30
-</ins>
-months.
-</p>
-<p>
-There
-are
-several
-independent
-<a href="http://json-ld.org/test-suite/reports/">
-interoperable
-implementations
-</a>
-of
-this
-<del class="diff-old">specification
-and
-</del>
-<ins class="diff-chg">specification.
-There
-is
-</ins>
-a
-fairly
-complete
-test
-suite
-[
-<cite>
-<a class="bibref" href="#bib-JSON-LD-TESTS">
-JSON-LD-TESTS
-</a>
-</cite>
-<del class="diff-old">].
-</del>
-<ins class="diff-chg">]
-and
-a
-</ins><a href="http://json-ld.org/playground/"><ins class="diff-chg">
-live
-JSON-LD
-editor
-</ins></a><ins class="diff-chg">
-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
-three
-months.
-</ins></p><p><ins class="diff-chg">
-There
-are
-a
-number
-of
-ways
-that
-one
-may
-participate
-in
-the
-development
-of
-this
-specification:
-</ins></p><ul><li><ins class="diff-chg">
-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:
-</ins><a href="http://lists.w3.org/Archives/Public/public-rdf-comments/"><ins class="diff-chg">
-public-rdf-comments@w3.org
-</ins></a></li><li><ins class="diff-chg">
-Ad-hoc
-technical
-discussion
-primarily
-occurs
-on
-the
-public
-community
-mailing
-list:
-</ins><a href="http://lists.w3.org/Archives/Public/public-linked-json/"><ins class="diff-chg">
-public-linked-json@w3.org
-</ins></a></li><li><a href="http://json-ld.org/minutes/"><ins class="diff-chg">
-Public
-JSON-LD
-Community
-Group
-teleconferences
-</ins></a><ins class="diff-chg">
-are
-held
-on
-Tuesdays
-at
-1500UTC
-every
-week.
-</ins></li><li><ins class="diff-chg">
-RDF
-Working
-Group
-teleconferences
-are
-held
-on
-Wednesdays
-at
-1500UTC
-every
-week.
-Participation
-is
-limited
-to
-RDF
-Working
-Group
-members.
-</ins></li><li><ins class="diff-chg">
-Specification
-bugs
-and
-issues
-should
-be
-reported
-in
-the
-</ins><a href="https://github.com/json-ld/json-ld.org/issues"><ins class="diff-chg">
-issue
-tracker
-</ins></a><ins class="diff-chg">
-if
-you
-do
-not
-want
-to
-send
-an
-e-mail
-to
-the
-public-rdf-comments
-mailing
-list.
-</ins></li><li><a href="https://github.com/json-ld/json-ld.org/tree/master/spec"><ins class="diff-chg">
-Source
-code
-</ins></a><ins class="diff-chg">
-for
-the
-specification
-can
-be
-found
-on
-Github.
-</ins></li><li><ins class="diff-chg">
-The
-</ins><a href="http://webchat.freenode.net/?channels=json-ld"><ins class="diff-chg">
-#json-ld
-</ins></a><ins class="diff-chg">
-IRC
-channel
-is
-available
-for
-real-time
-discussion
-on
-irc.freenode.net.
-</ins></li></ul><p><ins class="diff-chg">
-Changes
-since
-the
-</ins><a href="http://www.w3.org/TR/2013/WD-json-ld-20130411/"><ins class="diff-chg">
-11&nbsp;April&nbsp;2013
-Last
-Call
-Working
-Draft
-</ins></a>:</p><ul><li><ins class="diff-chg">
-Allow
-keyword
-aliases
-to
-be
-defined
-using
-expanded
-term
-definitions
-</ins></li><li><ins class="diff-chg">
-Mention
-profile
-URIs
-also
-in
-the
-sections
-describing
-the
-various
-document
-forms
-</ins></li><li><ins class="diff-chg">
-Support
-relative
-IRIs
-in
-</ins><code><ins class="diff-chg">
-@base
-</ins></code></li><li><ins class="diff-chg">
-Clarify
-how
-the
-</ins><code><ins class="diff-chg">
-profile
-</ins></code><ins class="diff-chg">
-media
-type
-parameter
-is
-used
-in
-the
-content
-negotiation
-process
-</ins></li><li><ins class="diff-chg">
-Update
-grammar
-to
-disallow
-blank
-nodes
-as
-data
-types
-</ins></li><li><ins class="diff-chg">
-Update
-grammar
-to
-allow
-blank
-node
-identifiers
-as
-value
-of
-</ins><code><ins class="diff-chg">
-@vocab
-</ins></code></li><li><ins class="diff-chg">
-Align
-the
-JSON-LD
-Data
-Model
-with
-the
-RDF
-Data
-Model
-</ins></li><li><ins class="diff-chg">
-Support
-processing
-of
-documents
-with
-a
-</ins><code><ins class="diff-chg">
-+json
-</ins></code><ins class="diff-chg">
-media
-type
-as
-defined
-in
-[
-</ins><cite><a class="bibref" href="#bib-RFC6839"><ins class="diff-chg">
-RFC6839
-</ins></a></cite><ins class="diff-chg">
-]
-</ins></li><li><ins class="diff-chg">
-Added
-a
-brief
-description
-of
-the
-data
-model
-to
-the
-introduction.
-</ins></li><li><ins class="diff-chg">
-Fixed
-a
-number
-of
-document
-readability
-and
-flow
-issues
-related
-to
-all
-of
-the
-updates
-made
-over
-the
-last
-several
-moths.
-</ins></li></ul><p><ins class="diff-chg">
-Before
-this
-specification
-may
-exit
-the
-Candidate
-Recommendation
-phase,
-at
-least
-two
-independent
-implementations
-must
-pass
-each
-test,
-although
-no
-single
-implementation
-must
-pass
-every
-test.
-The
-working
-group
-will
-decide
-when
-the
-test
-suite
-is
-of
-sufficient
-quality
-to
-test
-interoperability
-and
-will
-produce
-an
-implementation
-report
-hosted
-together
-with
-the
-test
-suite.
-</ins>
-</p>
-<p>
-This
-document
-was
-published
-by
-the
-<a href="http://www.w3.org/2011/rdf-wg/">
-RDF
-Working
-Group
-</a>
-as
-a
-<del class="diff-old">Last
-Call
-Working
-Draft.
-</del>
-<ins class="diff-chg">Candidate
-Recommendation.
-</ins>
-This
-document
-is
-intended
-to
-become
-a
-<abbr title="World Wide Web Consortium">
-W3C
-</abbr>
-Recommendation.
-If
-you
-wish
-to
-make
-comments
-regarding
-this
-document,
-please
-send
-them
-to
-<a href="mailto:public-rdf-comments@w3.org">
-public-rdf-comments@w3.org
-</a>
-(
-<a href="mailto:public-rdf-comments-request@w3.org?subject=subscribe">
-subscribe
-</a>,
-<a href="http://lists.w3.org/Archives/Public/public-rdf-comments/">
-archives
-</a>
-).
-<del class="diff-old">The
-Last
-Call
-period
-ends
-10
-May
-2013.
-All
-comments
-are
-welcome.
-The
-Working
-Group
-welcomes
-reports
-of
-implementations,
-sent
-</del>
-<abbr title="World Wide Web Consortium">
-<ins class="diff-chg">W3C
-</ins></abbr><ins class="diff-chg">
-publishes
-a
-Candidate
-Recommendation
-</ins>
-to
-<ins class="diff-new">indicate
-that
-</ins>
-the
-<del class="diff-old">comments
-address.
-If
-we
-gather
-sufficient
-evidence
-of
-interoperable
-implementations,
-the
-group
-may
-request
-</del>
-<ins class="diff-chg">document
-is
-believed
-</ins>
-to
-<del class="diff-old">skip
-Call
-for
-Implementations
-(Candidate
-Recommendation)
-drafts
-</del>
-<ins class="diff-chg">be
-stable
-</ins>
-and
-<del class="diff-old">have
-</del>
-<ins class="diff-chg">to
-encourage
-implementation
-by
-</ins>
-the
-<del class="diff-old">next
-round
-of
-publications
-be
-</del>
-<ins class="diff-chg">developer
-community.
-This
-Candidate
-Recommendation
-is
-expected
-to
-advance
-to
-</ins>
-Proposed
-<del class="diff-old">Recommendations.
-</del>
-<ins class="diff-chg">Recommendation
-no
-earlier
-than
-19
-September
-2013.
-All
-comments
-are
-welcome.
-</ins>
-</p>
-<p>
-Publication
-as
-a
-<del class="diff-old">Last
-Call
-Working
-Draft
-</del>
-<ins class="diff-chg">Candidate
-Recommendation
-</ins>
-does
-not
-imply
-endorsement
-by
-the
-<abbr title="World Wide Web Consortium">
-W3C
-</abbr>
-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.
-</p>
-<p>
-This
-<del class="diff-old">is
-a
-Last
-Call
-Working
-Draft
-and
-thus
-the
-Working
-Group
-has
-determined
-that
-this
-document
-has
-satisfied
-the
-relevant
-technical
-requirements
-and
-is
-sufficiently
-stable
-to
-advance
-through
-the
-Technical
-Recommendation
-process.
-This
-</del>
-document
-was
-produced
-by
-a
-group
-operating
-under
-the
-<a id="sotd_patent" about="" rel="w3p:patentRules" href="http://www.w3.org/Consortium/Patent-Policy-20040205/">
-5
-February
-2004
-<abbr title="World Wide Web Consortium">
-W3C
-</abbr>
-Patent
-Policy
-</a>.
-<abbr title="World Wide Web Consortium">
-W3C
-</abbr>
-maintains
-a
-<a href="http://www.w3.org/2004/01/pp-impl/46168/status" rel="disclosure">
-public
-list
-of
-any
-patent
-disclosures
-</a>
-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
-<a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">
-Essential
-Claim(s)
-</a>
-must
-disclose
-the
-information
-in
-accordance
-with
-<a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">
-section
-6
-of
-the
-<abbr title="World Wide Web Consortium">
-W3C
-</abbr>
-Patent
-Policy
-</a>.
-</p>
-</section>
-<section id="toc">
-<h2 class="introductory" aria-level="1" role="heading" id="h2_toc">
-Table
-of
-Contents
-</h2>
-<ul class="toc" role="directory" id="respecContents">
-<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="#data-model-overview" class="tocxref">
-<span class="secno">
-3.2
-</span>
-<ins class="diff-new">Data
-Model
-Overview
-</ins></a></li><li class="tocline"><a href="#syntax-tokens-and-keywords" class="tocxref"><span class="secno"><ins class="diff-new">
-3.3
-</ins></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="#base-iri" class="tocxref">
-<span class="secno">
-6.1
-</span>
-Base
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-</li>
-<li class="tocline">
-<a href="#default-vocabulary" class="tocxref">
-<span class="secno">
-6.2
-</span>
-Default
-Vocabulary
-</a>
-</li>
-<li class="tocline">
-<a href="#compact-iris" class="tocxref">
-<span class="secno">
-6.3
-</span>
-Compact
-IRIs
-</a>
-</li>
-<li class="tocline">
-<a href="#typed-values" class="tocxref">
-<span class="secno">
-6.4
-</span>
-Typed
-Values
-</a>
-</li>
-<li class="tocline">
-<a href="#type-coercion" class="tocxref">
-<span class="secno">
-6.5
-</span>
-Type
-Coercion
-</a>
-</li>
-<li class="tocline">
-<a href="#embedding" class="tocxref">
-<span class="secno">
-6.6
-</span>
-Embedding
-</a>
-</li>
-<li class="tocline">
-<a href="#advanced-context-usage" class="tocxref">
-<span class="secno">
-6.7
-</span>
-Advanced
-Context
-Usage
-</a>
-</li>
-<li class="tocline">
-<a href="#interpreting-json-as-json-ld" class="tocxref">
-<span class="secno">
-6.8
-</span>
-Interpreting
-JSON
-as
-JSON-LD
-</a>
-</li>
-<li class="tocline">
-<a href="#string-internationalization" class="tocxref">
-<span class="secno">
-6.9
-</span>
-String
-Internationalization
-</a>
-</li>
-<li class="tocline">
-<a href="#iri-expansion-within-a-context" class="tocxref">
-<span class="secno">
-6.10
-</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.11
-</span>
-Sets
-and
-Lists
-</a>
-</li>
-<li class="tocline">
-<a href="#reverse-properties" class="tocxref">
-<span class="secno">
-6.12
-</span>
-Reverse
-Properties
-</a>
-</li>
-<li class="tocline">
-<a href="#named-graphs" class="tocxref">
-<span class="secno">
-6.13
-</span>
-Named
-Graphs
-</a>
-</li>
-<li class="tocline">
-<a href="#identifying-blank-nodes" class="tocxref">
-<span class="secno">
-6.14
-</span>
-Identifying
-Blank
-Nodes
-</a>
-</li>
-<li class="tocline">
-<a href="#aliasing-keywords" class="tocxref">
-<span class="secno">
-6.15
-</span>
-Aliasing
-Keywords
-</a>
-</li>
-<li class="tocline">
-<a href="#data-indexing" class="tocxref">
-<span class="secno">
-6.16
-</span>
-Data
-Indexing
-</a>
-</li>
-<li class="tocline">
-<a href="#expanded-document-form" class="tocxref">
-<span class="secno">
-6.17
-</span>
-Expanded
-Document
-Form
-</a>
-</li>
-<li class="tocline">
-<a href="#compacted-document-form" class="tocxref">
-<span class="secno">
-6.18
-</span>
-<del class="diff-old">Compact
-</del>
-<ins class="diff-chg">Compacted
-</ins>
-Document
-Form
-</a>
-</li>
-<li class="tocline">
-<a href="#flattened-document-form" class="tocxref">
-<span class="secno">
-6.19
-</span>
-Flattened
-Document
-Form
-</a>
-</li>
-<li class="tocline">
-<a href="#embedding-json-ld-in-html-documents" class="tocxref">
-<span class="secno">
-6.20
-</span>
-Embedding
-JSON-LD
-in
-HTML
-Documents
-</a>
-</li>
-</ul>
-</li>
-<li class="tocline">
-<a href="#data-model" class="tocxref">
-<span class="secno">
-<del class="diff-old">A.
-</del>
-<ins class="diff-chg">7.
-</ins>
-</span>
-Data
-Model
-</a>
-</li>
-<li class="tocline">
-<a href="#json-ld-grammar" class="tocxref">
-<span class="secno">
-<del class="diff-old">B.
-</del>
-<ins class="diff-chg">8.
-</ins>
-</span>
-JSON-LD
-Grammar
-</a>
-<ul class="toc">
-<li class="tocline">
-<a href="#terms" class="tocxref">
-<span class="secno">
-<del class="diff-old">B.1
-</del>
-<ins class="diff-chg">8.1
-</ins>
-</span>
-Terms
-</a>
-</li>
-<li class="tocline">
-<a href="#node-objects" class="tocxref">
-<span class="secno">
-<del class="diff-old">B.2
-</del>
-<ins class="diff-chg">8.2
-</ins>
-</span>
-Node
-Objects
-</a>
-</li>
-<li class="tocline">
-<a href="#value-objects" class="tocxref">
-<span class="secno">
-<del class="diff-old">B.3
-</del>
-<ins class="diff-chg">8.3
-</ins>
-</span>
-Value
-Objects
-</a>
-</li>
-<li class="tocline">
-<a href="#lists-and-sets" class="tocxref">
-<span class="secno">
-<del class="diff-old">B.4
-</del>
-<ins class="diff-chg">8.4
-</ins>
-</span>
-Lists
-and
-Sets
-</a>
-</li>
-<li class="tocline">
-<a href="#language-maps" class="tocxref">
-<span class="secno">
-<del class="diff-old">B.5
-</del>
-<ins class="diff-chg">8.5
-</ins>
-</span>
-Language
-Maps
-</a>
-</li>
-<li class="tocline">
-<a href="#index-maps" class="tocxref">
-<span class="secno">
-<del class="diff-old">B.6
-</del>
-<ins class="diff-chg">8.6
-</ins>
-</span>
-Index
-Maps
-</a>
-</li>
-<li class="tocline">
-<a href="#context-definitions" class="tocxref">
-<span class="secno">
-<del class="diff-old">B.7
-</del>
-<ins class="diff-chg">8.7
-</ins>
-</span>
-Context
-Definitions
-</a>
-</li>
-</ul>
-</li>
-<li class="tocline">
-<a href="#relationship-to-rdf" class="tocxref">
-<span class="secno">
-<del class="diff-old">C.
-</del>
-<ins class="diff-chg">9.
-</ins>
-</span>
-Relationship
-to
-RDF
-</a>
-<ul class="toc">
-<li class="tocline">
-<a href="#serializing-deserializing-rdf" class="tocxref">
-<span class="secno">
-<del class="diff-old">C.1
-</del>
-<ins class="diff-chg">9.1
-</ins>
-</span>
-<del class="diff-old">Transformation
-from
-JSON-LD
-to
-</del>
-<ins class="diff-chg">Serializing/Deserializing
-</ins>
-RDF
-</a>
-</li>
-</ul>
-</li>
-<li class="tocline">
-<a href="#relationship-to-other-linked-data-formats" class="tocxref">
-<span class="secno">
-<del class="diff-old">D.
-</del>
-<ins class="diff-chg">A.
-</ins>
-</span>
-Relationship
-to
-Other
-Linked
-Data
-Formats
-</a>
-<ul class="toc">
-<li class="tocline">
-<a href="#turtle" class="tocxref">
-<span class="secno">
-<del class="diff-old">D.1
-</del>
-<ins class="diff-chg">A.1
-</ins>
-</span>
-Turtle
-</a>
-</li>
-<li class="tocline">
-<a href="#rdfa" class="tocxref">
-<span class="secno">
-<del class="diff-old">D.2
-</del>
-<ins class="diff-chg">A.2
-</ins>
-</span>
-RDFa
-</a>
-</li>
-<li class="tocline">
-<a href="#microformats" class="tocxref">
-<span class="secno">
-<del class="diff-old">D.3
-</del>
-<ins class="diff-chg">A.3
-</ins>
-</span>
-Microformats
-</a>
-</li>
-<li class="tocline">
-<a href="#microdata" class="tocxref">
-<span class="secno">
-<del class="diff-old">D.4
-</del>
-<ins class="diff-chg">A.4
-</ins>
-</span>
-Microdata
-</a>
-</li>
-</ul>
-</li>
-<li class="tocline">
-<a href="#iana-considerations" class="tocxref">
-<span class="secno">
-<del class="diff-old">E.
-</del>
-<ins class="diff-chg">B.
-</ins>
-</span>
-IANA
-Considerations
-</a>
-</li>
-<li class="tocline">
-<a href="#acknowledgements" class="tocxref">
-<span class="secno">
-<del class="diff-old">F.
-</del>
-<ins class="diff-chg">C.
-</ins>
-</span>
-Acknowledgements
-</a>
-</li>
-<li class="tocline">
-<a href="#references" class="tocxref">
-<span class="secno">
-<del class="diff-old">G.
-</del>
-<ins class="diff-chg">D.
-</ins>
-</span>
-References
-</a>
-<ul class="toc">
-<li class="tocline">
-<a href="#normative-references" class="tocxref">
-<span class="secno">
-<del class="diff-old">G.1
-</del>
-<ins class="diff-chg">D.1
-</ins>
-</span>
-Normative
-references
-</a>
-</li>
-<li class="tocline">
-<a href="#informative-references" class="tocxref">
-<span class="secno">
-<del class="diff-old">G.2
-</del>
-<ins class="diff-chg">D.2
-</ins>
-</span>
-Informative
-references
-</a>
-</li>
-</ul>
-</li>
-</ul>
-</section>
-<section class="informative" id="introduction">
-<h2 aria-level="1" role="heading" id="h2_introduction">
-<span class="secno">
-1.
-</span>
-Introduction
-</h2>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-Linked
-Data
-<ins class="diff-chg">[
-</ins><cite><a class="bibref" href="#bib-LINKED-DATA"><ins class="diff-chg">
-LINKED-DATA
-</ins></a></cite><ins class="diff-chg">
-]
-</ins>
-is
-a
-<del class="diff-old">technique
-for
-creating
-</del>
-<ins class="diff-chg">way
-to
-create
-</ins>
-a
-network
-of
-<del class="diff-old">inter-connected
-</del>
-<ins class="diff-chg">standards-based
-machine
-interpretable
-</ins>
-data
-across
-different
-documents
-and
-Web
-sites.
-<del class="diff-old">In
-general,
-Linked
-Data
-has
-four
-properties:
-1)
-it
-uses
-IRIs
-to
-name
-things;
-2)
-it
-uses
-HTTP
-IRIs
-for
-those
-names;
-3)
-the
-name
-IRIs
-,
-when
-dereferenced,
-provide
-more
-information
-about
-the
-thing;
-and
-4)
-the
-data
-expresses
-links
-to
-data
-on
-other
-Web
-sites.
-These
-properties
-allow
-data
-published
-on
-the
-Web
-</del>
-<ins class="diff-chg">It
-allows
-an
-application
-</ins>
-to
-<del class="diff-old">work
-much
-like
-Web
-pages
-do
-today.
-One
-can
-</del>
-start
-at
-one
-piece
-of
-Linked
-Data,
-and
-follow
-<del class="diff-old">the
-</del>
-<ins class="diff-chg">embedded
-</ins>
-links
-to
-other
-pieces
-of
-<del class="diff-old">data
-</del>
-<ins class="diff-chg">Linked
-Data
-</ins>
-that
-are
-hosted
-on
-different
-sites
-across
-the
-Web.
-</p>
-<p>
-JSON-LD
-is
-a
-lightweight
-syntax
-to
-serialize
-Linked
-Data
-in
-JSON
-[
-<cite>
-<a class="bibref" href="#bib-RFC4627">
-RFC4627
-</a>
-</cite>
-].
-Its
-design
-allows
-existing
-JSON
-to
-be
-<del class="diff-old">transformed
-to
-</del>
-<ins class="diff-chg">interpreted
-as
-</ins>
-Linked
-Data
-with
-minimal
-changes.
-JSON-LD
-is
-primarily
-intended
-to
-be
-a
-way
-to
-use
-Linked
-Data
-in
-Web-based
-programming
-environments,
-to
-build
-interoperable
-Web
-services,
-and
-to
-store
-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.
-In
-addition
-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
-keys
-shared
-among
-different
-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
-annotate
-<a class="tref internalDFN" title="string" href="#dfn-string">
-strings
-</a>
-with
-their
-language,
-</li>
-<li>
-a
-way
-to
-associate
-datatypes
-with
-values
-such
-as
-dates
-and
-times,
-</li>
-<li>
-and
-a
-facility
-to
-express
-one
-or
-more
-directed
-graphs,
-such
-as
-a
-social
-network,
-in
-a
-single
-document.
-</li>
-</ul>
-<p>
-<ins class="diff-new">JSON-LD
-is
-designed
-to
-be
-usable
-directly
-as
-JSON,
-with
-no
-knowledge
-of
-RDF
-[
-</ins><cite><a class="bibref" href="#bib-RDF11-CONCEPTS"><ins class="diff-new">
-RDF11-CONCEPTS
-</ins></a></cite><ins class="diff-new">
-].
-It
-is
-also
-designed
-to
-be
-usable
-as
-RDF,
-if
-desired,
-for
-use
-with
-other
-Linked
-Data
-technologies
-like
-SPARQL.
-</ins>
-Developers
-<del class="diff-old">that
-</del>
-<ins class="diff-chg">who
-</ins>
-require
-any
-of
-the
-facilities
-listed
-above
-or
-need
-to
-serialize
-an
-RDF
-<del class="diff-old">graph
-</del>
-<ins class="diff-chg">Graph
-</ins>
-or
-<del class="diff-old">dataset
-[
-RDF11-CONCEPTS
-]
-</del>
-<ins class="diff-chg">RDF
-Dataset
-</ins>
-in
-a
-JSON-based
-syntax
-will
-find
-JSON-LD
-of
-interest.
-<ins class="diff-new">People
-intending
-to
-use
-JSON-LD
-with
-RDF
-tools
-will
-find
-it
-can
-be
-used
-as
-another
-RDF
-syntax,
-like
-Turtle
-[
-</ins><cite><a class="bibref" href="#bib-TURTLE"><ins class="diff-new">
-TURTLE
-</ins></a></cite><ins class="diff-new">
-].
-Complete
-details
-of
-how
-JSON-LD
-relates
-to
-RDF
-are
-in
-section
-</ins><a href="#relationship-to-rdf" class="sec-ref"><span class="secno"><ins class="diff-new">
-9.
-</ins></span><span class="sec-title"><ins class="diff-new">
-Relationship
-to
-RDF
-</ins></span></a>.</p><p>
-The
-syntax
-is
-designed
-to
-not
-disturb
-already
-deployed
-systems
-running
-on
-JSON,
-but
-provide
-a
-smooth
-upgrade
-path
-from
-JSON
-to
-JSON-LD.
-Since
-the
-shape
-of
-such
-data
-varies
-wildly,
-JSON-LD
-features
-mechanisms
-to
-reshape
-documents
-into
-a
-deterministic
-structure
-which
-simplifies
-their
-processing.
-</p>
-<section class="informative" id="how-to-read-this-document">
-<h3 aria-level="2" role="heading" id="h3_how-to-read-this-document">
-<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
-who
-want
-to
-encode
-Linked
-Data
-in
-a
-variety
-of
-programming
-languages
-that
-can
-use
-<del class="diff-old">JSON.
-</del>
-<ins class="diff-chg">JSON
-</ins>
-</li>
-<li>
-Software
-developers
-who
-want
-to
-convert
-existing
-JSON
-to
-<del class="diff-old">JSON-LD.
-</del>
-<ins class="diff-chg">JSON-LD
-</ins>
-</li>
-<li>
-Software
-developers
-who
-want
-to
-understand
-the
-design
-decisions
-and
-language
-syntax
-for
-<del class="diff-old">JSON-LD.
-</del>
-<ins class="diff-chg">JSON-LD
-</ins>
-</li>
-<li>
-Software
-developers
-who
-want
-to
-implement
-processors
-and
-APIs
-for
-<del class="diff-old">JSON-LD.
-</del>
-<ins class="diff-chg">JSON-LD
-</ins></li><li><ins class="diff-chg">
-Software
-developers
-who
-want
-to
-generate
-or
-consume
-Linked
-Data,
-an
-RDF
-graph,
-or
-an
-RDF
-Dataset
-in
-a
-JSON
-syntax
-</ins>
-</li>
-</ul>
-<p>
-A
-companion
-document,
-the
-JSON-LD
-Processing
-Algorithms
-and
-API
-specification
-[
-<cite>
-<a class="bibref" href="#bib-JSON-LD-API">
-JSON-LD-API
-</a>
-</cite>
-],
-specifies
-how
-to
-work
-with
-JSON-LD
-at
-a
-higher
-level
-by
-providing
-a
-standard
-library
-interface
-for
-common
-JSON-LD
-operations.
-</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>
-<p>
-<ins class="diff-chg">This
-document
-almost
-exclusively
-uses
-the
-term
-</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
-IRI
-</ins></abbr><ins class="diff-chg">
-(
-</ins><a href="http://www.w3.org/TR/ld-glossary/#internationalized-resource-identifier"><ins class="diff-chg">
-Internationalized
-Resource
-Indicator
-</ins></a><ins class="diff-chg">
-)
-when
-discussing
-hyperlinks.
-Many
-Web
-developers
-are
-more
-familiar
-with
-the
-URL
-(
-</ins><a href="http://www.w3.org/TR/ld-glossary/#uniform-resource-locator"><ins class="diff-chg">
-Uniform
-Resource
-Locator
-</ins></a><ins class="diff-chg">
-)
-terminology.
-The
-document
-also
-uses,
-albeit
-rarely,
-the
-URI
-(
-</ins><a href="http://www.w3.org/TR/ld-glossary/#uniform-resource-identifier"><ins class="diff-chg">
-Uniform
-Resource
-Indicator
-</ins></a><ins class="diff-chg">
-)
-terminology.
-While
-these
-terms
-are
-often
-used
-interchangeably
-among
-technical
-communities,
-they
-do
-have
-important
-distinctions
-from
-one
-another
-and
-the
-specification
-goes
-to
-great
-lengths
-to
-try
-and
-use
-the
-proper
-terminology
-at
-all
-times.
-</ins></p></section></section><section class="informative" id="design-goals-and-rationale"><h2 aria-level="1" role="heading" id="h2_design-goals-and-rationale">
-<span class="secno">
-2.
-</span>
-Design
-Goals
-and
-Rationale
-</h2>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-JSON-LD
-satisfies
-the
-following
-design
-goals:
-</p>
-<dl>
-<dt>
-Simplicity
-</dt>
-<dd>
-No
-extra
-processors
-or
-software
-libraries
-<del class="diff-old">should
-be
-</del>
-<ins class="diff-chg">are
-</ins>
-necessary
-to
-use
-JSON-LD
-in
-its
-most
-basic
-form.
-The
-language
-<del class="diff-old">will
-provide
-</del>
-<ins class="diff-chg">provides
-</ins>
-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>
-A
-JSON-LD
-document
-<del class="diff-old">must
-be
-100%
-compatible
-with
-JSON.
-</del>
-<ins class="diff-chg">is
-always
-a
-valid
-JSON
-document.
-</ins>
-This
-ensures
-that
-all
-of
-the
-standard
-JSON
-libraries
-work
-seamlessly
-with
-JSON-LD
-documents.
-</dd>
-<dt>
-Expressiveness
-</dt>
-<dd>
-The
-syntax
-<del class="diff-old">must
-be
-able
-to
-serialize
-</del>
-<ins class="diff-chg">serializes
-</ins>
-directed
-graphs.
-This
-ensures
-that
-almost
-every
-real
-world
-data
-model
-can
-be
-expressed.
-</dd>
-<dt>
-Terseness
-</dt>
-<dd>
-The
-JSON-LD
-syntax
-<del class="diff-old">must
-be
-</del>
-<ins class="diff-chg">is
-</ins>
-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
-<del class="diff-old">must
-make
-the
-transition
-to
-JSON-LD
-as
-</del>
-<ins class="diff-chg">ensures
-a
-smooth
-and
-</ins>
-simple
-<del class="diff-old">as
-possible.
-</del>
-<ins class="diff-chg">transition
-from
-existing
-JSON-based
-systems.
-</ins>
-In
-many
-cases,
-zero
-edits
-to
-the
-JSON
-document
-and
-the
-addition
-of
-one
-line
-to
-the
-HTTP
-response
-should
-suffice
-(see
-<a class="sectionRef sec-ref" href="#interpreting-json-as-json-ld">
-section
-6.8
-Interpreting
-JSON
-as
-JSON-LD
-</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
-<del class="diff-old">more
-complex
-than
-</del>
-a
-<del class="diff-old">simple
-one-line
-change.
-</del>
-<ins class="diff-chg">complex
-undertaking.
-</ins>
-In
-these
-instances,
-rather
-than
-extending
-JSON-LD
-to
-support
-<del class="diff-old">an
-</del>
-esoteric
-use
-<del class="diff-old">case,
-</del>
-<ins class="diff-chg">cases,
-</ins>
-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.
-<del class="diff-old">We
-should
-focus
-</del>
-<ins class="diff-chg">JSON-LD
-focuses
-</ins>
-on
-simplicity
-when
-possible.
-</dd>
-<dt>
-<ins class="diff-new">Usable
-as
-RDF
-</ins></dt><dd><ins class="diff-new">
-JSON-LD
-is
-usable
-by
-developers
-as
-idiomatic
-JSON,
-with
-no
-need
-to
-understand
-RDF
-[
-</ins><cite><a class="bibref" href="#bib-RDF11-CONCEPTS"><ins class="diff-new">
-RDF11-CONCEPTS
-</ins></a></cite><ins class="diff-new">
-].
-JSON-LD
-is
-also
-usable
-as
-RDF,
-so
-people
-intending
-to
-use
-JSON-LD
-with
-RDF
-tools
-will
-find
-it
-can
-be
-used
-like
-any
-other
-RDF
-syntax.
-Complete
-details
-of
-how
-JSON-LD
-relates
-to
-RDF
-are
-in
-section
-</ins><a href="#relationship-to-rdf" class="sec-ref"><span class="secno"><ins class="diff-new">
-9.
-</ins></span><span class="sec-title"><ins class="diff-new">
-Relationship
-to
-RDF
-</ins></span></a>.</dd>
-</dl>
-</section>
-<section class="normative" id="terminology">
-<h2 aria-level="1" role="heading" id="h2_terminology">
-<span class="secno">
-3.
-</span>
-Terminology
-</h2>
-<section class="normative" id="general-terminology">
-<h3 aria-level="2" role="heading" id="h3_general-terminology">
-<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.
-In
-contrast
-to
-JSON,
-in
-JSON-LD
-the
-keys
-in
-an
-object
-must
-be
-unique.
-</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
-specifically
-defined
-(see
-<a class="sectionRef sec-ref" href="#sets-and-lists">
-section
-6.11
-Sets
-and
-Lists
-</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).
-</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
-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,
-<del class="diff-old">A
-</del>
-<ins class="diff-chg">a
-</ins>
-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 class="informative" id="data-model-overview">
-<h3 aria-level="2" role="heading" id="h3_data-model-overview">
-<span class="secno">
-3.2
-</span>
-<ins class="diff-new">Data
-Model
-Overview
-</ins></h3><p><em><ins class="diff-new">
-This
-section
-is
-non-normative.
-</ins></em></p><p><ins class="diff-new">
-Generally
-speaking,
-the
-data
-model
-used
-for
-JSON-LD
-is
-a
-labeled,
-directed
-</ins><a class="tref internalDFN" title="graph" href="#dfn-graph"><ins class="diff-new">
-graph
-</ins></a>.<ins class="diff-new">
-The
-graph
-contains
-</ins><a class="tref internalDFN" title="node" href="#dfn-node"><ins class="diff-new">
-nodes
-</ins></a>,<ins class="diff-new">
-which
-are
-connected
-by
-</ins><a class="tref internalDFN" title="edge" href="#dfn-edge"><ins class="diff-new">
-edges
-</ins></a>.<ins class="diff-new">
-A
-</ins><a class="tref internalDFN" title="node" href="#dfn-node"><ins class="diff-new">
-node
-</ins></a><ins class="diff-new">
-is
-typically
-data
-such
-as
-a
-</ins><a class="tref internalDFN" title="string" href="#dfn-string"><ins class="diff-new">
-string
-</ins></a>,<a class="tref internalDFN" title="number" href="#dfn-number"><ins class="diff-new">
-number
-</ins></a>,<a class="tref internalDFN" title="typed-value" href="#dfn-typed-value"><ins class="diff-new">
-typed
-values
-</ins></a><ins class="diff-new">
-(like
-dates
-and
-times)
-or
-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">
-There
-is
-also
-a
-special
-class
-of
-</ins><a class="tref internalDFN" title="node" href="#dfn-node"><ins class="diff-new">
-node
-</ins></a><ins class="diff-new">
-called
-a
-</ins><a class="tref internalDFN" title="blank-node" href="#dfn-blank-node"><ins class="diff-new">
-blank
-node
-</ins></a>,<ins class="diff-new">
-which
-is
-typically
-used
-to
-express
-data
-that
-does
-not
-have
-a
-global
-identifier
-like
-an
-</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
-IRI
-</ins></abbr></a>.<a class="tref internalDFN" title="blank-node" href="#dfn-blank-node"><ins class="diff-new">
-Blank
-nodes
-</ins></a><ins class="diff-new">
-are
-identified
-using
-a
-</ins><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">
-This
-simple
-data
-model
-is
-incredibly
-flexible
-and
-powerful,
-capable
-of
-modeling
-almost
-any
-kind
-of
-data.
-For
-a
-deeper
-explanation
-of
-the
-data
-model,
-see
-section
-</ins><a href="#data-model" class="sec-ref"><span class="secno"><ins class="diff-new">
-7.
-</ins></span><span class="sec-title"><ins class="diff-new">
-Data
-Model
-</ins></span></a>.</p><p><ins class="diff-new">
-Developers
-who
-are
-familiar
-with
-Linked
-Data
-technologies
-will
-recognize
-the
-data
-model
-as
-the
-RDF
-Data
-Model.
-To
-dive
-deeper
-into
-how
-JSON-LD
-and
-RDF
-are
-related,
-see
-section
-</ins><a href="#relationship-to-rdf" class="sec-ref"><span class="secno"><ins class="diff-new">
-9.
-</ins></span><span class="sec-title"><ins class="diff-new">
-Relationship
-to
-RDF
-</ins></span></a>.</p></section><section class="normative" id="syntax-tokens-and-keywords"><h3 aria-level="2" role="heading" id="h3_syntax-tokens-and-keywords"><span class="secno"><ins class="diff-new">
-3.3
-</ins></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
-<a class="sectionRef sec-ref" href="#the-context">
-section
-5.1
-The
-Context
-</a>.
-</dd>
-<dt>
-<code>
-@id
-</code>
-</dt>
-<dd>
-Used
-to
-uniquely
-identify
-<em>
-things
-</em>
-that
-are
-being
-described
-in
-the
-<del class="diff-old">document.
-</del>
-<ins class="diff-chg">document
-with
-</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><ins class="diff-chg">
-IRIs
-</ins></a><ins class="diff-chg">
-or
-</ins><a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier"><ins class="diff-chg">
-blank
-node
-identifiers
-</ins></a>.
-This
-keyword
-is
-described
-in
-<a class="sectionRef sec-ref" href="#node-identifiers">
-section
-5.3
-Node
-Identifiers
-</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 class="sectionRef sec-ref" href="#string-internationalization">
-section
-6.9
-String
-Internationalization
-</a>
-and
-<a class="sectionRef sec-ref" href="#typed-values">
-section
-6.4
-Typed
-Values
-</a>.
-</dd>
-<dt>
-<code>
-@language
-</code>
-</dt>
-<dd>
-Used
-to
-specify
-the
-<del class="diff-old">natural
-(human)
-</del>
-language
-for
-a
-particular
-<ins class="diff-new">string
-</ins>
-value
-or
-the
-default
-language
-of
-a
-JSON-LD
-document.
-This
-keyword
-is
-described
-in
-<a class="sectionRef sec-ref" href="#string-internationalization">
-section
-6.9
-String
-Internationalization
-</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
-<a class="sectionRef sec-ref" href="#typed-values">
-section
-6.4
-Typed
-Values
-</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
-<a class="sectionRef sec-ref" href="#sets-and-lists">
-section
-6.11
-Sets
-and
-Lists
-</a>.
-</dd>
-<dt>
-<code>
-@list
-</code>
-</dt>
-<dd>
-Used
-to
-express
-an
-ordered
-set
-of
-data.
-This
-keyword
-is
-described
-in
-<a class="sectionRef sec-ref" href="#sets-and-lists">
-section
-6.11
-Sets
-and
-Lists
-</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
-<a class="sectionRef sec-ref" href="#sets-and-lists">
-section
-6.11
-Sets
-and
-Lists
-</a>.
-</dd>
-<dt>
-<code>
-@reverse
-</code>
-</dt>
-<dd>
-Used
-to
-express
-reverse
-properties.
-This
-keyword
-is
-described
-in
-<a class="sectionRef sec-ref" href="#reverse-properties">
-section
-6.12
-Reverse
-Properties
-</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
-<a class="sectionRef sec-ref" href="#data-indexing">
-section
-6.16
-Data
-Indexing
-</a>.
-</dd>
-<dt>
-<code>
-@base
-</code>
-</dt>
-<dd>
-Used
-to
-set
-the
-base
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-against
-which
-<a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">
-relative
-IRIs
-</a>
-are
-resolved.
-This
-keyword
-is
-described
-in
-<a class="sectionRef sec-ref" href="#base-iri">
-section
-6.1
-Base
-IRI
-</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
-<a class="sectionRef sec-ref" href="#default-vocabulary">
-section
-6.2
-Default
-Vocabulary
-</a>.
-</dd>
-<dt>
-<code>
-@graph
-</code>
-</dt>
-<dd>
-Used
-to
-<del class="diff-old">explicitly
-label
-</del>
-<ins class="diff-chg">express
-</ins>
-a
-<del class="diff-old">JSON-LD
-</del>
-<a class="tref internalDFN" title="graph" href="#dfn-graph">
-graph
-</a>.
-This
-keyword
-is
-described
-in
-<a class="sectionRef sec-ref" href="#named-graphs">
-section
-6.13
-Named
-Graphs
-</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>
-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 aria-level="1" role="heading" id="h2_conformance">
-<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.
-As
-well
-as
-sections
-marked
-as
-non-normative,
-all
-authoring
-guidelines,
-diagrams,
-examples,
-and
-notes
-in
-this
-specification
-are
-non-normative.
-Everything
-else
-in
-this
-specification
-is
-normative.
-</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
-appendix
-<a href="#json-ld-grammar" class="sec-ref">
-<span class="secno">
-<del class="diff-old">B.
-</del>
-<ins class="diff-chg">8.
-</ins>
-</span>
-<span class="sec-title">
-JSON-LD
-Grammar
-</span>
-</a>.
-JSON
-documents
-can
-be
-interpreted
-as
-JSON-LD
-by
-following
-the
-normative
-statements
-in
-<a class="sectionRef sec-ref" href="#interpreting-json-as-json-ld">
-section
-6.8
-Interpreting
-JSON
-as
-JSON-LD
-</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="informative" id="basic-concepts">
-<h2 aria-level="1" role="heading" id="h2_basic-concepts">
-<span class="secno">
-5.
-</span>
-Basic
-Concepts
-</h2>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-JSON
-[
-<cite>
-<a class="bibref" href="#bib-RFC4627">
-RFC4627
-</a>
-</cite>
-]
-is
-a
-lightweight,
-language-independent
-<del class="diff-old">data-interchange
-</del>
-<ins class="diff-chg">data
-interchange
-</ins>
-format.
-It
-is
-easy
-to
-parse
-and
-easy
-to
-generate.
-However,
-it
-is
-difficult
-to
-integrate
-JSON
-from
-different
-sources
-as
-the
-data
-<del class="diff-old">has
-just
-local
-meaning.
-</del>
-<ins class="diff-chg">may
-contain
-keys
-that
-conflict
-with
-other
-data
-sources.
-</ins>
-Furthermore,
-JSON
-has
-no
-built-in
-support
-for
-<del class="diff-old">hyperlinks
--
-</del>
-<ins class="diff-chg">hyperlinks,
-which
-are
-</ins>
-a
-fundamental
-building
-block
-on
-the
-Web.
-Let's
-<del class="diff-old">look
-</del>
-<ins class="diff-chg">start
-by
-looking
-</ins>
-at
-an
-example
-that
-we
-will
-be
-using
-for
-the
-rest
-of
-this
-section:
-</p>
-<del class="diff-old">  {
-  &quot;name&quot;: &quot;Manu Sporny&quot;,
-  &quot;homepage&quot;: &quot;http://manu.sporny.org/&quot;,
-  &quot;image&quot;: &quot;http://manu.sporny.org/images/manu.png&quot;
-</del>
-  <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>
-It's
-obvious
-to
-humans
-that
-the
-data
-is
-about
-a
-person
-whose
-<code>
-name
-</code>
-is
-<del class="diff-old">&quot;Manu
-Sporny&quot;
-</del>
-<ins class="diff-chg">"Manu
-Sporny"
-</ins>
-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
-tokens
-such
-as
-<del class="diff-old">&quot;name&quot;,
-&quot;homepage&quot;,
-</del>
-<ins class="diff-chg">"name",
-"homepage",
-</ins>
-etc.
-</p>
-<p>
-Linked
-<del class="diff-old">Data
-,
-</del>
-<ins class="diff-chg">Data,
-</ins>
-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
-<del class="diff-old">assign
-</del>
-<ins class="diff-chg">use
-</ins>
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-IRIs
-</a>
-to
-<del class="diff-old">something
-</del>
-<ins class="diff-chg">assign
-unambiguous
-identifiers
-to
-data
-</ins>
-that
-may
-be
-of
-use
-to
-other
-<del class="diff-old">developers
-and
-that
-it
-is
-useful
-to
-give
-them
-an
-unambiguous
-identifier.
-That
-is,
-it
-</del>
-<ins class="diff-chg">developers.
-It
-</ins>
-is
-useful
-for
-<a class="tref internalDFN" title="term" href="#dfn-term">
-terms
-</a>,
-<ins class="diff-chg">like
-</ins><code><ins class="diff-chg">
-name
-</ins></code><ins class="diff-chg">
-and
-</ins><code><ins class="diff-chg">
-homepage
-</ins></code>,
-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.
-<ins class="diff-new">This
-process
-is
-known
-as
-</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">
-dereferencing.
-</ins>
-</p>
-<p>
-Leveraging
-the
-<del class="diff-old">well-known
-</del>
-<ins class="diff-chg">popular
-</ins>
-<a href="http://schema.org/">
-schema.org
-vocabulary
-</a>,
-the
-example
-above
-could
-be
-unambiguously
-expressed
-as
-follows:
-</p>
-<del class="diff-old">  {
-  &quot;&quot;: &quot;Manu Sporny&quot;,
-  &quot;,
-  &quot;
-</del>
-  <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>, ← The '@id' keyword means 'This value is an identifier that is an IRI'
-  "<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>
-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 class="informative" id="the-context">
-<h3 aria-level="2" role="heading" id="h3_the-context">
-<span class="secno">
-5.1
-</span>
-The
-Context
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-<ins class="diff-new">When
-two
-people
-communicate
-with
-one
-another,
-the
-conversation
-takes
-place
-in
-a
-shared
-environment,
-typically
-called
-"the
-context
-of
-the
-conversation".
-This
-shared
-context
-allows
-the
-individuals
-to
-use
-shortcut
-terms,
-like
-the
-first
-name
-of
-a
-mutual
-friend,
-to
-communicate
-more
-quickly
-but
-without
-losing
-accuracy.
-A
-context
-in
-JSON-LD
-works
-in
-the
-same
-way.
-It
-allows
-two
-applications
-to
-use
-shortcut
-terms
-to
-communicate
-with
-one
-another
-more
-efficiently,
-but
-without
-losing
-accuracy.
-</ins></p><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>
-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>
-<del class="diff-old">    {
-  &quot;@context&quot;:
-  {
-    &quot;name&quot;: &quot;http://schema.org/name&quot;,
-    &quot;image&quot;: {
-      &quot;@id&quot;: &quot;http://schema.org/image&quot;,
-      &quot;@type&quot;: &quot;@id&quot;
-    },
-    &quot;homepage&quot;: {
-      &quot;@id&quot;: &quot;http://schema.org/url&quot;,
-      &quot;@type&quot;: &quot;@id&quot;
-    }
-  }
-</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":
-<ins class="diff-chg">  {
-    "name": "http://schema.org/name", </span> ← This means that 'name' is shorthand for 'http://schema.org/name' <span class="diff">
-    "image": {
-      "@id": "http://schema.org/image", </span> ← This means that 'image' is shorthand for 'http://schema.org/image' <span class="diff">
-      "@type": "@id" </span> ← This means that a string value associated with 'image' should be interpreted as an identifier that is an IRI <span class="diff">
-    },
-    "homepage": {
-      "@id": "http://schema.org/url", </span> ← This means that 'homepage' is shorthand for 'http://schema.org/url' <span class="diff">
-      "@type": "@id" </span> ← This means that a string value associated with 'homepage' should be interpreted as an identifier that is an IRI <span class="diff">
-    }
-  }</span>
-</ins>
-}
-</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
-<dfn title="expanded-term-definition" id="dfn-expanded-term-definition">
-expanded
-term
-definition
-</dfn>.
-The
-example
-above
-specifies
-that
-the
-values
-of
-<code>
-image
-</code>
-and
-<code>
-homepage
-<del class="diff-old">terms
-</del>
-</code>,
-<ins class="diff-chg">if
-they
-are
-strings,
-</ins>
-are
-<ins class="diff-new">to
-be
-interpreted
-as
-</ins>
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-IRIs
-</a>.
-<del class="diff-old">They
-</del>
-<a class="tref internalDFN" title="expanded-term-definition" href="#dfn-expanded-term-definition">
-<ins class="diff-chg">Expanded
-term
-definitions
-</ins></a>
-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>
-<del class="diff-old">    {
-  
-  &quot;name&quot;: &quot;Manu Sporny&quot;,
-  &quot;homepage&quot;: &quot;http://manu.sporny.org/&quot;,
-  &quot;image&quot;: &quot;http://manu.sporny.org/images/manu.png&quot;
-</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
-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
-<del class="diff-old">the
-</del>
-<ins class="diff-chg">string
-</ins>
-values
-<del class="diff-old">of
-</del>
-<ins class="diff-chg">associated
-with
-</ins>
-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>
-(
-<code>
-<del class="diff-old">&quot;@type&quot;:
-&quot;@id&quot;
-</del>
-<ins class="diff-chg">"@type":
-"@id"
-</ins>
-</code>,
-see
-<a class="sectionRef sec-ref" href="#iris">
-section
-5.2
-IRIs
-</a>
-for
-more
-details).
-This
-information
-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>
-JSON
-documents
-can
-be
-<del class="diff-old">transformed
-to
-</del>
-<ins class="diff-chg">interpreted
-as
-</ins>
-JSON-LD
-without
-having
-to
-be
-modified
-by
-referencing
-a
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>
-via
-an
-HTTP
-Link
-Header
-as
-described
-in
-<a class="sectionRef sec-ref" href="#interpreting-json-as-json-ld">
-section
-6.8
-Interpreting
-JSON
-as
-JSON-LD
-</a>.
-It
-is
-also
-possible
-to
-apply
-a
-custom
-context
-using
-the
-JSON-LD
-API
-[
-<cite>
-<a class="bibref" href="#bib-JSON-LD-API">
-JSON-LD-API
-</a>
-</cite>
-].
-</p>
-<p>
-In
-<a class="tref internalDFN" title="json-ld-document" href="#dfn-json-ld-document">
-JSON-LD
-documents
-</a>,
-<a class="tref internalDFN" title="context" href="#dfn-context">
-contexts
-</a>
-may
-also
-be
-specified
-<del class="diff-old">in-line.
-</del>
-<ins class="diff-chg">inline.
-</ins>
-This
-has
-the
-advantage
-that
-documents
-can
-be
-processed
-even
-in
-the
-absence
-of
-a
-connection
-to
-the
-Web.
-<ins class="diff-new">Ultimately,
-this
-is
-a
-modeling
-decision
-and
-different
-use
-cases
-may
-require
-different
-handling.
-</ins>
-</p>
-<del class="diff-old">    {
-  &quot;@context&quot;:
-  {
-    &quot;name&quot;: &quot;http://schema.org/name&quot;,
-    &quot;image&quot;: {
-      &quot;@id&quot;: &quot;http://schema.org/image&quot;,
-      &quot;@type&quot;: &quot;@id&quot;
-    },
-    &quot;homepage&quot;: {
-      &quot;@id&quot;: &quot;http://schema.org/url&quot;,
-      &quot;@type&quot;: &quot;@id&quot;
-    }
-  },
-  &quot;name&quot;: &quot;Manu Sporny&quot;,
-  &quot;homepage&quot;: &quot;http://manu.sporny.org/&quot;,
-  &quot;image&quot;: &quot;http://manu.sporny.org/images/manu.png&quot;
-</del>
-    <div class="example"><div class="example-title"><span>Example 5</span>: In-line context definition</div><pre class="example">{
-  <span class="diff">"@context":
-<ins class="diff-chg">  {
-    "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"
-</ins>
-}
-</pre>
-</div>
-<p>
-<ins class="diff-chg">This
-section
-only
-covers
-the
-most
-basic
-features
-of
-the
-JSON-LD
-Context.
-More
-advanced
-features
-related
-to
-the
-JSON-LD
-Context
-are
-covered
-in
-section
-</ins><a href="#advanced-concepts" class="sec-ref"><span class="secno"><ins class="diff-chg">
-6.
-</ins></span><span class="sec-title"><ins class="diff-chg">
-Advanced
-Concepts
-</ins></span></a>.</p></section><section class="informative" id="iris"><h3 aria-level="2" role="heading" id="h3_iris">
-<span class="secno">
-5.2
-</span>
-IRIs
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<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
-Linked
-Data
-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>
-<del class="diff-old">associated
-with
-the
-document.
-</del>
-</dfn>.
-</p>
-<p>
-A
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>
-is
-interpreted
-as
-an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-when
-it
-is
-the
-value
-of
-an
-<code>
-@id
-</code>
-member:
-</p>
-<del class="diff-old">  {
-...
-  &quot;homepage&quot;: { &quot;&quot;: &quot;http://example.com/&quot; }
-...
-</del>
-  <div class="example"><div class="example-title"><span>Example 6</span>: Values of @id are interpreted as IRI</div><pre class="example">{
-<ins class="diff-chg">...
-  "homepage": { "<span class="diff">@id</span>": "http://example.com/" }
-...
-</ins>
-}
-</pre>
-</div>
-<p>
-Values
-that
-are
-interpreted
-as
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-IRIs
-</a>,
-can
-also
-be
-expressed
-as
-<a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">
-relative
-IRIs
-</a>.
-For
-example,
-assuming
-that
-the
-following
-document
-is
-located
-at
-<code>
-http://example.com/about/
-</code>,
-the
-<a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">
-relative
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-<code>../
-</code>
-would
-expand
-to
-<code>
-http://example.com/
-</code>
-(for
-more
-information
-on
-where
-<a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">
-relative
-IRIs
-</a>
-can
-be
-used,
-please
-refer
-to
-<del class="diff-old">appendix
-</del>
-<ins class="diff-chg">section
-</ins>
-<a href="#json-ld-grammar" class="sec-ref">
-<span class="secno">
-<del class="diff-old">B.
-</del>
-<ins class="diff-chg">8.
-</ins>
-</span>
-<span class="sec-title">
-JSON-LD
-Grammar
-</span>
-</a>
-).
-</p>
-<del class="diff-old">  {
-...
-  &quot;homepage&quot;: { &quot;&quot;: &quot;../&quot; }
-...
-</del>
-  <div class="example"><div class="example-title"><span>Example 7</span>: IRIs can be relative</div><pre class="example">{
-<ins class="diff-chg">...
-  "homepage": { "<span class="diff">@id</span>": "../" }
-...
-</ins>
-}
-</pre>
-</div>
-<p>
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
-Absolute
-IRIs
-</a>
-can
-be
-expressed
-directly
-in
-the
-key
-position
-like
-so:
-</p>
-<del class="diff-old">  {
-...
-  &quot;&quot;: &quot;Manu Sporny&quot;,
-...
-</del>
-  <div class="example"><div class="example-title"><span>Example 8</span>: IRI as a key</div><pre class="example">{
-<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>
-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>
-<del class="diff-old">because
-it
-contains
-a
-colon
-(
-:
-)
-and
-it
-is
-neither
-a
-compact
-IRI
-nor
-a
-blank
-node
-identifier
-</del>
-</a>.
-</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>
-<del class="diff-old">  {
-  &quot;&quot;:
-  {
-    &quot;&quot;
-  },
-  &quot;&quot;: &quot;Manu Sporny&quot;,
-  &quot;status&quot;: &quot;trollin'&quot;
-</del>
-  <div class="example"><div class="example-title"><span>Example 9</span>: Term expansion from context definition</div><pre class="example">{
-<ins class="diff-chg">  "<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'"
-</ins>
-}
-</pre>
-</div>
-<p>
-JSON
-keys
-that
-do
-not
-expand
-to
-an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>,
-such
-as
-<code>
-status
-</code>
-in
-the
-example
-above,
-are
-not
-Linked
-Data
-and
-thus
-ignored
-when
-processed.
-</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">  
-  &quot;@context&quot;:
-  {
-    ...
-    &quot;homepage&quot;:
-    {
-      &quot;@id&quot;: &quot;http://schema.org/homepage&quot;,
-      &quot;@type&quot;: &quot;@id&quot;
-    }
-    ...
-  }
-...
-  &quot;homepage&quot;: &quot;http://manu.sporny.org/&quot;,
-...
-</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":
-  {
-    ...
-    "homepage":
-    {
-      "@id": "http://schema.org/homepage",
-      "@type": "@id"
-    }
-    ...
-  }</span>
-...
-  "homepage": "http://manu.sporny.org/",
-...
-</ins>
-}
-</pre>
-</div>
-<p>
-In
-the
-example
-above,
-<del class="diff-old">even
-though
-</del>
-<ins class="diff-chg">since
-</ins>
-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
-<del class="diff-old">generating
-</del>
-<ins class="diff-chg">processing
-</ins>
-the
-<del class="diff-old">JSON-LD
-graph
-.
-</del>
-<ins class="diff-chg">data.
-</ins>
-See
-<a class="sectionRef sec-ref" href="#type-coercion">
-section
-6.5
-Type
-Coercion
-</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>
-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>
-or
-<code>
-@vocab
-</code>.
-</li>
-</ol>
-<p>
-<ins class="diff-chg">This
-section
-only
-covers
-the
-most
-basic
-features
-associated
-with
-IRIs
-in
-JSON-LD.
-More
-advanced
-features
-related
-to
-IRIs
-are
-covered
-in
-section
-</ins><a href="#advanced-concepts" class="sec-ref"><span class="secno"><ins class="diff-chg">
-6.
-</ins></span><span class="sec-title"><ins class="diff-chg">
-Advanced
-Concepts
-</ins></span></a>.</p></section><section class="informative" id="node-identifiers"><h3 aria-level="2" role="heading" id="h3_node-identifiers">
-<span class="secno">
-5.3
-</span>
-Node
-Identifiers
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<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="graph" href="#dfn-graph">
-graph
-</a>,
-it
-is
-important
-that
-<a class="tref internalDFN" title="node" href="#dfn-node">
-nodes
-</a>
-have
-an
-identifier.
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-IRIs
-</a>
-are
-a
-fundamental
-concept
-of
-Linked
-<del class="diff-old">Data
-,
-</del>
-<ins class="diff-chg">Data,
-</ins>
-for
-<a class="tref internalDFN" title="node" href="#dfn-node">
-nodes
-</a>
-to
-be
-truly
-linked,
-dereferencing
-the
-identifier
-should
-result
-in
-a
-representation
-of
-that
-<a class="tref internalDFN" title="node" href="#dfn-node">
-node
-</a>.
-This
-may
-allow
-an
-application
-to
-retrieve
-further
-information
-about
-a
-<a class="tref internalDFN" title="node" href="#dfn-node">
-node
-</a>.
-</p>
-<p>
-In
-JSON-LD,
-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>
-<del class="diff-old">  {
-  &quot;@context&quot;:
-  {
-    ...
-    &quot;name&quot;: &quot;http://schema.org/name&quot;
-  },
-  ,
-  &quot;name&quot;: &quot;Markus Lanthaler&quot;,
-  ...
-</del>
-  <div class="example"><div class="example-title"><span>Example 11</span>: Identifying a node</div><pre class="example">{
-<ins class="diff-chg">  "@context":
-  {
-    ...
-    "name": "http://schema.org/name"
-  },
-</ins>  <span class="diff">"@id": "http://me.markus-lanthaler.com/"</span>,<ins class="diff-chg">
-  "name": "Markus Lanthaler",
-  ...
-</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://me.markus-lanthaler.com/
-</code>.
-</p>
-<p>
-<ins class="diff-chg">This
-section
-only
-covers
-the
-most
-basic
-features
-associated
-with
-node
-identifiers
-in
-JSON-LD.
-More
-advanced
-features
-related
-to
-node
-identifiers
-are
-covered
-in
-section
-</ins><a href="#advanced-concepts" class="sec-ref"><span class="secno"><ins class="diff-chg">
-6.
-</ins></span><span class="sec-title"><ins class="diff-chg">
-Advanced
-Concepts
-</ins></span></a>.</p></section><section class="informative" id="specifying-the-type"><h3 aria-level="2" role="heading" id="h3_specifying-the-type">
-<span class="secno">
-5.4
-</span>
-Specifying
-the
-Type
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<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
-Linked
-<del class="diff-old">Data
-,
-</del>
-<ins class="diff-chg">Data,
-</ins>
-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">{
-...
-  &quot;@id&quot;: &quot;http://example.org/places#BrewEats&quot;,
-  &quot;&quot;,
-...
-</del>
-<div class="example"><div class="example-title"><span>Example 12</span>: Specifying the type for a node</div><pre class="example">{
-<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
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>:
-</p>
-<del class="diff-old">{
-...
-  &quot;@id&quot;: &quot;http://example.org/places#BrewEats&quot;,
-  &quot;
-...
-</del>
-<div class="example"><div class="example-title"><span>Example 13</span>: Specifying multiple types for a node</div><pre class="example">{
-<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">{
-  &quot;@context&quot;: {
-    ...
-    
-    
-  }
-  &quot;@id&quot;: &quot;http://example.org/places#BrewEats&quot;,
-  ,
-  ...
-</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>    <span class="diff">"Restaurant": "http://schema.org/Restaurant", </span>    <span class="diff">"Brewery": "http://schema.org/Brewery"</span><ins class="diff-chg">
-  }
-  "@id": "http://example.org/places#BrewEats",
-</ins>  <span class="diff">"@type": [ "Restaurant", "Brewery" ]</span>,<ins class="diff-chg">
-  ...
-</ins>
-}
-</pre>
-</div>
-<p>
-<ins class="diff-chg">This
-section
-only
-covers
-the
-most
-basic
-features
-associated
-with
-types
-in
-JSON-LD.
-More
-advanced
-features
-related
-to
-types
-are
-covered
-in
-section
-</ins><a href="#advanced-concepts" class="sec-ref"><span class="secno"><ins class="diff-chg">
-6.
-</ins></span><span class="sec-title"><ins class="diff-chg">
-Advanced
-Concepts
-</ins></span></a>.</p></section></section><section class="normative" id="advanced-concepts"><h2 aria-level="1" role="heading" id="h2_advanced-concepts">
-<span class="secno">
-6.
-</span>
-Advanced
-Concepts
-</h2>
-<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 class="informative" id="base-iri">
-<h3 aria-level="2" role="heading" id="h3_base-iri">
-<span class="secno">
-6.1
-</span>
-Base
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<del class="diff-old">Feature
-at
-Risk
-1
-:
-@base
-keyword
-Note:
-This
-feature
-is
-&quot;at
-risk&quot;
-and
-may
-be
-removed
-from
-this
-specification
-based
-on
-feedback.
-Please
-send
-feedback
-to
-public-rdf-comments@w3.org
-.
-For
-the
-current
-status
-see
-features
-&quot;at
-risk&quot;
-in
-JSON-LD
-1.0
-Support
-for
-the
-@base
-keyword
-might
-be
-removed
-from
-JSON-LD
-1.0
-if
-implementation
-experience
-reveals
-that
-the
-fact
-that
-a
-document
-may
-have
-multiple
-base
-IRIs
-is
-confusing
-for
-developers.
-It
-is
-also
-being
-discussed
-whether
-relative
-IRIs
-are
-allowed
-as
-values
-of
-@base
-or
-whether
-the
-empty
-string
-should
-be
-used
-to
-explicitly
-specify
-that
-there
-isn't
-a
-base
-IRI
-,
-which
-could
-be
-used
-to
-ensure
-that
-relative
-IRIs
-remain
-relative
-when
-expanding.
-</del>
-<p>
-JSON-LD
-allows
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-s
-to
-be
-specified
-in
-a
-relative
-form
-which
-is
-resolved
-against
-the
-document
-base
-according
-<cite>
-<a href="http://tools.ietf.org/html/rfc3986#section-5.1">
-section
-5.1
-Establishing
-a
-Base
-URI
-</a>
-</cite>
-of
-[
-<cite>
-<a class="bibref" href="#bib-RFC3986">
-RFC3986
-</a>
-</cite>
-].
-The
-base
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-may
-be
-explicitly
-set
-with
-a
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>
-using
-the
-<code>
-@base
-</code>
-keyword.
-</p>
-<p>
-For
-example,
-if
-a
-JSON-LD
-document
-was
-retrieved
-from
-<code>
-http://example.com/document.jsonld
-</code>,
-relative
-IRIs
-would
-resolve
-against
-that
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>:
-</p>
-<del class="diff-old">  {
-  &quot;@context&quot;: {
-    &quot;label&quot;: &quot;http://www.w3.org/2000/01/rdf-schema#label&quot;
-  },
-  ,
-  &quot;label&quot;: &quot;Just a simple document&quot;
-</del>
-  <div class="example"><div class="example-title"><span>Example 15</span>: Use a relative IRI as node identifier</div><pre class="example">{
-<ins class="diff-chg">  "@context": {
-    "label": "http://www.w3.org/2000/01/rdf-schema#label"
-  },
-</ins>  <span class="diff">"@id": ""</span>,<ins class="diff-chg">
-  "label": "Just a simple document"
-</ins>
-}
-</pre>
-</div>
-<p>
-This
-document
-uses
-an
-empty
-<code>
-@id
-</code>,
-which
-resolves
-to
-the
-document
-base.
-However,
-if
-the
-document
-is
-moved
-to
-a
-different
-location,
-the
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-would
-change.
-To
-prevent
-this
-without
-having
-to
-use
-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="context" href="#dfn-context">
-context
-</a>
-may
-define
-a
-<code>
-@base
-</code>
-mapping,
-to
-overwrite
-the
-base
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-for
-the
-document.
-</p>
-<del class="diff-old">  {
-  &quot;@context&quot;: {
-    
-  },
-  &quot;@id&quot;: &quot;&quot;,
-  &quot;label&quot;: &quot;Just a simple document&quot;
-</del>
-  <div class="example"><div class="example-title"><span>Example 16</span>: Setting the document base in a document</div><pre class="example">{
-<ins class="diff-chg">  "@context": {
-</ins>    <span class="diff">"@base": "http://example.com/document.jsonld"</span><ins class="diff-chg">
-  },
-  "@id": "",
-  "label": "Just a simple document"
-</ins>
-}
-</pre>
-</div>
-<p>
-<ins class="diff-new">Setting
-</ins><code><ins class="diff-new">
-@base
-</ins></code><ins class="diff-new">
-to
-</ins><a class="tref internalDFN" title="null" href="#dfn-null"><ins class="diff-new">
-null
-</ins></a><ins class="diff-new">
-will
-prevent
-</ins><a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri"><ins class="diff-new">
-relative
-IRIs
-</ins></a><ins class="diff-new">
-to
-be
-expanded
-to
-</ins><a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri"><ins class="diff-new">
-absolute
-IRIs
-</ins></a>.</p><div class="issue atrisk"><div class="issue-title" aria-level="3" role="heading" id="h_issue_1"><span><ins class="diff-new">
-Feature
-at
-Risk
-10
-</ins></span>:<ins class="diff-new">
-Support
-for
-@base:
-null
-</ins>
-</div>
-<div class="atrisk">
-<p class="atrisk-head">
-<ins class="diff-chg">Note:
-This
-feature
-is
-</ins><a href="http://www.w3.org/2005/10/Process-20051014/tr#cfi"><ins class="diff-chg">
-"at
-risk"
-</ins></a><ins class="diff-chg">
-and
-may
-be
-removed
-from
-this
-specification
-based
-on
-feedback.
-Please
-send
-feedback
-to
-</ins><a href="mailto:public-rdf-comments@w3.org"><ins class="diff-chg">
-public-rdf-comments@w3.org
-</ins></a>.<ins class="diff-chg">
-For
-the
-current
-status
-see
-</ins><a href="http://www.w3.org/2011/rdf-wg/wiki/JSON-LD_Features_at_Risk"><ins class="diff-chg">
-features
-"at
-risk"
-in
-JSON-LD
-1.0
-</ins></a></p><p><ins class="diff-chg">
-Unlike
-many
-other
-serialization
-formats,
-JSON-LD
-allows
-to
-specify
-that
-there
-is
-no
-base
-</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
-IRI
-</ins></abbr><ins class="diff-chg">
-from
-within
-the
-document
-(by
-setting
-</ins><code><ins class="diff-chg">
-@base
-</ins></code><ins class="diff-chg">
-to
-</ins><a class="tref internalDFN" title="null" href="#dfn-null"><ins class="diff-chg">
-null
-</ins></a><ins class="diff-chg">
-).
-The
-result
-is
-that
-the
-algorithm
-for
-establishing
-a
-base
-</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
-IRI
-</ins></abbr><ins class="diff-chg">
-as
-specified
-in
-</ins><a href="http://tools.ietf.org/html/rfc3986#section-5.1"><ins class="diff-chg">
-RFC3986
-section
-5.1
-</ins></a><ins class="diff-chg">
-is
-overridden
-so
-relative
-IRIs
-remain
-relative
-IRIs
-even
-in
-the
-case
-that
-an
-</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
-IRI
-</ins></abbr><ins class="diff-chg">
-would
-be
-available
-in
-one
-of
-the
-outer
-layers
-(e.g.,
-the
-</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
-IRI
-</ins></abbr><ins class="diff-chg">
-used
-to
-retrieve
-the
-document
-or
-an
-application
-supplied
-base
-</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
-IRI
-</ins></abbr><ins class="diff-chg">
-).
-Based
-on
-implementer
-feedback,
-the
-Working
-Group
-may
-decide
-to
-remove
-this
-feature
-from
-JSON-LD
-1.0.
-</ins></p></div></div><p><ins class="diff-chg">
-Please
-note
-that
-the
-</ins><code><ins class="diff-chg">
-@base
-</ins></code><ins class="diff-chg">
-will
-be
-ignored
-if
-used
-in
-external
-contexts.
-</ins></p></section><section class="informative" id="default-vocabulary"><h3 aria-level="2" role="heading" id="h3_default-vocabulary">
-<span class="secno">
-6.2
-</span>
-Default
-Vocabulary
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</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>
-and
-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>
-<del class="diff-old">  {
-  &quot;@context&quot;: {
-    
-  }
-  &quot;@id&quot;: &quot;http://example.org/places#BrewEats&quot;,
-  &quot;@type&quot;: ,
-  : &quot;Brew Eats&quot;
-  ...
-</del>
-  <div class="example"><div class="example-title"><span>Example 17</span>: Using a common vocabulary prefix</div><pre class="example">{
-<ins class="diff-chg">  "@context": {
-</ins>    <span class="diff">"@vocab": "http://schema.org/"</span><ins class="diff-chg">
-  }
-  "@id": "http://example.org/places#BrewEats",
-  "@type": <span class="diff">"Restaurant"</span>,
-</ins>  <span class="diff">"name"</span>: "Brew Eats"<ins class="diff-chg">
-  ...
-</ins>
-}
-</pre>
-</div>
-<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
-not
-expand
-to
-an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>.
-</p>
-<del class="diff-old">  {
-  &quot;@context&quot;:
-  {
-     &quot;@vocab&quot;: &quot;http://schema.org/&quot;,
-     
-  },
-    &quot;@id&quot;: &quot;http://example.org/places#BrewEats&quot;,
-    &quot;@type&quot;: &quot;Restaurant&quot;,
-    &quot;name&quot;: &quot;Brew Eats&quot;,
-    : &quot;23987520&quot;
-</del>
-  <div class="example"><div class="example-title"><span>Example 18</span>: Using the null keyword to ignore data</div><pre class="example">{
-<ins class="diff-chg">  "@context":
-  {
-     "@vocab": "http://schema.org/",
-</ins>     <span class="diff">"databaseId": null</span><ins class="diff-chg">
-  },
-    "@id": "http://example.org/places#BrewEats",
-    "@type": "Restaurant",
-    "name": "Brew Eats",
-</ins>    <span class="diff">"databaseId"</span>: "23987520"
-}
-</pre>
-</div>
-</section>
-<section class="informative" id="compact-iris">
-<h3 aria-level="2" role="heading" id="h3_compact-iris">
-<span class="secno">
-6.3
-</span>
-Compact
-IRIs
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</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>
-).
-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
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-<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
-to
-the
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-<code>
-http://xmlns.com/foaf/0.1/name
-</code>.
-</p>
-<del class="diff-old">  {
-  &quot;&quot;:
-  {
-    &quot;&quot;
-...
-  },
-  &quot;@type&quot;: &quot;&quot;
-  &quot;&quot;: &quot;Dave Longley&quot;,
-...
-</del>
-  <div class="example"><div class="example-title"><span>Example 19</span>: Prefix expansion</div><pre class="example">{
-<ins class="diff-chg">  "<span class="diff">@context</span>":
-  {
-    "<span class="diff">foaf</span>": "<span class="diff">http://xmlns.com/foaf/0.1/</span>"
-...
-  },
-  "@type": "<span class="diff">foaf:Person</span>"
-  "<span class="diff">foaf:name</span>": "Dave Longley",
-...
-</ins>
-}
-</pre>
-</div>
-<p>
-In
-the
-example
-above,
-<code>
-foaf:name
-</code>
-expands
-to
-the
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-<code>
-http://xmlns.com/foaf/0.1/name
-</code>
-and
-<code>
-foaf:Person
-</code>
-expands
-to
-<code>
-http://xmlns.com/foaf/0.1/Person
-</code>.
-</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,
-the
-<em>
-prefix
-</em>
-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>,
-and
-the
-<em>
-suffix
-</em>
-does
-not
-begin
-with
-two
-<del class="diff-old">slashes
-(
-</del>
-<ins class="diff-chg">slashes&nbsp;(
-</ins>
-<code>
-//
-</code>
-).
-The
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
-compact
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-is
-expanded
-by
-concatenating
-the
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-mapped
-to
-the
-<em>
-prefix
-</em>
-to
-the
-(possibly
-empty)
-<em>
-suffix
-</em>.
-If
-the
-<em>
-prefix
-</em>
-is
-not
-defined
-in
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-or
-the
-suffix
-begins
-with
-two
-slashes
-(such
-as
-in
-<code>
-http://example.com
-</code>
-),
-the
-value
-is
-interpreted
-as
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
-absolute
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-instead.
-If
-the
-prefix
-is
-an
-underscore
-(
-<code>
-_
-</code>
-),
-the
-value
-is
-interpreted
-as
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifier
-</a>
-instead.
-</p>
-<p>
-It's
-also
-possible
-to
-use
-compact
-IRIs
-within
-the
-context
-as
-shown
-in
-the
-following
-example:
-</p>
-<del class="diff-old">  {
-  &quot;@context&quot;:
-  {
-    &quot;xsd&quot;: &quot;http://www.w3.org/2001/XMLSchema#&quot;,
-    ,
-    : { &quot;@type&quot;: &quot;@id&quot; },
-    &quot;picture&quot;: { &quot;@id&quot;: , &quot;@type&quot;: &quot;@id&quot; }
-  },
-  &quot;@id&quot;: &quot;http://me.markus-lanthaler.com/&quot;,
-  &quot;@type&quot;: &quot;foaf:Person&quot;,
-  &quot;foaf:name&quot;: &quot;Markus Lanthaler&quot;,
-  &quot;foaf:homepage&quot;: &quot;http://www.markus-lanthaler.com/&quot;,
-  &quot;picture&quot;: &quot;http://twitter.com/account/profile_image/markuslanthaler&quot;
-</del>
-  <div class="example"><div class="example-title"><span>Example 20</span>: Using vocabularies</div><pre class="example">{
-<ins class="diff-chg">  "@context":
-  {
-    "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" }
-  },
-  "@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 class="informative" id="typed-values">
-<h3 aria-level="2" role="heading" id="h3_typed-values">
-<span class="secno">
-6.4
-</span>
-Typed
-Values
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<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
-a
-<a class="tref internalDFN" title="value-object" href="#dfn-value-object">
-value
-object
-</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">{
-  &quot;@context&quot;:
-  {
-    &quot;modified&quot;:
-    {
-      &quot;@id&quot;: &quot;http://purl.org/dc/terms/modified&quot;,
-      &quot;@type&quot;: &quot;http://www.w3.org/2001/XMLSchema#dateTime&quot;
-    }
-  },
-...
-  &quot;@id&quot;: &quot;http://example.com/docs/1&quot;,
-  &quot;modified&quot;: &quot;2010-05-29T14:17:39+02:00&quot;,
-...
-</del>
-<div class="example"><div class="example-title"><span>Example 21</span>: Expanded term definition with type coercion</div><pre class="example">{
-  <span class="diff">"@context":
-<ins class="diff-chg">  {
-    "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",
-...
-</ins>
-}
-</pre>
-</div>
-<p>
-The
-<em>
-modified
-</em>
-key's
-value
-above
-is
-automatically
-type
-coerced
-to
-a
-<em>
-dateTime
-</em>
-value
-because
-of
-the
-information
-specified
-in
-the
-<code>
-@context
-</code>.
-A
-JSON-LD
-processor
-will
-interpret
-the
-example
-above
-as
-follows:
-</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>
-<del class="diff-old">{
-  &quot;@context&quot;:
-  {
-    &quot;modified&quot;:
-    {
-      &quot;@id&quot;: &quot;http://purl.org/dc/terms/modified&quot;
-    }
-  },
-...
-  &quot;modified&quot;:
-  {
-    &quot;@value&quot;: &quot;2010-05-29T14:17:39+02:00&quot;,
-    &quot;@type&quot;: &quot;http://www.w3.org/2001/XMLSchema#dateTime&quot;
-  }
-...
-</del>
-<div class="example"><div class="example-title"><span>Example 22</span>: Expanded value with type</div><pre class="example">{
-<ins class="diff-chg">  "@context":
-  {
-    "modified":
-    {
-      "@id": "http://purl.org/dc/terms/modified"
-    }
-  },
-...
-  "modified":
-</ins>  <span class="diff">{<ins class="diff-chg">
-    "@value": "2010-05-29T14:17:39+02:00",
-    "@type": "http://www.w3.org/2001/XMLSchema#dateTime"
-  }</span>
-...
-</ins>
-}
-</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
-data
-type
-of
-a
-particular
-value,
-such
-as
-an
-integer,
-a
-floating
-point
-number,
-or
-a
-date.
-</p>
-<del class="diff-old">{
-...
-  &quot;@id&quot;: &quot;http://example.org/posts#TripToWestVirginia&quot;,
-  ,   &lt;- This is a node type
-  &quot;modified&quot;:
-  {
-    &quot;@value&quot;: &quot;2010-05-29T14:17:39+02:00&quot;,
-     &lt;- This is a value type
-  }
-...
-</del>
-<div class="example"><div class="example-title"><span>Example 23</span>: Example demonstrating the context-sensitivity for @type</div><pre class="example">{
-<ins class="diff-chg">...
-  "@id": "http://example.org/posts#TripToWestVirginia",
-</ins>  <span class="diff">"@type": "http://schema.org/BlogPosting"</span>,   &lt;- This is a node type<ins class="diff-chg">
-  "modified":
-  {
-    "@value": "2010-05-29T14:17:39+02:00",
-</ins>    <span class="diff">"@type": "http://www.w3.org/2001/XMLSchema#dateTime"</span> &lt;- This is a value type<ins class="diff-chg">
-  }
-...
-</ins>
-}
-</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
-example
-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 class="informative" id="type-coercion">
-<h3 aria-level="2" role="heading" id="h3_type-coercion">
-<span class="secno">
-6.5
-</span>
-Type
-Coercion
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<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">
-keywords
-</a>
-<code>
-@id
-</code>
-or
-<code>
-@vocab
-</code>
-may
-be
-used
-as
-value
-to
-indicate
-that
-within
-the
-body
-of
-a
-JSON-LD
-document,
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>
-value
-of
-a
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-coerced
-to
-<code>
-@id
-</code>
-or
-<code>
-@vocab
-</code>
-is
-to
-be
-interpreted
-as
-an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>.
-The
-difference
-between
-<code>
-@id
-</code>
-and
-<code>
-@vocab
-</code>
-is
-how
-values
-are
-expanded
-to
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
-absolute
-IRIs
-</a>.
-<code>
-@vocab
-</code>
-first
-tries
-to
-expand
-the
-value
-by
-interpreting
-it
-as
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>.
-If
-no
-matching
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-is
-found
-in
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>,
-it
-tries
-to
-expand
-it
-as
-<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="absolute-iri" href="#dfn-absolute-iri">
-absolute
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-if
-there's
-a
-colon
-in
-the
-value;
-otherwise,
-it
-will
-expand
-the
-value
-using
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context's
-</a>
-vocabulary
-mapping,
-if
-present,
-or
-by
-interpreting
-it
-as
-<a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">
-relative
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>.
-Values
-coerced
-to
-<code>
-@id
-</code>
-in
-contrast
-are
-expanded
-as
-<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="absolute-iri" href="#dfn-absolute-iri">
-absolute
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-if
-a
-colon
-is
-present;
-otherwise,
-they
-are
-interpreted
-as
-<a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">
-relative
-<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>
-and
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-IRIs
-</a>.
-</p>
-<del class="diff-old">{
-  &quot;@context&quot;:
-  {
-    &quot;xsd&quot;: &quot;http://www.w3.org/2001/XMLSchema#&quot;,
-    &quot;name&quot;: &quot;http://xmlns.com/foaf/0.1/name&quot;,
-    &quot;age&quot;:
-    {
-      &quot;@id&quot;: &quot;http://xmlns.com/foaf/0.1/age&quot;,
-      &quot;@type&quot;: &quot;xsd:integer&quot;
-    },
-    &quot;homepage&quot;:
-    {
-      &quot;@id&quot;: &quot;http://xmlns.com/foaf/0.1/homepage&quot;,
-      &quot;@type&quot;: &quot;@id&quot;
-    }
-  },
-  &quot;@id&quot;: &quot;http://example.com/people#john&quot;,
-  &quot;name&quot;: &quot;John Smith&quot;,
-  &quot;age&quot;: ,
-  &quot;homepage&quot;:
-  [
-    &quot;http://personal.example.org/&quot;,
-    &quot;http://work.example.com/jsmith/&quot;
-  ]
-</del>
-<div class="example"><div class="example-title"><span>Example 24</span>: Expanded term definition with types</div><pre class="example">{
-<ins class="diff-chg">  "@context":
-  {
-    "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"
-    }</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
-example
-shown
-above
-would
-generate
-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.com/people#john
-</td>
-<td>
-http://xmlns.com/foaf/0.1/name
-</td>
-<td>
-John
-Smith
-</td>
-<td>
-<ins class="diff-new">&nbsp;
-</ins>
-</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>
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-</td>
-</tr>
-<tr>
-<td>
-http://work.example.com/jsmith/
-</td>
-<td>
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-</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>
-<del class="diff-old">{
-  &quot;@context&quot;:
-  {
-    &quot;foaf&quot;: &quot;http://xmlns.com/foaf/0.1/&quot;,
-    &quot;&quot;:
-    {
-      ,
-      &quot;@type&quot;: &quot;xsd:integer&quot;
-    },
-    &quot;&quot;:
-    {
-      &quot;@type&quot;: &quot;@id&quot;
-    }
-  },
-  &quot;foaf:name&quot;: &quot;John Smith&quot;,
-  &quot;&quot;: &quot;41&quot;,
-  &quot;&quot;:
-  [
-    &quot;http://personal.example.org/&quot;,
-    &quot;http://work.example.com/jsmith/&quot;
-  ]
-</del>
-<div class="example"><div class="example-title"><span>Example 25</span>: Term definitions using compact and absolute IRIs</div><pre class="example">{
-<ins class="diff-chg">  "@context":
-  {
-    "foaf": "http://xmlns.com/foaf/0.1/",
-    "<span class="diff">foaf:age</span>":
-    {
-</ins>      <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"
-    }
-  },
-  "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>
-In
-this
-case
-the
-<code>
-@id
-</code>
-definition
-in
-the
-term
-definition
-is
-optional.
-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>
-representing
-the
-term
-will
-always
-be
-expanded
-to
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-defined
-by
-the
-<code>
-@id
-</code>
-key—regardless
-of
-whether
-a
-prefix
-is
-defined
-or
-not.
-</p>
-<p>
-Type
-coercion
-is
-always
-performed
-using
-the
-unexpanded
-value
-of
-the
-key.
-In
-the
-example
-above,
-that
-means
-that
-type
-coercion
-is
-done
-looking
-for
-<code>
-foaf:age
-</code>
-in
-the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
-active
-context
-</a>
-and
-not
-for
-the
-corresponding,
-expanded
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-<code>
-http://xmlns.com/foaf/0.1/age
-</code>.
-</p>
-<div class="issue atrisk">
-<div class="issue-title" aria-level="3" role="heading" id="h_issue_1">
-<span>
-<ins class="diff-new">Feature
-at
-Risk
-9
-</ins></span>:<ins class="diff-new">
-Confusion
-related
-to
-context-sensitivity
-of
-@type
-</ins></div><div class="atrisk"><p class="atrisk-head"><ins class="diff-new">
-Note:
-This
-feature
-is
-</ins><a href="http://www.w3.org/2005/10/Process-20051014/tr#cfi"><ins class="diff-new">
-"at
-risk"
-</ins></a><ins class="diff-new">
-and
-may
-be
-removed
-from
-this
-specification
-based
-on
-feedback.
-Please
-send
-feedback
-to
-</ins><a href="mailto:public-rdf-comments@w3.org"><ins class="diff-new">
-public-rdf-comments@w3.org
-</ins></a>.<ins class="diff-new">
-For
-the
-current
-status
-see
-</ins><a href="http://www.w3.org/2011/rdf-wg/wiki/JSON-LD_Features_at_Risk"><ins class="diff-new">
-features
-"at
-risk"
-in
-JSON-LD
-1.0
-</ins></a></p><p><ins class="diff-new">
-A
-number
-of
-JSON-LD
-document
-authors
-have
-been
-confused
-with
-the
-context
-sensitivity
-of
-@type.
-When
-used
-in
-the
-context,
-it
-means
-"coerce
-the
-string
-value
-associated
-with
-the
-term
-to
-the
-following
-datatype."
-When
-used
-in
-the
-body
-of
-a
-document
-in
-a
-JSON-LD
-object
-that
-represents
-a
-node
-in
-the
-graph,
-it
-means
-"the
-rdf:type
-of
-the
-subject
-identified
-by
-@id
-is
-the
-one
-that
-is
-the
-value
-associated
-with
-the
-@type
-keyword".
-When
-used
-in
-expanded
-literal
-form,
-it
-means
-"the
-datatype
-of
-the
-value
-associated
-with
-@value
-is
-the
-value
-associated
-with
-the
-@type
-keyword".
-This
-shifting
-of
-usage
-has
-led
-to
-confusion
-that
-may
-be
-easily
-remedied
-by
-reading
-a
-tutorial
-or
-the
-specification.
-It
-may
-also
-be
-that
-further
-modifications
-for
-declaring
-a
-datatype
-may
-be
-required,
-such
-as
-introducing
-a
-"@coerce"
-or
-"@literalType"
-keyword.
-Implementors
-are
-asked
-to
-pay
-particular
-attention
-to
-the
-feature
-and
-provide
-feedback
-on
-alternative
-ways
-to
-express
-the
-functionality
-described
-above.
-The
-feature
-may
-remain
-in
-the
-specification
-as-is,
-or
-it
-may
-be
-modified
-heavily
-after
-further
-implementation
-experience
-has
-been
-gathered.
-</ins></p></div></div>
-<div class="note">
-<div class="note-title" aria-level="3" role="heading" id="h_note_1">
-<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 class="informative" id="embedding">
-<h3 aria-level="2" role="heading" id="h3_embedding">
-<span class="secno">
-6.6
-</span>
-Embedding
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<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">  {
-...
-  &quot;name&quot;: &quot;Manu Sporny&quot;,
-  &quot;&quot;:
-  {
-    &quot;&quot;,
-    &quot;&quot;,
-  }
-...
-</del>
-  <div class="example"><div class="example-title"><span>Example 26</span>: Embedding a node object as property value of another node object</div><pre class="example">{
-<ins class="diff-chg">...
-  "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>",
-  }
-...
-</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 class="informative" id="advanced-context-usage">
-<h3 aria-level="2" role="heading" id="h3_advanced-context-usage">
-<span class="secno">
-6.7
-</span>
-Advanced
-Context
-Usage
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<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>
-<del class="diff-old">  [
-  {
-    
-    &quot;name&quot;: &quot;Manu Sporny&quot;,
-    &quot;homepage&quot;: &quot;http://manu.sporny.org/&quot;,
-    &quot;depiction&quot;: &quot;http://twitter.com/account/profile_image/manusporny&quot;
-  },
-  {
-    
-    &quot;name&quot;: &quot;The Empire State Building&quot;,
-    &quot;description&quot;: &quot;The Empire State Building is a 102-story landmark in New York City.&quot;,
-    &quot;geo&quot;: {
-      &quot;latitude&quot;: &quot;40.75&quot;,
-      &quot;longitude&quot;: &quot;73.98&quot;
-    }
-  }
-</del>
-  <div class="example"><div class="example-title"><span>Example 27</span>: Using multiple contexts</div><pre class="example">[
-<ins class="diff-chg">  {
-</ins>    <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>    <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>
-Duplicate
-context
-<a class="tref internalDFN" title="term" href="#dfn-term">
-terms
-</a>
-are
-overridden
-using
-a
-most-recently-defined-wins
-mechanism.
-</p>
-<del class="diff-old">  {
-  &quot;@context&quot;:
-  {
-    &quot;name&quot;: &quot;http://example.com/person#name,
-    &quot;details&quot;: &quot;http://example.com/person#details&quot;
-  }&quot;,
-  &quot;&quot;: &quot;Markus Lanthaler&quot;,
-  ...
-  &quot;details&quot;:
-  {
-    &quot;@context&quot;:
-    {
-      &quot;name&quot;: &quot;http://example.com/organization#name&quot;
-    },
-    &quot;&quot;: &quot;Graz University of Technology&quot;
-  }
-</del>
-  <div class="example"><div class="example-title"><span>Example 28</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
-<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>
-<del class="diff-old">  {
-  &quot;@context&quot;: [
-    &quot;http://json-ld.org/contexts/person.jsonld&quot;,
-    {
-      &quot;pic&quot;: &quot;http://xmlns.com/foaf/0.1/depiction&quot;
-    }
-  ],
-  &quot;name&quot;: &quot;Manu Sporny&quot;,
-  &quot;homepage&quot;: &quot;http://manu.sporny.org/&quot;,
-  
-</del>
-  <div class="example"><div class="example-title"><span>Example 29</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>
-}
-</pre>
-</div>
-<div class="note">
-<div class="note-title" aria-level="3" role="heading" id="h_note_2">
-<span>
-Note
-</span>
-</div>
-<p class="">
-When
-possible,
-the
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>
-definition
-should
-be
-put
-at
-the
-top
-of
-a
-JSON-LD
-document.
-This
-makes
-the
-document
-easier
-to
-read
-and
-might
-make
-streaming
-parsers
-more
-efficient.
-Documents
-that
-do
-not
-have
-the
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>
-at
-the
-top
-are
-still
-conformant
-JSON-LD.
-</p>
-</div>
-<div class="note">
-<div class="note-title" aria-level="3" role="heading" id="h_note_3">
-<span>
-Note
-</span>
-</div>
-<p class="">
-To
-avoid
-forward-compatibility
-issues,
-<a class="tref internalDFN" title="term" href="#dfn-term">
-terms
-</a>
-starting
-with
-<del class="diff-old">an
-</del>
-<ins class="diff-chg">an&nbsp;
-</ins>
-<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.
-Terms
-starting
-with
-<del class="diff-old">an
-</del>
-<ins class="diff-chg">an&nbsp;
-</ins>
-<code>
-@
-</code>
-character
-that
-are
-not
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-JSON-LD
-1.0
-keywords
-</a>
-are
-treated
-as
-any
-other
-term,
-i.e.,
-they
-are
-ignored
-unless
-mapped
-to
-an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>.
-Furthermore,
-the
-use
-of
-empty
-<a class="tref internalDFN" title="term" href="#dfn-term">
-terms
-</a>
-(
-<code>
-<del class="diff-old">&quot;&quot;
-</del>
-<ins class="diff-chg">""
-</ins>
-</code>
-)
-is
-not
-allowed
-as
-not
-all
-programming
-languages
-are
-able
-to
-handle
-empty
-JSON
-keys.
-</p>
-</div>
-</section>
-<section class="normative" id="interpreting-json-as-json-ld">
-<h3 aria-level="2" role="heading" id="h3_interpreting-json-as-json-ld">
-<span class="secno">
-6.8
-</span>
-Interpreting
-JSON
-as
-JSON-LD
-</h3>
-<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
-documents
-and
-provides
-an
-upgrade
-path
-for
-existing
-infrastructure
-without
-breaking
-existing
-clients
-that
-rely
-on
-the
-<code>
-application/json
-</code>
-media
-<del class="diff-old">type.
-</del>
-<ins class="diff-chg">type
-or
-a
-media
-type
-with
-a
-</ins><code><ins class="diff-chg">
-+json
-</ins></code><ins class="diff-chg">
-suffix
-as
-defined
-in
-[
-</ins><cite><a class="bibref" href="#bib-RFC6839"><ins class="diff-chg">
-RFC6839
-</ins></a></cite><ins class="diff-chg">
-].
-</ins>
-</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>.
-<ins class="diff-new">A
-response
-</ins><em class="rfc2119" title="MUST NOT"><ins class="diff-new">
-MUST
-NOT
-</ins></em><ins class="diff-new">
-contain
-more
-than
-one
-HTTP
-Link
-Header
-[
-</ins><cite><a class="bibref" href="#bib-RFC5988"><ins class="diff-new">
-RFC5988
-</ins></a></cite><ins class="diff-new">
-]
-using
-the
-</ins><code><ins class="diff-new">
-http://www.w3.org/ns/json-ld#context
-</ins></code><ins class="diff-new">
-link
-relation.
-</ins>
-</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
-Host: example.com
-Accept: application/ld+json,application/json,*/*;q=0.1
-
-====================================
-
-HTTP/1.0 200 OK
-...
-Content-Type: 
-
-
-{
-  &quot;name&quot;: &quot;Markus Lanthaler&quot;,
-  &quot;homepage&quot;: &quot;http://www.markus-lanthaler.com/&quot;,
-  &quot;image&quot;: &quot;http://twitter.com/account/profile_image/markuslanthaler&quot;
-</del>
-  <div class="example"><div class="example-title"><span>Example 30</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
-<ins class="diff-chg">Host: example.com
-Accept: application/ld+json,application/json,*/*;q=0.1
-====================================
-HTTP/1.1 200 OK
-...
-Content-Type: <span class="diff">application/json</span>
-</ins><span class="diff">Link: &lt;http://json-ld.org/contexts/person.jsonld&gt;; rel="http://www.w3.org/ns/json-ld#context"; type="application/ld+json"</span><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 class="informative" id="string-internationalization">
-<h3 aria-level="2" role="heading" id="h3_string-internationalization">
-<span class="secno">
-6.9
-</span>
-String
-Internationalization
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<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>
-<del class="diff-old">  {
-  &quot;@context&quot;:
-  {
-    ...
-    &quot;@language&quot;: &quot;ja&quot;
-  },
-  &quot;name&quot;: ,
-  &quot;occupation&quot;: 
-</del>
-  <div class="example"><div class="example-title"><span>Example 31</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>
-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>
-].
-The
-default
-language
-applies
-to
-all
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>
-values
-that
-are
-not
-<a href="#type-coercion">
-type
-coerced
-</a>.
-</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>
-<del class="diff-old">  {
-  &quot;@context&quot;: {
-    ...
-    &quot;@language&quot;: &quot;ja&quot;
-  },
-  &quot;name&quot;: &quot;花澄&quot;,
-  &quot;details&quot;: {
-    &quot;@context&quot;: {
-      &quot;@language&quot;: null
-    },
-    &quot;occupation&quot;: &quot;Ninja&quot;
-  }
-</del>
-  <div class="example"><div class="example-title"><span>Example 32</span>: Clearing default language</div><pre class="example">{
-<ins class="diff-chg">  "@context": {
-    ...
-    "@language": "ja"
-  },
-  "name": "花澄",
-  "details": {
-</ins><span class="diff">    "@context": {<ins class="diff-chg">
-      "@language": null
-    }</span>,
-    "occupation": "Ninja"
-  }
-</ins>
-}
-</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>
-<del class="diff-old">  {
-  &quot;@context&quot;: {
-    ...
-    &quot;ex&quot;: &quot;http://example.com/vocab/&quot;,
-    &quot;@language&quot;: &quot;ja&quot;,
-    &quot;name&quot;: { &quot;@id&quot;: &quot;ex:name&quot;,  },
-    &quot;occupation&quot;: { &quot;@id&quot;: &quot;ex:occupation&quot; },
-    &quot;occupation_en&quot;: { &quot;@id&quot;: &quot;ex:occupation&quot;,  },
-    &quot;occupation_cs&quot;: { &quot;@id&quot;: &quot;ex:occupation&quot;,  }
-  },
-  &quot;name&quot;: &quot;Yagyū Muneyoshi&quot;,
-  &quot;occupation&quot;: &quot;忍者&quot;,
-  &quot;occupation_en&quot;: &quot;Ninja&quot;,
-  &quot;occupation_cs&quot;: &quot;Nindža&quot;,
-  ...
-</del>
-  <div class="example"><div class="example-title"><span>Example 33</span>: Expanded term definition with language</div><pre class="example">{
-<ins class="diff-chg">  "@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> }
-  },
-</ins>  <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>
-<div class="note">
-<div class="note-title" aria-level="3" role="heading" id="h_note_4">
-<span>
-Note
-</span>
-</div>
-<p class="">
-Language
-associations
-are
-only
-applied
-to
-plain
-<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">
-type
-coercion
-</a>
-are
-not
-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>
-<del class="diff-old">  {
-  &quot;@context&quot;:
-  {
-    ...
-    &quot;occupation&quot;: { &quot;@id&quot;: &quot;ex:occupation&quot;,  }
-  },
-  &quot;name&quot;: &quot;Yagyū Muneyoshi&quot;,
-  &quot;occupation&quot;:
-  {
-    &quot;ja&quot;: &quot;忍者&quot;,
-    &quot;en&quot;: &quot;Ninja&quot;,
-    &quot;cs&quot;: &quot;Nindža&quot;
-  }
-  ...
-</del>
-  <div class="example"><div class="example-title"><span>Example 34</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>
-</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
-a
-<a class="tref internalDFN" title="value-object" href="#dfn-value-object">
-value
-object
-</a>:
-</p>
-<del class="diff-old">  {
-  &quot;@context&quot;: {
-    ...
-    &quot;@language&quot;: &quot;ja&quot;
-  },
-  &quot;name&quot;: &quot;花澄&quot;,
-  &quot;occupation&quot;: {
-    &quot;@value&quot;: &quot;Scientist&quot;,
-    &quot;@language&quot;: &quot;en&quot;
-  }
-</del>
-  <div class="example"><div class="example-title"><span>Example 35</span>: Overriding default language using an expanded value</div><pre class="example">{
-<ins class="diff-chg">  "@context": {
-    ...
-    "@language": "ja"
-  },
-  "name": "花澄",
-  "occupation": <span class="diff">{
-    "@value": "Scientist",
-    "@language": "en"
-  }</span>
-</ins>
-}
-</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
-a
-<a class="tref internalDFN" title="value-object" href="#dfn-value-object">
-value
-object
-</a>:
-</p>
-<del class="diff-old">  {
-  &quot;@context&quot;: {
-    ...
-    &quot;@language&quot;: &quot;ja&quot;
-  },
-  &quot;name&quot;: {
-    &quot;@value&quot;: &quot;Frank&quot;
-  },
-  &quot;occupation&quot;: {
-    &quot;@value&quot;: &quot;Ninja&quot;,
-    &quot;@language&quot;: &quot;en&quot;
-  },
-  &quot;speciality&quot;: &quot;手裏剣&quot;
-</del>
-  <div class="example"><div class="example-title"><span>Example 36</span>: Removing language information using an expanded value</div><pre class="example">{
-<ins class="diff-chg">  "@context": {
-    ...
-    "@language": "ja"
-  },
-  "name": <span class="diff">{
-    "@value": "Frank"
-  }</span>,
-  "occupation": {
-    "@value": "Ninja",
-    "@language": "en"
-  },
-  "speciality": "手裏剣"
-</ins>
-}
-</pre>
-</div>
-</section>
-<section class="informative" id="iri-expansion-within-a-context">
-<h3 aria-level="2" role="heading" id="h3_iri-expansion-within-a-context">
-<span class="secno">
-6.10
-</span>
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-Expansion
-within
-a
-Context
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<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 class="sectionRef sec-ref" href="#iris">
-section
-5.2
-IRIs
-</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">{
-  &quot;@context&quot;:
-  {
-    ,
-    &quot;name&quot;: &quot;http://xmlns.com/foaf/0.1/name&quot;,
-    &quot;age&quot;:
-    {
-      &quot;@id&quot;: &quot;http://xmlns.com/foaf/0.1/age&quot;,
-      &quot;@type&quot;: 
-    },
-    &quot;homepage&quot;:
-    {
-      &quot;@id&quot;: &quot;http://xmlns.com/foaf/0.1/homepage&quot;,
-      &quot;@type&quot;: &quot;@id&quot;
-    }
-  },
-  ...
-</del>
-<div class="example"><div class="example-title"><span>Example 37</span>: IRI expansion within a context</div><pre class="example">{
-<ins class="diff-chg">  "@context":
-  {
-</ins>    <span class="diff">"xsd": "http://www.w3.org/2001/XMLSchema#"</span>,<ins class="diff-chg">
-    "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"
-    }
-  },
-  ...
-</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">{
-  &quot;@context&quot;:
-  {
-    ,
-    &quot;xsd&quot;: &quot;http://www.w3.org/2001/XMLSchema#&quot;,
-    &quot;name&quot;: ,
-    &quot;age&quot;:
-    {
-      &quot;@id&quot;: ,
-      &quot;@type&quot;: &quot;xsd:integer&quot;
-    },
-    &quot;homepage&quot;:
-    {
-      &quot;@id&quot;: ,
-      &quot;@type&quot;: &quot;@id&quot;
-    }
-  },
-  ...
-</del>
-<div class="example"><div class="example-title"><span>Example 38</span>: Using a term to define the IRI of another term within a context</div><pre class="example">{
-<ins class="diff-chg">  "@context":
-  {
-</ins>    <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":
-    {
-      "@id": <span class="diff">"foaf:age"</span>,
-      "@type": "xsd:integer"
-    },
-    "homepage":
-    {
-      "@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">{
-  &quot;@context&quot;:
-  {
-    ,
-    &quot;xsd&quot;: &quot;http://www.w3.org/2001/XMLSchema#&quot;,
-    &quot;name&quot;: &quot;foaf:name&quot;,
-    &quot;&quot;:
-    {
-      &quot;@type&quot;: &quot;xsd:integer&quot;
-    },
-    &quot;&quot;:
-    {
-      &quot;@type&quot;: &quot;@id&quot;
-    }
-  },
-  ...
-</del>
-<div class="example"><div class="example-title"><span>Example 39</span>: Using a compact IRI as a term</div><pre class="example">{
-<ins class="diff-chg">  "@context":
-  {
-</ins>    <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>":
-    {
-      "@type": "xsd:integer"
-    },
-    "<span class="diff">foaf:homepage</span>":
-</ins>    <span class="diff">{<ins class="diff-chg">
-      "@type": "@id"
-    }</span>
-  },
-  ...
-</ins>
-}
-</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">{
-  &quot;@context&quot;:
-  {
-    &quot;foaf&quot;: &quot;http://xmlns.com/foaf/0.1/&quot;,
-    &quot;xsd&quot;: &quot;http://www.w3.org/2001/XMLSchema#&quot;,
-    &quot;name&quot;: &quot;foaf:name&quot;,
-    &quot;foaf:age&quot;:
-    {
-      &quot;@id&quot;: &quot;foaf:age&quot;,
-      &quot;@type&quot;: &quot;xsd:integer&quot;
-    },
-    &quot;&quot;:
-    {
-      &quot;@type&quot;: &quot;@id&quot;
-    }
-  },
-  ...
-</del>
-<div class="example"><div class="example-title"><span>Example 40</span>: Associating context definitions with absolute IRIs</div><pre class="example">{
-<ins class="diff-chg">  "@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"
-    }
-  },
-  ...
-</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">&quot;@type&quot;:
-&quot;@id&quot;
-</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>
-<div class="note">
-<div class="note-title" aria-level="3" role="heading" id="h_note_5">
-<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>
-<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>
-<del class="diff-old">{
-  &quot;@context&quot;:
-  {
-    &quot;term1&quot;: &quot;term2:foo&quot;,
-    &quot;term2&quot;: &quot;term1:bar&quot;
-  },
-  ...
-</del>
-<div class="example"><div class="example-title"><span>Example 41</span>: Illegal circular definition of terms within a context</div><pre class="example">{
-<ins class="diff-chg">  "@context":
-  {
-</ins>    <span class="diff">"term1": "term2:foo",<ins class="diff-chg">
-    "term2": "term1:bar"</span>
-  },
-  ...
-</ins>
-}
-</pre>
-</div>
-</section>
-<section class="informative" id="sets-and-lists">
-<h3 aria-level="2" role="heading" id="h3_sets-and-lists">
-<span class="secno">
-6.11
-</span>
-Sets
-and
-Lists
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<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">{
-...
-  &quot;@id&quot;: &quot;http://example.org/people#joebob&quot;,
-  &quot;nick&quot;: ,
-...
-</del>
-<div class="example"><div class="example-title"><span>Example 42</span>: Multiple values with no inherent order</div><pre class="example">{
-<ins class="diff-chg">...
-  "@id": "http://example.org/people#joebob",
-  "nick": <span class="diff">[ "joe", "bob", "JB" ]</span>,
-...
-</ins>
-}
-</pre>
-</div>
-<p>
-The
-example
-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>
-<del class="diff-old">{
-  &quot;@id&quot;: &quot;http://example.org/articles/8&quot;,
-  &quot;dc:title&quot;: 
-  [
-    {
-      &quot;@value&quot;: &quot;Das Kapital&quot;,
-      &quot;@language&quot;: &quot;de&quot;
-    },
-    {
-      &quot;@value&quot;: &quot;Capital&quot;,
-      &quot;@language&quot;: &quot;en&quot;
-    }
-  ]
-</del>
-<div class="example"><div class="example-title"><span>Example 43</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">
-  [
-    {
-      "@value": "Das Kapital",
-      "@language": "de"
-    },
-    {
-      "@value": "Capital",
-      "@language": "en"
-    }
-  ]</span>
-</ins>
-}
-</pre>
-</div>
-<p>
-The
-example
-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>
-<del class="diff-old">{
-...
-  &quot;@id&quot;: &quot;http://example.org/people#joebob&quot;,
-  &quot;foaf:nick&quot;:
-  {
-    &quot;@list&quot;: [ &quot;joe&quot;, &quot;bob&quot;, &quot;jaybee&quot; ]
-  },
-...
-</del>
-<div class="example"><div class="example-title"><span>Example 44</span>: An ordered collection of values in JSON-LD</div><pre class="example">{
-<ins class="diff-chg">...
-  "@id": "http://example.org/people#joebob",
-  "foaf:nick":
-</ins>  <span class="diff">{<ins class="diff-chg">
-    "@list": [ "joe", "bob", "jaybee" ]
-  }</span>,
-...
-</ins>
-}
-</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">{
-  &quot;@context&quot;:
-  {
-    ...
-    &quot;nick&quot;:
-    {
-      &quot;@id&quot;: &quot;http://xmlns.com/foaf/0.1/nick&quot;,
-      &quot;@container&quot;: &quot;@list&quot;
-    }
-  },
-...
-  &quot;@id&quot;: &quot;http://example.org/people#joebob&quot;,
-  &quot;nick&quot;: ,
-...
-</del>
-<div class="example"><div class="example-title"><span>Example 45</span>: Specifying that a collection is ordered in the context</div><pre class="example">{
-  <span class="diff">"@context":
-<ins class="diff-chg">  {
-    ...
-    "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>,
-...
-</ins>
-}
-</pre>
-</div>
-<div class="note">
-<div class="note-title" aria-level="3" role="heading" id="h_note_6">
-<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>
-<div class="issue atrisk">
-<div class="issue-title" aria-level="3" role="heading" id="h_issue_2">
-<span>
-<ins class="diff-new">Feature
-at
-Risk
-4
-</ins></span>:<ins class="diff-new">
-Lists
-of
-lists
-and
-partial
-list
-conversion
-from
-RDF
-</ins></div><div class="atrisk"><p class="atrisk-head"><ins class="diff-new">
-Note:
-This
-feature
-is
-</ins><a href="http://www.w3.org/2005/10/Process-20051014/tr#cfi"><ins class="diff-new">
-"at
-risk"
-</ins></a><ins class="diff-new">
-and
-may
-be
-removed
-from
-this
-specification
-based
-on
-feedback.
-Please
-send
-feedback
-to
-</ins><a href="mailto:public-rdf-comments@w3.org"><ins class="diff-new">
-public-rdf-comments@w3.org
-</ins></a>.<ins class="diff-new">
-For
-the
-current
-status
-see
-</ins><a href="http://www.w3.org/2011/rdf-wg/wiki/JSON-LD_Features_at_Risk"><ins class="diff-new">
-features
-"at
-risk"
-in
-JSON-LD
-1.0
-</ins></a></p><p><ins class="diff-new">
-The
-JSON-LD
-algorithms
-have
-been
-updated
-to
-support
-conversion
-of
-lists
-of
-lists
-to
-</ins><a class="tref internalDFN" title="list-object" href="#dfn-list-object"><ins class="diff-new">
-list
-objects
-</ins></a><ins class="diff-new">
-by
-preserving
-the
-blank
-node
-head
-of
-the
-inner
-list.
-Lists
-of
-lists
-can,
-however,
-not
-be
-represented
-directly
-in
-JSON-LD
-using
-the
-</ins><code><ins class="diff-new">
-@list
-</ins></code><ins class="diff-new">
-construct;
-they
-have
-to
-be
-represented
-as
-a
-set
-of
-interlinked
-node
-objects
-using
-RDF's
-rdf:first
-and
-rdf:rest
-properties.
-Implementors
-are
-asked
-to
-pay
-particular
-attention
-to
-the
-feature
-and
-provide
-feedback
-on
-lists
-of
-lists
-and
-partial
-lists.
-The
-feature
-may
-remain
-in
-the
-specification,
-or
-it
-may
-be
-removed
-after
-further
-implementation
-experience
-has
-been
-gathered.
-Similarly,
-partial
-list
-conversion
-in
-the
-RDF
-algorithms
-have
-been
-marked
-as
-a
-feature
-at
-risk
-and
-may
-be
-removed
-from
-the
-specification
-based
-on
-implementation
-feedback.
-</ins></p></div></div>
-<p>
-While
-<code>
-@list
-</code>
-is
-used
-to
-describe
-<em>
-ordered
-lists
-</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 class="sectionRef sec-ref" href="#compacted-document-form">
-section
-6.18
-<del class="diff-old">Compact
-</del>
-<ins class="diff-chg">Compacted
-</ins>
-Document
-Form
-</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>
-</section>
-<section class="informative" id="reverse-properties">
-<h3 aria-level="2" role="heading" id="h3_reverse-properties">
-<span class="secno">
-6.12
-</span>
-Reverse
-Properties
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<del class="diff-old">Feature
-at
-Risk
-2
-:
-Reverse
-properties
-Note:
-This
-feature
-is
-&quot;at
-risk&quot;
-and
-may
-be
-removed
-from
-this
-specification
-based
-on
-feedback.
-Please
-send
-feedback
-to
-public-rdf-comments@w3.org
-.
-For
-the
-current
-status
-see
-features
-&quot;at
-risk&quot;
-in
-JSON-LD
-1.0
-Reverse
-properties
-might
-be
-removed
-from
-JSON-LD
-1.0
-if
-implementation
-experience
-reveals
-problems
-with
-supporting
-this
-feature.
-</del>
-<p>
-JSON-LD
-serializes
-directed
-<a class="tref internalDFN" title="graph" href="#dfn-graph">
-graphs
-</a>.
-That
-means
-that
-every
-<a class="tref internalDFN" title="property" href="#dfn-property">
-property
-</a>
-points
-from
-a
-<a class="tref internalDFN" title="node" href="#dfn-node">
-node
-</a>
-to
-another
-<a class="tref internalDFN" title="node" href="#dfn-node">
-node
-</a>
-or
-<a class="tref internalDFN" title="json-ld-value" href="#dfn-json-ld-value">
-value
-</a>.
-However,
-in
-some
-cases,
-it
-is
-desirable
-to
-serialize
-in
-the
-reverse
-direction.
-Consider
-for
-example
-the
-case
-where
-a
-person
-and
-its
-children
-should
-be
-described
-in
-a
-document.
-If
-the
-used
-vocabulary
-does
-not
-provide
-a
-<em>
-children
-</em>
-<a class="tref internalDFN" title="property" href="#dfn-property">
-property
-</a>
-but
-just
-a
-<em>
-parent
-</em>
-<a class="tref internalDFN" title="property" href="#dfn-property">
-property
-</a>,
-every
-<a class="tref internalDFN" title="node" href="#dfn-node">
-node
-</a>
-representing
-a
-child
-would
-have
-to
-be
-expressed
-with
-a
-<a class="tref internalDFN" title="property" href="#dfn-property">
-property
-</a>
-pointing
-to
-the
-parent
-as
-in
-the
-following
-example.
-</p>
-<del class="diff-old">  [
-  {
-    ,
-    &quot;http://example.com/vocab#name&quot;: &quot;Homer&quot;
-  },
-  {
-    &quot;@id&quot;: &quot;#bart&quot;,
-    &quot;http://example.com/vocab#name&quot;: &quot;Bart&quot;,
-    
-  },
-  {
-    &quot;@id&quot;: &quot;#lisa&quot;,
-    &quot;http://example.com/vocab#name&quot;: &quot;Lisa&quot;,
-    
-  }
-</del>
-  <div class="example"><div class="example-title"><span>Example 46</span>: A document with children linking to their parent</div><pre class="example">[
-<ins class="diff-chg">  {
-</ins>    <span class="diff">"@id": "#homer"</span>,<ins class="diff-chg">
-    "http://example.com/vocab#name": "Homer"
-  },
-  {
-    "@id": "#bart",
-    "http://example.com/vocab#name": "Bart",
-</ins>    <span class="diff">"http://example.com/vocab#parent": { "@id": "#homer" }</span><ins class="diff-chg">
-  },
-  {
-    "@id": "#lisa",
-    "http://example.com/vocab#name": "Lisa",
-</ins>    <span class="diff">"http://example.com/vocab#parent": { "@id": "#homer" }</span><ins class="diff-chg">
-  }
-</ins>
-]
-</pre>
-</div>
-<p>
-Expressing
-such
-data
-is
-much
-simpler
-by
-using
-JSON-LD's
-<code>
-@reverse
-</code>
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keyword
-</a>:
-</p>
-<del class="diff-old">  {
-  &quot;@id&quot;: &quot;#homer&quot;,
-  &quot;http://example.com/vocab#name&quot;: &quot;Homer&quot;,
-  : {
-    : [
-      {
-        &quot;@id&quot;: &quot;#bart&quot;,
-        &quot;http://example.com/vocab#name&quot;: &quot;Bart&quot;
-      },
-      {
-        &quot;@id&quot;: &quot;#lisa&quot;,
-        &quot;http://example.com/vocab#name&quot;: &quot;Lisa&quot;
-      }
-    ]
-  }
-</del>
-  <div class="example"><div class="example-title"><span>Example 47</span>: A person and its children using a reverse property</div><pre class="example">{
-<ins class="diff-chg">  "@id": "#homer",
-  "http://example.com/vocab#name": "Homer",
-</ins>  <span class="diff">"@reverse"</span>: {    <span class="diff">"http://example.com/vocab#parent"</span>: [<ins class="diff-chg">
-      {
-        "@id": "#bart",
-        "http://example.com/vocab#name": "Bart"
-      },
-      {
-        "@id": "#lisa",
-        "http://example.com/vocab#name": "Lisa"
-      }
-    ]
-  }
-</ins>
-}
-</pre>
-</div>
-<p>
-The
-<code>
-@reverse
-</code>
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keyword
-</a>
-can
-also
-be
-used
-in
-<a class="tref internalDFN" title="expanded-term-definition" href="#dfn-expanded-term-definition">
-expanded
-term
-definitions
-</a>
-to
-create
-reverse
-properties
-as
-shown
-in
-the
-following
-example:
-</p>
-<del class="diff-old">  {
-  &quot;@context&quot;: {
-    &quot;name&quot;: &quot;http://example.com/vocab#name&quot;,
-    
-  },
-  &quot;@id&quot;: &quot;#homer&quot;,
-  &quot;name&quot;: &quot;Homer&quot;,
-  : [
-    {
-      &quot;@id&quot;: &quot;#bart&quot;,
-      &quot;name&quot;: &quot;Bart&quot;
-    },
-    {
-      &quot;@id&quot;: &quot;#lisa&quot;,
-      &quot;name&quot;: &quot;Lisa&quot;
-    }
-  ]
-</del>
-  <div class="example"><div class="example-title"><span>Example 48</span>: Using @reverse to define reverse properties</div><pre class="example">{
-<ins class="diff-chg">  "@context": {
-    "name": "http://example.com/vocab#name",
-</ins>    <span class="diff">"children": { "@reverse": "http://example.com/vocab#parent" }</span><ins class="diff-chg">
-  },
-  "@id": "#homer",
-  "name": "Homer",
-</ins>  <span class="diff">"children"</span>: [<ins class="diff-chg">
-    {
-      "@id": "#bart",
-      "name": "Bart"
-    },
-    {
-      "@id": "#lisa",
-      "name": "Lisa"
-    }
-  ]
-</ins>
-}
-</pre>
-</div>
-</section>
-<section class="informative" id="named-graphs">
-<h3 aria-level="2" role="heading" id="h3_named-graphs">
-<span class="secno">
-6.13
-</span>
-Named
-Graphs
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-At
-times,
-it
-is
-necessary
-to
-make
-statements
-about
-a
-<del class="diff-old">JSON-LD
-</del>
-<a class="tref internalDFN" title="graph" href="#dfn-graph">
-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">  {
-  &quot;@context&quot;: {
-    &quot;generatedAt&quot;: {
-      &quot;@id&quot;: &quot;http://www.w3.org/ns/prov#generatedAtTime&quot;,
-      &quot;@type&quot;: &quot;http://www.w3.org/2001/XMLSchema#date&quot;
-    },
-    &quot;Person&quot;: &quot;http://xmlns.com/foaf/0.1/Person&quot;,
-    &quot;name&quot;: &quot;http://xmlns.com/foaf/0.1/name&quot;,
-    &quot;knows&quot;: &quot;http://xmlns.com/foaf/0.1/knows&quot;
-  },
-  &quot;@id&quot;: &quot;http://example.org/graphs/73&quot;,
-  &quot;generatedAt&quot;: &quot;2012-04-09&quot;,
-  &quot;@graph&quot;:
-  [
-    {
-      &quot;@id&quot;: &quot;http://manu.sporny.org/i/public&quot;,
-      &quot;@type&quot;: &quot;Person&quot;,
-      &quot;name&quot;: &quot;Manu Sporny&quot;,
-      &quot;knows&quot;: &quot;http://greggkellogg.net/foaf#me&quot;
-    },
-    {
-      &quot;@id&quot;: &quot;http://greggkellogg.net/foaf#me&quot;,
-      &quot;@type&quot;: &quot;Person&quot;,
-      &quot;name&quot;: &quot;Gregg Kellogg&quot;,
-      &quot;knows&quot;: &quot;http://manu.sporny.org/i/public&quot;
-    }
-  ]
-</del>
-  <div class="example"><div class="example-title"><span>Example 49</span>: Identifying and making statements about a graph</div><pre class="example">{
-<ins class="diff-chg">  "@context": {
-    "generatedAt": {
-      "@id": "http://www.w3.org/ns/prov#generatedAtTime",
-      "@type": "http://www.w3.org/2001/XMLSchema#date"
-    },
-    "Person": "http://xmlns.com/foaf/0.1/Person",
-    "name": "http://xmlns.com/foaf/0.1/name",
-    "knows": "http://xmlns.com/foaf/0.1/knows"
-  },
-</ins>  <span class="diff">"@id": "http://example.org/graphs/73",<ins class="diff-chg">
-  "generatedAt": "2012-04-09",
-  "@graph":</span>
-  [
-    {
-      "@id": "http://manu.sporny.org/about#manu",
-      "@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/about#manu"
-    }
-  ]
-</ins>
-}
-</pre>
-</div>
-<p>
-The
-example
-above
-expresses
-a
-<a class="tref internalDFN" title="named-graph" href="#dfn-named-graph">
-named
-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
-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>
-<ins class="diff-new">&nbsp;
-</ins>
-</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>
-<del class="diff-old">http://manu.sporny.org/i/public
-</del>
-<ins class="diff-chg">http://manu.sporny.org/about#manu
-</ins>
-</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>
-<del class="diff-old">http://manu.sporny.org/i/public
-</del>
-<ins class="diff-chg">http://manu.sporny.org/about#manu
-</ins>
-</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>
-<del class="diff-old">http://manu.sporny.org/i/public
-</del>
-<ins class="diff-chg">http://manu.sporny.org/about#manu
-</ins>
-</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>
-<del class="diff-old">http://manu.sporny.org/i/public
-</del>
-<ins class="diff-chg">http://manu.sporny.org/about#manu
-</ins>
-</td>
-<td>
-</td>
-</tr>
-</tbody>
-</table>
-<p>
-When
-a
-JSON-LD
-document's
-top-level
-structure
-is
-an
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-object
-</a>
-that
-contains
-no
-other
-<a class="tref internalDFN" title="property" href="#dfn-property">
-properties
-</a>
-than
-<code>
-@graph
-</code>
-and
-optionally
-<code>
-@context
-</code>
-(properties
-that
-are
-not
-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>
-are
-ignored),
-<code>
-@graph
-</code>
-is
-considered
-to
-express
-the
-otherwise
-implicit
-<a class="tref internalDFN" title="default-graph" href="#dfn-default-graph">
-default
-graph
-</a>.
-This
-mechanism
-can
-be
-useful
-when
-a
-number
-of
-<a class="tref internalDFN" title="node" href="#dfn-node">
-nodes
-</a>
-exist
-at
-the
-document's
-top
-level
-that
-share
-the
-same
-<a class="tref internalDFN" title="context" href="#dfn-context">
-context
-</a>,
-which
-is,
-e.g.,
-the
-case
-when
-a
-document
-is
-<a href="#flattened-document-form">
-flattened
-</a>.
-The
-<code>
-@graph
-</code>
-keyword
-collects
-such
-nodes
-in
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-and
-allows
-the
-use
-of
-a
-shared
-context.
-</p>
-<del class="diff-old">  {
-  &quot;@context&quot;: ...,
-  &quot;&quot;:
-  [
-    {
-      &quot;@id&quot;: &quot;http://manu.sporny.org/i/public&quot;,
-      &quot;@type&quot;: &quot;foaf:Person&quot;,
-      &quot;name&quot;: &quot;Manu Sporny&quot;,
-      &quot;knows&quot;: &quot;http://greggkellogg.net/foaf#me&quot;
-    },
-    {
-      &quot;@id&quot;: &quot;http://greggkellogg.net/foaf#me&quot;,
-      &quot;@type&quot;: &quot;foaf:Person&quot;,
-      &quot;name&quot;: &quot;Gregg Kellogg&quot;,
-      &quot;knows&quot;: &quot;http://manu.sporny.org/i/public&quot;
-    }
-  ]
-</del>
-  <div class="example"><div class="example-title"><span>Example 50</span>: Using @graph to explicitly express the default graph</div><pre class="example">{
-<ins class="diff-chg">  "@context": ...,
-  "<span class="diff">@graph</span>":
-  [
-    {
-      "@id": "http://manu.sporny.org/about#manu",
-      "@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/about#manu"
-    }
-  ]
-</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.
-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">  [
-  {
-    
-    &quot;@id&quot;: &quot;http://manu.sporny.org/i/public&quot;,
-    &quot;@type&quot;: &quot;foaf:Person&quot;,
-    &quot;name&quot;: &quot;Manu Sporny&quot;,
-    &quot;knows&quot;: &quot;http://greggkellogg.net/foaf#me&quot;
-  },
-  {
-    
-    &quot;@id&quot;: &quot;http://greggkellogg.net/foaf#me&quot;,
-    &quot;@type&quot;: &quot;foaf:Person&quot;,
-    &quot;name&quot;: &quot;Gregg Kellogg&quot;,
-    &quot;knows&quot;: &quot;http://manu.sporny.org/i/public&quot;
-  }
-</del>
-  <div class="example"><div class="example-title"><span>Example 51</span>: Context needs to be duplicated if @graph is not used</div><pre class="example">[
-<ins class="diff-chg">  {
-</ins>    <span class="diff">"@context": ...,</span><ins class="diff-chg">
-    "@id": "http://manu.sporny.org/about#manu",
-    "@type": "foaf:Person",
-    "name": "Manu Sporny",
-    "knows": "http://greggkellogg.net/foaf#me"
-  },
-  {
-</ins>    <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/about#manu"
-  }
-</ins>
-]
-</pre>
-</div>
-</section>
-<section class="informative" id="identifying-blank-nodes">
-<h3 aria-level="2" role="heading" id="h3_identifying-blank-nodes">
-<span class="secno">
-6.14
-</span>
-Identifying
-Blank
-Nodes
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<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>
-with
-an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>.
-This
-type
-of
-node
-is
-called
-a
-<a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">
-blank
-node
-</a>.
-JSON-LD
-does
-not
-require
-all
-nodes
-to
-be
-identified
-using
-<code>
-@id
-</code>.
-However,
-some
-graph
-topologies
-may
-require
-identifiers
-to
-be
-serializable.
-Graphs
-containing
-loops,
-e.g.,
-cannot
-be
-serialized
-using
-embedding
-alone,
-<code>
-@id
-</code>
-must
-be
-used
-to
-connect
-the
-nodes.
-In
-these
-situations,
-one
-can
-use
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifiers
-</a>,
-which
-look
-like
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-IRIs
-</a>
-using
-an
-underscore
-(
-<code>
-_
-</code>
-)
-as
-scheme.
-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">  {
-   ...
-   &quot;@id&quot;: &quot;&quot;,
-   &quot;name&quot;: &quot;Secret Agent 1&quot;,
-   &quot;knows&quot;:
-     {
-       &quot;name&quot;: &quot;Secret Agent 2&quot;,
-       &quot;knows&quot;: { &quot;@id&quot;: &quot;&quot; }
-     }
-</del>
-  <div class="example"><div class="example-title"><span>Example 52</span>: Specifying a local blank node identifier</div><pre class="example">{
-<ins class="diff-chg">   ...
-   "@id": "<span class="diff">_:n1</span>",
-   "name": "Secret Agent 1",
-   "knows":
-     {
-       "name": "Secret Agent 2",
-       "knows": { "@id": "<span class="diff">_:n1</span>" }
-     }
-</ins>
-}
-</pre>
-</div>
-<p>
-The
-example
-above
-contains
-information
-about
-to
-<del class="diff-old">secrete
-</del>
-<ins class="diff-chg">secret
-</ins>
-agents
-that
-cannot
-be
-identified
-with
-an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>.
-While
-expressing
-that
-<em>
-<del class="diff-old">agent
-1
-</del>
-<ins class="diff-chg">agent&nbsp;1
-</ins>
-</em>
-knows
-<em>
-<del class="diff-old">agent
-2
-</del>
-<ins class="diff-chg">agent&nbsp;2
-</ins>
-</em>
-is
-possible
-without
-using
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifiers
-</a>,
-it
-is
-necessary
-assign
-<em>
-<del class="diff-old">agent
-1
-</del>
-<ins class="diff-chg">agent&nbsp;1
-</ins>
-</em>
-an
-identifier
-so
-that
-it
-can
-be
-referenced
-from
-<em>
-<del class="diff-old">agent
-2
-</del>
-<ins class="diff-chg">agent&nbsp;2
-</ins>
-</em>.
-</p>
-<p>
-It
-is
-worth
-nothing
-that
-blank
-node
-identifiers
-may
-be
-relabeled
-during
-processing.
-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 class="informative" id="aliasing-keywords">
-<h3 aria-level="2" role="heading" id="h3_aliasing-keywords">
-<span class="secno">
-6.15
-</span>
-Aliasing
-Keywords
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<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">  {
-  &quot;@context&quot;:
-  {
-     ,
-     ,
-     &quot;name&quot;: &quot;http://xmlns.com/foaf/0.1/name&quot;
-  },
-  &quot;&quot;: &quot;http://example.com/about#gregg&quot;,
-  &quot;&quot;: &quot;http://xmlns.com/foaf/0.1/Person&quot;,
-  &quot;name&quot;: &quot;Gregg Kellogg&quot;
-</del>
-  <div class="example"><div class="example-title"><span>Example 53</span>: Aliasing keywords</div><pre class="example">{
-<ins class="diff-chg">  "@context":
-  {
-</ins>     <span class="diff">"url": "@id"</span>,     <span class="diff">"a": "@type"</span>,<ins class="diff-chg">
-     "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"
-</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>
-<p>
-Since
-keywords
-cannot
-be
-redefined,
-they
-can
-also
-not
-be
-aliased
-to
-other
-keywords.
-</p>
-</section>
-<section class="informative" id="data-indexing">
-<h3 aria-level="2" role="heading" id="h3_data-indexing">
-<span class="secno">
-6.16
-</span>
-Data
-Indexing
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<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
-simple
-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>
-<del class="diff-old">  {
-  &quot;@context&quot;:
-  {
-     &quot;schema&quot;: &quot;http://schema.org/&quot;,
-     &quot;name&quot;: &quot;schema:name&quot;,
-     &quot;body&quot;: &quot;schema:articleBody&quot;,
-     &quot;words&quot;: &quot;schema:wordCount&quot;,
-     &quot;post&quot;: {
-       &quot;@id&quot;: &quot;schema:blogPost&quot;,
-       
-     }
-  },
-  &quot;@id&quot;: &quot;http://example.com/&quot;,
-  &quot;@type&quot;: &quot;schema:Blog&quot;,
-  &quot;name&quot;: &quot;World Financial News&quot;,
-  &quot;post&quot;: {
-     &quot;en&quot;: {
-       &quot;@id&quot;: &quot;http://example.com/posts/1/en&quot;,
-       &quot;body&quot;: &quot;World commodities were up today with heavy trading of crude oil...&quot;,
-       &quot;words&quot;: 1539
-     },
-     &quot;de&quot;: {
-       &quot;@id&quot;: &quot;http://example.com/posts/1/de&quot;,
-       &quot;body&quot;: &quot;Die Werte an Warenbörsen stiegen im Sog eines starken Handels von Rohöl...&quot;,
-       &quot;words&quot;: 1204
-     }
-  }
-</del>
-  <div class="example"><div class="example-title"><span>Example 54</span>: Indexing data in JSON-LD</div><pre class="example">{
-<ins class="diff-chg">  "@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-chg">
-     }
-  },
-  "@id": "http://example.com/",
-  "@type": "schema:Blog",
-  "name": "World Financial News",
-</ins>  <span class="diff">"post": {<ins class="diff-chg">
-     "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>
-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 class="sectionRef sec-ref" href="#compacted-document-form">
-section
-6.18
-<del class="diff-old">Compact
-</del>
-<ins class="diff-chg">Compacted
-</ins>
-Document
-Form
-</a>
-and
-<a class="sectionRef sec-ref" href="#expanded-document-form">
-section
-6.17
-Expanded
-Document
-Form
-</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 class="informative" id="expanded-document-form">
-<h3 aria-level="2" role="heading" id="h3_expanded-document-form">
-<span class="secno">
-6.17
-</span>
-Expanded
-Document
-Form
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-The
-JSON-LD
-Processing
-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>
-<del class="diff-old">  {
-   &quot;@context&quot;:
-   {
-      &quot;name&quot;: &quot;http://xmlns.com/foaf/0.1/name&quot;,
-      &quot;homepage&quot;: {
-        &quot;@id&quot;: &quot;http://xmlns.com/foaf/0.1/homepage&quot;,
-        &quot;@type&quot;: &quot;@id&quot;
-      }
-   },
-   &quot;name&quot;: &quot;Manu Sporny&quot;,
-   &quot;homepage&quot;: &quot;http://manu.sporny.org/&quot;
-</del>
-  <div class="example"><div class="example-title"><span>Example 55</span>: Sample JSON-LD document</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"
-      }
-   },
-   "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">  [
-  {
-    &quot;http://xmlns.com/foaf/0.1/name&quot;: [
-      { &quot;@value&quot;: &quot;Manu Sporny&quot; }
-    ],
-    &quot;http://xmlns.com/foaf/0.1/homepage&quot;: [
-      { &quot;@id&quot;: &quot;http://manu.sporny.org/&quot; }
-    ]
-  }
-</del>
-  <div class="example"><div class="example-title"><span>Example 56</span>: Expanded form for the previous example</div><pre class="example">[
-<ins class="diff-chg">  {
-    "http://xmlns.com/foaf/0.1/name": [
-      { "@value": "Manu Sporny" }
-    ],
-    "http://xmlns.com/foaf/0.1/homepage": [
-      { "@id": "http://manu.sporny.org/" }
-    ]
-  }
-</ins>
-]
-</pre>
-</div>
-<p>
-<a href="#application-ld-json">
-<ins class="diff-chg">JSON-LD's
-media
-type
-</ins></a><ins class="diff-chg">
-defines
-a
-</ins><code><ins class="diff-chg">
-profile
-</ins></code><ins class="diff-chg">
-parameter
-which
-can
-be
-used
-to
-signal
-or
-request
-expanded
-document
-form.
-The
-profile
-URI
-identifying
-expanded
-document
-form
-is
-</ins><code><ins class="diff-chg">
-http://www.w3.org/ns/json-ld#expanded
-</ins></code>.</p></section><section class="informative" id="compacted-document-form"><h3 aria-level="2" role="heading" id="h3_compacted-document-form">
-<span class="secno">
-6.18
-</span>
-<del class="diff-old">Compact
-</del>
-<ins class="diff-chg">Compacted
-</ins>
-Document
-Form
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-The
-JSON-LD
-Processing
-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
-applying
-a
-developer-supplied
-context
-to
-shorten
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-IRIs
-</a>
-to
-<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>
-and
-JSON-LD
-values
-expressed
-in
-expanded
-form
-to
-simple
-values
-such
-as
-<a class="tref internalDFN" title="string" href="#dfn-string">
-strings
-</a>
-or
-<a class="tref internalDFN" title="number" href="#dfn-number">
-numbers
-</a>.
-Often
-this
-makes
-it
-simpler
-to
-work
-with
-document
-as
-the
-data
-is
-expressed
-in
-application-specific
-terms.
-Compacted
-documents
-are
-also
-typically
-easier
-to
-read
-for
-humans.
-</p>
-<p>
-For
-example,
-assume
-the
-following
-JSON-LD
-input
-document:
-</p>
-<del class="diff-old">  [
-  {
-    &quot;http://xmlns.com/foaf/0.1/name&quot;: [ &quot;Manu Sporny&quot; ],
-    &quot;http://xmlns.com/foaf/0.1/homepage&quot;: [
-      {
-       &quot;@id&quot;: &quot;http://manu.sporny.org/&quot;
-      }
-    ]
-  }
-</del>
-  <div class="example"><div class="example-title"><span>Example 57</span>: Sample expanded JSON-LD document</div><pre class="example">[
-<ins class="diff-chg">  {
-    "http://xmlns.com/foaf/0.1/name": [ "Manu Sporny" ],
-    "http://xmlns.com/foaf/0.1/homepage": [
-      {
-       "@id": "http://manu.sporny.org/"
-      }
-    ]
-  }
-</ins>
-]
-</pre>
-</div>
-<p>
-Additionally,
-assume
-the
-following
-developer-supplied
-JSON-LD
-context:
-</p>
-<del class="diff-old">  {
-  &quot;@context&quot;: {
-    &quot;name&quot;: &quot;http://xmlns.com/foaf/0.1/name&quot;,
-    &quot;homepage&quot;: {
-      &quot;@id&quot;: &quot;http://xmlns.com/foaf/0.1/homepage&quot;,
-      &quot;@type&quot;: &quot;@id&quot;
-    }
-  }
-</del>
-  <div class="example"><div class="example-title"><span>Example 58</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">  {
-  &quot;@context&quot;: {
-    &quot;name&quot;: &quot;http://xmlns.com/foaf/0.1/name&quot;,
-    &quot;homepage&quot;: {
-      &quot;@id&quot;: &quot;http://xmlns.com/foaf/0.1/homepage&quot;,
-      &quot;@type&quot;: &quot;@id&quot;
-    }
-  },
-  &quot;name&quot;: &quot;Manu Sporny&quot;,
-  &quot;homepage&quot;: &quot;http://manu.sporny.org/&quot;
-</del>
-  <div class="example"><div class="example-title"><span>Example 59</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"
-    }
-  },
-  "name": "Manu Sporny",
-  "homepage": "http://manu.sporny.org/"
-</ins>
-}
-</pre>
-</div>
-<p>
-<a href="#application-ld-json">
-<ins class="diff-chg">JSON-LD's
-media
-type
-</ins></a><ins class="diff-chg">
-defines
-a
-</ins><code><ins class="diff-chg">
-profile
-</ins></code><ins class="diff-chg">
-parameter
-which
-can
-be
-used
-to
-signal
-or
-request
-compacted
-document
-form.
-The
-profile
-URI
-identifying
-compacted
-document
-form
-is
-</ins><code><ins class="diff-chg">
-http://www.w3.org/ns/json-ld#compacted
-</ins></code>.</p></section><section class="informative" id="flattened-document-form"><h3 aria-level="2" role="heading" id="h3_flattened-document-form">
-<span class="secno">
-6.19
-</span>
-Flattened
-Document
-Form
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-The
-JSON-LD
-Processing
-Algorithms
-and
-API
-specification
-[
-<cite>
-<a class="bibref" href="#bib-JSON-LD-API">
-JSON-LD-API
-</a>
-</cite>
-]
-defines
-a
-method
-for
-<em>
-flattening
-</em>
-a
-JSON-LD
-document.
-Flattening
-collects
-all
-properties
-of
-a
-<a class="tref internalDFN" title="node" href="#dfn-node">
-node
-</a>
-in
-a
-single
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-and
-labels
-all
-<a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">
-blank
-nodes
-</a>
-with
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifiers
-</a>.
-This
-ensures
-a
-shape
-of
-the
-data
-and
-consequently
-may
-drastically
-simplify
-the
-code
-required
-to
-process
-JSON-LD
-in
-certain
-applications.
-</p>
-<p>
-For
-example,
-assume
-the
-following
-JSON-LD
-input
-document:
-</p>
-<del class="diff-old">  {
-  &quot;@context&quot;: {
-    &quot;name&quot;: &quot;http://xmlns.com/foaf/0.1/name&quot;,
-    &quot;knows&quot;: &quot;http://xmlns.com/foaf/0.1/knows&quot;
-  },
-  &quot;@id&quot;: &quot;http://me.markus-lanthaler.com/&quot;,
-  &quot;name&quot;: &quot;Markus Lanthaler&quot;,
-  &quot;knows&quot;: [
-    {
-      &quot;@id&quot;: &quot;http://manu.sporny.org/&quot;,
-      &quot;name&quot;: &quot;Manu Sporny&quot;
-    },
-    {
-      &quot;name&quot;: &quot;Dave Longley&quot;
-    }
-  ]
-</del>
-  <div class="example"><div class="example-title"><span>Example 60</span>: Sample JSON-LD document</div><pre class="example">{
-<ins class="diff-chg">  "@context": {
-    "name": "http://xmlns.com/foaf/0.1/name",
-    "knows": "http://xmlns.com/foaf/0.1/knows"
-  },
-  "@id": "http://me.markus-lanthaler.com/",
-  "name": "Markus Lanthaler",
-  "knows": [
-    {
-      "@id": "http://manu.sporny.org/about#manu",
-      "name": "Manu Sporny"
-    },
-    {
-      "name": "Dave Longley"
-    }
-  ]
-</ins>
-}
-</pre>
-</div>
-<p>
-Running
-the
-JSON-LD
-Flattening
-algorithm
-against
-the
-JSON-LD
-input
-document
-in
-the
-example
-above
-and
-using
-the
-same
-context
-would
-result
-in
-the
-following
-output:
-</p>
-<del class="diff-old">  {
-  &quot;@context&quot;: {
-    &quot;name&quot;: &quot;http://xmlns.com/foaf/0.1/name&quot;,
-    &quot;knows&quot;: &quot;http://xmlns.com/foaf/0.1/knows&quot;
-  },
-  &quot;@graph&quot;: [
-    {
-      &quot;@id&quot;: &quot;_:b0&quot;,
-      &quot;name&quot;: &quot;Dave Longley&quot;
-    },
-    {
-      &quot;@id&quot;: &quot;http://manu.sporny.org/&quot;,
-      &quot;name&quot;: &quot;Manu Sporny&quot;
-    },
-    {
-      &quot;@id&quot;: &quot;http://me.markus-lanthaler.com/&quot;,
-      &quot;name&quot;: &quot;Markus Lanthaler&quot;,
-      &quot;knows&quot;: [
-        { &quot;@id&quot;: &quot;http://manu.sporny.org/&quot; },
-        { &quot;@id&quot;: &quot;_:b0&quot; }
-      ]
-    }
-  ]
-</del>
-  <div class="example"><div class="example-title"><span>Example 61</span>: Flattened and compacted form for the previous example</div><pre class="example">{
-<ins class="diff-chg">  "@context": {
-    "name": "http://xmlns.com/foaf/0.1/name",
-    "knows": "http://xmlns.com/foaf/0.1/knows"
-  },
-  "@graph": [
-    {
-      "@id": "_:b0",
-      "name": "Dave Longley"
-    },
-    {
-      "@id": "http://manu.sporny.org/about#manu",
-      "name": "Manu Sporny"
-    },
-    {
-      "@id": "http://me.markus-lanthaler.com/",
-      "name": "Markus Lanthaler",
-      "knows": [
-        { "@id": "http://manu.sporny.org/about#manu" },
-        { "@id": "_:b0" }
-      ]
-    }
-  ]
-</ins>
-}
-</pre>
-</div>
-<p>
-<a href="#application-ld-json">
-<ins class="diff-chg">JSON-LD's
-media
-type
-</ins></a><ins class="diff-chg">
-defines
-a
-</ins><code><ins class="diff-chg">
-profile
-</ins></code><ins class="diff-chg">
-parameter
-which
-can
-be
-used
-to
-signal
-or
-request
-flattened
-document
-form.
-The
-profile
-URI
-identifying
-flattened
-document
-form
-is
-</ins><code><ins class="diff-chg">
-http://www.w3.org/ns/json-ld#flattened
-</ins></code>.<ins class="diff-chg">
-It
-can
-be
-combined
-with
-the
-profile
-URI
-identifying
-</ins><a href="#expanded-document-form"><ins class="diff-chg">
-expanded
-document
-form
-</ins></a><ins class="diff-chg">
-or
-</ins><a href="#compacted-document-form"><ins class="diff-chg">
-compacted
-document
-from
-</ins></a>.</p></section><section class="informative" id="embedding-json-ld-in-html-documents"><h3 aria-level="2" role="heading" id="h3_embedding-json-ld-in-html-documents">
-<span class="secno">
-6.20
-</span>
-Embedding
-JSON-LD
-in
-HTML
-Documents
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-HTML
-script
-tags
-can
-be
-used
-to
-embed
-blocks
-of
-data
-in
-documents.
-This
-way,
-JSON-LD
-content
-can
-be
-easily
-embedded
-in
-HTML
-by
-placing
-it
-in
-a
-script
-element
-with
-the
-<code>
-type
-</code>
-attribute
-set
-to
-<code>
-application/ld+json
-</code>.
-</p>
-<del class="diff-old">  
-{
-  &quot;@context&quot;: &quot;http://json-ld.org/contexts/person.jsonld&quot;,
-  &quot;@id&quot;: &quot;http://dbpedia.org/resource/John_Lennon&quot;,
-  &quot;name&quot;: &quot;John Lennon&quot;,
-  &quot;born&quot;: &quot;1940-10-09&quot;,
-  &quot;spouse&quot;: &quot;http://dbpedia.org/resource/Cynthia_Lennon&quot;
-}
-</del>
-  <div class="example"><div class="example-title"><span>Example 62</span>: Embedding JSON-LD in HTML</div><pre class="example"><span class="diff">&lt;script type="application/ld+json"&gt;</span>
-<ins class="diff-chg">{
-  "@context": "http://json-ld.org/contexts/person.jsonld",
-  "@id": "http://dbpedia.org/resource/John_Lennon",
-  "name": "John Lennon",
-  "born": "1940-10-09",
-  "spouse": "http://dbpedia.org/resource/Cynthia_Lennon"
-}
-</ins>
-<span class="diff">
-&lt;/script&gt;
-</span>
-</pre>
-</div>
-<p>
-Depending
-on
-how
-the
-HTML
-document
-is
-served,
-certain
-strings
-may
-need
-to
-be
-escaped.
-</p>
-<p>
-Defining
-how
-such
-data
-may
-be
-used
-is
-beyond
-the
-scope
-of
-this
-specification.
-The
-embedded
-JSON-LD
-document
-might
-be
-extracted
-as
-is
-or,
-e.g.,
-be
-<del class="diff-old">converted
-to
-</del>
-<ins class="diff-chg">interpreted
-as
-</ins>
-RDF.
-</p>
-<p>
-If
-JSON-LD
-content
-is
-extracted
-as
-RDF
-[
-<cite>
-<a class="bibref" href="#bib-RDF11-CONCEPTS">
-RDF11-CONCEPTS
-</a>
-</cite>
-],
-it
-should
-be
-expanded
-into
-an
-<a class="tref externalDFN" title="rdf-dataset" href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-dataset">
-RDF
-<del class="diff-old">dataset
-</del>
-<ins class="diff-chg">Dataset
-</ins>
-</a>
-using
-the
-<cite>
-<del class="diff-old">Convert
-</del>
-<a href="http://www.w3.org/TR/2013/CR-json-ld-api-20130822/#deserialize-json-ld-to-rdf-algorithm">
-<ins class="diff-chg">Deserialize
-JSON-LD
-</ins>
-to
-RDF
-Algorithm
-</a>
-</cite>
-[
-<cite>
-<a class="bibref" href="#bib-JSON-LD-API">
-JSON-LD-API
-</a>
-</cite>
-].
-</p>
-</section>
-</section>
-<section class="normative" id="data-model">
-<h2 aria-level="1" role="heading" id="h2_data-model">
-<span class="secno">
-<del class="diff-old">A.
-</del>
-<ins class="diff-chg">7.
-</ins>
-</span>
-Data
-Model
-</h2>
-<p>
-JSON-LD
-is
-a
-serialization
-format
-for
-Linked
-Data
-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
-<del class="diff-old">JSON-LD's
-</del>
-<ins class="diff-chg">the
-</ins><dfn title="data-model" id="dfn-data-model">
-data
-model
-</dfn>
-which
-is
-<del class="diff-old">defined
-as
-follows:
-</del>
-<ins class="diff-chg">an
-extension
-of
-the
-RDF
-data
-model
-[
-</ins><cite><a class="bibref" href="#bib-RDF11-CONCEPTS"><ins class="diff-chg">
-RDF11-CONCEPTS
-</ins></a></cite><ins class="diff-chg">
-].
-The
-precise
-details
-of
-how
-JSON-LD
-relates
-to
-the
-RDF
-data
-model
-are
-given
-in
-</ins><a class="sectionRef sec-ref" href="#relationship-to-rdf"><ins class="diff-chg">
-section
-9.
-Relationship
-to
-RDF
-</ins></a>.</p><p><ins class="diff-chg">
-To
-ease
-understanding
-for
-developers
-unfamiliar
-with
-the
-RDF
-model,
-the
-following
-summary
-is
-provided:
-</ins>
-</p>
-<ul>
-<li>
-A
-<dfn title="json-ld-document" id="dfn-json-ld-document">
-JSON-LD
-document
-</dfn>
-serializes
-a
-<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset" class="externalDFN">
-<ins class="diff-new">generalized
-RDF
-Dataset
-</ins></a><ins class="diff-new">
-[
-</ins><cite><a class="bibref" href="#bib-RDF11-CONCEPTS"><ins class="diff-new">
-RDF11-CONCEPTS
-</ins></a></cite><ins class="diff-new">
-],
-which
-is
-a
-</ins>
-collection
-of
-<del class="diff-old">JSON-LD
-</del>
-<a class="tref internalDFN" title="graph" href="#dfn-graph">
-graphs
-</a>
-<del class="diff-old">and
-</del>
-<ins class="diff-chg">that
-</ins>
-comprises
-exactly
-one
-<dfn title="default-graph" id="dfn-default-graph">
-<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-default-graph" class="externalDFN">
-default
-graph
-</a>
-</dfn>
-and
-zero
-or
-more
-<dfn title="named-graph" id="dfn-named-graph">
-<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-named-graph" class="externalDFN">
-named
-graphs
-</a>
-</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
-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>
-(the
-<dfn title="graph-name" id="dfn-graph-name">
-<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-graph-name" class="externalDFN">
-graph
-name
-</a>
-</dfn>
-)
-and
-a
-<del class="diff-old">JSON-LD
-</del>
-<a class="tref internalDFN" title="graph" href="#dfn-graph">
-graph
-</a>.
-Whenever
-practical,
-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>.
-</li>
-<li>
-A
-<del class="diff-old">JSON-LD
-</del>
-<dfn title="graph" id="dfn-graph">
-<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-graph" class="externalDFN">
-graph
-</a>
-</dfn>
-is
-a
-labeled
-directed
-graph,
-i.e.,
-a
-set
-of
-<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">
-<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-property" class="externalDFN">
-properties
-</a>
-</dfn>.
-Whenever
-practical,
-an
-<a class="tref internalDFN" title="edge" href="#dfn-edge">
-edge
-</a>
-<em class="rfc2119" title="SHOULD">
-SHOULD
-</em>
-be
-labeled
-with
-an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>.
-</li>
-<li>
-Every
-<dfn title="node" id="dfn-node">
-<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-node" class="externalDFN">
-node
-</a>
-</dfn>
-is
-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
-<del class="diff-old">JSON-LD
-</del>
-<a class="tref internalDFN" title="graph" href="#dfn-graph">
-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">
-<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-iri" class="externalDFN">
-IRI
-</a>
-</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
-<del class="diff-old">JSON-LD
-</del>
-<a class="tref internalDFN" title="graph" href="#dfn-graph">
-graph
-</a>
-<em class="rfc2119" title="SHOULD">
-SHOULD
-</em>
-return
-a
-Linked
-Data
-document
-describing
-the
-resource
-denoted
-by
-that
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-when
-being
-dereferenced.
-</li>
-<li>
-A
-<dfn title="blank-node" id="dfn-blank-node">
-<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-blank-node" class="externalDFN">
-blank
-node
-</a>
-</dfn>
-is
-a
-<a class="tref internalDFN" title="node" href="#dfn-node">
-node
-</a>
-which
-is
-neither
-an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>,
-nor
-a
-<a class="tref internalDFN" title="json-ld-value" href="#dfn-json-ld-value">
-JSON-LD
-value
-</a>,
-nor
-a
-<a class="tref internalDFN" title="list" href="#dfn-list">
-list
-</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">
-<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-blank-node-identifier" class="externalDFN">
-blank
-node
-identifier
-</a>
-</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="typed-value" href="#dfn-typed-value">
-<ins class="diff-new">typed
-value
-</ins></a>,<ins class="diff-new">
-a
-</ins>
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-<del class="diff-old">,
-</del>
-</a>
-<ins class="diff-chg">(which
-is
-interpreted
-as
-</ins><a class="tref internalDFN" title="typed-value" href="#dfn-typed-value"><ins class="diff-chg">
-typed
-value
-</ins></a><ins class="diff-chg">
-with
-type
-</ins><code><ins class="diff-chg">
-xsd:string
-</ins></code><ins class="diff-chg">
-),
-</ins>
-a
-<a class="tref internalDFN" title="number" href="#dfn-number">
-number
-<del class="diff-old">,
-</del>
-</a>
-<ins class="diff-chg">(
-</ins><a class="tref internalDFN" title="number" href="#dfn-number"><ins class="diff-chg">
-numbers
-</ins></a><ins class="diff-chg">
-with
-a
-non-zero
-fractional
-part,
-i.e.,
-the
-result
-of
-a
-modulo‑1
-operation,
-are
-interpreted
-as
-</ins><a class="tref internalDFN" title="typed-value" href="#dfn-typed-value"><ins class="diff-chg">
-typed
-values
-</ins></a><ins class="diff-chg">
-with
-type
-</ins><code><ins class="diff-chg">
-xsd:double
-</ins></code>,<ins class="diff-chg">
-all
-other
-</ins><a class="tref internalDFN" title="number" href="#dfn-number"><ins class="diff-chg">
-numbers
-</ins></a><ins class="diff-chg">
-are
-interpreted
-as
-</ins><a class="tref internalDFN" title="typed-value" href="#dfn-typed-value"><ins class="diff-chg">
-typed
-values
-</ins></a><ins class="diff-chg">
-with
-type
-</ins><code><ins class="diff-chg">
-xsd:integer
-</ins></code><ins class="diff-chg">
-),
-</ins>
-<a class="tref internalDFN" title="true" href="#dfn-true">
-true
-</a>
-or
-<a class="tref internalDFN" title="false" href="#dfn-false">
-false
-<del class="diff-old">,
-a
-</del>
-</a>
-<ins class="diff-chg">(which
-are
-interpreted
-as
-</ins>
-<a class="tref internalDFN" title="typed-value" href="#dfn-typed-value">
-typed
-<del class="diff-old">value
-,
-</del>
-<ins class="diff-chg">values
-</ins></a><ins class="diff-chg">
-with
-type
-</ins><code><ins class="diff-chg">
-xsd:boolean
-</ins></code><ins class="diff-chg">
-),
-</ins>
-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
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>.
-</li>
-<li>
-A
-<dfn title="language-tagged-string" id="dfn-language-tagged-string">
-<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-language-tagged-string" class="externalDFN">
-language-tagged
-string
-</a>
-</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
-Classes
-of
-Conformance
-</a>
-of
-[
-<cite>
-<a class="bibref" href="#bib-BCP47">
-BCP47
-</a>
-</cite>
-].
-</li>
-<li>
-A
-<dfn title="list" id="dfn-list">
-list
-</dfn>
-is
-<del class="diff-old">an
-ordered
-</del>
-<ins class="diff-chg">a
-</ins>
-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>.
-<a class="tref internalDFN" title="list" href="#dfn-list">
-<ins class="diff-new">Lists
-</ins></a><ins class="diff-new">
-are
-interpreted
-as
-</ins><a href="http://www.w3.org/TR/rdf11-mt/#rdf-collections" class="externalDFN"><ins class="diff-new">
-RDF
-list
-structures
-</ins></a><ins class="diff-new">
-[
-</ins><cite><a class="bibref" href="#bib-RDF11-MT"><ins class="diff-new">
-RDF11-MT
-</ins></a></cite><ins class="diff-new">
-].
-</ins>
-</li>
-</ul>
-<div class="issue atrisk">
-<div class="issue-title" aria-level="2" role="heading" id="h_issue_3">
-<span>
-Feature
-at
-Risk
-3
-</span>:
-Allow
-blank
-nodes
-to
-be
-used
-as
-<del class="diff-old">graph
-name
-or
-property
-</del>
-<ins class="diff-chg">properties
-</ins>
-</div>
-<div class="atrisk">
-<p class="atrisk-head">
-Note:
-This
-feature
-is
-<a href="http://www.w3.org/2005/10/Process-20051014/tr#cfi">
-<del class="diff-old">&quot;at
-risk&quot;
-</del>
-<ins class="diff-chg">"at
-risk"
-</ins>
-</a>
-and
-may
-be
-removed
-from
-this
-specification
-based
-on
-feedback.
-Please
-send
-feedback
-to
-<a href="mailto:public-rdf-comments@w3.org">
-public-rdf-comments@w3.org
-</a>.
-For
-the
-current
-status
-see
-<a href="http://www.w3.org/2011/rdf-wg/wiki/JSON-LD_Features_at_Risk">
-features
-<del class="diff-old">&quot;at
-risk&quot;
-</del>
-<ins class="diff-chg">"at
-risk"
-</ins>
-in
-JSON-LD
-1.0
-</a>
-</p>
-<p>
-RDF
-does
-not
-currently
-allow
-a
-<a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">
-blank
-node
-</a>
-to
-be
-used
-as
-<del class="diff-old">graph
-name
-or
-</del>
-<ins class="diff-chg">a
-</ins>
-<a class="tref internalDFN" title="property" href="#dfn-property">
-property
-</a>,
-while
-JSON-LD
-does.
-JSON-LD
-to
-RDF
-<del class="diff-old">converters
-</del>
-<ins class="diff-chg">deserializers
-</ins>
-can
-work
-around
-this
-restriction,
-when
-<del class="diff-old">converting
-</del>
-<ins class="diff-chg">interpreting
-</ins>
-JSON-LD
-<del class="diff-old">to
-</del>
-<ins class="diff-chg">as
-</ins>
-RDF,
-by
-<del class="diff-old">converting
-</del>
-<ins class="diff-chg">transforming
-</ins>
-such
-<a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">
-blank
-nodes
-</a>
-to
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-IRIs
-</a>,
-<ins class="diff-new">by
-</ins>
-minting
-new
-<del class="diff-old">&quot;Skolem
-IRIs&quot;
-</del>
-<ins class="diff-chg">"Skolem
-IRIs"
-</ins>
-as
-per
-<cite>
-<a href="http://www.w3.org/TR/rdf11-concepts/#section-skolemization">
-Replacing
-Blank
-Nodes
-with
-IRIs
-</a>
-</cite>
-of
-[
-<cite>
-<a class="bibref" href="#bib-RDF11-CONCEPTS">
-RDF11-CONCEPTS
-</a>
-</cite>
-].
-Based
-on
-feedback
-from
-<del class="diff-old">implementors
-</del>
-<ins class="diff-chg">implementors,
-</ins>
-the
-Working
-Group
-may
-decide
-to
-disallow
-blank
-<del class="diff-old">nodes
-as
-graph
-names
-and
-</del>
-<ins class="diff-chg">node
-</ins>
-properties
-in
-JSON-LD.
-If
-this
-change
-would
-affect
-you,
-be
-sure
-to
-send
-in
-a
-comment.
-</p>
-</div>
-</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="data-model" href="#dfn-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.
-<del class="diff-old">This
-means,
-e.g.,
-</del>
-<ins class="diff-chg">One
-result
-of
-this
-rule
-is
-</ins>
-that
-properties
-which
-are
-not
-mapped
-to
-an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-<del class="diff-old">or
-</del>
-</a>,
-<ins class="diff-chg">a
-</ins>
-<a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">
-blank
-node
-</a>,
-<ins class="diff-new">or
-</ins><a class="tref internalDFN" title="keyword" href="#dfn-keyword"><ins class="diff-new">
-keyword
-</ins>
-</a>
-will
-be
-ignored.
-</p>
-<p style="text-align: center">
-<img src="linked-data-graph.png" title="An illustration of the data model" alt="An illustration of the data model">
-</p>
-<p style="text-align: center">
-<del class="diff-old">Figure
-1:
-</del>
-<ins class="diff-chg">Figure&nbsp;1:
-</ins>
-An
-illustration
-of
-<del class="diff-old">JSON-LD's
-</del>
-<ins class="diff-chg">the
-</ins>
-data
-model.
-</p>
-</section>
-<section class="normative" id="json-ld-grammar">
-<h2 aria-level="1" role="heading" id="h2_json-ld-grammar">
-<span class="secno">
-<del class="diff-old">B.
-</del>
-<ins class="diff-chg">8.
-</ins>
-</span>
-JSON-LD
-Grammar
-</h2>
-<p>
-This
-appendix
-restates
-the
-syntactic
-conventions
-described
-in
-the
-previous
-sections
-more
-formally.
-</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
-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
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-whose
-elements
-are
-each
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
-node
-objects
-</a>
-at
-the
-top
-level.
-</p>
-<p>
-In
-contrast
-to
-JSON,
-in
-JSON-LD
-the
-keys
-in
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-objects
-</a>
-<em class="rfc2119" title="MUST">
-MUST
-</em>
-be
-unique.
-</p>
-<div class="note">
-<div class="note-title" aria-level="2" role="heading" id="h_note_7">
-<span>
-Note
-</span>
-</div>
-<p class="">
-JSON-LD
-allows
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keywords
-</a>
-to
-be
-aliased
-(see
-<a class="sectionRef sec-ref" href="#aliasing-keywords">
-section
-6.15
-Aliasing
-Keywords
-</a>
-for
-details).
-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>
-<section class="normative" id="terms">
-<h3 aria-level="2" role="heading" id="h3_terms">
-<span class="secno">
-<del class="diff-old">B.1
-</del>
-<ins class="diff-chg">8.1
-</ins>
-</span>
-Terms
-</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
-term
-<em class="rfc2119" title="MUST NOT">
-MUST
-NOT
-</em>
-be
-an
-empty
-<a class="tref internalDFN" title="string" href="#dfn-string">
-string
-</a>
-(
-<code>
-<del class="diff-old">&quot;&quot;
-</del>
-<ins class="diff-chg">""
-</ins>
-</code>
-)
-as
-not
-all
-programming
-languages
-are
-able
-to
-handle
-empty
-JSON
-keys.
-</p>
-<p>
-See
-<a class="sectionRef sec-ref" href="#the-context">
-section
-5.1
-The
-Context
-</a>
-and
-<a class="sectionRef sec-ref" href="#iris">
-section
-5.2
-IRIs
-</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 class="normative" id="node-objects">
-<h3 aria-level="2" role="heading" id="h3_node-objects">
-<span class="secno">
-<del class="diff-old">B.2
-</del>
-<ins class="diff-chg">8.2
-</ins>
-</span>
-Node
-Objects
-</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
-<del class="diff-old">JSON-LD
-</del>
-<a class="tref internalDFN" title="graph" href="#dfn-graph">
-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
-<del class="diff-old">JSON-LD
-</del>
-<a class="tref internalDFN" title="graph" href="#dfn-graph">
-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>
-need
-to
-be
-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>
-@id
-</code>,
-</li>
-<li>
-<code>
-@graph
-</code>,
-</li>
-<li>
-<code>
-@type
-</code>,
-</li>
-<li>
-<code>
-@reverse
-</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
-<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="relative-iri" href="#dfn-relative-iri">
-relative
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>,
-a
-<a class="tref internalDFN" title="context-definition" href="#dfn-context-definition">
-context
-definition
-</a>,
-or
-an
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-composed
-of
-any
-of
-these.
-</p>
-<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 class="sectionRef sec-ref" href="#node-identifiers">
-section
-5.3
-Node
-Identifiers
-</a>,
-<a class="sectionRef sec-ref" href="#compact-iris">
-section
-6.3
-Compact
-IRIs
-</a>,
-and
-<a class="sectionRef sec-ref" href="#identifying-blank-nodes">
-section
-6.14
-Identifying
-Blank
-Nodes
-</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>
-@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 class="sectionRef sec-ref" href="#named-graphs">
-section
-6.13
-Named
-Graphs
-</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>
-@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 class="sectionRef sec-ref" href="#specifying-the-type">
-section
-5.4
-Specifying
-the
-Type
-</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>
-@reverse
-</code>
-key,
-its
-value
-<em class="rfc2119" title="MUST">
-MUST
-</em>
-be
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
-JSON
-object
-</a>
-containing
-members
-representing
-reverse
-properties.
-Each
-value
-of
-such
-a
-reverse
-property
-<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>,
-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="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifier
-</a>,
-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>
-containing
-a
-combination
-of
-these.
-</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
-<a class="sectionRef sec-ref" href="#data-indexing">
-section
-6.16
-Data
-Indexing
-</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="MAY">
-MAY
-</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
-keys
-that
-expand
-to
-an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
-absolute
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-<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="value-object" href="#dfn-value-object">
-value
-object
-</a>,
-</li>
-<li>
-<a class="tref internalDFN" title="list-object" href="#dfn-list-object">
-list
-object
-</a>,
-</li>
-<li>
-<a class="tref internalDFN" title="set-object" href="#dfn-set-object">
-set
-object
-</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 class="normative" id="value-objects">
-<h3 aria-level="2" role="heading" id="h3_value-objects">
-<span class="secno">
-<del class="diff-old">B.3
-</del>
-<ins class="diff-chg">8.3
-</ins>
-</span>
-Value
-Objects
-</h3>
-<p>
-A
-<dfn title="value-object" id="dfn-value-object">
-value
-object
-</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>
-A
-<a class="tref internalDFN" title="value-object" href="#dfn-value-object">
-value
-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>
-containing
-the
-<code>
-@value
-</code>
-key.
-It
-<em class="rfc2119" title="MAY">
-MAY
-</em>
-also
-contain
-a
-<code>
-@type
-</code>,
-a
-<code>
-@language
-</code>,
-an
-<code>
-@index
-</code>,
-or
-an
-<code>
-@context
-</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.
-A
-<a class="tref internalDFN" title="value-object" href="#dfn-value-object">
-value
-object
-</a>
-<em class="rfc2119" title="MUST NOT">
-MUST
-NOT
-</em>
-contain
-any
-other
-keys
-that
-expand
-to
-an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
-absolute
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-or
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keyword
-</a>.
-</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
-<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 class="sectionRef sec-ref" href="#typed-values">
-section
-6.4
-Typed
-Values
-</a>
-and
-<a class="sectionRef sec-ref" href="#string-internationalization">
-section
-6.9
-String
-Internationalization
-</a>
-for
-more
-information
-on
-<a class="tref internalDFN" title="value-object" href="#dfn-value-object">
-value
-objects
-</a>.
-</p>
-</section>
-<section class="normative" id="lists-and-sets">
-<h3 aria-level="2" role="heading" id="h3_lists-and-sets">
-<span class="secno">
-<del class="diff-old">B.4
-</del>
-<ins class="diff-chg">8.4
-</ins>
-</span>
-Lists
-and
-Sets
-</h3>
-<p>
-A
-<a class="tref internalDFN" title="list" href="#dfn-list">
-list
-</a>
-represents
-an
-<em>
-ordered
-</em>
-set
-of
-values.
-A
-set
-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
-<a class="tref internalDFN" title="array" href="#dfn-array">
-array
-</a>
-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="#compacted-document-form">
-compact
-document
-form
-</a>.
-This
-simplifies
-post-processing
-of
-the
-data
-as
-the
-data
-is
-always
-in
-a
-deterministic
-form.
-</p>
-<p>
-A
-<dfn title="list-object" id="dfn-list-object">
-list
-object
-</dfn>
-<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
-keys
-that
-expand
-to
-an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
-absolute
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-or
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keyword
-</a>
-other
-than
-<code>
-@list
-</code>,
-<code>
-@context
-</code>,
-and
-<code>
-@index
-</code>.
-</p>
-<p>
-A
-<dfn title="set-object" id="dfn-set-object">
-set
-object
-</dfn>
-<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
-keys
-that
-expand
-to
-an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
-absolute
-<abbr title="Internationalized Resource Identifier">
-IRI
-</abbr>
-</a>
-or
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keyword
-</a>
-other
-than
-<code>
-@list
-</code>,
-<code>
-@context
-</code>,
-and
-<code>
-@index
-</code>.
-Please
-note
-that
-the
-<code>
-@index
-</code>
-key
-will
-be
-ignored
-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
-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="value-object" href="#dfn-value-object">
-value
-object
-</a>,
-or
-</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 class="sectionRef sec-ref" href="#sets-and-lists">
-section
-6.11
-Sets
-and
-Lists
-</a>
-for
-further
-discussion
-on
-sets
-and
-lists.
-</p>
-</section>
-<section class="normative" id="language-maps">
-<h3 aria-level="2" role="heading" id="h3_language-maps">
-<span class="secno">
-<del class="diff-old">B.5
-</del>
-<ins class="diff-chg">8.5
-</ins>
-</span>
-Language
-Maps
-</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
-<a class="tref internalDFN" title="string" href="#dfn-string">
-strings
-</a>
-representing
-[
-<cite>
-<a class="bibref" href="#bib-BCP47">
-BCP47
-</a>
-</cite>
-]
-language
-codes
-with
-and
-the
-values
-<em class="rfc2119" title="MUST">
-MUST
-</em>
-be
-any
-of
-the
-following
-types:
-</p>
-<ul>
-<li>
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-</li>
-<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
-of
-the
-above
-possibilities
-</li>
-</ul>
-<p>
-See
-<a class="sectionRef sec-ref" href="#string-internationalization">
-section
-6.9
-String
-Internationalization
-</a>
-for
-further
-discussion
-on
-language
-maps.
-</p>
-</section>
-<section class="normative" id="index-maps">
-<h3 aria-level="2" role="heading" id="h3_index-maps">
-<span class="secno">
-<del class="diff-old">B.6
-</del>
-<ins class="diff-chg">8.6
-</ins>
-</span>
-Index
-Maps
-</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="value-object" href="#dfn-value-object">
-value
-object
-</a>,
-</li>
-<li>
-<a class="tref internalDFN" title="list-object" href="#dfn-list-object">
-list
-object
-</a>,
-</li>
-<li>
-<a class="tref internalDFN" title="set-object" href="#dfn-set-object">
-set
-object
-</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 class="sectionRef sec-ref" href="#data-indexing">
-section
-6.16
-Data
-Indexing
-</a>
-for
-further
-information
-on
-this
-topic.
-</p>
-</section>
-<section class="normative" id="context-definitions">
-<h3 aria-level="2" role="heading" id="h3_context-definitions">
-<span class="secno">
-<del class="diff-old">B.7
-</del>
-<ins class="diff-chg">8.7
-</ins>
-</span>
-Context
-Definitions
-</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>
-whose
-keys
-<em class="rfc2119" title="MUST">
-MUST
-</em>
-either
-be
-<a class="tref internalDFN" title="term" href="#dfn-term">
-terms
-</a>,
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
-compact
-IRIs
-</a>,
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
-absolute
-IRIs
-</a>,
-or
-the
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keywords
-</a>
-<code>
-@language
-</code>,
-<code>
-@base
-</code>,
-and
-<code>
-@vocab
-</code>.
-</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>
-@base
-</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>
-<del class="diff-old">or
-null
-.
-Feature
-at
-Risk
-1
-:
-@base
-keyword
-Note:
-This
-feature
-is
-&quot;at
-risk&quot;
-and
-may
-be
-removed
-from
-this
-specification
-based
-on
-feedback.
-Please
-send
-feedback
-to
-public-rdf-comments@w3.org
-.
-For
-the
-current
-status
-see
-features
-&quot;at
-risk&quot;
-in
-JSON-LD
-1.0
-This
-feature
-is
-at
-risk
-as
-the
-fact
-that
-</del>
-</a>,
-a
-<del class="diff-old">document
-may
-have
-multiple
-base
-IRIs
-is
-potentially
-confusing
-for
-developers.
-It
-is
-also
-being
-discussed
-whether
-</del>
-<a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">
-relative
-<del class="diff-old">IRIs
-are
-allowed
-as
-values
-of
-@base
-or
-whether
-the
-empty
-string
-should
-be
-used
-to
-explicitly
-specify
-that
-there
-isn't
-a
-base
-</del>
-<abbr title="Internationalized Resource Identifier">
-IRI
-<del class="diff-old">,
-which
-could
-be
-used
-to
-ensure
-that
-relative
-IRIs
-remain
-relative
-when
-expanding.
-</del>
-</abbr>
-</a>,
-<ins class="diff-chg">or
-</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="context-definition" href="#dfn-context-definition">
-context
-definition
-</a>
-has
-a
-<code>
-@vocab
-</code>
-key,
-its
-value
-<em class="rfc2119" title="MUST">
-MUST
-</em>
-be
-a
-<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="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="term" href="#dfn-term">
-term
-</a>,
-or
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>.
-</p>
-<p>
-The
-value
-of
-keys
-that
-are
-not
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keywords
-</a>
-<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="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>,
-a
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
-blank
-node
-identifier
-</a>,
-a
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keyword
-</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="MUST">
-MUST
-</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>
-@reverse
-</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
-an
-<a class="tref internalDFN" title="expanded-term-definition" href="#dfn-expanded-term-definition">
-expanded
-term
-definition
-</a>
-has
-an
-<code>
-@reverse
-</code>
-member,
-<ins class="diff-new">it
-</ins><em class="rfc2119" title="MUST NOT"><ins class="diff-new">
-MUST
-NOT
-</ins></em><ins class="diff-new">
-have
-an
-</ins>
-<code>
-@id
-<del class="diff-old">,
-@type
-,
-and
-@language
-</del>
-</code>
-<del class="diff-old">are
-not
-allowed.
-</del>
-<ins class="diff-chg">member
-at
-the
-same
-time.
-</ins>
-If
-an
-<code>
-@container
-</code>
-member
-exists,
-its
-value
-<em class="rfc2119" title="MUST">
-MUST
-</em>
-be
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-<code>
-<ins class="diff-chg">@set
-</ins></code>,
-or
-<code>
-@index
-</code>.
-</p>
-<p>
-If
-the
-term
-being
-defined
-is
-not
-a
-<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="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>,
-<del class="diff-old">or
-</del>
-a
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>,
-<ins class="diff-new">or
-a
-</ins><a class="tref internalDFN" title="keyword" href="#dfn-keyword"><ins class="diff-new">
-keyword
-</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
-<del class="diff-old">blank
-node
-identifier
-,
-a
-</del>
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-<del class="diff-old">or
-the
-active
-context
-</del>
-</a>,
-<a class="tref internalDFN" title="null" href="#dfn-null">
-null
-</a>,
-or
-the
-one
-of
-the
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
-keywords
-</a>
-<code>
-@id
-</code>
-or
-<code>
-@vocab
-</code>.
-</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 class="sectionRef sec-ref" href="#the-context">
-section
-5.1
-The
-Context
-</a>
-for
-further
-discussion
-on
-contexts.
-</p>
-</section>
-</section>
-<section class="normative" id="relationship-to-rdf">
-<h2 aria-level="1" role="heading" id="h2_relationship-to-rdf">
-<span class="secno">
-<del class="diff-old">C.
-</del>
-<ins class="diff-chg">9.
-</ins>
-</span>
-Relationship
-to
-RDF
-</h2>
-<p>
-<del class="diff-old">The
-</del>
-<ins class="diff-chg">JSON-LD
-is
-a
-</ins><a class="tref externalDFN" title="concrete-rdf-syntax" href="http://www.w3.org/TR/rdf11-concepts/#dfn-concrete-rdf-syntax"><ins class="diff-chg">
-concrete
-</ins>
-RDF
-<del class="diff-old">data
-model,
-</del>
-<ins class="diff-chg">syntax
-</ins></a>
-as
-<del class="diff-old">outlined
-</del>
-<ins class="diff-chg">described
-</ins>
-in
-[
-<cite>
-<a class="bibref" href="#bib-RDF11-CONCEPTS">
-RDF11-CONCEPTS
-</a>
-</cite>
-<del class="diff-old">],
-is
-an
-abstract
-syntax
-for
-representing
-</del>
-<ins class="diff-chg">].
-Hence,
-</ins>
-a
-<del class="diff-old">directed
-graph
-of
-information.
-It
-</del>
-<ins class="diff-chg">JSON-LD
-document
-</ins>
-is
-<ins class="diff-new">both
-an
-RDF
-document
-</ins><em><ins class="diff-new">
-and
-</ins></em>
-a
-<del class="diff-old">subset
-</del>
-<ins class="diff-chg">JSON
-document
-and
-correspondingly
-represents
-an
-instance
-</ins>
-of
-<del class="diff-old">JSON-LD's
-</del>
-<ins class="diff-chg">an
-RDF
-data
-model.
-However,
-JSON-LD
-also
-extends
-the
-RDF
-</ins>
-data
-model
-<del class="diff-old">with
-a
-few
-additional
-constraints.
-</del>
-<ins class="diff-chg">to
-optionally
-allow
-JSON-LD
-to
-serialize
-</ins><a class="tref externalDFN" title="generalized-rdf-datasets" href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset"><ins class="diff-chg">
-Generalized
-RDF
-Datasets
-</ins></a>.
-The
-<del class="diff-old">differences
-between
-</del>
-<ins class="diff-chg">JSON-LD
-extensions
-to
-</ins>
-the
-<del class="diff-old">two
-</del>
-<ins class="diff-chg">RDF
-</ins>
-data
-<del class="diff-old">models
-</del>
-<ins class="diff-chg">model
-</ins>
-are:
-</p>
-<ul>
-<li>
-In
-JSON-LD
-<del class="diff-old">graph
-names
-can
-be
-IRIs
-or
-blank
-nodes
-whereas
-in
-RDF
-graph
-names
-have
-to
-be
-IRIs
-.
-In
-JSON-LD
-</del>
-<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>.
-<ins class="diff-new">This
-means
-that
-JSON-LD
-serializes
-</ins><a class="tref externalDFN" title="generalized-rdf-datasets" href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset"><ins class="diff-new">
-generalized
-RDF
-Datasets
-</ins></a>.
-</li>
-<li>
-In
-JSON-LD
-<a class="tref internalDFN" title="list" href="#dfn-list">
-lists
-</a>
-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
-Processing
-Algorithms
-and
-API
-specification
-[
-<cite>
-<a class="bibref" href="#bib-JSON-LD-API">
-JSON-LD-API
-</a>
-</cite>
-]
-defines
-the
-<a href="http://www.w3.org/TR/2013/CR-json-ld-api-20130822/#data-round-tripping">
-conversion
-rules
-</a>
-between
-JSON's
-native
-data
-types
-and
-RDF's
-counterparts
-to
-allow
-<del class="diff-old">full
-</del>
-round-tripping.
-</li>
-</ul>
-<p>
-<del class="diff-old">Summarized
-</del>
-<ins class="diff-chg">Summarized,
-</ins>
-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
-directly
-<del class="diff-old">transformed
-</del>
-<ins class="diff-chg">interpreted
-as
-RDF
-as
-described
-in
-RDF
-1.1
-Concepts
-[
-</ins><cite><a class="bibref" href="#bib-RDF11-CONCEPTS"><ins class="diff-chg">
-RDF11-CONCEPTS
-</ins></a></cite><ins class="diff-chg">
-].
-</ins></p><p><ins class="diff-chg">
-For
-authors
-and
-developers
-working
-with
-</ins><a class="tref internalDFN" title="blank-node" href="#dfn-blank-node"><ins class="diff-chg">
-blank
-nodes
-</ins></a><ins class="diff-chg">
-as
-</ins><a class="tref internalDFN" title="property" href="#dfn-property"><ins class="diff-chg">
-properties
-</ins></a><ins class="diff-chg">
-when
-deserializing
-</ins>
-to
-<del class="diff-old">RDF.
-It
-</del>
-<ins class="diff-chg">RDF,
-three
-potential
-approaches
-are
-suggested:
-</ins></p><ul><li><ins class="diff-chg">
-If
-the
-author
-</ins>
-is
-<del class="diff-old">possible
-</del>
-<ins class="diff-chg">not
-yet
-ready
-</ins>
-to
-<del class="diff-old">work
-around
-this
-restriction,
-when
-converting
-</del>
-<ins class="diff-chg">commit
-to
-a
-stable
-</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
-IRI
-</ins></abbr>,<ins class="diff-chg">
-the
-property
-should
-be
-mapped
-to
-an
-</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
-IRI
-</ins></abbr><ins class="diff-chg">
-that
-is
-documented
-as
-unstable.
-</ins></li><li><ins class="diff-chg">
-If
-the
-developer
-wishes
-to
-use
-</ins><a class="tref internalDFN" title="blank-node" href="#dfn-blank-node"><ins class="diff-chg">
-blank
-nodes
-</ins></a><ins class="diff-chg">
-as
-</ins><a class="tref internalDFN" title="property" href="#dfn-property"><ins class="diff-chg">
-properties
-</ins></a><ins class="diff-chg">
-and
-also
-wishes
-to
-interpret
-the
-data
-as
-a
-</ins><a class="tref externalDFN" title="generalized-rdf-dataset" href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset"><ins class="diff-chg">
-generalized
-RDF
-Dataset
-</ins></a>,<ins class="diff-chg">
-there
-is
-an
-option,
-</ins><i><ins class="diff-chg">
-produce
-generalized
-RDF
-</ins></i>,<ins class="diff-chg">
-in
-the
-Deserialize
-</ins>
-JSON-LD
-to
-<del class="diff-old">RDF,
-</del>
-<ins class="diff-chg">RDF
-algorithm
-[
-</ins><cite><a class="bibref" href="#bib-JSON-LD-API"><ins class="diff-chg">
-JSON-LD-API
-</ins></a></cite><ins class="diff-chg">
-]
-to
-do
-so.
-Note
-that
-a
-</ins><a class="tref externalDFN" title="generalized-rdf-dataset" href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset"><ins class="diff-chg">
-generalized
-RDF
-Dataset
-</ins></a><ins class="diff-chg">
-is
-an
-extension
-of
-RDF;
-it
-does
-not
-conform
-to
-the
-RDF
-standard.
-</ins></li><li><ins class="diff-chg">
-If
-the
-author
-or
-developer
-wishes
-to
-use
-</ins><a class="tref internalDFN" title="blank-node" href="#dfn-blank-node"><ins class="diff-chg">
-blank
-nodes
-</ins></a><ins class="diff-chg">
-as
-</ins><a class="tref internalDFN" title="property" href="#dfn-property"><ins class="diff-chg">
-properties
-</ins></a><ins class="diff-chg">
-and
-wishes
-to
-interpret
-the
-data
-as
-a
-standard
-(non-generalized)
-</ins><a class="tref externalDFN" title="rdf-dataset" href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-dataset"><ins class="diff-chg">
-RDF
-Dataset
-</ins></a>,<ins class="diff-chg">
-it
-is
-possible
-to
-losslessly
-interpret
-JSON-LD
-as
-RDF
-</ins>
-by
-<del class="diff-old">converting
-</del>
-<ins class="diff-chg">transforming
-</ins>
-<a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">
-blank
-nodes
-</a>
-used
-as
-<del class="diff-old">graph
-names
-or
-</del>
-<a class="tref internalDFN" title="property" href="#dfn-property">
-properties
-</a>
-to
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-IRIs
-</a>,
-<ins class="diff-new">by
-</ins>
-minting
-new
-<del class="diff-old">&quot;Skolem
-IRIs&quot;
-</del>
-<ins class="diff-chg">"Skolem
-IRIs"
-</ins>
-as
-per
-<cite>
-<a href="http://www.w3.org/TR/rdf11-concepts/#section-skolemization">
-Replacing
-Blank
-Nodes
-with
-IRIs
-</a>
-</cite>
-of
-[
-<cite>
-<a class="bibref" href="#bib-RDF11-CONCEPTS">
-RDF11-CONCEPTS
-</a>
-</cite>
-].
-<del class="diff-old">A
-complete
-description
-of
-the
-</del>
-</li>
-</ul>
-<p>
-<ins class="diff-chg">The
-normative
-</ins>
-algorithms
-<del class="diff-old">to
-convert
-from
-RDF
-to
-</del>
-<ins class="diff-chg">for
-interpreting
-</ins>
-JSON-LD
-<ins class="diff-new">as
-RDF
-</ins>
-and
-<del class="diff-old">from
-JSON-LD
-to
-</del>
-<ins class="diff-chg">serializing
-</ins>
-RDF
-<del class="diff-old">is
-included
-</del>
-<ins class="diff-chg">as
-JSON-LD
-are
-specified
-</ins>
-in
-the
-JSON-LD
-Processing
-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
-<a class="tref externalDFN" title="generalized-rdf-datasets" href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset">
-<ins class="diff-new">generalized
-</ins>
-RDF
-<del class="diff-old">datasets,
-</del>
-<ins class="diff-chg">Datasets
-</ins></a>,
-it
-can
-also
-be
-used
-as
-a
-<a class="tref externalDFN" title="rdf-graph-source" href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-source">
-RDF
-graph
-<del class="diff-old">source.
-</del>
-<ins class="diff-chg">source
-</ins></a>.
-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
-<del class="diff-old">in,
-e.g.,
-both
-</del>
-<ins class="diff-chg">in
-languages
-such
-as
-</ins>
-Turtle
-and
-JSON-LD
-using
-content
-negotiation.
-</p>
-<div class="note">
-<div class="note-title" aria-level="2" role="heading" id="h_note_8">
-<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 class="informative" id="serializing-deserializing-rdf">
-<h3 aria-level="2" role="heading" id="h3_serializing-deserializing-rdf">
-<span class="secno">
-<del class="diff-old">C.1
-</del>
-<ins class="diff-chg">9.1
-</ins>
-</span>
-<del class="diff-old">Transformation
-from
-JSON-LD
-to
-</del>
-<ins class="diff-chg">Serializing/Deserializing
-</ins>
-RDF
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-The
-process
-of
-<del class="diff-old">turning
-a
-</del>
-<ins class="diff-chg">serializing
-RDF
-as
-</ins>
-JSON-LD
-<del class="diff-old">document
-</del>
-<ins class="diff-chg">and
-deserializing
-JSON-LD
-to
-RDF
-</ins>
-depends
-on
-executing
-the
-algorithms
-defined
-in
-<cite>
-<a href="http://www.w3.org/TR/2013/CR-json-ld-api-20130822/#rdf-serialization-deserialization-algorithms">
-RDF
-<del class="diff-old">Conversion
-</del>
-<ins class="diff-chg">Serialization-Deserialization
-</ins>
-Algorithms
-</a>
-</cite>
-in
-the
-JSON-LD
-Processing
-Algorithms
-and
-API
-specification
-[
-<cite>
-<a class="bibref" href="#bib-JSON-LD-API">
-JSON-LD-API
-</a>
-</cite>
-].
-It
-is
-beyond
-the
-scope
-of
-this
-document
-to
-detail
-these
-algorithms
-any
-further,
-but
-a
-summary
-of
-the
-necessary
-operations
-is
-provided
-to
-illustrate
-the
-process.
-</p>
-<p>
-The
-procedure
-<ins class="diff-new">to
-deserialize
-a
-JSON-LD
-document
-to
-RDF
-</ins>
-involves
-the
-following
-steps:
-</p>
-<ol>
-<li>
-Expand
-the
-JSON-LD
-document,
-removing
-any
-context;
-this
-ensures
-that
-properties,
-types,
-and
-values
-are
-given
-their
-full
-representation
-as
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-IRIs
-</a>
-and
-expanded
-values.
-Expansion
-is
-discussed
-further
-in
-<a class="sectionRef sec-ref" href="#expanded-document-form">
-section
-6.17
-Expanded
-Document
-Form
-</a>.
-</li>
-<li>
-Flatten
-the
-document,
-which
-turns
-the
-document
-into
-an
-array
-of
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
-node
-objects
-</a>.
-Flattening
-is
-discussed
-further
-in
-<a class="sectionRef sec-ref" href="#flattened-document-form">
-section
-6.19
-Flattened
-Document
-Form
-</a>.
-</li>
-<li>
-Turn
-each
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
-node
-object
-</a>
-into
-a
-series
-of
-<a class="tref externalDFN" title="rdf-triples" href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple">
-RDF
-triples
-</a>.
-</li>
-</ol>
-<p>
-For
-example,
-consider
-the
-following
-JSON-LD
-document
-in
-compact
-form:
-</p>
-<del class="diff-old">    {
-  &quot;@context&quot;: {
-    &quot;name&quot;: &quot;http://xmlns.com/foaf/0.1/name&quot;,
-    &quot;knows&quot;: &quot;http://xmlns.com/foaf/0.1/knows&quot;
-  },
-  &quot;@id&quot;: &quot;http://me.markus-lanthaler.com/&quot;,
-  &quot;name&quot;: &quot;Markus Lanthaler&quot;,
-  &quot;knows&quot;: [
-    {
-      &quot;@id&quot;: &quot;http://manu.sporny.org/&quot;,
-      &quot;name&quot;: &quot;Manu Sporny&quot;
-    },
-    {
-      &quot;name&quot;: &quot;Dave Longley&quot;
-    }
-  ]
-</del>
-    <div class="example"><div class="example-title"><span>Example 63</span>: Sample JSON-LD document</div><pre class="example">{
-<ins class="diff-chg">  "@context": {
-    "name": "http://xmlns.com/foaf/0.1/name",
-    "knows": "http://xmlns.com/foaf/0.1/knows"
-  },
-  "@id": "http://me.markus-lanthaler.com/",
-  "name": "Markus Lanthaler",
-  "knows": [
-    {
-      "@id": "http://manu.sporny.org/about#manu",
-      "name": "Manu Sporny"
-    },
-    {
-      "name": "Dave Longley"
-    }
-  ]
-</ins>
-}
-</pre>
-</div>
-<p>
-Running
-the
-JSON-LD
-Expansion
-and
-Flattening
-algorithms
-against
-the
-JSON-LD
-input
-document
-in
-the
-example
-above
-would
-result
-in
-the
-following
-output:
-</p>
-<del class="diff-old">    [
-  {
-    &quot;@id&quot;: &quot;_:b0&quot;,
-    &quot;http://xmlns.com/foaf/0.1/name&quot;: &quot;Dave Longley&quot;
-  },
-  {
-    &quot;@id&quot;: &quot;http://manu.sporny.org/&quot;,
-    &quot;http://xmlns.com/foaf/0.1/name&quot;: &quot;Manu Sporny&quot;
-  },
-  {
-    &quot;@id&quot;: &quot;http://me.markus-lanthaler.com/&quot;,
-    &quot;http://xmlns.com/foaf/0.1/name&quot;: &quot;Markus Lanthaler&quot;,
-    &quot;http://xmlns.com/foaf/0.1/knows&quot;: [
-      { &quot;@id&quot;: &quot;http://manu.sporny.org/&quot; },
-      { &quot;@id&quot;: &quot;_:b0&quot; }
-    ]
-  }
-</del>
-    <div class="example"><div class="example-title"><span>Example 64</span>: Flattened and expanded form for the previous example</div><pre class="example">[
-<ins class="diff-chg">  {
-    "@id": "_:b0",
-    "http://xmlns.com/foaf/0.1/name": "Dave Longley"
-  },
-  {
-    "@id": "http://manu.sporny.org/about#manu",
-    "http://xmlns.com/foaf/0.1/name": "Manu Sporny"
-  },
-  {
-    "@id": "http://me.markus-lanthaler.com/",
-    "http://xmlns.com/foaf/0.1/name": "Markus Lanthaler",
-    "http://xmlns.com/foaf/0.1/knows": [
-      { "@id": "http://manu.sporny.org/about#manu" },
-      { "@id": "_:b0" }
-    ]
-  }
-</ins>
-]
-</pre>
-</div>
-<p>
-<del class="diff-old">Transforming
-</del>
-<ins class="diff-chg">Deserializing
-</ins>
-this
-to
-RDF
-now
-is
-a
-straightforward
-process
-of
-turning
-each
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
-node
-object
-</a>
-into
-one
-or
-more
-RDF
-triples.
-This
-can
-be
-expressed
-in
-Turtle
-as
-follows:
-</p>
-<del class="diff-old">    _:b0 &lt;http://xmlns.com/foaf/0.1/name&gt; &quot;Dave Longley&quot; .
-
-&lt;http://manu.sporny.org/&gt; &lt;http://xmlns.com/foaf/0.1/name&gt; &quot;Manu Sporny&quot; .
-
-&lt;http://me.markus-lanthaler.com/&gt; &lt;http://xmlns.com/foaf/0.1/name&gt; &quot;Markus Lanthaler&quot; ;
-</del>
-    <div class="example"><div class="example-title"><span>Example 65</span>: Turtle representation of expanded/flattened document</div><pre class="example">_:b0 &lt;http://xmlns.com/foaf/0.1/name&gt; "Dave Longley" .
-<ins class="diff-chg">&lt;http://manu.sporny.org/about#manu&gt; &lt;http://xmlns.com/foaf/0.1/name&gt; "Manu Sporny" .
-&lt;http://me.markus-lanthaler.com/&gt; &lt;http://xmlns.com/foaf/0.1/name&gt; "Markus Lanthaler" ;
-</ins>
-&lt;http://xmlns.com/foaf/0.1/knows&gt;
-<del class="diff-old">&lt;http://manu.sporny.org/&gt;,
-</del>
-<ins class="diff-chg">&lt;http://manu.sporny.org/about#manu&gt;,
-</ins>
-_:b0
-.
-</pre>
-</div>
-<p>
-The
-process
-of
-<del class="diff-old">turning
-</del>
-<ins class="diff-chg">serializing
-</ins>
-RDF
-<del class="diff-old">into
-</del>
-<ins class="diff-chg">as
-</ins>
-JSON-LD
-can
-be
-thought
-of
-as
-the
-inverse
-of
-this
-last
-step,
-creating
-an
-expanded
-JSON-LD
-document
-closely
-matching
-the
-triples
-from
-RDF,
-using
-a
-single
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
-node
-object
-</a>
-for
-all
-triples
-having
-a
-common
-subject,
-and
-a
-single
-<a class="tref internalDFN" title="property" href="#dfn-property">
-property
-</a>
-for
-those
-triples
-also
-having
-a
-common
-predicate.
-</p>
-</section>
-</section>
-<section class="appendix informative" id="relationship-to-other-linked-data-formats">
-<h2 aria-level="1" role="heading" id="h2_relationship-to-other-linked-data-formats">
-<span class="secno">
-<del class="diff-old">D.
-</del>
-<ins class="diff-chg">A.
-</ins>
-</span>
-Relationship
-to
-Other
-Linked
-Data
-Formats
-</h2>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-The
-JSON-LD
-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
-Linked
-Data
-approaches.
-</p>
-<section class="informative" id="turtle">
-<h3 aria-level="2" role="heading" id="h3_turtle">
-<span class="secno">
-<del class="diff-old">D.1
-</del>
-<ins class="diff-chg">A.1
-</ins>
-</span>
-Turtle
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-The
-following
-are
-examples
-of
-<del class="diff-old">converting
-</del>
-<ins class="diff-chg">transforming
-</ins>
-RDF
-expressed
-in
-Turtle
-[
-<cite>
-<a class="bibref" href="#bib-TURTLE">
-TURTLE
-</a>
-</cite>
-]
-into
-JSON-LD.
-</p>
-<section>
-<h4 id="prefix-definitions" aria-level="3" role="heading">
-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: &lt;http://xmlns.com/foaf/0.1/&gt; .
-
-&lt;http://manu.sporny.org/i/public&gt; a foaf:Person;
-  foaf:name &quot;Manu Sporny&quot;;
-</del>
-      <div class="example"><div class="example-title"><span>Example 66</span>: A set of statements serialized in Turtle</div><pre class="example">@prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt; .
-<ins class="diff-chg">&lt;http://manu.sporny.org/about#manu&gt; a foaf:Person;
-  foaf:name "Manu Sporny";
-</ins>
-foaf:homepage
-&lt;http://manu.sporny.org/&gt;
-.
-</pre>
-</div>
-<del class="diff-old">      {
-  &quot;@context&quot;:
-  {
-    &quot;foaf&quot;: &quot;http://xmlns.com/foaf/0.1/&quot;
-  },
-  &quot;@id&quot;: &quot;http://manu.sporny.org/i/public&quot;,
-  &quot;@type&quot;: &quot;foaf:Person&quot;,
-  &quot;foaf:name&quot;: &quot;Manu Sporny&quot;,
-  &quot;foaf:homepage&quot;: { &quot;@id&quot;: &quot;http://manu.sporny.org/&quot; }
-</del>
-      <div class="example"><div class="example-title"><span>Example 67</span>: The same set of statements serialized in JSON-LD</div><pre class="example">{
-<ins class="diff-chg">  "@context":
-  {
-    "foaf": "http://xmlns.com/foaf/0.1/"
-  },
-  "@id": "http://manu.sporny.org/about#manu",
-  "@type": "foaf:Person",
-  "foaf:name": "Manu Sporny",
-  "foaf:homepage": { "@id": "http://manu.sporny.org/" }
-</ins>
-}
-</pre>
-</div>
-</section>
-<section>
-<h4 id="embedding-1" aria-level="3" role="heading">
-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>
-<del class="diff-old">      @prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt; .
-
-&lt;http://manu.sporny.org/i/public&gt;
-  a foaf:Person;
-  foaf:name &quot;Manu Sporny&quot;;
-</del>
-      <div class="example"><div class="example-title"><span>Example 68</span>: Embedding in Turtle</div><pre class="example">@prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt; .
-<ins class="diff-chg">&lt;http://manu.sporny.org/about#manu&gt;
-  a foaf:Person;
-  foaf:name "Manu Sporny";
-</ins>
-foaf:knows
-[
-a
-foaf:Person;
-foaf:name
-<del class="diff-old">&quot;Gregg
-Kellogg&quot;
-</del>
-<ins class="diff-chg">"Gregg
-Kellogg"
-</ins>
-]
-.
-</pre>
-</div>
-<del class="diff-old">      {
-  &quot;@context&quot;:
-  {
-    &quot;foaf&quot;: &quot;http://xmlns.com/foaf/0.1/&quot;
-  },
-  &quot;@id&quot;: &quot;http://manu.sporny.org/i/public&quot;,
-  &quot;@type&quot;: &quot;foaf:Person&quot;,
-  &quot;foaf:name&quot;: &quot;Manu Sporny&quot;,
-  &quot;foaf:knows&quot;:
-  {
-    &quot;@type&quot;: &quot;foaf:Person&quot;,
-    &quot;foaf:name&quot;: &quot;Gregg Kellogg&quot;
-  }
-</del>
-      <div class="example"><div class="example-title"><span>Example 69</span>: Same embedding example in JSON-LD</div><pre class="example">{
-<ins class="diff-chg">  "@context":
-  {
-    "foaf": "http://xmlns.com/foaf/0.1/"
-  },
-  "@id": "http://manu.sporny.org/about#manu",
-  "@type": "foaf:Person",
-  "foaf:name": "Manu Sporny",
-  "foaf:knows":
-  {
-    "@type": "foaf:Person",
-    "foaf:name": "Gregg Kellogg"
-  }
-</ins>
-}
-</pre>
-</div>
-</section>
-<section>
-<h4 id="conversion-of-native-data-types" aria-level="3" role="heading">
-Conversion
-of
-native
-data
-types
-</h4>
-<p>
-In
-JSON-LD
-numbers
-and
-boolean
-values
-are
-native
-data
-types.
-While
-Turtle
-has
-a
-shorthand
-syntax
-to
-express
-such
-values,
-RDF's
-abstract
-syntax
-requires
-that
-numbers
-and
-boolean
-values
-are
-represented
-as
-typed
-literals.
-Thus,
-to
-allow
-full
-round-tripping,
-the
-JSON-LD
-Processing
-Algorithms
-and
-API
-specification
-[
-<cite>
-<a class="bibref" href="#bib-JSON-LD-API">
-JSON-LD-API
-</a>
-</cite>
-]
-defines
-conversion
-rules
-between
-JSON-LD's
-native
-data
-types
-and
-RDF's
-counterparts.
-<a class="tref internalDFN" title="number" href="#dfn-number">
-Numbers
-</a>
-without
-fractions
-are
-converted
-to
-<code>
-xsd:integer
-</code>
--typed
-literals,
-numbers
-with
-fractions
-to
-<code>
-xsd:double
-</code>
--typed
-literals
-and
-the
-two
-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>
-to
-a
-<code>
-xsd:boolean
-</code>
--typed
-literal.
-All
-typed
-literals
-are
-in
-canonical
-lexical
-form.
-</p>
-<del class="diff-old">      {
-  &quot;@context&quot;:
-  {
-    &quot;ex&quot;: &quot;http://example.com/vocab#&quot;
-  },
-  &quot;@id&quot;: &quot;http://example.com/&quot;,
-  &quot;ex:numbers&quot;: [ 14, 2.78 ],
-  &quot;ex:booleans&quot;: [ true, false ]
-</del>
-      <div class="example"><div class="example-title"><span>Example 70</span>: JSON-LD using native data types for numbers and boolean values</div><pre class="example">{
-<ins class="diff-chg">  "@context":
-  {
-    "ex": "http://example.com/vocab#"
-  },
-  "@id": "http://example.com/",
-  "ex:numbers": [ 14, 2.78 ],
-  "ex:booleans": [ true, false ]
-</ins>
-}
-</pre>
-</div>
-<del class="diff-old">      @prefix ex: &lt;http://example.com/vocab#&gt; .
-@prefix xsd: &lt;http://www.w3.org/2001/XMLSchema#&gt; .
-
-&lt;http://example.com/&gt;
-  ex:numbers &quot;14&quot;^^xsd:integer, &quot;2.78E0&quot;^^xsd:double ;
-</del>
-      <div class="example"><div class="example-title"><span>Example 71</span>: Same example in Turtle using typed literals</div><pre class="example">@prefix ex: &lt;http://example.com/vocab#&gt; .
-<ins class="diff-chg">@prefix xsd: &lt;http://www.w3.org/2001/XMLSchema#&gt; .
-&lt;http://example.com/&gt;
-  ex:numbers "14"^^xsd:integer, "2.78E0"^^xsd:double ;
-</ins>
-ex:booleans
-<del class="diff-old">&quot;true&quot;^^xsd:boolean,
-&quot;false&quot;^^xsd:boolean
-</del>
-<ins class="diff-chg">"true"^^xsd:boolean,
-"false"^^xsd:boolean
-</ins>
-.
-</pre>
-</div>
-</section>
-<section>
-<h4 id="lists" aria-level="3" role="heading">
-Lists
-</h4>
-<p>
-Both
-JSON-LD
-and
-Turtle
-can
-represent
-sequential
-lists
-of
-values.
-</p>
-<del class="diff-old">      @prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt; .
-
-&lt;http://example.org/people#joebob&gt; a foaf:Person;
-  foaf:name &quot;Joe Bob&quot;;
-</del>
-      <div class="example"><div class="example-title"><span>Example 72</span>: A list of values in Turtle</div><pre class="example">@prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt; .
-<ins class="diff-chg">&lt;http://example.org/people#joebob&gt; a foaf:Person;
-  foaf:name "Joe Bob";
-</ins>
-foaf:nick
-(
-<del class="diff-old">&quot;joe&quot;
-&quot;bob&quot;
-&quot;jaybee&quot;
-</del>
-<ins class="diff-chg">"joe"
-"bob"
-"jaybee"
-</ins>
-)
-.
-</pre>
-</div>
-<del class="diff-old">      {
-  &quot;@context&quot;:
-  {
-    &quot;foaf&quot;: &quot;http://xmlns.com/foaf/0.1/&quot;
-  },
-  &quot;@id&quot;: &quot;http://example.org/people#joebob&quot;,
-  &quot;@type&quot;: &quot;foaf:Person&quot;,
-  &quot;foaf:name&quot;: &quot;Joe Bob&quot;,
-  &quot;foaf:nick&quot;:
-  {
-    &quot;@list&quot;: [ &quot;joe&quot;, &quot;bob&quot;, &quot;jaybee&quot; ]
-  }
-</del>
-      <div class="example"><div class="example-title"><span>Example 73</span>: Same example with a list of values in JSON-LD</div><pre class="example">{
-<ins class="diff-chg">  "@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" ]
-  }
-</ins>
-}
-</pre>
-</div>
-</section>
-</section>
-<section class="informative" id="rdfa">
-<h3 aria-level="2" role="heading" id="h3_rdfa">
-<span class="secno">
-<del class="diff-old">D.2
-</del>
-<ins class="diff-chg">A.2
-</ins>
-</span>
-RDFa
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-The
-following
-example
-describes
-three
-people
-with
-their
-respective
-names
-and
-homepages
-in
-RDFa
-[
-<cite>
-<a class="bibref" href="#bib-RDFA-CORE">
-RDFA-CORE
-</a>
-</cite>
-].
-</p>
-<del class="diff-old">    &gt;
-   &lt;ul&gt;
-      &lt;li &gt;
-        &lt;a &gt;Bob&lt;/a&gt;
-      &lt;/li&gt;
-      &lt;li &gt;
-        &lt;a &gt;Eve&lt;/a&gt;
-      &lt;/li&gt;
-      &lt;li &gt;
-        &lt;a &gt;Manu&lt;/a&gt;
-      &lt;/li&gt;
-   &lt;/ul&gt;
-</del>
-    <div class="example"><div class="example-title"><span>Example 74</span>: RDFa fragment that describes three people</div><pre class="example">&lt;div <span class="diff">prefix="foaf: http://xmlns.com/foaf/0.1/"</span>&gt;
-<ins class="diff-chg">   &lt;ul&gt;
-      &lt;li <span class="diff">typeof="foaf:Person"</span>&gt;
-        &lt;a <span class="diff">rel="foaf:homepage" href="http://example.com/bob/" property="foaf:name"</span>&gt;Bob&lt;/a&gt;
-      &lt;/li&gt;
-      &lt;li <span class="diff">typeof="foaf:Person"</span>&gt;
-        &lt;a <span class="diff">rel="foaf:homepage" href="http://example.com/eve/" property="foaf:name"</span>&gt;Eve&lt;/a&gt;
-      &lt;/li&gt;
-      &lt;li <span class="diff">typeof="foaf:Person"</span>&gt;
-        &lt;a <span class="diff">rel="foaf:homepage" href="http://example.com/manu/" property="foaf:name"</span>&gt;Manu&lt;/a&gt;
-      &lt;/li&gt;
-   &lt;/ul&gt;
-</ins>
-&lt;/div&gt;
-</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">    {
-  &quot;@context&quot;:
-  {
-    &quot;foaf&quot;: &quot;http://xmlns.com/foaf/0.1/&quot;
-  },
-  &quot;@graph&quot;:
-  [
-    {
-      &quot;@type&quot;: &quot;foaf:Person&quot;,
-      &quot;foaf:homepage&quot;: &quot;http://example.com/bob/&quot;,
-      &quot;foaf:name&quot;: &quot;Bob&quot;
-    },
-    {
-      &quot;@type&quot;: &quot;foaf:Person&quot;,
-      &quot;foaf:homepage&quot;: &quot;http://example.com/eve/&quot;,
-      &quot;foaf:name&quot;: &quot;Eve&quot;
-    },
-    {
-      &quot;@type&quot;: &quot;foaf:Person&quot;,
-      &quot;foaf:homepage&quot;: &quot;http://example.com/manu/&quot;,
-      &quot;foaf:name&quot;: &quot;Manu&quot;
-    }
-  ]
-</del>
-    <div class="example"><div class="example-title"><span>Example 75</span>: Same description in JSON-LD (context shared among node objects)</div><pre class="example">{
-<ins class="diff-chg">  "@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"
-    }
-  ]
-</ins>
-}
-</pre>
-</div>
-</section>
-<section class="informative" id="microformats">
-<h3 aria-level="2" role="heading" id="h3_microformats">
-<span class="secno">
-<del class="diff-old">D.3
-</del>
-<ins class="diff-chg">A.3
-</ins>
-</span>
-Microformats
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-The
-following
-example
-uses
-a
-simple
-Microformats
-hCard
-example
-to
-express
-how
-Microformats
-[
-<cite>
-<a class="bibref" href="#bib-MICROFORMATS">
-MICROFORMATS
-</a>
-</cite>
-]
-are
-represented
-in
-JSON-LD.
-</p>
-<del class="diff-old">    &lt;div class=&quot;vcard&quot;&gt;
- &lt;a class=&quot;url fn&quot; href=&quot;http://tantek.com/&quot;&gt;Tantek Çelik&lt;/a&gt;
-</del>
-    <div class="example"><div class="example-title"><span>Example 76</span>: HTML fragment with a simple Microformats hCard</div><pre class="example">&lt;div class="vcard"&gt;
-<ins class="diff-chg"> &lt;a class="url fn" href="http://tantek.com/"&gt;Tantek Çelik&lt;/a&gt;
-</ins>
-&lt;/div&gt;
-</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">    {
-  &quot;@context&quot;:
-  {
-    &quot;vcard&quot;: &quot;http://microformats.org/profile/hcard#vcard&quot;,
-    &quot;url&quot;:
-    {
-      &quot;@id&quot;: &quot;http://microformats.org/profile/hcard#url&quot;,
-      &quot;@type&quot;: &quot;@id&quot;
-    },
-    &quot;fn&quot;: &quot;http://microformats.org/profile/hcard#fn&quot;
-  },
-  &quot;@type&quot;: &quot;vcard&quot;,
-  &quot;url&quot;: &quot;http://tantek.com/&quot;,
-  &quot;fn&quot;: &quot;Tantek Çelik&quot;
-</del>
-    <div class="example"><div class="example-title"><span>Example 77</span>: Same hCard representation in JSON-LD</div><pre class="example">{
-<ins class="diff-chg">  "@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"
-</ins>
-}
-</pre>
-</div>
-</section>
-<section class="informative" id="microdata">
-<h3 aria-level="2" role="heading" id="h3_microdata">
-<span class="secno">
-<del class="diff-old">D.4
-</del>
-<ins class="diff-chg">A.4
-</ins>
-</span>
-Microdata
-</h3>
-<p>
-<em>
-This
-section
-is
-non-normative.
-</em>
-</p>
-<p>
-The
-HTML
-Microdata
-[
-<cite>
-<a class="bibref" href="#bib-MICRODATA">
-MICRODATA
-</a>
-</cite>
-]
-example
-below
-expresses
-book
-information
-as
-a
-Microdata
-Work
-item.
-</p>
-<del class="diff-old">    &lt;dl itemscope
-    itemtype=&quot;http://purl.org/vocab/frbr/core#Work&quot;
-    itemid=&quot;http://purl.oreilly.com/works/45U8QJGZSQKDH8N&quot;&gt;
- &lt;dt&gt;Title&lt;/dt&gt;
- &lt;dd&gt;&lt;cite itemprop=&quot;http://purl.org/dc/terms/title&quot;&gt;Just a Geek&lt;/cite&gt;&lt;/dd&gt;
- &lt;dt&gt;By&lt;/dt&gt;
- &lt;dd&gt;&lt;span itemprop=&quot;http://purl.org/dc/terms/creator&quot;&gt;Wil Wheaton&lt;/span&gt;&lt;/dd&gt;
- &lt;dt&gt;Format&lt;/dt&gt;
- &lt;dd itemprop=&quot;http://purl.org/vocab/frbr/core#realization&quot;
-     itemscope
-     itemtype=&quot;http://purl.org/vocab/frbr/core#Expression&quot;
-     itemid=&quot;http://purl.oreilly.com/products/9780596007683.BOOK&quot;&gt;
-  &lt;link itemprop=&quot;http://purl.org/dc/terms/type&quot; href=&quot;http://purl.oreilly.com/product-types/BOOK&quot;&gt;
-  Print
- &lt;/dd&gt;
- &lt;dd itemprop=&quot;http://purl.org/vocab/frbr/core#realization&quot;
-     itemscope
-     itemtype=&quot;http://purl.org/vocab/frbr/core#Expression&quot;
-     itemid=&quot;http://purl.oreilly.com/products/9780596802189.EBOOK&quot;&gt;
-  &lt;link itemprop=&quot;http://purl.org/dc/terms/type&quot; href=&quot;http://purl.oreilly.com/product-types/EBOOK&quot;&gt;
-  Ebook
- &lt;/dd&gt;
-</del>
-    <div class="example"><div class="example-title"><span>Example 78</span>: HTML fragments that describes a book using microdata</div><pre class="example">&lt;dl itemscope
-<ins class="diff-chg">    itemtype="http://purl.org/vocab/frbr/core#Work"
-    itemid="http://purl.oreilly.com/works/45U8QJGZSQKDH8N"&gt;
- &lt;dt&gt;Title&lt;/dt&gt;
- &lt;dd&gt;&lt;cite itemprop="http://purl.org/dc/terms/title"&gt;Just a Geek&lt;/cite&gt;&lt;/dd&gt;
- &lt;dt&gt;By&lt;/dt&gt;
- &lt;dd&gt;&lt;span itemprop="http://purl.org/dc/terms/creator"&gt;Wil Wheaton&lt;/span&gt;&lt;/dd&gt;
- &lt;dt&gt;Format&lt;/dt&gt;
- &lt;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"&gt;
-  &lt;link itemprop="http://purl.org/dc/terms/type" href="http://purl.oreilly.com/product-types/BOOK"&gt;
-  Print
- &lt;/dd&gt;
- &lt;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"&gt;
-  &lt;link itemprop="http://purl.org/dc/terms/type" href="http://purl.oreilly.com/product-types/EBOOK"&gt;
-  Ebook
- &lt;/dd&gt;
-</ins>
-&lt;/dl&gt;
-</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">    [
-  {
-    &quot;@id&quot;: &quot;http://purl.oreilly.com/works/45U8QJGZSQKDH8N&quot;,
-    &quot;@type&quot;: &quot;http://purl.org/vocab/frbr/core#Work&quot;,
-    &quot;http://purl.org/dc/terms/title&quot;: &quot;Just a Geek&quot;,
-    &quot;http://purl.org/dc/terms/creator&quot;: &quot;Whil Wheaton&quot;,
-    &quot;http://purl.org/vocab/frbr/core#realization&quot;:
-    [
-      &quot;http://purl.oreilly.com/products/9780596007683.BOOK&quot;,
-      &quot;http://purl.oreilly.com/products/9780596802189.EBOOK&quot;
-    ]
-  },
-  {
-    &quot;@id&quot;: &quot;http://purl.oreilly.com/products/9780596007683.BOOK&quot;,
-    &quot;@type&quot;: &quot;http://purl.org/vocab/frbr/core#Expression&quot;,
-    &quot;http://purl.org/dc/terms/type&quot;: &quot;http://purl.oreilly.com/product-types/BOOK&quot;
-  },
-  {
-    &quot;@id&quot;: &quot;http://purl.oreilly.com/products/9780596802189.EBOOK&quot;,
-    &quot;@type&quot;: &quot;http://purl.org/vocab/frbr/core#Expression&quot;,
-    &quot;http://purl.org/dc/terms/type&quot;: &quot;http://purl.oreilly.com/product-types/EBOOK&quot;
-  }
-</del>
-    <div class="example"><div class="example-title"><span>Example 79</span>: Same book description in JSON-LD (avoiding contexts)</div><pre class="example">[
-<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":
-    [
-      "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"
-  }
-</ins>
-]
-</pre>
-</div>
-</section>
-</section>
-<section class="appendix normative" id="iana-considerations">
-<h2 aria-level="1" role="heading" id="h2_iana-considerations">
-<span class="secno">
-<del class="diff-old">E.
-</del>
-<ins class="diff-chg">B.
-</ins>
-</span>
-IANA
-Considerations
-</h2>
-<p>
-This
-section
-<del class="diff-old">is
-included
-for
-community
-review
-and
-will
-be
-</del>
-<ins class="diff-chg">has
-been
-</ins>
-submitted
-to
-the
-Internet
-Engineering
-Steering
-Group
-(IESG)
-<del class="diff-old">as
-part
-of
-the
-Last
-Call
-announcement
-</del>
-for
-<del class="diff-old">this
-specification.
-</del>
-<ins class="diff-chg">review,
-approval,
-and
-registration
-with
-IANA.
-</ins>
-</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>
-<p>
-A
-a
-non-empty
-list
-of
-space-separated
-URIs
-identifying
-specific
-constraints
-or
-conventions
-that
-apply
-to
-a
-JSON-LD
-document
-according
-[
-<cite>
-<a class="bibref" href="#bib-RFC6906">
-RFC6906
-</a>
-</cite>
-].
-A
-profile
-does
-not
-change
-the
-semantics
-of
-the
-resource
-representation
-when
-processed
-without
-profile
-knowledge,
-so
-that
-clients
-both
-with
-and
-without
-knowledge
-of
-a
-profiled
-resource
-can
-safely
-use
-the
-same
-representation.
-The
-<code>
-profile
-</code>
-parameter
-<del class="diff-old">may
-</del>
-<em class="rfc2119" title="MAY">
-<ins class="diff-chg">MAY
-</ins></em>
-be
-used
-by
-clients
-to
-express
-their
-preferences
-in
-the
-content
-negotiation
-process.
-<ins class="diff-new">If
-the
-profile
-parameter
-is
-given,
-a
-server
-</ins><em class="rfc2119" title="SHOULD"><ins class="diff-new">
-SHOULD
-</ins></em><ins class="diff-new">
-return
-a
-document
-that
-honors
-the
-profiles
-in
-the
-list
-which
-are
-recognized
-by
-the
-server.
-</ins>
-It
-is
-<em class="rfc2119" title="RECOMMENDED">
-RECOMMENDED
-</em>
-that
-profile
-URIs
-are
-dereferenceable
-and
-provide
-useful
-documentation
-at
-that
-URI.
-For
-more
-information
-and
-background
-please
-refer
-to
-[
-<cite>
-<a class="bibref" href="#bib-RFC6906">
-RFC6906
-</a>
-</cite>
-].
-</p>
-<p>
-This
-specification
-defines
-three
-values
-for
-the
-<code>
-profile
-</code>
-parameter.
-To
-request
-or
-specify
-<del class="diff-old">Expanded
-</del>
-<a href="#expanded-document-form">
-<ins class="diff-chg">expanded
-</ins>
-JSON-LD
-document
-<del class="diff-old">form,
-</del>
-<ins class="diff-chg">form
-</ins></a>,
-the
-URI
-<code>
-http://www.w3.org/ns/json-ld#expanded
-</code>
-<em class="rfc2119" title="SHOULD">
-SHOULD
-</em>
-be
-used.
-To
-request
-or
-specify
-<del class="diff-old">Compacted
-</del>
-<a href="#compacted-document-form">
-<ins class="diff-chg">compacted
-</ins>
-JSON-LD
-document
-<del class="diff-old">form,
-</del>
-<ins class="diff-chg">form
-</ins></a>,
-the
-URI
-<code>
-http://www.w3.org/ns/json-ld#compacted
-</code>
-<em class="rfc2119" title="SHOULD">
-SHOULD
-</em>
-be
-used.
-To
-request
-or
-specify
-<del class="diff-old">Flattened
-</del>
-<a href="#flattened-document-form">
-<ins class="diff-chg">flattened
-</ins>
-JSON-LD
-document
-<del class="diff-old">form,
-</del>
-<ins class="diff-chg">form
-</ins></a>,
-the
-URI
-<code>
-http://www.w3.org/ns/json-ld#flattened
-</code>
-<em class="rfc2119" title="SHOULD">
-SHOULD
-</em>
-be
-used.
-Please
-note
-that,
-according
-[
-<cite>
-<a class="bibref" href="#bib-HTTP11">
-HTTP11
-</a>
-</cite>
-],
-the
-value
-of
-the
-<code>
-profile
-</code>
-parameter
-has
-to
-be
-enclosed
-in
-quotes
-(
-<code>
-<del class="diff-old">&quot;
-</del>
-<ins class="diff-chg">"
-</ins>
-</code>
-)
-because
-it
-contains
-special
-characters
-and,
-if
-multiple
-profiles
-are
-combined,
-whitespace.
-</p>
-<p>
-When
-processing
-the
-<del class="diff-old">&quot;profile&quot;
-</del>
-<ins class="diff-chg">"profile"
-</ins>
-media
-type
-parameter,
-it
-is
-important
-to
-note
-that
-its
-value
-<del class="diff-old">is
-</del>
-contains
-one
-or
-more
-URIs
-and
-not
-IRIs.
-In
-some
-cases
-it
-might
-therefore
-be
-necessary
-to
-convert
-between
-IRIs
-and
-URIs
-as
-specified
-in
-<cite>
-<a href="http://tools.ietf.org/html/rfc3986#section-5.1">
-section
-3
-Relationship
-between
-IRIs
-and
-URIs
-</a>
-</cite>
-of
-[
-<cite>
-<a class="bibref" href="#bib-RFC3987">
-RFC3987
-</a>
-</cite>
-].
-</p>
-</dd>
-</dl>
-</dd>
-<dt>
-Encoding
-considerations:
-</dt>
-<dd>
-See
-<del class="diff-old">RFC
-6839,
-</del>
-<ins class="diff-chg">RFC&nbsp;6839,
-</ins>
-section
-3.1.
-</dd>
-<dt>
-Security
-considerations:
-</dt>
-<dd>
-<ins class="diff-new">See
-[
-</ins><cite><a class="bibref" href="#bib-RFC4627"><ins class="diff-new">
-RFC4627
-</ins></a></cite><ins class="diff-new">
-]
-</ins><p>
-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
-to
-be
-parsed.
-<ins class="diff-chg">An
-(invalid)
-document
-may
-contain
-code
-that,
-when
-executed,
-could
-lead
-to
-unexpected
-side
-effects
-compromising
-the
-security
-of
-a
-system.
-</ins></p><p><ins class="diff-chg">
-When
-processing
-JSON-LD
-documents,
-links
-to
-remote
-contexts
-are
-typically
-followed
-automatically,
-resulting
-in
-the
-transfer
-of
-files
-without
-the
-explicit
-request
-of
-the
-user
-for
-each
-one.
-If
-remote
-contexts
-are
-served
-by
-third
-parties,
-it
-may
-allow
-them
-to
-gather
-usage
-patterns
-or
-similar
-information
-leading
-to
-privacy
-concerns.
-Specific
-implementations,
-such
-as
-the
-API
-defined
-in
-the
-JSON-LD
-Processing
-Algorithms
-and
-API
-specification
-[
-</ins><cite><a class="bibref" href="#bib-JSON-LD-API"><ins class="diff-chg">
-JSON-LD-API
-</ins></a></cite><ins class="diff-chg">
-],
-may
-provide
-fine-grained
-mechanisms
-to
-control
-this
-behavior.
-</ins></p><p>
-JSON-LD
-contexts
-that
-are
-loaded
-from
-the
-Web
-over
-non-secure
-connections,
-such
-as
-HTTP,
-run
-the
-risk
-of
-<del class="diff-old">modifying
-</del>
-<ins class="diff-chg">being
-altered
-by
-an
-attacker
-such
-that
-they
-may
-modify
-</ins>
-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.
-</p>
-<p>
-Given
-that
-JSON-LD
-allows
-the
-substitution
-of
-long
-IRIs
-with
-short
-terms,
-JSON-LD
-documents
-may
-expand
-considerably
-when
-processed
-and,
-in
-the
-worst
-case,
-the
-resulting
-data
-might
-consume
-all
-of
-the
-recipient's
-resources.
-Applications
-should
-treat
-any
-data
-with
-due
-skepticism.
-</p>
-</dd>
-<dt>
-Interoperability
-considerations:
-</dt>
-<dd>
-Not
-Applicable
-</dd>
-<dt>
-Published
-specification:
-</dt>
-<dd>
-http://www.w3.org/TR/json-ld
-</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
-&amp;
-email
-address
-to
-contact
-for
-further
-information:
-</dt>
-<dd>
-Manu
-Sporny
-&lt;msporny@digitalbazaar.com&gt;
-</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>
-<abbr title="World Wide Web Consortium">
-W3C
-</abbr>
-</dd>
-</dl>
-<p>
-Fragment
-identifiers
-used
-with
-<a href="#application-ld-json">
-application/ld+json
-</a>
-are
-treated
-as
-in
-RDF
-syntaxes,
-as
-per
-<cite>
-<a href="http://www.w3.org/TR/rdf11-concepts/#section-fragID">
-RDF
-1.1
-Concepts
-and
-Abstract
-Syntax
-</a>
-</cite>
-[
-<cite>
-<a class="bibref" href="#bib-RDF11-CONCEPTS">
-RDF11-CONCEPTS
-</a>
-</cite>
-].
-</p>
-</section>
-<section class="appendix informative" id="acknowledgements">
-<h2 aria-level="1" role="heading" id="h2_acknowledgements">
-<span class="secno">
-<del class="diff-old">F.
-</del>
-<ins class="diff-chg">C.
-</ins>
-</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
-<ins class="diff-new">Booth,
-David
-</ins>
-I.
-Lehn,
-David
-Wood,
-Dean
-Landolt,
-Ed
-Summers,
-elf
-Pavlik,
-Eric
-Prud'hommeaux,
-Erik
-Wilde,
-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,
-<ins class="diff-new">Marios
-Meimaris,
-</ins>
-Melvin
-Carvalho,
-Nathan
-Rixham,
-Olivier
-Grisel,
-Paolo
-Ciccarese,
-Pat
-Hayes,
-Patrick
-Logan,
-Paul
-Kuykendall,
-Pelle
-Braendgaard,
-Peter
-<ins class="diff-new">Patel-Schneider,
-Peter
-</ins>
-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">
-<h2 aria-level="1" role="heading" id="h2_references">
-<span class="secno">
-<del class="diff-old">G.
-</del>
-<ins class="diff-chg">D.
-</ins>
-</span>
-References
-</h2>
-<section id="normative-references" typeof="bibo:Chapter" resource="#normative-references" rel="bibo:chapter">
-<h3 aria-level="2" role="heading" id="h3_normative-references">
-<span class="secno">
-<del class="diff-old">G.1
-</del>
-<ins class="diff-chg">D.1
-</ins>
-</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-RDF11-CONCEPTS">
-<ins class="diff-new">[RDF11-CONCEPTS]
-</ins></dt><dd rel="dcterms:requires"><ins class="diff-new">
-Richard
-Cyganiak,
-David
-Wood,
-Editors.
-</ins><cite><a href="http://www.w3.org/TR/2013/WD-rdf11-concepts-20130115/"><ins class="diff-new">
-RDF
-1.1
-Concepts
-and
-Abstract
-Syntax.
-</ins></a></cite><ins class="diff-new">
-15
-January
-2013.
-W3C
-Working
-Draft
-(work
-in
-progress).
-URL:
-</ins><a href="http://www.w3.org/TR/2013/WD-rdf11-concepts-20130115/"><ins class="diff-new">
-http://www.w3.org/TR/2013/WD-rdf11-concepts-20130115/
-</ins></a>.<ins class="diff-new">
-The
-latest
-edition
-is
-available
-at
-</ins><a href="http://www.w3.org/TR/rdf11-concepts/"><ins class="diff-new">
-http://www.w3.org/TR/rdf11-concepts/
-</ins></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)
-<del class="diff-old">(RFC
-3987)
-</del>
-</cite>
-</a>.
-January
-2005.
-RFC.
-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)
-(RFC
-4627)
-</cite>
-</a>.
-July
-2006.
-RFC.
-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.
-<cite>
-<a href="http://www.ietf.org/rfc/rfc5988.txt">
-Web
-Linking
-</a>.
-</cite>
-October
-2010.
-Internet
-RFC
-5988.
-URL:
-<a href="http://www.ietf.org/rfc/rfc5988.txt">
-http://www.ietf.org/rfc/rfc5988.txt
-</a>
-</dd>
-</dl>
-</section>
-<section id="informative-references" typeof="bibo:Chapter" resource="#informative-references" rel="bibo:chapter">
-<h3 aria-level="2" role="heading" id="h3_informative-references">
-<span class="secno">
-<del class="diff-old">G.2
-</del>
-<ins class="diff-chg">D.2
-</ins>
-</span>
-Informative
-references
-</h3>
-<dl class="bibliography" about="">
-<dt id="bib-HTTP11">
-[HTTP11]
-</dt>
-<dd rel="dcterms:references">
-R.
-Fielding
-et
-al.
-<a href="http://www.ietf.org/rfc/rfc2616.txt">
-<cite>
-Hypertext
-Transfer
-Protocol
--
-HTTP/1.1
-</cite>
-</a>.
-June
-1999.
-<del class="diff-old">RFC
-2616.
-</del>
-<ins class="diff-chg">RFC.
-</ins>
-URL:
-<a href="http://www.ietf.org/rfc/rfc2616.txt">
-http://www.ietf.org/rfc/rfc2616.txt
-</a>
-</dd>
-<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
-<del class="diff-old">Working
-</del>
-<ins class="diff-chg">Editor's
-</ins>
-Draft
-(work
-in
-progress).
-URL:
-<del class="diff-old">http://www.w3.org/TR/2013/WD-json-ld-api-20130411/
-.
-The
-latest
-edition
-is
-available
-at
-http://www.w3.org/TR/json-ld-api/
-</del>
-<a href="http://json-ld.org/spec/latest/json-ld-api/">
-<ins class="diff-chg">http://json-ld.org/spec/latest/json-ld-api/
-</ins>
-</a>
-</dd>
-<dt id="bib-JSON-LD-TESTS">
-[JSON-LD-TESTS]
-</dt>
-<dd rel="dcterms:references">
-<cite>
-<a href="http://www.w3.org/2013/json-ld-tests/">
-JSON-LD
-1.0
-Test
-Suite
-</a>
-</cite>.
-W3C
-Test
-Suite
-(work
-in
-progress).
-URL:
-<a href="http://www.w3.org/2013/json-ld-tests/">
-http://www.w3.org/2013/json-ld-tests/
-</a>
-</dd>
-<dt id="bib-LINKED-DATA">
-<ins class="diff-new">[LINKED-DATA]
-</ins></dt><dd rel="dcterms:references"><ins class="diff-new">
-Tim
-Berners-Lee.
-</ins><cite><a href="http://www.w3.org/DesignIssues/LinkedData.html"><ins class="diff-new">
-Linked
-Data
-</ins></a>.</cite><ins class="diff-new">
-Personal
-View,
-imperfect
-but
-published.
-URL:
-</ins><a href="http://www.w3.org/DesignIssues/LinkedData.html"><ins class="diff-new">
-http://www.w3.org/DesignIssues/LinkedData.html
-</ins></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-20121025/">
-HTML
-Microdata
-</a>.
-</cite>
-25
-October
-2012.
-W3C
-Working
-Draft
-(work
-in
-progress).
-URL:
-<a href="http://www.w3.org/TR/2012/WD-microdata-20121025/">
-http://www.w3.org/TR/2012/WD-microdata-20121025/
-</a>.
-The
-latest
-edition
-is
-available
-at
-<a href="http://www.w3.org/TR/microdata/">
-http://www.w3.org/TR/microdata/
-</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
-<del class="diff-old">V.
-</del>
-Guha.
-<a href="http://www.w3.org/TR/rdf-schema">
-<cite>
-RDF
-Vocabulary
-Description
-Language
-1.0:
-RDF
-Schema
-</cite>
-</a>.
-10
-February
-2004.
-W3C
-Recommendation.
-URL:
-<del class="diff-old">http://www.w3.org/TR/2004/REC-rdf-schema-20040210
-</del>
-<a href="http://www.w3.org/TR/rdf-schema">
-<ins class="diff-chg">http://www.w3.org/TR/rdf-schema
-</ins>
-</a>
-</dd>
-<del class="diff-old">[RDF11-CONCEPTS]
-</del>
-<dt id="bib-RDF11-MT">
-<ins class="diff-chg">[RDF11-MT]
-</ins>
-</dt>
-<dd rel="dcterms:references">
-<del class="diff-old">Richard
-Cyganiak,
-David
-Wood,
-</del>
-<ins class="diff-chg">Patrick
-J.
-Hayes,
-Peter
-F.
-Patel-Schneider,
-</ins>
-Editors.
-<cite>
-<a href="http://www.w3.org/TR/2013/WD-rdf11-mt-20130409/">
-RDF
-1.1
-<del class="diff-old">Concepts
-and
-Abstract
-Syntax.
-</del>
-<ins class="diff-chg">Semantics.
-</ins>
-</a>
-</cite>
-<del class="diff-old">15
-January
-</del>
-<ins class="diff-chg">9
-April
-</ins>
-2013.
-W3C
-Working
-Draft
-(work
-in
-progress).
-URL:
-<del class="diff-old">http://www.w3.org/TR/2013/WD-rdf11-concepts-20130115/
-</del>
-<a href="http://www.w3.org/TR/2013/WD-rdf11-mt-20130409/">
-<ins class="diff-chg">http://www.w3.org/TR/2013/WD-rdf11-mt-20130409/
-</ins>
-</a>.
-The
-latest
-edition
-is
-available
-at
-<del class="diff-old">http://www.w3.org/TR/rdf11-concepts/
-</del>
-<a href="http://www.w3.org/TR/rdf11-mt/">
-<ins class="diff-chg">http://www.w3.org/TR/rdf11-mt/
-</ins>
-</a>
-</dd>
-<dt id="bib-RDFA-CORE">
-[RDFA-CORE]
-</dt>
-<dd rel="dcterms:references">
-<ins class="diff-new">Ben
-Adida;
-Mark
-Birbeck;
-</ins>
-Shane
-<del class="diff-old">McCarron
-</del>
-<ins class="diff-chg">McCarron;
-Ivan
-Herman
-</ins>
-et
-al.
-<a href="http://www.w3.org/TR/rdfa-core/">
-<cite>
-RDFa
-Core
-<del class="diff-old">1.1:
-Syntax
-and
-processing
-rules
-for
-embedding
-RDF
-through
-attributes
-</del>
-<ins class="diff-chg">1.1
--
-Second
-Edition
-</ins>
-</cite>
-</a>.
-<del class="diff-old">7
-</del>
-<ins class="diff-chg">25
-</ins>
-June
-<del class="diff-old">2012.
-</del>
-<ins class="diff-chg">2013.
-</ins>
-W3C
-<ins class="diff-new">Proposed
-Edited
-</ins>
-Recommendation.
-URL:
-<del class="diff-old">http://www.w3.org/TR/2012/REC-rdfa-core-20120607/
-</del>
-<a href="http://www.w3.org/TR/rdfa-core/">
-<ins class="diff-chg">http://www.w3.org/TR/rdfa-core/
-</ins>
-</a>
-</dd>
-<dt id="bib-RFC3986">
-[RFC3986]
-</dt>
-<dd rel="dcterms:references">
-T.
-Berners-Lee;
-R.
-Fielding;
-L.
-Masinter.
-<a href="http://www.ietf.org/rfc/rfc3986.txt">
-<cite>
-Uniform
-Resource
-Identifier
-(URI):
-Generic
-Syntax
-(RFC
-3986)
-</cite>
-</a>.
-January
-2005.
-RFC.
-URL:
-<a href="http://www.ietf.org/rfc/rfc3986.txt">
-http://www.ietf.org/rfc/rfc3986.txt
-</a>
-</dd>
-<dt id="bib-RFC6839">
-<ins class="diff-new">[RFC6839]
-</ins></dt><dd rel="dcterms:references"><ins class="diff-new">
-Tony
-Hansen,
-Alexey
-Melnikov.
-</ins><cite><a href="http://www.ietf.org/rfc/rfc6839.txt"><ins class="diff-new">
-Additional
-Media
-Type
-Structured
-Syntax
-Suffixes
-</ins></a>.</cite><ins class="diff-new">
-January
-2013.
-Internet
-RFC
-6839.
-URL:
-</ins><a href="http://www.ietf.org/rfc/rfc6839.txt"><ins class="diff-new">
-http://www.ietf.org/rfc/rfc6839.txt
-</ins></a></dd>
-<dt id="bib-RFC6906">
-[RFC6906]
-</dt>
-<dd rel="dcterms:references">
-Erik
-Wilde.
-<cite>
-<a href="http://www.ietf.org/rfc/rfc6906.txt">
-The
-'profile'
-Link
-Relation
-Type
-</a>.
-</cite>
-March
-2013.
-Internet
-RFC
-6906.
-URL:
-<a href="http://www.ietf.org/rfc/rfc6906.txt">
-http://www.ietf.org/rfc/rfc6906.txt
-</a>
-</dd>
-<dt id="bib-TURTLE">
-[TURTLE]
-</dt>
-<dd rel="dcterms:references">
-Eric
-Prud'hommeaux,
-Gavin
-Carothers,
-Editors.
-<cite>
-<a href="http://www.w3.org/TR/2013/CR-turtle-20130219/">
-Turtle:
-Terse
-RDF
-Triple
-Language.
-</a>
-</cite>
-19
-February
-2013.
-W3C
-Candidate
-Recommendation
-(work
-in
-progress).
-URL:
-<a href="http://www.w3.org/TR/2013/CR-turtle-20130219/">
-http://www.w3.org/TR/2013/CR-turtle-20130219/
-</a>.
-The
-latest
-edition
-is
-available
-at
-<a href="http://www.w3.org/TR/turtle/">
-http://www.w3.org/TR/turtle/
-</a>
-</dd>
-</dl>
-</section>
-</section>
-</body>
-</html>
--- a/spec/CR/json-ld/20130822/index.html	Thu Sep 05 22:36:04 2013 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3864 +0,0 @@
-<!DOCTYPE html>
-<html lang="en" dir="ltr" typeof="bibo:Document w3p:CR" about="" property="dcterms:language" content="en">
-<head>
-<title>JSON-LD 1.0</title>
-<meta http-equiv="content-type" content="text/html; charset=UTF-8">
-
-
-
-<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; }
-  .atrisk-head { font-style: italic; }
-</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;
-}
-
-/* --- 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: #2b2; }
-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: 1em 1.2em 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="https://www.w3.org/StyleSheets/TR/W3C-CR"><!--[if lt IE 9]><script src='https://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]--></head>
-
-<body class="h-entry" role="document" id="respecDocument"><div class="head" role="contentinfo" id="respecHeader">
-  <p>
-    
-      <a href="http://www.w3.org/"><img width="72" height="48" src="https://www.w3.org/Icons/w3c_home" alt="W3C"></a>
-    
-  </p>
-  <h1 class="title p-name" id="title" property="dcterms:title">JSON-LD 1.0</h1>
-  
-    <h2 property="bibo:subtitle" id="subtitle">A JSON-based Serialization for Linked Data</h2>
-  
-  <h2 property="dcterms:issued" datatype="xsd:dateTime" content="2013-08-22T04:00:00.000Z" id="w3c-candidate-recommendation-22-august-2013"><abbr title="World Wide Web Consortium">W3C</abbr> Candidate Recommendation <time class="dt-published" datetime="2013-08-22">22 August 2013</time></h2>
-  <dl>
-    
-      <dt>This version:</dt>
-      <dd><a class="u-url" href="http://www.w3.org/TR/2013/CR-json-ld-20130822/">http://www.w3.org/TR/2013/CR-json-ld-20130822/</a></dd>
-      <dt>Latest published version:</dt>
-      <dd><a href="http://www.w3.org/TR/json-ld/">http://www.w3.org/TR/json-ld/</a></dd>
-
-
-      <dt>Latest editor's draft:</dt>
-      <dd><a href="http://dvcs.w3.org/hg/json-ld/raw-file/default/spec/latest/json-ld/index.html">http://dvcs.w3.org/hg/json-ld/raw-file/default/spec/latest/json-ld/index.html</a></dd>
-    
-    
-    
-    
-    
-      <dt>Previous version:</dt>
-      <dd><a rel="dcterms:replaces" href="http://www.w3.org/TR/2013/WD-json-ld-20130411/">http://www.w3.org/TR/2013/WD-json-ld-20130411/</a></dd>
-    
-    
-    <dt>Editors:</dt>
-    <dd class="p-author h-card vcard" rel="bibo:editor" inlist=""><span typeof="foaf:Person"><a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Manu Sporny" href="http://manu.sporny.org/">Manu Sporny</a>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://digitalbazaar.com/">Digital Bazaar</a></span>
-</dd>
-<dd class="p-author h-card vcard" rel="bibo:editor" inlist=""><span typeof="foaf:Person"><a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Gregg Kellogg" href="http://greggkellogg.net/">Gregg Kellogg</a>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://kellogg-assoc.com/">Kellogg Associates</a></span>
-</dd>
-<dd class="p-author h-card vcard" rel="bibo:editor" inlist=""><span typeof="foaf:Person"><a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Markus Lanthaler" href="http://www.markus-lanthaler.com/">Markus Lanthaler</a>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://www.tugraz.at/">Graz University of Technology</a></span>
-</dd>
-
-
-      <dt>Authors:</dt>
-      <dd class="p-author h-card vcard" rel="dcterms:contributor"><span typeof="foaf:Person"><a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Manu Sporny" href="http://digitalbazaar.com/">Manu Sporny</a>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://digitalbazaar.com/">Digital Bazaar</a></span>
-</dd>
-<dd class="p-author h-card vcard" rel="dcterms:contributor"><span typeof="foaf:Person"><a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Dave Longley" href="http://digitalbazaar.com/">Dave Longley</a>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://digitalbazaar.com/">Digital Bazaar</a></span>
-</dd>
-<dd class="p-author h-card vcard" rel="dcterms:contributor"><span typeof="foaf:Person"><a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Gregg Kellogg" href="http://greggkellogg.net/">Gregg Kellogg</a>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://kellogg-assoc.com/">Kellogg Associates</a></span>
-</dd>
-<dd class="p-author h-card vcard" rel="dcterms:contributor"><span typeof="foaf:Person"><a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Markus Lanthaler" href="http://www.markus-lanthaler.com/">Markus Lanthaler</a>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://www.tugraz.at/">Graz University of Technology</a></span>
-</dd>
-<dd class="p-author h-card vcard" rel="dcterms:contributor"><span typeof="foaf:Person"><a class="u-url url p-name fn" 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 rel="alternate" href="diff-20130411.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
-        
-        <a href="http://www.w3.org/"><abbr title="World Wide Web Consortium">W3C</abbr></a><sup>®</sup>
-        (<a href="http://www.csail.mit.edu/"><abbr title="Massachusetts Institute of Technology">MIT</abbr></a>,
-        <a href="http://www.ercim.eu/"><abbr title="European Research Consortium for Informatics and Mathematics">ERCIM</abbr></a>,
-        <a href="http://www.keio.ac.jp/">Keio</a>, <a href="http://ev.buaa.edu.cn/">Beihang</a>), All Rights Reserved.
-        <abbr title="World Wide Web Consortium">W3C</abbr> <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
-        <a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a> and
-        <a href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> rules apply.
-      </p>
-
-
-  <hr>
-</div>
-<section id="abstract" class="introductory" property="dcterms:abstract" datatype="" typeof="bibo:Chapter" resource="#abstract" rel="bibo:chapter"><h2 aria-level="1" role="heading" id="h2_abstract">Abstract</h2>
-  <p>JSON is a useful data serialization and messaging format.
-    This specification defines JSON-LD, a JSON-based format to serialize
-    Linked Data. The syntax is designed to easily integrate into deployed
-    systems that already use JSON, and provides a smooth upgrade path from
-    JSON to JSON-LD.
-    It is primarily intended to be a way to use Linked Data in Web-based
-    programming environments, to build interoperable Web services, and to
-    store Linked Data in JSON-based storage engines.</p>
-</section><section id="sotd" class="introductory" typeof="bibo:Chapter" resource="#sotd" rel="bibo:chapter"><h2 aria-level="1" role="heading" id="h2_sotd">Status of This Document</h2>
-
-
-
-        <p>
-          <em>This section describes the status of this document at the time of its publication. Other
-          documents may supersede this document. A list of current <abbr title="World Wide Web Consortium">W3C</abbr> publications and the latest revision
-          of this technical report can be found in the <a href="http://www.w3.org/TR/"><abbr title="World Wide Web Consortium">W3C</abbr> technical reports
-          index</a> at http://www.w3.org/TR/.</em>
-        </p>
-
-  <p>This document has been under development for over 30 months in the
-    JSON for Linking Data Community Group. The document has 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 30 months.</p>
-
-  <p>There are several independent
-    <a href="http://json-ld.org/test-suite/reports/">interoperable implementations</a> of
-    this specification. There is a fairly complete test suite [<cite><a class="bibref" href="#bib-JSON-LD-TESTS">JSON-LD-TESTS</a></cite>]
-    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 three months.</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>
-
-  <p>Changes since the
-    <a href="http://www.w3.org/TR/2013/WD-json-ld-20130411/">11&nbsp;April&nbsp;2013 Last Call Working Draft</a>:</p>
-
-  <ul>
-    <li>Allow keyword aliases to be defined using expanded term definitions</li>
-    <li>Mention profile URIs also in the sections describing the various document forms</li>
-    <li>Support relative IRIs in <code>@base</code></li>
-    <li>Clarify how the <code>profile</code> media type parameter is used in the content
-      negotiation process</li>
-    <li>Update grammar to disallow blank nodes as data types</li>
-    <li>Update grammar to allow blank node identifiers as value of <code>@vocab</code></li>
-    <li>Align the JSON-LD Data Model with the RDF Data Model</li>
-    <li>Support processing of documents with a <code>+json</code> media type as defined in
-      [<cite><a class="bibref" href="#bib-RFC6839">RFC6839</a></cite>]</li>
-    <li>Added a brief description of the data model to the introduction.</li>
-    <li>Fixed a number of document readability and flow issues related to all
-      of the updates made over the last several moths.</li>
-  </ul>
-
-  <p>
-    Before this specification may exit the Candidate Recommendation phase,
-    at least two independent implementations must pass each test,
-    although no single implementation must pass every test. The
-    working group will decide when
-    the test suite is of sufficient quality to test interoperability and
-    will produce an implementation report hosted together with the test suite.
-  </p>
-
-
-        <p>
-          This document was published by the <a href="http://www.w3.org/2011/rdf-wg/">RDF Working Group</a> as a Candidate Recommendation.
-          
-            This document is intended to become a <abbr title="World Wide Web Consortium">W3C</abbr> Recommendation.
-          
-          
-          If you wish to make comments regarding this document, please send them to 
-          <a href="mailto:public-rdf-comments@w3.org">public-rdf-comments@w3.org</a> 
-          (<a href="mailto:public-rdf-comments-request@w3.org?subject=subscribe">subscribe</a>,
-          <a href="http://lists.w3.org/Archives/Public/public-rdf-comments/">archives</a>).
-          
-          
-          
-            <abbr title="World Wide Web Consortium">W3C</abbr> publishes a Candidate Recommendation to indicate that the document is believed
-            to be stable and to encourage implementation by the developer community. This
-            Candidate Recommendation is expected to advance to Proposed Recommendation no earlier than
-            19 September 2013.
-          
-          
-            All comments are welcome.</p>
-          
-        
-          <p>
-            Publication as a Candidate Recommendation does not imply endorsement by the <abbr title="World Wide Web Consortium">W3C</abbr> 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.
-          </p>
-
-
-        <p>
-
-            This document was produced by a group operating under the
-
-                <a id="sotd_patent" about="" rel="w3p:patentRules" href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February 2004 <abbr title="World Wide Web Consortium">W3C</abbr> Patent Policy</a>.
-
-
-
-
-
-              <abbr title="World Wide Web Consortium">W3C</abbr> maintains a <a href="http://www.w3.org/2004/01/pp-impl/46168/status" rel="disclosure">public list of any patent disclosures</a>
-
-            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
-            <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential Claim(s)</a> must disclose the
-            information in accordance with <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section
-            6 of the <abbr title="World Wide Web Consortium">W3C</abbr> Patent Policy</a>.
-
-
-        </p>
-
-
-
-
-</section><section id="toc"><h2 class="introductory" aria-level="1" role="heading" id="h2_toc">Table of Contents</h2><ul class="toc" role="directory" id="respecContents"><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="#data-model-overview" class="tocxref"><span class="secno">3.2 </span>Data Model Overview</a></li><li class="tocline"><a href="#syntax-tokens-and-keywords" class="tocxref"><span class="secno">3.3 </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="#base-iri" class="tocxref"><span class="secno">6.1 </span>Base <abbr title="Internationalized Resource Identifier">IRI</abbr></a></li><li class="tocline"><a href="#default-vocabulary" class="tocxref"><span class="secno">6.2 </span>Default Vocabulary</a></li><li class="tocline"><a href="#compact-iris" class="tocxref"><span class="secno">6.3 </span>Compact IRIs</a></li><li class="tocline"><a href="#typed-values" class="tocxref"><span class="secno">6.4 </span>Typed Values</a></li><li class="tocline"><a href="#type-coercion" class="tocxref"><span class="secno">6.5 </span>Type Coercion</a></li><li class="tocline"><a href="#embedding" class="tocxref"><span class="secno">6.6 </span>Embedding</a></li><li class="tocline"><a href="#advanced-context-usage" class="tocxref"><span class="secno">6.7 </span>Advanced Context Usage</a></li><li class="tocline"><a href="#interpreting-json-as-json-ld" class="tocxref"><span class="secno">6.8 </span>Interpreting JSON as JSON-LD</a></li><li class="tocline"><a href="#string-internationalization" class="tocxref"><span class="secno">6.9 </span>String Internationalization</a></li><li class="tocline"><a href="#iri-expansion-within-a-context" class="tocxref"><span class="secno">6.10 </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.11 </span>Sets and Lists</a></li><li class="tocline"><a href="#reverse-properties" class="tocxref"><span class="secno">6.12 </span>Reverse Properties</a></li><li class="tocline"><a href="#named-graphs" class="tocxref"><span class="secno">6.13 </span>Named Graphs</a></li><li class="tocline"><a href="#identifying-blank-nodes" class="tocxref"><span class="secno">6.14 </span>Identifying Blank Nodes</a></li><li class="tocline"><a href="#aliasing-keywords" class="tocxref"><span class="secno">6.15 </span>Aliasing Keywords</a></li><li class="tocline"><a href="#data-indexing" class="tocxref"><span class="secno">6.16 </span>Data Indexing</a></li><li class="tocline"><a href="#expanded-document-form" class="tocxref"><span class="secno">6.17 </span>Expanded Document Form</a></li><li class="tocline"><a href="#compacted-document-form" class="tocxref"><span class="secno">6.18 </span>Compacted Document Form</a></li><li class="tocline"><a href="#flattened-document-form" class="tocxref"><span class="secno">6.19 </span>Flattened Document Form</a></li><li class="tocline"><a href="#embedding-json-ld-in-html-documents" class="tocxref"><span class="secno">6.20 </span>Embedding JSON-LD in HTML Documents</a></li></ul></li><li class="tocline"><a href="#data-model" class="tocxref"><span class="secno">7. </span>Data Model</a></li><li class="tocline"><a href="#json-ld-grammar" class="tocxref"><span class="secno">8. </span>JSON-LD Grammar</a><ul class="toc"><li class="tocline"><a href="#terms" class="tocxref"><span class="secno">8.1 </span>Terms</a></li><li class="tocline"><a href="#node-objects" class="tocxref"><span class="secno">8.2 </span>Node Objects</a></li><li class="tocline"><a href="#value-objects" class="tocxref"><span class="secno">8.3 </span>Value Objects</a></li><li class="tocline"><a href="#lists-and-sets" class="tocxref"><span class="secno">8.4 </span>Lists and Sets</a></li><li class="tocline"><a href="#language-maps" class="tocxref"><span class="secno">8.5 </span>Language Maps</a></li><li class="tocline"><a href="#index-maps" class="tocxref"><span class="secno">8.6 </span>Index Maps</a></li><li class="tocline"><a href="#context-definitions" class="tocxref"><span class="secno">8.7 </span>Context Definitions</a></li></ul></li><li class="tocline"><a href="#relationship-to-rdf" class="tocxref"><span class="secno">9. </span>Relationship to RDF</a><ul class="toc"><li class="tocline"><a href="#serializing-deserializing-rdf" class="tocxref"><span class="secno">9.1 </span>Serializing/Deserializing RDF</a></li></ul></li><li class="tocline"><a href="#relationship-to-other-linked-data-formats" class="tocxref"><span class="secno">A. </span>Relationship to Other Linked Data Formats</a><ul class="toc"><li class="tocline"><a href="#turtle" class="tocxref"><span class="secno">A.1 </span>Turtle</a></li><li class="tocline"><a href="#rdfa" class="tocxref"><span class="secno">A.2 </span>RDFa</a></li><li class="tocline"><a href="#microformats" class="tocxref"><span class="secno">A.3 </span>Microformats</a></li><li class="tocline"><a href="#microdata" class="tocxref"><span class="secno">A.4 </span>Microdata</a></li></ul></li><li class="tocline"><a href="#iana-considerations" class="tocxref"><span class="secno">B. </span>IANA Considerations</a></li><li class="tocline"><a href="#acknowledgements" class="tocxref"><span class="secno">C. </span>Acknowledgements</a></li><li class="tocline"><a href="#references" class="tocxref"><span class="secno">D. </span>References</a><ul class="toc"><li class="tocline"><a href="#normative-references" class="tocxref"><span class="secno">D.1 </span>Normative references</a></li><li class="tocline"><a href="#informative-references" class="tocxref"><span class="secno">D.2 </span>Informative references</a></li></ul></li></ul></section>
-
-
-
-<section class="informative" id="introduction">
-  <!--OddPage--><h2 aria-level="1" role="heading" id="h2_introduction"><span class="secno">1. </span>Introduction</h2><p><em>This section is non-normative.</em></p>
-
-  <p>Linked Data [<cite><a class="bibref" href="#bib-LINKED-DATA">LINKED-DATA</a></cite>] is a way to create a network of
-   standards-based machine interpretable data across different documents and
-   Web sites. It allows an application to start at one piece of Linked Data,
-   and follow embedded links to other pieces of Linked Data that are hosted on
-   different sites across the Web.</p>
-
-  <p>JSON-LD is a lightweight syntax to serialize Linked Data in
-    JSON [<cite><a class="bibref" href="#bib-RFC4627">RFC4627</a></cite>]. Its design allows existing JSON to be interpreted as
-    Linked Data with minimal changes. JSON-LD is primarily intended to be a
-    way to use Linked Data in Web-based programming environments, to build
-    interoperable Web services, and to store 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. In addition 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 keys shared among different 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 annotate <a class="tref internalDFN" title="string" href="#dfn-string">strings</a> with their language,</li>
-    <li>a way to associate datatypes with values such as dates and times,</li>
-    <li>and a facility to express one or more directed graphs, such as a social
-      network, in a single document.</li>
-  </ul>
-
-  <p>
-   JSON-LD is designed to be usable directly as JSON, with no knowledge of RDF
-   [<cite><a class="bibref" href="#bib-RDF11-CONCEPTS">RDF11-CONCEPTS</a></cite>]. It is also designed to be usable as RDF, if desired, for
-   use with other Linked Data technologies like SPARQL. Developers who
-   require any of the facilities listed above or need to serialize an RDF Graph
-   or RDF Dataset in a JSON-based syntax will find JSON-LD of interest. People
-   intending to use JSON-LD with RDF tools will find it can be used as another
-   RDF syntax, like Turtle [<cite><a class="bibref" href="#bib-TURTLE">TURTLE</a></cite>]. Complete details of how JSON-LD relates
-   to RDF are in section <a href="#relationship-to-rdf" class="sec-ref"><span class="secno">9.</span> <span class="sec-title">Relationship to RDF</span></a>.
-  </p>
-
-  <p>
-    The syntax is designed to not disturb already
-   deployed systems running on JSON, but provide a smooth upgrade path from
-   JSON to JSON-LD. Since the shape of such data varies wildly, JSON-LD
-   features mechanisms to reshape documents into a deterministic structure
-   which simplifies their processing.</p>
-
-  <section class="informative" id="how-to-read-this-document">
-    <h3 aria-level="2" role="heading" id="h3_how-to-read-this-document"><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 who want to encode Linked Data in a variety of
-        programming languages that can use JSON</li>
-      <li>Software developers who want to convert existing JSON to JSON-LD</li>
-      <li>Software developers who want to understand the design decisions and
-        language syntax for JSON-LD</li>
-      <li>Software developers who want to implement processors and APIs for
-        JSON-LD</li>
-      <li>Software developers who want to generate or consume Linked Data,
-        an RDF graph, or an RDF Dataset in a JSON syntax</li>
-    </ul>
-
-    <p>A companion document, the JSON-LD Processing Algorithms and API specification
-      [<cite><a class="bibref" href="#bib-JSON-LD-API">JSON-LD-API</a></cite>], specifies how to work with JSON-LD at a higher level by
-      providing a standard library interface for common JSON-LD operations.</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>
-
-    <p>This document almost exclusively uses the term <abbr title="Internationalized Resource Identifier">IRI</abbr>
-    (<a href="http://www.w3.org/TR/ld-glossary/#internationalized-resource-identifier">Internationalized Resource Indicator</a>)
-    when discussing hyperlinks. Many Web developers are more familiar with the
-    URL (<a href="http://www.w3.org/TR/ld-glossary/#uniform-resource-locator">Uniform Resource Locator</a>)
-    terminology. The document also uses, albeit rarely, the URI
-    (<a href="http://www.w3.org/TR/ld-glossary/#uniform-resource-identifier">Uniform Resource Indicator</a>)
-    terminology. While these terms are often used interchangeably among
-    technical communities, they do have important distinctions from one
-    another and the specification goes to great lengths to try and use the
-    proper terminology at all times.
-    </p>
-  </section>
-</section>
-
-<section class="informative" id="design-goals-and-rationale">
-  <!--OddPage--><h2 aria-level="1" role="heading" id="h2_design-goals-and-rationale"><span class="secno">2. </span>Design Goals and Rationale</h2><p><em>This section is non-normative.</em></p>
-
-  <p>JSON-LD satisfies the following design goals:</p>
-
-  <dl>
-   <dt>Simplicity</dt>
-   <dd>No extra processors or software libraries are necessary to use JSON-LD
-     in its most basic form. The language provides 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>A JSON-LD document is always a valid JSON document. This ensures that
-    all of the standard JSON libraries work seamlessly with JSON-LD documents.</dd>
-   <dt>Expressiveness</dt>
-   <dd>The syntax serializes directed graphs. This ensures that almost
-    every real world data model can be expressed.</dd>
-   <dt>Terseness</dt>
-   <dd>The JSON-LD syntax is 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 ensures a smooth and simple transition from existing
-     JSON-based systems. In many cases,
-     zero edits to the JSON document and the addition of one line to the HTTP response
-     should suffice (see <a class="sectionRef sec-ref" href="#interpreting-json-as-json-ld">section 6.8 Interpreting JSON as JSON-LD</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 a complex undertaking.
-     In these instances, rather than extending JSON-LD to support
-     esoteric use cases, 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. JSON-LD focuses on simplicity when
-     possible.</dd>
-    <dt>Usable as RDF</dt>
-    <dd>JSON-LD is usable by developers as
-      idiomatic JSON, with no need to understand RDF [<cite><a class="bibref" href="#bib-RDF11-CONCEPTS">RDF11-CONCEPTS</a></cite>].
-      JSON-LD is also usable as RDF, so people intending to use JSON-LD
-      with RDF tools will find it can be used like any other RDF syntax.
-      Complete details of how JSON-LD relates to RDF are in section
-      <a href="#relationship-to-rdf" class="sec-ref"><span class="secno">9.</span> <span class="sec-title">Relationship to RDF</span></a>.</dd>
-  </dl>
-</section>
-
-<section class="normative" id="terminology">
-  <!--OddPage--><h2 aria-level="1" role="heading" id="h2_terminology"><span class="secno">3. </span>Terminology</h2>
-
-  <section class="normative" id="general-terminology">
-    <h3 aria-level="2" role="heading" id="h3_general-terminology"><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. In contrast to JSON,
-        in JSON-LD the keys in an object must be unique.</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 specifically defined (see <a class="sectionRef sec-ref" href="#sets-and-lists">section 6.11 Sets and Lists</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).</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 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 class="informative" id="data-model-overview">
-    <h3 aria-level="2" role="heading" id="h3_data-model-overview"><span class="secno">3.2 </span>Data Model Overview</h3><p><em>This section is non-normative.</em></p>
-
-    <p>Generally speaking, the data model used for JSON-LD is a labeled,
-      directed <a class="tref internalDFN" title="graph" href="#dfn-graph">graph</a>. The graph contains
-      <a class="tref internalDFN" title="node" href="#dfn-node">nodes</a>, which are connected by
-      <a class="tref internalDFN" title="edge" href="#dfn-edge">edges</a>. A <a class="tref internalDFN" title="node" href="#dfn-node">node</a> is typically data
-      such as 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="typed-value" href="#dfn-typed-value">typed values</a> (like dates and times)
-      or an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.
-      There is also a special class of <a class="tref internalDFN" title="node" href="#dfn-node">node</a> called a
-      <a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">blank node</a>, which is typically used to express data that does
-      not have a global identifier like an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.
-      <a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">Blank nodes</a> are identified using a
-      <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifier</a>. This simple data model is incredibly
-      flexible and powerful, capable of modeling almost any kind of
-      data. For a deeper explanation of the data model, see
-      section <a href="#data-model" class="sec-ref"><span class="secno">7.</span> <span class="sec-title">Data Model</span></a>.
-    </p>
-
-    <p>Developers who are familiar with Linked Data technologies will
-    recognize the data model as the RDF Data Model. To dive deeper into how
-    JSON-LD and RDF are related, see
-    section <a href="#relationship-to-rdf" class="sec-ref"><span class="secno">9.</span> <span class="sec-title">Relationship to RDF</span></a>.
-    </p>
-  </section>
-
-  <section class="normative" id="syntax-tokens-and-keywords">
-    <h3 aria-level="2" role="heading" id="h3_syntax-tokens-and-keywords"><span class="secno">3.3 </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
-        <a class="sectionRef sec-ref" href="#the-context">section 5.1 The Context</a>.</dd>
-      <dt><code>@id</code></dt>
-      <dd>Used to uniquely identify <em>things</em> that are being described in the document
-        with <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> or
-        <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifiers</a>. This keyword
-        is described in <a class="sectionRef sec-ref" href="#node-identifiers">section 5.3 Node Identifiers</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 class="sectionRef sec-ref" href="#string-internationalization">section 6.9 String Internationalization</a> and
-        <a class="sectionRef sec-ref" href="#typed-values">section 6.4 Typed Values</a>.</dd>
-      <dt><code>@language</code></dt>
-      <dd>Used to specify the language for a particular string value or the default
-        language of a JSON-LD document. This keyword is described in
-        <a class="sectionRef sec-ref" href="#string-internationalization">section 6.9 String Internationalization</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
-        <a class="sectionRef sec-ref" href="#typed-values">section 6.4 Typed Values</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 <a class="sectionRef sec-ref" href="#sets-and-lists">section 6.11 Sets and Lists</a>.</dd>
-      <dt><code>@list</code></dt>
-      <dd>Used to express an ordered set of data.
-        This keyword is described in <a class="sectionRef sec-ref" href="#sets-and-lists">section 6.11 Sets and Lists</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
-         <a class="sectionRef sec-ref" href="#sets-and-lists">section 6.11 Sets and Lists</a>.</dd>
-      <dt><code>@reverse</code></dt>
-      <dd>Used to express reverse properties. This keyword is described in
-        <a class="sectionRef sec-ref" href="#reverse-properties">section 6.12 Reverse Properties</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 <a class="sectionRef sec-ref" href="#data-indexing">section 6.16 Data Indexing</a>.</dd>
-      <dt><code>@base</code></dt>
-      <dd>Used to set the base <abbr title="Internationalized Resource Identifier">IRI</abbr> against which <a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">relative IRIs</a>
-        are resolved. This keyword is described in <a class="sectionRef sec-ref" href="#base-iri">section 6.1 Base IRI</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 <a class="sectionRef sec-ref" href="#default-vocabulary">section 6.2 Default Vocabulary</a>.</dd>
-      <dt><code>@graph</code></dt><dd>Used to express a <a class="tref internalDFN" title="graph" href="#dfn-graph">graph</a>.
-        This keyword is described in <a class="sectionRef sec-ref" href="#named-graphs">section 6.13 Named Graphs</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>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 aria-level="1" role="heading" id="h2_conformance"><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. As well
-    as sections marked as non-normative, all authoring guidelines, diagrams, examples,
-    and notes in this specification are non-normative. Everything else in this
-    specification is normative.</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 appendix <a href="#json-ld-grammar" class="sec-ref"><span class="secno">8.</span> <span class="sec-title">JSON-LD Grammar</span></a>. JSON documents
-    can be interpreted as JSON-LD by following the normative statements in
-    <a class="sectionRef sec-ref" href="#interpreting-json-as-json-ld">section 6.8 Interpreting JSON as JSON-LD</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="informative" id="basic-concepts">
-  <!--OddPage--><h2 aria-level="1" role="heading" id="h2_basic-concepts"><span class="secno">5. </span>Basic Concepts</h2><p><em>This section is non-normative.</em></p>
-
-  <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 may contain keys that conflict with other
-    data sources. Furthermore, JSON has no
-    built-in support for hyperlinks, which are a fundamental building block on
-    the Web. Let's start by looking 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 to humans that the data is about a person whose
-    <code>name</code> 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
-    tokens such as "name", "homepage", etc.</p>
-
-  <p>Linked Data, 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 use <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>
-    to assign unambiguous identifiers to data that may be of use to other developers.
-    It is useful for <a class="tref internalDFN" title="term" href="#dfn-term">terms</a>,
-    like <code>name</code> and <code>homepage</code>, 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. This process is known as <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>
-    dereferencing.</p>
-
-  <p>Leveraging the popular <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>, ← The '@id' keyword means 'This value is an identifier that is an IRI'
-  "<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 class="informative" id="the-context">
-    <h3 aria-level="2" role="heading" id="h3_the-context"><span class="secno">5.1 </span>The Context</h3><p><em>This section is non-normative.</em></p>
-
-    <p>When two people communicate with one another, the conversation takes
-    place in a shared environment, typically called
-    "the context of the conversation". This shared context allows the
-    individuals to use shortcut terms, like the first name of a mutual friend,
-    to communicate more quickly but without losing accuracy. A context in
-    JSON-LD works in the same way. It allows two applications to use shortcut
-    terms to communicate with one another more efficiently, but without
-    losing accuracy.</p>
-
-    <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> 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", </span> ← This means that 'name' is shorthand for 'http://schema.org/name' <span class="diff">
-    "image": {
-      "@id": "http://schema.org/image", </span> ← This means that 'image' is shorthand for 'http://schema.org/image' <span class="diff">
-      "@type": "@id" </span> ← This means that a string value associated with 'image' should be interpreted as an identifier that is an IRI <span class="diff">
-    },
-    "homepage": {
-      "@id": "http://schema.org/url", </span> ← This means that 'homepage' is shorthand for 'http://schema.org/url' <span class="diff">
-      "@type": "@id" </span> ← This means that a string value associated with 'homepage' should be interpreted as an identifier that is an IRI <span class="diff">
-    }
-  }</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 <dfn title="expanded-term-definition" id="dfn-expanded-term-definition">expanded term definition</dfn>. The example above specifies that
-      the values of <code>image</code> and <code>homepage</code>, if they are
-      strings, are to be interpreted as
-      <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>. <a class="tref internalDFN" title="expanded-term-definition" href="#dfn-expanded-term-definition">Expanded term definitions</a>
-      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 string values associated with
-      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> (<code>"@type": "@id"</code>,
-      see <a class="sectionRef sec-ref" href="#iris">section 5.2 IRIs</a> for more details). This information 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>JSON documents can be interpreted as JSON-LD without having to be modified by
-      referencing a <a class="tref internalDFN" title="context" href="#dfn-context">context</a> via an HTTP Link Header
-      as described in <a class="sectionRef sec-ref" href="#interpreting-json-as-json-ld">section 6.8 Interpreting JSON as JSON-LD</a>. It is also
-      possible to apply a custom context using the JSON-LD API [<cite><a class="bibref" href="#bib-JSON-LD-API">JSON-LD-API</a></cite>].</p>
-
-    <p>In <a class="tref internalDFN" title="json-ld-document" href="#dfn-json-ld-document">JSON-LD documents</a>,
-      <a class="tref internalDFN" title="context" href="#dfn-context">contexts</a> may also be specified inline.
-      This has the advantage that documents can be processed even in the
-      absence of a connection to the Web. Ultimately, this is a modeling decision
-      and different use cases may require different handling.</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>
-
-    <p>This section only covers the most basic features of the JSON-LD
-    Context. More advanced features related to the JSON-LD Context are covered
-    in section <a href="#advanced-concepts" class="sec-ref"><span class="secno">6.</span> <span class="sec-title">Advanced Concepts</span></a>.
-    </p>
-  </section>
-
-<section class="informative" id="iris">
-  <h3 aria-level="2" role="heading" id="h3_iris"><span class="secno">5.2 </span>IRIs</h3><p><em>This section is non-normative.</em></p>
-
-  <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 Linked Data 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>.</p>
-
-  <p>A <a class="tref internalDFN" title="string" href="#dfn-string">string</a> is interpreted as an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> when it is the
-    value of an <code>@id</code> member:</p>
-
-  <div class="example"><div class="example-title"><span>Example 6</span>: Values of @id are interpreted as IRI</div><pre class="example">{
-...
-  "homepage": { "<span class="diff">@id</span>": "http://example.com/" }
-...
-}</pre></div>
-
-  <p>Values that are interpreted as <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>, can also be
-    expressed as <a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">relative IRIs</a>. For example,
-    assuming that the following document is located at
-    <code>http://example.com/about/</code>, the <a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
-    <code>../</code> would expand to <code>http://example.com/</code> (for more
-    information on where  <a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">relative IRIs</a> can be
-    used, please refer to section <a href="#json-ld-grammar" class="sec-ref"><span class="secno">8.</span> <span class="sec-title">JSON-LD Grammar</span></a>).</p>
-
-  <div class="example"><div class="example-title"><span>Example 7</span>: IRIs can be relative</div><pre class="example">{
-...
-  "homepage": { "<span class="diff">@id</span>": "../" }
-...
-}</pre></div>
-
-  <p><a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">Absolute IRIs</a> can be expressed directly
-    in the key position like so:</p>
-
-  <div class="example"><div class="example-title"><span>Example 8</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>.</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 9</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 <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>, such as <code>status</code>
-    in the example above, are not Linked Data and thus ignored when processed.</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, since 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 processing the data.
-    See <a class="sectionRef sec-ref" href="#type-coercion">section 6.5 Type Coercion</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>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> or <code>@vocab</code>.</li>
-  </ol>
-
-  <p>This section only covers the most basic features associated with IRIs
-  in JSON-LD. More advanced features related to IRIs are covered in
-  section <a href="#advanced-concepts" class="sec-ref"><span class="secno">6.</span> <span class="sec-title">Advanced Concepts</span></a>.
-  </p>
-
-</section>
-
-<section class="informative" id="node-identifiers">
-  <h3 aria-level="2" role="heading" id="h3_node-identifiers"><span class="secno">5.3 </span>Node Identifiers</h3><p><em>This section is non-normative.</em></p>
-
-  <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="graph" href="#dfn-graph">graph</a>, it is important that
-    <a class="tref internalDFN" title="node" href="#dfn-node">nodes</a> have an identifier. <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>
-    are a fundamental concept of Linked Data, for
-    <a class="tref internalDFN" title="node" href="#dfn-node">nodes</a> to be truly linked, dereferencing the
-    identifier should result in a representation of that <a class="tref internalDFN" title="node" href="#dfn-node">node</a>.
-    This may allow an application to retrieve further information about a
-    <a class="tref internalDFN" title="node" href="#dfn-node">node</a>.</p>
-
-  <p>In JSON-LD, 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":
-  {
-    ...
-    "name": "http://schema.org/name"
-  },
-  <span class="diff">"@id": "http://me.markus-lanthaler.com/"</span>,
-  "name": "Markus Lanthaler",
-  ...
-}</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://me.markus-lanthaler.com/</code>.</p>
-
-  <p>This section only covers the most basic features associated with
-  node identifiers in JSON-LD. More advanced features related to
-  node identifiers are covered in section <a href="#advanced-concepts" class="sec-ref"><span class="secno">6.</span> <span class="sec-title">Advanced Concepts</span></a>.
-  </p>
-
-</section>
-
-<section class="informative" id="specifying-the-type">
-<h3 aria-level="2" role="heading" id="h3_specifying-the-type"><span class="secno">5.4 </span>Specifying the Type</h3><p><em>This section is non-normative.</em></p>
-
-<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 Linked Data, 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>
-
-<p>This section only covers the most basic features associated with
-types in JSON-LD. More advanced features related to
-types are covered in section <a href="#advanced-concepts" class="sec-ref"><span class="secno">6.</span> <span class="sec-title">Advanced Concepts</span></a>.
-</p>
-
-</section>
-</section>
-
-<section class="normative" id="advanced-concepts">
-<!--OddPage--><h2 aria-level="1" role="heading" id="h2_advanced-concepts"><span class="secno">6. </span>Advanced Concepts</h2>
-
-<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 class="informative" id="base-iri">
-  <h3 aria-level="2" role="heading" id="h3_base-iri"><span class="secno">6.1 </span>Base <abbr title="Internationalized Resource Identifier">IRI</abbr></h3><p><em>This section is non-normative.</em></p>
-
-  <p>JSON-LD allows <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>s to be specified in a relative form which is
-    resolved against the document base according
-    <cite><a href="http://tools.ietf.org/html/rfc3986#section-5.1">section 5.1 Establishing a Base URI</a></cite>
-    of [<cite><a class="bibref" href="#bib-RFC3986">RFC3986</a></cite>]. The base <abbr title="Internationalized Resource Identifier">IRI</abbr> may be explicitly set with a <a class="tref internalDFN" title="context" href="#dfn-context">context</a>
-    using the <code>@base</code> keyword.</p>
-
-  <p>For example, if a JSON-LD document was retrieved from <code>http://example.com/document.jsonld</code>,
-    relative IRIs would resolve against that <abbr title="Internationalized Resource Identifier">IRI</abbr>:</p>
-
-  <div class="example"><div class="example-title"><span>Example 15</span>: Use a relative IRI as node identifier</div><pre class="example">{
-  "@context": {
-    "label": "http://www.w3.org/2000/01/rdf-schema#label"
-  },
-  <span class="diff">"@id": ""</span>,
-  "label": "Just a simple document"
-}</pre></div>
-
-  <p>This document uses an empty <code>@id</code>, which resolves to the document base.
-    However, if the document is moved to a different location, the <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> would change.
-    To prevent this without having to use 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="context" href="#dfn-context">context</a>
-    may define a <code>@base</code> mapping, to overwrite the base <abbr title="Internationalized Resource Identifier">IRI</abbr> for the document.</p>
-
-  <div class="example"><div class="example-title"><span>Example 16</span>: Setting the document base in a document</div><pre class="example">{
-  "@context": {
-    <span class="diff">"@base": "http://example.com/document.jsonld"</span>
-  },
-  "@id": "",
-  "label": "Just a simple document"
-}</pre></div>
-
-  <p>Setting <code>@base</code> to <a class="tref internalDFN" title="null" href="#dfn-null">null</a> will prevent
-    <a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">relative IRIs</a> to be expanded to
-    <a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">absolute IRIs</a>.</p>
-
-  <div class="issue atrisk"><div class="issue-title" aria-level="3" role="heading" id="h_issue_1"><span>Feature at Risk 10</span>: Support for @base: null </div><div class="atrisk">
-    <p class="atrisk-head">Note: This feature is
-      <a href="http://www.w3.org/2005/10/Process-20051014/tr#cfi">"at risk"</a> and may
-      be removed from this specification based on feedback. Please send feedback to
-      <a href="mailto:public-rdf-comments@w3.org">public-rdf-comments@w3.org</a>.
-      For the current status see
-      <a href="http://www.w3.org/2011/rdf-wg/wiki/JSON-LD_Features_at_Risk">features "at risk" in JSON-LD 1.0</a></p>
-   <p>Unlike many other serialization formats, JSON-LD allows to specify that
-    there is no base <abbr title="Internationalized Resource Identifier">IRI</abbr> from within the document (by setting <code>@base</code> to
-    <a class="tref internalDFN" title="null" href="#dfn-null">null</a>). The result is that the algorithm for establishing a base <abbr title="Internationalized Resource Identifier">IRI</abbr>
-    as specified in <a href="http://tools.ietf.org/html/rfc3986#section-5.1">RFC3986 section 5.1</a>
-    is overridden so relative IRIs remain relative IRIs even in the case that an <abbr title="Internationalized Resource Identifier">IRI</abbr>
-    would be available in one of the outer layers (e.g., the <abbr title="Internationalized Resource Identifier">IRI</abbr> used to retrieve
-    the document or an application supplied base <abbr title="Internationalized Resource Identifier">IRI</abbr>). Based on implementer feedback,
-    the Working Group may decide to remove this feature from JSON-LD 1.0.</p>
-  </div></div>
-
-  <p>Please note that the <code>@base</code> will be ignored if used in
-    external contexts.</p>
-</section>
-
-<section class="informative" id="default-vocabulary">
-  <h3 aria-level="2" role="heading" id="h3_default-vocabulary"><span class="secno">6.2 </span>Default Vocabulary</h3><p><em>This section is non-normative.</em></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> and 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 17</span>: Using a common vocabulary prefix</div><pre class="example">{
-  "@context": {
-    <span class="diff">"@vocab": "http://schema.org/"</span>
-  }
-  "@id": "http://example.org/places#BrewEats",
-  "@type": <span class="diff">"Restaurant"</span>,
-  <span class="diff">"name"</span>: "Brew Eats"
-  ...
-}</pre></div>
-
-  <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 not expand to 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 18</span>: Using the null keyword to ignore data</div><pre class="example">{
-  "@context":
-  {
-     "@vocab": "http://schema.org/",
-     <span class="diff">"databaseId": null</span>
-  },
-    "@id": "http://example.org/places#BrewEats",
-    "@type": "Restaurant",
-    "name": "Brew Eats",
-    <span class="diff">"databaseId"</span>: "23987520"
-}</pre></div>
-</section>
-
-<section class="informative" id="compact-iris">
-  <h3 aria-level="2" role="heading" id="h3_compact-iris"><span class="secno">6.3 </span>Compact IRIs</h3><p><em>This section is non-normative.</em></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>).
-    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 <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>
-    <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 to the <abbr title="Internationalized Resource Identifier">IRI</abbr>
-    <code>http://xmlns.com/foaf/0.1/name</code>.</p>
-
-  <div class="example"><div class="example-title"><span>Example 19</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>"
-...
-  },
-  "@type": "<span class="diff">foaf:Person</span>"
-  "<span class="diff">foaf:name</span>": "Dave Longley",
-...
-}</pre></div>
-
-  <p>In the example above, <code>foaf:name</code> expands to the <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>
-    <code>http://xmlns.com/foaf/0.1/name</code> and <code>foaf:Person</code> expands
-    to <code>http://xmlns.com/foaf/0.1/Person</code>.</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, the <em>prefix</em> 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>, and the <em>suffix</em> does not begin with two
-    slashes&nbsp;(<code>//</code>). The <a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> is expanded by
-    concatenating the <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> mapped to the <em>prefix</em> to the (possibly empty)
-    <em>suffix</em>. If the <em>prefix</em> is not defined in the <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>,
-    or the suffix begins with two slashes (such as in <code>http://example.com</code>),
-    the value is interpreted as <a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> instead. If the prefix is an
-    underscore (<code>_</code>), the value is interpreted as <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifier</a>
-    instead.</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 20</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 class="informative" id="typed-values">
-<h3 aria-level="2" role="heading" id="h3_typed-values"><span class="secno">6.4 </span>Typed Values</h3><p><em>This section is non-normative.</em></p>
-
-<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 a <a class="tref internalDFN" title="value-object" href="#dfn-value-object">value object</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 21</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
-  <em>dateTime</em> value because of the information specified in the
-  <code>@context</code>. A JSON-LD processor will interpret the example above
-  as follows:</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 22</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 data type of a particular value, such
-  as an integer, a floating point number, or a date.</p>
-
-<div class="example"><div class="example-title"><span>Example 23</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>,   &lt;- 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> &lt;- 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 example 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 class="informative" id="type-coercion">
-<h3 aria-level="2" role="heading" id="h3_type-coercion"><span class="secno">6.5 </span>Type Coercion</h3><p><em>This section is non-normative.</em></p>
-
-<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">keywords</a> <code>@id</code> or <code>@vocab</code> may be used
-  as value to indicate that within the body of a JSON-LD document, a <a class="tref internalDFN" title="string" href="#dfn-string">string</a> value of a
-  <a class="tref internalDFN" title="term" href="#dfn-term">term</a> coerced to <code>@id</code> or <code>@vocab</code> is to be interpreted as an
-  <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>. The difference between <code>@id</code> and <code>@vocab</code> is how values are expanded
-  to <a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">absolute IRIs</a>. <code>@vocab</code> first tries to expand the value
-  by interpreting it as <a class="tref internalDFN" title="term" href="#dfn-term">term</a>. If no matching <a class="tref internalDFN" title="term" href="#dfn-term">term</a> is found in the
-  <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a>, it tries to expand it as <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="absolute-iri" href="#dfn-absolute-iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
-  if there's a colon in the value; otherwise, it will expand the value using the
-  <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context's</a> vocabulary mapping, if present, or by interpreting it
-  as <a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>. Values coerced to <code>@id</code> in contrast are expanded as
-  <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="absolute-iri" href="#dfn-absolute-iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> if a colon is present; otherwise, they are interpreted
-  as <a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">relative <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> and <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>.</p>
-
-<div class="example"><div class="example-title"><span>Example 24</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"
-    }</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 example shown above would generate 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.com/people#john</td>
-  <td>http://xmlns.com/foaf/0.1/name</td>
-  <td>John Smith</td>
-  <td>&nbsp;</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><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a></td>
-</tr>
-<tr>
-  <td>http://work.example.com/jsmith/</td>
-  <td><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a></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 25</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.
-  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> representing
-  the term will always be expanded to <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> defined by the <code>@id</code>
-  key—regardless of whether a prefix is defined or not.</p>
-
-<p>Type coercion is always performed using the unexpanded value of the key. In the
-  example above, that means that type coercion is done looking for <code>foaf:age</code>
-  in the <a class="tref internalDFN" title="active-context" href="#dfn-active-context">active context</a> and not for the corresponding, expanded
-  <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> <code>http://xmlns.com/foaf/0.1/age</code>.</p>
-
-<div class="issue atrisk"><div class="issue-title" aria-level="3" role="heading" id="h_issue_1"><span>Feature at Risk 9</span>: Confusion related to context-sensitivity of @type</div><div class="atrisk">
-  <p class="atrisk-head">Note: This feature is
-    <a href="http://www.w3.org/2005/10/Process-20051014/tr#cfi">"at risk"</a> and may
-    be removed from this specification based on feedback. Please send feedback to
-    <a href="mailto:public-rdf-comments@w3.org">public-rdf-comments@w3.org</a>.
-    For the current status see
-    <a href="http://www.w3.org/2011/rdf-wg/wiki/JSON-LD_Features_at_Risk">features "at risk" in JSON-LD 1.0</a></p>
- <p>A number of JSON-LD document authors have been confused with the context
-  sensitivity of @type. When used in the context, it means 
-  "coerce the string value associated with the term to the following datatype."
-  When used in the body of a document in a JSON-LD object that represents a
-  node in the graph, it means "the rdf:type of the subject identified by @id
-  is the one that is the value associated with the @type keyword". When used
-  in expanded literal form, it means "the datatype of the value associated with
-  @value is the value associated with the @type keyword". This shifting of usage
-  has led to confusion that may be easily remedied by reading a tutorial or
-  the specification. It may also be that further modifications for declaring a
-  datatype may be required, such as introducing a "@coerce" or "@literalType"
-  keyword. Implementors are asked to pay particular attention to the 
-  feature and provide feedback on alternative ways to express the functionality
-  described above. The feature may remain in the specification as-is, or it may
-  be modified heavily after further implementation experience has been gathered.
- </p>
-</div></div>
-
-<div class="note"><div class="note-title" aria-level="3" role="heading" id="h_note_1"><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 class="informative" id="embedding">
-  <h3 aria-level="2" role="heading" id="h3_embedding"><span class="secno">6.6 </span>Embedding</h3><p><em>This section is non-normative.</em></p>
-
-  <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 26</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 class="informative" id="advanced-context-usage">
-  <h3 aria-level="2" role="heading" id="h3_advanced-context-usage"><span class="secno">6.7 </span>Advanced Context Usage</h3><p><em>This section is non-normative.</em></p>
-
-  <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 27</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
-    most-recently-defined-wins mechanism.</p>
-
-  <div class="example"><div class="example-title"><span>Example 28</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 29</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" aria-level="3" role="heading" id="h_note_2"><span>Note</span></div><p class="">When possible, the <a class="tref internalDFN" title="context" href="#dfn-context">context</a> definition should be put
-    at the top of a JSON-LD document. This makes the document easier to read and
-    might make streaming parsers more efficient. Documents that do not have the
-    <a class="tref internalDFN" title="context" href="#dfn-context">context</a> at the top are still conformant JSON-LD.</p></div>
-
-  <div class="note"><div class="note-title" aria-level="3" role="heading" id="h_note_3"><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&nbsp;<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. Terms starting with an&nbsp;<code>@</code> character that are not
-    <a class="tref internalDFN" title="keyword" href="#dfn-keyword">JSON-LD 1.0 keywords</a> are treated as any other term, i.e.,
-    they are ignored unless mapped to an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>. Furthermore, the use of
-    empty <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> (<code>""</code>) is not allowed as
-    not all programming languages are able to handle empty JSON keys.</p></div>
-</section>
-
-<section class="normative" id="interpreting-json-as-json-ld">
-  <h3 aria-level="2" role="heading" id="h3_interpreting-json-as-json-ld"><span class="secno">6.8 </span>Interpreting JSON as JSON-LD</h3>
-
-  <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 documents and provides an upgrade path for existing infrastructure
-    without breaking existing clients that rely on the <code>application/json</code>
-    media type or a media type with a <code>+json</code> suffix as defined in
-    [<cite><a class="bibref" href="#bib-RFC6839">RFC6839</a></cite>].</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>. A response <em class="rfc2119" title="MUST NOT">MUST NOT</em>
-    contain more than one 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.</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 30</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.1 200 OK
-...
-Content-Type: <span class="diff">application/json</span>
-<span class="diff">Link: &lt;http://json-ld.org/contexts/person.jsonld&gt;; 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 class="informative" id="string-internationalization">
-  <h3 aria-level="2" role="heading" id="h3_string-internationalization"><span class="secno">6.9 </span>String Internationalization</h3><p><em>This section is non-normative.</em></p>
-
-  <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 31</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>]. The default language applies to all
-    <a class="tref internalDFN" title="string" href="#dfn-string">string</a> values that are not <a href="#type-coercion">type coerced</a>.</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 32</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 33</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" aria-level="3" role="heading" id="h_note_4"><span>Note</span></div><p class="">Language associations are only applied to plain
-    <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">type coercion</a>
-    are not 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 34</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 a
-    <a class="tref internalDFN" title="value-object" href="#dfn-value-object">value object</a>:</p>
-
-  <div class="example"><div class="example-title"><span>Example 35</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 a <a class="tref internalDFN" title="value-object" href="#dfn-value-object">value object</a>:</p>
-
-  <div class="example"><div class="example-title"><span>Example 36</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 class="informative" id="iri-expansion-within-a-context">
-  <h3 aria-level="2" role="heading" id="h3_iri-expansion-within-a-context"><span class="secno">6.10 </span><abbr title="Internationalized Resource Identifier">IRI</abbr> Expansion within a Context</h3><p><em>This section is non-normative.</em></p>
-  <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 class="sectionRef sec-ref" href="#iris">section 5.2 IRIs</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 37</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 38</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 39</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 40</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>
-
-<div class="note"><div class="note-title" aria-level="3" role="heading" id="h_note_5"><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>
-
-<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 41</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 class="informative" id="sets-and-lists">
-<h3 aria-level="2" role="heading" id="h3_sets-and-lists"><span class="secno">6.11 </span>Sets and Lists</h3><p><em>This section is non-normative.</em></p>
-
-<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 42</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 example 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 43</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 example 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 44</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 45</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" aria-level="3" role="heading" id="h_note_6"><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>
-
-<div class="issue atrisk"><div class="issue-title" aria-level="3" role="heading" id="h_issue_2"><span>Feature at Risk 4</span>: Lists of lists and partial list conversion from RDF</div><div class="atrisk">
-  <p class="atrisk-head">Note: This feature is
-    <a href="http://www.w3.org/2005/10/Process-20051014/tr#cfi">"at risk"</a> and may
-    be removed from this specification based on feedback. Please send feedback to
-    <a href="mailto:public-rdf-comments@w3.org">public-rdf-comments@w3.org</a>.
-    For the current status see
-    <a href="http://www.w3.org/2011/rdf-wg/wiki/JSON-LD_Features_at_Risk">features "at risk" in JSON-LD 1.0</a></p>
- <p>The JSON-LD algorithms have been updated to support conversion of lists
-    of lists to <a class="tref internalDFN" title="list-object" href="#dfn-list-object">list objects</a> by preserving
-    the blank node head of the inner list. Lists of lists can, however, not be
-    represented directly in JSON-LD using the <code>@list</code> construct;
-    they have to be represented as a set of interlinked node objects using
-    RDF's rdf:first and rdf:rest properties. Implementors are asked to pay
-    particular attention to the feature and provide feedback on lists of lists
-    and partial lists. The feature may remain in the specification, or it may
-    be removed after further implementation experience has been gathered.
-    Similarly, partial list conversion in the RDF algorithms have been marked
-    as a feature at risk and may be removed from the specification based
-    on implementation feedback.</p>
-</div></div>
-
-<p>While <code>@list</code> is used to describe <em>ordered lists</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 class="sectionRef sec-ref" href="#compacted-document-form">section 6.18 Compacted Document Form</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>
-
-</section>
-
-<section class="informative" id="reverse-properties">
-  <h3 aria-level="2" role="heading" id="h3_reverse-properties"><span class="secno">6.12 </span>Reverse Properties</h3><p><em>This section is non-normative.</em></p>
-
-  <p>JSON-LD serializes directed <a class="tref internalDFN" title="graph" href="#dfn-graph">graphs</a>. That means that
-    every <a class="tref internalDFN" title="property" href="#dfn-property">property</a> points from a <a class="tref internalDFN" title="node" href="#dfn-node">node</a> to another <a class="tref internalDFN" title="node" href="#dfn-node">node</a>
-    or <a class="tref internalDFN" title="json-ld-value" href="#dfn-json-ld-value">value</a>. However, in some cases, it is desirable
-    to serialize in the reverse direction. Consider for example the case where a person
-    and its children should be described in a document. If the used vocabulary does not
-    provide a <em>children</em> <a class="tref internalDFN" title="property" href="#dfn-property">property</a> but just a <em>parent</em>
-    <a class="tref internalDFN" title="property" href="#dfn-property">property</a>, every <a class="tref internalDFN" title="node" href="#dfn-node">node</a> representing a child would have to
-    be expressed with a <a class="tref internalDFN" title="property" href="#dfn-property">property</a> pointing to the parent as in the following
-    example.</p>
-
-  <div class="example"><div class="example-title"><span>Example 46</span>: A document with children linking to their parent</div><pre class="example">[
-  {
-    <span class="diff">"@id": "#homer"</span>,
-    "http://example.com/vocab#name": "Homer"
-  },
-  {
-    "@id": "#bart",
-    "http://example.com/vocab#name": "Bart",
-    <span class="diff">"http://example.com/vocab#parent": { "@id": "#homer" }</span>
-  },
-  {
-    "@id": "#lisa",
-    "http://example.com/vocab#name": "Lisa",
-    <span class="diff">"http://example.com/vocab#parent": { "@id": "#homer" }</span>
-  }
-]</pre></div>
-
-  <p>Expressing such data is much simpler by using JSON-LD's <code>@reverse</code>
-    <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>:</p>
-
-  <div class="example"><div class="example-title"><span>Example 47</span>: A person and its children using a reverse property</div><pre class="example">{
-  "@id": "#homer",
-  "http://example.com/vocab#name": "Homer",
-  <span class="diff">"@reverse"</span>: {
-    <span class="diff">"http://example.com/vocab#parent"</span>: [
-      {
-        "@id": "#bart",
-        "http://example.com/vocab#name": "Bart"
-      },
-      {
-        "@id": "#lisa",
-        "http://example.com/vocab#name": "Lisa"
-      }
-    ]
-  }
-}</pre></div>
-
-  <p>The <code>@reverse</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> can also be used in
-    <a class="tref internalDFN" title="expanded-term-definition" href="#dfn-expanded-term-definition">expanded term definitions</a>
-    to create reverse properties as shown in the following example:</p>
-
-
-  <div class="example"><div class="example-title"><span>Example 48</span>: Using @reverse to define reverse properties</div><pre class="example">{
-  "@context": {
-    "name": "http://example.com/vocab#name",
-    <span class="diff">"children": { "@reverse": "http://example.com/vocab#parent" }</span>
-  },
-  "@id": "#homer",
-  "name": "Homer",
-  <span class="diff">"children"</span>: [
-    {
-      "@id": "#bart",
-      "name": "Bart"
-    },
-    {
-      "@id": "#lisa",
-      "name": "Lisa"
-    }
-  ]
-}</pre></div>
-</section>
-
-
-<section class="informative" id="named-graphs">
-  <h3 aria-level="2" role="heading" id="h3_named-graphs"><span class="secno">6.13 </span>Named Graphs</h3><p><em>This section is non-normative.</em></p>
-
-  <p>At times, it is necessary to make statements about a <a class="tref internalDFN" title="graph" href="#dfn-graph">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 49</span>: Identifying and making statements about a graph</div><pre class="example">{
-  "@context": {
-    "generatedAt": {
-      "@id": "http://www.w3.org/ns/prov#generatedAtTime",
-      "@type": "http://www.w3.org/2001/XMLSchema#date"
-    },
-    "Person": "http://xmlns.com/foaf/0.1/Person",
-    "name": "http://xmlns.com/foaf/0.1/name",
-    "knows": "http://xmlns.com/foaf/0.1/knows"
-  },
-  <span class="diff">"@id": "http://example.org/graphs/73",
-  "generatedAt": "2012-04-09",
-  "@graph":</span>
-  [
-    {
-      "@id": "http://manu.sporny.org/about#manu",
-      "@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/about#manu"
-    }
-  ]
-}</pre></div>
-
-  <p>The example above expresses a <a class="tref internalDFN" title="named-graph" href="#dfn-named-graph">named 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 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>&nbsp;</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/about#manu</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/about#manu</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/about#manu</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/about#manu</td>
-    <td></td>
-  </tr>
-  </tbody>
-  </table>
-
-  <p>When a JSON-LD document's top-level structure is an
-    <a class="tref internalDFN" title="json-object" href="#dfn-json-object">object</a> that contains no other
-    <a class="tref internalDFN" title="property" href="#dfn-property">properties</a> than <code>@graph</code> and
-    optionally <code>@context</code> (properties that are not 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> are ignored),
-    <code>@graph</code> is considered to express the otherwise implicit
-    <a class="tref internalDFN" title="default-graph" href="#dfn-default-graph">default graph</a>. This mechanism can be useful when a number
-    of <a class="tref internalDFN" title="node" href="#dfn-node">nodes</a> exist at the document's top level that
-    share the same <a class="tref internalDFN" title="context" href="#dfn-context">context</a>, which is, e.g., the case when a
-    document is <a href="#flattened-document-form">flattened</a>. The
-    <code>@graph</code> keyword collects such nodes in an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>
-    and allows the use of a shared context.</p>
-
-  <div class="example"><div class="example-title"><span>Example 50</span>: Using @graph to explicitly express the default graph</div><pre class="example">{
-  "@context": ...,
-  "<span class="diff">@graph</span>":
-  [
-    {
-      "@id": "http://manu.sporny.org/about#manu",
-      "@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/about#manu"
-    }
-  ]
-}</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. 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 51</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/about#manu",
-    "@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/about#manu"
-  }
-]</pre></div>
-
-</section>
-
-<section class="informative" id="identifying-blank-nodes">
-  <h3 aria-level="2" role="heading" id="h3_identifying-blank-nodes"><span class="secno">6.14 </span>Identifying Blank Nodes</h3><p><em>This section is non-normative.</em></p>
-
-  <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> with an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.
-    This type of node is called a <a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">blank node</a>. JSON-LD does not require
-    all nodes to be identified using <code>@id</code>. However, some graph topologies
-    may require identifiers to be serializable. Graphs containing loops, e.g., cannot
-    be serialized using embedding alone, <code>@id</code> must be used to connect the nodes.
-    In these situations, one can use <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifiers</a>,
-    which look like <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> using an underscore (<code>_</code>)
-    as scheme. 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 52</span>: Specifying a local blank node identifier</div><pre class="example">{
-   ...
-   "@id": "<span class="diff">_:n1</span>",
-   "name": "Secret Agent 1",
-   "knows":
-     {
-       "name": "Secret Agent 2",
-       "knows": { "@id": "<span class="diff">_:n1</span>" }
-     }
-}</pre></div>
-
-  <p>The example above contains information about to secret agents that cannot be identified
-    with an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>. While expressing that <em>agent&nbsp;1</em> knows <em>agent&nbsp;2</em> is possible
-    without using <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifiers</a>, it is
-    necessary assign <em>agent&nbsp;1</em> an identifier so that it can be referenced from
-    <em>agent&nbsp;2</em>.</p>
-  <p>It is worth nothing that blank node identifiers may be relabeled during processing.
-    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 class="informative" id="aliasing-keywords">
-  <h3 aria-level="2" role="heading" id="h3_aliasing-keywords"><span class="secno">6.15 </span>Aliasing Keywords</h3><p><em>This section is non-normative.</em></p>
-
-  <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 53</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.</p>
-</section>
-
-<section class="informative" id="data-indexing">
-  <h3 aria-level="2" role="heading" id="h3_data-indexing"><span class="secno">6.16 </span>Data Indexing</h3><p><em>This section is non-normative.</em></p>
-
-  <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 simple 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 54</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 class="sectionRef sec-ref" href="#compacted-document-form">section 6.18 Compacted Document Form</a> and
-    <a class="sectionRef sec-ref" href="#expanded-document-form">section 6.17 Expanded Document Form</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 class="informative" id="expanded-document-form">
-  <h3 aria-level="2" role="heading" id="h3_expanded-document-form"><span class="secno">6.17 </span>Expanded Document Form</h3><p><em>This section is non-normative.</em></p>
-
-  <p>The JSON-LD Processing 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 55</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 56</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><a href="#application-ld-json">JSON-LD's media type</a> defines a
-    <code>profile</code> parameter which can be used to signal or request
-    expanded document form. The profile URI identifying expanded document
-    form is <code>http://www.w3.org/ns/json-ld#expanded</code>.</p>
-</section>
-
-<section class="informative" id="compacted-document-form">
-  <h3 aria-level="2" role="heading" id="h3_compacted-document-form"><span class="secno">6.18 </span>Compacted Document Form</h3><p><em>This section is non-normative.</em></p>
-
-  <p>The JSON-LD Processing 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 applying a developer-supplied context to shorten <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>
-    to <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>
-    and JSON-LD values expressed in expanded form to simple values such as
-    <a class="tref internalDFN" title="string" href="#dfn-string">strings</a> or <a class="tref internalDFN" title="number" href="#dfn-number">numbers</a>.
-    Often this makes it simpler to work with document as the data is expressed in
-    application-specific terms. Compacted documents are also typically easier to read
-    for humans.</p>
-
-  <p>For example, assume the following JSON-LD input document:</p>
-
-  <div class="example"><div class="example-title"><span>Example 57</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 58</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 59</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><a href="#application-ld-json">JSON-LD's media type</a> defines a
-    <code>profile</code> parameter which can be used to signal or request
-    compacted document form. The profile URI identifying compacted document
-    form is <code>http://www.w3.org/ns/json-ld#compacted</code>.</p>
-</section>
-
-<section class="informative" id="flattened-document-form">
-  <h3 aria-level="2" role="heading" id="h3_flattened-document-form"><span class="secno">6.19 </span>Flattened Document Form</h3><p><em>This section is non-normative.</em></p>
-
-  <p>The JSON-LD Processing Algorithms and API specification [<cite><a class="bibref" href="#bib-JSON-LD-API">JSON-LD-API</a></cite>] defines
-    a method for <em>flattening</em> a JSON-LD document. Flattening collects all
-    properties of a <a class="tref internalDFN" title="node" href="#dfn-node">node</a> in a single <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> and labels
-    all <a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">blank nodes</a> with
-    <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifiers</a>.
-    This ensures a shape of the data and consequently may drastically simplify the code
-    required to process JSON-LD in certain applications.</p>
-
-  <p>For example, assume the following JSON-LD input document:</p>
-
-  <div class="example"><div class="example-title"><span>Example 60</span>: Sample JSON-LD document</div><pre class="example">{
-  "@context": {
-    "name": "http://xmlns.com/foaf/0.1/name",
-    "knows": "http://xmlns.com/foaf/0.1/knows"
-  },
-  "@id": "http://me.markus-lanthaler.com/",
-  "name": "Markus Lanthaler",
-  "knows": [
-    {
-      "@id": "http://manu.sporny.org/about#manu",
-      "name": "Manu Sporny"
-    },
-    {
-      "name": "Dave Longley"
-    }
-  ]
-}</pre></div>
-
-  <p>Running the JSON-LD Flattening algorithm against the JSON-LD input document in
-    the example above and using the same context would result in the following
-    output:</p>
-
-  <div class="example"><div class="example-title"><span>Example 61</span>: Flattened and compacted form for the previous example</div><pre class="example">{
-  "@context": {
-    "name": "http://xmlns.com/foaf/0.1/name",
-    "knows": "http://xmlns.com/foaf/0.1/knows"
-  },
-  "@graph": [
-    {
-      "@id": "_:b0",
-      "name": "Dave Longley"
-    },
-    {
-      "@id": "http://manu.sporny.org/about#manu",
-      "name": "Manu Sporny"
-    },
-    {
-      "@id": "http://me.markus-lanthaler.com/",
-      "name": "Markus Lanthaler",
-      "knows": [
-        { "@id": "http://manu.sporny.org/about#manu" },
-        { "@id": "_:b0" }
-      ]
-    }
-  ]
-}</pre></div>
-
-  <p><a href="#application-ld-json">JSON-LD's media type</a> defines a
-    <code>profile</code> parameter which can be used to signal or request
-    flattened document form. The profile URI identifying flattened document
-    form is <code>http://www.w3.org/ns/json-ld#flattened</code>. It can be
-    combined with the profile URI identifying
-    <a href="#expanded-document-form">expanded document form</a> or
-    <a href="#compacted-document-form">compacted document from</a>.</p>
-</section>
-
-<section class="informative" id="embedding-json-ld-in-html-documents">
-  <h3 aria-level="2" role="heading" id="h3_embedding-json-ld-in-html-documents"><span class="secno">6.20 </span>Embedding JSON-LD in HTML Documents</h3><p><em>This section is non-normative.</em></p>
-
-  <p>HTML script tags can be used to embed blocks of data in documents.
-    This way, JSON-LD content can be easily embedded in HTML by placing
-    it in a script element with the <code>type</code> attribute set to
-    <code>application/ld+json</code>.</p>
-
-  <div class="example"><div class="example-title"><span>Example 62</span>: Embedding JSON-LD in HTML</div><pre class="example"><span class="diff">&lt;script type="application/ld+json"&gt;</span>
-{
-  "@context": "http://json-ld.org/contexts/person.jsonld",
-  "@id": "http://dbpedia.org/resource/John_Lennon",
-  "name": "John Lennon",
-  "born": "1940-10-09",
-  "spouse": "http://dbpedia.org/resource/Cynthia_Lennon"
-}
-<span class="diff">&lt;/script&gt;</span></pre></div>
-
-  <p>Depending on how the HTML document is served, certain strings may need
-    to be escaped.</p>
-
-  <p>Defining how such data may be used is beyond the scope of this specification.
-    The embedded JSON-LD document might be extracted as is or, e.g., be
-    interpreted as RDF.</p>
-
-  <p>If JSON-LD content is extracted as RDF [<cite><a class="bibref" href="#bib-RDF11-CONCEPTS">RDF11-CONCEPTS</a></cite>], it should be expanded into an
-    <a class="tref externalDFN" title="rdf-dataset" href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-dataset">RDF Dataset</a> using the
-    <cite><a href="http://www.w3.org/TR/2013/CR-json-ld-api-20130822/#deserialize-json-ld-to-rdf-algorithm">Deserialize JSON-LD to RDF Algorithm</a></cite>
-    [<cite><a class="bibref" href="#bib-JSON-LD-API">JSON-LD-API</a></cite>].</p>
-</section>
-
-</section>
-
-<section class="normative" id="data-model">
-  <!--OddPage--><h2 aria-level="1" role="heading" id="h2_data-model"><span class="secno">7. </span>Data Model</h2>
-
-  <p>JSON-LD is a serialization format for Linked Data 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 the <dfn title="data-model" id="dfn-data-model">data model</dfn> which is
-    an extension of the RDF data model [<cite><a class="bibref" href="#bib-RDF11-CONCEPTS">RDF11-CONCEPTS</a></cite>]. The precise
-    details of how JSON-LD relates to the RDF data model are given in
-    <a class="sectionRef sec-ref" href="#relationship-to-rdf">section 9. Relationship to RDF</a>.</p>
-
-  <p>To ease understanding for developers unfamiliar with the RDF model, the
-    following summary is provided:</p>
-
-  <ul>
-    <li>A <dfn title="json-ld-document" id="dfn-json-ld-document">JSON-LD document</dfn> serializes a
-      <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset" class="externalDFN">generalized RDF Dataset</a>
-      [<cite><a class="bibref" href="#bib-RDF11-CONCEPTS">RDF11-CONCEPTS</a></cite>], which is a collection of <a class="tref internalDFN" title="graph" href="#dfn-graph">graphs</a>
-      that comprises exactly one <dfn title="default-graph" id="dfn-default-graph"><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-default-graph" class="externalDFN">default graph</a></dfn>
-      and zero or more <dfn title="named-graph" id="dfn-named-graph"><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-named-graph" class="externalDFN">named graphs</a></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 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> (the
-      <dfn title="graph-name" id="dfn-graph-name"><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-graph-name" class="externalDFN">graph name</a></dfn>)
-      and a <a class="tref internalDFN" title="graph" href="#dfn-graph">graph</a>. Whenever practical, 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>.</li>
-    <li>A <dfn title="graph" id="dfn-graph"><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-graph" class="externalDFN">graph</a></dfn>
-      is a labeled directed graph, i.e., a set of <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"><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-property" class="externalDFN">properties</a></dfn>.
-      Whenever practical, an <a class="tref internalDFN" title="edge" href="#dfn-edge">edge</a> <em class="rfc2119" title="SHOULD">SHOULD</em> be labeled with an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</li>
-    <li>Every <dfn title="node" id="dfn-node"><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-node" class="externalDFN">node</a></dfn>
-      is 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="graph" href="#dfn-graph">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"><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-iri" class="externalDFN">IRI</a></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="graph" href="#dfn-graph">graph</a> <em class="rfc2119" title="SHOULD">SHOULD</em> return a Linked Data document describing
-      the resource denoted by that <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> when being dereferenced.</li>
-    <li>A <dfn title="blank-node" id="dfn-blank-node"><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-blank-node" class="externalDFN">blank node</a></dfn>
-      is a <a class="tref internalDFN" title="node" href="#dfn-node">node</a> which is neither an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
-      nor a <a class="tref internalDFN" title="json-ld-value" href="#dfn-json-ld-value">JSON-LD value</a>, nor a <a class="tref internalDFN" title="list" href="#dfn-list">list</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"><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-blank-node-identifier" class="externalDFN">blank node identifier</a></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="typed-value" href="#dfn-typed-value">typed value</a>, a <a class="tref internalDFN" title="string" href="#dfn-string">string</a> (which is interpreted
-      as <a class="tref internalDFN" title="typed-value" href="#dfn-typed-value">typed value</a> with type <code>xsd:string</code>), a <a class="tref internalDFN" title="number" href="#dfn-number">number</a>
-      (<a class="tref internalDFN" title="number" href="#dfn-number">numbers</a> with a non-zero fractional part, i.e., the result of a modulo‑1 operation,
-      are interpreted as <a class="tref internalDFN" title="typed-value" href="#dfn-typed-value">typed values</a> with type <code>xsd:double</code>, all other
-      <a class="tref internalDFN" title="number" href="#dfn-number">numbers</a> are interpreted as <a class="tref internalDFN" title="typed-value" href="#dfn-typed-value">typed values</a>
-      with type <code>xsd:integer</code>), <a class="tref internalDFN" title="true" href="#dfn-true">true</a> or <a class="tref internalDFN" title="false" href="#dfn-false">false</a> (which are interpreted as
-      <a class="tref internalDFN" title="typed-value" href="#dfn-typed-value">typed values</a> with type <code>xsd:boolean</code>),
-      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
-      <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</li>
-    <li>A <dfn title="language-tagged-string" id="dfn-language-tagged-string"><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-language-tagged-string" class="externalDFN">language-tagged string</a></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 Classes of Conformance</a>
-      of [<cite><a class="bibref" href="#bib-BCP47">BCP47</a></cite>].</li>
-    <li>A <dfn title="list" id="dfn-list">list</dfn> is a 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>.
-      <a class="tref internalDFN" title="list" href="#dfn-list">Lists</a> are interpreted as
-      <a href="http://www.w3.org/TR/rdf11-mt/#rdf-collections" class="externalDFN">RDF list structures</a> [<cite><a class="bibref" href="#bib-RDF11-MT">RDF11-MT</a></cite>].</li>
-  </ul>
-
-  <div class="issue atrisk"><div class="issue-title" aria-level="2" role="heading" id="h_issue_3"><span>Feature at Risk 3</span>: Allow blank nodes to be used as properties</div><div class="atrisk">
-    <p class="atrisk-head">Note: This feature is
-      <a href="http://www.w3.org/2005/10/Process-20051014/tr#cfi">"at risk"</a> and may
-      be removed from this specification based on feedback. Please send feedback to
-      <a href="mailto:public-rdf-comments@w3.org">public-rdf-comments@w3.org</a>.
-      For the current status see
-      <a href="http://www.w3.org/2011/rdf-wg/wiki/JSON-LD_Features_at_Risk">features "at risk" in JSON-LD 1.0</a></p>
-    <p>RDF does not currently allow a <a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">blank node</a> to be
-      used as a <a class="tref internalDFN" title="property" href="#dfn-property">property</a>, while JSON-LD
-      does. JSON-LD to RDF deserializers can work around this restriction, when interpreting
-      JSON-LD as RDF, by transforming such <a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">blank nodes</a> to
-      <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>, by minting new "Skolem IRIs" as per
-      <cite><a href="http://www.w3.org/TR/rdf11-concepts/#section-skolemization">Replacing Blank Nodes with IRIs</a></cite>
-      of [<cite><a class="bibref" href="#bib-RDF11-CONCEPTS">RDF11-CONCEPTS</a></cite>]. Based on feedback from implementors, the
-      Working Group may decide to disallow blank node properties in JSON-LD.
-      If this change would affect you, be sure to send in a comment.</p>
-  </div></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="data-model" href="#dfn-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. One result of this rule
-    is 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>,
-    a <a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">blank node</a>, or <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> will be ignored.</p>
-
-  <p style="text-align: center"><img src="linked-data-graph.png" title="An illustration of the data model" alt="An illustration of the data model"></p>
-  <p style="text-align: center">Figure&nbsp;1: An illustration of the data model.</p>
-</section>
-
-<section class="normative" id="json-ld-grammar">
-  <!--OddPage--><h2 aria-level="1" role="heading" id="h2_json-ld-grammar"><span class="secno">8. </span>JSON-LD Grammar</h2>
-
-  <p>This appendix restates the syntactic conventions described in the
-    previous sections more formally.</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 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 an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> whose elements are each
-    <a class="tref internalDFN" title="node-object" href="#dfn-node-object">node objects</a> at the top level.</p>
-
-  <p>In contrast to JSON, in JSON-LD the keys in <a class="tref internalDFN" title="json-object" href="#dfn-json-object">objects</a>
-    <em class="rfc2119" title="MUST">MUST</em> be unique.</p>
-
-  <div class="note"><div class="note-title" aria-level="2" role="heading" id="h_note_7"><span>Note</span></div><p class="">JSON-LD allows <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a> to be aliased
-    (see <a class="sectionRef sec-ref" href="#aliasing-keywords">section 6.15 Aliasing Keywords</a> for details). 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>
-
-  <section class="normative" id="terms">
-    <h3 aria-level="2" role="heading" id="h3_terms"><span class="secno">8.1 </span>Terms</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 term <em class="rfc2119" title="MUST NOT">MUST NOT</em>
-      be an empty <a class="tref internalDFN" title="string" href="#dfn-string">string</a> (<code>""</code>) as not all programming languages
-      are able to handle empty JSON keys.</p>
-
-    <p>See <a class="sectionRef sec-ref" href="#the-context">section 5.1 The Context</a> and
-      <a class="sectionRef sec-ref" href="#iris">section 5.2 IRIs</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 class="normative" id="node-objects">
-    <h3 aria-level="2" role="heading" id="h3_node-objects"><span class="secno">8.2 </span>Node Objects</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="graph" href="#dfn-graph">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="graph" href="#dfn-graph">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> need to be 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>@id</code>,</li>
-      <li><code>@graph</code>,</li>
-      <li><code>@type</code>,</li>
-      <li><code>@reverse</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 <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="relative-iri" href="#dfn-relative-iri">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a class="tref internalDFN" title="context-definition" href="#dfn-context-definition">context definition</a>, or
-      an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> composed of any of these.</p>
-
-    <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 class="sectionRef sec-ref" href="#node-identifiers">section 5.3 Node Identifiers</a>,
-      <a class="sectionRef sec-ref" href="#compact-iris">section 6.3 Compact IRIs</a>, and
-      <a class="sectionRef sec-ref" href="#identifying-blank-nodes">section 6.14 Identifying Blank Nodes</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>@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 class="sectionRef sec-ref" href="#named-graphs">section 6.13 Named Graphs</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>@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 class="sectionRef sec-ref" href="#specifying-the-type">section 5.4 Specifying the Type</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>@reverse</code> key,
-      its value <em class="rfc2119" title="MUST">MUST</em> be a <a class="tref internalDFN" title="json-object" href="#dfn-json-object">JSON object</a> containing members representing reverse
-      properties. Each value of such a reverse property <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>, 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="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifier</a>,
-      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> containing a combination of these.</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
-      <a class="sectionRef sec-ref" href="#data-indexing">section 6.16 Data Indexing</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="MAY">MAY</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 keys that expand
-      to an <a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> <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="value-object" href="#dfn-value-object">value object</a>,</li>
-      <li><a class="tref internalDFN" title="list-object" href="#dfn-list-object">list object</a>,</li>
-      <li><a class="tref internalDFN" title="set-object" href="#dfn-set-object">set object</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 class="normative" id="value-objects">
-    <h3 aria-level="2" role="heading" id="h3_value-objects"><span class="secno">8.3 </span>Value Objects</h3>
-
-    <p>A <dfn title="value-object" id="dfn-value-object">value object</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>A <a class="tref internalDFN" title="value-object" href="#dfn-value-object">value 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> containing the
-      <code>@value</code> key. It <em class="rfc2119" title="MAY">MAY</em> also contain a <code>@type</code>,
-      a <code>@language</code>, an <code>@index</code>, or an <code>@context</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.
-      A <a class="tref internalDFN" title="value-object" href="#dfn-value-object">value object</a> <em class="rfc2119" title="MUST NOT">MUST NOT</em> contain any other keys that expand to an
-      <a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> or <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>.</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 <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 class="sectionRef sec-ref" href="#typed-values">section 6.4 Typed Values</a> and
-      <a class="sectionRef sec-ref" href="#string-internationalization">section 6.9 String Internationalization</a>
-      for more information on <a class="tref internalDFN" title="value-object" href="#dfn-value-object">value objects</a>.</p>
-  </section>
-
-  <section class="normative" id="lists-and-sets">
-    <h3 aria-level="2" role="heading" id="h3_lists-and-sets"><span class="secno">8.4 </span>Lists and Sets</h3>
-
-    <p>A <a class="tref internalDFN" title="list" href="#dfn-list">list</a> represents an <em>ordered</em> set of values. A set
-      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 <a class="tref internalDFN" title="array" href="#dfn-array">array</a> 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="#compacted-document-form">compact document form</a>.
-      This simplifies post-processing of the data as the data is always in a
-      deterministic form.</p>
-
-    <p>A <dfn title="list-object" id="dfn-list-object">list object</dfn> <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
-      keys that expand to an <a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> or <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> other
-      than <code>@list</code>, <code>@context</code>, and <code>@index</code>.</p>
-
-    <p>A <dfn title="set-object" id="dfn-set-object">set object</dfn> <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
-      keys that expand to an <a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> or <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> other
-      than <code>@list</code>, <code>@context</code>, and <code>@index</code>.
-      Please note that the <code>@index</code> key will be ignored 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 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="value-object" href="#dfn-value-object">value object</a>, or</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 class="sectionRef sec-ref" href="#sets-and-lists">section 6.11 Sets and Lists</a> for further discussion on sets and lists.</p>
-  </section>
-
-  <section class="normative" id="language-maps">
-    <h3 aria-level="2" role="heading" id="h3_language-maps"><span class="secno">8.5 </span>Language Maps</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 <a class="tref internalDFN" title="string" href="#dfn-string">strings</a> representing
-      [<cite><a class="bibref" href="#bib-BCP47">BCP47</a></cite>] language codes with and the values <em class="rfc2119" title="MUST">MUST</em> be any of the following types:</p>
-
-    <ul>
-      <li><a class="tref internalDFN" title="null" href="#dfn-null">null</a>,</li>
-      <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 of the above possibilities</li>
-    </ul>
-
-    <p>See <a class="sectionRef sec-ref" href="#string-internationalization">section 6.9 String Internationalization</a> for further discussion
-      on language maps.</p>
-  </section>
-
-  <section class="normative" id="index-maps">
-    <h3 aria-level="2" role="heading" id="h3_index-maps"><span class="secno">8.6 </span>Index Maps</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="value-object" href="#dfn-value-object">value object</a>,</li>
-      <li><a class="tref internalDFN" title="list-object" href="#dfn-list-object">list object</a>,</li>
-      <li><a class="tref internalDFN" title="set-object" href="#dfn-set-object">set object</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 class="sectionRef sec-ref" href="#data-indexing">section 6.16 Data Indexing</a> for further information on this topic.</p>
-  </section>
-
-<section class="normative" id="context-definitions">
-  <h3 aria-level="2" role="heading" id="h3_context-definitions"><span class="secno">8.7 </span>Context Definitions</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> whose
-    keys <em class="rfc2119" title="MUST">MUST</em> either be <a class="tref internalDFN" title="term" href="#dfn-term">terms</a>,
-    <a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">compact IRIs</a>, <a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">absolute IRIs</a>,
-    or the <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a> <code>@language</code>, <code>@base</code>,
-    and <code>@vocab</code>.</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>@base</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 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> be a <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="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifier</a>, a <a class="tref internalDFN" title="term" href="#dfn-term">term</a>, or <a class="tref internalDFN" title="null" href="#dfn-null">null</a>.</p>
-
-  <p>The value of keys that are not <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a> <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="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>,
-    a <a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">blank node identifier</a>, a <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</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="MUST">MUST</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>@reverse</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 an <a class="tref internalDFN" title="expanded-term-definition" href="#dfn-expanded-term-definition">expanded term definition</a> has an <code>@reverse</code> member,
-    it <em class="rfc2119" title="MUST NOT">MUST NOT</em> have an <code>@id</code> member at the same time. If an
-    <code>@container</code> member exists, its value <em class="rfc2119" title="MUST">MUST</em> be <a class="tref internalDFN" title="null" href="#dfn-null">null</a>,
-    <code>@set</code>, or <code>@index</code>.</p>
-
-  <p>If the term being defined is not a <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="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>,
-    or a <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>@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>, <a class="tref internalDFN" title="null" href="#dfn-null">null</a>, or the one of the
-    <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a> <code>@id</code> or <code>@vocab</code>.</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 class="sectionRef sec-ref" href="#the-context">section 5.1 The Context</a> for further discussion on contexts.</p>
-</section>
-
-</section>
-
-<section class="normative" id="relationship-to-rdf">
-  <!--OddPage--><h2 aria-level="1" role="heading" id="h2_relationship-to-rdf"><span class="secno">9. </span>Relationship to RDF</h2>
-
-  <p>JSON-LD is a
-    <a class="tref externalDFN" title="concrete-rdf-syntax" href="http://www.w3.org/TR/rdf11-concepts/#dfn-concrete-rdf-syntax">concrete RDF syntax</a>
-    as described in [<cite><a class="bibref" href="#bib-RDF11-CONCEPTS">RDF11-CONCEPTS</a></cite>]. Hence, a JSON-LD document is both an
-    RDF document <em>and</em> a JSON document and correspondingly represents an
-    instance of an RDF data model. However, JSON-LD also extends the RDF data 
-    model to optionally allow JSON-LD to serialize
-    <a class="tref externalDFN" title="generalized-rdf-datasets" href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset">Generalized RDF Datasets</a>.
-    The JSON-LD extensions to the RDF data model are:</p>
-
-  <ul>
-    <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>. This
-      means that JSON-LD serializes
-      <a class="tref externalDFN" title="generalized-rdf-datasets" href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset">generalized RDF Datasets</a>.</li>
-    <li>In JSON-LD <a class="tref internalDFN" title="list" href="#dfn-list">lists</a> 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 Processing Algorithms and API specification [<cite><a class="bibref" href="#bib-JSON-LD-API">JSON-LD-API</a></cite>]
-      defines the <a href="http://www.w3.org/TR/2013/CR-json-ld-api-20130822/#data-round-tripping">conversion rules</a>
-      between JSON's native data types and RDF's counterparts to allow 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 directly
-    interpreted as RDF as described in RDF 1.1 Concepts [<cite><a class="bibref" href="#bib-RDF11-CONCEPTS">RDF11-CONCEPTS</a></cite>].</p>
-
-  <p>For authors and developers working with <a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">blank nodes</a>
-    as <a class="tref internalDFN" title="property" href="#dfn-property">properties</a> when deserializing to RDF,
-    three potential approaches are suggested:</p>
-
-  <ul>
-    <li>If the author is not yet ready to commit to a stable <abbr title="Internationalized Resource Identifier">IRI</abbr>, the
-      property should be mapped to an <abbr title="Internationalized Resource Identifier">IRI</abbr> that is documented as unstable.</li>
-    <li>If the developer wishes to use <a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">blank nodes</a>
-      as <a class="tref internalDFN" title="property" href="#dfn-property">properties</a> and also wishes to interpret the
-      data as a
-      <a class="tref externalDFN" title="generalized-rdf-dataset" href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset">generalized RDF Dataset</a>,
-      there is an option, <i>produce generalized RDF</i>, in the
-      Deserialize JSON-LD to RDF algorithm [<cite><a class="bibref" href="#bib-JSON-LD-API">JSON-LD-API</a></cite>] to do so. Note that a
-      <a class="tref externalDFN" title="generalized-rdf-dataset" href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset">generalized RDF Dataset</a>
-      is an extension of RDF; it does not conform to the RDF standard.</li>
-    <li>If the author or developer wishes to use <a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">blank nodes</a>
-      as <a class="tref internalDFN" title="property" href="#dfn-property">properties</a> and wishes to interpret the data
-      as a standard (non-generalized)
-      <a class="tref externalDFN" title="rdf-dataset" href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-dataset">RDF Dataset</a>,
-      it is possible to losslessly interpret JSON-LD as RDF by transforming
-      <a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">blank nodes</a> used as
-      <a class="tref internalDFN" title="property" href="#dfn-property">properties</a> to <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>,
-      by minting new "Skolem IRIs" as per
-      <cite><a href="http://www.w3.org/TR/rdf11-concepts/#section-skolemization">Replacing Blank Nodes with IRIs</a></cite>
-      of [<cite><a class="bibref" href="#bib-RDF11-CONCEPTS">RDF11-CONCEPTS</a></cite>].</li>
-  </ul>
-
-  <p>The normative algorithms for interpreting JSON-LD as RDF and serializing
-    RDF as JSON-LD are specified in the JSON-LD Processing 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
-    <a class="tref externalDFN" title="generalized-rdf-datasets" href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset">generalized RDF Datasets</a>, it can
-    also be used as a <a class="tref externalDFN" title="rdf-graph-source" href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-source">RDF graph source</a>.
-    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 languages such as Turtle and JSON-LD
-    using content negotiation.</p>
-
-  <div class="note"><div class="note-title" aria-level="2" role="heading" id="h_note_8"><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 class="informative" id="serializing-deserializing-rdf">
-    <h3 aria-level="2" role="heading" id="h3_serializing-deserializing-rdf"><span class="secno">9.1 </span>Serializing/Deserializing RDF</h3><p><em>This section is non-normative.</em></p>
-
-    <p>The process of serializing RDF as JSON-LD and deserializing JSON-LD to RDF
-      depends on executing the algorithms defined in
-      <cite><a href="http://www.w3.org/TR/2013/CR-json-ld-api-20130822/#rdf-serialization-deserialization-algorithms">RDF Serialization-Deserialization Algorithms</a></cite>
-      in the JSON-LD Processing Algorithms and API specification [<cite><a class="bibref" href="#bib-JSON-LD-API">JSON-LD-API</a></cite>].
-      It is beyond the scope of this document to detail these algorithms any further,
-      but a summary of the necessary operations is provided to illustrate the process.</p>
-
-    <p>The procedure to deserialize a JSON-LD document to RDF involves the
-      following steps:</p>
-
-    <ol>
-      <li>Expand the JSON-LD document, removing any context; this ensures
-        that properties, types, and values are given their full representation
-        as <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> and expanded values. Expansion
-        is discussed further in <a class="sectionRef sec-ref" href="#expanded-document-form">section 6.17 Expanded Document Form</a>.</li>
-      <li>Flatten the document, which turns the document into an array of
-        <a class="tref internalDFN" title="node-object" href="#dfn-node-object">node objects</a>. Flattening is discussed
-        further in <a class="sectionRef sec-ref" href="#flattened-document-form">section 6.19 Flattened Document Form</a>.</li>
-      <li>Turn each <a class="tref internalDFN" title="node-object" href="#dfn-node-object">node object</a> into a series of
-        <a class="tref externalDFN" title="rdf-triples" href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple">RDF triples</a>.</li>
-    </ol>
-
-    <p>For example, consider the following JSON-LD document in compact form:</p>
-
-    <div class="example"><div class="example-title"><span>Example 63</span>: Sample JSON-LD document</div><pre class="example">{
-  "@context": {
-    "name": "http://xmlns.com/foaf/0.1/name",
-    "knows": "http://xmlns.com/foaf/0.1/knows"
-  },
-  "@id": "http://me.markus-lanthaler.com/",
-  "name": "Markus Lanthaler",
-  "knows": [
-    {
-      "@id": "http://manu.sporny.org/about#manu",
-      "name": "Manu Sporny"
-    },
-    {
-      "name": "Dave Longley"
-    }
-  ]
-}</pre></div>
-
-    <p>Running the JSON-LD Expansion and Flattening algorithms against the
-      JSON-LD input document in the example above would result in the
-      following output:</p>
-
-    <div class="example"><div class="example-title"><span>Example 64</span>: Flattened and expanded form for the previous example</div><pre class="example">[
-  {
-    "@id": "_:b0",
-    "http://xmlns.com/foaf/0.1/name": "Dave Longley"
-  },
-  {
-    "@id": "http://manu.sporny.org/about#manu",
-    "http://xmlns.com/foaf/0.1/name": "Manu Sporny"
-  },
-  {
-    "@id": "http://me.markus-lanthaler.com/",
-    "http://xmlns.com/foaf/0.1/name": "Markus Lanthaler",
-    "http://xmlns.com/foaf/0.1/knows": [
-      { "@id": "http://manu.sporny.org/about#manu" },
-      { "@id": "_:b0" }
-    ]
-  }
-]</pre></div>
-
-    <p>Deserializing this to RDF now is a straightforward process of turning
-      each <a class="tref internalDFN" title="node-object" href="#dfn-node-object">node object</a> into one or more RDF triples. This can be
-      expressed in Turtle as follows:</p>
-
-    <div class="example"><div class="example-title"><span>Example 65</span>: Turtle representation of expanded/flattened document</div><pre class="example">_:b0 &lt;http://xmlns.com/foaf/0.1/name&gt; "Dave Longley" .
-
-&lt;http://manu.sporny.org/about#manu&gt; &lt;http://xmlns.com/foaf/0.1/name&gt; "Manu Sporny" .
-
-&lt;http://me.markus-lanthaler.com/&gt; &lt;http://xmlns.com/foaf/0.1/name&gt; "Markus Lanthaler" ;
-    &lt;http://xmlns.com/foaf/0.1/knows&gt; &lt;http://manu.sporny.org/about#manu&gt;, _:b0 .</pre></div>
-
-    <p>The process of serializing RDF as JSON-LD can be thought of as the
-      inverse of this last step, creating an expanded JSON-LD document closely
-      matching the triples from RDF, using a single <a class="tref internalDFN" title="node-object" href="#dfn-node-object">node object</a>
-      for all triples having a common subject, and a single <a class="tref internalDFN" title="property" href="#dfn-property">property</a>
-      for those triples also having a common predicate.</p>
-  </section>
-</section>
-
-<section class="appendix informative" id="relationship-to-other-linked-data-formats">
-  <!--OddPage--><h2 aria-level="1" role="heading" id="h2_relationship-to-other-linked-data-formats"><span class="secno">A. </span>Relationship to Other Linked Data Formats</h2><p><em>This section is non-normative.</em></p>
-
-  <p>The JSON-LD 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
-    Linked Data approaches.</p>
-
-  <section class="informative" id="turtle">
-    <h3 aria-level="2" role="heading" id="h3_turtle"><span class="secno">A.1 </span>Turtle</h3><p><em>This section is non-normative.</em></p>
-
-    <p>The following are examples of transforming RDF expressed in Turtle [<cite><a class="bibref" href="#bib-TURTLE">TURTLE</a></cite>]
-      into JSON-LD.</p>
-
-    <section>
-      <h4 id="prefix-definitions" aria-level="3" role="heading">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 66</span>: A set of statements serialized in Turtle</div><pre class="example">@prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt; .
-
-&lt;http://manu.sporny.org/about#manu&gt; a foaf:Person;
-  foaf:name "Manu Sporny";
-  foaf:homepage &lt;http://manu.sporny.org/&gt; .</pre></div>
-
-      <div class="example"><div class="example-title"><span>Example 67</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/about#manu",
-  "@type": "foaf:Person",
-  "foaf:name": "Manu Sporny",
-  "foaf:homepage": { "@id": "http://manu.sporny.org/" }
-}</pre></div>
-    </section>
-
-    <section>
-      <h4 id="embedding-1" aria-level="3" role="heading">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>
-
-      <div class="example"><div class="example-title"><span>Example 68</span>: Embedding in Turtle</div><pre class="example">@prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt; .
-
-&lt;http://manu.sporny.org/about#manu&gt;
-  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 69</span>: Same embedding example in JSON-LD</div><pre class="example">{
-  "@context":
-  {
-    "foaf": "http://xmlns.com/foaf/0.1/"
-  },
-  "@id": "http://manu.sporny.org/about#manu",
-  "@type": "foaf:Person",
-  "foaf:name": "Manu Sporny",
-  "foaf:knows":
-  {
-    "@type": "foaf:Person",
-    "foaf:name": "Gregg Kellogg"
-  }
-}</pre></div>
-    </section>
-
-    <section>
-      <h4 id="conversion-of-native-data-types" aria-level="3" role="heading">Conversion of native data types</h4>
-
-      <p>In JSON-LD numbers and boolean values are native data types. While Turtle
-        has a shorthand syntax to express such values, RDF's abstract syntax requires
-        that numbers and boolean values are represented as typed literals. Thus,
-        to allow full round-tripping, the JSON-LD Processing Algorithms and API specification [<cite><a class="bibref" href="#bib-JSON-LD-API">JSON-LD-API</a></cite>]
-        defines conversion rules between JSON-LD's native data types and RDF's
-        counterparts. <a class="tref internalDFN" title="number" href="#dfn-number">Numbers</a> without fractions are
-        converted to <code>xsd:integer</code>-typed literals, numbers with fractions
-        to <code>xsd:double</code>-typed literals and the two 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> to a <code>xsd:boolean</code>-typed
-        literal. All typed literals are in canonical lexical form.</p>
-
-      <div class="example"><div class="example-title"><span>Example 70</span>: JSON-LD using native data types for numbers and boolean values</div><pre class="example">{
-  "@context":
-  {
-    "ex": "http://example.com/vocab#"
-  },
-  "@id": "http://example.com/",
-  "ex:numbers": [ 14, 2.78 ],
-  "ex:booleans": [ true, false ]
-}</pre></div>
-
-      <div class="example"><div class="example-title"><span>Example 71</span>: Same example in Turtle using typed literals</div><pre class="example">@prefix ex: &lt;http://example.com/vocab#&gt; .
-@prefix xsd: &lt;http://www.w3.org/2001/XMLSchema#&gt; .
-
-&lt;http://example.com/&gt;
-  ex:numbers "14"^^xsd:integer, "2.78E0"^^xsd:double ;
-  ex:booleans "true"^^xsd:boolean, "false"^^xsd:boolean .</pre></div>
-
-    </section>
-
-    <section>
-      <h4 id="lists" aria-level="3" role="heading">Lists</h4>
-      <p>Both JSON-LD and Turtle can represent sequential lists of values.</p>
-
-      <div class="example"><div class="example-title"><span>Example 72</span>: A list of values in Turtle</div><pre class="example">@prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt; .
-
-&lt;http://example.org/people#joebob&gt; a foaf:Person;
-  foaf:name "Joe Bob";
-  foaf:nick ( "joe" "bob" "jaybee" ) .</pre></div>
-
-      <div class="example"><div class="example-title"><span>Example 73</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 class="informative" id="rdfa">
-    <h3 aria-level="2" role="heading" id="h3_rdfa"><span class="secno">A.2 </span>RDFa</h3><p><em>This section is non-normative.</em></p>
-
-    <p>The following example describes three people with their respective names and
-      homepages in RDFa [<cite><a class="bibref" href="#bib-RDFA-CORE">RDFA-CORE</a></cite>].</p>
-
-    <div class="example"><div class="example-title"><span>Example 74</span>: RDFa fragment that describes three people</div><pre class="example">&lt;div <span class="diff">prefix="foaf: http://xmlns.com/foaf/0.1/"</span>&gt;
-   &lt;ul&gt;
-      &lt;li <span class="diff">typeof="foaf:Person"</span>&gt;
-        &lt;a <span class="diff">rel="foaf:homepage" href="http://example.com/bob/" property="foaf:name"</span>&gt;Bob&lt;/a&gt;
-      &lt;/li&gt;
-      &lt;li <span class="diff">typeof="foaf:Person"</span>&gt;
-        &lt;a <span class="diff">rel="foaf:homepage" href="http://example.com/eve/" property="foaf:name"</span>&gt;Eve&lt;/a&gt;
-      &lt;/li&gt;
-      &lt;li <span class="diff">typeof="foaf:Person"</span>&gt;
-        &lt;a <span class="diff">rel="foaf:homepage" href="http://example.com/manu/" property="foaf:name"</span>&gt;Manu&lt;/a&gt;
-      &lt;/li&gt;
-   &lt;/ul&gt;
-&lt;/div&gt;</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 75</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 class="informative" id="microformats">
-    <h3 aria-level="2" role="heading" id="h3_microformats"><span class="secno">A.3 </span>Microformats</h3><p><em>This section is non-normative.</em></p>
-
-    <p>The following example uses a simple Microformats hCard example to express
-      how Microformats [<cite><a class="bibref" href="#bib-MICROFORMATS">MICROFORMATS</a></cite>] are represented in JSON-LD.</p>
-
-    <div class="example"><div class="example-title"><span>Example 76</span>: HTML fragment with a simple Microformats hCard</div><pre class="example">&lt;div class="vcard"&gt;
- &lt;a class="url fn" href="http://tantek.com/"&gt;Tantek Çelik&lt;/a&gt;
-&lt;/div&gt;</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 77</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 class="informative" id="microdata">
-    <h3 aria-level="2" role="heading" id="h3_microdata"><span class="secno">A.4 </span>Microdata</h3><p><em>This section is non-normative.</em></p>
-
-    <p>The HTML Microdata [<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 78</span>: HTML fragments that describes a book using microdata</div><pre class="example">&lt;dl itemscope
-    itemtype="http://purl.org/vocab/frbr/core#Work"
-    itemid="http://purl.oreilly.com/works/45U8QJGZSQKDH8N"&gt;
- &lt;dt&gt;Title&lt;/dt&gt;
- &lt;dd&gt;&lt;cite itemprop="http://purl.org/dc/terms/title"&gt;Just a Geek&lt;/cite&gt;&lt;/dd&gt;
- &lt;dt&gt;By&lt;/dt&gt;
- &lt;dd&gt;&lt;span itemprop="http://purl.org/dc/terms/creator"&gt;Wil Wheaton&lt;/span&gt;&lt;/dd&gt;
- &lt;dt&gt;Format&lt;/dt&gt;
- &lt;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"&gt;
-  &lt;link itemprop="http://purl.org/dc/terms/type" href="http://purl.oreilly.com/product-types/BOOK"&gt;
-  Print
- &lt;/dd&gt;
- &lt;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"&gt;
-  &lt;link itemprop="http://purl.org/dc/terms/type" href="http://purl.oreilly.com/product-types/EBOOK"&gt;
-  Ebook
- &lt;/dd&gt;
-&lt;/dl&gt;</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 79</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 normative" id="iana-considerations">
-  <!--OddPage--><h2 aria-level="1" role="heading" id="h2_iana-considerations"><span class="secno">B. </span>IANA Considerations</h2>
-
-  <p>This section has been submitted to the Internet Engineering Steering
-    Group (IESG) for review, approval, and registration with IANA.</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>
-          <p>A a non-empty list of space-separated URIs identifying specific
-            constraints or conventions that apply to a JSON-LD document according [<cite><a class="bibref" href="#bib-RFC6906">RFC6906</a></cite>].
-            A profile does not change the semantics of the resource representation
-            when processed without profile knowledge, so that clients both with
-            and without knowledge of a profiled resource can safely use the same
-            representation. The <code>profile</code> parameter <em class="rfc2119" title="MAY">MAY</em> be used by
-            clients to express their preferences in the content negotiation process.
-            If the profile parameter is given, a server <em class="rfc2119" title="SHOULD">SHOULD</em> return a document that
-            honors the profiles in the list which are recognized by the server.
-            It is <em class="rfc2119" title="RECOMMENDED">RECOMMENDED</em> that profile URIs are dereferenceable and provide
-            useful documentation at that URI. For more information and background
-            please refer to [<cite><a class="bibref" href="#bib-RFC6906">RFC6906</a></cite>].</p>
-          <p>This specification defines three values for the <code>profile</code> parameter.
-            To request or specify <a href="#expanded-document-form">expanded JSON-LD document form</a>,
-            the URI <code>http://www.w3.org/ns/json-ld#expanded</code> <em class="rfc2119" title="SHOULD">SHOULD</em> be used.
-            To request or specify <a href="#compacted-document-form">compacted JSON-LD document form</a>,
-            the URI <code>http://www.w3.org/ns/json-ld#compacted</code> <em class="rfc2119" title="SHOULD">SHOULD</em> be used.
-            To request or specify <a href="#flattened-document-form">flattened JSON-LD document form</a>,
-            the URI <code>http://www.w3.org/ns/json-ld#flattened</code> <em class="rfc2119" title="SHOULD">SHOULD</em> be used.
-            Please note that, according [<cite><a class="bibref" href="#bib-HTTP11">HTTP11</a></cite>], the value of the <code>profile</code>
-            parameter has to be enclosed in quotes (<code>"</code>) because it contains
-            special characters and, if multiple profiles are combined, whitespace.</p>
-          <p>When processing the "profile" media type parameter, it is important to
-            note that its value contains one or more URIs and not IRIs. In some cases
-            it might therefore be necessary to convert between IRIs and URIs as specified in
-            <cite><a href="http://tools.ietf.org/html/rfc3986#section-5.1">section 3 Relationship between IRIs and URIs</a></cite>
-            of [<cite><a class="bibref" href="#bib-RFC3987">RFC3987</a></cite>].</p>
-        </dd>
-      </dl>
-    </dd>
-    <dt>Encoding considerations:</dt>
-    <dd>See RFC&nbsp;6839, section 3.1.</dd>
-    <dt>Security considerations:</dt>
-    <dd>See [<cite><a class="bibref" href="#bib-RFC4627">RFC4627</a></cite>]
-      <p>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 to be parsed. An (invalid) document may contain code that,
-        when executed, could lead to unexpected side effects compromising
-        the security of a system.</p>
-      <p>When processing JSON-LD documents, links to remote contexts are
-        typically followed automatically, resulting in the transfer of files
-        without the explicit request of the user for each one. If remote
-        contexts are served by third parties, it may allow them to gather
-        usage patterns or similar information leading to privacy concerns.
-        Specific implementations, such as the API defined in the
-        JSON-LD Processing Algorithms and API specification [<cite><a class="bibref" href="#bib-JSON-LD-API">JSON-LD-API</a></cite>],
-        may provide fine-grained mechanisms to control this behavior.</p>
-      <p>JSON-LD contexts that are loaded from the Web over non-secure connections,
-        such as HTTP, run the risk of being altered by an attacker such that
-        they may modify 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.</p>
-      <p>Given that JSON-LD allows the substitution of long IRIs with short terms,
-        JSON-LD documents may expand considerably when processed and, in the worst case,
-        the resulting data might consume all of the recipient's resources. Applications
-        should treat any data with due skepticism.</p>
-    </dd>
-    <dt>Interoperability considerations:</dt>
-    <dd>Not Applicable</dd>
-    <dt>Published specification:</dt>
-    <dd>http://www.w3.org/TR/json-ld</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 &amp; email address to contact for further information:</dt>
-    <dd>Manu Sporny &lt;msporny@digitalbazaar.com&gt;</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><abbr title="World Wide Web Consortium">W3C</abbr></dd>
-  </dl>
-
-  <p>Fragment identifiers used with <a href="#application-ld-json">application/ld+json</a>
-    are treated as in RDF syntaxes, as per
-    <cite><a href="http://www.w3.org/TR/rdf11-concepts/#section-fragID">RDF 1.1 Concepts and Abstract Syntax</a></cite>
-    [<cite><a class="bibref" href="#bib-RDF11-CONCEPTS">RDF11-CONCEPTS</a></cite>].</p>
-</section>
-
-<section class="appendix informative" id="acknowledgements">
-  <!--OddPage--><h2 aria-level="1" role="heading" id="h2_acknowledgements"><span class="secno">C. </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 Booth, David I. Lehn, David Wood, Dean Landolt,
-    Ed Summers, elf Pavlik,
-    Eric Prud'hommeaux, Erik Wilde, 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,
-    Marios Meimaris,
-    Melvin Carvalho, Nathan Rixham, Olivier Grisel, Paolo Ciccarese, Pat Hayes,
-    Patrick Logan, Paul Kuykendall, Pelle Braendgaard,
-    Peter Patel-Schneider, 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 aria-level="1" role="heading" id="h2_references"><span class="secno">D. </span>References</h2><section id="normative-references" typeof="bibo:Chapter" resource="#normative-references" rel="bibo:chapter"><h3 aria-level="2" role="heading" id="h3_normative-references"><span class="secno">D.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-RDF11-CONCEPTS">[RDF11-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>. The latest edition is available at <a href="http://www.w3.org/TR/rdf11-concepts/">http://www.w3.org/TR/rdf11-concepts/</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. RFC. 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) (RFC 4627)</cite></a>. July 2006. RFC. 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. <cite><a href="http://www.ietf.org/rfc/rfc5988.txt">Web Linking</a>.</cite> October 2010. Internet RFC 5988. URL: <a href="http://www.ietf.org/rfc/rfc5988.txt">http://www.ietf.org/rfc/rfc5988.txt</a>
-</dd></dl></section><section id="informative-references" typeof="bibo:Chapter" resource="#informative-references" rel="bibo:chapter"><h3 aria-level="2" role="heading" id="h3_informative-references"><span class="secno">D.2 </span>Informative references</h3><dl class="bibliography" about=""><dt id="bib-HTTP11">[HTTP11]</dt><dd rel="dcterms:references">R. Fielding et al. <a href="http://www.ietf.org/rfc/rfc2616.txt"><cite>Hypertext Transfer Protocol - HTTP/1.1</cite></a>. June 1999. RFC. URL: <a href="http://www.ietf.org/rfc/rfc2616.txt">http://www.ietf.org/rfc/rfc2616.txt</a>
-</dd><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-JSON-LD-TESTS">[JSON-LD-TESTS]</dt><dd rel="dcterms:references"><cite><a href="http://www.w3.org/2013/json-ld-tests/">JSON-LD 1.0 Test Suite</a></cite>. W3C Test Suite (work in progress). URL: <a href="http://www.w3.org/2013/json-ld-tests/">http://www.w3.org/2013/json-ld-tests/</a>
-</dd><dt id="bib-LINKED-DATA">[LINKED-DATA]</dt><dd rel="dcterms:references">Tim Berners-Lee. <cite><a href="http://www.w3.org/DesignIssues/LinkedData.html">Linked Data</a>.</cite>Personal View, imperfect but published. URL: <a href="http://www.w3.org/DesignIssues/LinkedData.html">http://www.w3.org/DesignIssues/LinkedData.html</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-20121025/">HTML Microdata</a>.</cite> 25 October 2012. W3C Working Draft (work in progress). URL: <a href="http://www.w3.org/TR/2012/WD-microdata-20121025/">http://www.w3.org/TR/2012/WD-microdata-20121025/</a>. The latest edition is available at <a href="http://www.w3.org/TR/microdata/">http://www.w3.org/TR/microdata/</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 Guha. <a href="http://www.w3.org/TR/rdf-schema"><cite>RDF Vocabulary Description Language 1.0: RDF Schema</cite></a>. 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/rdf-schema">http://www.w3.org/TR/rdf-schema</a>
-</dd><dt id="bib-RDF11-MT">[RDF11-MT]</dt><dd rel="dcterms:references">Patrick J. Hayes, Peter F. Patel-Schneider, Editors. <cite><a href="http://www.w3.org/TR/2013/WD-rdf11-mt-20130409/">RDF 1.1 Semantics.</a></cite> 9 April 2013. W3C Working Draft (work in progress). URL: <a href="http://www.w3.org/TR/2013/WD-rdf11-mt-20130409/">http://www.w3.org/TR/2013/WD-rdf11-mt-20130409/</a>. The latest edition is available at <a href="http://www.w3.org/TR/rdf11-mt/">http://www.w3.org/TR/rdf11-mt/</a>
-</dd><dt id="bib-RDFA-CORE">[RDFA-CORE]</dt><dd rel="dcterms:references">Ben Adida; Mark Birbeck; Shane McCarron; Ivan Herman et al. <a href="http://www.w3.org/TR/rdfa-core/"><cite>RDFa Core 1.1 - Second Edition</cite></a>. 25 June 2013. W3C Proposed Edited Recommendation. URL: <a href="http://www.w3.org/TR/rdfa-core/">http://www.w3.org/TR/rdfa-core/</a>
-</dd><dt id="bib-RFC3986">[RFC3986]</dt><dd rel="dcterms:references">T. Berners-Lee; R. Fielding; L. Masinter. <a href="http://www.ietf.org/rfc/rfc3986.txt"><cite>Uniform Resource Identifier (URI): Generic Syntax (RFC 3986)</cite></a>. January 2005. RFC. URL: <a href="http://www.ietf.org/rfc/rfc3986.txt">http://www.ietf.org/rfc/rfc3986.txt</a>
-</dd><dt id="bib-RFC6839">[RFC6839]</dt><dd rel="dcterms:references">Tony Hansen, Alexey Melnikov. <cite><a href="http://www.ietf.org/rfc/rfc6839.txt">Additional Media Type Structured Syntax Suffixes</a>.</cite> January 2013. Internet RFC 6839. URL: <a href="http://www.ietf.org/rfc/rfc6839.txt">http://www.ietf.org/rfc/rfc6839.txt</a>
-</dd><dt id="bib-RFC6906">[RFC6906]</dt><dd rel="dcterms:references">Erik Wilde. <cite><a href="http://www.ietf.org/rfc/rfc6906.txt">The 'profile' Link Relation Type</a>.</cite> March 2013. Internet RFC 6906. URL: <a href="http://www.ietf.org/rfc/rfc6906.txt">http://www.ietf.org/rfc/rfc6906.txt</a>
-</dd><dt id="bib-TURTLE">[TURTLE]</dt><dd rel="dcterms:references">Eric Prud'hommeaux, Gavin Carothers, Editors. <cite><a href="http://www.w3.org/TR/2013/CR-turtle-20130219/">Turtle: Terse RDF Triple Language.</a></cite> 19 February 2013. W3C Candidate Recommendation (work in progress). URL: <a href="http://www.w3.org/TR/2013/CR-turtle-20130219/">http://www.w3.org/TR/2013/CR-turtle-20130219/</a>. The latest edition is available at <a href="http://www.w3.org/TR/turtle/">http://www.w3.org/TR/turtle/</a>
-</dd></dl></section></section></body></html>
Binary file spec/CR/json-ld/20130822/linked-data-graph.png has changed