Add static PR specs and diffs
authorMarkus Lanthaler <mark_lanthaler@gmx.net>
Tue, 22 Oct 2013 18:58:43 +0200
changeset 2048 f898fc0dbe1b
parent 2047 497a5904c236
child 2049 ea9ca435c90f
Add static PR specs and diffs

There have been some minor issues in the static syntax PR spec so I've recreated that one as well. I've also reverted the editor's drafts to use the ED template.
spec/PR/json-ld-api/20131105/diff-20130910.html
spec/PR/json-ld-api/20131105/index.html
spec/PR/json-ld/20131105/diff-20130910.html
spec/PR/json-ld/20131105/index.html
spec/latest/json-ld-api/index.html
spec/latest/json-ld/index.html
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spec/PR/json-ld-api/20131105/diff-20130910.html	Tue Oct 22 18:58:43 2013 +0200
@@ -0,0 +1,35946 @@
+<html lang="en" dir="ltr" typeof="bibo:Document w3p:PR" about="" property="dcterms:language" content="en" xmlns="http://www.w3.org/1999/xhtml">
+<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">
+/*<![CDATA[*/
+  .highlight {
+    font-weight: bold;
+    color: #0a3;
+  }
+  .comment {
+    color: #999;
+  }
+  .error a {
+    color:  #ff4500;
+    border-bottom:  1px dotted #ff4500;
+    text-decoration: none;
+  }
+  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 type="text/css">
+/*<![CDATA[*/
+/* --- 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 type="text/css">
+/*<![CDATA[*/
+/* --- 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 type="text/css">
+/*<![CDATA[*/
+/* --- 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 type="text/css">
+/*<![CDATA[*/
+/* --- 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 href="https://www.w3.org/StyleSheets/TR/W3C-PR" rel="stylesheet" type="text/css" /><!--[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 id="respecDocument" role="document" class="h-entry">
+<div id="respecHeader" role="contentinfo" class="head">
+<p>
+<a href="http://www.w3.org/">
+<img src="https://www.w3.org/Icons/w3c_home" alt="W3C" height="48" width="72" />
+</a>
+</p>
+<h1 class="title p-name" id="title" property="dcterms:title">
+JSON-LD
+1.0
+Processing
+Algorithms
+and
+API
+</h1>
+<h2 id="w3c-proposed-recommendation-05-november-2013" property="dcterms:issued" datatype="xsd:dateTime" content="2013-11-04T23:00:00.000Z">
+<abbr title="World Wide Web Consortium">
+W3C
+</abbr>
+<del class="diff-old">Candidate
+</del>
+<ins class="diff-chg">Proposed
+</ins>
+Recommendation
+<del class="diff-old">10
+September
+</del>
+<time class="dt-published" datetime="2013-11-05">
+<ins class="diff-chg">05
+November
+</ins>
+2013
+</time>
+</h2>
+<dl>
+<dt>
+This
+version:
+</dt>
+<dd>
+<del class="diff-old">http://www.w3.org/TR/2013/CR-json-ld-api-20130910/
+</del>
+<a class="u-url" href="http://www.w3.org/TR/2013/PR-json-ld-api-20131105/">
+<ins class="diff-chg">http://www.w3.org/TR/2013/PR-json-ld-api-20131105/
+</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://dvcs.w3.org/hg/json-ld/raw-file/default/spec/latest/json-ld-api/index.html">
+http://dvcs.w3.org/hg/json-ld/raw-file/default/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-20130516/
+</del>
+<a rel="dcterms:replaces" href="http://www.w3.org/TR/2013/CR-json-ld-api-20130910/">
+<ins class="diff-chg">http://www.w3.org/TR/2013/CR-json-ld-api-20130910/
+</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="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="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="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 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="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-20130910.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 rel="bibo:chapter" resource="#abstract" typeof="bibo:Chapter" datatype="" property="dcterms:abstract" class="introductory" id="abstract">
+<h2 id="h2_abstract" role="heading" aria-level="1">
+Abstract
+</h2>
+<p>
+This
+specification
+defines
+<del class="diff-old">an
+Application
+Programming
+Interface
+(API)
+and
+</del>
+a
+set
+of
+algorithms
+for
+programmatic
+transformations
+of
+JSON-LD
+documents.
+Restructuring
+data
+according
+to
+the
+defined
+transformations
+often
+dramatically
+simplifies
+its
+usage.
+<ins class="diff-new">Furthermore,
+this
+document
+proposes
+an
+Application
+Programming
+Interface
+(API)
+for
+developers
+implementing
+the
+specified
+algorithms.
+</ins>
+</p>
+</section>
+<section rel="bibo:chapter" resource="#sotd" typeof="bibo:Chapter" id="sotd" class="introductory">
+<h2 id="h2_sotd" role="heading" aria-level="1">
+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">30
+</del>
+<ins class="diff-chg">31
+</ins>
+months
+in
+the
+JSON
+for
+Linking
+Data
+Community
+Group.
+The
+document
+has
+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">30
+</del>
+<ins class="diff-chg">31
+</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 href="#bib-JSON-LD-TESTS" class="bibref">
+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
+<del class="diff-old">three
+</del>
+<ins class="diff-chg">two
+</ins>
+months.
+</p>
+<p>
+<del class="diff-old">The
+following
+features
+are
+at
+risk
+and
+may
+be
+removed:
+Support
+for
+@base:
+null
+Allow
+blank
+nodes
+to
+be
+used
+as
+properties
+Properly
+referencing
+the
+DOM
+Promises
+spec
+Lists
+of
+lists
+and
+partial
+list
+conversion
+from
+RDF
+</del>
+Changes
+since
+the
+<a href="http://www.w3.org/TR/2013/WD-json-ld-api-20130411/">
+<del class="diff-old">11&nbsp;April&nbsp;2013
+</del>
+<ins class="diff-chg">11&#160;April&#160;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
+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/">
+<del class="diff-old">16&nbsp;May&nbsp;2013
+</del>
+<ins class="diff-chg">16&#160;May&#160;2013
+</ins>
+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 href="#dfn-rdf-triple" title="rdf-triple" class="tref internalDFN">
+triples
+</a>
+containing
+a
+<a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">
+blank
+node
+</a>
+<a href="#dfn-rdf-predicate" title="rdf-predicate" class="tref internalDFN">
+predicate
+</a>,
+unless
+the
+<i>
+produce
+generalized
+RDF
+</i>
+flag
+is
+set;
+discard
+<a href="#dfn-rdf-triple" title="rdf-triple" class="tref internalDFN">
+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 href="#bib-RFC6839" class="bibref">
+RFC6839
+</a>
+</cite>
+]
+</li>
+<li>
+Use
+the
+<a class="idlType" href="#idl-def-LoadDocumentCallback">
+<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>
+<li>
+Clarify
+the
+usage
+of
+the
+<code class="idlMemberName">
+<a href="#widl-JsonLdOptions-documentLoader">
+documentLoader
+</a>
+</code>
+option.
+</li>
+</ul>
+<p>
+<ins class="diff-new">Changes
+since
+the
+</ins><a href="http://www.w3.org/TR/2013/CR-json-ld-api-20130910/"><ins class="diff-new">
+10&#160;September&#160;2013
+Candidate
+Recommendation
+</ins></a>:</p><ul><li><ins class="diff-new">
+Fixed
+a
+bug
+that
+relabeled
+blank
+node
+identifiers
+used
+with
+reverse
+properties
+inconsistently
+when
+creating
+a
+node
+map
+.
+</ins></li><li><ins class="diff-new">
+Made
+the
+API
+non-normative
+given
+that
+Promises
+are
+still
+not
+properly
+specified.
+</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">Candidate
+</del>
+<ins class="diff-chg">Proposed
+</ins>
+Recommendation.
+This
+document
+is
+intended
+to
+become
+a
+<abbr title="World Wide Web Consortium">
+W3C
+</abbr>
+Recommendation.
+<del class="diff-old">If
+you
+wish
+</del>
+<ins class="diff-chg">The
+</ins><abbr title="World Wide Web Consortium"><ins class="diff-chg">
+W3C
+</ins></abbr><ins class="diff-chg">
+Membership
+and
+other
+interested
+parties
+are
+invited
+</ins>
+to
+<del class="diff-old">make
+comments
+regarding
+this
+document,
+please
+</del>
+<ins class="diff-chg">review
+the
+document
+and
+</ins>
+send
+<del class="diff-old">them
+</del>
+<ins class="diff-chg">comments
+</ins>
+to
+<a rel="discussion" 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">).
+W3C
+publishes
+a
+Candidate
+Recommendation
+to
+indicate
+</del>
+<ins class="diff-chg">)
+through
+05
+December
+2013.
+Advisory
+Committee
+Representatives
+should
+consult
+their
+</ins><a href="https://www.w3.org/2002/09/wbs/myQuestionnaires"><ins class="diff-chg">
+WBS
+questionnaires
+</ins></a>.<ins class="diff-chg">
+Note
+</ins>
+that
+<del class="diff-old">the
+document
+is
+believed
+to
+be
+stable
+and
+to
+encourage
+implementation
+by
+the
+developer
+community.
+This
+Candidate
+Recommendation
+is
+</del>
+<ins class="diff-chg">substantive
+technical
+comments
+were
+</ins>
+expected
+<del class="diff-old">to
+advance
+to
+Proposed
+Recommendation
+no
+earlier
+than
+01
+October
+</del>
+<ins class="diff-chg">during
+the
+Last
+Call
+review
+period
+that
+ended
+06
+June
+</ins>
+2013.
+<del class="diff-old">All
+comments
+are
+welcome.
+</del>
+</p>
+<p>
+Publication
+as
+a
+<del class="diff-old">Candidate
+</del>
+<ins class="diff-chg">Proposed
+</ins>
+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>
+<del class="diff-old">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).
+</del>
+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 id="h2_toc" role="heading" aria-level="1" class="introductory">
+Table
+of
+Contents
+</h2>
+<ul id="respecContents" role="directory" class="toc">
+<li class="tocline">
+<a class="tocxref" href="#introduction">
+<span class="secno">
+1.
+</span>
+Introduction
+</a>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#features">
+<span class="secno">
+2.
+</span>
+Features
+</a>
+<ul class="toc">
+<li class="tocline">
+<a class="tocxref" href="#expansion">
+<span class="secno">
+2.1
+</span>
+Expansion
+</a>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#compaction">
+<span class="secno">
+2.2
+</span>
+Compaction
+</a>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#flattening">
+<span class="secno">
+2.3
+</span>
+Flattening
+</a>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#rdf-serialization-deserialization">
+<span class="secno">
+2.4
+</span>
+RDF
+Serialization/Deserialization
+</a>
+</li>
+</ul>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#conformance">
+<span class="secno">
+3.
+</span>
+Conformance
+</a>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#general-terminology">
+<span class="secno">
+4.
+</span>
+General
+Terminology
+</a>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#algorithm-terms">
+<span class="secno">
+5.
+</span>
+Algorithm
+Terms
+</a>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#context-processing-algorithms">
+<span class="secno">
+6.
+</span>
+Context
+Processing
+Algorithms
+</a>
+<ul class="toc">
+<li class="tocline">
+<a class="tocxref" href="#context-processing-algorithm">
+<span class="secno">
+6.1
+</span>
+Context
+Processing
+Algorithm
+</a>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#create-term-definition">
+<span class="secno">
+6.2
+</span>
+Create
+Term
+Definition
+</a>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#iri-expansion">
+<span class="secno">
+6.3
+</span>
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+Expansion
+</a>
+</li>
+</ul>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#expansion-algorithms">
+<span class="secno">
+7.
+</span>
+Expansion
+Algorithms
+</a>
+<ul class="toc">
+<li class="tocline">
+<a class="tocxref" href="#expansion-algorithm">
+<span class="secno">
+7.1
+</span>
+Expansion
+Algorithm
+</a>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#value-expansion">
+<span class="secno">
+7.2
+</span>
+Value
+Expansion
+</a>
+</li>
+</ul>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#compaction-algorithms">
+<span class="secno">
+8.
+</span>
+Compaction
+Algorithms
+</a>
+<ul class="toc">
+<li class="tocline">
+<a class="tocxref" href="#compaction-algorithm">
+<span class="secno">
+8.1
+</span>
+Compaction
+Algorithm
+</a>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#inverse-context-creation">
+<span class="secno">
+8.2
+</span>
+Inverse
+Context
+Creation
+</a>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#iri-compaction">
+<span class="secno">
+8.3
+</span>
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+Compaction
+</a>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#term-selection">
+<span class="secno">
+8.4
+</span>
+Term
+Selection
+</a>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#value-compaction">
+<span class="secno">
+8.5
+</span>
+Value
+Compaction
+</a>
+</li>
+</ul>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#flattening-algorithms">
+<span class="secno">
+9.
+</span>
+Flattening
+Algorithms
+</a>
+<ul class="toc">
+<li class="tocline">
+<a class="tocxref" href="#flattening-algorithm">
+<span class="secno">
+9.1
+</span>
+Flattening
+Algorithm
+</a>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#node-map-generation">
+<span class="secno">
+9.2
+</span>
+Node
+Map
+Generation
+</a>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#generate-blank-node-identifier">
+<span class="secno">
+9.3
+</span>
+Generate
+Blank
+Node
+Identifier
+</a>
+</li>
+</ul>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#rdf-serialization-deserialization-algorithms">
+<span class="secno">
+10.
+</span>
+RDF
+Serialization/Deserialization
+Algorithms
+</a>
+<ul class="toc">
+<li class="tocline">
+<a class="tocxref" href="#deserialize-json-ld-to-rdf-algorithm">
+<span class="secno">
+10.1
+</span>
+Deserialize
+JSON-LD
+to
+RDF
+algorithm
+</a>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#object-to-rdf-conversion">
+<span class="secno">
+10.2
+</span>
+Object
+to
+RDF
+Conversion
+</a>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#list-to-rdf-conversion">
+<span class="secno">
+10.3
+</span>
+List
+to
+RDF
+Conversion
+</a>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#serialize-rdf-as-json-ld-algorithm">
+<span class="secno">
+10.4
+</span>
+Serialize
+RDF
+as
+JSON-LD
+Algorithm
+</a>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#rdf-to-object-conversion">
+<span class="secno">
+10.5
+</span>
+RDF
+to
+Object
+Conversion
+</a>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#data-round-tripping">
+<span class="secno">
+10.6
+</span>
+Data
+Round
+Tripping
+</a>
+</li>
+</ul>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#the-application-programming-interface">
+<span class="secno">
+11.
+</span>
+The
+Application
+Programming
+Interface
+</a>
+<ul class="toc">
+<li class="tocline">
+<a class="tocxref" href="#the-jsonldprocessor-interface">
+<span class="secno">
+11.1
+</span>
+The
+<span class="formerLink">
+<code>
+JsonLdProcessor
+</code>
+</span>
+Interface
+</a>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#the-jsonldoptions-type">
+<span class="secno">
+11.2
+</span>
+The
+<span class="formerLink">
+<code>
+JsonLdOptions
+</code>
+</span>
+Type
+</a>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#remote-document-and-context-retrieval">
+<span class="secno">
+11.3
+</span>
+Remote
+Document
+and
+Context
+Retrieval
+</a>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#error-handling">
+<span class="secno">
+11.4
+</span>
+Error
+Handling
+</a>
+</li>
+</ul>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#acknowledgements">
+<span class="secno">
+A.
+</span>
+Acknowledgements
+</a>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#references">
+<span class="secno">
+B.
+</span>
+References
+</a>
+<ul class="toc">
+<li class="tocline">
+<a class="tocxref" href="#normative-references">
+<span class="secno">
+B.1
+</span>
+Normative
+references
+</a>
+</li>
+<li class="tocline">
+<a class="tocxref" href="#informative-references">
+<span class="secno">
+B.2
+</span>
+Informative
+references
+</a>
+</li>
+</ul>
+</li>
+</ul>
+</section>
+<section id="introduction" class="informative">
+<h2 id="h2_introduction" role="heading" aria-level="1">
+<span class="secno">
+1.
+</span>
+Introduction
+</h2>
+<p>
+<em>
+This
+section
+is
+non-normative.
+</em>
+</p>
+<p>
+This
+document
+is
+a
+detailed
+specification
+<del class="diff-old">for
+an
+Application
+Programming
+Interface
+for
+</del>
+<ins class="diff-chg">of
+</ins>
+the
+JSON-LD
+<del class="diff-old">syntax.
+</del>
+<ins class="diff-chg">processing
+algorithms.
+</ins>
+The
+document
+is
+primarily
+intended
+for
+the
+following
+audiences:
+</p>
+<ul>
+<li>
+<del class="diff-old">Developers
+</del>
+<ins class="diff-chg">Software
+developers
+</ins>
+who
+want
+<del class="diff-old">an
+overview
+of
+</del>
+<ins class="diff-chg">to
+implement
+</ins>
+the
+<ins class="diff-new">algorithms
+to
+transform
+</ins>
+JSON-LD
+<del class="diff-old">API.
+</del>
+<ins class="diff-chg">documents.
+</ins>
+</li>
+<li>
+Web
+authors
+and
+developers
+who
+want
+a
+very
+detailed
+view
+of
+how
+a
+<a href="#dfn-json-ld-processor" title="json-ld-processor" class="tref internalDFN">
+JSON-LD
+Processor
+</a>
+<del class="diff-old">or
+a
+JSON-LD
+API
+Implementation
+</del>
+operates.
+</li>
+<li>
+<del class="diff-old">Software
+developers
+</del>
+<ins class="diff-chg">Developers
+</ins>
+who
+want
+<del class="diff-old">to
+implement
+</del>
+<ins class="diff-chg">an
+overview
+of
+</ins>
+the
+<del class="diff-old">algorithms
+to
+transform
+</del>
+<ins class="diff-chg">proposed
+</ins>
+JSON-LD
+<del class="diff-old">documents.
+</del>
+<ins class="diff-chg">API.
+</ins>
+</li>
+</ul>
+<p>
+To
+understand
+the
+basics
+in
+this
+specification
+you
+must
+first
+be
+familiar
+with
+JSON,
+which
+is
+detailed
+in
+[
+<cite>
+<a href="#bib-RFC4627" class="bibref">
+RFC4627
+</a>
+</cite>
+].
+You
+must
+also
+understand
+the
+JSON-LD
+syntax
+defined
+in
+[
+<cite>
+<a href="#bib-JSON-LD" class="bibref">
+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 href="#bib-ECMA-262" class="bibref">
+ECMA-262
+</a>
+</cite>
+]
+and
+WebIDL
+[
+<cite>
+<a href="#bib-WEBIDL" class="bibref">
+WEBIDL
+</a>
+</cite>
+].
+To
+understand
+how
+JSON-LD
+maps
+to
+RDF,
+it
+is
+helpful
+to
+be
+familiar
+with
+the
+basic
+RDF
+concepts
+[
+<cite>
+<a href="#bib-RDF11-CONCEPTS" class="bibref">
+RDF11-CONCEPTS
+</a>
+</cite>
+].
+</p>
+</section>
+<section id="features" class="informative">
+<h2 id="h2_features" role="heading" aria-level="1">
+<span class="secno">
+2.
+</span>
+Features
+</h2>
+<p>
+<em>
+This
+section
+is
+non-normative.
+</em>
+</p>
+<p>
+The
+JSON-LD
+Syntax
+specification
+[
+<cite>
+<a href="#bib-JSON-LD" class="bibref">
+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 href="#dfn-context" title="context" class="tref internalDFN">
+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 href="#dfn-context" title="context" class="tref internalDFN">
+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 href="#dfn-context" title="context" class="tref internalDFN">
+context
+</a>
+that
+is
+different
+from
+their
+own,
+a
+JSON-LD
+processor
+must
+be
+able
+to
+transform
+a
+document
+from
+one
+<a href="#dfn-context" title="context" class="tref internalDFN">
+context
+</a>
+to
+another.
+Instead
+of
+requiring
+JSON-LD
+processors
+to
+write
+specific
+code
+for
+every
+imaginable
+<a href="#dfn-context" title="context" class="tref internalDFN">
+context
+</a>
+switching
+scenario,
+it
+is
+much
+easier
+to
+specify
+a
+single
+algorithm
+that
+can
+remove
+any
+<a href="#dfn-context" title="context" class="tref internalDFN">
+context
+</a>.
+Similarly,
+another
+algorithm
+can
+be
+specified
+to
+subsequently
+apply
+any
+<a href="#dfn-context" title="context" class="tref internalDFN">
+context
+</a>.
+These
+two
+algorithms
+represent
+the
+most
+basic
+transformations
+of
+JSON-LD
+documents.
+They
+are
+referred
+to
+as
+<a href="#dfn-expansion" title="expansion" class="tref internalDFN">
+expansion
+</a>
+and
+<a href="#dfn-compaction" title="compaction" class="tref internalDFN">
+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 id="expansion" class="informative">
+<h3 id="h3_expansion" role="heading" aria-level="2">
+<span class="secno">
+2.1
+</span>
+Expansion
+</h3>
+<p>
+<em>
+This
+section
+is
+non-normative.
+</em>
+</p>
+<p>
+The
+algorithm
+that
+removes
+<a href="#dfn-context" title="context" class="tref internalDFN">
+context
+</a>
+is
+called
+<dfn id="dfn-expansion" title="expansion">
+expansion
+</dfn>.
+Before
+performing
+any
+other
+transformations
+on
+a
+JSON-LD
+document,
+it
+is
+easiest
+to
+remove
+any
+<a href="#dfn-context" title="context" class="tref internalDFN">
+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 href="#dfn-term" title="term" class="tref internalDFN">
+terms
+</a>
+and
+is
+fairly
+compact:
+</p>
+<del class="diff-old">    {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+1
+</ins></span>:<ins class="diff-chg">
+Sample
+JSON-LD
+document
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
+  "@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 href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+to
+express
+a
+property
+and
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>
+to
+encapsulate
+another,
+but
+leaves
+the
+rest
+of
+the
+information
+untouched.
+</p>
+<del class="diff-old">    {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+2
+</ins></span>:<ins class="diff-chg">
+Sample
+JSON-LD
+document
+using
+an
+IRI
+instead
+of
+a
+term
+to
+express
+a
+property
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
+  "@context": {
+<del class="diff-old">    
+</del>
+    <span class="highlight">"website": "http://xmlns.com/foaf/0.1/homepage"</span>
+  },
+  "@id": "http://me.markus-lanthaler.com/",
+<del class="diff-old">  "": "Markus Lanthaler",
+  
+</del>
+<ins class="diff-chg">  "<span class="highlight">http://xmlns.com/foaf/0.1/name</span>": "Markus Lanthaler",
+</ins>  <span class="highlight">"website"</span>: <span class="highlight">{ "@id":</span> "http://www.markus-lanthaler.com/" <span class="highlight">}</span>
+}
+</pre>
+</div>
+<p>
+Note
+that
+both
+inputs
+are
+valid
+JSON-LD
+and
+both
+represent
+the
+same
+information.
+The
+difference
+is
+in
+their
+<a href="#dfn-context" title="context" class="tref internalDFN">
+context
+</a>
+information
+and
+in
+the
+data
+structures
+used.
+A
+JSON-LD
+processor
+can
+remove
+<a href="#dfn-context" title="context" class="tref internalDFN">
+context
+</a>
+and
+ensure
+that
+the
+data
+is
+more
+regular
+by
+employing
+<a href="#dfn-expansion" title="expansion" class="tref internalDFN">
+expansion
+</a>.
+</p>
+<p>
+<a href="#dfn-expansion" title="expansion" class="tref internalDFN">
+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 href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
+absolute
+IRIs
+</a>
+and
+by
+expressing
+all
+values
+in
+<a href="#dfn-array" title="array" class="tref internalDFN">
+arrays
+</a>
+in
+<a href="#dfn-expanded-form" title="expanded-form" class="tref internalDFN">
+expanded
+form
+</a>.
+<a href="#dfn-expanded-form" title="expanded-form" class="tref internalDFN">
+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>
+<del class="diff-old">    [
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+3
+</ins></span>:<ins class="diff-chg">
+Expanded
+sample
+document
+</ins></div><pre class="example"><ins class="diff-chg">
+[
+</ins>
+  {
+    "@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 href="#dfn-context" title="context" class="tref internalDFN">
+context
+</a>
+definitions
+have
+been
+removed,
+all
+<a href="#dfn-term" title="term" class="tref internalDFN">
+terms
+</a>
+and
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
+compact
+IRIs
+</a>
+have
+been
+expanded
+to
+absolute
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+IRIs
+</a>,
+and
+all
+<a href="#dfn-json-ld-value" title="json-ld-value" class="tref internalDFN">
+JSON-LD
+values
+</a>
+are
+expressed
+in
+<a href="#dfn-array" title="array" class="tref internalDFN">
+arrays
+</a>
+in
+<a href="#dfn-expanded-form" title="expanded-form" class="tref internalDFN">
+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 id="compaction" class="informative">
+<h3 id="h3_compaction" role="heading" aria-level="2">
+<span class="secno">
+2.2
+</span>
+Compaction
+</h3>
+<p>
+<em>
+This
+section
+is
+non-normative.
+</em>
+</p>
+<p>
+While
+<a href="#dfn-expansion" title="expansion" class="tref internalDFN">
+expansion
+</a>
+removes
+<a href="#dfn-context" title="context" class="tref internalDFN">
+context
+</a>
+from
+a
+given
+input,
+<a href="#dfn-compaction" title="compaction" class="tref internalDFN">
+compaction's
+</a>
+primary
+function
+is
+to
+perform
+the
+opposite
+operation:
+to
+express
+a
+given
+input
+according
+to
+a
+particular
+<a href="#dfn-context" title="context" class="tref internalDFN">
+context
+</a>.
+<dfn id="dfn-compaction" title="compaction">
+Compaction
+</dfn>
+applies
+a
+<a href="#dfn-context" title="context" class="tref internalDFN">
+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 href="#dfn-compaction" title="compaction" class="tref internalDFN">
+Compaction
+</a>
+uses
+a
+developer-supplied
+<a href="#dfn-context" title="context" class="tref internalDFN">
+context
+</a>
+to
+shorten
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+IRIs
+</a>
+to
+<a href="#dfn-term" title="term" class="tref internalDFN">
+terms
+</a>
+or
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
+compact
+IRIs
+</a>
+and
+<a href="#dfn-json-ld-value" title="json-ld-value" class="tref internalDFN">
+JSON-LD
+values
+</a>
+expressed
+in
+<a href="#dfn-expanded-form" title="expanded-form" class="tref internalDFN">
+expanded
+form
+</a>
+to
+simple
+values
+such
+as
+<a href="#dfn-string" title="string" class="tref internalDFN">
+strings
+</a>
+or
+<a href="#dfn-number" title="number" class="tref internalDFN">
+numbers
+</a>.
+</p>
+<p>
+For
+example,
+assume
+the
+following
+expanded
+JSON-LD
+input
+document:
+</p>
+<del class="diff-old">    [
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+4
+</ins></span>:<ins class="diff-chg">
+Expanded
+sample
+document
+</ins></div><pre class="example"><ins class="diff-chg">
+[
+</ins>
+  {
+    "@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 href="#dfn-context" title="context" class="tref internalDFN">
+context
+</a>:
+</p>
+<del class="diff-old">    {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+5
+</ins></span>:<ins class="diff-chg">
+JSON-LD
+context
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
+  "@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>
+<del class="diff-old">    {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+6
+</ins></span>:<ins class="diff-chg">
+Compacted
+sample
+document
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
+  "@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 href="#dfn-iri" title="iri" class="tref internalDFN">
+IRIs
+</a>
+have
+been
+compacted
+to
+<a href="#dfn-term" title="term" class="tref internalDFN">
+terms
+</a>
+as
+specified
+in
+the
+<a href="#dfn-context" title="context" class="tref internalDFN">
+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 id="flattening" class="informative">
+<h3 id="h3_flattening" role="heading" aria-level="2">
+<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 href="#dfn-node" title="node" class="tref internalDFN">
+node
+</a>
+may
+be
+spread
+across
+a
+number
+of
+different
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+objects
+</a>.
+By
+flattening
+a
+document,
+all
+properties
+of
+a
+<a href="#dfn-node" title="node" class="tref internalDFN">
+node
+</a>
+are
+collected
+in
+a
+single
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+and
+all
+<a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">
+blank
+nodes
+</a>
+are
+labeled
+with
+a
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+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>
+<del class="diff-old">    {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+7
+</ins></span>:<ins class="diff-chg">
+Sample
+JSON-LD
+document
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
+  "@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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>
+to
+prevent
+compaction
+returns
+the
+following
+document:
+</p>
+<del class="diff-old">    [
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+8
+</ins></span>:<ins class="diff-chg">
+Flattened
+sample
+document
+in
+expanded
+form
+</ins></div><pre class="example"><ins class="diff-chg">
+[
+</ins>
+  {
+    "@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 href="#dfn-node" title="node" class="tref internalDFN">
+node
+</a>
+are
+collected
+in
+a
+single
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+and
+how
+the
+<a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">
+blank
+node
+</a>
+representing
+"Dave
+Longley"
+has
+been
+assigned
+the
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+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>
+<del class="diff-old">    {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+9
+</ins></span>:<ins class="diff-chg">
+Flattened
+and
+compacted
+sample
+document
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
+  "@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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+which
+contains
+an
+<code>
+@graph
+</code>
+member
+that
+represents
+the
+<a href="#dfn-default-graph" title="default-graph" class="tref internalDFN">
+default
+graph
+</a>.
+</p>
+</section>
+<section id="rdf-serialization-deserialization" class="informative">
+<h3 id="h3_rdf-serialization-deserialization" role="heading" aria-level="2">
+<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 href="#bib-RDF11-CONCEPTS" class="bibref">
+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 href="#bib-TURTLE" class="bibref">
+TURTLE
+</a>
+</cite>
+]:
+</p>
+<del class="diff-old">    &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;
+.
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+10
+</ins></span>:<ins class="diff-chg">
+Sample
+Turtle
+document
+</ins></div><pre class="example"><ins class="diff-chg">
+&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; .
+</ins>
+</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>
+<del class="diff-old">    [
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+11
+</ins></span>:<ins class="diff-chg">
+Sample
+Turtle
+document
+converted
+to
+JSON-LD
+</ins></div><pre class="example"><ins class="diff-chg">
+[
+</ins>
+  {
+    "@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>
+</section>
+<section id="conformance">
+<h2 id="h2_conformance" role="heading" aria-level="1">
+<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 title="MUST" class="rfc2119">
+MUST
+</em>,
+<em title="MUST NOT" class="rfc2119">
+MUST
+NOT
+</em>,
+<em title="REQUIRED" class="rfc2119">
+REQUIRED
+</em>,
+<em title="SHOULD" class="rfc2119">
+SHOULD
+</em>,
+<em title="SHOULD NOT" class="rfc2119">
+SHOULD
+NOT
+</em>,
+<em title="RECOMMENDED" class="rfc2119">
+RECOMMENDED
+</em>,
+<em title="MAY" class="rfc2119">
+MAY
+</em>,
+and
+<em title="OPTIONAL" class="rfc2119">
+OPTIONAL
+</em>
+in
+this
+specification
+are
+to
+be
+interpreted
+as
+described
+in
+[
+<cite>
+<a href="#bib-RFC2119" class="bibref">
+RFC2119
+</a>
+</cite>
+].
+</p>
+<p>
+There
+are
+<del class="diff-old">three
+</del>
+<ins class="diff-chg">two
+</ins>
+classes
+of
+products
+that
+can
+claim
+conformance
+to
+this
+specification:
+<a href="#dfn-json-ld-processor" title="json-ld-processor" class="tref internalDFN">
+JSON-LD
+Processors
+</a>,
+<del class="diff-old">JSON-LD
+API
+Implementations
+,
+</del>
+and
+<a href="#dfn-rdf-serializer/deserializer" title="rdf-serializer/deserializer" class="tref internalDFN">
+RDF
+Serializers/Deserializers
+</a>.
+</p>
+<p>
+A
+conforming
+<dfn id="dfn-json-ld-processor" title="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>
+<del class="diff-old">A
+conforming
+JSON-LD
+API
+Implementation
+is
+a
+conforming
+JSON-LD
+Processor
+that
+exposes
+the
+Application
+Programming
+Interface
+(API)
+defined
+in
+this
+specification.
+It
+MUST
+implement
+the
+json-ld-1.0
+processing
+mode
+(for
+further
+details,
+see
+the
+processingMode
+option
+of
+JsonLdOptions
+).
+</del>
+<a href="#dfn-json-ld-processor" title="json-ld-processor" class="tref internalDFN">
+JSON-LD
+Processors
+</a>
+<del class="diff-old">and
+API
+Implementations
+</del>
+<em title="MUST NOT" class="rfc2119">
+MUST
+NOT
+</em>
+attempt
+to
+correct
+malformed
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+IRIs
+</a>
+or
+language
+tags;
+however,
+they
+<em title="MAY" class="rfc2119">
+MAY
+</em>
+issue
+validation
+warnings.
+IRIs
+are
+not
+modified
+other
+than
+conversion
+between
+<a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">
+relative
+</a>
+and
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
+absolute
+IRIs
+</a>.
+</p>
+<p>
+A
+conforming
+<dfn id="dfn-rdf-serializer/deserializer" title="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 href="#dfn-json-ld-processor" title="json-ld-processor" class="tref internalDFN">
+JSON-LD
+Processors
+</a>
+<del class="diff-old">and
+API
+Implementations
+</del>
+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 id="h_note_1" role="heading" aria-level="2" class="note-title">
+<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 href="#bib-JSON-LD-TESTS" class="bibref">
+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 id="h2_general-terminology" role="heading" aria-level="1">
+<span class="secno">
+4.
+</span>
+General
+Terminology
+</h2>
+<p>
+This
+document
+uses
+the
+following
+terms
+as
+defined
+in
+JSON
+[
+<cite>
+<a href="#bib-RFC4627" class="bibref">
+RFC4627
+</a>
+</cite>
+].
+Refer
+to
+the
+<em>
+JSON
+Grammar
+</em>
+section
+in
+[
+<cite>
+<a href="#bib-RFC4627" class="bibref">
+RFC4627
+</a>
+</cite>
+]
+for
+formal
+definitions.
+</p>
+<dl>
+<dt>
+<dfn id="dfn-json-object" title="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 href="#dfn-string" title="string" class="tref internalDFN">
+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 id="dfn-array" title="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="../json-ld/#sets-and-lists">
+Sets
+and
+Lists
+</a>
+</cite>
+in
+the
+JSON-LD
+specification
+[
+<cite>
+<a href="#bib-JSON-LD" class="bibref">
+JSON-LD
+</a>
+</cite>
+]).
+</dd>
+<dt>
+<dfn id="dfn-string" title="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 id="dfn-number" title="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 id="dfn-true" title="true">
+true
+</dfn>
+and
+<dfn id="dfn-false" title="false">
+false
+</dfn>
+</dt>
+<dd>
+Values
+that
+are
+used
+to
+express
+one
+of
+two
+possible
+boolean
+states.
+</dd>
+<dt>
+<dfn id="dfn-null" title="null">
+null
+</dfn>
+</dt>
+<dd>
+The
+<a href="#dfn-null" title="null" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>
+in
+expanded
+form,
+then
+the
+entire
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+is
+ignored.
+</dd>
+</dl>
+<p>
+Furthermore,
+the
+following
+terminology
+is
+used
+throughout
+this
+document:
+</p>
+<dl>
+<dt>
+<dfn id="dfn-keyword" title="keyword">
+keyword
+</dfn>
+</dt>
+<dd>
+A
+JSON
+key
+that
+is
+specific
+to
+JSON-LD,
+specified
+in
+the
+section
+<cite>
+<a href="../json-ld/#syntax-tokens-and-keywords">
+Syntax
+Tokens
+and
+Keywords
+</a>
+</cite>
+of
+the
+JSON-LD
+specification
+[
+<cite>
+<a href="#bib-JSON-LD" class="bibref">
+JSON-LD
+</a>
+</cite>
+].
+</dd>
+<dt>
+<dfn id="dfn-context" title="context">
+context
+</dfn>
+</dt>
+<dd>
+A
+set
+of
+rules
+for
+interpreting
+a
+JSON-LD
+document
+as
+specified
+in
+the
+section
+<cite>
+<a href="../json-ld/#the-context">
+The
+Context
+</a>
+</cite>
+of
+the
+JSON-LD
+specification
+[
+<cite>
+<a href="#bib-JSON-LD" class="bibref">
+JSON-LD
+</a>
+</cite>
+].
+</dd>
+<dt>
+<dfn id="dfn-json-ld-document" title="json-ld-document">
+JSON-LD
+document
+</dfn>
+</dt>
+<dd>
+A
+<a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">
+JSON-LD
+document
+</a>
+is
+a
+serialization
+of
+a
+collection
+of
+<a href="#dfn-graph" title="graph" class="tref internalDFN">
+graphs
+</a>
+and
+comprises
+exactly
+one
+<a href="#dfn-default-graph" title="default-graph" class="tref internalDFN">
+default
+graph
+</a>
+and
+zero
+or
+more
+<a href="#dfn-named-graph" title="named-graph" class="tref internalDFN">
+named
+graphs
+</a>.
+</dd>
+<dt>
+<dfn id="dfn-named-graph" title="named-graph">
+named
+graph
+</dfn>
+</dt>
+<dd>
+A
+named
+graph
+is
+a
+pair
+consisting
+of
+an
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+<a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">
+blank
+node
+</a>
+(the
+<dfn id="dfn-graph-name" title="graph-name">
+graph
+name
+</dfn>
+)
+and
+a
+<a href="#dfn-graph" title="graph" class="tref internalDFN">
+graph
+</a>.
+</dd>
+<dt>
+<dfn id="dfn-default-graph" title="default-graph">
+default
+graph
+</dfn>
+</dt>
+<dd>
+The
+default
+graph
+is
+the
+only
+graph
+in
+a
+JSON-LD
+document
+which
+has
+no
+<a href="#dfn-graph-name" title="graph-name" class="tref internalDFN">
+graph
+name
+</a>.
+</dd>
+<dt>
+<dfn id="dfn-graph" title="graph">
+Graph
+</dfn>
+</dt>
+<dd>
+A
+labeled
+directed
+graph,
+i.e.,
+a
+set
+of
+<a href="#dfn-node" title="node" class="tref internalDFN">
+nodes
+</a>
+connected
+by
+<a href="#dfn-edge" title="edge" class="tref internalDFN">
+edges
+</a>,
+as
+specified
+in
+the
+<cite>
+<a href="../json-ld/#data-model">
+Data
+Model
+</a>
+</cite>
+section
+of
+the
+JSON-LD
+specification
+[
+<cite>
+<a href="#bib-JSON-LD" class="bibref">
+JSON-LD
+</a>
+</cite>
+].
+</dd>
+<dt>
+<dfn id="dfn-edge" title="edge">
+edge
+</dfn>
+</dt>
+<dd>
+Every
+<a href="#dfn-edge" title="edge" class="tref internalDFN">
+edge
+</a>
+has
+a
+direction
+associated
+with
+it
+and
+is
+labeled
+with
+an
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+a
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifier
+</a>.
+Within
+the
+JSON-LD
+syntax
+these
+edge
+labels
+are
+called
+<dfn id="dfn-property" title="property">
+properties
+</dfn>.
+Whenever
+possible,
+an
+<a href="#dfn-edge" title="edge" class="tref internalDFN">
+edge
+</a>
+should
+be
+labeled
+with
+an
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+</dd>
+<dt>
+<dfn id="dfn-node" title="node">
+node
+</dfn>
+</dt>
+<dd>
+Every
+<a href="#dfn-node" title="node" class="tref internalDFN">
+node
+</a>
+is
+an
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+a
+<a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">
+blank
+node
+</a>,
+a
+<a href="#dfn-json-ld-value" title="json-ld-value" class="tref internalDFN">
+JSON-LD
+value
+</a>,
+or
+a
+<a href="#dfn-list" title="list" class="tref internalDFN">
+list
+</a>.
+</dd>
+<dt>
+<dfn id="dfn-iri" title="iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</dfn>
+</dt>
+<dd>
+An
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+(Internationalized
+Resource
+Identifier)
+is
+a
+string
+that
+conforms
+to
+the
+syntax
+defined
+in
+[
+<cite>
+<a href="#bib-RFC3987" class="bibref">
+RFC3987
+</a>
+</cite>
+].
+</dd>
+<dt>
+<dfn id="dfn-absolute-iri" title="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 href="#bib-RFC3987" class="bibref">
+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 id="dfn-relative-iri" title="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 href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+</dd>
+<dt>
+<dfn id="dfn-blank-node" title="blank-node">
+blank
+node
+</dfn>
+</dt>
+<dd>
+A
+<a href="#dfn-node" title="node" class="tref internalDFN">
+node
+</a>
+in
+a
+<a href="#dfn-graph" title="graph" class="tref internalDFN">
+graph
+</a>
+that
+is
+neither
+an
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+nor
+a
+<a href="#dfn-json-ld-value" title="json-ld-value" class="tref internalDFN">
+JSON-LD
+value
+</a>,
+nor
+a
+<a href="#dfn-list" title="list" class="tref internalDFN">
+list
+</a>.
+</dd>
+<dt>
+<dfn id="dfn-blank-node-identifier" title="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 href="#dfn-blank-node" title="blank-node" class="tref internalDFN">
+blank
+node
+</a>
+within
+the
+scope
+of
+a
+JSON-LD
+document.
+Blank
+node
+identifiers
+begin
+with
+<code>
+_:
+</code>.
+</dd>
+<dt>
+<dfn id="dfn-json-ld-value" title="json-ld-value">
+JSON-LD
+value
+</dfn>
+</dt>
+<dd>
+A
+<a href="#dfn-json-ld-value" title="json-ld-value" class="tref internalDFN">
+JSON-LD
+value
+</a>
+is
+a
+<a href="#dfn-string" title="string" class="tref internalDFN">
+string
+</a>,
+a
+<a href="#dfn-number" title="number" class="tref internalDFN">
+number
+</a>,
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>
+or
+<a href="#dfn-false" title="false" class="tref internalDFN">
+false
+</a>,
+a
+<a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">
+typed
+value
+</a>,
+or
+a
+<a href="#dfn-language-tagged-string" title="language-tagged-string" class="tref internalDFN">
+language-tagged
+string
+</a>.
+</dd>
+<dt>
+<dfn id="dfn-typed-value" title="typed-value">
+typed
+value
+</dfn>
+</dt>
+<dd>
+A
+<a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">
+typed
+value
+</a>
+consists
+of
+a
+value,
+which
+is
+a
+string,
+and
+a
+type,
+which
+is
+an
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+</dd>
+<dt>
+<dfn id="dfn-language-tagged-string" title="language-tagged-string">
+language-tagged
+string
+</dfn>
+</dt>
+<dd>
+A
+<a href="#dfn-language-tagged-string" title="language-tagged-string" class="tref internalDFN">
+language-tagged
+string
+</a>
+consists
+of
+a
+string
+and
+a
+non-empty
+language
+tag
+as
+defined
+by
+[
+<cite>
+<a href="#bib-BCP47" class="bibref">
+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 href="#bib-BCP47" class="bibref">
+BCP47
+</a>
+</cite>
+],
+and
+is
+normalized
+to
+lowercase.
+</dd>
+<dt>
+<dfn id="dfn-list" title="list">
+list
+</dfn>
+</dt>
+<dd>
+A
+<a href="#dfn-list" title="list" class="tref internalDFN">
+list
+</a>
+is
+an
+ordered
+sequence
+of
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+IRIs
+</a>,
+<a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">
+blank
+nodes
+</a>,
+and
+<a href="#dfn-json-ld-value" title="json-ld-value" class="tref internalDFN">
+JSON-LD
+values
+</a>.
+</dd>
+</dl>
+</section>
+<section id="algorithm-terms">
+<h2 id="h2_algorithm-terms" role="heading" aria-level="1">
+<span class="secno">
+5.
+</span>
+Algorithm
+Terms
+</h2>
+<dl>
+<dt>
+<dfn id="dfn-active-graph" title="active-graph">
+active
+graph
+</dfn>
+</dt>
+<dd>
+The
+name
+of
+the
+currently
+active
+graph
+that
+the
+processor
+should
+use
+when
+processing.
+</dd>
+<dt>
+<dfn id="dfn-active-subject" title="active-subject">
+active
+subject
+</dfn>
+</dt>
+<dd>
+The
+currently
+active
+subject
+that
+the
+processor
+should
+use
+when
+processing.
+</dd>
+<dt>
+<dfn id="dfn-active-property" title="active-property">
+active
+property
+</dfn>
+</dt>
+<dd>
+The
+currently
+active
+<a href="#dfn-property" title="property" class="tref internalDFN">
+property
+</a>
+or
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
+keyword
+</a>
+that
+the
+processor
+should
+use
+when
+processing.
+</dd>
+<dt>
+<dfn id="dfn-active-context" title="active-context">
+active
+context
+</dfn>
+</dt>
+<dd>
+A
+context
+that
+is
+used
+to
+resolve
+<a href="#dfn-term" title="term" class="tref internalDFN">
+terms
+</a>
+while
+the
+processing
+algorithm
+is
+running.
+</dd>
+<dt>
+<dfn id="dfn-local-context" title="local-context">
+local
+context
+</dfn>
+</dt>
+<dd>
+A
+context
+that
+is
+specified
+within
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>,
+specified
+via
+the
+<code>
+@context
+</code>
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
+keyword
+</a>.
+</dd>
+<dt>
+<dfn id="dfn-json-ld-input" title="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 id="dfn-term" title="term">
+term
+</dfn>
+</dt>
+<dd>
+A
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+is
+a
+short
+word
+defined
+in
+a
+context
+that
+may
+be
+expanded
+to
+an
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+</dd>
+<dt>
+<dfn id="dfn-compact-iri" title="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 id="dfn-prefix" title="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 href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+definitions
+for
+each
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+contained
+within
+a
+common
+vocabulary
+identified
+by
+<a href="#dfn-prefix" title="prefix" class="tref internalDFN">
+prefix
+</a>.
+</dd>
+<dt>
+<dfn id="dfn-node-object" title="node-object">
+node
+object
+</dfn>
+</dt>
+<dd>
+A
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
+node
+object
+</a>
+represents
+zero
+or
+more
+properties
+of
+a
+<a href="#dfn-node" title="node" class="tref internalDFN">
+node
+</a>
+in
+the
+<a href="#dfn-graph" title="graph" class="tref internalDFN">
+graph
+</a>
+serialized
+by
+the
+JSON-LD
+document.
+A
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+is
+a
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
+node
+object
+</a>
+if
+it
+exists
+outside
+of
+the
+JSON-LD
+<a href="#dfn-context" title="context" class="tref internalDFN">
+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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 id="dfn-value-object" title="value-object">
+value
+object
+</dfn>
+</dt>
+<dd>
+A
+<a href="#dfn-value-object" title="value-object" class="tref internalDFN">
+value
+object
+</a>
+is
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+that
+has
+an
+<code>
+@value
+</code>
+member.
+</dd>
+<dt>
+<dfn id="dfn-list-object" title="list-object">
+list
+object
+</dfn>
+</dt>
+<dd>
+A
+<a href="#dfn-list-object" title="list-object" class="tref internalDFN">
+list
+object
+</a>
+is
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+that
+has
+an
+<code>
+@list
+</code>
+member.
+</dd>
+<dt>
+<dfn id="dfn-set-object" title="set-object">
+set
+object
+</dfn>
+</dt>
+<dd>
+A
+<a href="#dfn-set-object" title="set-object" class="tref internalDFN">
+set
+object
+</a>
+is
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+that
+has
+an
+<code>
+@set
+</code>
+member.
+</dd>
+<dt>
+<dfn id="dfn-scalar" title="scalar">
+scalar
+</dfn>
+</dt>
+<dd>
+A
+scalar
+is
+either
+a
+JSON
+<a href="#dfn-string" title="string" class="tref internalDFN">
+string
+</a>,
+<a href="#dfn-number" title="number" class="tref internalDFN">
+number
+</a>,
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>,
+or
+<a href="#dfn-false" title="false" class="tref internalDFN">
+false
+</a>.
+</dd>
+<dt>
+<dfn id="dfn-rdf-subject" title="rdf-subject">
+RDF
+subject
+</dfn>
+</dt>
+<dd>
+A
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-subject" title="subject" class="tref externalDFN">
+subject
+</a>
+as
+specified
+by
+[
+<cite>
+<a href="#bib-RDF11-CONCEPTS" class="bibref">
+RDF11-CONCEPTS
+</a>
+</cite>
+].
+</dd>
+<dt>
+<dfn id="dfn-rdf-predicate" title="rdf-predicate">
+RDF
+predicate
+</dfn>
+</dt>
+<dd>
+A
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-predicate" title="predicate" class="tref externalDFN">
+predicate
+</a>
+as
+specified
+by
+[
+<cite>
+<a href="#bib-RDF11-CONCEPTS" class="bibref">
+RDF11-CONCEPTS
+</a>
+</cite>
+].
+</dd>
+<dt>
+<dfn id="dfn-rdf-object" title="rdf-object">
+RDF
+object
+</dfn>
+</dt>
+<dd>
+An
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-object" title="object" class="tref externalDFN">
+object
+</a>
+as
+specified
+by
+[
+<cite>
+<a href="#bib-RDF11-CONCEPTS" class="bibref">
+RDF11-CONCEPTS
+</a>
+</cite>
+].
+</dd>
+<dt>
+<dfn id="dfn-rdf-triple" title="rdf-triple">
+RDF
+triple
+</dfn>
+</dt>
+<dd>
+A
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple" title="triple" class="tref externalDFN">
+triple
+</a>
+as
+specified
+by
+[
+<cite>
+<a href="#bib-RDF11-CONCEPTS" class="bibref">
+RDF11-CONCEPTS
+</a>
+</cite>
+].
+</dd>
+<dt>
+<dfn id="dfn-rdf-dataset" title="rdf-dataset">
+RDF
+dataset
+</dfn>
+</dt>
+<dd>
+A
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-dataset" title="dataset" class="tref externalDFN">
+dataset
+</a>
+as
+specified
+by
+[
+<cite>
+<a href="#bib-RDF11-CONCEPTS" class="bibref">
+RDF11-CONCEPTS
+</a>
+</cite>
+]
+representing
+a
+collection
+of
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-graph" title="rdf-graphs" class="tref externalDFN">
+RDF
+graphs
+</a>.
+</dd>
+</dl>
+</section>
+<section id="context-processing-algorithms">
+<h2 id="h2_context-processing-algorithms" role="heading" aria-level="1">
+<span class="secno">
+6.
+</span>
+Context
+Processing
+Algorithms
+</h2>
+<section id="context-processing-algorithm">
+<h3 id="h3_context-processing-algorithm" role="heading" aria-level="2">
+<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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>.
+This
+section
+describes
+how
+to
+produce
+an
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>.
+</p>
+<p>
+The
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+contains
+the
+active
+<dfn id="dfn-term-definition" title="term-definition">
+term
+definitions
+</dfn>
+which
+specify
+how
+properties
+and
+values
+have
+to
+be
+interpreted
+as
+well
+as
+the
+current
+<dfn id="dfn-base-iri" title="base-iri">
+base
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</dfn>,
+the
+<dfn id="dfn-vocabulary-mapping" title="vocabulary-mapping">
+vocabulary
+mapping
+</dfn>
+and
+the
+<dfn id="dfn-default-language" title="default-language">
+default
+language
+</dfn>.
+Each
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+consists
+of
+an
+<dfn id="dfn-iri-mapping" title="iri-mapping">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+mapping
+</dfn>,
+a
+boolean
+flag
+<dfn id="dfn-reverse-property" title="reverse-property">
+reverse
+property
+</dfn>,
+an
+optional
+<dfn id="dfn-type-mapping" title="type-mapping">
+type
+mapping
+</dfn>
+or
+<dfn id="dfn-language-mapping" title="language-mapping">
+language
+mapping
+</dfn>,
+and
+an
+optional
+<dfn id="dfn-container-mapping" title="container-mapping">
+container
+mapping
+</dfn>.
+A
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+can
+not
+only
+be
+used
+to
+map
+a
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+to
+an
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>,
+but
+also
+to
+map
+a
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+to
+a
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
+keyword
+</a>,
+in
+which
+case
+it
+is
+referred
+to
+as
+a
+<dfn id="dfn-keyword-alias" title="keyword-alias">
+keyword
+alias
+</dfn>.
+</p>
+<p>
+When
+processing,
+the
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+is
+initialized
+without
+any
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definitions
+</a>,
+<a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">
+vocabulary
+mapping
+</a>,
+or
+<a href="#dfn-default-language" title="default-language" class="tref internalDFN">
+default
+language
+</a>.
+If
+a
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>
+is
+encountered
+during
+processing,
+a
+new
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+is
+created
+by
+cloning
+the
+existing
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>.
+Then
+the
+information
+from
+the
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>
+is
+merged
+into
+the
+new
+<a href= "#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>.
+Given
+that
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+contexts
+</a>
+may
+contain
+references
+to
+remote
+contexts,
+this
+includes
+their
+retrieval.
+</p>
+<section class="informative">
+<h4 role="heading" aria-level="3" id="overview">
+Overview
+</h4>
+<p>
+<em>
+This
+section
+is
+non-normative.
+</em>
+</p>
+<p>
+First
+we
+prepare
+a
+new
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+<i>
+result
+</i>
+by
+cloning
+the
+current
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>.
+Then
+we
+normalize
+the
+form
+of
+the
+passed
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>
+to
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>.
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+Local
+contexts
+</a>
+may
+be
+in
+the
+form
+of
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>,
+a
+<a href="#dfn-string" title="string" class="tref internalDFN">
+string
+</a>,
+or
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>
+containing
+a
+combination
+of
+the
+two.
+Finally
+we
+process
+each
+<a href="#dfn-context" title="context" class="tref internalDFN">
+context
+</a>
+contained
+in
+the
+<a href= "#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>
+as
+follows.
+</p>
+<p>
+If
+<a href="#dfn-context" title="context" class="tref internalDFN">
+context
+</a>
+is
+a
+<a href="#dfn-string" title="string" class="tref internalDFN">
+string
+</a>,
+it
+represents
+a
+reference
+to
+a
+remote
+context.
+We
+dereference
+the
+remote
+context
+and
+replace
+<a href="#dfn-context" title="context" class="tref internalDFN">
+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 href="#dfn-context" title="context" class="tref internalDFN">
+context
+</a>
+by
+recursively
+using
+this
+algorithm
+ensuring
+that
+there
+is
+no
+cyclical
+reference.
+</p>
+<p>
+If
+<a href="#dfn-context" title="context" class="tref internalDFN">
+context
+</a>
+is
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>,
+we
+first
+update
+the
+<a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">
+base
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+the
+<a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">
+vocabulary
+mapping
+</a>,
+and
+the
+<a href="#dfn-default-language" title="default-language" class="tref internalDFN">
+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 href="#dfn-local-context" title="local-context" class="tref internalDFN">
+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 href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>,
+we
+update
+the
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+in
+<i>
+result
+</i>.
+Since
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definitions
+</a>
+in
+a
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>
+may
+themselves
+contain
+<a href="#dfn-term" title="term" class="tref internalDFN">
+terms
+</a>
+or
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
+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 href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+dependencies,
+we
+update
+the
+current
+<a href="#dfn-term-definition" title="term-definition" class= "tref internalDFN">
+term
+definition
+</a>,
+which
+may
+be
+a
+<a href="#dfn-keyword-alias" title="keyword-alias" class="tref internalDFN">
+keyword
+alias
+</a>.
+</p>
+<p>
+Finally,
+we
+return
+<i>
+result
+</i>
+as
+the
+new
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>.
+</p>
+</section>
+<section>
+<h4 role="heading" aria-level="3" id="algorithm">
+Algorithm
+</h4>
+<p>
+This
+algorithm
+specifies
+how
+a
+new
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+is
+updated
+with
+a
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>.
+The
+algorithm
+takes
+three
+input
+variables:
+an
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+a
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>,
+and
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>.
+</p>
+<del class="diff-old">Feature
+at
+Risk
+10
+:
+Support
+for
+@base:
+null
+Note:
+This
+feature
+is
+"at
+risk"
+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
+"at
+risk"
+in
+JSON-LD
+1.0
+Unlike
+many
+other
+serialization
+formats,
+JSON-LD
+allows
+to
+specify
+that
+there
+is
+no
+base
+IRI
+from
+within
+the
+document
+(by
+setting
+@base
+to
+null
+).
+The
+result
+is
+that
+the
+algorithm
+for
+establishing
+a
+base
+IRI
+as
+specified
+in
+RFC3986
+section
+5.1
+is
+overridden
+so
+relative
+IRIs
+remain
+relative
+IRIs
+even
+in
+the
+case
+that
+an
+IRI
+would
+be
+available
+in
+one
+of
+the
+outer
+layers
+(e.g.,
+the
+IRI
+used
+to
+retrieve
+the
+document
+or
+an
+application
+supplied
+base
+IRI
+).
+Based
+on
+implementer
+feedback,
+the
+Working
+Group
+may
+decide
+to
+remove
+this
+feature
+from
+JSON-LD
+1.0.
+</del>
+<ol class="algorithm">
+<li>
+Initialize
+<i>
+result
+</i>
+to
+the
+result
+of
+cloning
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>.
+</li>
+<li>
+If
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>
+is
+not
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>,
+set
+it
+to
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>
+containing
+only
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>.
+</li>
+<li>
+For
+each
+item
+<i>
+context
+</i>
+in
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>:
+<ol class="algorithm">
+<li>
+If
+<i>
+context
+</i>
+is
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+set
+<i>
+result
+</i>
+to
+a
+newly-initialized
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+and
+continue
+with
+the
+next
+<i>
+context
+</i>.
+The
+<a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">
+base
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+of
+the
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>.
+If
+set,
+the
+<code class="idlMemberName">
+<a href="#widl-JsonLdOptions-base">
+base
+</a>
+</code>
+option
+of
+a
+JSON-LD
+API
+Implementation
+overrides
+the
+<a href="#dfn-base-iri" title="base-iri" class= "tref internalDFN">
+base
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+</li>
+<li>
+If
+<i>
+context
+</i>
+is
+a
+<a href="#dfn-string" title="string" class="tref internalDFN">
+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 href="#bib-RFC3986" class="bibref">
+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 href="#bib-RFC3986" class="bibref">
+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 href="#bib-RFC3987" class="bibref">
+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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<i>
+context
+</i>
+for
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+remove
+the
+<a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">
+base
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+of
+<i>
+result
+</i>.
+</li>
+<li>
+Otherwise,
+if
+<i>
+value
+</i>
+is
+an
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+the
+<a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">
+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 href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">
+relative
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+and
+the
+<a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">
+base
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+of
+<i>
+result
+</i>
+is
+not
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+set
+the
+<a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">
+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 href="#dfn-base-iri" title="base-iri" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+remove
+any
+<a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">
+vocabulary
+mapping
+</a>
+from
+<i>
+result
+</i>.
+</li>
+<li>
+Otherwise,
+if
+<i>
+value
+</i>
+is
+an
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifier
+</a>,
+the
+<a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">
+vocabulary
+mapping
+</a>
+of
+<i>
+result
+</i>
+is
+set
+to
+<i>
+value
+</i>.
+If
+it
+is
+not
+an
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+remove
+any
+<a href="#dfn-default-language" title="default-language" class="tref internalDFN">
+default
+language
+</a>
+from
+<i>
+result
+</i>.
+</li>
+<li>
+Otherwise,
+if
+<i>
+value
+</i>
+is
+<a href="#dfn-string" title="string" class="tref internalDFN">
+string
+</a>,
+the
+<a href="#dfn-default-language" title="default-language" class="tref internalDFN">
+default
+language
+</a>
+of
+<i>
+result
+</i>
+is
+set
+to
+lowercased
+<i>
+value
+</i>.
+If
+it
+is
+not
+a
+<a href="#dfn-string" title="string" class="tref internalDFN">
+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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+<i>
+defined
+</i>
+to
+use
+to
+keep
+track
+of
+whether
+or
+not
+a
+<a href="#dfn-term" title="term" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<i>
+context
+</i>
+for
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+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 id="h3_create-term-definition" role="heading" aria-level="2">
+<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 href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+in
+the
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+for
+a
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+being
+processed
+in
+a
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>.
+</p>
+<section class="informative">
+<h4 role="heading" aria-level="3" id="overview-1">
+Overview
+</h4>
+<p>
+<em>
+This
+section
+is
+non-normative.
+</em>
+</p>
+<p>
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+Term
+definitions
+</a>
+are
+created
+by
+parsing
+the
+information
+in
+the
+given
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>
+for
+the
+given
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>.
+If
+the
+given
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+is
+a
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
+compact
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+it
+may
+omit
+an
+<a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+mapping
+</a>
+by
+depending
+on
+its
+<a href="#dfn-prefix" title="prefix" class="tref internalDFN">
+prefix
+</a>
+having
+its
+own
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>.
+If
+the
+<a href="#dfn-prefix" title="prefix" class= "tref internalDFN">
+prefix
+</a>
+is
+a
+key
+in
+the
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>,
+then
+its
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+must
+first
+be
+created,
+through
+recursion,
+before
+continuing.
+Because
+a
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+can
+depend
+on
+other
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+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 href="#dfn-term" title="term" class="tref internalDFN">
+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 href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+have
+been
+defined,
+the
+rest
+of
+the
+information
+in
+the
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>
+for
+the
+given
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+is
+taken
+into
+account,
+creating
+the
+appropriate
+<a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+mapping
+</a>,
+<a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+container
+mapping
+</a>,
+and
+<a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mapping
+</a>
+or
+<a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">
+language
+mapping
+</a>
+for
+the
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>.
+</p>
+</section>
+<section>
+<h4 role="heading" aria-level="3" id="algorithm-1">
+Algorithm
+</h4>
+<p>
+The
+algorithm
+has
+four
+required
+inputs
+which
+are:
+an
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+a
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+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 href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>
+(indicating
+that
+the
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+has
+already
+been
+created),
+return.
+Otherwise,
+if
+the
+value
+is
+<a href="#dfn-false" title="false" class="tref internalDFN">
+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 href="#dfn-false" title="false" class="tref internalDFN">
+false
+</a>.
+This
+indicates
+that
+the
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+is
+now
+being
+created
+but
+is
+not
+yet
+complete.
+</li>
+<li>
+Since
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
+keywords
+</a>
+cannot
+be
+overridden,
+<i>
+term
+</i>
+must
+not
+be
+a
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
+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 href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+for
+<i>
+term
+</i>
+in
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>.
+</li>
+<li>
+Initialize
+<i>
+value
+</i>
+to
+a
+copy
+of
+the
+value
+associated
+with
+the
+key
+<i>
+term
+</i>
+in
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>.
+</li>
+<li>
+If
+<i>
+value
+</i>
+is
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>
+or
+<i>
+value
+</i>
+is
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+containing
+the
+key-value
+pair
+<code>
+@id
+</code>
+-
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+set
+the
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+in
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+to
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+set
+the
+value
+associated
+with
+<i>
+defined
+</i>
+'s
+key
+<i>
+term
+</i>
+to
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>,
+and
+return.
+</li>
+<li>
+Otherwise,
+if
+<i>
+value
+</i>
+is
+a
+<a href="#dfn-string" title="string" class="tref internalDFN">
+string
+</a>,
+convert
+it
+to
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+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 href="#dfn-string" title="string" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<i>
+type
+</i>
+for
+<i>
+value
+</i>,
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>
+for
+<i>
+vocab
+</i>,
+<a href="#dfn-false" title="false" class="tref internalDFN">
+false
+</a>
+for
+<i>
+document
+relative
+</i>,
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+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 href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
+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 href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+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 href="#dfn-string" title="string" class="tref internalDFN">
+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 href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN">
+<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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+the
+value
+associated
+with
+the
+<code>
+@reverse
+</code>
+key
+for
+<i>
+value
+</i>,
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>
+for
+<i>
+vocab
+</i>,
+<a href="#dfn-false" title="false" class="tref internalDFN">
+false
+</a>
+for
+<i>
+document
+relative
+</i>,
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>,
+and
+<i>
+defined
+</i>.
+If
+the
+result
+is
+neither
+an
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+nor
+a
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifier
+</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 href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+container
+mapping
+</a>
+of
+<i>
+definition
+</i>
+to
+its
+value;
+if
+its
+value
+is
+neither
+<code>
+@set
+</code>,
+nor
+<code>
+@index
+</code>,
+nor
+<a href="#dfn-null" title="null" class="tref internalDFN">
+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 href="#dfn-reverse-property" title="reverse-property" class="tref internalDFN">
+reverse
+property
+</a>
+flag
+of
+<i>
+definition
+</i>
+to
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>.
+</li>
+<li>
+Set
+the
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+of
+<i>
+term
+</i>
+in
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+to
+<i>
+definition
+</i>
+and
+the
+value
+associated
+with
+<i>
+defined
+</i>
+'s
+key
+<i>
+term
+</i>
+to
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>
+and
+return.
+</li>
+</ol>
+</li>
+<li>
+Set
+the
+<a href="#dfn-reverse-property" title="reverse-property" class="tref internalDFN">
+reverse
+property
+</a>
+flag
+of
+<i>
+definition
+</i>
+to
+<a href="#dfn-false" title="false" class="tref internalDFN">
+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 href="#dfn-string" title="string" class="tref internalDFN">
+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 href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN">
+<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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+the
+value
+associated
+with
+the
+<code>
+@id
+</code>
+key
+for
+<i>
+value
+</i>,
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>
+for
+<i>
+vocab
+</i>,
+<a href="#dfn-false" title="false" class="tref internalDFN">
+false
+</a>
+for
+<i>
+document
+relative
+</i>,
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>,
+and
+<i>
+defined
+</i>.
+If
+the
+resulting
+<a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+mapping
+</a>
+is
+neither
+a
+<a href= "#dfn-keyword" title="keyword" class="tref internalDFN">
+keyword
+</a>,
+nor
+an
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+nor
+a
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifier
+</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;
+if
+it
+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 href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
+compact
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+with
+a
+<a href="#dfn-prefix" title="prefix" class="tref internalDFN">
+prefix
+</a>
+that
+is
+a
+key
+in
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>
+a
+dependency
+has
+been
+found.
+Use
+this
+algorithm
+recursively
+passing
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>,
+the
+<a href="#dfn-prefix" title="prefix" class="tref internalDFN">
+prefix
+</a>
+as
+<i>
+term
+</i>,
+and
+<i>
+defined
+</i>.
+</li>
+<li>
+If
+<i>
+term
+</i>
+'s
+<a href="#dfn-prefix" title="prefix" class="tref internalDFN">
+prefix
+</a>
+has
+a
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+in
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+set
+the
+<a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+mapping
+</a>
+of
+<i>
+definition
+</i>
+to
+the
+result
+of
+concatenating
+the
+value
+associated
+with
+the
+<a href="#dfn-prefix" title="prefix" class="tref internalDFN">
+prefix
+</a>
+'s
+<a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN">
+<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 href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifier
+</a>.
+Set
+the
+<a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+mapping
+</a>
+of
+<i>
+definition
+</i>
+to
+<i>
+term
+</i>.
+</li>
+</ol>
+</li>
+<li>
+Otherwise,
+if
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+has
+a
+<a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">
+vocabulary
+mapping
+</a>,
+the
+<a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN">
+<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 href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">
+vocabulary
+mapping
+</a>
+and
+<i>
+term
+</i>.
+If
+it
+does
+not
+have
+a
+<a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">
+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 href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>
+or
+a
+<a href="#dfn-string" title="string" class="tref internalDFN">
+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 href="#dfn-string" title="string" class="tref internalDFN">
+string
+</a>
+set
+it
+to
+lowercased
+<i>
+language
+</i>.
+Set
+the
+<a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">
+language
+mapping
+</a>
+of
+<i>
+definition
+</i>
+to
+<i>
+language
+</i>.
+</li>
+</ol>
+</li>
+<li>
+Set
+the
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+of
+<i>
+term
+</i>
+in
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+to
+<i>
+definition
+</i>
+and
+set
+the
+value
+associated
+with
+<i>
+defined
+</i>
+'s
+key
+<i>
+term
+</i>
+to
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>.
+</li>
+</ol>
+</section>
+</section>
+<section id="iri-expansion">
+<h3 id="h3_iri-expansion" role="heading" aria-level="2">
+<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 href="#dfn-iri" title="iri" class="tref internalDFN">
+IRIs
+</a>.
+This
+section
+defines
+an
+algorithm
+for
+transforming
+a
+<a href="#dfn-string" title="string" class="tref internalDFN">
+string
+</a>
+that
+represents
+an
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+into
+an
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifier
+</a>.
+It
+also
+covers
+transforming
+<a href="#dfn-keyword-alias" title="keyword-alias" class="tref internalDFN">
+keyword
+aliases
+</a>
+into
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
+keywords
+</a>.
+</p>
+<p>
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<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 href="#dfn-local-context" title="local-context" class="tref internalDFN">
+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 href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+dependencies
+to
+be
+processed
+via
+the
+<a href="#create-term-definition">
+Create
+Term
+Definition
+algorithm
+</a>.
+</p>
+<section class="informative">
+<h4 role="heading" aria-level="3" 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 href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+we
+must
+first
+determine
+if
+it
+is
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+a
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>,
+a
+<a href="#dfn-keyword-alias" title="keyword-alias" class="tref internalDFN">
+keyword
+alias
+</a>,
+or
+some
+form
+of
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<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 href="#dfn-keyword-alias" title="keyword-alias" class="tref internalDFN">
+keyword
+alias
+</a>
+to
+a
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
+keyword
+</a>
+and
+a
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+to
+an
+<a href="#dfn-absolute-iri" title="absolute-iri" class= "tref internalDFN">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+according
+to
+its
+<a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+mapping
+</a>
+in
+the
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>.
+While
+inspecting
+<i>
+value
+</i>
+we
+may
+also
+find
+that
+we
+need
+to
+create
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+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 href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>
+against
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>.
+We
+know
+we
+need
+to
+create
+a
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+in
+the
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+when
+<i>
+value
+</i>
+is
+a
+key
+in
+the
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>
+and
+the
+<i>
+defined
+</i>
+map
+does
+not
+have
+a
+key
+for
+<i>
+value
+</i>
+with
+an
+associated
+value
+of
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>.
+The
+<i>
+defined
+</i>
+map
+is
+used
+during
+<a href="#context-processing-algorithm">
+Context
+Processing
+</a>
+to
+keep
+track
+of
+which
+<a href="#dfn-term" title="term" class="tref internalDFN">
+terms
+</a>
+have
+already
+been
+defined
+or
+are
+in
+the
+process
+of
+being
+defined.
+We
+create
+a
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+by
+using
+the
+<a href="#create-term-definition">
+Create
+Term
+Definition
+algorithm
+</a>.
+</p>
+</section>
+<section>
+<h4 role="heading" aria-level="3" id="algorithm-2">
+Algorithm
+</h4>
+<p>
+The
+algorithm
+takes
+two
+required
+and
+four
+optional
+input
+variables.
+The
+required
+inputs
+are
+an
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+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 href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">
+relative
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+against
+the
+document's
+base
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+the
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context's
+</a>
+<a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">
+vocabulary
+mapping
+</a>,
+respectively,
+and
+a
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+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 href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>
+and
+<i>
+defined
+</i>
+are
+initialized
+to
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>.
+</p>
+<ol class="algorithm">
+<li>
+If
+<i>
+value
+</i>
+is
+a
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
+keyword
+</a>
+or
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+return
+<i>
+value
+</i>
+as
+is.
+</li>
+<li>
+If
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>
+is
+not
+<a href="#dfn-null" title="null" class="tref internalDFN">
+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 href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>,
+invoke
+the
+<a href="#create-term-definition">
+Create
+Term
+Definition
+algorithm
+</a>,
+passing
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>,
+<i>
+value
+</i>
+as
+<i>
+term
+</i>,
+and
+<i>
+defined
+</i>.
+This
+will
+ensure
+that
+a
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+is
+created
+for
+<i>
+value
+</i>
+in
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+during
+<a href= "#context-processing-algorithm">
+Context
+Processing
+</a>.
+</li>
+<li>
+If
+<i>
+vocab
+</i>
+is
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>
+and
+the
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+has
+a
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+for
+<i>
+value
+</i>,
+return
+the
+associated
+<a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN">
+<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 href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+a
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
+compact
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+or
+a
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifier
+</a>:
+<ol class="algorithm">
+<li>
+Split
+<i>
+value
+</i>
+into
+a
+<a href="#dfn-prefix" title="prefix" class="tref internalDFN">
+prefix
+</a>
+and
+<i>
+suffix
+</i>
+at
+the
+first
+occurrence
+of
+a
+colon
+(
+<code>:
+</code>
+).
+</li>
+<li>
+If
+<a href="#dfn-prefix" title="prefix" class="tref internalDFN">
+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 href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+a
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifier
+</a>.
+</li>
+<li>
+If
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>
+is
+not
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+it
+contains
+a
+key
+that
+equals
+<a href="#dfn-prefix" title="prefix" class="tref internalDFN">
+prefix
+</a>,
+and
+the
+value
+associated
+with
+the
+key
+that
+equals
+<i>
+prefix
+</i>
+in
+<i>
+defined
+</i>
+is
+not
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>,
+invoke
+the
+<a href="#create-term-definition">
+Create
+Term
+Definition
+algorithm
+</a>,
+passing
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>,
+<i>
+prefix
+</i>
+as
+<i>
+term
+</i>,
+and
+<i>
+defined
+</i>.
+This
+will
+ensure
+that
+a
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+is
+created
+for
+<a href="#dfn-prefix" title="prefix" class="tref internalDFN">
+prefix
+</a>
+in
+<a href= "#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+during
+<a href="#context-processing-algorithm">
+Context
+Processing
+</a>.
+</li>
+<li>
+If
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+contains
+a
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+for
+<a href="#dfn-prefix" title="prefix" class="tref internalDFN">
+prefix
+</a>,
+return
+the
+result
+of
+concatenating
+the
+<a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+mapping
+</a>
+associated
+with
+<a href="#dfn-prefix" title="prefix" class="tref internalDFN">
+prefix
+</a>
+and
+<i>
+suffix
+</i>.
+</li>
+<li>
+Return
+<i>
+value
+</i>
+as
+it
+is
+already
+an
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+</li>
+</ol>
+</li>
+<li>
+If
+<i>
+vocab
+</i>
+is
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>,
+and
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+has
+a
+<a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">
+vocabulary
+mapping
+</a>,
+return
+the
+result
+of
+concatenating
+the
+<a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">
+vocabulary
+mapping
+</a>
+with
+<i>
+value
+</i>.
+</li>
+<li>
+Otherwise,
+if
+<i>
+document
+relative
+</i>
+is
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>,
+set
+<i>
+value
+</i>
+to
+the
+result
+of
+resolving
+<i>
+value
+</i>
+against
+the
+<a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">
+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 href="#bib-RFC3986" class="bibref">
+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 href="#bib-RFC3987" class="bibref">
+RFC3987
+</a>
+</cite>
+].
+</li>
+<li>
+Return
+<i>
+value
+</i>
+as
+is.
+</li>
+</ol>
+</section>
+</section>
+</section>
+<section id="expansion-algorithms">
+<h2 id="h2_expansion-algorithms" role="heading" aria-level="1">
+<span class="secno">
+7.
+</span>
+Expansion
+Algorithms
+</h2>
+<section id="expansion-algorithm">
+<h3 id="h3_expansion-algorithm" role="heading" aria-level="2">
+<span class="secno">
+7.1
+</span>
+Expansion
+Algorithm
+</h3>
+<p>
+This
+algorithm
+expands
+a
+JSON-LD
+document,
+such
+that
+all
+<a href="#dfn-context" title="context" class="tref internalDFN">
+context
+</a>
+definitions
+are
+removed,
+all
+<a href="#dfn-term" title="term" class="tref internalDFN">
+terms
+</a>
+and
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
+compact
+IRIs
+</a>
+are
+expanded
+to
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
+absolute
+IRIs
+</a>,
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifiers
+</a>,
+or
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
+keywords
+</a>
+and
+all
+<a href="#dfn-json-ld-value" title="json-ld-value" class="tref internalDFN">
+JSON-LD
+values
+</a>
+are
+expressed
+in
+<a href="#dfn-array" title="array" class="tref internalDFN">
+arrays
+</a>
+in
+<a href="#dfn-expanded-form" title="expanded-form" class="tref internalDFN">
+expanded
+form
+</a>.
+</p>
+<section class="informative">
+<h4 role="heading" aria-level="3" 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 href="#dfn-expansion" title="expansion" class="tref internalDFN">
+expanded
+</a>
+<i>
+result
+</i>.
+When
+<a href="#dfn-expansion" title="expansion" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+there
+is
+nothing
+to
+expand.
+</li>
+<li>
+Otherwise,
+if
+<i>
+element
+</i>
+is
+a
+<a href="#dfn-scalar" title="scalar" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>,
+then
+we
+expand
+each
+of
+its
+items
+recursively
+and
+return
+them
+in
+a
+new
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>.
+</li>
+<li>
+Otherwise,
+<i>
+element
+</i>
+is
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-term" title="term" class="tref internalDFN">
+terms
+</a>
+or
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
+compact
+IRIs
+</a>
+and
+others
+will
+be
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
+keywords
+</a>
+or
+simply
+ignored
+because
+they
+do
+not
+have
+definitions
+in
+the
+<a href="#dfn-context" title="context" class="tref internalDFN">
+context
+</a>.
+Any
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>,
+we
+return
+<i>
+result
+</i>.
+</p>
+</section>
+<section>
+<h4 role="heading" aria-level="3" id="algorithm-3">
+Algorithm
+</h4>
+<p>
+The
+algorithm
+takes
+three
+input
+variables:
+an
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+an
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>,
+and
+an
+<i>
+element
+</i>
+to
+be
+expanded.
+To
+begin,
+the
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>
+is
+set
+to
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+and
+<i>
+element
+</i>
+is
+set
+to
+the
+<a href="#dfn-json-ld-input" title="json-ld-input" class="tref internalDFN">
+JSON-LD
+input
+</a>.
+</p>
+<ol class="algorithm">
+<li>
+If
+<i>
+element
+</i>
+is
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+return
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>.
+</li>
+<li>
+If
+<i>
+element
+</i>
+is
+a
+<a href="#dfn-scalar" title="scalar" class="tref internalDFN">
+scalar
+</a>,
+<ol class="algorithm">
+<li>
+If
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>
+is
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>
+or
+<code>
+@graph
+</code>,
+drop
+the
+free-floating
+<a href="#dfn-scalar" title="scalar" class="tref internalDFN">
+scalar
+</a>
+by
+returning
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>.
+</li>
+<li>
+Return
+the
+result
+of
+the
+<a href="#value-expansion">
+Value
+Expansion
+algorithm
+</a>,
+passing
+the
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>,
+and
+<i>
+element
+</i>
+as
+<i>
+value
+</i>.
+</li>
+</ol>
+</li>
+<li>
+If
+<i>
+element
+</i>
+is
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>,
+and
+<i>
+item
+</i>
+as
+<i>
+element
+</i>.
+</li>
+<li>
+If
+the
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>
+is
+<code>
+@list
+</code>
+or
+its
+<a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+container
+mapping
+</a>
+is
+set
+to
+<code>
+@list
+</code>,
+the
+<i>
+expanded
+item
+</i>
+must
+not
+be
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>
+or
+a
+<a href="#dfn-list-object" title="list-object" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>.
+</li>
+<li>
+If
+<i>
+element
+</i>
+contains
+the
+key
+<code>
+@context
+</code>,
+set
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+to
+the
+result
+of
+the
+<a href="#context-processing-algorithm">
+Context
+Processing
+algorithm
+</a>,
+passing
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+and
+the
+value
+of
+the
+<code>
+@context
+</code>
+key
+as
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>.
+</li>
+<li>
+Initialize
+an
+empty
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<i>
+key
+</i>
+for
+<i>
+value
+</i>,
+and
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>
+for
+<i>
+vocab
+</i>.
+</li>
+<li>
+If
+<i>
+expanded
+property
+</i>
+is
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>
+or
+it
+neither
+contains
+a
+colon
+(
+<code>:
+</code>
+)
+nor
+it
+is
+a
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
+keyword
+</a>,
+drop
+<i>
+key
+</i>
+by
+continuing
+to
+the
+next
+<i>
+key
+</i>.
+</li>
+<li>
+If
+<i>
+expanded
+property
+</i>
+is
+a
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
+keyword
+</a>:
+<ol class="algorithm">
+<li>
+If
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+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 href="#dfn-string" title="string" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<i>
+value
+</i>,
+and
+<a href="#dfn-true" title="true" class="tref internalDFN">
+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 href="#dfn-string" title="string" class="tref internalDFN">
+string
+</a>
+nor
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>
+of
+<a href="#dfn-string" title="string" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>
+for
+<i>
+vocab
+</i>,
+and
+<a href="#dfn-true" title="true" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<code>
+@graph
+</code>
+for
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+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 href="#dfn-scalar" title="scalar" class="tref internalDFN">
+scalar
+</a>
+or
+<a href="#dfn-null" title="null" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+set
+the
+<code>
+@value
+</code>
+member
+of
+<i>
+result
+</i>
+to
+<a href="#dfn-null" title="null" class="tref internalDFN">
+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 href="#dfn-string" title="string" class="tref internalDFN">
+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 href="#dfn-string" title="string" class="tref internalDFN">
+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 href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>
+is
+<a href="#dfn-null" title="null" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>,
+and
+<i>
+value
+</i>
+for
+<i>
+element
+</i>.
+</li>
+<li>
+If
+<i>
+expanded
+value
+</i>
+is
+a
+<a href="#dfn-list-object" title="list-object" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<code>
+@reverse
+</code>
+as
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-value-object" title="value-object" class="tref internalDFN">
+value
+object
+</a>
+or
+<a href="#dfn-list-object" title="list-object" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+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 href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+container
+mapping
+</a>
+in
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+is
+<code>
+@language
+</code>
+and
+<i>
+value
+</i>
+is
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+then
+<i>
+value
+</i>
+is
+expanded
+from
+a
+<a href="../json-ld/#dfn-language-map" title="language-map" class="tref externalDFN">
+language
+map
+</a>
+as
+follows:
+<ol class="algorithm">
+<li>
+Initialize
+<i>
+expanded
+value
+</i>
+to
+an
+empty
+<a href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>
+set
+it
+to
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-string" title="string" class="tref internalDFN">
+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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+container
+mapping
+</a>
+in
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+is
+<code>
+@index
+</code>
+and
+<i>
+value
+</i>
+is
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>
+set
+it
+to
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<i>
+key
+</i>
+as
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<i>
+key
+</i>
+for
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>,
+and
+<i>
+value
+</i>
+for
+<i>
+element
+</i>.
+</li>
+<li>
+If
+<i>
+expanded
+value
+</i>
+is
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+ignore
+<i>
+key
+</i>
+by
+continuing
+to
+the
+next
+<i>
+key
+</i>
+from
+<i>
+element
+</i>.
+</li>
+<li>
+If
+the
+<a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+container
+mapping
+</a>
+associated
+to
+<i>
+key
+</i>
+in
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+is
+<code>
+@list
+</code>
+and
+<i>
+expanded
+value
+</i>
+is
+not
+already
+a
+<a href="#dfn-list-object" title="list-object" class="tref internalDFN">
+list
+object
+</a>,
+convert
+<i>
+expanded
+value
+</i>
+to
+a
+<a href="#dfn-list-object" title="list-object" class="tref internalDFN">
+list
+object
+</a>
+by
+first
+setting
+it
+to
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>
+containing
+only
+<i>
+expanded
+value
+</i>
+if
+it
+is
+not
+already
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>,
+and
+then
+by
+setting
+it
+to
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+containing
+the
+key-value
+pair
+<code>
+@list
+</code>
+-
+<i>
+expanded
+value
+</i>.
+</li>
+<li>
+Otherwise,
+if
+the
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+associated
+to
+<i>
+key
+</i>
+indicates
+that
+it
+is
+a
+<a href="#dfn-reverse-property" title="reverse-property" class="tref internalDFN">
+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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>,
+set
+it
+to
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-value-object" title="value-object" class="tref internalDFN">
+value
+object
+</a>
+or
+<a href="#dfn-list-object" title="list-object" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-reverse-property" title="reverse-property" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+then
+set
+<i>
+result
+</i>
+to
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>.
+</li>
+<li>
+Otherwise,
+if
+the
+value
+of
+<i>
+result
+</i>
+'s
+<code>
+@value
+</code>
+member
+is
+not
+a
+<a href="#dfn-string" title="string" class="tref internalDFN">
+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 href="#dfn-string" title="string" class="tref internalDFN">
+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 href="#dfn-iri" title="iri" class="tref internalDFN">
+<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 href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>,
+set
+it
+to
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>.
+</li>
+<li>
+If
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>
+is
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>
+or
+<code>
+@graph
+</code>,
+drop
+free-floating
+values
+as
+follows:
+<ol class="algorithm">
+<li>
+If
+<i>
+result
+</i>
+is
+an
+empty
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+or
+contains
+the
+keys
+<code>
+@value
+</code>
+or
+<code>
+@list
+</code>,
+set
+<i>
+result
+</i>
+to
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>.
+</li>
+<li>
+Otherwise,
+if
+<i>
+result
+</i>
+is
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+whose
+only
+key
+is
+<code>
+@id
+</code>,
+set
+<i>
+result
+</i>
+to
+<a href="#dfn-null" title="null" class="tref internalDFN">
+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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+set
+it
+to
+an
+empty
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>.
+Finally,
+if
+the
+result
+is
+not
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>,
+then
+set
+the
+result
+to
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>
+containing
+only
+the
+result.
+</p>
+</section>
+</section>
+<section id="value-expansion">
+<h3 id="h3_value-expansion" role="heading" aria-level="2">
+<span class="secno">
+7.2
+</span>
+Value
+Expansion
+</h3>
+<p>
+Some
+values
+in
+JSON-LD
+can
+be
+expressed
+in
+a
+<a href="#dfn-compacted-form" title="compacted-form" class="tref internalDFN">
+compact
+form
+</a>.
+These
+values
+are
+required
+to
+be
+<a href="#dfn-expansion" title="expansion" class="tref internalDFN">
+expanded
+</a>
+at
+times
+when
+processing
+JSON-LD
+documents.
+A
+value
+is
+said
+to
+be
+in
+<dfn id="dfn-expanded-form" title="expanded-form">
+expanded
+form
+</dfn>
+after
+the
+application
+of
+this
+algorithm.
+</p>
+<section class="informative">
+<h4 role="heading" aria-level="3" id="overview-4">
+Overview
+</h4>
+<p>
+<em>
+This
+section
+is
+non-normative.
+</em>
+</p>
+<p>
+If
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>
+has
+a
+<a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mapping
+</a>
+in
+the
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+set
+to
+<code>
+@id
+</code>
+or
+<code>
+@vocab
+</code>,
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mapping
+</a>
+associated
+with
+the
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>
+or
+an
+<code>
+@language
+</code>
+member
+if
+<i>
+value
+</i>
+is
+a
+<a href="#dfn-string" title="string" class="tref internalDFN">
+string
+</a>
+and
+there
+is
+<a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">
+language
+mapping
+</a>
+associated
+with
+the
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>.
+</p>
+</section>
+<section>
+<h4 role="heading" aria-level="3" id="algorithm-4">
+Algorithm
+</h4>
+<p>
+The
+algorithm
+takes
+three
+required
+inputs:
+an
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+an
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>,
+and
+a
+<i>
+value
+</i>
+to
+expand.
+</p>
+<ol class="algorithm">
+<li>
+If
+the
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>
+has
+a
+<a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mapping
+</a>
+in
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+that
+is
+<code>
+@id
+</code>,
+return
+a
+new
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<i>
+value
+</i>,
+and
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>
+for
+<i>
+document
+relative
+</i>.
+</li>
+<li>
+If
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>
+has
+a
+<a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mapping
+</a>
+in
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+that
+is
+<code>
+@vocab
+</code>,
+return
+a
+new
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<i>
+value
+</i>,
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>
+for
+<i>
+vocab
+</i>,
+and
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>
+for
+<i>
+document
+relative
+</i>.
+</li>
+<li>
+Otherwise,
+initialize
+<i>
+result
+</i>
+to
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+with
+an
+<code>
+@value
+</code>
+member
+whose
+value
+is
+set
+to
+<i>
+value
+</i>.
+</li>
+<li>
+If
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>
+has
+a
+<a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mapping
+</a>
+in
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+add
+an
+<code>
+@type
+</code>
+member
+to
+<i>
+result
+</i>
+and
+set
+its
+value
+to
+the
+value
+associated
+with
+the
+<a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mapping
+</a>.
+</li>
+<li>
+Otherwise,
+if
+<i>
+value
+</i>
+is
+a
+<a href="#dfn-string" title="string" class="tref internalDFN">
+string
+</a>:
+<ol class="algorithm">
+<li>
+If
+a
+<a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">
+language
+mapping
+</a>
+is
+associated
+with
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>
+in
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+add
+an
+<code>
+@language
+</code>
+to
+<i>
+result
+</i>
+and
+set
+its
+value
+to
+the
+language
+code
+associated
+with
+the
+<a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">
+language
+mapping
+</a>
+;
+unless
+the
+<a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">
+language
+mapping
+</a>
+is
+set
+to
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>
+in
+which
+case
+no
+member
+is
+added.
+</li>
+<li>
+Otherwise,
+if
+the
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+has
+a
+<a href="#dfn-default-language" title="default-language" class="tref internalDFN">
+default
+language
+</a>,
+add
+an
+<code>
+@language
+</code>
+to
+<i>
+result
+</i>
+and
+set
+its
+value
+to
+the
+<a href="#dfn-default-language" title="default-language" class="tref internalDFN">
+default
+language
+</a>.
+</li>
+</ol>
+</li>
+<li>
+Return
+<i>
+result
+</i>.
+</li>
+</ol>
+</section>
+</section>
+</section>
+<section id="compaction-algorithms">
+<h2 id="h2_compaction-algorithms" role="heading" aria-level="1">
+<span class="secno">
+8.
+</span>
+Compaction
+Algorithms
+</h2>
+<section id="compaction-algorithm">
+<h3 id="h3_compaction-algorithm" role="heading" aria-level="2">
+<span class="secno">
+8.1
+</span>
+Compaction
+Algorithm
+</h3>
+<p>
+This
+algorithm
+compacts
+a
+JSON-LD
+document,
+such
+that
+the
+given
+<a href="#dfn-context" title="context" class="tref internalDFN">
+context
+</a>
+is
+applied.
+This
+must
+result
+in
+shortening
+any
+applicable
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+IRIs
+</a>
+to
+<a href="#dfn-term" title="term" class="tref internalDFN">
+terms
+</a>
+or
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
+compact
+IRIs
+</a>,
+any
+applicable
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
+keywords
+</a>
+to
+<a href="#dfn-keyword-alias" title="keyword-alias" class="tref internalDFN">
+keyword
+aliases
+</a>,
+and
+any
+applicable
+<a href="#dfn-json-ld-value" title="json-ld-value" class="tref internalDFN">
+JSON-LD
+values
+</a>
+expressed
+in
+<a href="#dfn-expanded-form" title="expanded-form" class="tref internalDFN">
+expanded
+form
+</a>
+to
+simple
+values
+such
+as
+<a href="#dfn-string" title="string" class="tref internalDFN">
+strings
+</a>
+or
+<a href="#dfn-number" title="number" class= "tref internalDFN">
+numbers
+</a>.
+</p>
+<section class="informative">
+<h4 role="heading" aria-level="3" 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 href="#dfn-compaction" title="compaction" class="tref internalDFN">
+compacted
+</a>
+<i>
+result
+</i>.
+When
+<a href="#dfn-compaction" title="compaction" class="tref internalDFN">
+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 href="#dfn-scalar" title="scalar" class="tref internalDFN">
+scalar
+</a>,
+it
+is
+already
+in
+<a href="#dfn-compacted-form" title="compacted-form" class="tref internalDFN">
+compacted
+form
+</a>,
+so
+we
+simply
+return
+it.
+</li>
+<li>
+If
+the
+<i>
+element
+</i>
+is
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>,
+we
+compact
+each
+of
+its
+items
+recursively
+and
+return
+them
+in
+a
+new
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>.
+</li>
+<li>
+Otherwise
+<i>
+element
+</i>
+is
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-term" title="term" class="tref internalDFN">
+terms
+</a>
+or
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
+compact
+IRIs
+</a>
+and
+others
+will
+be
+compacted
+from
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
+keywords
+</a>
+to
+<a href="#dfn-keyword-alias" title="keyword-alias" class="tref internalDFN">
+keyword
+aliases
+</a>
+or
+simply
+left
+unchanged
+because
+they
+do
+not
+have
+definitions
+in
+the
+<a href="#dfn-context" title="context" class="tref internalDFN">
+context
+</a>.
+Values
+will
+be
+converted
+to
+<a href="#dfn-compacted-form" title="compacted-form" class="tref internalDFN">
+compacted
+form
+</a>
+via
+the
+<a href="#value-compaction">
+Value
+Compaction
+algorithm
+</a>.
+Some
+data
+will
+be
+reshaped
+based
+on
+<a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+with
+a
+<code>
+@context
+</code>
+key,
+if
+a
+non-empty
+<a href="#dfn-context" title="context" class="tref internalDFN">
+context
+</a>
+was
+given,
+where
+the
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>.
+</p>
+</section>
+<section>
+<h4 role="heading" aria-level="3" id="algorithm-5">
+Algorithm
+</h4>
+<p>
+The
+algorithm
+takes
+five
+required
+input
+variables:
+an
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+an
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+inverse
+context
+</a>,
+an
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+is
+set
+to
+the
+result
+of
+performing
+<a href="#context-processing-algorithm">
+Context
+Processing
+</a>
+on
+the
+passed
+<a href="#dfn-context" title="context" class="tref internalDFN">
+context
+</a>,
+the
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+inverse
+context
+</a>
+is
+set
+to
+the
+result
+of
+performing
+the
+<a href="#inverse-context-creation">
+Inverse
+Context
+Creation
+algorithm
+</a>
+on
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+the
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>
+is
+set
+to
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+<i>
+element
+</i>
+is
+set
+to
+the
+result
+of
+performing
+the
+<a href="#expansion-algorithm">
+Expansion
+algorithm
+</a>
+on
+the
+<a href="#dfn-json-ld-input" title="json-ld-input" class="tref internalDFN">
+JSON-LD
+input
+</a>,
+and,
+if
+not
+passed,
+<code class="idlMemberName">
+<a href="#widl-JsonLdOptions-compactArrays">
+compactArrays
+</a>
+</code>
+is
+set
+to
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>.
+</p>
+<ol class="algorithm">
+<li>
+If
+<i>
+element
+</i>
+is
+a
+<a href="#dfn-scalar" title="scalar" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>:
+<ol class="algorithm">
+<li>
+Initialize
+<i>
+result
+</i>
+to
+an
+empty
+<a href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+inverse
+context
+</a>,
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>,
+and
+<em>
+item
+</em>
+for
+<i>
+element
+</i>.
+</li>
+<li>
+If
+<i>
+compacted
+item
+</i>
+is
+not
+<a href="#dfn-null" title="null" class="tref internalDFN">
+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 href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>
+has
+no
+<a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+container
+mapping
+</a>
+in
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+and
+<code class="idlMemberName">
+<a href="#widl-JsonLdOptions-compactArrays">
+compactArrays
+</a>
+</code>
+is
+<a href="#dfn-true" title="true" class="tref internalDFN">
+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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+inverse
+context
+</a>,
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>,and
+<i>
+element
+</i>
+as
+<i>
+value
+</i>
+is
+a
+<a href="#dfn-scalar" title="scalar" class="tref internalDFN">
+scalar
+</a>,
+return
+that
+result.
+</li>
+<li>
+Initialize
+<i>
+inside
+reverse
+</i>
+to
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>
+if
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>
+equals
+<code>
+@reverse
+</code>,
+otherwise
+to
+<a href="#dfn-false" title="false" class="tref internalDFN">
+false
+</a>.
+</li>
+<li>
+Initialize
+<i>
+result
+</i>
+to
+an
+empty
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-string" title="string" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+inverse
+context
+</a>,
+<i>
+expanded
+value
+</i>
+for
+<i>
+iri
+</i>,
+and
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>
+for
+<i>
+vocab
+</i>
+if
+<i>
+expanded
+property
+</i>
+is
+<code>
+@type
+</code>,
+<a href="#dfn-false" title="false" class="tref internalDFN">
+false
+</a>
+otherwise.
+</li>
+<li>
+Otherwise,
+<i>
+expanded
+value
+</i>
+must
+be
+a
+<code>
+@type
+</code>
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>:
+<ol class="algorithm">
+<li>
+Initialize
+<i>
+compacted
+value
+</i>
+to
+an
+empty
+<a href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+inverse
+context
+</a>,
+<i>
+expanded
+type
+</i>
+for
+<i>
+iri
+</i>,
+and
+<a href="#dfn-true" title="true" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+inverse
+context
+</a>,
+<i>
+expanded
+property
+</i>
+for
+<i>
+iri
+</i>,
+and
+<a href="#dfn-true" title="true" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+inverse
+context
+</a>,
+<code>
+@reverse
+</code>
+for
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+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 href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+for
+<i>
+property
+</i>
+in
+the
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+indicates
+that
+<i>
+property
+</i>
+is
+a
+<a href="#dfn-reverse-property" title="reverse-property" class="tref internalDFN">
+reverse
+property
+</a>
+<ol class="algorithm">
+<li>
+If
+the
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+for
+<i>
+property
+</i>
+in
+the
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+has
+a
+<a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+container
+mapping
+</a>
+of
+<code>
+@set
+</code>
+or
+<code class="idlMemberName">
+<a href="#widl-JsonLdOptions-compactArrays">
+compactArrays
+</a>
+</code>
+is
+<a href="#dfn-false" title="false" class="tref internalDFN">
+false
+</a>,
+and
+<i>
+value
+</i>
+is
+not
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>,
+set
+<i>
+value
+</i>
+to
+a
+new
+<a href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>,
+set
+it
+to
+a
+new
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>
+containing
+only
+the
+value.
+Then
+append
+<i>
+value
+</i>
+to
+its
+value
+if
+<i>
+value
+</i>
+is
+not
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+inverse
+context
+</a>,
+<code>
+@reverse
+</code>
+for
+<i>
+iri
+</i>,
+and
+<a href="#dfn-true" title="true" class="tref internalDFN">
+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 href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>
+has
+a
+<a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+container
+mapping
+</a>
+in
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+inverse
+context
+</a>,
+<i>
+expanded
+property
+</i>
+for
+<i>
+iri
+</i>,
+and
+<a href="#dfn-true" title="true" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+inverse
+context
+</a>,
+<i>
+expanded
+property
+</i>
+for
+<i>
+iri
+</i>,
+<i>
+expanded
+value
+</i>
+for
+<i>
+value
+</i>,
+<a href="#dfn-true" title="true" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>.
+Otherwise,
+if
+the
+key's
+value
+is
+not
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+inverse
+context
+</a>,
+<i>
+expanded
+property
+</i>
+for
+<i>
+iri
+</i>,
+<i>
+expanded
+item
+</i>
+for
+<i>
+value
+</i>,
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>
+for
+<i>
+vocab
+</i>,
+and
+<i>
+inside
+reverse
+</i>.
+</li>
+<li>
+Initialize
+<i>
+container
+</i>
+to
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>.
+If
+there
+is
+a
+<a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+container
+mapping
+</a>
+for
+<i>
+item
+active
+property
+</i>
+in
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+inverse
+context
+</a>,
+<i>
+item
+active
+property
+</i>
+for
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+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 href="#dfn-list-object" title="list-object" class="tref internalDFN">
+list
+object
+</a>:
+<ol class="algorithm">
+<li>
+If
+<i>
+compacted
+item
+</i>
+is
+not
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>,
+then
+set
+it
+to
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-list-object" title="list-object" class="tref internalDFN">
+list
+object
+</a>
+by
+setting
+it
+to
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+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 href="#dfn-list-object" title="list-object" class="tref internalDFN">
+list
+objects
+</a>
+associated
+with
+an
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>
+that
+has
+a
+<a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-false" title="false" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>,
+set
+it
+to
+a
+new
+<a href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>,
+set
+it
+to
+a
+new
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>
+containing
+only
+the
+value.
+Then
+append
+<i>
+compacted
+item
+</i>
+to
+the
+value
+if
+<i>
+compacted
+item
+</i>
+is
+not
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>,
+replace
+it
+with
+a
+new
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+inverse
+context
+</a>,
+and
+<code>
+@graph
+</code>
+as
+<i>
+iri
+</i>
+and
+whose
+value
+is
+the
+<a href="#dfn-array" title="array" class="tref internalDFN">
+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 id="h3_inverse-context-creation" role="heading" aria-level="2">
+<span class="secno">
+8.2
+</span>
+Inverse
+Context
+Creation
+</h3>
+<p>
+When
+there
+is
+more
+than
+one
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+that
+could
+be
+chosen
+to
+compact
+an
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+it
+has
+to
+be
+ensured
+that
+the
+<a href="#dfn-term" title="term" class="tref internalDFN">
+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 href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+selections,
+the
+concept
+of
+an
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+inverse
+context
+</a>
+is
+introduced.
+An
+<dfn id="dfn-inverse-context" title="inverse-context">
+inverse
+context
+</dfn>
+is
+essentially
+a
+reverse
+lookup
+table
+that
+maps
+<a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+container
+mappings
+</a>,
+<a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mappings
+</a>,
+and
+<a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">
+language
+mappings
+</a>
+to
+a
+simple
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+for
+a
+given
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>.
+A
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+inverse
+context
+</a>
+only
+needs
+to
+be
+generated
+for
+an
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+if
+it
+is
+being
+used
+for
+<a href="#dfn-compaction" title="compaction" class="tref internalDFN">
+compaction
+</a>.
+</p>
+<p>
+To
+make
+use
+of
+an
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+inverse
+context
+</a>,
+a
+list
+of
+preferred
+<a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+container
+mappings
+</a>
+and
+the
+<a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mapping
+</a>
+or
+<a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">
+language
+mapping
+</a>
+are
+gathered
+for
+a
+particular
+value
+associated
+with
+an
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<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 href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+that
+most
+appropriately
+matches
+the
+value's
+mappings.
+</p>
+<section class="informative">
+<h4 role="heading" aria-level="3" id="overview-6">
+Overview
+</h4>
+<p>
+<em>
+This
+section
+is
+non-normative.
+</em>
+</p>
+<p>
+To
+create
+an
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+inverse
+context
+</a>
+for
+a
+given
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+each
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+in
+the
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+is
+visited,
+ordered
+by
+length,
+shortest
+first
+(ties
+are
+broken
+by
+choosing
+the
+lexicographically
+least
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+).
+For
+each
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>,
+an
+entry
+is
+added
+to
+the
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+inverse
+context
+</a>
+for
+each
+possible
+combination
+of
+<a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+container
+mapping
+</a>
+and
+<a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mapping
+</a>
+or
+<a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">
+language
+mapping
+</a>
+that
+would
+legally
+match
+the
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>.
+Illegal
+matches
+include
+differences
+between
+a
+value's
+<a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mapping
+</a>
+or
+<a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">
+language
+mapping
+</a>
+and
+that
+of
+the
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>.
+If
+a
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+has
+no
+<a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+container
+mapping
+</a>,
+<a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mapping
+</a>,
+or
+<a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">
+language
+mapping
+</a>
+(or
+some
+combination
+of
+these),
+then
+it
+will
+have
+an
+entry
+in
+the
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+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 href="#dfn-term" title="term" class="tref internalDFN">
+terms
+</a>
+when
+a
+more
+specifically-matching
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+is
+not
+available
+for
+a
+particular
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+and
+value
+combination.
+</p>
+</section>
+<section>
+<h4 role="heading" aria-level="3" id="algorithm-6">
+Algorithm
+</h4>
+<p>
+The
+algorithm
+takes
+one
+required
+input:
+the
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+that
+the
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+inverse
+context
+</a>
+is
+being
+created
+for.
+</p>
+<ol class="algorithm">
+<li>
+Initialize
+<i>
+result
+</i>
+to
+an
+empty
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>.
+</li>
+<li>
+Initialize
+<i>
+default
+language
+</i>
+to
+<code>
+@none
+</code>.
+If
+the
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+has
+a
+<a href="#dfn-default-language" title="default-language" class="tref internalDFN">
+default
+language
+</a>,
+set
+<i>
+default
+language
+</i>
+to
+it.
+</li>
+<li>
+For
+each
+key
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+and
+value
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+in
+the
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+ordered
+by
+shortest
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+first
+(breaking
+ties
+by
+choosing
+the
+lexicographically
+least
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+):
+<ol class="algorithm">
+<li>
+If
+the
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+is
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+cannot
+be
+selected
+during
+<a href="#dfn-compaction" title="compaction" class="tref internalDFN">
+compaction
+</a>,
+so
+continue
+to
+the
+next
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>.
+</li>
+<li>
+Initialize
+<i>
+container
+</i>
+to
+<code>
+@none
+</code>.
+If
+there
+is
+a
+<a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+container
+mapping
+</a>
+in
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>,
+set
+<i>
+container
+</i>
+to
+its
+associated
+value.
+</li>
+<li>
+Initialize
+<i>
+iri
+</i>
+to
+the
+value
+of
+the
+<a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+mapping
+</a>
+for
+the
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+with
+two
+members.
+The
+first
+member
+is
+<code>
+@language
+</code>
+and
+its
+value
+is
+a
+new
+empty
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>,
+the
+second
+member
+is
+<code>
+@type
+</code>
+and
+its
+value
+is
+a
+new
+empty
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+indicates
+that
+the
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+represents
+a
+<a href="#dfn-reverse-property" title="reverse-property" class="tref internalDFN">
+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 href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+being
+processed.
+</li>
+</ol>
+</li>
+<li>
+Otherwise,
+if
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+has
+a
+<a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+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 href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mapping
+</a>
+in
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>,
+create
+one
+and
+set
+its
+value
+to
+the
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+being
+processed.
+</li>
+</ol>
+</li>
+<li>
+Otherwise,
+if
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+has
+a
+<a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">
+language
+mapping
+</a>
+(might
+be
+<a href="#dfn-null" title="null" class="tref internalDFN">
+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 href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">
+language
+mapping
+</a>
+equals
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+set
+<i>
+language
+</i>
+to
+<code>
+@null
+</code>
+;
+otherwise
+set
+it
+to
+the
+language
+code
+in
+<a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">
+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 href="#dfn-term" title="term" class="tref internalDFN">
+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 href="#dfn-term" title="term" class="tref internalDFN">
+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 href="#dfn-term" title="term" class="tref internalDFN">
+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 href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+being
+processed.
+</li>
+</ol>
+</li>
+</ol>
+</li>
+<li>
+Return
+<i>
+result
+</i>.
+</li>
+</ol>
+</section>
+</section>
+<section id="iri-compaction">
+<h3 id="h3_iri-compaction" role="heading" aria-level="2">
+<span class="secno">
+8.3
+</span>
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+Compaction
+</h3>
+<p>
+This
+algorithm
+compacts
+an
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+to
+a
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+or
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
+compact
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+or
+a
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
+keyword
+</a>
+to
+a
+<a href="#dfn-keyword-alias" title="keyword-alias" class="tref internalDFN">
+keyword
+alias
+</a>.
+A
+value
+that
+is
+associated
+with
+the
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+may
+be
+passed
+in
+order
+to
+assist
+in
+selecting
+the
+most
+context-appropriate
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>.
+</p>
+<section class="informative">
+<h4 role="heading" aria-level="3" id="overview-7">
+Overview
+</h4>
+<p>
+<em>
+This
+section
+is
+non-normative.
+</em>
+</p>
+<p>
+If
+the
+passed
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+is
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+we
+simply
+return
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>.
+Otherwise,
+we
+first
+try
+to
+find
+a
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+that
+the
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
+keyword
+</a>
+can
+be
+compacted
+to
+if
+it
+is
+relative
+to
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context's
+</a>
+<a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">
+vocabulary
+mapping
+</a>.
+In
+order
+to
+select
+the
+most
+appropriate
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>,
+we
+may
+have
+to
+collect
+information
+about
+the
+passed
+<i>
+value
+</i>.
+This
+information
+includes
+which
+<a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+container
+mappings
+</a>
+would
+be
+preferred
+for
+expressing
+the
+<i>
+value
+</i>,
+and
+what
+its
+<a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mapping
+</a>
+or
+<a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">
+language
+mapping
+</a>
+is.
+For
+<a href="#dfn-list-object" title="list-object" class="tref internalDFN">
+JSON-LD
+lists
+</a>,
+the
+<a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mapping
+</a>
+or
+<a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">
+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 href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+to
+use.
+</p>
+<p>
+If
+no
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+was
+found
+that
+could
+be
+used
+to
+compact
+the
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+an
+attempt
+is
+made
+to
+compact
+the
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+using
+the
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context's
+</a>
+<a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">
+vocabulary
+mapping
+</a>,
+if
+there
+is
+one.
+If
+the
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+could
+not
+be
+compacted,
+an
+attempt
+is
+made
+to
+find
+a
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
+compact
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+If
+there
+is
+no
+appropriate
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
+compact
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+the
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+is
+transformed
+to
+a
+<a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">
+relative
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+using
+the
+document's
+<a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">
+base
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+Finally,
+if
+the
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
+keyword
+</a>
+still
+could
+not
+be
+compacted,
+it
+is
+returned
+as
+is.
+</p>
+</section>
+<section>
+<h4 role="heading" aria-level="3" id="algorithm-7">
+Algorithm
+</h4>
+<p>
+This
+algorithm
+takes
+three
+required
+inputs
+and
+three
+optional
+inputs.
+The
+required
+inputs
+are
+an
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+an
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context's
+</a>
+<a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">
+vocabulary
+mapping
+</a>,
+and
+a
+<i>
+reverse
+</i>
+flag
+which
+specifies
+whether
+a
+<a href="#dfn-reverse-property" title="reverse-property" class="tref internalDFN">
+reverse
+property
+</a>
+is
+being
+compacted.
+If
+not
+passed,
+<i>
+value
+</i>
+is
+set
+to
+<a href="#dfn-null" title="null" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+return
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>.
+</li>
+<li>
+If
+<i>
+vocab
+</i>
+is
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>
+and
+<i>
+iri
+</i>
+is
+a
+key
+in
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+inverse
+context
+</a>:
+<ol class="algorithm">
+<li>
+Initialize
+<i>
+default
+language
+</i>
+to
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context's
+</a>
+<a href="#dfn-default-language" title="default-language" class="tref internalDFN">
+default
+language
+</a>,
+if
+it
+has
+one,
+otherwise
+to
+<code>
+@none
+</code>.
+</li>
+<li>
+Initialize
+<i>
+containers
+</i>
+to
+an
+empty
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>.
+This
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>
+will
+be
+used
+to
+keep
+track
+of
+an
+ordered
+list
+of
+preferred
+<a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+container
+mappings
+</a>
+for
+a
+<a href="#dfn-term" title="term" class="tref internalDFN">
+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 href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mapping
+</a>
+or
+<a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">
+language
+mapping
+</a>
+for
+a
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>,
+based
+on
+what
+is
+compatible
+with
+<i>
+value
+</i>.
+</li>
+<li>
+If
+<i>
+value
+</i>
+is
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-true" title="true" class="tref internalDFN">
+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 href="#dfn-list-object" title="list-object" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+set
+it
+to
+<code>
+@none
+</code>.
+</li>
+<li>
+If
+<i>
+common
+type
+</i>
+is
+<a href="#dfn-null" title="null" class="tref internalDFN">
+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 href="#dfn-value-object" title="value-object" class="tref internalDFN">
+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 href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+container
+mapping
+</a>,
+and
+it
+will
+be
+the
+last
+<a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+container
+mapping
+</a>
+value
+to
+be
+checked
+as
+it
+is
+the
+most
+generic.
+</li>
+<li>
+If
+<i>
+type/language
+value
+</i>
+is
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+set
+it
+to
+<code>
+@null
+</code>.
+This
+is
+the
+key
+under
+which
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>
+values
+are
+stored
+in
+the
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+inverse
+context
+</a>
+<i>
+entry
+</i>.
+</li>
+<li>
+Initialize
+<i>
+preferred
+values
+</i>
+to
+an
+empty
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>.
+This
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>
+will
+indicate,
+in
+order,
+the
+preferred
+values
+for
+a
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term's
+</a>
+<a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mapping
+</a>
+or
+<a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+inverse
+context
+</a>,
+the
+value
+associated
+with
+the
+<code>
+@id
+</code>
+key
+in
+<i>
+value
+</i>
+for
+<i>
+iri
+</i>,
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>
+for
+<i>
+vocab
+</i>,
+and
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>
+for
+<i>
+document
+relative
+</i>
+has
+a
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+in
+the
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+with
+an
+<a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN">
+<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 href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+return
+<i>
+term
+</i>.
+</li>
+</ol>
+</li>
+<li>
+At
+this
+point,
+there
+is
+no
+simple
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+that
+<i>
+iri
+</i>
+can
+be
+compacted
+to.
+If
+<i>
+vocab
+</i>
+is
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>
+and
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+has
+a
+<a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">
+vocabulary
+mapping
+</a>:
+<ol class="algorithm">
+<li>
+If
+<i>
+iri
+</i>
+begins
+with
+the
+<a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">
+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 href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+in
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+then
+return
+<i>
+suffix
+</i>.
+</li>
+</ol>
+</li>
+<li>
+The
+<i>
+iri
+</i>
+could
+not
+be
+compacted
+using
+the
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context's
+</a>
+<a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">
+vocabulary
+mapping
+</a>.
+Try
+to
+create
+a
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
+compact
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+starting
+by
+initializing
+<i>
+compact
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</i>
+to
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>.
+This
+variable
+will
+be
+used
+to
+tore
+the
+created
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
+compact
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+if
+any.
+</li>
+<li>
+For
+each
+key
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+and
+value
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+in
+the
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>:
+<ol class="algorithm">
+<li>
+If
+the
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+contains
+a
+colon
+(
+<code>:
+</code>
+),
+then
+continue
+to
+the
+next
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+because
+<a href="#dfn-term" title="term" class="tref internalDFN">
+terms
+</a>
+with
+colons
+can't
+be
+used
+as
+<a href="#dfn-prefix" title="prefix" class="tref internalDFN">
+prefixes
+</a>.
+</li>
+<li>
+If
+the
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+is
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+its
+<a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+mapping
+</a>
+equals
+<i>
+iri
+</i>,
+or
+its
+<a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+mapping
+</a>
+is
+not
+a
+substring
+at
+the
+beginning
+of
+<i>
+iri
+</i>,
+the
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+cannot
+be
+used
+as
+a
+<a href="#dfn-prefix" title="prefix" class="tref internalDFN">
+prefix
+</a>
+because
+it
+is
+not
+a
+partial
+match
+with
+<i>
+iri
+</i>.
+Continue
+with
+the
+next
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>.
+</li>
+<li>
+Initialize
+<i>
+candidate
+</i>
+by
+concatenating
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>,
+a
+colon
+(
+<code>:
+</code>
+),
+and
+the
+substring
+of
+<i>
+iri
+</i>
+that
+follows
+after
+the
+value
+of
+the
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition's
+</a>
+<a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN">
+<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 href="#dfn-null" title="null" class="tref internalDFN">
+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 href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+in
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+or
+if
+the
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+has
+an
+<a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+mapping
+</a>
+that
+equals
+<i>
+iri
+</i>
+and
+<i>
+value
+</i>
+is
+<a href="#dfn-null" title="null" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+return
+<i>
+compact
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</i>.
+</li>
+<li>
+If
+<i>
+vocab
+</i>
+is
+<a href="#dfn-false" title="false" class="tref internalDFN">
+false
+</a>
+then
+transform
+<i>
+iri
+</i>
+to
+a
+<a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">
+relative
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+using
+the
+document's
+base
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<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 id="h3_term-selection" role="heading" aria-level="2">
+<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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context's
+</a>
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+inverse
+context
+</a>
+to
+find
+the
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+that
+is
+best
+used
+to
+<a href="#dfn-compaction" title="compaction" class="tref internalDFN">
+compact
+</a>
+an
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+Other
+information
+about
+a
+value
+associated
+with
+the
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+is
+given,
+including
+which
+<a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+container
+mappings
+</a>
+and
+which
+<a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mapping
+</a>
+or
+<a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">
+language
+mapping
+</a>
+would
+be
+best
+used
+to
+express
+the
+value.
+</p>
+<section class="informative">
+<h4 role="heading" aria-level="3" id="overview-8">
+Overview
+</h4>
+<p>
+<em>
+This
+section
+is
+non-normative.
+</em>
+</p>
+<p>
+The
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+inverse
+context's
+</a>
+entry
+for
+the
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+will
+be
+first
+searched
+according
+to
+the
+preferred
+<a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+container
+mappings
+</a>,
+in
+the
+order
+that
+they
+are
+given.
+Amongst
+<a href="#dfn-term" title="term" class="tref internalDFN">
+terms
+</a>
+with
+a
+matching
+<a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+container
+mapping
+</a>,
+preference
+will
+be
+given
+to
+those
+with
+a
+matching
+<a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mapping
+</a>
+or
+<a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">
+language
+mapping
+</a>,
+over
+those
+without
+a
+<a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mapping
+</a>
+or
+<a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">
+language
+mapping
+</a>.
+If
+there
+is
+no
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+with
+a
+matching
+<a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+container
+mapping
+</a>
+then
+the
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+without
+a
+<a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+container
+mapping
+</a>
+that
+matches
+the
+given
+<a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mapping
+</a>
+or
+<a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">
+language
+mapping
+</a>
+is
+selected.
+If
+there
+is
+still
+no
+selected
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>,
+then
+a
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+with
+no
+<a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mapping
+</a>
+or
+<a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">
+language
+mapping
+</a>
+will
+be
+selected
+if
+available.
+No
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+will
+be
+selected
+that
+has
+a
+conflicting
+<a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mapping
+</a>
+or
+<a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">
+language
+mapping
+</a>.
+Ties
+between
+<a href="#dfn-term" title="term" class="tref internalDFN">
+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 href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+inverse
+context
+</a>.
+</p>
+</section>
+<section>
+<h4 role="heading" aria-level="3" id="algorithm-8">
+Algorithm
+</h4>
+<p>
+This
+algorithm
+has
+five
+required
+inputs.
+They
+are:
+an
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+inverse
+context
+</a>,
+a
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
+keyword
+</a>
+or
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+<i>
+iri
+</i>,
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>
+<i>
+containers
+</i>
+that
+represents
+an
+ordered
+list
+of
+preferred
+<a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+container
+mappings
+</a>,
+a
+<a href="#dfn-string" title="string" class="tref internalDFN">
+string
+</a>
+<i>
+type/language
+</i>
+that
+indicates
+whether
+to
+look
+for
+a
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+with
+a
+matching
+<a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mapping
+</a>
+or
+<a href="#dfn-language-mapping" title="language-mapping" class= "tref internalDFN">
+language
+mapping
+</a>,
+and
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>
+representing
+an
+ordered
+list
+of
+<i>
+preferred
+values
+</i>
+for
+the
+<a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mapping
+</a>
+or
+<a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">
+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 href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+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 href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+with
+a
+matching
+<a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+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 href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+with
+a
+matching
+<a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mapping
+</a>
+or
+<a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>.
+</li>
+</ol>
+</section>
+</section>
+<section id="value-compaction">
+<h3 id="h3_value-compaction" role="heading" aria-level="2">
+<span class="secno">
+8.5
+</span>
+Value
+Compaction
+</h3>
+<p>
+<a href="#dfn-expansion" title="expansion" class="tref internalDFN">
+Expansion
+</a>
+transforms
+all
+values
+into
+<a href="#dfn-expanded-form" title="expanded-form" class="tref internalDFN">
+expanded
+form
+</a>
+in
+JSON-LD.
+This
+algorithm
+performs
+the
+opposite
+operation,
+transforming
+a
+value
+into
+<dfn id="dfn-compacted-form" title="compacted-form">
+compacted
+form
+</dfn>.
+This
+algorithm
+compacts
+a
+value
+according
+to
+the
+<a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+in
+the
+given
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+that
+is
+associated
+with
+the
+value's
+associated
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>.
+</p>
+<section class="informative">
+<h4 role="heading" aria-level="3" 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 href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mapping
+</a>
+of
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+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 href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+container
+mapping
+</a>
+of
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>
+is
+set
+to
+<code>
+@index
+</code>,
+an
+<code>
+@index
+</code>
+member,
+<i>
+value
+</i>
+can
+be
+compacted
+to
+a
+<a href="#dfn-string" title="string" class="tref internalDFN">
+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 href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>
+has
+a
+matching
+<a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mapping
+</a>
+or
+<a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">
+language
+mapping
+</a>
+and
+there
+is
+either
+no
+<code>
+@index
+</code>
+member
+or
+the
+<a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+container
+mapping
+</a>
+of
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+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 href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+container
+mapping
+</a>
+of
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>
+is
+set
+to
+<code>
+@index
+</code>
+)
+and
+either
+its
+associated
+value
+is
+not
+a
+<a href="#dfn-string" title="string" class="tref internalDFN">
+string
+</a>,
+there
+is
+no
+<a href="#dfn-default-language" title="default-language" class="tref internalDFN">
+default
+language
+</a>,
+or
+there
+is
+an
+explicit
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>
+<a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">
+language
+mapping
+</a>
+for
+the
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>.
+</p>
+</section>
+<section>
+<h4 role="heading" aria-level="3" id="algorithm-9">
+Algorithm
+</h4>
+<p>
+This
+algorithm
+has
+four
+required
+inputs:
+an
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+an
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+inverse
+context
+</a>,
+an
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+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 href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">
+container
+mapping
+</a>
+associated
+to
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+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 href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mapping
+</a>
+of
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+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 href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mapping
+</a>
+of
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>,
+<a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">
+inverse
+context
+</a>,
+the
+value
+of
+the
+<code>
+@id
+</code>
+member
+for
+<i>
+iri
+</i>,
+and
+<a href="#dfn-true" title="true" class="tref internalDFN">
+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 href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">
+type
+mapping
+</a>
+of
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+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 href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">
+language
+mapping
+</a>
+of
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+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 href="#dfn-string" title="string" class="tref internalDFN">
+string
+</a>,
+or
+the
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+has
+no
+<a href="#dfn-default-language" title="default-language" class="tref internalDFN">
+default
+language
+</a>,
+or
+the
+<a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">
+language
+mapping
+</a>
+of
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>
+is
+set
+to
+<a href="#dfn-null" title="null" class="tref internalDFN">
+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 id="h2_flattening-algorithms" role="heading" aria-level="1">
+<span class="secno">
+9.
+</span>
+Flattening
+Algorithms
+</h2>
+<section id="flattening-algorithm">
+<h3 id="h3_flattening-algorithm" role="heading" aria-level="2">
+<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 href="#dfn-node" title="node" class="tref internalDFN">
+node
+</a>
+in
+a
+single
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+and
+labeling
+all
+<a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">
+blank
+nodes
+</a>
+with
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+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 role="heading" aria-level="3" 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 href="#dfn-node" title="node" class="tref internalDFN">
+node
+</a>
+in
+a
+single
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>.
+In
+the
+next
+step,
+the
+<i>
+node
+map
+</i>
+is
+converted
+to
+a
+JSON-LD
+document
+in
+<a href="../json-ld/#flattened-document-form" title="flattened-document-form" class="tref externalDFN">
+flattened
+document
+form
+</a>.
+Finally,
+if
+a
+<a href="#dfn-context" title="context" class="tref internalDFN">
+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 role="heading" aria-level="3" 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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>.
+</p>
+<p>
+This
+algorithm
+generates
+new
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifiers
+</a>
+and
+relabels
+existing
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+consisting
+of
+a
+single
+member
+whose
+key
+is
+<code>
+@default
+</code>
+and
+whose
+value
+is
+an
+empty
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+representing
+the
+<a href="#dfn-default-graph" title="default-graph" class="tref internalDFN">
+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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>.
+This
+ensures
+that
+the
+returned
+document
+has
+a
+deterministic
+structure.
+</li>
+</ol>
+</section>
+</section>
+<section id="node-map-generation">
+<h3 id="h3_node-map-generation" role="heading" aria-level="2">
+<span class="secno">
+9.2
+</span>
+Node
+Map
+Generation
+</h3>
+<p>
+This
+algorithm
+creates
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+<i>
+node
+map
+</i>
+holding
+an
+indexed
+representation
+of
+the
+<a href="#dfn-graph" title="graph" class="tref internalDFN">
+graphs
+</a>
+and
+<a href="#dfn-node" title="node" class="tref internalDFN">
+nodes
+</a>
+represented
+in
+the
+passed
+expanded
+document.
+All
+<a href="#dfn-node" title="node" class="tref internalDFN">
+nodes
+</a>
+that
+are
+not
+uniquely
+identified
+by
+an
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+get
+assigned
+a
+(new)
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+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 href="#dfn-node" title="node" class="tref internalDFN">
+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 href="#dfn-graph-name" title="graph-name" class="tref internalDFN">
+graph
+name
+</a>.
+</p>
+<section class="informative">
+<h4 role="heading" aria-level="3" 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 href="#dfn-property" title="property" class="tref internalDFN">
+properties
+</a>
+of
+a
+<a href="#dfn-node" title="node" class="tref internalDFN">
+node
+</a>
+in
+a
+single
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>.
+The
+algorithm
+constructs
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+<i>
+node
+map
+</i>
+whose
+keys
+represent
+the
+<a href="#dfn-graph-name" title="graph-name" class="tref internalDFN">
+graph
+names
+</a>
+used
+in
+the
+document
+(the
+<a href="#dfn-default-graph" title="default-graph" class="tref internalDFN">
+default
+graph
+</a>
+is
+stored
+under
+the
+key
+<code>
+@default
+</code>
+)
+and
+whose
+associated
+values
+are
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+objects
+</a>
+which
+index
+the
+<a href="#dfn-node" title="node" class="tref internalDFN">
+nodes
+</a>
+in
+the
+<a href="#dfn-graph" title="graph" class= "tref internalDFN">
+graph
+</a>.
+If
+a
+<a href="#dfn-property" title="property" class="tref internalDFN">
+property's
+</a>
+value
+is
+a
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
+node
+object
+</a>,
+it
+is
+replaced
+by
+a
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
+node
+object
+</a>
+consisting
+of
+only
+an
+<code>
+@id
+</code>
+member.
+If
+a
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
+node
+object
+</a>
+has
+no
+<code>
+@id
+</code>
+member
+or
+it
+is
+identified
+by
+a
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifier
+</a>,
+a
+new
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifier
+</a>
+is
+generated.
+This
+relabeling
+of
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifiers
+</a>
+is
+also
+done
+for
+<a href="#dfn-property" title="property" class= "tref internalDFN">
+properties
+</a>
+and
+values
+of
+<code>
+@type
+</code>.
+</p>
+</section>
+<section>
+<h4 role="heading" aria-level="3" 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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+<i>
+node
+map
+</i>.
+Furthermore
+it
+has
+the
+optional
+parameters
+<a href="#dfn-active-graph" title="active-graph" class="tref internalDFN">
+active
+graph
+</a>
+(which
+defaults
+to
+<code>
+@default
+</code>
+),
+an
+<a href="#dfn-active-subject" title="active-subject" class="tref internalDFN">
+active
+subject
+</a>,
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>,
+and
+a
+reference
+to
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+<i>
+list
+</i>.
+If
+not
+passed,
+<a href="#dfn-active-subject" title="active-subject" class="tref internalDFN">
+active
+subject
+</a>,
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>,
+and
+<i>
+list
+</i>
+are
+set
+to
+<a href="#dfn-null" title="null" class= "tref internalDFN">
+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 href="#dfn-active-graph" title="active-graph" class="tref internalDFN">
+active
+graph
+</a>,
+<a href="#dfn-active-subject" title="active-subject" class="tref internalDFN">
+active
+subject
+</a>,
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>,
+and
+<i>
+list
+</i>.
+</li>
+</ol>
+</li>
+<li>
+Otherwise
+<i>
+element
+</i>
+is
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>.
+Reference
+the
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+which
+is
+the
+value
+of
+the
+<a href="#dfn-active-graph" title="active-graph" class="tref internalDFN">
+active
+graph
+</a>
+member
+of
+<i>
+node
+map
+</i>
+using
+the
+variable
+<i>
+graph
+</i>.
+If
+the
+<a href="#dfn-active-subject" title="active-subject" class="tref internalDFN">
+active
+subject
+</a>
+is
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+set
+<i>
+node
+</i>
+to
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>
+otherwise
+reference
+the
+<a href="#dfn-active-subject" title="active-subject" class="tref internalDFN">
+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 href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>:
+<ol class="algorithm">
+<li>
+If
+<i>
+node
+</i>
+does
+not
+have
+an
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>
+member,
+create
+one
+and
+initialize
+its
+value
+to
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>
+containing
+<i>
+element
+</i>.
+</li>
+<li>
+Otherwise,
+compare
+<i>
+element
+</i>
+against
+every
+item
+in
+the
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>
+associated
+with
+the
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>.
+Two
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+<i>
+result
+</i>
+consisting
+of
+a
+single
+member
+<code>
+@list
+</code>
+whose
+value
+is
+initialized
+to
+an
+empty
+<a href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-active-graph" title="active-graph" class="tref internalDFN">
+active
+graph
+</a>,
+<a href="#dfn-active-subject" title="active-subject" class="tref internalDFN">
+active
+subject
+</a>,
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>,
+and
+<i>
+result
+</i>
+for
+<i>
+list
+</i>.
+</li>
+<li>
+Append
+<i>
+result
+</i>
+to
+the
+value
+of
+the
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>
+member
+of
+<i>
+node
+</i>.
+</li>
+</ol>
+</li>
+<li>
+Otherwise
+<i>
+element
+</i>
+is
+a
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
+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 href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+consisting
+of
+a
+single
+member
+<code>
+@id
+</code>
+whose
+value
+is
+<i>
+id
+</i>.
+</li>
+<li>
+<ins class="diff-new">Reference
+the
+value
+of
+the
+</ins><i><ins class="diff-new">
+id
+</ins></i><ins class="diff-new">
+member
+of
+</ins><i><ins class="diff-new">
+graph
+</ins></i><ins class="diff-new">
+using
+the
+variable
+</ins><i><ins class="diff-new">
+node
+</ins></i>.</li><li>
+If
+<a href="#dfn-active-subject" title="active-subject" class="tref internalDFN">
+<ins class="diff-chg">active
+subject
+</ins></a><ins class="diff-chg">
+is
+a
+</ins><a href="#dfn-json-object" title="json-object" class="tref internalDFN"><ins class="diff-chg">
+JSON
+object
+</ins></a>,<ins class="diff-chg">
+a
+reverse
+property
+relationship
+is
+being
+processed.
+Perform
+the
+following
+steps:
+</ins><ol class="algorithm"><li><ins class="diff-chg">
+If
+</ins><i><ins class="diff-chg">
+node
+</ins></i><ins class="diff-chg">
+does
+not
+have
+an
+</ins><a href="#dfn-active-property" title="active-property" class="tref internalDFN"><ins class="diff-chg">
+active
+property
+</ins></a><ins class="diff-chg">
+member,
+create
+one
+and
+initialize
+its
+value
+to
+an
+</ins><a href="#dfn-array" title="array" class="tref internalDFN"><ins class="diff-chg">
+array
+</ins></a><ins class="diff-chg">
+containing
+</ins><a href="#dfn-active-subject" title="active-subject" class="tref internalDFN"><ins class="diff-chg">
+active
+subject
+</ins></a>.</li><li><ins class="diff-chg">
+Otherwise,
+compare
+</ins><a href="#dfn-active-subject" title="active-subject" class="tref internalDFN"><ins class="diff-chg">
+active
+subject
+</ins></a><ins class="diff-chg">
+against
+every
+item
+in
+the
+</ins><a href="#dfn-array" title="array" class="tref internalDFN"><ins class="diff-chg">
+array
+</ins></a><ins class="diff-chg">
+associated
+with
+the
+</ins><a href="#dfn-active-property" title="active-property" class="tref internalDFN"><ins class="diff-chg">
+active
+property
+</ins></a><ins class="diff-chg">
+member
+of
+</ins><i><ins class="diff-chg">
+node
+</ins></i>.<ins class="diff-chg">
+If
+there
+is
+no
+item
+equivalent
+to
+</ins><a href="#dfn-active-subject" title="active-subject" class="tref internalDFN"><ins class="diff-chg">
+active
+subject
+</ins></a>,<ins class="diff-chg">
+append
+</ins><a href="#dfn-active-subject" title="active-subject" class="tref internalDFN"><ins class="diff-chg">
+active
+subject
+</ins></a><ins class="diff-chg">
+to
+the
+</ins><a href="#dfn-array" title="array" class="tref internalDFN"><ins class="diff-chg">
+array
+</ins></a>.<ins class="diff-chg">
+Two
+</ins><a href="#dfn-json-object" title="json-object" class="tref internalDFN"><ins class="diff-chg">
+JSON
+objects
+</ins></a><ins class="diff-chg">
+are
+considered
+equal
+if
+they
+have
+equivalent
+key-value
+pairs.
+</ins></li></ol></li><li><ins class="diff-chg">
+Otherwise,
+if
+</ins><a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>
+is
+not
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+perform
+the
+following
+steps:
+<ol class="algorithm">
+<li>
+Create
+a
+new
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>:
+<ol class="algorithm">
+<li>
+If
+<i>
+node
+</i>
+does
+not
+have
+an
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>
+member,
+create
+one
+and
+initialize
+its
+value
+to
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>
+containing
+<i>
+reference
+</i>.
+</li>
+<li>
+Otherwise,
+compare
+<i>
+reference
+</i>
+against
+every
+item
+in
+the
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>
+associated
+with
+the
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>.
+Two
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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>
+<del class="diff-old">Reference
+the
+value
+of
+the
+id
+member
+of
+graph
+using
+the
+variable
+node
+.
+</del>
+If
+<i>
+element
+</i>
+has
+an
+<code>
+@type
+</code>
+key,
+append
+each
+item
+of
+its
+associated
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>
+to
+the
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>
+associated
+with
+the
+<code>
+@type
+</code>
+key
+of
+<i>
+node
+</i>
+unless
+it
+is
+already
+in
+that
+<a href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-node" title="node" class="tref internalDFN">
+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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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>
+<del class="diff-old">If
+value
+has
+a
+property
+member,
+append
+referenced
+node
+to
+its
+value;
+otherwise
+create
+a
+property
+member
+whose
+value
+is
+an
+array
+containing
+referenced
+node
+.
+</del>
+Recursively
+invoke
+this
+algorithm
+passing
+<i>
+value
+</i>
+for
+<i>
+element
+</i>,
+<i>
+node
+map
+</i>,
+<del class="diff-old">and
+</del>
+<a href="#dfn-active-graph" title="active-graph" class="tref internalDFN">
+active
+graph
+</a>,
+<i>
+<ins class="diff-new">referenced
+node
+</ins></i><ins class="diff-new">
+for
+</ins><a href="#dfn-active-subject" title="active-subject" class="tref internalDFN"><ins class="diff-new">
+active
+subject
+</ins></a>,<ins class="diff-new">
+and
+</ins><i><ins class="diff-new">
+property
+</ins></i><ins class="diff-new">
+for
+</ins><a href="#dfn-active-property" title="active-property" class="tref internalDFN"><ins class="diff-new">
+active
+property
+</ins>
+</a>.
+<ins class="diff-new">Passing
+a
+</ins><a href="#dfn-json-object" title="json-object" class="tref internalDFN"><ins class="diff-new">
+JSON
+object
+</ins></a><ins class="diff-new">
+for
+</ins><a href="#dfn-active-subject" title="active-subject" class="tref internalDFN"><ins class="diff-new">
+active
+subject
+</ins></a><ins class="diff-new">
+indicates
+to
+the
+algorithm
+that
+a
+reverse
+property
+relationship
+is
+being
+processed.
+</ins>
+</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 href="#dfn-active-graph" title="active-graph" class="tref internalDFN">
+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 href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>.
+</li>
+<li>
+Recursively
+invoke
+this
+algorithm
+passing
+<i>
+value
+</i>
+for
+<i>
+element
+</i>,
+<i>
+node
+map
+</i>,
+<a href="#dfn-active-graph" title="active-graph" class="tref internalDFN">
+active
+graph
+</a>,
+<i>
+id
+</i>
+for
+<a href="#dfn-active-subject" title="active-subject" class="tref internalDFN">
+active
+subject
+</a>,
+and
+<i>
+property
+</i>
+for
+<a href="#dfn-active-property" title="active-property" class="tref internalDFN">
+active
+property
+</a>.
+</li>
+</ol>
+</li>
+</ol>
+</li>
+</ol>
+</section>
+</section>
+<section id="generate-blank-node-identifier">
+<h3 id="h3_generate-blank-node-identifier" role="heading" aria-level="2">
+<span class="secno">
+9.3
+</span>
+Generate
+Blank
+Node
+Identifier
+</h3>
+<p>
+This
+algorithm
+is
+used
+to
+generate
+new
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifiers
+</a>
+or
+to
+relabel
+an
+existing
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifier
+</a>
+to
+avoid
+collision
+by
+the
+introduction
+of
+new
+ones.
+</p>
+<section class="informative">
+<h4 role="heading" aria-level="3" 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 href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+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 href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+an
+entry
+is
+created
+in
+the
+<i>
+identifier
+map
+</i>
+associating
+the
+<i>
+identifier
+</i>
+with
+the
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifier
+</a>.
+Finally,
+the
+<i>
+counter
+</i>
+is
+increased
+by
+one
+and
+the
+new
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifier
+</a>
+is
+returned.
+</p>
+</section>
+<section>
+<h4 role="heading" aria-level="3" id="algorithm-12">
+Algorithm
+</h4>
+<p>
+The
+algorithm
+takes
+a
+single
+input
+variable
+<i>
+identifier
+</i>
+which
+may
+be
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>.
+Between
+its
+executions,
+the
+algorithm
+needs
+to
+keep
+an
+<i>
+identifier
+map
+</i>
+to
+relabel
+existing
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifiers
+</a>
+consistently
+and
+a
+<i>
+counter
+</i>
+to
+generate
+new
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>
+and
+has
+an
+entry
+in
+the
+<i>
+identifier
+map
+</i>,
+return
+the
+mapped
+identifier.
+</li>
+<li>
+Otherwise,
+generate
+a
+new
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+create
+a
+new
+entry
+for
+<i>
+identifier
+</i>
+in
+<i>
+identifier
+map
+</i>
+and
+set
+its
+value
+to
+the
+new
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifier
+</a>.
+</li>
+<li>
+Return
+the
+new
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifier
+</a>.
+</li>
+</ol>
+</section>
+</section>
+</section>
+<section id="rdf-serialization-deserialization-algorithms">
+<h2 id="h2_rdf-serialization-deserialization-algorithms" role="heading" aria-level="1">
+<span class="secno">
+10.
+</span>
+RDF
+Serialization/Deserialization
+Algorithms
+</h2>
+<p>
+This
+section
+describes
+algorithms
+to
+deserialize
+a
+JSON-LD
+document
+to
+an
+<a href="#dfn-rdf-dataset" title="rdf-dataset" class="tref internalDFN">
+RDF
+dataset
+</a>
+and
+vice
+versa.
+The
+algorithms
+are
+designed
+for
+in-memory
+implementations
+with
+random
+access
+to
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+elements.
+</p>
+<p>
+Throughout
+this
+section,
+the
+following
+vocabulary
+<a href="#dfn-prefix" title="prefix" class="tref internalDFN">
+prefixes
+</a>
+are
+used
+in
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
+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 id="h3_deserialize-json-ld-to-rdf-algorithm" role="heading" aria-level="2">
+<span class="secno">
+10.1
+</span>
+Deserialize
+JSON-LD
+to
+RDF
+algorithm
+</h3>
+<p>
+This
+algorithm
+deserializes
+a
+JSON-LD
+document
+to
+an
+<a href="#dfn-rdf-dataset" title="rdf-dataset" class="tref internalDFN">
+RDF
+dataset
+</a>.
+Please
+note
+that
+RDF
+does
+not
+allow
+a
+<a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">
+blank
+node
+</a>
+to
+be
+used
+as
+a
+<a href="#dfn-property" title="property" class="tref internalDFN">
+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>
+<del class="diff-old">Feature
+at
+Risk
+3
+:
+Allow
+blank
+nodes
+to
+be
+used
+as
+properties
+Note:
+This
+feature
+is
+"at
+risk"
+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
+"at
+risk"
+in
+JSON-LD
+1.0
+RDF
+graphs
+do
+not
+allow
+blank
+nodes
+to
+be
+used
+as
+an
+RDF
+predicate
+,
+while
+JSON-LD
+does.
+Unless
+the
+produce
+generalized
+RDF
+flag
+is
+set,
+this
+algorithm
+will
+exclude
+triples
+including
+a
+blank
+node
+RDF
+predicate
+.
+</del>
+<section class="informative">
+<h4 role="heading" aria-level="3" 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 href="#dfn-node-object" title="node-object" class="tref internalDFN">
+node
+object
+</a>.
+Each
+graph
+from
+the
+<i>
+node
+map
+</i>
+is
+processed
+to
+extract
+<a href="#dfn-rdf-triple" title="rdf-triple" class="tref internalDFN">
+RDF
+triples
+</a>,
+to
+which
+any
+(non-default)
+graph
+name
+is
+applied
+to
+create
+an
+<a href="#dfn-rdf-dataset" title="rdf-dataset" class="tref internalDFN">
+RDF
+dataset
+</a>.
+Each
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
+node
+object
+</a>
+in
+the
+<i>
+node
+map
+</i>
+has
+an
+<code>
+@id
+</code>
+member
+which
+corresponds
+to
+the
+<a href="#dfn-rdf-subject" title="rdf-subject" class="tref internalDFN">
+RDF
+subject
+</a>,
+the
+other
+members
+represent
+<a href="#dfn-rdf-predicate" title="rdf-predicate" class= "tref internalDFN">
+RDF
+predicates
+</a>.
+Each
+member
+value
+is
+either
+an
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifier
+</a>
+or
+can
+be
+transformed
+to
+an
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal" title="rdf-literal" class="tref externalDFN">
+RDF
+literal
+</a>
+to
+generate
+an
+<a href="#dfn-rdf-triple" title="rdf-triple" class="tref internalDFN">
+RDF
+triple
+</a>.
+<a href="#dfn-list" title="list" class="tref internalDFN">
+Lists
+</a>
+are
+transformed
+into
+an
+<a href="http://www.w3.org/TR/rdf-schema/#ch_collectionvocab" title="rdf-collection" class="tref externalDFN">
+RDF
+Collection
+</a>
+using
+the
+<a href="#list-to-rdf-conversion">
+List
+to
+RDF
+Conversion
+algorithm.
+</a>
+</p>
+</section>
+<section>
+<h4 role="heading" aria-level="3" id="algorithm-13">
+Algorithm
+</h4>
+<p>
+The
+algorithm
+takes
+a
+JSON-LD
+document
+<i>
+element
+</i>
+and
+returns
+an
+<a href="#dfn-rdf-dataset" title="rdf-dataset" class="tref internalDFN">
+RDF
+dataset
+</a>.
+Unless
+the
+<i>
+produce
+generalized
+RDF
+</i>
+flag
+is
+set
+to
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>,
+<a href="#dfn-rdf-triple" title="rdf-triple" class="tref internalDFN">
+RDF
+triples
+</a>
+containing
+a
+<a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">
+blank
+node
+</a>
+<a href="#dfn-rdf-predicate" title="rdf-predicate" class="tref internalDFN">
+predicate
+</a>
+are
+excluded
+from
+output.
+</p>
+<p>
+This
+algorithm
+generates
+new
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifiers
+</a>
+and
+relabels
+existing
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+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 href="#dfn-rdf-dataset" title="rdf-dataset" class="tref internalDFN">
+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 href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">
+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 href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple" title="triple" class="tref internalDFN">
+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 href="#dfn-keyword" title="keyword" class="tref internalDFN">
+keyword
+</a>
+continue
+with
+the
+next
+<i>
+property
+</i>
+-
+<i>
+values
+</i>
+pair.
+</li>
+<li>
+Otherwise,
+if
+<i>
+property
+</i>
+is
+a
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifier
+</a>
+and
+the
+<i>
+produce
+generalized
+RDF
+</i>
+flag
+is
+not
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>,
+continue
+with
+the
+next
+<i>
+property
+</i>
+-
+<i>
+values
+</i>
+pair.
+</li>
+<li>
+Otherwise,
+if
+<i>
+property
+</i>
+is
+a
+<a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">
+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 href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifier
+</a>.
+For
+each
+<i>
+item
+</i>
+in
+<i>
+values
+</i>:
+<ol class="algorithm">
+<li>
+If
+<i>
+item
+</i>
+is
+a
+<a href="#dfn-list-object" title="list-object" class="tref internalDFN">
+list
+object
+</a>,
+initialize
+<i>
+list
+triples
+</i>
+as
+an
+empty
+<a href="#dfn-array" title="array" class="tref internalDFN">
+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 href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple" title="triple" class="tref internalDFN">
+triple
+</a>
+composed
+of
+<i>
+subject
+</i>,
+<i>
+property
+</i>,
+and
+<i>
+list
+head
+</i>
+to
+<i>
+triples
+</i>
+and
+finally
+append
+all
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple" title="triple" class="tref internalDFN">
+triples
+</a>
+from
+<i>
+list
+triples
+</i>
+to
+<i>
+triples
+</i>.
+</li>
+<li>
+Otherwise,
+<i>
+item
+</i>
+is
+a
+<a href="#dfn-value-object" title="value-object" class="tref internalDFN">
+value
+object
+</a>
+or
+a
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
+node
+object
+</a>.
+Append
+a
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple" title="triple" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+indicating
+a
+<a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">
+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 href="#dfn-default-graph" title="default-graph" class="tref internalDFN">
+default
+graph
+</a>
+in
+<i>
+dataset
+</i>.
+</li>
+<li>
+Otherwise,
+create
+a
+<a href="#dfn-named-graph" title="named-graph" class="tref internalDFN">
+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 id="h3_object-to-rdf-conversion" role="heading" aria-level="2">
+<span class="secno">
+10.2
+</span>
+Object
+to
+RDF
+Conversion
+</h3>
+<p>
+This
+algorithm
+takes
+a
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
+node
+object
+</a>
+or
+<a href="#dfn-value-object" title="value-object" class="tref internalDFN">
+value
+object
+</a>
+and
+transforms
+it
+into
+an
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-resource" title="rdf-resource" class="tref externalDFN">
+RDF
+resource
+</a>
+to
+be
+used
+as
+the
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-object" title="object" class="tref internalDFN">
+object
+</a>
+of
+an
+<a href="#dfn-rdf-triple" title="rdf-triple" class="tref internalDFN">
+RDF
+triple
+</a>.
+If
+a
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
+node
+object
+</a>
+containing
+a
+<a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">
+relative
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+is
+passed
+to
+the
+algorithm,
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>
+is
+returned
+which
+then
+causes
+the
+resulting
+<a href="#dfn-rdf-triple" title="rdf-triple" class="tref internalDFN">
+RDF
+triple
+</a>
+to
+be
+ignored.
+</p>
+<section class="informative">
+<h4 role="heading" aria-level="3" id="overview-14">
+Overview
+</h4>
+<p>
+<em>
+This
+section
+is
+non-normative.
+</em>
+</p>
+<p>
+<a href="#dfn-value-object" title="value-object" class="tref internalDFN">
+Value
+objects
+</a>
+are
+transformed
+to
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal" title="rdf-literal" class="tref internalDFN">
+RDF
+literals
+</a>
+as
+described
+in
+<a class="sectionRef" href="#data-round-tripping">
+section
+10.6
+Data
+Round
+Tripping
+</a>
+whereas
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
+node
+objects
+</a>
+are
+transformed
+to
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+IRIs
+</a>,
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifiers
+</a>,
+or
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>.
+</p>
+</section>
+<section>
+<h4 role="heading" aria-level="3" id="algorithm-14">
+Algorithm
+</h4>
+<p>
+The
+algorithm
+takes
+as
+its
+sole
+argument
+<i>
+item
+</i>
+which
+must
+be
+either
+a
+<a href="#dfn-value-object" title="value-object" class="tref internalDFN">
+value
+object
+</a>
+or
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
+node
+object
+</a>.
+</p>
+<ol class="algorithm">
+<li>
+If
+<i>
+item
+</i>
+is
+a
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
+node
+object
+</a>
+and
+the
+value
+of
+its
+<code>
+@id
+</code>
+member
+is
+a
+<a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">
+relative
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+return
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>.
+</li>
+<li>
+If
+<i>
+item
+</i>
+is
+a
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
+node
+object
+</a>,
+return
+the
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifier
+</a>
+associated
+with
+its
+<code>
+@id
+</code>
+member.
+</li>
+<li>
+Otherwise,
+<i>
+item
+</i>
+is
+a
+<a href="#dfn-value-object" title="value-object" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>
+if
+<i>
+item
+</i>
+does
+not
+have
+such
+a
+member.
+</li>
+<li>
+If
+<i>
+value
+</i>
+is
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>
+or
+<a href="#dfn-false" title="false" class="tref internalDFN">
+false
+</a>,
+set
+<i>
+value
+</i>
+to
+the
+<a href="#dfn-string" title="string" class="tref internalDFN">
+string
+</a>
+<code>
+true
+</code>
+or
+<code>
+false
+</code>
+which
+is
+the
+<a href="#dfn-canonical-lexical-form" title="canonical-lexical-form" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+set
+it
+to
+<code>
+xsd:boolean
+</code>.
+</li>
+<li>
+Otherwise,
+if
+<i>
+value
+</i>
+is
+a
+<a href="#dfn-number" title="number" class="tref internalDFN">
+number
+</a>
+with
+a
+non-zero
+fractional
+part
+(the
+result
+of
+a
+modulo‑1
+operation)
+or
+<i>
+value
+</i>
+is
+a
+<a href="#dfn-number" title="number" class="tref internalDFN">
+number
+</a>
+and
+<i>
+datatype
+</i>
+equals
+<code>
+xsd:double
+</code>,
+convert
+<i>
+value
+</i>
+to
+a
+<a href="#dfn-string" title="string" class="tref internalDFN">
+string
+</a>
+in
+<a href="#dfn-canonical-lexical-form" title="canonical-lexical-form" class="tref internalDFN">
+canonical
+lexical
+form
+</a>
+of
+an
+<code>
+xsd:double
+</code>
+as
+defined
+in
+[
+<cite>
+<a href="#bib-XMLSCHEMA11-2" class="bibref">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+set
+it
+to
+<code>
+xsd:double
+</code>.
+</li>
+<li>
+Otherwise,
+if
+<i>
+value
+</i>
+is
+a
+<a href="#dfn-number" title="number" class="tref internalDFN">
+number
+</a>
+with
+no
+non-zero
+fractional
+part
+(the
+result
+of
+a
+modulo‑1
+operation)
+or
+<i>
+value
+</i>
+is
+a
+<a href="#dfn-number" title="number" class="tref internalDFN">
+number
+</a>
+and
+<i>
+datatype
+</i>
+equals
+<code>
+xsd:integer
+</code>,
+convert
+<i>
+value
+</i>
+to
+a
+<a href="#dfn-string" title="string" class="tref internalDFN">
+string
+</a>
+in
+<a href="#dfn-canonical-lexical-form" title="canonical-lexical-form" class="tref internalDFN">
+canonical
+lexical
+form
+</a>
+of
+an
+<code>
+xsd:integer
+</code>
+as
+defined
+in
+[
+<cite>
+<a href="#bib-XMLSCHEMA11-2" class="bibref">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+set
+it
+to
+<code>
+xsd:integer
+</code>.
+</li>
+<li>
+Otherwise,
+if
+<i>
+datatype
+</i>
+is
+<a href="#dfn-null" title="null" class="tref internalDFN">
+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 href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal" title="rdf-literal" class="tref internalDFN">
+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 id="h3_list-to-rdf-conversion" role="heading" aria-level="2">
+<span class="secno">
+10.3
+</span>
+List
+to
+RDF
+Conversion
+</h3>
+<p>
+List
+Conversion
+is
+the
+process
+of
+taking
+a
+<a href="#dfn-list-object" title="list-object" class="tref internalDFN">
+list
+object
+</a>
+and
+transforming
+it
+into
+an
+<a href="http://www.w3.org/TR/rdf-schema/#ch_collectionvocab" title="rdf-collection" class="tref externalDFN">
+RDF
+Collection
+</a>
+as
+defined
+in
+RDF
+Semantics
+[
+<cite>
+<a href="#bib-RDF-MT" class="bibref">
+RDF-MT
+</a>
+</cite>
+].
+</p>
+<section class="informative">
+<h4 role="heading" aria-level="3" id="overview-15">
+Overview
+</h4>
+<p>
+<em>
+This
+section
+is
+non-normative.
+</em>
+</p>
+<p>
+For
+each
+element
+of
+the
+<a href="#dfn-list" title="list" class="tref internalDFN">
+list
+</a>
+a
+new
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifier
+</a>
+is
+allocated
+which
+is
+used
+to
+generate
+<code>
+rdf:first
+</code>
+and
+<code>
+rdf:rest
+</code>
+<a href="#dfn-rdf-triple" title="rdf-triple" class="tref internalDFN">
+triples
+</a>.
+The
+algorithm
+returns
+the
+list
+head,
+which
+is
+either
+the
+first
+allocated
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifier
+</a>
+or
+<code>
+rdf:nil
+</code>
+if
+the
+<a href="#dfn-list" title="list" class="tref internalDFN">
+list
+</a>
+is
+empty.
+If
+a
+list
+element
+represents
+a
+<a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">
+relative
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+the
+corresponding
+<code>
+rdf:first
+</code>
+triple
+is
+omitted.
+</p>
+</section>
+<section>
+<h4 role="heading" aria-level="3" id="algorithm-15">
+Algorithm
+</h4>
+<p>
+The
+algorithm
+takes
+two
+inputs:
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>
+<i>
+list
+</i>
+and
+an
+empty
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>
+<i>
+list
+triples
+</i>
+used
+for
+returning
+the
+generated
+<a href="#dfn-rdf-triple" title="rdf-triple" class="tref internalDFN">
+triples
+</a>.
+</p>
+<ol class="algorithm">
+<li>
+If
+<i>
+list
+</i>
+is
+empty,
+return
+<code>
+rdf:nil
+</code>.
+</li>
+<li>
+Otherwise,
+create
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>,
+append
+a
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple" title="triple" class="tref internalDFN">
+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 href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple" title="triple" class="tref internalDFN">
+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 href="#dfn-blank-node" title="blank-node" class="tref internalDFN">
+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 id="h3_serialize-rdf-as-json-ld-algorithm" role="heading" aria-level="2">
+<span class="secno">
+10.4
+</span>
+Serialize
+RDF
+as
+JSON-LD
+Algorithm
+</h3>
+<p>
+This
+algorithm
+serializes
+an
+<a href="#dfn-rdf-dataset" title="rdf-dataset" class="tref internalDFN">
+RDF
+dataset
+</a>
+consisting
+of
+a
+<a href="#dfn-default-graph" title="default-graph" class="tref internalDFN">
+default
+graph
+</a>
+and
+zero
+or
+more
+<a href="#dfn-named-graph" title="named-graph" class="tref internalDFN">
+named
+graphs
+</a>
+into
+a
+JSON-LD
+document.
+</p>
+<section class="informative">
+<h4 role="heading" aria-level="3" 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 href="http://www.w3.org/TR/rdf-schema/#ch_collectionvocab" title="rdf-collection" class="tref internalDFN">
+RDF
+Collection
+</a>
+into
+a
+<a href="#dfn-list" title="list" class="tref internalDFN">
+list
+</a>
+and
+generating
+a
+JSON-LD
+document
+in
+expanded
+form
+for
+all
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal" title="rdf-literal" class="tref internalDFN">
+RDF
+literals
+</a>,
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+IRIs
+</a>
+and
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifiers
+</a>.
+If
+the
+<i>
+use
+native
+types
+</i>
+flag
+is
+set
+to
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>,
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal" title="rdf-literal" class="tref internalDFN">
+RDF
+literals
+</a>
+with
+a
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri" title="datatype-iri" class="tref externalDFN">
+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 href="#dfn-number" title="number" class="tref internalDFN">
+JSON
+numbers
+</a>
+and
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal" title="rdf-literal" class="tref internalDFN">
+RDF
+literals
+</a>
+with
+a
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri" title="datatype-iri" class="tref externalDFN">
+datatype
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+that
+equals
+<code>
+xsd:boolean
+</code>
+are
+converted
+to
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>
+or
+<a href="#dfn-false" title="false" class="tref internalDFN">
+false
+</a>
+based
+on
+their
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form" title="lexical-form" class="tref externalDFN">
+lexical
+form
+</a>
+as
+described
+in
+<a class="sectionRef" href="#data-round-tripping">
+section
+10.6
+Data
+Round
+Tripping
+</a>.
+<ins class="diff-new">Unless
+the
+</ins><i><ins class="diff-new">
+use
+</ins><code><ins class="diff-new">
+rdf:type
+</ins></code></i><ins class="diff-new">
+flag
+is
+set
+to
+true,
+</ins><code><ins class="diff-new">
+rdf:type
+</ins></code><ins class="diff-new">
+predicates
+will
+be
+serialized
+as
+</ins><code><ins class="diff-new">
+@type
+</ins></code><ins class="diff-new">
+as
+long
+as
+the
+associated
+object
+is
+either
+an
+</ins><a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
+IRI
+</ins></abbr></a><ins class="diff-new">
+or
+</ins><a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN"><ins class="diff-new">
+blank
+node
+identifier
+</ins></a>.
+</p>
+</section>
+<section>
+<h4 role="heading" aria-level="3" id="algorithm-16">
+Algorithm
+</h4>
+<p>
+The
+algorithm
+takes
+<del class="diff-old">two
+</del>
+<ins class="diff-chg">one
+</ins>
+required
+<ins class="diff-new">and
+two
+optional
+</ins>
+inputs:
+an
+<a href="#dfn-rdf-dataset" title="rdf-dataset" class="tref internalDFN">
+RDF
+dataset
+</a>
+and
+<del class="diff-old">a
+flag
+</del>
+<ins class="diff-chg">the
+two
+flags
+</ins>
+<i>
+use
+native
+types
+</i>
+<ins class="diff-new">and
+</ins><i><ins class="diff-new">
+use
+</ins><code><ins class="diff-new">
+rdf:type
+</ins></code></i>
+that
+<del class="diff-old">defaults
+</del>
+<ins class="diff-chg">both
+default
+</ins>
+to
+<a href="#dfn-false" title="false" class="tref internalDFN">
+false
+</a>.
+</p>
+<ol class="algorithm">
+<li>
+Initialize
+<i>
+default
+graph
+</i>
+to
+an
+empty
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>.
+</li>
+<li>
+Initialize
+<i>
+graph
+map
+</i>
+to
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-rdf-dataset" title="rdf-dataset" class="tref internalDFN">
+RDF
+dataset
+</a>:
+<ol class="algorithm">
+<li>
+If
+<i>
+graph
+</i>
+is
+the
+<a href="#dfn-default-graph" title="default-graph" class="tref internalDFN">
+default
+graph
+</a>,
+set
+<i>
+name
+</i>
+to
+<code>
+@default
+</code>,
+otherwise
+to
+the
+<a href="#dfn-graph-name" title="graph-name" class="tref internalDFN">
+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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>.
+</li>
+<li>
+If
+<i>
+graph
+</i>
+is
+not
+the
+<a href="#dfn-default-graph" title="default-graph" class="tref internalDFN">
+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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-rdf-triple" title="rdf-triple" class="tref internalDFN">
+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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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>,
+<ins class="diff-new">the
+</ins><i><ins class="diff-new">
+use
+</ins><code><ins class="diff-new">
+rdf:type
+</ins></code></i><ins class="diff-new">
+flag
+is
+not
+</ins><a href="#dfn-true" title="true" class="tref internalDFN"><ins class="diff-new">
+true
+</ins></a>,
+and
+<i>
+object
+</i>
+is
+an
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>
+whose
+only
+item
+is
+<i>
+object
+</i>.
+Finally,
+continue
+to
+the
+next
+<a href="#dfn-rdf-triple" title="rdf-triple" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>.
+</li>
+<li>
+If
+there
+is
+no
+item
+equivalent
+to
+<i>
+value
+</i>
+in
+the
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>
+associated
+with
+the
+<i>
+predicate
+</i>
+member
+of
+<i>
+node
+</i>,
+append
+a
+reference
+to
+<i>
+value
+</i>
+to
+the
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>.
+Two
+JSON
+objects
+are
+considered
+equal
+if
+they
+have
+equivalent
+key-value
+pairs.
+</li>
+<li>
+If
+<i>
+object
+</i>
+is
+a
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifier
+</a>
+or
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<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 href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+consisting
+of
+three
+members,
+<code>
+node
+</code>,
+<code>
+property
+</code>,
+and
+<code>
+value
+</code>
+to
+the
+<i>
+usages
+</i>
+<a href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>.
+</li>
+<li>
+Append
+the
+value
+of
+the
+<code>
+@id
+</code>
+member
+of
+<i>
+node
+</i>
+to
+the
+<i>
+list
+nodes
+</i>
+<a href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+instead
+of
+a
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+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 href="#dfn-list-object" title="list-object" class="tref internalDFN">
+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 href="#dfn-list-object" title="list-object" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>
+and
+the
+last
+item
+of
+the
+<i>
+list
+nodes
+</i>
+<a href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>.
+</li>
+<li>
+Add
+a
+<code>
+@list
+</code>
+member
+to
+<i>
+head
+</i>
+and
+initialize
+its
+value
+to
+the
+<i>
+list
+</i>
+<a href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+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 href="#dfn-array" title="array" class="tref internalDFN">
+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>
+<section id="rdf-to-object-conversion">
+<h3 id="h3_rdf-to-object-conversion" role="heading" aria-level="2">
+<span class="secno">
+10.5
+</span>
+RDF
+to
+Object
+Conversion
+</h3>
+<p>
+This
+algorithm
+transforms
+an
+RDF
+literal
+to
+a
+JSON-LD
+<a href="#dfn-value-object" title="value-object" class="tref internalDFN">
+value
+object
+</a>
+and
+a
+RDF
+blank
+node
+or
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+to
+an
+JSON-LD
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
+node
+object
+</a>.
+</p>
+<section class="informative">
+<h4 role="heading" aria-level="3" id="overview-17">
+Overview
+</h4>
+<p>
+<em>
+This
+section
+is
+non-normative.
+</em>
+</p>
+<p>
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal" title="rdf-literal" class="tref internalDFN">
+RDF
+literals
+</a>
+are
+transformed
+to
+<a href="#dfn-value-object" title="value-object" class="tref internalDFN">
+value
+objects
+</a>
+whereas
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+IRIs
+</a>
+and
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifiers
+</a>
+are
+transformed
+to
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
+node
+objects
+</a>.
+If
+the
+<i>
+use
+native
+types
+</i>
+flag
+is
+set
+to
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>,
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal" title="rdf-literal" class="tref internalDFN">
+RDF
+literals
+</a>
+with
+a
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri" title="datatype-iri" class="tref externalDFN">
+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 href="#dfn-number" title="number" class="tref internalDFN">
+JSON
+numbers
+</a>
+and
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal" title="rdf-literal" class="tref internalDFN">
+RDF
+literals
+</a>
+with
+a
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri" title="datatype-iri" class="tref externalDFN">
+datatype
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+that
+equals
+<code>
+xsd:boolean
+</code>
+are
+converted
+to
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>
+or
+<a href="#dfn-false" title="false" class="tref internalDFN">
+false
+</a>
+based
+on
+their
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form" title="lexical-form" class="tref externalDFN">
+lexical
+form
+</a>
+as
+described
+in
+<a class="sectionRef" href="#data-round-tripping">
+section
+10.6
+Data
+Round
+Tripping
+</a>.
+</p>
+</section>
+<section>
+<h4 role="heading" aria-level="3" id="algorithm-17">
+Algorithm
+</h4>
+<p>
+This
+algorithm
+takes
+two
+required
+inputs:
+a
+<i>
+value
+</i>
+to
+be
+converted
+to
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+and
+a
+flag
+<i>
+use
+native
+types
+</i>.
+</p>
+<ol class="algorithm">
+<li>
+If
+<i>
+value
+</i>
+is
+an
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+a
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
+blank
+node
+identifier
+</a>,
+return
+a
+new
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal" title="rdf-literal" class="tref externalDFN">
+RDF
+literal
+</a>:
+<ol class="algorithm">
+<li>
+Initialize
+a
+new
+empty
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+result.
+</li>
+<li>
+Initialize
+<i>
+converted
+value
+</i>
+to
+<i>
+value
+</i>.
+</li>
+<li>
+Initialize
+<i>
+type
+</i>
+to
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>
+</li>
+<li>
+If
+<i>
+use
+native
+types
+</i>
+is
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>
+<ol class="algorithm">
+<li>
+If
+the
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri" title="datatype-iri" class="tref externalDFN">
+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 href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form" title="lexical-form" class="tref externalDFN">
+lexical
+form
+</a>
+of
+<i>
+value
+</i>.
+</li>
+<li>
+Otherwise,
+if
+the
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri" title="datatype-iri" class="tref externalDFN">
+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 href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>
+if
+the
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form" title="lexical-form" class="tref externalDFN">
+lexical
+form
+</a>
+of
+<i>
+value
+</i>
+matches
+<code>
+true
+</code>,
+or
+<a href="#dfn-false" title="false" class="tref internalDFN">
+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 href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri" title="datatype-iri" class="tref externalDFN">
+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 href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form" title="lexical-form" class="tref externalDFN">
+lexical
+form
+</a>
+is
+a
+valid
+<code>
+xsd:integer
+</code>
+or
+<code>
+xsd:double
+</code>
+according
+[
+<cite>
+<a href="#bib-XMLSCHEMA11-2" class="bibref">
+XMLSCHEMA11-2
+</a>
+</cite>
+],
+set
+<i>
+converted
+value
+</i>
+to
+the
+result
+of
+converting
+the
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form" title="lexical-form" class="tref externalDFN">
+lexical
+form
+</a>
+to
+a
+JSON
+<a href="#dfn-number" title="number" class="tref internalDFN">
+number
+</a>.
+</li>
+</ol>
+</li>
+<li>
+Otherwise,
+if
+<i>
+value
+</i>
+is
+a
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-language-tagged-string" title="language-tagged-string" class="tref externalDFN">
+language-tagged
+string
+</a>
+add
+a
+member
+<code>
+@language
+</code>
+to
+<i>
+result
+</i>
+and
+set
+its
+value
+to
+the
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-language-tag" title="language-tag" class="tref externalDFN">
+language
+tag
+</a>
+of
+<i>
+value
+</i>.
+</li>
+<li>
+Otherwise,
+set
+<i>
+type
+</i>
+to
+the
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri" title="datatype-iri" class="tref externalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+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 id="h3_data-round-tripping" role="heading" aria-level="2">
+<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 href="#dfn-number" title="number" class="tref internalDFN">
+numbers
+</a>
+are
+automatically
+type-coerced
+to
+<code>
+xsd:integer
+</code>
+or
+<code>
+xsd:double
+</code>
+depending
+on
+whether
+the
+<a href="#dfn-number" title="number" class="tref internalDFN">
+number
+</a>
+has
+a
+non-zero
+fractional
+part
+or
+not
+(the
+result
+of
+a
+modulo‑1
+operation),
+the
+boolean
+values
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>
+and
+<a href="#dfn-false" title="false" class="tref internalDFN">
+false
+</a>
+are
+coerced
+to
+<code>
+xsd:boolean
+</code>,
+and
+<a href="#dfn-string" title="string" class="tref internalDFN">
+strings
+</a>
+are
+coerced
+to
+<code>
+xsd:string
+</code>.
+The
+numeric
+or
+boolean
+values
+themselves
+are
+converted
+to
+<dfn id="dfn-canonical-lexical-form" title="canonical-lexical-form">
+canonical
+lexical
+form
+</dfn>,
+i.e.,
+a
+deterministic
+string
+representation
+as
+defined
+in
+[
+<cite>
+<a href= "#bib-XMLSCHEMA11-2" class="bibref">
+XMLSCHEMA11-2
+</a>
+</cite>
+].
+</p>
+<p>
+The
+<a href="#dfn-canonical-lexical-form" title="canonical-lexical-form" class="tref internalDFN">
+canonical
+lexical
+form
+</a>
+of
+an
+<em>
+integer
+</em>,
+i.e.,
+a
+<a href="#dfn-number" title="number" class="tref internalDFN">
+number
+</a>
+with
+no
+non-zero
+fractional
+part
+or
+a
+<a href="#dfn-number" title="number" class="tref internalDFN">
+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 href="#dfn-canonical-lexical-form" title="canonical-lexical-form" class="tref internalDFN">
+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 href="#dfn-canonical-lexical-form" title="canonical-lexical-form" class="tref internalDFN">
+canonical
+lexical
+form
+</a>
+of
+a
+<em>
+double
+</em>,
+i.e.,
+a
+<a href="#dfn-number" title="number" class="tref internalDFN">
+number
+</a>
+with
+a
+non-zero
+fractional
+part
+or
+a
+<a href="#dfn-number" title="number" class="tref internalDFN">
+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 href="#bib-IEEE-754-1985" class="bibref">
+IEEE-754-1985
+</a>
+</cite>
+]
+whereas
+the
+value
+space
+of
+JSON
+<a href="#dfn-number" title="number" class="tref internalDFN">
+numbers
+</a>
+is
+not
+specified;
+when
+deserializing
+JSON-LD
+to
+RDF
+the
+mantissa
+is
+rounded
+to
+<del class="diff-old">15&nbsp;digits
+</del>
+<ins class="diff-chg">15&#160;digits
+</ins>
+after
+the
+decimal
+point.
+In
+JavaScript,
+implementers
+can
+use
+the
+following
+snippet
+of
+code
+to
+convert
+a
+double
+to
+<a href="#dfn-canonical-lexical-form" title="canonical-lexical-form" class="tref internalDFN">
+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 href="#dfn-canonical-lexical-form" title="canonical-lexical-form" class="tref internalDFN">
+canonical
+lexical
+form
+</a>
+of
+the
+<em>
+boolean
+</em>
+values
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>
+and
+<a href="#dfn-false" title="false" class="tref internalDFN">
+false
+</a>
+are
+the
+strings
+<code>
+true
+</code>
+and
+<code>
+false
+</code>.
+</p>
+<p>
+When
+JSON-native
+<a href="#dfn-number" title="number" class="tref internalDFN">
+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 href="#dfn-canonical-lexical-form" title="canonical-lexical-form" class="tref internalDFN">
+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 href="#dfn-number" title="number" class="tref internalDFN">
+number
+</a>
+because
+its
+value
+space
+is
+not
+limited.
+While
+the
+JSON
+specification
+[
+<cite>
+<a href= "#bib-RFC4627" class="bibref">
+RFC4627
+</a>
+</cite>
+]
+does
+not
+limit
+the
+value
+space
+of
+<a href="#dfn-number" title="number" class="tref internalDFN">
+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 href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal" title="rdf-literals" class="tref externalDFN">
+RDF
+literals
+</a>
+with
+a
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri" title="datatype-iri" class="tref externalDFN">
+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 href="#dfn-false" title="false" class="tref internalDFN">
+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 title="MUST NOT" class="rfc2119">
+MUST
+NOT
+</em>
+be
+backslash-escaped.
+</p>
+</section>
+</section>
+<section id="the-application-programming-interface" class="informative">
+<h2 id="h2_the-application-programming-interface" role="heading" aria-level="1">
+<span class="secno">
+11.
+</span>
+The
+Application
+Programming
+Interface
+</h2>
+<p>
+<em>
+<ins class="diff-new">This
+section
+is
+non-normative.
+</ins></em></p><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.
+<del class="diff-old">A
+conformant
+JSON-LD
+API
+Implementation
+MUST
+implement
+the
+entirety
+of
+the
+following
+API.
+</del>
+</p>
+<p>
+The
+JSON-LD
+API
+uses
+<a href="#dfn-promise" title="promise" class="tref internalDFN">
+Promises
+</a>
+to
+represent
+the
+result
+of
+the
+various
+asynchronous
+operations.
+<dfn id="dfn-promise" title="promise">
+Promises
+</dfn>
+are
+<del class="diff-old">defined
+in
+</del>
+<ins class="diff-chg">temporarily
+being
+drafted
+on
+</ins>
+<cite>
+<del class="diff-old">section&nbsp;4
+Promises
+</del>
+<a href="https://github.com/domenic/promises-unwrapping/blob/master/README.md">
+<ins class="diff-chg">GitHub
+</ins>
+</a>
+</cite>
+<del class="diff-old">of
+</del>
+[
+<cite>
+<del class="diff-old">DOM-WHATWG
+</del>
+<a href="#bib-PROMISES" class="bibref">
+<ins class="diff-chg">PROMISES
+</ins>
+</a>
+</cite>
+<del class="diff-old">].
+Feature
+at
+Risk
+8
+:
+Properly
+referencing
+the
+DOM
+Promises
+spec
+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
+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
+</del>
+<ins class="diff-chg">]
+but
+are
+expected
+</ins>
+to
+be
+<del class="diff-old">incorporated
+into
+specifications.
+The
+issue
+relates
+to
+how
+to
+properly
+refer
+to
+a
+spec
+living
+in
+the
+WHATWG
+as
+a
+living
+standard
+as
+well
+</del>
+<ins class="diff-chg">standardized
+</ins>
+as
+<del class="diff-old">how
+to
+ensure
+that
+the
+interface
+provided
+by
+the
+spec
+is
+stable.
+</del>
+<ins class="diff-chg">part
+of
+ECMAScript&#160;6.
+</ins>
+</p>
+<section id="the-jsonldprocessor-interface" class="informative">
+<h3 id="h3_the-jsonldprocessor-interface" role="heading" aria-level="2">
+<span class="secno">
+11.1
+</span>
+The
+<a class="idlType" href="#idl-def-JsonLdProcessor">
+<code>
+JsonLdProcessor
+</code>
+</a>
+Interface
+</h3>
+<p>
+<em>
+<ins class="diff-new">This
+section
+is
+non-normative.
+</ins></em></p><p>
+The
+<a class="idlType" href="#idl-def-JsonLdProcessor">
+<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
+<del class="diff-old">conformant
+JSON-LD
+API
+Implementations
+MUST
+NOT
+</del>
+<ins class="diff-chg">implementations
+do
+not
+</ins>
+modify
+the
+input
+parameters.
+If
+an
+error
+is
+detected,
+the
+Promise
+is
+rejected
+passing
+a
+<a class="idlType" href="#idl-def-JsonLdError">
+<code>
+JsonLdError
+</code>
+</a>
+with
+the
+corresponding
+error
+<code class="idlMemberName">
+<a href="#widl-JsonLdError-code">
+code
+</a>
+</code>
+and
+processing
+is
+stopped.
+</p>
+<p>
+If
+the
+<code class="idlMemberName">
+<a href="#widl-JsonLdOptions-documentLoader">
+documentLoader
+</a>
+</code>
+option
+is
+specified,
+<del class="diff-old">a
+conformant
+JSON-LD
+Processor
+MUST
+use
+</del>
+it
+<ins class="diff-new">is
+used
+</ins>
+to
+dereference
+remote
+documents
+and
+contexts.
+The
+<code class="idlMemberName">
+<a href="#widl-RemoteDocument-documentUrl">
+documentUrl
+</a>
+</code>
+in
+the
+returned
+<code class="idlMemberName">
+<a href="#idl-def-RemoteDocument">
+RemoteDocument
+</a>
+</code>
+is
+used
+as
+<a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">
+base
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+and
+the
+<code class="idlMemberName">
+<a href="#widl-RemoteDocument-contextUrl">
+contextUrl
+</a>
+</code>
+is
+used
+instead
+of
+looking
+at
+the
+HTTP
+Link
+Header
+directly.
+For
+the
+sake
+of
+simplicity,
+none
+of
+the
+algorithms
+in
+this
+document
+mention
+this
+directly.
+<del class="diff-old">JSON-LD
+API
+Implementations
+are
+not
+required
+to
+implement
+the
+documentLoader
+option.
+</del>
+</p>
+<del class="diff-old">    ]
+</del>
+<pre class="idl">
+<span class="idlInterface" id="idl-def-JsonLdProcessor">[<span class="extAttr">Constructor</span>]
+interface <span class="idlInterfaceID">JsonLdProcessor</span> {
+<del class="diff-old">};
+</del>
+<span class="idlMethod">    <span class="idlMethType"><a class="internalDFN" href="#dfn-promise">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 class="idlType" href="#idl-def-JsonLdContext"><code>JsonLdContext</code></a></span> <span class="idlParamName">context</span></span>, <span class="idlParam">optional <span class="idlParamType"><a class="idlType" href="#idl-def-JsonLdOptions"><code>JsonLdOptions</code></a></span> <span class="idlParamName">options</span></span>);</span>
+<span class="idlMethod">    <span class="idlMethType"><a class="internalDFN" href="#dfn-promise">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 class="idlType" href="#idl-def-JsonLdOptions"><code>JsonLdOptions</code></a></span> <span class="idlParamName">options</span></span>);</span>
+<span class="idlMethod">    <span class="idlMethType"><a class="internalDFN" href="#dfn-promise">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 class="idlType" href="#idl-def-JsonLdContext"><code>JsonLdContext</code></a>?</span> <span class="idlParamName">context</span></span>, <span class="idlParam">optional <span class="idlParamType"><a class="idlType" href="#idl-def-JsonLdOptions"><code>JsonLdOptions</code></a></span> <span class="idlParamName">options</span></span>);</span>
+<ins class="diff-chg">};</span>
+</ins>
+</pre>
+<section>
+<h4 role="heading" aria-level="3" id="methods">
+Methods
+</h4>
+<p>
+<em>
+<ins class="diff-chg">This
+section
+is
+non-normative.
+</ins></em>
+</p>
+<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 href="#dfn-promise" title="promise" class="tref internalDFN">
+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 href="#dfn-iri" title="iri" class="tref internalDFN">
+<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 href="#bib-RFC6839" class="bibref">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>.
+The
+<a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">
+base
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+of
+the
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>.
+If
+set,
+the
+<code class="idlMemberName">
+<a href="#widl-JsonLdOptions-base">
+base
+</a>
+</code>
+option
+overrides
+the
+<a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+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 href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>.
+If
+<code class="idlMemberName">
+<a href="#widl-JsonLdOptions-expandContext">
+expandContext
+</a>
+</code>
+is
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#bib-RFC5988" class="bibref">
+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 href="#bib-RFC6839" class="bibref">
+RFC6839
+</a>
+</cite>
+]
+except
+<code>
+application/ld+json
+</code>,
+update
+the
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+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 href="#dfn-local-context" title="local-context" class="tref internalDFN">
+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 class="idlType" href="#idl-def-JsonLdError">
+<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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+and
+<i>
+input
+</i>
+as
+<i>
+element
+</i>.
+</li>
+<li>
+If
+<i>
+context
+</i>
+is
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-iri" title="iri" class="tref internalDFN">
+<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 class="idlType" href="#idl-def-JsonLdContext">
+<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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>,
+an
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+or
+an
+array
+consisting
+of
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+s
+and
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+s.
+</td>
+</tr>
+<tr>
+<td class="prmName">
+options
+</td>
+<td class="prmType">
+<code>
+<a class="idlType" href="#idl-def-JsonLdOptions">
+<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 href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+</td>
+</tr>
+</table>
+<div>
+<em>
+Return
+type:
+</em>
+<code>
+<a class="internalDFN" href="#dfn-promise">
+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 href="#dfn-promise" title="promise" class="tref internalDFN">
+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 href="#dfn-iri" title="iri" class="tref internalDFN">
+<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 href="#bib-RFC6839" class="bibref">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>.
+The
+<a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">
+base
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+of
+the
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>.
+If
+set,
+the
+<code class="idlMemberName">
+<a href="#widl-JsonLdOptions-base">
+base
+</a>
+</code>
+option
+overrides
+the
+<a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+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 href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>.
+If
+<code class="idlMemberName">
+<a href="#widl-JsonLdOptions-expandContext">
+expandContext
+</a>
+</code>
+is
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#bib-RFC5988" class="bibref">
+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 href="#bib-RFC6839" class="bibref">
+RFC6839
+</a>
+</cite>
+]
+except
+<code>
+application/ld+json
+</code>,
+update
+the
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+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 href="#dfn-local-context" title="local-context" class="tref internalDFN">
+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 class="idlType" href="#idl-def-JsonLdError">
+<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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+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 href="#dfn-iri" title="iri" class="tref internalDFN">
+<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 class="idlType" href="#idl-def-JsonLdOptions">
+<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 href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+</td>
+</tr>
+</table>
+<div>
+<em>
+Return
+type:
+</em>
+<code>
+<a class="internalDFN" href="#dfn-promise">
+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 href="#dfn-promise" title="promise" class="tref internalDFN">
+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 href="#dfn-iri" title="iri" class="tref internalDFN">
+<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 href="#bib-RFC6839" class="bibref">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>.
+The
+<a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">
+base
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+of
+the
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+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 href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>.
+If
+set,
+the
+<code class="idlMemberName">
+<a href="#widl-JsonLdOptions-base">
+base
+</a>
+</code>
+option
+overrides
+the
+<a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">
+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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+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 href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>.
+If
+<code class="idlMemberName">
+<a href="#widl-JsonLdOptions-expandContext">
+expandContext
+</a>
+</code>
+is
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#bib-RFC5988" class="bibref">
+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 href="#bib-RFC6839" class="bibref">
+RFC6839
+</a>
+</cite>
+]
+except
+<code>
+application/ld+json
+</code>,
+update
+the
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
+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 href="#dfn-local-context" title="local-context" class="tref internalDFN">
+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 class="idlType" href="#idl-def-JsonLdError">
+<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 href="#dfn-active-context" title="active-context" class="tref internalDFN">
+active
+context
+</a>
+and
+<i>
+input
+</i>
+as
+<i>
+element
+</i>.
+</li>
+<li>
+If
+<i>
+context
+</i>
+is
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-iri" title="iri" class="tref internalDFN">
+<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 class="idlType" href="#idl-def-JsonLdContext">
+<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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>,
+an
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+or
+an
+array
+consisting
+of
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+s
+and
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+s.
+If
+not
+passed
+or
+<a href="#dfn-null" title="null" class="tref internalDFN">
+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 class="idlType" href="#idl-def-JsonLdOptions">
+<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 href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+</td>
+</tr>
+</table>
+<div>
+<em>
+Return
+type:
+</em>
+<code>
+<a class="internalDFN" href="#dfn-promise">
+Promise
+</a>
+</code>
+</div>
+</dd>
+</dl>
+</section>
+<pre class="idl">
+<del class="diff-old">typedef
+(
+object
+or
+DOMString
+or
+(object
+or
+DOMString[])
+)
+JsonLdContext
+;
+</del>
+<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 class="idlType" href="#idl-def-JsonLdContext">
+<code>
+JsonLdContext
+</code>
+</a>
+type
+is
+used
+to
+refer
+to
+a
+value
+that
+that
+may
+be
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>,
+a
+<a href="#dfn-string" title="string" class="tref internalDFN">
+string
+</a>
+representing
+an
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+or
+an
+array
+of
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+objects
+</a>
+and
+<a href="#dfn-string" title="string" class="tref internalDFN">
+strings
+</a>.
+</p>
+</div>
+</section>
+<section id="the-jsonldoptions-type" class="informative">
+<h3 id="h3_the-jsonldoptions-type" role="heading" aria-level="2">
+<span class="secno">
+11.2
+</span>
+The
+<a class="idlType" href="#idl-def-JsonLdOptions">
+<code>
+JsonLdOptions
+</code>
+</a>
+Type
+</h3>
+<p>
+<em>
+<ins class="diff-new">This
+section
+is
+non-normative.
+</ins></em></p><p>
+The
+<a class="idlType" href="#idl-def-JsonLdOptions">
+<code>
+JsonLdOptions
+</code>
+</a>
+type
+is
+used
+to
+pass
+various
+options
+to
+the
+<a class="idlType" href="#idl-def-JsonLdProcessor">
+<code>
+JsonLdProcessor
+</code>
+</a>
+methods.
+</p>
+<del class="diff-old">     {
+</del>
+<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 class="idlType" href="#idl-def-LoadDocumentCallback"><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>
+<del class="diff-old">};
+</del>
+<ins class="diff-chg">};</span>
+</ins>
+</pre>
+<section>
+<h4 role="heading" aria-level="3" id="dictionary-jsonldoptions-members">
+Dictionary
+<a href="#idl-def-JsonLdOptions" class="idlType">
+<code>
+JsonLdOptions
+</code>
+</a>
+Members
+</h4>
+<p>
+<em>
+<ins class="diff-chg">This
+section
+is
+non-normative.
+</ins></em>
+</p>
+<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 class="idlType" href="#idl-def-LoadDocumentCallback">
+<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
+<del class="diff-old">MUST
+be
+</del>
+<ins class="diff-chg">is
+</ins>
+used
+to
+retrieve
+remote
+documents
+and
+contexts;
+otherwise,
+if
+not
+specified,
+the
+processor's
+built-in
+loader
+<del class="diff-old">MUST
+be
+</del>
+<ins class="diff-chg">is
+</ins>
+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
+<del class="diff-old">JSON-LD
+processor
+MUST
+</del>
+<ins class="diff-chg">implementation
+has
+to
+</ins>
+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
+<del class="diff-old">MAY
+</del>
+<ins class="diff-chg">may
+</ins>
+implement
+different
+optimizations.
+Developers
+<del class="diff-old">MUST
+NOT
+</del>
+<ins class="diff-chg">must
+not
+</ins>
+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" class="informative">
+<h3 id="h3_remote-document-and-context-retrieval" role="heading" aria-level="2">
+<span class="secno">
+11.3
+</span>
+Remote
+Document
+and
+Context
+Retrieval
+</h3>
+<p>
+<del class="diff-old">Developers
+</del>
+<em>
+<ins class="diff-chg">This
+section
+is
+non-normative.
+</ins></em></p><p><ins class="diff-chg">
+Users
+of
+an
+API
+implementation
+</ins>
+can
+utilize
+a
+callback
+to
+control
+how
+remote
+documents
+and
+contexts
+are
+<del class="diff-old">retrieved
+by
+JSON-LD
+API
+Implementations
+.
+</del>
+<ins class="diff-chg">retrieved.
+</ins>
+This
+section
+details
+the
+parameters
+of
+that
+callback
+and
+the
+data
+structure
+used
+to
+return
+the
+retrieved
+context.
+</p>
+<section class="informative">
+<h4 role="heading" aria-level="3" id="loaddocumentcallback">
+LoadDocumentCallback
+</h4>
+<p>
+<em>
+<ins class="diff-new">This
+section
+is
+non-normative.
+</ins></em></p><p>
+The
+<a class="idlType" href="#idl-def-LoadDocumentCallback">
+<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">
+<del class="diff-old">callback
+LoadDocumentCallback
+=
+Promise
+(
+DOMString
+url
+);
+</del>
+<span class="idlCallback" id="idl-def-LoadDocumentCallback">callback <span class="idlCallbackID">LoadDocumentCallback</span> = <span class="idlCallbackType"><a class="internalDFN" href="#dfn-promise">Promise</a></span> (<span class="idlParam"><span class="idlParamType"><a>DOMString</a></span> <span class="idlParamName">url</span></span>);</span>
+</pre>
+<section>
+<h5 role="heading" aria-level="4" id="callback-loaddocumentcallback-parameters">
+Callback
+<a href="#idl-def-LoadDocumentCallback" class="idlType">
+<code>
+LoadDocumentCallback
+</code>
+</a>
+Parameters
+</h5>
+<p>
+<em>
+<ins class="diff-chg">This
+section
+is
+non-normative.
+</ins></em>
+</p>
+<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
+<del class="diff-old">MUST
+</del>
+result
+in
+the
+<a href="#dfn-promise" title="promise" class="tref internalDFN">
+Promise
+</a>
+being
+rejected
+with
+a
+<a class="idlType" href="#idl-def-JsonLdError">
+<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 class="informative">
+<h4 role="heading" aria-level="3" id="remotedocument">
+RemoteDocument
+</h4>
+<p>
+<em>
+<ins class="diff-new">This
+section
+is
+non-normative.
+</ins></em></p><p>
+The
+<a class="idlType" href="#idl-def-RemoteDocument">
+<code>
+RemoteDocument
+</code>
+</a>
+type
+is
+used
+by
+a
+<a class="idlType" href="#idl-def-LoadDocumentCallback">
+<code>
+LoadDocumentCallback
+</code>
+</a>
+to
+return
+information
+about
+a
+remote
+document
+or
+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>
+<del class="diff-old">};
+</del>
+<ins class="diff-chg">};</span>
+</ins>
+</pre>
+<section>
+<h5 role="heading" aria-level="4" id="dictionary-remotedocument-members">
+Dictionary
+<a href="#idl-def-RemoteDocument" class="idlType">
+<code>
+RemoteDocument
+</code>
+</a>
+Members
+</h5>
+<p>
+<em>
+<ins class="diff-chg">This
+section
+is
+non-normative.
+</ins></em>
+</p>
+<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 href="#bib-RFC5988" class="bibref">
+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
+<del class="diff-old">MUST
+be
+</del>
+<ins class="diff-chg">is
+</ins>
+ignored.
+If
+multiple
+HTTP
+Link
+Headers
+using
+the
+<code>
+http://www.w3.org/ns/json-ld#context
+</code>
+link
+relation
+are
+found,
+the
+<a href="#dfn-promise" title="promise" class="tref internalDFN">
+Promise
+</a>
+of
+the
+<a class="idlType" href="#idl-def-LoadDocumentCallback">
+<code>
+LoadDocumentCallback
+</code>
+</a>
+<del class="diff-old">MUST
+be
+</del>
+<ins class="diff-chg">is
+</ins>
+rejected
+with
+a
+<a class="idlType" href="#idl-def-JsonLdError">
+<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>
+<section id="error-handling" class="informative">
+<h3 id="h3_error-handling" role="heading" aria-level="2">
+<span class="secno">
+11.4
+</span>
+Error
+Handling
+</h3>
+<p>
+<em>
+<ins class="diff-new">This
+section
+is
+non-normative.
+</ins></em></p><p>
+This
+section
+describes
+the
+datatype
+definitions
+used
+within
+the
+JSON-LD
+API
+for
+error
+handling.
+</p>
+<section>
+<h4 role="heading" aria-level="3" id="jsonlderror">
+JsonLdError
+</h4>
+<p>
+<em>
+<ins class="diff-new">This
+section
+is
+non-normative.
+</ins></em></p><p>
+The
+<a class="idlType" href="#idl-def-JsonLdError">
+<code>
+JsonLdError
+</code>
+</a>
+type
+is
+used
+to
+report
+processing
+errors.
+</p>
+<del class="diff-old">       {
+</del>
+<pre class="idl">
+<span class="idlDictionary" id="idl-def-JsonLdError">dictionary <span class="idlDictionaryID">JsonLdError</span> {
+<span class="idlMember">    <span class="idlMemberType"><a class="idlType" href="#idl-def-JsonLdErrorCode"><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>
+<del class="diff-old">};
+</del>
+<ins class="diff-chg">};</span>
+</ins>
+</pre>
+<section>
+<h5 role="heading" aria-level="4" id="dictionary-jsonlderror-members">
+Dictionary
+<a href="#idl-def-JsonLdError" class="idlType">
+<code>
+JsonLdError
+</code>
+</a>
+Members
+</h5>
+<p>
+<em>
+<ins class="diff-chg">This
+section
+is
+non-normative.
+</ins></em>
+</p>
+<dl class="dictionary-members">
+<dt id="widl-JsonLdError-code">
+<code>
+code
+</code>
+of
+type
+<span class="idlMemberType">
+<a class="idlType" href="#idl-def-JsonLdErrorCode">
+<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 class="informative">
+<h4 role="heading" aria-level="3" id="jsonlderrorcode">
+JsonLdErrorCode
+</h4>
+<p>
+<em>
+<ins class="diff-new">This
+section
+is
+non-normative.
+</ins></em></p><p>
+The
+<a class="idlType" href="#idl-def-JsonLdErrorCode">
+<code>
+JsonLdErrorCode
+</code>
+</a>
+represents
+the
+collection
+of
+valid
+JSON-LD
+error
+codes.
+</p>
+<del class="diff-old">Feature
+at
+Risk
+4
+:
+Lists
+of
+lists
+and
+partial
+list
+conversion
+from
+RDF
+Note:
+This
+feature
+is
+"at
+risk"
+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
+"at
+risk"
+in
+JSON-LD
+1.0
+The
+JSON-LD
+algorithms
+have
+been
+updated
+to
+support
+conversion
+of
+lists
+of
+lists
+to
+list
+objects
+by
+preserving
+the
+blank
+node
+head
+of
+the
+inner
+list.
+Lists
+of
+lists
+can,
+however,
+not
+be
+represented
+directly
+in
+JSON-LD
+using
+the
+@list
+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.
+       {
+</del>
+<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>"
+<del class="diff-old">};
+</del>
+<ins class="diff-chg">};</span>
+</ins>
+</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 href="#dfn-string" title="string" class="tref internalDFN">
+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 href="#dfn-string" title="string" class="tref internalDFN">
+string
+</a>.
+</td>
+</tr>
+<tr>
+<td>
+<code id="idl-def-JsonLdErrorCode.invalid-local-context">
+invalid
+local
+context
+</code>
+</td>
+<td>
+In
+invalid
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
+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 href="#bib-RFC5988" class="bibref">
+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 href="#dfn-base-iri" title="base-iri" class="tref internalDFN">
+base
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+has
+been
+detected,
+i.e.,
+it
+is
+neither
+an
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+nor
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>.
+</td>
+</tr>
+<tr>
+<td>
+<code id="idl-def-JsonLdErrorCode.invalid-vocab-mapping">
+invalid
+vocab
+mapping
+</code>
+</td>
+<td>
+An
+invalid
+<a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">
+vocabulary
+mapping
+</a>
+has
+been
+detected,
+i.e.,
+it
+is
+neither
+an
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+nor
+<a href="#dfn-null" title="null" class="tref internalDFN">
+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 href="#dfn-default-language" title="default-language" class="tref internalDFN">
+default
+language
+</a>
+is
+not
+a
+<a href="#dfn-string" title="string" class="tref internalDFN">
+string
+</a>
+or
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>
+and
+thus
+invalid.
+</td>
+</tr>
+<tr>
+<td>
+<code id="idl-def-JsonLdErrorCode.keyword-redefinition">
+keyword
+redefinition
+</code>
+</td>
+<td>
+A
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
+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 href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+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 href="#dfn-local-context" title="local-context" class="tref internalDFN">
+local
+context
+</a>
+contains
+a
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+that
+has
+an
+invalid
+or
+missing
+<a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN">
+<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 href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN">
+<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 href="#dfn-keyword" title="keyword" class="tref internalDFN">
+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 href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+was
+encountered
+whose
+value
+could
+not
+be
+expanded
+to
+an
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
+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 href="#dfn-term-definition" title="term-definition" class="tref internalDFN">
+term
+definition
+</a>
+was
+encountered
+whose
+value
+was
+neither
+a
+<a href="#dfn-string" title="string" class="tref internalDFN">
+string
+</a>
+nor
+<a href="#dfn-null" title="null" class="tref internalDFN">
+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 href="#dfn-keyword" title="keyword" class="tref internalDFN">
+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 href="#dfn-string" title="string" class="tref internalDFN">
+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 href="#dfn-string" title="string" class="tref internalDFN">
+string
+</a>
+nor
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>
+of
+<a href="#dfn-string" title="string" class="tref internalDFN">
+strings
+</a>.
+</td>
+</tr>
+<tr>
+<td>
+<code id="idl-def-JsonLdErrorCode.invalid-value-object">
+invalid
+value
+object
+</code>
+</td>
+<td>
+A
+<a href="#dfn-value-object" title="value-object" class="tref internalDFN">
+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 href="#dfn-value-object" title="value-object" class="tref internalDFN">
+value
+object
+</a>
+has
+been
+detected,
+i.e.,
+it
+is
+neither
+a
+<a href="#dfn-scalar" title="scalar" class="tref internalDFN">
+scalar
+</a>
+nor
+<a href="#dfn-null" title="null" class="tref internalDFN">
+null
+</a>.
+</td>
+</tr>
+<tr>
+<td>
+<code id="idl-def-JsonLdErrorCode.invalid-language-tagged-string">
+invalid
+language-tagged
+string
+</code>
+</td>
+<td>
+A
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-language-tagged-string" title="language-tagged-string" class="tref internalDFN">
+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 href="#dfn-number" title="number" class="tref internalDFN">
+number
+</a>,
+<a href="#dfn-true" title="true" class="tref internalDFN">
+true
+</a>,
+or
+<a href="#dfn-false" title="false" class="tref internalDFN">
+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 href="#dfn-typed-value" title="typed-value" class="tref internalDFN">
+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 href="#dfn-set-object" title="set-object" class="tref internalDFN">
+set
+object
+</a>
+or
+<a href="#dfn-list-object" title="list-object" class="tref internalDFN">
+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 href="../json-ld/#dfn-language-map" title="language-map" class="tref externalDFN">
+language
+map
+</a>
+has
+been
+detected.
+It
+has
+to
+be
+a
+<a href="#dfn-string" title="string" class="tref internalDFN">
+string
+</a>
+or
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
+array
+</a>
+of
+<a href="#dfn-string" title="string" class="tref internalDFN">
+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 href="#dfn-keyword" title="keyword" class="tref internalDFN">
+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 href="#dfn-json-object" title="json-object" class="tref internalDFN">
+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 href="#dfn-node-object" title="node-object" class="tref internalDFN">
+node
+object
+</a>.
+</td>
+</tr>
+</table>
+</section>
+</section>
+</section>
+<section id="acknowledgements" class="appendix informative">
+<h2 id="h2_acknowledgements" role="heading" aria-level="1">
+<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 rel="bibo:chapter" resource="#references" typeof="bibo:Chapter" class="appendix" id="references">
+<h2 id="h2_references" role="heading" aria-level="1">
+<span class="secno">
+B.
+</span>
+References
+</h2>
+<section rel="bibo:chapter" resource="#normative-references" typeof="bibo:Chapter" id="normative-references">
+<h3 id="h3_normative-references" role="heading" aria-level="2">
+<span class="secno">
+B.1
+</span>
+Normative
+references
+</h3>
+<del class="diff-old">[DOM-WHATWG]
+Anne
+van
+Kesteren,
+Aryeh
+Gregor,
+Ms2ger,
+Editors.
+DOM
+.
+September
+2013.
+WHATWG
+Living
+Standard
+(work
+in
+progress).
+URL:
+http://dom.spec.whatwg.org/
+</del>
+<dl about="" class="bibliography">
+<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://www.w3.org/TR/2013/CR-json-ld-20130910/">
+JSON-LD
+1.0
+</a>.
+</cite>
+W3C
+Candidate
+Recommendation
+(work
+in
+progress).
+URL:
+<a href="http://www.w3.org/TR/2013/CR-json-ld-20130910/">
+http://www.w3.org/TR/2013/CR-json-ld-20130910/
+</a>.
+The
+latest
+edition
+is
+available
+at
+<a href="http://www.w3.org/TR/json-ld/">
+http://www.w3.org/TR/json-ld/
+</a>
+</dd>
+<dt id="bib-PROMISES">
+<ins class="diff-new">[PROMISES]
+</ins></dt><dd rel="dcterms:requires"><ins class="diff-new">
+Domenic
+Denicola.
+</ins><cite>
+<a href="https://github.com/domenic/promises-unwrapping">
+<ins class="diff-new">Promise
+Objects
+</ins></a>.</cite><ins class="diff-new">
+October
+2013.
+(work
+in
+progress).
+URL:
+</ins><a href="http://www.w3.org/2013/10/json-ld-api/snapshot-promises-draft"><ins class="diff-new">
+http://www.w3.org/2013/10/json-ld-api/snapshot-promises-draft
+</ins></a>.<ins class="diff-new">
+The
+latest
+draft
+is
+available
+at
+</ins><a href="https://github.com/domenic/promises-unwrapping"><ins class="diff-new">
+https://github.com/domenic/promises-unwrapping
+</ins></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>
+<del class="diff-old">[WEBIDL]
+Cameron
+McCormack,
+Editor.
+</del>
+<del class="diff-old">Web
+IDL.
+19
+April
+2012.
+W3C
+Candidate
+Recommendation
+(work
+in
+progress).
+URL:
+http://www.w3.org/TR/2012/CR-WebIDL-20120419/
+.
+The
+latest
+edition
+is
+available
+at
+http://www.w3.org/TR/WebIDL/
+</del>
+</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 rel="bibo:chapter" resource="#informative-references" typeof="bibo:Chapter" id="informative-references">
+<h3 id="h3_informative-references" role="heading" aria-level="2">
+<span class="secno">
+B.2
+</span>
+Informative
+references
+</h3>
+<dl about="" class="bibliography">
+<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-20130723/">
+RDF
+1.1
+Concepts
+and
+Abstract
+Syntax.
+</a>
+</cite>
+23
+July
+2013.
+W3C
+Last
+Call
+Working
+Draft
+(work
+in
+progress).
+URL:
+<a href="http://www.w3.org/TR/2013/WD-rdf11-concepts-20130723/">
+http://www.w3.org/TR/2013/WD-rdf11-concepts-20130723/
+</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>
+<dt id="bib-WEBIDL">
+<ins class="diff-new">[WEBIDL]
+</ins></dt><dd rel="dcterms:references"><ins class="diff-new">
+Cameron
+McCormack,
+Editor.
+</ins><cite>
+<a href="http://www.w3.org/TR/2012/CR-WebIDL-20120419/">
+<ins class="diff-chg">Web
+IDL.
+</ins></a>
+</cite>
+<ins class="diff-chg">19
+April
+2012.
+W3C
+Candidate
+Recommendation
+(work
+in
+progress).
+URL:
+</ins><a href="http://www.w3.org/TR/2012/CR-WebIDL-20120419/"><ins class="diff-chg">
+http://www.w3.org/TR/2012/CR-WebIDL-20120419/
+</ins></a>.<ins class="diff-chg">
+The
+latest
+edition
+is
+available
+at
+</ins><a href="http://www.w3.org/TR/WebIDL/"><ins class="diff-chg">
+http://www.w3.org/TR/WebIDL/
+</ins></a>
+</dd>
+</dl>
+</section>
+</section>
+</body>
+</html>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spec/PR/json-ld-api/20131105/index.html	Tue Oct 22 18:58:43 2013 +0200
@@ -0,0 +1,4610 @@
+<!DOCTYPE html>
+<html lang="en" dir="ltr" typeof="bibo:Document w3p:PR" about="" property="dcterms:language" content="en">
+<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">
+  .highlight {
+    font-weight: bold;
+    color: #0a3;
+  }
+  .comment {
+    color: #999;
+  }
+  .error a {
+    color:  #ff4500;
+    border-bottom:  1px dotted #ff4500;
+    text-decoration: none;
+  }
+  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 href="https://www.w3.org/StyleSheets/TR/W3C-PR" rel="stylesheet"><!--[if lt IE 9]><script src='https://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]--></head>
+
+<body id="respecDocument" role="document" class="h-entry"><div id="respecHeader" role="contentinfo" class="head">
+  <p>
+
+      <a href="http://www.w3.org/"><img src="https://www.w3.org/Icons/w3c_home" alt="W3C" height="48" width="72"></a>
+
+  </p>
+  <h1 class="title p-name" id="title" property="dcterms:title">JSON-LD 1.0 Processing Algorithms and API</h1>
+
+  <h2 id="w3c-proposed-recommendation-05-november-2013" property="dcterms:issued" datatype="xsd:dateTime" content="2013-11-04T23:00:00.000Z"><abbr title="World Wide Web Consortium">W3C</abbr> Proposed Recommendation <time class="dt-published" datetime="2013-11-05">05 November 2013</time></h2>
+  <dl>
+
+      <dt>This version:</dt>
+      <dd><a class="u-url" href="http://www.w3.org/TR/2013/PR-json-ld-api-20131105/">http://www.w3.org/TR/2013/PR-json-ld-api-20131105/</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://dvcs.w3.org/hg/json-ld/raw-file/default/spec/latest/json-ld-api/index.html">http://dvcs.w3.org/hg/json-ld/raw-file/default/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 rel="dcterms:replaces" href="http://www.w3.org/TR/2013/CR-json-ld-api-20130910/">http://www.w3.org/TR/2013/CR-json-ld-api-20130910/</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="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="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="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 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="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-20130910.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 rel="bibo:chapter" resource="#abstract" typeof="bibo:Chapter" datatype="" property="dcterms:abstract" class="introductory" id="abstract"><h2 id="h2_abstract" role="heading" aria-level="1">Abstract</h2>
+  <p>This specification defines a set of algorithms for programmatic transformations
+    of JSON-LD documents. Restructuring data according to the defined transformations
+    often dramatically simplifies its usage. Furthermore, this document proposes
+    an Application Programming Interface (API) for developers implementing the
+    specified algorithms.</p>
+</section><section rel="bibo:chapter" resource="#sotd" typeof="bibo:Chapter" id="sotd" class="introductory"><h2 id="h2_sotd" role="heading" aria-level="1">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 31 months in the
+    JSON for Linking Data Community Group. The document has 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 31 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 href="#bib-JSON-LD-TESTS" class="bibref">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 two 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 href="#dfn-rdf-triple" title="rdf-triple" class="tref internalDFN">triples</a> containing a
+      <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank node</a> <a href="#dfn-rdf-predicate" title="rdf-predicate" class="tref internalDFN">predicate</a>, unless the
+      <i>produce generalized RDF</i> flag is set; discard <a href="#dfn-rdf-triple" title="rdf-triple" class="tref internalDFN">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 href="#bib-RFC6839" class="bibref">RFC6839</a></cite>]</li>
+    <li>Use the <a class="idlType" href="#idl-def-LoadDocumentCallback"><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>
+    <li>Clarify the usage of the
+      <code class="idlMemberName"><a href="#widl-JsonLdOptions-documentLoader">documentLoader</a></code> option.</li>
+  </ul>
+
+  <p>Changes since the
+    <a href="http://www.w3.org/TR/2013/CR-json-ld-api-20130910/">10&nbsp;September&nbsp;2013 Candidate Recommendation</a>:</p>
+
+  <ul>
+    <li>Fixed a bug that relabeled blank node identifiers used with reverse properties inconsistently when
+      creating a node map .</li>
+    <li>Made the API non-normative given that Promises are still not properly specified.</li>
+  </ul>
+
+        <p>
+          This document was published by the <a href="http://www.w3.org/2011/rdf-wg/">RDF Working Group</a> as a Proposed Recommendation.
+
+            This document is intended to become a <abbr title="World Wide Web Consortium">W3C</abbr> Recommendation.
+
+
+
+
+
+
+              The <abbr title="World Wide Web Consortium">W3C</abbr> Membership and other interested parties are invited
+              to review the document and send comments to
+              <a rel="discussion" 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>)
+              through 05 December 2013.
+              Advisory Committee Representatives should consult their
+              <a href="https://www.w3.org/2002/09/wbs/myQuestionnaires">WBS questionnaires</a>.
+              Note that substantive technical comments were expected during the Last Call review period that ended 06 June 2013.
+            </p>
+
+
+
+          <p>
+            Publication as a Proposed 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 id="h2_toc" role="heading" aria-level="1" class="introductory">Table of Contents</h2><ul id="respecContents" role="directory" class="toc"><li class="tocline"><a class="tocxref" href="#introduction"><span class="secno">1. </span>Introduction</a></li><li class="tocline"><a class="tocxref" href="#features"><span class="secno">2. </span>Features</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#expansion"><span class="secno">2.1 </span>Expansion</a></li><li class="tocline"><a class="tocxref" href="#compaction"><span class="secno">2.2 </span>Compaction</a></li><li class="tocline"><a class="tocxref" href="#flattening"><span class="secno">2.3 </span>Flattening</a></li><li class="tocline"><a class="tocxref" href="#rdf-serialization-deserialization"><span class="secno">2.4 </span>RDF Serialization/Deserialization</a></li></ul></li><li class="tocline"><a class="tocxref" href="#conformance"><span class="secno">3. </span>Conformance</a></li><li class="tocline"><a class="tocxref" href="#general-terminology"><span class="secno">4. </span>General Terminology</a></li><li class="tocline"><a class="tocxref" href="#algorithm-terms"><span class="secno">5. </span>Algorithm Terms</a></li><li class="tocline"><a class="tocxref" href="#context-processing-algorithms"><span class="secno">6. </span>Context Processing Algorithms</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#context-processing-algorithm"><span class="secno">6.1 </span>Context Processing Algorithm</a></li><li class="tocline"><a class="tocxref" href="#create-term-definition"><span class="secno">6.2 </span>Create Term Definition</a></li><li class="tocline"><a class="tocxref" href="#iri-expansion"><span class="secno">6.3 </span><abbr title="Internationalized Resource Identifier">IRI</abbr> Expansion</a></li></ul></li><li class="tocline"><a class="tocxref" href="#expansion-algorithms"><span class="secno">7. </span>Expansion Algorithms</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#expansion-algorithm"><span class="secno">7.1 </span>Expansion Algorithm</a></li><li class="tocline"><a class="tocxref" href="#value-expansion"><span class="secno">7.2 </span>Value Expansion</a></li></ul></li><li class="tocline"><a class="tocxref" href="#compaction-algorithms"><span class="secno">8. </span>Compaction Algorithms</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#compaction-algorithm"><span class="secno">8.1 </span>Compaction Algorithm</a></li><li class="tocline"><a class="tocxref" href="#inverse-context-creation"><span class="secno">8.2 </span>Inverse Context Creation</a></li><li class="tocline"><a class="tocxref" href="#iri-compaction"><span class="secno">8.3 </span><abbr title="Internationalized Resource Identifier">IRI</abbr> Compaction</a></li><li class="tocline"><a class="tocxref" href="#term-selection"><span class="secno">8.4 </span>Term Selection</a></li><li class="tocline"><a class="tocxref" href="#value-compaction"><span class="secno">8.5 </span>Value Compaction</a></li></ul></li><li class="tocline"><a class="tocxref" href="#flattening-algorithms"><span class="secno">9. </span>Flattening Algorithms</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#flattening-algorithm"><span class="secno">9.1 </span>Flattening Algorithm</a></li><li class="tocline"><a class="tocxref" href="#node-map-generation"><span class="secno">9.2 </span>Node Map Generation</a></li><li class="tocline"><a class="tocxref" href="#generate-blank-node-identifier"><span class="secno">9.3 </span>Generate Blank Node Identifier</a></li></ul></li><li class="tocline"><a class="tocxref" href="#rdf-serialization-deserialization-algorithms"><span class="secno">10. </span>RDF Serialization/Deserialization Algorithms</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#deserialize-json-ld-to-rdf-algorithm"><span class="secno">10.1 </span>Deserialize JSON-LD to RDF algorithm</a></li><li class="tocline"><a class="tocxref" href="#object-to-rdf-conversion"><span class="secno">10.2 </span>Object to RDF Conversion</a></li><li class="tocline"><a class="tocxref" href="#list-to-rdf-conversion"><span class="secno">10.3 </span>List to RDF Conversion</a></li><li class="tocline"><a class="tocxref" href="#serialize-rdf-as-json-ld-algorithm"><span class="secno">10.4 </span>Serialize RDF as JSON-LD Algorithm</a></li><li class="tocline"><a class="tocxref" href="#rdf-to-object-conversion"><span class="secno">10.5 </span>RDF to Object Conversion</a></li><li class="tocline"><a class="tocxref" href="#data-round-tripping"><span class="secno">10.6 </span>Data Round Tripping</a></li></ul></li><li class="tocline"><a class="tocxref" href="#the-application-programming-interface"><span class="secno">11. </span>The Application Programming Interface</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#the-jsonldprocessor-interface"><span class="secno">11.1 </span>The <span class="formerLink"><code>JsonLdProcessor</code></span> Interface</a></li><li class="tocline"><a class="tocxref" href="#the-jsonldoptions-type"><span class="secno">11.2 </span>The <span class="formerLink"><code>JsonLdOptions</code></span> Type</a></li><li class="tocline"><a class="tocxref" href="#remote-document-and-context-retrieval"><span class="secno">11.3 </span>Remote Document and Context Retrieval</a></li><li class="tocline"><a class="tocxref" href="#error-handling"><span class="secno">11.4 </span>Error Handling</a></li></ul></li><li class="tocline"><a class="tocxref" href="#acknowledgements"><span class="secno">A. </span>Acknowledgements</a></li><li class="tocline"><a class="tocxref" href="#references"><span class="secno">B. </span>References</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#normative-references"><span class="secno">B.1 </span>Normative references</a></li><li class="tocline"><a class="tocxref" href="#informative-references"><span class="secno">B.2 </span>Informative references</a></li></ul></li></ul></section>
+
+
+
+
+<section id="introduction" class="informative">
+  <!--OddPage--><h2 id="h2_introduction" role="heading" aria-level="1"><span class="secno">1. </span>Introduction</h2><p><em>This section is non-normative.</em></p>
+
+  <p>This document is a detailed specification of the JSON-LD processing algorithms.
+    The document is primarily intended for the following audiences:</p>
+
+  <ul>
+    <li>Software developers who want to implement the algorithms to transform
+      JSON-LD documents.</li>
+    <li>Web authors and developers who want a very detailed view of how
+      a <a href="#dfn-json-ld-processor" title="json-ld-processor" class="tref internalDFN">JSON-LD Processor</a> operates.</li>
+    <li>Developers who want an overview of the proposed JSON-LD API.</li>
+  </ul>
+
+  <p>To understand the basics in this specification you must first be familiar with
+    JSON, which is detailed in [<cite><a href="#bib-RFC4627" class="bibref">RFC4627</a></cite>]. You must also understand the
+    JSON-LD syntax defined in [<cite><a href="#bib-JSON-LD" class="bibref">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 href="#bib-ECMA-262" class="bibref">ECMA-262</a></cite>] and
+    WebIDL [<cite><a href="#bib-WEBIDL" class="bibref">WEBIDL</a></cite>]. To understand how JSON-LD maps to RDF, it is helpful to be
+    familiar with the basic RDF concepts [<cite><a href="#bib-RDF11-CONCEPTS" class="bibref">RDF11-CONCEPTS</a></cite>].</p>
+</section> <!-- end of Introduction -->
+
+
+<section id="features" class="informative">
+  <!--OddPage--><h2 id="h2_features" role="heading" aria-level="1"><span class="secno">2. </span>Features</h2><p><em>This section is non-normative.</em></p>
+
+  <p>The JSON-LD Syntax specification [<cite><a href="#bib-JSON-LD" class="bibref">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 href="#dfn-context" title="context" class="tref internalDFN">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 href="#dfn-context" title="context" class="tref internalDFN">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 href="#dfn-context" title="context" class="tref internalDFN">context</a> that is different
+    from their own, a JSON-LD processor must be able to transform a document
+    from one <a href="#dfn-context" title="context" class="tref internalDFN">context</a> to another. Instead of requiring JSON-LD
+    processors to write specific code for every imaginable
+    <a href="#dfn-context" title="context" class="tref internalDFN">context</a> switching scenario, it is much easier to specify a
+    single algorithm that can remove any <a href="#dfn-context" title="context" class="tref internalDFN">context</a>. Similarly,
+    another algorithm can be specified to subsequently apply any
+    <a href="#dfn-context" title="context" class="tref internalDFN">context</a>. These two algorithms represent the most basic
+    transformations of JSON-LD documents. They are referred to as
+    <a href="#dfn-expansion" title="expansion" class="tref internalDFN">expansion</a> and <a href="#dfn-compaction" title="compaction" class="tref internalDFN">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 id="expansion" class="informative">
+    <h3 id="h3_expansion" role="heading" aria-level="2"><span class="secno">2.1 </span>Expansion</h3><p><em>This section is non-normative.</em></p>
+
+    <p>The algorithm that removes <a href="#dfn-context" title="context" class="tref internalDFN">context</a> is
+      called <dfn id="dfn-expansion" title="expansion">expansion</dfn>. Before performing any other
+      transformations on a JSON-LD document, it is easiest to
+      remove any <a href="#dfn-context" title="context" class="tref internalDFN">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 href="#dfn-term" title="term" class="tref internalDFN">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 href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> to express a property
+    and an <a href="#dfn-array" title="array" class="tref internalDFN">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="highlight">"website": "http://xmlns.com/foaf/0.1/homepage"</span>
+  },
+  "@id": "http://me.markus-lanthaler.com/",
+  "<span class="highlight">http://xmlns.com/foaf/0.1/name</span>": "Markus Lanthaler",
+  <span class="highlight">"website"</span>: <span class="highlight">{ "@id":</span> "http://www.markus-lanthaler.com/" <span class="highlight">}</span>
+}</pre></div>
+
+    <p>Note that both inputs are valid JSON-LD and both represent the same
+      information. The difference is in their <a href="#dfn-context" title="context" class="tref internalDFN">context</a> information
+      and in the data structures used. A JSON-LD processor can remove
+      <a href="#dfn-context" title="context" class="tref internalDFN">context</a> and ensure that the data is more regular by employing
+      <a href="#dfn-expansion" title="expansion" class="tref internalDFN">expansion</a>.</p>
+
+    <p><a href="#dfn-expansion" title="expansion" class="tref internalDFN">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 href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute IRIs</a> and by expressing all
+      values in <a href="#dfn-array" title="array" class="tref internalDFN">arrays</a> in
+      <a href="#dfn-expanded-form" title="expanded-form" class="tref internalDFN">expanded form</a>. <a href="#dfn-expanded-form" title="expanded-form" class="tref internalDFN">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 href="#dfn-context" title="context" class="tref internalDFN">context</a> definitions have
+      been removed, all <a href="#dfn-term" title="term" class="tref internalDFN">terms</a> and
+      <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact IRIs</a> have been expanded to absolute
+      <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a>, and all
+      <a href="#dfn-json-ld-value" title="json-ld-value" class="tref internalDFN">JSON-LD values</a> are expressed in
+      <a href="#dfn-array" title="array" class="tref internalDFN">arrays</a> in <a href="#dfn-expanded-form" title="expanded-form" class="tref internalDFN">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 id="compaction" class="informative">
+    <h3 id="h3_compaction" role="heading" aria-level="2"><span class="secno">2.2 </span>Compaction</h3><p><em>This section is non-normative.</em></p>
+
+    <p>While <a href="#dfn-expansion" title="expansion" class="tref internalDFN">expansion</a> removes <a href="#dfn-context" title="context" class="tref internalDFN">context</a> from a given
+      input, <a href="#dfn-compaction" title="compaction" class="tref internalDFN">compaction's</a> primary function is to
+      perform the opposite operation: to express a given input according to
+      a particular <a href="#dfn-context" title="context" class="tref internalDFN">context</a>. <dfn id="dfn-compaction" title="compaction">Compaction</dfn> applies a
+      <a href="#dfn-context" title="context" class="tref internalDFN">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 href="#dfn-compaction" title="compaction" class="tref internalDFN">Compaction</a> uses a developer-supplied <a href="#dfn-context" title="context" class="tref internalDFN">context</a> to
+      shorten <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a> to <a href="#dfn-term" title="term" class="tref internalDFN">terms</a> or
+      <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact IRIs</a> and
+      <a href="#dfn-json-ld-value" title="json-ld-value" class="tref internalDFN">JSON-LD values</a> expressed in
+      <a href="#dfn-expanded-form" title="expanded-form" class="tref internalDFN">expanded form</a> to simple values such as <a href="#dfn-string" title="string" class="tref internalDFN">strings</a>
+      or <a href="#dfn-number" title="number" class="tref internalDFN">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 href="#dfn-context" title="context" class="tref internalDFN">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 href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a> have been compacted to
+      <a href="#dfn-term" title="term" class="tref internalDFN">terms</a> as specified in the <a href="#dfn-context" title="context" class="tref internalDFN">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 id="flattening" class="informative">
+    <h3 id="h3_flattening" role="heading" aria-level="2"><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 href="#dfn-node" title="node" class="tref internalDFN">node</a> may be spread across a number of different
+      <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON objects</a>. By flattening a
+      document, all properties of a <a href="#dfn-node" title="node" class="tref internalDFN">node</a> are collected in a single
+      <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> and all <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank nodes</a>
+      are labeled with a <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">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 href="#dfn-node" title="node" class="tref internalDFN">node</a> are collected in a
+      single <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> and how the <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank node</a> representing
+      "Dave Longley" has been assigned the <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> which contains an <code>@graph</code>
+      member that represents the <a href="#dfn-default-graph" title="default-graph" class="tref internalDFN">default graph</a>.</p>
+  </section> <!-- end of Flattening -->
+
+  <section id="rdf-serialization-deserialization" class="informative">
+    <h3 id="h3_rdf-serialization-deserialization" role="heading" aria-level="2"><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 href="#bib-RDF11-CONCEPTS" class="bibref">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 href="#bib-TURTLE" class="bibref">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 id="h2_conformance" role="heading" aria-level="1"><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 title="MUST" class="rfc2119">MUST</em>, <em title="MUST NOT" class="rfc2119">MUST NOT</em>, <em title="REQUIRED" class="rfc2119">REQUIRED</em>, <em title="SHOULD" class="rfc2119">SHOULD</em>, <em title="SHOULD NOT" class="rfc2119">SHOULD NOT</em>, <em title="RECOMMENDED" class="rfc2119">RECOMMENDED</em>,
+    <em title="MAY" class="rfc2119">MAY</em>, and <em title="OPTIONAL" class="rfc2119">OPTIONAL</em> in this specification are to be interpreted as described
+    in [<cite><a href="#bib-RFC2119" class="bibref">RFC2119</a></cite>].</p>
+
+  <p>There are two classes of products that can claim conformance to this
+    specification: <a href="#dfn-json-ld-processor" title="json-ld-processor" class="tref internalDFN">JSON-LD Processors</a>,
+    and <a href="#dfn-rdf-serializer/deserializer" title="rdf-serializer/deserializer" class="tref internalDFN">RDF Serializers/Deserializers</a>.</p>
+
+  <p>A conforming <dfn id="dfn-json-ld-processor" title="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 href="#dfn-json-ld-processor" title="json-ld-processor" class="tref internalDFN">JSON-LD Processors</a> <em title="MUST NOT" class="rfc2119">MUST NOT</em>
+    attempt to correct malformed <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a> or language tags;
+    however, they <em title="MAY" class="rfc2119">MAY</em> issue validation warnings. IRIs are not modified other
+    than conversion between <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative</a> and
+    <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute IRIs</a>.</p>
+
+  <p>A conforming <dfn id="dfn-rdf-serializer/deserializer" title="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 href="#dfn-json-ld-processor" title="json-ld-processor" class="tref internalDFN">JSON-LD Processors</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 id="h_note_1" role="heading" aria-level="2" class="note-title"><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 href="#bib-JSON-LD-TESTS" class="bibref">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 id="h2_general-terminology" role="heading" aria-level="1"><span class="secno">4. </span>General Terminology</h2>
+
+  <p>This document uses the following terms as defined in JSON [<cite><a href="#bib-RFC4627" class="bibref">RFC4627</a></cite>]. Refer
+    to the <em>JSON Grammar</em> section in [<cite><a href="#bib-RFC4627" class="bibref">RFC4627</a></cite>] for formal definitions.</p>
+
+  <dl>
+    <dt><dfn id="dfn-json-object" title="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 href="#dfn-string" title="string" class="tref internalDFN">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 id="dfn-array" title="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="../json-ld/#sets-and-lists">Sets and Lists</a></cite> in
+      the JSON-LD specification [<cite><a href="#bib-JSON-LD" class="bibref">JSON-LD</a></cite>]).</dd>
+    <dt><dfn id="dfn-string" title="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 id="dfn-number" title="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 id="dfn-true" title="true">true</dfn> and <dfn id="dfn-false" title="false">false</dfn></dt>
+    <dd>Values that are used to express one of two possible boolean states.</dd>
+    <dt><dfn id="dfn-null" title="null">null</dfn></dt>
+    <dd>The <a href="#dfn-null" title="null" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">null</a> in expanded form, then
+      the entire <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> is ignored.</dd>
+  </dl>
+
+  <p>Furthermore, the following terminology is used throughout this document:</p>
+
+  <dl>
+    <dt><dfn id="dfn-keyword" title="keyword">keyword</dfn></dt>
+    <dd>A JSON key that is specific to JSON-LD, specified in the section
+      <cite><a href="../json-ld/#syntax-tokens-and-keywords">Syntax Tokens and Keywords</a></cite>
+      of the JSON-LD specification [<cite><a href="#bib-JSON-LD" class="bibref">JSON-LD</a></cite>].</dd>
+    <dt><dfn id="dfn-context" title="context">context</dfn></dt>
+    <dd>A set of rules for interpreting a JSON-LD document as specified in the section
+      <cite><a href="../json-ld/#the-context">The Context</a></cite> of the JSON-LD
+      specification [<cite><a href="#bib-JSON-LD" class="bibref">JSON-LD</a></cite>].</dd>
+    <dt><dfn id="dfn-json-ld-document" title="json-ld-document">JSON-LD document</dfn></dt>
+    <dd>A <a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">JSON-LD document</a> is a serialization of a collection of
+      <a href="#dfn-graph" title="graph" class="tref internalDFN">graphs</a> and comprises exactly one
+      <a href="#dfn-default-graph" title="default-graph" class="tref internalDFN">default graph</a> and zero or more <a href="#dfn-named-graph" title="named-graph" class="tref internalDFN">named graphs</a>.</dd>
+    <dt><dfn id="dfn-named-graph" title="named-graph">named graph</dfn></dt>
+    <dd>A named graph is a pair consisting of an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank node</a>
+      (the <dfn id="dfn-graph-name" title="graph-name">graph name</dfn>) and a <a href="#dfn-graph" title="graph" class="tref internalDFN">graph</a>.</dd>
+    <dt><dfn id="dfn-default-graph" title="default-graph">default graph</dfn></dt>
+    <dd>The default graph is the only graph in a JSON-LD document which has no <a href="#dfn-graph-name" title="graph-name" class="tref internalDFN">graph name</a>.</dd>
+    <dt><dfn id="dfn-graph" title="graph">Graph</dfn></dt>
+    <dd>A labeled directed graph, i.e., a set of <a href="#dfn-node" title="node" class="tref internalDFN">nodes</a>
+      connected by <a href="#dfn-edge" title="edge" class="tref internalDFN">edges</a>,
+      as specified in the <cite><a href="../json-ld/#data-model">Data Model</a></cite>
+      section of the JSON-LD specification [<cite><a href="#bib-JSON-LD" class="bibref">JSON-LD</a></cite>].</dd>
+    <dt><dfn id="dfn-edge" title="edge">edge</dfn></dt>
+    <dd>Every <a href="#dfn-edge" title="edge" class="tref internalDFN">edge</a> has a direction associated with it and is labeled with
+      an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or a <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a>. Within the JSON-LD syntax
+      these edge labels are called <dfn id="dfn-property" title="property">properties</dfn>. Whenever possible, an
+      <a href="#dfn-edge" title="edge" class="tref internalDFN">edge</a> should be labeled with an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</dd>
+    <dt><dfn id="dfn-node" title="node">node</dfn></dt>
+    <dd>Every <a href="#dfn-node" title="node" class="tref internalDFN">node</a> is an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank node</a>,
+      a <a href="#dfn-json-ld-value" title="json-ld-value" class="tref internalDFN">JSON-LD value</a>, or a <a href="#dfn-list" title="list" class="tref internalDFN">list</a>.</dd>
+    <dt><dfn id="dfn-iri" title="iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></dfn></dt>
+    <dd>An <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> (Internationalized Resource Identifier) is a string that conforms to the syntax
+      defined in [<cite><a href="#bib-RFC3987" class="bibref">RFC3987</a></cite>].</dd>
+    <dt><dfn id="dfn-absolute-iri" title="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 href="#bib-RFC3987" class="bibref">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 id="dfn-relative-iri" title="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 href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</dd>
+    <dt><dfn id="dfn-blank-node" title="blank-node">blank node</dfn></dt>
+    <dd>A <a href="#dfn-node" title="node" class="tref internalDFN">node</a> in a <a href="#dfn-graph" title="graph" class="tref internalDFN">graph</a> that is neither an
+      <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>, nor a <a href="#dfn-json-ld-value" title="json-ld-value" class="tref internalDFN">JSON-LD value</a>, nor a <a href="#dfn-list" title="list" class="tref internalDFN">list</a>.</dd>
+    <dt><dfn id="dfn-blank-node-identifier" title="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 href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank node</a> within the scope of a JSON-LD document. Blank node identifiers
+      begin with <code>_:</code>.</dd>
+    <dt><dfn id="dfn-json-ld-value" title="json-ld-value">JSON-LD value</dfn></dt>
+    <dd>A <a href="#dfn-json-ld-value" title="json-ld-value" class="tref internalDFN">JSON-LD value</a> is a <a href="#dfn-string" title="string" class="tref internalDFN">string</a>, a <a href="#dfn-number" title="number" class="tref internalDFN">number</a>,
+      <a href="#dfn-true" title="true" class="tref internalDFN">true</a> or <a href="#dfn-false" title="false" class="tref internalDFN">false</a>, a <a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">typed value</a>, or a
+      <a href="#dfn-language-tagged-string" title="language-tagged-string" class="tref internalDFN">language-tagged string</a>.</dd>
+    <dt><dfn id="dfn-typed-value" title="typed-value">typed value</dfn></dt>
+    <dd>A <a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">typed value</a> consists of a value, which is a string, and a type,
+      which is an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</dd>
+    <dt><dfn id="dfn-language-tagged-string" title="language-tagged-string">language-tagged string</dfn></dt>
+    <dd>A <a href="#dfn-language-tagged-string" title="language-tagged-string" class="tref internalDFN">language-tagged string</a> consists of a string and a non-empty language
+      tag as defined by [<cite><a href="#bib-BCP47" class="bibref">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 href="#bib-BCP47" class="bibref">BCP47</a></cite>], and is normalized to lowercase.</dd>
+    <dt><dfn id="dfn-list" title="list">list</dfn></dt>
+    <dd>A <a href="#dfn-list" title="list" class="tref internalDFN">list</a> is an ordered sequence of <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a>,
+      <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank nodes</a>, and
+      <a href="#dfn-json-ld-value" title="json-ld-value" class="tref internalDFN">JSON-LD values</a>.</dd>
+  </dl>
+</section> <!-- end of General Terminology section -->
+
+
+<section id="algorithm-terms">
+  <!--OddPage--><h2 id="h2_algorithm-terms" role="heading" aria-level="1"><span class="secno">5. </span>Algorithm Terms</h2>
+
+  <dl>
+    <dt><dfn id="dfn-active-graph" title="active-graph">active graph</dfn></dt>
+    <dd>The name of the currently active graph that the processor should use when
+      processing.</dd>
+    <dt><dfn id="dfn-active-subject" title="active-subject">active subject</dfn></dt>
+    <dd>The currently active subject that the processor should use when
+      processing.</dd>
+    <dt><dfn id="dfn-active-property" title="active-property">active property</dfn></dt>
+    <dd>The currently active <a href="#dfn-property" title="property" class="tref internalDFN">property</a> or <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a> that
+      the processor should use when processing.</dd>
+    <dt><dfn id="dfn-active-context" title="active-context">active context</dfn></dt>
+    <dd>A context that is used to resolve <a href="#dfn-term" title="term" class="tref internalDFN">terms</a> while
+      the processing algorithm is running.</dd>
+    <dt><dfn id="dfn-local-context" title="local-context">local context</dfn></dt>
+    <dd>A context that is specified within a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a>,
+      specified via the <code>@context</code> <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>.</dd>
+    <dt><dfn id="dfn-json-ld-input" title="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 id="dfn-term" title="term">term</dfn></dt>
+    <dd>A <a href="#dfn-term" title="term" class="tref internalDFN">term</a> is a short word defined in a context that may be expanded to
+      an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a></dd>
+    <dt><dfn id="dfn-compact-iri" title="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 id="dfn-prefix" title="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 href="#dfn-term" title="term" class="tref internalDFN">term</a> definitions for
+      each <abbr title="Internationalized Resource Identifier">IRI</abbr> contained within a common vocabulary identified by <a href="#dfn-prefix" title="prefix" class="tref internalDFN">prefix</a>.</dd>
+    <dt><dfn id="dfn-node-object" title="node-object">node object</dfn></dt>
+    <dd>A <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> represents zero or more properties of a
+      <a href="#dfn-node" title="node" class="tref internalDFN">node</a> in the <a href="#dfn-graph" title="graph" class="tref internalDFN">graph</a> serialized by the
+      JSON-LD document. A <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> is a <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a>
+      if it exists outside of the JSON-LD <a href="#dfn-context" title="context" class="tref internalDFN">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">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 id="dfn-value-object" title="value-object">value object</dfn></dt>
+    <dd>A <a href="#dfn-value-object" title="value-object" class="tref internalDFN">value object</a> is a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> that has an <code>@value</code>
+      member.</dd>
+    <dt><dfn id="dfn-list-object" title="list-object">list object</dfn></dt>
+    <dd>A <a href="#dfn-list-object" title="list-object" class="tref internalDFN">list object</a> is a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> that has an <code>@list</code>
+      member.</dd>
+    <dt><dfn id="dfn-set-object" title="set-object">set object</dfn></dt>
+    <dd>A <a href="#dfn-set-object" title="set-object" class="tref internalDFN">set object</a> is a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> that has an <code>@set</code>
+      member.</dd>
+    <dt><dfn id="dfn-scalar" title="scalar">scalar</dfn></dt>
+    <dd>A scalar is either a JSON <a href="#dfn-string" title="string" class="tref internalDFN">string</a>, <a href="#dfn-number" title="number" class="tref internalDFN">number</a>, <a href="#dfn-true" title="true" class="tref internalDFN">true</a>,
+      or <a href="#dfn-false" title="false" class="tref internalDFN">false</a>.</dd>
+    <dt><dfn id="dfn-rdf-subject" title="rdf-subject">RDF subject</dfn></dt>
+    <dd>A <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-subject" title="subject" class="tref externalDFN">subject</a>
+      as specified by [<cite><a href="#bib-RDF11-CONCEPTS" class="bibref">RDF11-CONCEPTS</a></cite>].</dd>
+    <dt><dfn id="dfn-rdf-predicate" title="rdf-predicate">RDF predicate</dfn></dt>
+    <dd>A <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-predicate" title="predicate" class="tref externalDFN">predicate</a>
+      as specified by [<cite><a href="#bib-RDF11-CONCEPTS" class="bibref">RDF11-CONCEPTS</a></cite>].</dd>
+    <dt><dfn id="dfn-rdf-object" title="rdf-object">RDF object</dfn></dt>
+    <dd>An <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-object" title="object" class="tref externalDFN">object</a>
+      as specified by [<cite><a href="#bib-RDF11-CONCEPTS" class="bibref">RDF11-CONCEPTS</a></cite>].</dd>
+    <dt><dfn id="dfn-rdf-triple" title="rdf-triple">RDF triple</dfn></dt>
+    <dd>A <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple" title="triple" class="tref externalDFN">triple</a>
+      as specified by [<cite><a href="#bib-RDF11-CONCEPTS" class="bibref">RDF11-CONCEPTS</a></cite>].</dd>
+    <dt><dfn id="dfn-rdf-dataset" title="rdf-dataset">RDF dataset</dfn></dt>
+    <dd>A <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-dataset" title="dataset" class="tref externalDFN">dataset</a>
+      as specified by [<cite><a href="#bib-RDF11-CONCEPTS" class="bibref">RDF11-CONCEPTS</a></cite>] representing a collection of
+      <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-graph" title="rdf-graphs" class="tref externalDFN">RDF graphs</a>.</dd>
+  </dl>
+</section> <!-- end of Algorithm Terms section -->
+
+
+<section id="context-processing-algorithms">
+  <!--OddPage--><h2 id="h2_context-processing-algorithms" role="heading" aria-level="1"><span class="secno">6. </span>Context Processing Algorithms</h2>
+
+  <section id="context-processing-algorithm">
+    <h3 id="h3_context-processing-algorithm" role="heading" aria-level="2"><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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>. This
+      section describes how to produce an <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>.</p>
+
+    <p>The <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> contains the active
+      <dfn id="dfn-term-definition" title="term-definition">term definitions</dfn> which specify how
+      properties and values have to be interpreted as well as the current <dfn id="dfn-base-iri" title="base-iri">base <abbr title="Internationalized Resource Identifier">IRI</abbr></dfn>,
+      the <dfn id="dfn-vocabulary-mapping" title="vocabulary-mapping">vocabulary mapping</dfn> and the <dfn id="dfn-default-language" title="default-language">default language</dfn>. Each
+      <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> consists of an <dfn id="dfn-iri-mapping" title="iri-mapping"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</dfn>, a boolean
+      flag <dfn id="dfn-reverse-property" title="reverse-property">reverse property</dfn>, an optional <dfn id="dfn-type-mapping" title="type-mapping">type mapping</dfn>
+      or <dfn id="dfn-language-mapping" title="language-mapping">language mapping</dfn>, and an optional  <dfn id="dfn-container-mapping" title="container-mapping">container mapping</dfn>.
+      A <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> can not only be used to map a <a href="#dfn-term" title="term" class="tref internalDFN">term</a>
+      to an <abbr title="Internationalized Resource Identifier">IRI</abbr>, but also to map a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> to a <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>,
+      in which case it is referred to as a <dfn id="dfn-keyword-alias" title="keyword-alias">keyword alias</dfn>.</p>
+
+    <p>When processing, the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> is initialized
+      without any <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definitions</a>,
+      <a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">vocabulary mapping</a>, or <a href="#dfn-default-language" title="default-language" class="tref internalDFN">default language</a>.
+      If a <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a> is encountered during processing, a new
+      <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> is created by cloning the existing
+      <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>. Then the information from the
+      <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a> is merged into the new <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>.
+      Given that <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local contexts</a> may contain
+      references to remote contexts, this includes their retrieval.</p>
+
+    <section class="informative">
+      <h4 role="heading" aria-level="3" id="overview">Overview</h4><p><em>This section is non-normative.</em></p>
+
+      <p>First we prepare a new <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> <i>result</i> by cloning
+        the current <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>. Then we normalize the form of the passed
+        <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a> to an <a href="#dfn-array" title="array" class="tref internalDFN">array</a>.
+        <a href="#dfn-local-context" title="local-context" class="tref internalDFN">Local contexts</a> may be in the form of a
+        <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a>, a <a href="#dfn-string" title="string" class="tref internalDFN">string</a>, or an <a href="#dfn-array" title="array" class="tref internalDFN">array</a> containing
+        a combination of the two. Finally we process each <a href="#dfn-context" title="context" class="tref internalDFN">context</a> contained
+        in the <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a> <a href="#dfn-array" title="array" class="tref internalDFN">array</a> as follows.</p>
+
+      <p>If <a href="#dfn-context" title="context" class="tref internalDFN">context</a> is a <a href="#dfn-string" title="string" class="tref internalDFN">string</a>, it represents a reference to
+        a remote context. We dereference the remote context and replace <a href="#dfn-context" title="context" class="tref internalDFN">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 href="#dfn-context" title="context" class="tref internalDFN">context</a> by recursively using
+        this algorithm ensuring that there is no cyclical reference.</p>
+
+      <p>If <a href="#dfn-context" title="context" class="tref internalDFN">context</a> is a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a>, we first update the
+        <a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">base <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, the <a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">vocabulary mapping</a>, and the
+        <a href="#dfn-default-language" title="default-language" class="tref internalDFN">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 href="#dfn-local-context" title="local-context" class="tref internalDFN">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 href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a>, we update
+        the <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> in <i>result</i>. Since
+        <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definitions</a> in a <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a>
+        may themselves contain <a href="#dfn-term" title="term" class="tref internalDFN">terms</a> or
+        <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">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 href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> dependencies,
+        we update the current <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a>,
+        which may be a <a href="#dfn-keyword-alias" title="keyword-alias" class="tref internalDFN">keyword alias</a>.</p>
+
+      <p>Finally, we return <i>result</i> as the new <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>.</p>
+    </section>
+
+    <section>
+      <h4 role="heading" aria-level="3" id="algorithm">Algorithm</h4>
+
+      <p>This algorithm specifies how a new <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> is updated
+        with a <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a>. The algorithm takes three input variables:
+        an <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, a <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a>, and an  <a href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">array</a>.</p>
+
+      <ol class="algorithm">
+        <li>Initialize <i>result</i> to the result of cloning
+          <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>.</li>
+        <li>If <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a> is not an <a href="#dfn-array" title="array" class="tref internalDFN">array</a>,
+          set it to an <a href="#dfn-array" title="array" class="tref internalDFN">array</a> containing only
+          <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a>.</li>
+        <li>
+          For each item <i>context</i> in <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a>:
+          <ol class="algorithm">
+            <li>If <i>context</i> is <a href="#dfn-null" title="null" class="tref internalDFN">null</a>, set <i>result</i> to a
+              newly-initialized <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> and continue with the
+              next <i>context</i>. The <a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">base <abbr title="Internationalized Resource Identifier">IRI</abbr></a> of the
+              <a href="#dfn-active-context" title="active-context" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">null</a>. If set, the
+              <code class="idlMemberName"><a href="#widl-JsonLdOptions-base">base</a></code>
+              option of a JSON-LD API Implementation overrides the <a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">base <abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</li>
+            <li>If <i>context</i> is a <a href="#dfn-string" title="string" class="tref internalDFN">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 href="#bib-RFC3986" class="bibref">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 href="#bib-RFC3986" class="bibref">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 href="#bib-RFC3987" class="bibref">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>,
+                  <i>context</i> for <a href="#dfn-local-context" title="local-context" class="tref internalDFN">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">null</a>, remove the
+                  <a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">base <abbr title="Internationalized Resource Identifier">IRI</abbr></a> of <i>result</i>.</li>
+                <li>Otherwise, if <i>value</i> is an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
+                  the <a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">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 href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a> and
+                  the <a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">base <abbr title="Internationalized Resource Identifier">IRI</abbr></a> of <i>result</i> is not <a href="#dfn-null" title="null" class="tref internalDFN">null</a>,
+                  set the <a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">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 href="#dfn-base-iri" title="base-iri" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">null</a>, remove
+                  any <a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">vocabulary mapping</a> from <i>result</i>.</li>
+                <li>Otherwise, if <i>value</i> is an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
+                  or <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a>, the <a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">vocabulary mapping</a>
+                  of <i>result</i> is set to <i>value</i>. If it is not an
+                  <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> or <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">null</a>, remove
+                  any <a href="#dfn-default-language" title="default-language" class="tref internalDFN">default language</a> from <i>result</i>.</li>
+                <li>Otherwise, if <i>value</i> is <a href="#dfn-string" title="string" class="tref internalDFN">string</a>, the
+                  <a href="#dfn-default-language" title="default-language" class="tref internalDFN">default language</a> of <i>result</i> is set to
+                  lowercased <i>value</i>. If it is not a <a href="#dfn-string" title="string" class="tref internalDFN">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> <i>defined</i> to use to keep
+              track of whether or not a <a href="#dfn-term" title="term" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>,
+              <i>context</i> for <a href="#dfn-local-context" title="local-context" class="tref internalDFN">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 id="h3_create-term-definition" role="heading" aria-level="2"><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 href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> in the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>
+      for a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> being processed in a <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a>.</p>
+
+    <section class="informative">
+      <h4 role="heading" aria-level="3" id="overview-1">Overview</h4><p><em>This section is non-normative.</em></p>
+
+      <p><a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">Term definitions</a> are created by
+        parsing the information in the given <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a> for the
+        given <a href="#dfn-term" title="term" class="tref internalDFN">term</a>. If the given <a href="#dfn-term" title="term" class="tref internalDFN">term</a> is a
+        <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, it may omit an <a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a> by
+        depending on its <a href="#dfn-prefix" title="prefix" class="tref internalDFN">prefix</a> having its own
+        <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a>. If the <a href="#dfn-prefix" title="prefix" class="tref internalDFN">prefix</a> is
+        a key in the <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a>, then its <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a>
+        must first be created, through recursion, before continuing. Because a
+        <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> can depend on other
+        <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">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 href="#dfn-term" title="term" class="tref internalDFN">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 href="#dfn-term" title="term" class="tref internalDFN">term</a> have been defined, the rest of
+        the information in the <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a> for the given
+        <a href="#dfn-term" title="term" class="tref internalDFN">term</a> is taken into account, creating the appropriate
+        <a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a>, <a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">container mapping</a>, and
+        <a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mapping</a> or <a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">language mapping</a> for the
+        <a href="#dfn-term" title="term" class="tref internalDFN">term</a>.</p>
+    </section>
+
+    <section>
+      <h4 role="heading" aria-level="3" id="algorithm-1">Algorithm</h4>
+
+      <p>The algorithm has four required inputs which are:
+        an <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, a <a href="#dfn-local-context" title="local-context" class="tref internalDFN">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 href="#dfn-true" title="true" class="tref internalDFN">true</a> (indicating that the
+          <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> has already been created), return. Otherwise,
+          if the value is <a href="#dfn-false" title="false" class="tref internalDFN">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 href="#dfn-false" title="false" class="tref internalDFN">false</a>. This indicates that the <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a>
+          is now being created but is not yet complete.</li>
+        <li>Since <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keywords</a> cannot be overridden,
+          <i>term</i> must not be a <a href="#dfn-keyword" title="keyword" class="tref internalDFN">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 href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> for <i>term</i> in
+          <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>.</li>
+        <li>Initialize <i>value</i> to a copy of the value associated with the key
+          <i>term</i> in <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a>.</li>
+        <li>If <i>value</i> is <a href="#dfn-null" title="null" class="tref internalDFN">null</a> or <i>value</i>
+          is a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> containing the key-value pair
+          <code>@id</code>-<a href="#dfn-null" title="null" class="tref internalDFN">null</a>, set the
+          <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> in <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> to
+          <a href="#dfn-null" title="null" class="tref internalDFN">null</a>, set the value associated with <i>defined</i>'s
+          key <i>term</i> to <a href="#dfn-true" title="true" class="tref internalDFN">true</a>, and return.</li>
+        <li>Otherwise, if <i>value</i> is a <a href="#dfn-string" title="string" class="tref internalDFN">string</a>, convert it
+          to a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-term-definition" title="term-definition" class="tref internalDFN">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 href="#dfn-string" title="string" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, <i>type</i> for <i>value</i>,
+              <a href="#dfn-true" title="true" class="tref internalDFN">true</a> for <i>vocab</i>,
+              <a href="#dfn-false" title="false" class="tref internalDFN">false</a> for <i>document relative</i>,
+              <a href="#dfn-local-context" title="local-context" class="tref internalDFN">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 href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">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 href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">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 href="#dfn-string" title="string" class="tref internalDFN">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 href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN"><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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, the value associated with
+              the <code>@reverse</code> key for <i>value</i>, <a href="#dfn-true" title="true" class="tref internalDFN">true</a>
+              for <i>vocab</i>, <a href="#dfn-false" title="false" class="tref internalDFN">false</a> for <i>document relative</i>,
+              <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a>, and <i>defined</i>. If the result
+              is neither an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> nor a <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</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 href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">container mapping</a> of <i>definition</i>
+              to its value; if its value is neither <code>@set</code>, nor
+              <code>@index</code>, nor <a href="#dfn-null" title="null" class="tref internalDFN">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 href="#dfn-reverse-property" title="reverse-property" class="tref internalDFN">reverse property</a> flag of <i>definition</i>
+              to <a href="#dfn-true" title="true" class="tref internalDFN">true</a>.</li>
+            <li>Set the <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> of <i>term</i> in
+              <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> to <i>definition</i> and the
+              value associated with <i>defined</i>'s key <i>term</i> to
+              <a href="#dfn-true" title="true" class="tref internalDFN">true</a> and return.</li>
+          </ol>
+        </li>
+        <li>Set the <a href="#dfn-reverse-property" title="reverse-property" class="tref internalDFN">reverse property</a> flag of <i>definition</i>
+          to <a href="#dfn-false" title="false" class="tref internalDFN">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 href="#dfn-string" title="string" class="tref internalDFN">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 href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN"><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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, the value associated with the <code>@id</code> key for
+              <i>value</i>, <a href="#dfn-true" title="true" class="tref internalDFN">true</a> for <i>vocab</i>,
+              <a href="#dfn-false" title="false" class="tref internalDFN">false</a> for <i>document relative</i>,
+              <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a>, and <i>defined</i>. If the resulting
+              <a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a> is neither a <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>, nor an
+              <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, nor a <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</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; if it 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 href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> with a
+              <a href="#dfn-prefix" title="prefix" class="tref internalDFN">prefix</a> that is a key in <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a>
+              a dependency has been found. Use this algorithm recursively passing
+              <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a>, the
+              <a href="#dfn-prefix" title="prefix" class="tref internalDFN">prefix</a> as <i>term</i>, and <i>defined</i>.</li>
+            <li>If <i>term</i>'s <a href="#dfn-prefix" title="prefix" class="tref internalDFN">prefix</a> has a
+              <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> in <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, set
+              the <a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a> of <i>definition</i> to the result of
+              concatenating the value associated with the <a href="#dfn-prefix" title="prefix" class="tref internalDFN">prefix</a>'s
+              <a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN"><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 href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> or
+              <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a>. Set the <a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a>
+              of <i>definition</i> to <i>term</i>.</li>
+          </ol>
+        </li>
+        <li>Otherwise, if <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> has a
+          <a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">vocabulary mapping</a>, the <a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN"><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 href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">vocabulary mapping</a> and <i>term</i>.
+          If it does not have a <a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">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 href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">null</a>
+              or a <a href="#dfn-string" title="string" class="tref internalDFN">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 href="#dfn-string" title="string" class="tref internalDFN">string</a> set it to
+              lowercased <i>language</i>. Set the <a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">language mapping</a>
+              of <i>definition</i> to <i>language</i>.</li>
+          </ol>
+        </li>
+        <li>Set the <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> of <i>term</i> in
+          <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> to <i>definition</i> and set the value
+          associated with <i>defined</i>'s key <i>term</i> to
+          <a href="#dfn-true" title="true" class="tref internalDFN">true</a>.</li>
+      </ol>
+    </section>
+  </section> <!-- end of Term Creation -->
+
+  <section id="iri-expansion">
+    <h3 id="h3_iri-expansion" role="heading" aria-level="2"><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 href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a>. This section defines an algorithm for
+      transforming a <a href="#dfn-string" title="string" class="tref internalDFN">string</a> that represents an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> into
+      an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> or <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a>.
+      It also covers transforming <a href="#dfn-keyword-alias" title="keyword-alias" class="tref internalDFN">keyword aliases</a>
+      into <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keywords</a>.</p>
+
+    <p><a href="#dfn-iri" title="iri" class="tref internalDFN"><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 href="#dfn-local-context" title="local-context" class="tref internalDFN">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 href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a>
+      dependencies to be processed via the
+      <a href="#create-term-definition">Create Term Definition algorithm</a>.</p>
+
+    <section class="informative">
+      <h4 role="heading" aria-level="3" 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 href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, we must
+        first determine if it is <a href="#dfn-null" title="null" class="tref internalDFN">null</a>, a <a href="#dfn-term" title="term" class="tref internalDFN">term</a>, a
+        <a href="#dfn-keyword-alias" title="keyword-alias" class="tref internalDFN">keyword alias</a>, or some form of <a href="#dfn-iri" title="iri" class="tref internalDFN"><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 href="#dfn-keyword-alias" title="keyword-alias" class="tref internalDFN">keyword alias</a> to a <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a> and a <a href="#dfn-term" title="term" class="tref internalDFN">term</a>
+        to an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> according to its <a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a>
+        in the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>. While inspecting <i>value</i> we
+        may also find that we need to create <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">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 href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a> against <a href="#dfn-null" title="null" class="tref internalDFN">null</a>.
+        We know we need to create a <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> in the
+        <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> when <i>value</i> is
+        a key in the <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a> and the <i>defined</i> map
+        does not have a key for <i>value</i> with an associated value of
+        <a href="#dfn-true" title="true" class="tref internalDFN">true</a>. The <i>defined</i> map is used during
+        <a href="#context-processing-algorithm">Context Processing</a> to keep track of
+        which <a href="#dfn-term" title="term" class="tref internalDFN">terms</a> have already been defined or are
+        in the process of being defined. We create a
+        <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> by using the
+        <a href="#create-term-definition">Create Term Definition algorithm</a>.</p>
+    </section>
+
+    <section>
+      <h4 role="heading" aria-level="3" id="algorithm-2">Algorithm</h4>
+
+      <p>The algorithm takes two required and four optional input variables. The
+        required inputs are an <a href="#dfn-active-context" title="active-context" class="tref internalDFN">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 href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
+        against the document's base <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or the
+        <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context's</a>
+        <a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">vocabulary mapping</a>, respectively, and
+        a <a href="#dfn-local-context" title="local-context" class="tref internalDFN">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 href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a> and <i>defined</i> are initialized to <a href="#dfn-null" title="null" class="tref internalDFN">null</a>.</p>
+
+      <ol class="algorithm">
+        <li>If <i>value</i> is a <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a> or <a href="#dfn-null" title="null" class="tref internalDFN">null</a>,
+          return <i>value</i> as is.</li>
+        <li>If <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a> is not <a href="#dfn-null" title="null" class="tref internalDFN">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 href="#dfn-true" title="true" class="tref internalDFN">true</a>,
+          invoke the <a href="#create-term-definition">Create Term Definition algorithm</a>,
+          passing <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a>,
+          <i>value</i> as <i>term</i>, and <i>defined</i>. This will ensure that
+          a <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> is created for <i>value</i> in
+          <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> during <a href="#context-processing-algorithm">Context Processing</a>.
+        </li>
+        <li>If <i>vocab</i> is <a href="#dfn-true" title="true" class="tref internalDFN">true</a> and the
+          <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> has a <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> for
+          <i>value</i>, return the associated <a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN"><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 href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, or a
+          <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a>:
+          <ol class="algorithm">
+            <li>Split <i>value</i> into a <a href="#dfn-prefix" title="prefix" class="tref internalDFN">prefix</a> and <i>suffix</i>
+              at the first occurrence of a colon (<code>:</code>).</li>
+            <li>If <a href="#dfn-prefix" title="prefix" class="tref internalDFN">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 href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> or a <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a>.</li>
+            <li>If <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a> is not <a href="#dfn-null" title="null" class="tref internalDFN">null</a>, it
+              contains a key that equals <a href="#dfn-prefix" title="prefix" class="tref internalDFN">prefix</a>, and the value
+              associated with the key that equals <i>prefix</i> in <i>defined</i>
+              is not <a href="#dfn-true" title="true" class="tref internalDFN">true</a>, invoke the
+              <a href="#create-term-definition">Create Term Definition algorithm</a>,
+              passing <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>,
+              <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a>, <i>prefix</i> as <i>term</i>,
+              and <i>defined</i>. This will ensure that a
+              <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> is created for <a href="#dfn-prefix" title="prefix" class="tref internalDFN">prefix</a>
+              in <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> during
+              <a href="#context-processing-algorithm">Context Processing</a>.</li>
+            <li>If <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> contains a <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a>
+              for <a href="#dfn-prefix" title="prefix" class="tref internalDFN">prefix</a>, return the result of concatenating
+              the <a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a> associated with <a href="#dfn-prefix" title="prefix" class="tref internalDFN">prefix</a> and
+              <i>suffix</i>.</li>
+            <li>Return <i>value</i> as it is already an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</li>
+          </ol>
+        </li>
+        <li>If <i>vocab</i> is <a href="#dfn-true" title="true" class="tref internalDFN">true</a>, and
+          <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> has a <a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">vocabulary mapping</a>,
+          return the result of concatenating the <a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">vocabulary mapping</a>
+          with <i>value</i>.</li>
+        <li>Otherwise, if <i>document relative</i> is <a href="#dfn-true" title="true" class="tref internalDFN">true</a>,
+          set <i>value</i> to the result of resolving <i>value</i> against
+          the <a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">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 href="#bib-RFC3986" class="bibref">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 href="#bib-RFC3987" class="bibref">RFC3987</a></cite>].</li>
+        <li>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 id="h2_expansion-algorithms" role="heading" aria-level="1"><span class="secno">7. </span>Expansion Algorithms</h2>
+
+  <section id="expansion-algorithm">
+    <h3 id="h3_expansion-algorithm" role="heading" aria-level="2"><span class="secno">7.1 </span>Expansion Algorithm</h3>
+
+    <p>This algorithm expands a JSON-LD document, such that all <a href="#dfn-context" title="context" class="tref internalDFN">context</a>
+      definitions are removed, all <a href="#dfn-term" title="term" class="tref internalDFN">terms</a> and
+      <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact IRIs</a> are expanded to
+      <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute IRIs</a>,
+      <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifiers</a>, or
+      <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keywords</a> and all
+      <a href="#dfn-json-ld-value" title="json-ld-value" class="tref internalDFN">JSON-LD values</a> are expressed in
+      <a href="#dfn-array" title="array" class="tref internalDFN">arrays</a> in <a href="#dfn-expanded-form" title="expanded-form" class="tref internalDFN">expanded form</a>.</p>
+
+    <section class="informative">
+      <h4 role="heading" aria-level="3" 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 href="#dfn-expansion" title="expansion" class="tref internalDFN">expanded</a> <i>result</i>. When
+        <a href="#dfn-expansion" title="expansion" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">null</a>, there is nothing
+          to expand.</li>
+        <li>Otherwise, if <i>element</i> is a <a href="#dfn-scalar" title="scalar" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">array</a>, then we expand
+          each of its items recursively and return them in a new
+          <a href="#dfn-array" title="array" class="tref internalDFN">array</a>.</li>
+        <li>Otherwise, <i>element</i> is a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-term" title="term" class="tref internalDFN">terms</a> or
+          <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact IRIs</a> and others will be
+          <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keywords</a> or simply ignored because
+          they do not have definitions in the <a href="#dfn-context" title="context" class="tref internalDFN">context</a>. Any
+          <a href="#dfn-iri" title="iri" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">array</a>,
+        we return <i>result</i>.</p>
+    </section>
+
+    <section>
+      <h4 role="heading" aria-level="3" id="algorithm-3">Algorithm</h4>
+
+      <p>The algorithm takes three input variables: an <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>,
+        an <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a>, and an <i>element</i> to be expanded.
+        To begin, the <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a> is set to <a href="#dfn-null" title="null" class="tref internalDFN">null</a>,
+        and <i>element</i> is set to the <a href="#dfn-json-ld-input" title="json-ld-input" class="tref internalDFN">JSON-LD input</a>.</p>
+
+      <ol class="algorithm">
+        <li>If <i>element</i> is <a href="#dfn-null" title="null" class="tref internalDFN">null</a>, return <a href="#dfn-null" title="null" class="tref internalDFN">null</a>.</li>
+        <li>If <i>element</i> is a <a href="#dfn-scalar" title="scalar" class="tref internalDFN">scalar</a>,
+          <ol class="algorithm">
+            <li>If <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a> is <a href="#dfn-null" title="null" class="tref internalDFN">null</a> or <code>@graph</code>,
+              drop the free-floating <a href="#dfn-scalar" title="scalar" class="tref internalDFN">scalar</a> by returning <a href="#dfn-null" title="null" class="tref internalDFN">null</a>.</li>
+            <li>Return the result of the
+              <a href="#value-expansion">Value Expansion algorithm</a>, passing the
+              <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a>, and
+              <i>element</i> as <i>value</i>.</li>
+          </ol>
+        </li>
+        <li>If <i>element</i> is an <a href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>,
+                  <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a>, and <i>item</i> as <i>element</i>.</li>
+                <li>If the <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a> is <code>@list</code> or its
+                  <a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">container mapping</a> is set to <code>@list</code>, the
+                  <i>expanded item</i> must not be an <a href="#dfn-array" title="array" class="tref internalDFN">array</a> or a
+                  <a href="#dfn-list-object" title="list-object" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a>.</li>
+        <li>If <i>element</i> contains the key <code>@context</code>, set
+          <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> to the result of the
+          <a href="#context-processing-algorithm">Context Processing algorithm</a>,
+          passing <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> and the value of the
+          <code>@context</code> key as <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a>.</li>
+        <li>Initialize an empty <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, <i>key</i> for
+              <i>value</i>, and <a href="#dfn-true" title="true" class="tref internalDFN">true</a> for <i>vocab</i>.</li>
+            <li>If <i>expanded property</i> is <a href="#dfn-null" title="null" class="tref internalDFN">null</a> or it neither
+              contains a colon (<code>:</code>) nor it is a <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>,
+              drop <i>key</i> by continuing to the next <i>key</i>.</li>
+            <li>If <i>expanded property</i> is a <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>:
+              <ol class="algorithm">
+                <li>If <a href="#dfn-active-property" title="active-property" class="tref internalDFN">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 href="#dfn-string" title="string" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, <i>value</i>, and <a href="#dfn-true" title="true" class="tref internalDFN">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 href="#dfn-string" title="string" class="tref internalDFN">string</a> nor an <a href="#dfn-array" title="array" class="tref internalDFN">array</a> of
+                  <a href="#dfn-string" title="string" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, <a href="#dfn-true" title="true" class="tref internalDFN">true</a> for <i>vocab</i>,
+                  and <a href="#dfn-true" title="true" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, <code>@graph</code>
+                  for <a href="#dfn-active-property" title="active-property" class="tref internalDFN">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 href="#dfn-scalar" title="scalar" class="tref internalDFN">scalar</a> or <a href="#dfn-null" title="null" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">null</a>, set the <code>@value</code>
+                  member of <i>result</i> to <a href="#dfn-null" title="null" class="tref internalDFN">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 href="#dfn-string" title="string" class="tref internalDFN">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 href="#dfn-string" title="string" class="tref internalDFN">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 href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a> is <a href="#dfn-null" title="null" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>,
+                      <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a>, and <i>value</i> for <i>element</i>.</li>
+                    <li>If <i>expanded value</i> is a <a href="#dfn-list-object" title="list-object" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>,
+                  <a href="#dfn-active-property" title="active-property" class="tref internalDFN">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>,
+                      <code>@reverse</code> as <a href="#dfn-active-property" title="active-property" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-value-object" title="value-object" class="tref internalDFN">value object</a> or <a href="#dfn-list-object" title="list-object" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">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 href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">container mapping</a> in
+              <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> is <code>@language</code> and
+              <i>value</i> is a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> then <i>value</i>
+              is expanded from a <a href="../json-ld/#dfn-language-map" title="language-map" class="tref externalDFN">language map</a>
+              as follows:
+              <ol class="algorithm">
+                <li>Initialize <i>expanded value</i> to an empty
+                  <a href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">array</a>
+                      set it to an <a href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-string" title="string" class="tref internalDFN">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">container mapping</a> in
+              <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> is <code>@index</code> and
+              <i>value</i> is a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">array</a>
+                      set it to an <a href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>,
+                      <i>key</i> as <a href="#dfn-active-property" title="active-property" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>,
+              <i>key</i> for <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a>, and <i>value</i>
+              for <i>element</i>.</li>
+            <li>If <i>expanded value</i> is <a href="#dfn-null" title="null" class="tref internalDFN">null</a>, ignore <i>key</i>
+              by continuing to the next <i>key</i> from <i>element</i>.</li>
+            <li>If the <a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">container mapping</a> associated to <i>key</i> in
+              <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> is <code>@list</code> and
+              <i>expanded value</i> is not already a <a href="#dfn-list-object" title="list-object" class="tref internalDFN">list object</a>,
+              convert <i>expanded value</i> to a <a href="#dfn-list-object" title="list-object" class="tref internalDFN">list object</a>
+              by first setting it to an <a href="#dfn-array" title="array" class="tref internalDFN">array</a> containing only
+              <i>expanded value</i> if it is not already an <a href="#dfn-array" title="array" class="tref internalDFN">array</a>,
+              and then by setting it to a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> containing
+              the key-value pair <code>@list</code>-<i>expanded value</i>.</li>
+            <li>Otherwise, if the <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> associated to
+              <i>key</i> indicates that it is a <a href="#dfn-reverse-property" title="reverse-property" class="tref internalDFN">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">array</a>, set
+                  it to an <a href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-value-object" title="value-object" class="tref internalDFN">value object</a> or <a href="#dfn-list-object" title="list-object" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-reverse-property" title="reverse-property" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">null</a>, then set <i>result</i> to <a href="#dfn-null" title="null" class="tref internalDFN">null</a>.</li>
+            <li>Otherwise, if the value of <i>result</i>'s <code>@value</code> member
+              is not a <a href="#dfn-string" title="string" class="tref internalDFN">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 href="#dfn-string" title="string" class="tref internalDFN">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 href="#dfn-iri" title="iri" class="tref internalDFN"><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 href="#dfn-array" title="array" class="tref internalDFN">array</a>, set it to
+          an <a href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">null</a>.</li>
+        <li>If <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a> is <a href="#dfn-null" title="null" class="tref internalDFN">null</a> or <code>@graph</code>,
+          drop free-floating values as follows:
+          <ol class="algorithm">
+            <li>If <i>result</i> is an empty <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> or contains
+              the keys <code>@value</code> or <code>@list</code>, set <i>result</i> to
+              <a href="#dfn-null" title="null" class="tref internalDFN">null</a>.</li>
+            <li>Otherwise, if <i>result</i> is a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> whose only
+              key is <code>@id</code>, set <i>result</i> to <a href="#dfn-null" title="null" class="tref internalDFN">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">null</a>, set it to an empty <a href="#dfn-array" title="array" class="tref internalDFN">array</a>. Finally, if
+        the result is not an <a href="#dfn-array" title="array" class="tref internalDFN">array</a>, then set the result to an
+        <a href="#dfn-array" title="array" class="tref internalDFN">array</a> containing only the result.</p>
+    </section>
+  </section> <!-- end of Expansion Algorithm -->
+
+
+  <section id="value-expansion">
+    <h3 id="h3_value-expansion" role="heading" aria-level="2"><span class="secno">7.2 </span>Value Expansion</h3>
+
+    <p>Some values in JSON-LD can be expressed in a
+      <a href="#dfn-compacted-form" title="compacted-form" class="tref internalDFN">compact form</a>. These values are required
+      to be <a href="#dfn-expansion" title="expansion" class="tref internalDFN">expanded</a> at times when processing
+      JSON-LD documents. A value is said to be in <dfn id="dfn-expanded-form" title="expanded-form">expanded form</dfn>
+      after the application of this algorithm.</p>
+
+    <section class="informative">
+      <h4 role="heading" aria-level="3" id="overview-4">Overview</h4><p><em>This section is non-normative.</em></p>
+
+      <p>If <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a> has a <a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mapping</a> in the
+        <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> set to <code>@id</code> or <code>@vocab</code>,
+        a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mapping</a> associated with the <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a>
+        or an <code>@language</code> member if <i>value</i> is a
+        <a href="#dfn-string" title="string" class="tref internalDFN">string</a> and there is <a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">language mapping</a> associated
+        with the <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a>.</p>
+    </section>
+
+    <section>
+      <h4 role="heading" aria-level="3" id="algorithm-4">Algorithm</h4>
+
+      <p>The algorithm takes three required inputs: an <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>,
+        an <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a>, and a <i>value</i> to expand.</p>
+
+      <ol class="algorithm">
+        <li>If the <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a> has a <a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mapping</a>
+          in <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> that is <code>@id</code>, return a new
+          <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, <i>value</i>, and <a href="#dfn-true" title="true" class="tref internalDFN">true</a> for
+          <i>document relative</i>.</li>
+        <li>If <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a> has a <a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mapping</a> in
+          <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> that is <code>@vocab</code>, return
+          a new <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, <i>value</i>, <a href="#dfn-true" title="true" class="tref internalDFN">true</a> for
+          <i>vocab</i>, and <a href="#dfn-true" title="true" class="tref internalDFN">true</a> for
+          <i>document relative</i>.</li>
+        <li>Otherwise, initialize <i>result</i> to a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a>
+          with an <code>@value</code> member whose value is set to
+          <i>value</i>.</li>
+        <li>If <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a> has a <a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mapping</a> in
+          <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, add an <code>@type</code> member to
+          <i>result</i> and set its value to the value associated with the
+          <a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mapping</a>.</li>
+        <li>Otherwise, if <i>value</i> is a <a href="#dfn-string" title="string" class="tref internalDFN">string</a>:
+          <ol class="algorithm">
+            <li>If a <a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">language mapping</a> is associated with
+              <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a> in <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>,
+              add an <code>@language</code> to <i>result</i> and set its
+              value to the language code associated with the
+              <a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">language mapping</a>; unless the
+              <a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">language mapping</a> is set to <a href="#dfn-null" title="null" class="tref internalDFN">null</a> in
+              which case no member is added.</li>
+            <li>Otherwise, if the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> has a
+              <a href="#dfn-default-language" title="default-language" class="tref internalDFN">default language</a>, add an <code>@language</code>
+              to <i>result</i> and set its value to the
+              <a href="#dfn-default-language" title="default-language" class="tref internalDFN">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 id="h2_compaction-algorithms" role="heading" aria-level="1"><span class="secno">8. </span>Compaction Algorithms</h2>
+
+  <section id="compaction-algorithm">
+    <h3 id="h3_compaction-algorithm" role="heading" aria-level="2"><span class="secno">8.1 </span>Compaction Algorithm</h3>
+
+    <p>This algorithm compacts a JSON-LD document, such that the given
+      <a href="#dfn-context" title="context" class="tref internalDFN">context</a> is applied. This must result in shortening
+      any applicable <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a> to
+      <a href="#dfn-term" title="term" class="tref internalDFN">terms</a> or
+      <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact IRIs</a>, any applicable
+      <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keywords</a> to
+      <a href="#dfn-keyword-alias" title="keyword-alias" class="tref internalDFN">keyword aliases</a>, and
+      any applicable <a href="#dfn-json-ld-value" title="json-ld-value" class="tref internalDFN">JSON-LD values</a>
+      expressed in <a href="#dfn-expanded-form" title="expanded-form" class="tref internalDFN">expanded form</a> to simple values such as
+      <a href="#dfn-string" title="string" class="tref internalDFN">strings</a> or
+      <a href="#dfn-number" title="number" class="tref internalDFN">numbers</a>.</p>
+
+    <section class="informative">
+      <h4 role="heading" aria-level="3" 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 href="#dfn-compaction" title="compaction" class="tref internalDFN">compacted</a> <i>result</i>. When
+        <a href="#dfn-compaction" title="compaction" class="tref internalDFN">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 href="#dfn-scalar" title="scalar" class="tref internalDFN">scalar</a>, it is
+          already in <a href="#dfn-compacted-form" title="compacted-form" class="tref internalDFN">compacted form</a>, so we simply return it.</li>
+        <li>If the <i>element</i> is an <a href="#dfn-array" title="array" class="tref internalDFN">array</a>, we compact
+          each of its items recursively and return them in a new
+          <a href="#dfn-array" title="array" class="tref internalDFN">array</a>.</li>
+        <li>Otherwise <i>element</i> is a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-term" title="term" class="tref internalDFN">terms</a> or <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact IRIs</a>
+          and others will be compacted from <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keywords</a> to
+          <a href="#dfn-keyword-alias" title="keyword-alias" class="tref internalDFN">keyword aliases</a> or simply left
+          unchanged because they do not have definitions in the <a href="#dfn-context" title="context" class="tref internalDFN">context</a>.
+          Values will be converted to <a href="#dfn-compacted-form" title="compacted-form" class="tref internalDFN">compacted form</a> via the
+          <a href="#value-compaction">Value Compaction algorithm</a>. Some data
+          will be reshaped based on <a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> with a <code>@context</code>
+        key, if a non-empty <a href="#dfn-context" title="context" class="tref internalDFN">context</a> was given, where the <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">array</a>.</p>
+    </section>
+
+    <section>
+      <h4 role="heading" aria-level="3" id="algorithm-5">Algorithm</h4>
+
+      <p>The algorithm takes five required input variables: an <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>,
+        an <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">inverse context</a>, an <a href="#dfn-active-property" title="active-property" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> is set to the result of
+        performing <a href="#context-processing-algorithm">Context Processing</a>
+        on the passed <a href="#dfn-context" title="context" class="tref internalDFN">context</a>, the <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">inverse context</a> is
+        set to the result of performing the
+        <a href="#inverse-context-creation">Inverse Context Creation algorithm</a>
+        on <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, the <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a> is
+        set to <a href="#dfn-null" title="null" class="tref internalDFN">null</a>, <i>element</i> is set to the result of
+        performing the <a href="#expansion-algorithm">Expansion algorithm</a>
+        on the <a href="#dfn-json-ld-input" title="json-ld-input" class="tref internalDFN">JSON-LD input</a>, and, if not passed,
+        <code class="idlMemberName"><a href="#widl-JsonLdOptions-compactArrays">compactArrays</a></code>
+        is set to <a href="#dfn-true" title="true" class="tref internalDFN">true</a>.</p>
+
+      <ol class="algorithm">
+        <li>If <i>element</i> is a <a href="#dfn-scalar" title="scalar" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">array</a>:
+          <ol class="algorithm">
+            <li>Initialize <i>result</i> to an empty <a href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>,
+                  <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">inverse context</a>, <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a>, and
+                  <em>item</em> for <i>element</i>.</li>
+                <li>If <i>compacted item</i> is not <a href="#dfn-null" title="null" class="tref internalDFN">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 href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a> has no
+              <a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">container mapping</a> in <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, and
+              <code class="idlMemberName"><a href="#widl-JsonLdOptions-compactArrays">compactArrays</a></code>
+              is <a href="#dfn-true" title="true" class="tref internalDFN">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">inverse context</a>,
+          <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a>,and <i>element</i> as <i>value</i> is
+          a <a href="#dfn-scalar" title="scalar" class="tref internalDFN">scalar</a>, return that result.</li>
+        <li>Initialize <i>inside reverse</i> to <a href="#dfn-true" title="true" class="tref internalDFN">true</a> if
+          <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a> equals <code>@reverse</code>,
+          otherwise to <a href="#dfn-false" title="false" class="tref internalDFN">false</a>.</li>
+        <li>Initialize <i>result</i> to an empty <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-string" title="string" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">inverse context</a>,
+                    <i>expanded value</i> for <i>iri</i>,
+                    and <a href="#dfn-true" title="true" class="tref internalDFN">true</a> for <i>vocab</i> if
+                    <i>expanded property</i> is <code>@type</code>,
+                    <a href="#dfn-false" title="false" class="tref internalDFN">false</a> otherwise.</li>
+                  <li>Otherwise, <i>expanded value</i> must be a
+                    <code>@type</code> <a href="#dfn-array" title="array" class="tref internalDFN">array</a>:
+                    <ol class="algorithm">
+                      <li>Initialize <i>compacted value</i> to an empty
+                        <a href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">inverse context</a>,
+                        <i>expanded type</i> for <i>iri</i>, and
+                        <a href="#dfn-true" title="true" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">inverse context</a>,
+                    <i>expanded property</i> for <i>iri</i>,
+                    and <a href="#dfn-true" title="true" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>,
+                  <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">inverse context</a>, <code>@reverse</code> for
+                  <a href="#dfn-active-property" title="active-property" class="tref internalDFN">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 href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> for <i>property</i> in the
+                      <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> indicates that <i>property</i> is
+                      a <a href="#dfn-reverse-property" title="reverse-property" class="tref internalDFN">reverse property</a>
+                      <ol class="algorithm">
+                        <li>If the <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> for <i>property</i> in
+                          the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> has a
+                          <a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">container mapping</a> of <code>@set</code> or
+                          <code class="idlMemberName"><a href="#widl-JsonLdOptions-compactArrays">compactArrays</a></code>
+                          is <a href="#dfn-false" title="false" class="tref internalDFN">false</a>, and <i>value</i> is not an
+                          <a href="#dfn-array" title="array" class="tref internalDFN">array</a>, set <i>value</i> to a new
+                          <a href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">array</a>, set it to a new
+                          <a href="#dfn-array" title="array" class="tref internalDFN">array</a> containing only the value. Then
+                          append <i>value</i> to its value if <i>value</i>
+                          is not an <a href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">inverse context</a>,
+                      <code>@reverse</code> for <i>iri</i>,
+                      and <a href="#dfn-true" title="true" class="tref internalDFN">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 href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a> has a <a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">container mapping</a>
+              in <a href="#dfn-active-context" title="active-context" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">inverse context</a>,
+                  <i>expanded property</i> for <i>iri</i>,
+                  and <a href="#dfn-true" title="true" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">inverse context</a>,
+                  <i>expanded property</i> for <i>iri</i>,
+                  <i>expanded value</i> for <i>value</i>,
+                  <a href="#dfn-true" title="true" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">array</a>. Otherwise, if
+                  the key's value is not an <a href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">inverse context</a>,
+                  <i>expanded property</i> for <i>iri</i>,
+                  <i>expanded item</i> for <i>value</i>,
+                  <a href="#dfn-true" title="true" class="tref internalDFN">true</a> for <i>vocab</i>, and
+                  <i>inside reverse</i>.</li>
+                <li>Initialize <i>container</i> to <a href="#dfn-null" title="null" class="tref internalDFN">null</a>. If there
+                  is a <a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">container mapping</a> for
+                  <i>item active property</i> in <a href="#dfn-active-context" title="active-context" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">inverse context</a>,
+                  <i>item active property</i> for <a href="#dfn-active-property" title="active-property" class="tref internalDFN">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 href="#dfn-list-object" title="list-object" class="tref internalDFN">list object</a>:
+                  <ol class="algorithm">
+                    <li>If <i>compacted item</i> is not an <a href="#dfn-array" title="array" class="tref internalDFN">array</a>,
+                      then set it to an <a href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-list-object" title="list-object" class="tref internalDFN">list object</a> by setting it to a
+                          <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">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 href="#dfn-list-object" title="list-object" class="tref internalDFN">list objects</a> associated
+                      with an <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a> that has a
+                      <a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-false" title="false" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">array</a>,
+                      set it to a new <a href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">array</a>, set it to a new
+                      <a href="#dfn-array" title="array" class="tref internalDFN">array</a> containing only the value. Then
+                      append <i>compacted item</i> to the value if
+                      <i>compacted item</i> is not an <a href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">array</a>, replace it with a new
+        <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">inverse context</a>, and
+        <code>@graph</code> as <i>iri</i> and whose value is the <a href="#dfn-array" title="array" class="tref internalDFN">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 id="h3_inverse-context-creation" role="heading" aria-level="2"><span class="secno">8.2 </span>Inverse Context Creation</h3>
+
+    <p>When there is more than one <a href="#dfn-term" title="term" class="tref internalDFN">term</a> that could be chosen
+      to compact an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>, it has to be ensured that the <a href="#dfn-term" title="term" class="tref internalDFN">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 href="#dfn-term" title="term" class="tref internalDFN">term</a> selections, the concept of an
+      <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">inverse context</a> is introduced. An <dfn id="dfn-inverse-context" title="inverse-context">inverse context</dfn>
+      is essentially a reverse lookup table that maps
+      <a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">container mappings</a>,
+      <a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mappings</a>, and
+      <a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">language mappings</a> to a simple
+      <a href="#dfn-term" title="term" class="tref internalDFN">term</a> for a given <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>. A
+      <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">inverse context</a> only needs to be generated for an
+      <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> if it is being used for <a href="#dfn-compaction" title="compaction" class="tref internalDFN">compaction</a>.</p>
+
+    <p>To make use of an <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">inverse context</a>, a list of preferred
+      <a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">container mappings</a> and the
+      <a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mapping</a> or <a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">language mapping</a> are gathered
+      for a particular value associated with an <a href="#dfn-iri" title="iri" class="tref internalDFN"><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 href="#dfn-term" title="term" class="tref internalDFN">term</a> that most appropriately
+      matches the value's mappings.</p>
+
+    <section class="informative">
+      <h4 role="heading" aria-level="3" id="overview-6">Overview</h4><p><em>This section is non-normative.</em></p>
+
+      <p>To create an <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">inverse context</a> for a given
+        <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, each <a href="#dfn-term" title="term" class="tref internalDFN">term</a> in the
+        <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> is visited, ordered by length, shortest
+        first (ties are broken by choosing the lexicographically least
+        <a href="#dfn-term" title="term" class="tref internalDFN">term</a>). For each <a href="#dfn-term" title="term" class="tref internalDFN">term</a>, an entry is added to
+        the <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">inverse context</a> for each possible combination of
+        <a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">container mapping</a> and <a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mapping</a>
+        or <a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">language mapping</a> that would legally match the
+        <a href="#dfn-term" title="term" class="tref internalDFN">term</a>. Illegal matches include differences between a
+        value's <a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mapping</a> or <a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">language mapping</a> and
+        that of the <a href="#dfn-term" title="term" class="tref internalDFN">term</a>. If a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> has no
+        <a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">container mapping</a>, <a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mapping</a>, or
+        <a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">language mapping</a> (or some combination of these), then it
+        will have an entry in the <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">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 href="#dfn-term" title="term" class="tref internalDFN">terms</a> when a more
+        specifically-matching <a href="#dfn-term" title="term" class="tref internalDFN">term</a> is not available for a particular
+        <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> and value combination.</p>
+    </section>
+
+    <section>
+      <h4 role="heading" aria-level="3" id="algorithm-6">Algorithm</h4>
+
+      <p>The algorithm takes one required input: the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> that
+        the <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">inverse context</a> is being created for.</p>
+
+      <ol class="algorithm">
+        <li>Initialize <i>result</i> to an empty <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a>.</li>
+        <li>Initialize <i>default language</i> to <code>@none</code>. If the
+          <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> has a <a href="#dfn-default-language" title="default-language" class="tref internalDFN">default language</a>,
+          set <i>default language</i> to it.</li>
+        <li>For each key <a href="#dfn-term" title="term" class="tref internalDFN">term</a> and value <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> in
+          the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, ordered by shortest <a href="#dfn-term" title="term" class="tref internalDFN">term</a>
+          first (breaking ties by choosing the lexicographically least
+          <a href="#dfn-term" title="term" class="tref internalDFN">term</a>):
+          <ol class="algorithm">
+            <li>If the <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> is <a href="#dfn-null" title="null" class="tref internalDFN">null</a>,
+              <a href="#dfn-term" title="term" class="tref internalDFN">term</a> cannot be selected during <a href="#dfn-compaction" title="compaction" class="tref internalDFN">compaction</a>,
+              so continue to the next <a href="#dfn-term" title="term" class="tref internalDFN">term</a>.</li>
+            <li>Initialize <i>container</i> to <code>@none</code>. If there
+              is a <a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">container mapping</a> in
+              <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a>, set <i>container</i> to
+              its associated value.</li>
+            <li>Initialize <i>iri</i> to the value of the <a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a>
+              for the <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> with two members. The first member is
+              <code>@language</code> and its value is a new empty
+              <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a>, the second member is <code>@type</code>
+              and its value is a new empty <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> indicates that the <a href="#dfn-term" title="term" class="tref internalDFN">term</a>
+              represents a <a href="#dfn-reverse-property" title="reverse-property" class="tref internalDFN">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 href="#dfn-term" title="term" class="tref internalDFN">term</a>
+                  being processed.</li>
+              </ol>
+            </li>
+            <li>Otherwise, if <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> has a
+              <a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">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 href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mapping</a> in <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a>,
+                  create one and set its value to the <a href="#dfn-term" title="term" class="tref internalDFN">term</a>
+                  being processed.</li>
+              </ol>
+            </li>
+            <li>Otherwise, if <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> has a
+              <a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">language mapping</a> (might be <a href="#dfn-null" title="null" class="tref internalDFN">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 href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">language mapping</a> equals <a href="#dfn-null" title="null" class="tref internalDFN">null</a>,
+                  set <i>language</i> to <code>@null</code>; otherwise set it
+                  to the language code in <a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">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 href="#dfn-term" title="term" class="tref internalDFN">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 href="#dfn-term" title="term" class="tref internalDFN">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 href="#dfn-term" title="term" class="tref internalDFN">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 href="#dfn-term" title="term" class="tref internalDFN">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 id="h3_iri-compaction" role="heading" aria-level="2"><span class="secno">8.3 </span><abbr title="Internationalized Resource Identifier">IRI</abbr> Compaction</h3>
+
+    <p>This algorithm compacts an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> to a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> or
+      <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, or a <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a> to a
+      <a href="#dfn-keyword-alias" title="keyword-alias" class="tref internalDFN">keyword alias</a>. A value that is associated with the
+      <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> may be passed in order to assist in selecting the most
+      context-appropriate <a href="#dfn-term" title="term" class="tref internalDFN">term</a>.</p>
+
+    <section class="informative">
+      <h4 role="heading" aria-level="3" id="overview-7">Overview</h4><p><em>This section is non-normative.</em></p>
+
+      <p>If the passed <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> is <a href="#dfn-null" title="null" class="tref internalDFN">null</a>, we simply
+        return <a href="#dfn-null" title="null" class="tref internalDFN">null</a>. Otherwise, we first try to find a <a href="#dfn-term" title="term" class="tref internalDFN">term</a>
+        that the <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a> can be compacted to if
+        it is relative to <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context's</a>
+        <a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">vocabulary mapping</a>. In order to select the most appropriate
+        <a href="#dfn-term" title="term" class="tref internalDFN">term</a>, we may have to collect information about the passed
+        <i>value</i>. This information includes which
+        <a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">container mappings</a>
+        would be preferred for expressing the <i>value</i>, and what its
+        <a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mapping</a> or <a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">language mapping</a> is. For
+        <a href="#dfn-list-object" title="list-object" class="tref internalDFN">JSON-LD lists</a>, the <a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mapping</a>
+        or <a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">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 href="#dfn-term" title="term" class="tref internalDFN">term</a> to use.</p>
+
+      <p>If no <a href="#dfn-term" title="term" class="tref internalDFN">term</a> was found that could be used to compact the
+        <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>, an attempt is made to compact the <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> using the
+        <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context's</a> <a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">vocabulary mapping</a>,
+        if there is one. If the <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> could not be compacted, an
+        attempt is made to find a <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>. If there is no
+        appropriate <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, the <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> is
+        transformed to a <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a> using the document's
+        <a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">base <abbr title="Internationalized Resource Identifier">IRI</abbr></a>. Finally, if the <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or
+        <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a> still could not be compacted, it is returned
+        as is.</p>
+    </section>
+
+    <section>
+      <h4 role="heading" aria-level="3" id="algorithm-7">Algorithm</h4>
+
+      <p>This algorithm takes three required inputs and three optional inputs.
+        The required inputs are an <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, an <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context's</a>
+        <a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">vocabulary mapping</a>, and a <i>reverse</i> flag which specifies whether
+        a <a href="#dfn-reverse-property" title="reverse-property" class="tref internalDFN">reverse property</a> is being compacted. If not passed, <i>value</i> is set to
+        <a href="#dfn-null" title="null" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">null</a>, return <a href="#dfn-null" title="null" class="tref internalDFN">null</a>.</li>
+        <li>If <i>vocab</i> is <a href="#dfn-true" title="true" class="tref internalDFN">true</a> and <i>iri</i> is a
+          key in <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">inverse context</a>:
+          <ol class="algorithm">
+            <li>Initialize <i>default language</i> to
+              <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context's</a>
+              <a href="#dfn-default-language" title="default-language" class="tref internalDFN">default language</a>, if it has one, otherwise to
+              <code>@none</code>.</li>
+            <li>Initialize <i>containers</i> to an empty <a href="#dfn-array" title="array" class="tref internalDFN">array</a>. This
+              <a href="#dfn-array" title="array" class="tref internalDFN">array</a> will be used to keep track of an ordered list of
+              preferred <a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">container mappings</a>
+              for a <a href="#dfn-term" title="term" class="tref internalDFN">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 href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mapping</a> or <a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">language mapping</a> for
+              a <a href="#dfn-term" title="term" class="tref internalDFN">term</a>, based on what is compatible with <i>value</i>.</li>
+            <li>If <i>value</i> is a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-true" title="true" class="tref internalDFN">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 href="#dfn-list-object" title="list-object" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">null</a>, set it to
+                  <code>@none</code>.</li>
+                <li>If <i>common type</i> is <a href="#dfn-null" title="null" class="tref internalDFN">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 href="#dfn-value-object" title="value-object" class="tref internalDFN">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 href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">container mapping</a>, and it will
+              be the last <a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">container mapping</a> value to be checked as it
+              is the most generic.</li>
+            <li>If <i>type/language value</i> is <a href="#dfn-null" title="null" class="tref internalDFN">null</a>, set it to
+              <code>@null</code>. This is the key under which <a href="#dfn-null" title="null" class="tref internalDFN">null</a> values
+              are stored in the <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">inverse context</a> <i>entry</i>.</li>
+            <li>Initialize <i>preferred values</i> to an empty <a href="#dfn-array" title="array" class="tref internalDFN">array</a>.
+              This <a href="#dfn-array" title="array" class="tref internalDFN">array</a> will indicate, in order, the preferred values for
+              a <a href="#dfn-term" title="term" class="tref internalDFN">term's</a> <a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mapping</a> or
+              <a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">inverse context</a>,
+                  the value associated with the <code>@id</code> key in <i>value</i> for
+                  <i>iri</i>, <a href="#dfn-true" title="true" class="tref internalDFN">true</a> for <i>vocab</i>, and
+                  <a href="#dfn-true" title="true" class="tref internalDFN">true</a> for <i>document relative</i> has a
+                  <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> in the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>
+                  with an <a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN"><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 href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">null</a>, return <i>term</i>.</li>
+          </ol>
+        </li>
+        <li>At this point, there is no simple <a href="#dfn-term" title="term" class="tref internalDFN">term</a> that <i>iri</i>
+          can be compacted to. If <i>vocab</i> is <a href="#dfn-true" title="true" class="tref internalDFN">true</a> and
+          <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> has a <a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">vocabulary mapping</a>:
+          <ol class="algorithm">
+            <li>If <i>iri</i> begins with the
+              <a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">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 href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> in <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>,
+              then return <i>suffix</i>.</li>
+          </ol>
+        </li>
+        <li>The <i>iri</i> could not be compacted using the
+          <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context's</a> <a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">vocabulary mapping</a>.
+          Try to create a <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, starting by initializing
+          <i>compact <abbr title="Internationalized Resource Identifier">IRI</abbr></i> to <a href="#dfn-null" title="null" class="tref internalDFN">null</a>. This variable will be used to
+          tore the created <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, if any.</li>
+        <li>For each key <a href="#dfn-term" title="term" class="tref internalDFN">term</a> and value <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> in
+          the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>:
+          <ol class="algorithm">
+            <li>If the <a href="#dfn-term" title="term" class="tref internalDFN">term</a> contains a colon (<code>:</code>),
+              then continue to the next <a href="#dfn-term" title="term" class="tref internalDFN">term</a> because
+              <a href="#dfn-term" title="term" class="tref internalDFN">terms</a> with colons can't be
+              used as <a href="#dfn-prefix" title="prefix" class="tref internalDFN">prefixes</a>.</li>
+            <li>If the <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> is <a href="#dfn-null" title="null" class="tref internalDFN">null</a>,
+              its <a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a> equals <i>iri</i>, or its
+              <a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a> is not a substring at the beginning of
+              <i>iri</i>, the <a href="#dfn-term" title="term" class="tref internalDFN">term</a> cannot be used as a <a href="#dfn-prefix" title="prefix" class="tref internalDFN">prefix</a>
+              because it is not a partial match with <i>iri</i>.
+              Continue with the next <a href="#dfn-term" title="term" class="tref internalDFN">term</a>.</li>
+            <li>Initialize <i>candidate</i> by concatenating <a href="#dfn-term" title="term" class="tref internalDFN">term</a>,
+              a colon (<code>:</code>), and the substring of <i>iri</i>
+              that follows after the value of the
+              <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition's</a>
+              <a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN"><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 href="#dfn-null" title="null" class="tref internalDFN">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 href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> in <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> or if the
+              <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> has an <a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr> mapping</a>
+              that equals <i>iri</i> and <i>value</i> is <a href="#dfn-null" title="null" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">null</a>, return <i>compact <abbr title="Internationalized Resource Identifier">IRI</abbr></i>.</li>
+        <li>If <i>vocab</i> is <a href="#dfn-false" title="false" class="tref internalDFN">false</a> then
+          transform <i>iri</i> to a <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a> using
+          the document's base <a href="#dfn-iri" title="iri" class="tref internalDFN"><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 id="h3_term-selection" role="heading" aria-level="2"><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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context's</a>
+      <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">inverse context</a> to find the <a href="#dfn-term" title="term" class="tref internalDFN">term</a> that is best
+      used to <a href="#dfn-compaction" title="compaction" class="tref internalDFN">compact</a> an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>. Other
+      information about a value associated with the <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> is given,
+      including which <a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">container mappings</a>
+      and which <a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mapping</a> or <a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">language mapping</a> would
+      be best used to express the value.</p>
+
+    <section class="informative">
+      <h4 role="heading" aria-level="3" id="overview-8">Overview</h4><p><em>This section is non-normative.</em></p>
+
+      <p>The <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">inverse context's</a> entry for
+        the <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> will be first searched according to the preferred
+        <a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">container mappings</a>, in the order
+        that they are given. Amongst <a href="#dfn-term" title="term" class="tref internalDFN">terms</a> with a matching
+        <a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">container mapping</a>, preference will be given to those
+        with a matching <a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mapping</a> or <a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">language mapping</a>,
+        over those without a <a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mapping</a> or
+        <a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">language mapping</a>. If there is no <a href="#dfn-term" title="term" class="tref internalDFN">term</a>
+        with a matching <a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">container mapping</a> then the <a href="#dfn-term" title="term" class="tref internalDFN">term</a>
+        without a <a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">container mapping</a> that matches the given
+        <a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mapping</a> or <a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">language mapping</a> is selected. If
+        there is still no selected <a href="#dfn-term" title="term" class="tref internalDFN">term</a>, then a <a href="#dfn-term" title="term" class="tref internalDFN">term</a>
+        with no <a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mapping</a> or <a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">language mapping</a> will
+        be selected if available. No <a href="#dfn-term" title="term" class="tref internalDFN">term</a> will be selected that
+        has a conflicting <a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mapping</a> or <a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">language mapping</a>.
+        Ties between <a href="#dfn-term" title="term" class="tref internalDFN">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 href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">inverse context</a>.</p>
+    </section>
+
+    <section>
+      <h4 role="heading" aria-level="3" id="algorithm-8">Algorithm</h4>
+
+      <p>This algorithm has five required inputs. They are:
+        an <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">inverse context</a>, a <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a> or <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>
+        <i>iri</i>, an <a href="#dfn-array" title="array" class="tref internalDFN">array</a> <i>containers</i> that represents an
+        ordered list of preferred <a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">container mappings</a>,
+        a <a href="#dfn-string" title="string" class="tref internalDFN">string</a> <i>type/language</i> that indicates whether
+        to look for a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> with a matching <a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mapping</a>
+        or <a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">language mapping</a>, and an <a href="#dfn-array" title="array" class="tref internalDFN">array</a> representing
+        an ordered list of <i>preferred values</i> for the <a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mapping</a>
+        or <a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">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 href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">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 href="#dfn-term" title="term" class="tref internalDFN">term</a> with a matching
+              <a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">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 href="#dfn-term" title="term" class="tref internalDFN">term</a> with a matching
+                  <a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mapping</a> or <a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">null</a>.</li>
+      </ol>
+    </section>
+  </section> <!-- end of Term Selection -->
+
+  <section id="value-compaction">
+    <h3 id="h3_value-compaction" role="heading" aria-level="2"><span class="secno">8.5 </span>Value Compaction</h3>
+
+    <p><a href="#dfn-expansion" title="expansion" class="tref internalDFN">Expansion</a> transforms all values into <a href="#dfn-expanded-form" title="expanded-form" class="tref internalDFN">expanded form</a>
+      in JSON-LD. This algorithm performs the opposite operation, transforming
+      a value into <dfn id="dfn-compacted-form" title="compacted-form">compacted form</dfn>. This algorithm compacts a
+      value according to the <a href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a> in the given
+      <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> that is associated with the value's associated
+      <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a>.</p>
+
+    <section class="informative">
+      <h4 role="heading" aria-level="3" 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 href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mapping</a> of
+        <a href="#dfn-active-property" title="active-property" class="tref internalDFN">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 href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">container mapping</a> of <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a>
+        is set to <code>@index</code>, an <code>@index</code> member, <i>value</i>
+        can be compacted to a <a href="#dfn-string" title="string" class="tref internalDFN">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 href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a> has a matching
+        <a href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mapping</a> or <a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">language mapping</a> and there
+        is either no <code>@index</code> member or the <a href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">container mapping</a>
+        of <a href="#dfn-active-property" title="active-property" class="tref internalDFN">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 href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">container mapping</a>
+        of <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a> is set to <code>@index</code>) and
+        either its associated value is not a <a href="#dfn-string" title="string" class="tref internalDFN">string</a>, there is
+        no <a href="#dfn-default-language" title="default-language" class="tref internalDFN">default language</a>, or there is an explicit
+        <a href="#dfn-null" title="null" class="tref internalDFN">null</a> <a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">language mapping</a> for the
+        <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a>.</p>
+    </section>
+
+    <section>
+      <h4 role="heading" aria-level="3" id="algorithm-9">Algorithm</h4>
+
+      <p>This algorithm has four required inputs: an <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, an
+        <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">inverse context</a>,  an <a href="#dfn-active-property" title="active-property" class="tref internalDFN">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 href="#dfn-container-mapping" title="container-mapping" class="tref internalDFN">container mapping</a> associated to <a href="#dfn-active-property" title="active-property" class="tref internalDFN">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 href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mapping</a> of <a href="#dfn-active-property" title="active-property" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">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 href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mapping</a> of <a href="#dfn-active-property" title="active-property" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, <a href="#dfn-inverse-context" title="inverse-context" class="tref internalDFN">inverse context</a>,
+              the value of the <code>@id</code> member for <i>iri</i>, and
+              <a href="#dfn-true" title="true" class="tref internalDFN">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 href="#dfn-type-mapping" title="type-mapping" class="tref internalDFN">type mapping</a> of <a href="#dfn-active-property" title="active-property" class="tref internalDFN">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 href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">language mapping</a> of
+          <a href="#dfn-active-property" title="active-property" class="tref internalDFN">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 href="#dfn-string" title="string" class="tref internalDFN">string</a>,
+          or the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> has no <a href="#dfn-default-language" title="default-language" class="tref internalDFN">default language</a>,
+          or the <a href="#dfn-language-mapping" title="language-mapping" class="tref internalDFN">language mapping</a> of <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a>
+          is set to <a href="#dfn-null" title="null" class="tref internalDFN">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 id="h2_flattening-algorithms" role="heading" aria-level="1"><span class="secno">9. </span>Flattening Algorithms</h2>
+
+  <section id="flattening-algorithm">
+    <h3 id="h3_flattening-algorithm" role="heading" aria-level="2"><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 href="#dfn-node" title="node" class="tref internalDFN">node</a> in a single <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a>
+      and labeling all <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank nodes</a> with
+      <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">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 role="heading" aria-level="3" 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 href="#dfn-node" title="node" class="tref internalDFN">node</a> in a single
+        <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a>. In the next step, the <i>node map</i> is
+        converted to a JSON-LD document in
+        <a href="../json-ld/#flattened-document-form" title="flattened-document-form" class="tref externalDFN">flattened document form</a>.
+        Finally, if a <a href="#dfn-context" title="context" class="tref internalDFN">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 role="heading" aria-level="3" 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 href="#dfn-null" title="null" class="tref internalDFN">null</a>.</p>
+
+      <p>This algorithm generates new <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifiers</a>
+        and relabels existing <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> consisting of
+          a single member whose key is <code>@default</code> and whose value is
+          an empty <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> representing
+          the <a href="#dfn-default-graph" title="default-graph" class="tref internalDFN">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">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 id="h3_node-map-generation" role="heading" aria-level="2"><span class="secno">9.2 </span>Node Map Generation</h3>
+
+    <p>This algorithm creates a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> <i>node map</i> holding an indexed
+      representation of the <a href="#dfn-graph" title="graph" class="tref internalDFN">graphs</a> and <a href="#dfn-node" title="node" class="tref internalDFN">nodes</a>
+      represented in the passed expanded document. All <a href="#dfn-node" title="node" class="tref internalDFN">nodes</a> that are not
+      uniquely identified by an <abbr title="Internationalized Resource Identifier">IRI</abbr> get assigned a (new) <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">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 href="#dfn-node" title="node" class="tref internalDFN">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 href="#dfn-graph-name" title="graph-name" class="tref internalDFN">graph name</a>.</p>
+
+    <section class="informative">
+      <h4 role="heading" aria-level="3" 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 href="#dfn-property" title="property" class="tref internalDFN">properties</a> of a <a href="#dfn-node" title="node" class="tref internalDFN">node</a>
+        in a single <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a>. The algorithm constructs a
+        <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> <i>node map</i> whose keys represent the
+        <a href="#dfn-graph-name" title="graph-name" class="tref internalDFN">graph names</a> used in the document
+        (the <a href="#dfn-default-graph" title="default-graph" class="tref internalDFN">default graph</a> is stored under the key <code>@default</code>)
+        and whose associated values are <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON objects</a>
+        which index the <a href="#dfn-node" title="node" class="tref internalDFN">nodes</a> in the
+        <a href="#dfn-graph" title="graph" class="tref internalDFN">graph</a>. If a
+        <a href="#dfn-property" title="property" class="tref internalDFN">property's</a> value is a <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a>,
+        it is replaced by a <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> consisting of only an
+        <code>@id</code> member. If a <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> has no <code>@id</code>
+        member or it is identified by a <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a>,
+        a new <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a> is generated. This relabeling
+        of <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifiers</a> is
+        also done for <a href="#dfn-property" title="property" class="tref internalDFN">properties</a> and values of
+        <code>@type</code>.</p>
+    </section>
+
+    <section>
+      <h4 role="heading" aria-level="3" 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 href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> <i>node map</i>. Furthermore it has the optional parameters
+        <a href="#dfn-active-graph" title="active-graph" class="tref internalDFN">active graph</a> (which defaults to <code>@default</code>), an <a href="#dfn-active-subject" title="active-subject" class="tref internalDFN">active subject</a>,
+        <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a>, and a reference to a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> <i>list</i>. If
+        not passed, <a href="#dfn-active-subject" title="active-subject" class="tref internalDFN">active subject</a>, <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a>, and <i>list</i> are
+        set to <a href="#dfn-null" title="null" class="tref internalDFN">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 href="#dfn-active-graph" title="active-graph" class="tref internalDFN">active graph</a>, <a href="#dfn-active-subject" title="active-subject" class="tref internalDFN">active subject</a>,
+              <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a>, and <i>list</i>.</li>
+          </ol>
+        </li>
+        <li>Otherwise <i>element</i> is a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a>. Reference the
+          <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> which is the value of the <a href="#dfn-active-graph" title="active-graph" class="tref internalDFN">active graph</a>
+          member of <i>node map</i> using the variable <i>graph</i>. If the
+          <a href="#dfn-active-subject" title="active-subject" class="tref internalDFN">active subject</a> is <a href="#dfn-null" title="null" class="tref internalDFN">null</a>, set <i>node</i> to <a href="#dfn-null" title="null" class="tref internalDFN">null</a>
+          otherwise reference the <a href="#dfn-active-subject" title="active-subject" class="tref internalDFN">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 href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">null</a>:
+              <ol class="algorithm">
+                <li>If <i>node</i> does not have an <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a> member,
+                  create one and initialize its value to an <a href="#dfn-array" title="array" class="tref internalDFN">array</a>
+                  containing <i>element</i>.</li>
+                <li>Otherwise, compare <i>element</i> against every item in the
+                  <a href="#dfn-array" title="array" class="tref internalDFN">array</a> associated with the <a href="#dfn-active-property" title="active-property" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">array</a>. Two
+                  <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> <i>result</i> consisting of a single member
+              <code>@list</code> whose value is initialized to an empty <a href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-active-graph" title="active-graph" class="tref internalDFN">active graph</a>,
+              <a href="#dfn-active-subject" title="active-subject" class="tref internalDFN">active subject</a>, <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a>, and
+              <i>result</i> for <i>list</i>.</li>
+            <li>Append <i>result</i> to the value of the <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a> member
+              of <i>node</i>.</li>
+          </ol>
+        </li>
+        <li>Otherwise <i>element</i> is a <a href="#dfn-node-object" title="node-object" class="tref internalDFN">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 href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> consisting of a single member <code>@id</code> whose
+              value is <i>id</i>.</li>
+            <li>Reference the value of the <i>id</i> member of <i>graph</i> using the
+              variable <i>node</i>.</li>
+            <li>If <a href="#dfn-active-subject" title="active-subject" class="tref internalDFN">active subject</a> is a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a>, a reverse property relationship
+              is being processed. Perform the following steps:
+              <ol class="algorithm">
+                <li>If <i>node</i> does not have an <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a> member,
+                  create one and initialize its value to an <a href="#dfn-array" title="array" class="tref internalDFN">array</a>
+                  containing <a href="#dfn-active-subject" title="active-subject" class="tref internalDFN">active subject</a>.</li>
+                <li>Otherwise, compare <a href="#dfn-active-subject" title="active-subject" class="tref internalDFN">active subject</a> against every item in the
+                  <a href="#dfn-array" title="array" class="tref internalDFN">array</a> associated with the <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a>
+                  member of <i>node</i>. If there is no item equivalent to <a href="#dfn-active-subject" title="active-subject" class="tref internalDFN">active subject</a>,
+                  append <a href="#dfn-active-subject" title="active-subject" class="tref internalDFN">active subject</a> to the <a href="#dfn-array" title="array" class="tref internalDFN">array</a>. Two
+                  <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON objects</a> are considered
+                  equal if they have equivalent key-value pairs.</li>
+              </ol>
+            </li>
+            <li>Otherwise, if <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a> is not <a href="#dfn-null" title="null" class="tref internalDFN">null</a>, perform the following steps:
+              <ol class="algorithm">
+                <li>Create a new <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">null</a>:
+                  <ol class="algorithm">
+                    <li>If <i>node</i> does not have an <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a> member,
+                      create one and initialize its value to an <a href="#dfn-array" title="array" class="tref internalDFN">array</a>
+                      containing <i>reference</i>.</li>
+                    <li>Otherwise, compare <i>reference</i> against every item in the
+                      <a href="#dfn-array" title="array" class="tref internalDFN">array</a> associated with the <a href="#dfn-active-property" title="active-property" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">array</a>. Two
+                      <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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>If <i>element</i> has an <code>@type</code> key, append
+              each item of its associated <a href="#dfn-array" title="array" class="tref internalDFN">array</a> to the
+              <a href="#dfn-array" title="array" class="tref internalDFN">array</a> associated with the <code>@type</code> key of
+              <i>node</i> unless it is already in that <a href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-node" title="node" class="tref internalDFN">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">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>Recursively invoke this algorithm passing <i>value</i> for
+                          <i>element</i>, <i>node map</i>, <a href="#dfn-active-graph" title="active-graph" class="tref internalDFN">active graph</a>,
+                          <i>referenced node</i> for <a href="#dfn-active-subject" title="active-subject" class="tref internalDFN">active subject</a>, and
+                          <i>property</i> for <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a>. Passing a
+                          <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> for <a href="#dfn-active-subject" title="active-subject" class="tref internalDFN">active subject</a> indicates to the
+                          algorithm that a reverse property relationship is being processed.</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 href="#dfn-active-graph" title="active-graph" class="tref internalDFN">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 href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">array</a>.</li>
+                <li>Recursively invoke this algorithm passing <i>value</i> for <i>element</i>,
+                  <i>node map</i>, <a href="#dfn-active-graph" title="active-graph" class="tref internalDFN">active graph</a>, <i>id</i> for <a href="#dfn-active-subject" title="active-subject" class="tref internalDFN">active subject</a>,
+                  and <i>property</i> for <a href="#dfn-active-property" title="active-property" class="tref internalDFN">active property</a>.</li>
+              </ol>
+            </li>
+          </ol>
+        </li>
+      </ol>
+    </section>
+  </section> <!-- end of Node Map Generation -->
+
+  <section id="generate-blank-node-identifier">
+    <h3 id="h3_generate-blank-node-identifier" role="heading" aria-level="2"><span class="secno">9.3 </span>Generate Blank Node Identifier</h3>
+
+    <p>This algorithm is used to generate new
+      <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifiers</a> or to
+      relabel an existing <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a> to avoid collision
+      by the introduction of new ones.</p>
+
+    <section class="informative">
+      <h4 role="heading" aria-level="3" 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 href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">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 href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">null</a>,
+        an entry is created in the <i>identifier map</i> associating the
+        <i>identifier</i> with the <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a>. Finally,
+        the <i>counter</i> is increased by one and the new
+        <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a> is returned.</p>
+    </section>
+
+    <section>
+      <h4 role="heading" aria-level="3" id="algorithm-12">Algorithm</h4>
+
+      <p>The algorithm takes a single input variable <i>identifier</i> which may
+        be <a href="#dfn-null" title="null" class="tref internalDFN">null</a>. Between its executions, the algorithm needs to
+        keep an <i>identifier map</i> to relabel existing
+        <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifiers</a>
+        consistently and a <i>counter</i> to generate new
+        <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">null</a> and has an entry in the
+          <i>identifier map</i>, return the mapped identifier.</li>
+        <li>Otherwise, generate a new <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">null</a>, create a new entry
+          for <i>identifier</i> in <i>identifier map</i> and set its value
+          to the new <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a>.</li>
+        <li>Return the new <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">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 id="h2_rdf-serialization-deserialization-algorithms" role="heading" aria-level="1"><span class="secno">10. </span>RDF Serialization/Deserialization Algorithms</h2>
+
+  <p>This section describes algorithms to deserialize a JSON-LD document to an
+    <a href="#dfn-rdf-dataset" title="rdf-dataset" class="tref internalDFN">RDF dataset</a> and vice versa. The algorithms are designed for in-memory
+    implementations with random access to <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> elements.</p>
+
+  <p>Throughout this section, the following vocabulary
+    <a href="#dfn-prefix" title="prefix" class="tref internalDFN">prefixes</a> are used in
+    <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">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 id="h3_deserialize-json-ld-to-rdf-algorithm" role="heading" aria-level="2"><span class="secno">10.1 </span>Deserialize JSON-LD to RDF algorithm</h3>
+
+    <p>This algorithm deserializes a JSON-LD document to an <a href="#dfn-rdf-dataset" title="rdf-dataset" class="tref internalDFN">RDF dataset</a>.
+      Please note that RDF does not allow a <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank node</a> to be used
+      as a <a href="#dfn-property" title="property" class="tref internalDFN">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>
+
+    <section class="informative">
+      <h4 role="heading" aria-level="3" 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 href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a>. Each graph from the <i>node map</i>
+        is processed to extract <a href="#dfn-rdf-triple" title="rdf-triple" class="tref internalDFN">RDF triples</a>,
+        to which any (non-default) graph name is applied to create an
+        <a href="#dfn-rdf-dataset" title="rdf-dataset" class="tref internalDFN">RDF dataset</a>. Each <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> in the
+        <i>node map</i> has an <code>@id</code> member which corresponds to the
+        <a href="#dfn-rdf-subject" title="rdf-subject" class="tref internalDFN">RDF subject</a>, the other members
+        represent <a href="#dfn-rdf-predicate" title="rdf-predicate" class="tref internalDFN">RDF predicates</a>. Each
+        member value is either an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or
+        <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a> or can be transformed to an
+        <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal" title="rdf-literal" class="tref externalDFN">RDF literal</a>
+        to generate an <a href="#dfn-rdf-triple" title="rdf-triple" class="tref internalDFN">RDF triple</a>. <a href="#dfn-list" title="list" class="tref internalDFN">Lists</a>
+        are transformed into an
+        <a href="http://www.w3.org/TR/rdf-schema/#ch_collectionvocab" title="rdf-collection" class="tref externalDFN">RDF Collection</a>
+        using the <a href="#list-to-rdf-conversion">List to RDF Conversion algorithm.</a></p>
+    </section>
+
+    <section>
+      <h4 role="heading" aria-level="3" id="algorithm-13">Algorithm</h4>
+
+      <p>The algorithm takes a JSON-LD document <i>element</i> and returns an
+        <a href="#dfn-rdf-dataset" title="rdf-dataset" class="tref internalDFN">RDF dataset</a>. Unless the <i>produce generalized RDF</i> flag
+        is set to <a href="#dfn-true" title="true" class="tref internalDFN">true</a>, <a href="#dfn-rdf-triple" title="rdf-triple" class="tref internalDFN">RDF triples</a>
+        containing a <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank node</a> <a href="#dfn-rdf-predicate" title="rdf-predicate" class="tref internalDFN">predicate</a>
+        are excluded from output.</p>
+
+      <p>This algorithm generates new <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifiers</a>
+        and relabels existing <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">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 href="#dfn-rdf-dataset" title="rdf-dataset" class="tref internalDFN">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 href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">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 href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple" title="triple" class="tref internalDFN">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 href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>
+                      continue with the next <i>property</i>-<i>values</i> pair.</li>
+                    <li>Otherwise, if <i>property</i> is a <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a> and
+                      the <i>produce generalized RDF</i> flag is not <a href="#dfn-true" title="true" class="tref internalDFN">true</a>,
+                      continue with the next <i>property</i>-<i>values</i> pair.</li>
+                    <li>Otherwise, if <i>property</i> is a <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">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 href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> or
+                      <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a>. For each <i>item</i>
+                      in <i>values</i>:
+                      <ol class="algorithm">
+                        <li>If <i>item</i> is a <a href="#dfn-list-object" title="list-object" class="tref internalDFN">list object</a>, initialize
+                          <i>list triples</i> as an empty <a href="#dfn-array" title="array" class="tref internalDFN">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 href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple" title="triple" class="tref internalDFN">triple</a> composed of <i>subject</i>,
+                          <i>property</i>, and <i>list head</i> to <i>triples</i> and
+                          finally append all <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple" title="triple" class="tref internalDFN">triples</a> from
+                          <i>list triples</i> to <i>triples</i>.</li>
+                        <li>Otherwise, <i>item</i> is a <a href="#dfn-value-object" title="value-object" class="tref internalDFN">value object</a>
+                          or a <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a>. Append a <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple" title="triple" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">null</a>, indicating a <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">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 href="#dfn-default-graph" title="default-graph" class="tref internalDFN">default graph</a> in <i>dataset</i>.</li>
+            <li>Otherwise, create a <a href="#dfn-named-graph" title="named-graph" class="tref internalDFN">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 id="h3_object-to-rdf-conversion" role="heading" aria-level="2"><span class="secno">10.2 </span>Object to RDF Conversion</h3>
+
+    <p>This algorithm takes a <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> or <a href="#dfn-value-object" title="value-object" class="tref internalDFN">value object</a>
+      and transforms it into an
+      <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-resource" title="rdf-resource" class="tref externalDFN">RDF resource</a>
+      to be used as the <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-object" title="object" class="tref internalDFN">object</a> of an <a href="#dfn-rdf-triple" title="rdf-triple" class="tref internalDFN">RDF triple</a>. If a
+      <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> containing a <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a> is passed to
+      the algorithm, <a href="#dfn-null" title="null" class="tref internalDFN">null</a> is returned which then causes the resulting
+      <a href="#dfn-rdf-triple" title="rdf-triple" class="tref internalDFN">RDF triple</a> to be ignored.</p>
+
+    <section class="informative">
+      <h4 role="heading" aria-level="3" id="overview-14">Overview</h4><p><em>This section is non-normative.</em></p>
+
+      <p><a href="#dfn-value-object" title="value-object" class="tref internalDFN">Value objects</a> are transformed to
+        <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal" title="rdf-literal" class="tref internalDFN">RDF literals</a> as described in
+        <a class="sectionRef" href="#data-round-tripping">section 10.6 Data Round Tripping</a>
+        whereas <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node objects</a> are transformed
+        to <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a>,
+        <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifiers</a>,
+        or <a href="#dfn-null" title="null" class="tref internalDFN">null</a>.</p>
+    </section>
+
+    <section>
+      <h4 role="heading" aria-level="3" id="algorithm-14">Algorithm</h4>
+
+      <p>The algorithm takes as its sole argument <i>item</i> which must be
+        either a <a href="#dfn-value-object" title="value-object" class="tref internalDFN">value object</a> or <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a>.</p>
+
+      <ol class="algorithm">
+        <li>If <i>item</i> is a <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> and the value of
+          its <code>@id</code> member is a <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, return
+          <a href="#dfn-null" title="null" class="tref internalDFN">null</a>.</li>
+        <li>If <i>item</i> is a <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a>, return the
+          <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a> associated
+          with its <code>@id</code> member.</li>
+        <li>Otherwise, <i>item</i> is a <a href="#dfn-value-object" title="value-object" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">null</a> if
+          <i>item</i> does not have such a member.</li>
+        <li>If <i>value</i> is <a href="#dfn-true" title="true" class="tref internalDFN">true</a> or
+          <a href="#dfn-false" title="false" class="tref internalDFN">false</a>, set <i>value</i> to the <a href="#dfn-string" title="string" class="tref internalDFN">string</a>
+          <code>true</code> or <code>false</code> which is the
+          <a href="#dfn-canonical-lexical-form" title="canonical-lexical-form" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">null</a>, set it to
+          <code>xsd:boolean</code>.</li>
+        <li>Otherwise, if <i>value</i> is a <a href="#dfn-number" title="number" class="tref internalDFN">number</a> with a non-zero fractional
+          part (the result of a modulo‑1 operation) or <i>value</i> is a <a href="#dfn-number" title="number" class="tref internalDFN">number</a>
+          and <i>datatype</i> equals <code>xsd:double</code>, convert <i>value</i> to a
+          <a href="#dfn-string" title="string" class="tref internalDFN">string</a> in <a href="#dfn-canonical-lexical-form" title="canonical-lexical-form" class="tref internalDFN">canonical lexical form</a> of
+          an <code>xsd:double</code> as defined in [<cite><a href="#bib-XMLSCHEMA11-2" class="bibref">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 href="#dfn-null" title="null" class="tref internalDFN">null</a>, set it to
+          <code>xsd:double</code>.</li>
+        <li>Otherwise, if <i>value</i> is a <a href="#dfn-number" title="number" class="tref internalDFN">number</a> with no non-zero
+          fractional part (the result of a modulo‑1 operation) or <i>value</i>
+          is a <a href="#dfn-number" title="number" class="tref internalDFN">number</a> and <i>datatype</i>
+          equals <code>xsd:integer</code>, convert <i>value</i> to a
+          <a href="#dfn-string" title="string" class="tref internalDFN">string</a> in <a href="#dfn-canonical-lexical-form" title="canonical-lexical-form" class="tref internalDFN">canonical lexical form</a> of
+          an <code>xsd:integer</code> as defined in [<cite><a href="#bib-XMLSCHEMA11-2" class="bibref">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 href="#dfn-null" title="null" class="tref internalDFN">null</a>, set it to
+          <code>xsd:integer</code>.</li>
+        <li>Otherwise, if <i>datatype</i> is <a href="#dfn-null" title="null" class="tref internalDFN">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 href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal" title="rdf-literal" class="tref internalDFN">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 id="h3_list-to-rdf-conversion" role="heading" aria-level="2"><span class="secno">10.3 </span>List to RDF Conversion</h3>
+
+    <p>List Conversion is the process of taking a <a href="#dfn-list-object" title="list-object" class="tref internalDFN">list object</a>
+      and transforming it into an
+      <a href="http://www.w3.org/TR/rdf-schema/#ch_collectionvocab" title="rdf-collection" class="tref externalDFN">RDF Collection</a>
+      as defined in RDF Semantics [<cite><a href="#bib-RDF-MT" class="bibref">RDF-MT</a></cite>].</p>
+
+    <section class="informative">
+      <h4 role="heading" aria-level="3" id="overview-15">Overview</h4><p><em>This section is non-normative.</em></p>
+
+      <p>For each element of the <a href="#dfn-list" title="list" class="tref internalDFN">list</a> a new <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a>
+        is allocated which is used to generate <code>rdf:first</code> and
+        <code>rdf:rest</code> <a href="#dfn-rdf-triple" title="rdf-triple" class="tref internalDFN">triples</a>. The
+        algorithm returns the list head, which is either the first allocated
+        <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a> or <code>rdf:nil</code> if the
+        <a href="#dfn-list" title="list" class="tref internalDFN">list</a> is empty. If a list element represents a <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
+        the corresponding <code>rdf:first</code> triple is omitted.</p>
+    </section>
+
+    <section>
+      <h4 role="heading" aria-level="3" id="algorithm-15">Algorithm</h4>
+
+      <p>The algorithm takes two inputs: an <a href="#dfn-array" title="array" class="tref internalDFN">array</a> <i>list</i>
+        and an empty <a href="#dfn-array" title="array" class="tref internalDFN">array</a> <i>list triples</i> used for returning
+        the generated <a href="#dfn-rdf-triple" title="rdf-triple" class="tref internalDFN">triples</a>.</p>
+
+      <ol class="algorithm">
+        <li>If <i>list</i> is empty, return <code>rdf:nil</code>.</li>
+        <li>Otherwise, create an <a href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">null</a>, append a <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple" title="triple" class="tref internalDFN">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 href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple" title="triple" class="tref internalDFN">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 href="#dfn-blank-node" title="blank-node" class="tref internalDFN">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 id="h3_serialize-rdf-as-json-ld-algorithm" role="heading" aria-level="2"><span class="secno">10.4 </span>Serialize RDF as JSON-LD Algorithm</h3>
+
+    <p>This algorithm serializes an <a href="#dfn-rdf-dataset" title="rdf-dataset" class="tref internalDFN">RDF dataset</a> consisting of a
+      <a href="#dfn-default-graph" title="default-graph" class="tref internalDFN">default graph</a> and zero or more
+      <a href="#dfn-named-graph" title="named-graph" class="tref internalDFN">named graphs</a> into a JSON-LD document.</p>
+
+    <section class="informative">
+      <h4 role="heading" aria-level="3" 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 href="http://www.w3.org/TR/rdf-schema/#ch_collectionvocab" title="rdf-collection" class="tref internalDFN">RDF Collection</a> into a <a href="#dfn-list" title="list" class="tref internalDFN">list</a>
+        and generating a JSON-LD document in expanded form for all
+        <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal" title="rdf-literal" class="tref internalDFN">RDF literals</a>, <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a>
+        and <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifiers</a>.
+        If the <i>use native types</i> flag is set to <a href="#dfn-true" title="true" class="tref internalDFN">true</a>,
+        <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal" title="rdf-literal" class="tref internalDFN">RDF literals</a> with a
+        <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri" title="datatype-iri" class="tref externalDFN">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 href="#dfn-number" title="number" class="tref internalDFN">JSON numbers</a> and <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal" title="rdf-literal" class="tref internalDFN">RDF literals</a>
+        with a <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri" title="datatype-iri" class="tref externalDFN">datatype <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
+        that equals <code>xsd:boolean</code> are converted to <a href="#dfn-true" title="true" class="tref internalDFN">true</a> or
+        <a href="#dfn-false" title="false" class="tref internalDFN">false</a> based on their
+        <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form" title="lexical-form" class="tref externalDFN">lexical form</a>
+        as described in
+        <a class="sectionRef" href="#data-round-tripping">section 10.6 Data Round Tripping</a>.
+        Unless the <i>use <code>rdf:type</code></i> flag is set to true, <code>rdf:type</code>
+        predicates will be serialized as <code>@type</code> as long as the associated object is
+        either an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a>.</p>
+    </section>
+
+    <section>
+      <h4 role="heading" aria-level="3" id="algorithm-16">Algorithm</h4>
+
+      <p>The algorithm takes one required and two optional inputs: an <a href="#dfn-rdf-dataset" title="rdf-dataset" class="tref internalDFN">RDF dataset</a>
+        and the two flags <i>use native types</i> and <i>use <code>rdf:type</code></i>
+        that both default to <a href="#dfn-false" title="false" class="tref internalDFN">false</a>.</p>
+
+      <ol class="algorithm">
+        <li>Initialize <i>default graph</i> to an empty <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a>.</li>
+        <li>Initialize <i>graph map</i> to a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-rdf-dataset" title="rdf-dataset" class="tref internalDFN">RDF dataset</a>:
+          <ol class="algorithm">
+            <li>If <i>graph</i> is the <a href="#dfn-default-graph" title="default-graph" class="tref internalDFN">default graph</a>,
+              set <i>name</i> to <code>@default</code>, otherwise to the
+              <a href="#dfn-graph-name" title="graph-name" class="tref internalDFN">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a>.</li>
+            <li>If <i>graph</i> is not the <a href="#dfn-default-graph" title="default-graph" class="tref internalDFN">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-rdf-triple" title="rdf-triple" class="tref internalDFN">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">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>, the
+                  <i>use <code>rdf:type</code></i> flag is not <a href="#dfn-true" title="true" class="tref internalDFN">true</a>, and <i>object</i>
+                  is an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">array</a> whose only item is
+                  <i>object</i>. Finally, continue to the next
+                  <a href="#dfn-rdf-triple" title="rdf-triple" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">array</a>.</li>
+                <li>If there is no item equivalent to <i>value</i> in the <a href="#dfn-array" title="array" class="tref internalDFN">array</a>
+                  associated with the <i>predicate</i> member of <i>node</i>, append a
+                  reference to <i>value</i> to the <a href="#dfn-array" title="array" class="tref internalDFN">array</a>. Two JSON objects
+                  are considered equal if they have equivalent key-value pairs.</li>
+                <li>If <i>object</i> is a <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a> or <a href="#dfn-iri" title="iri" class="tref internalDFN"><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 href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> consisting of three
+                      members, <code>node</code>, <code>property</code>, and <code>value</code>
+                      to the <i>usages</i> <a href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">array</a>.</li>
+                    <li>Append the value of the <code>@id</code> member of
+                      <i>node</i> to the <i>list nodes</i> <a href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> instead of a <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">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 href="#dfn-list-object" title="list-object" class="tref internalDFN">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 href="#dfn-list-object" title="list-object" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">array</a>
+                      and the last item of the <i>list nodes</i> <a href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">array</a>.</li>
+                <li>Add a <code>@list</code> member to <i>head</i> and initialize
+                  its value to the <i>list</i> <a href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">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 href="#dfn-array" title="array" class="tref internalDFN">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 id="h3_rdf-to-object-conversion" role="heading" aria-level="2"><span class="secno">10.5 </span>RDF to Object Conversion</h3>
+
+    <p>This algorithm transforms an RDF literal to a JSON-LD <a href="#dfn-value-object" title="value-object" class="tref internalDFN">value object</a>
+      and a RDF blank node or <abbr title="Internationalized Resource Identifier">IRI</abbr> to an JSON-LD <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a>.</p>
+
+    <section class="informative">
+      <h4 role="heading" aria-level="3" id="overview-17">Overview</h4><p><em>This section is non-normative.</em></p>
+
+      <p><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal" title="rdf-literal" class="tref internalDFN">RDF literals</a> are transformed to
+        <a href="#dfn-value-object" title="value-object" class="tref internalDFN">value objects</a> whereas <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a> and
+        <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifiers</a> are
+        transformed to <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node objects</a>.
+        If the <i>use native types</i> flag is set to <a href="#dfn-true" title="true" class="tref internalDFN">true</a>,
+        <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal" title="rdf-literal" class="tref internalDFN">RDF literals</a> with a
+        <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri" title="datatype-iri" class="tref externalDFN">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 href="#dfn-number" title="number" class="tref internalDFN">JSON numbers</a> and <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal" title="rdf-literal" class="tref internalDFN">RDF literals</a>
+        with a <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri" title="datatype-iri" class="tref externalDFN">datatype <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
+        that equals <code>xsd:boolean</code> are converted to <a href="#dfn-true" title="true" class="tref internalDFN">true</a> or
+        <a href="#dfn-false" title="false" class="tref internalDFN">false</a> based on their
+        <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form" title="lexical-form" class="tref externalDFN">lexical form</a>
+        as described in
+        <a class="sectionRef" href="#data-round-tripping">section 10.6 Data Round Tripping</a>.</p>
+    </section>
+
+    <section>
+      <h4 role="heading" aria-level="3" id="algorithm-17">Algorithm</h4>
+
+      <p>This algorithm takes two required inputs: a <i>value</i> to be converted
+        to a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> and a flag <i>use native types</i>.</p>
+
+      <ol class="algorithm">
+        <li>If <i>value</i> is an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or a
+          <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a>, return a new <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal" title="rdf-literal" class="tref externalDFN">RDF literal</a>:
+          <ol class="algorithm">
+            <li>Initialize a new empty <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> result.</li>
+            <li>Initialize <i>converted value</i> to <i>value</i>.</li>
+            <li>Initialize <i>type</i> to <a href="#dfn-null" title="null" class="tref internalDFN">null</a></li>
+            <li>If <i>use native types</i> is <a href="#dfn-true" title="true" class="tref internalDFN">true</a>
+              <ol class="algorithm">
+                <li>If the
+                  <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri" title="datatype-iri" class="tref externalDFN">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 href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form" title="lexical-form" class="tref externalDFN">lexical form</a>
+                  of <i>value</i>.</li>
+                <li>Otherwise, if the
+                  <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri" title="datatype-iri" class="tref externalDFN">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 href="#dfn-true" title="true" class="tref internalDFN">true</a> if the
+                  <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form" title="lexical-form" class="tref externalDFN">lexical form</a>
+                  of <i>value</i> matches <code>true</code>, or <a href="#dfn-false" title="false" class="tref internalDFN">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 href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri" title="datatype-iri" class="tref externalDFN">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 href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form" title="lexical-form" class="tref externalDFN">lexical form</a>
+                  is a valid <code>xsd:integer</code> or <code>xsd:double</code>
+                  according [<cite><a href="#bib-XMLSCHEMA11-2" class="bibref">XMLSCHEMA11-2</a></cite>], set <i>converted value</i>
+                  to the result of converting the
+                  <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form" title="lexical-form" class="tref externalDFN">lexical form</a>
+                  to a JSON <a href="#dfn-number" title="number" class="tref internalDFN">number</a>.</li>
+              </ol>
+            </li>
+            <li>Otherwise, if <i>value</i> is a
+              <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-language-tagged-string" title="language-tagged-string" class="tref externalDFN">language-tagged string</a>
+              add a member <code>@language</code> to <i>result</i> and set its value to the
+              <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-language-tag" title="language-tag" class="tref externalDFN">language tag</a>
+              of <i>value</i>.</li>
+            <li>Otherwise, set <i>type</i> to the
+              <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri" title="datatype-iri" class="tref externalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">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 id="h3_data-round-tripping" role="heading" aria-level="2"><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 href="#dfn-number" title="number" class="tref internalDFN">numbers</a> are automatically
+      type-coerced to <code>xsd:integer</code> or <code>xsd:double</code>
+      depending on whether the <a href="#dfn-number" title="number" class="tref internalDFN">number</a> has a non-zero fractional part
+      or not (the result of a modulo‑1 operation), the boolean values
+      <a href="#dfn-true" title="true" class="tref internalDFN">true</a> and <a href="#dfn-false" title="false" class="tref internalDFN">false</a> are coerced to <code>xsd:boolean</code>,
+      and <a href="#dfn-string" title="string" class="tref internalDFN">strings</a> are coerced to <code>xsd:string</code>.
+      The numeric or boolean values themselves are converted to
+      <dfn id="dfn-canonical-lexical-form" title="canonical-lexical-form">canonical lexical form</dfn>, i.e., a deterministic string
+      representation as defined in [<cite><a href="#bib-XMLSCHEMA11-2" class="bibref">XMLSCHEMA11-2</a></cite>].</p>
+
+    <p>The <a href="#dfn-canonical-lexical-form" title="canonical-lexical-form" class="tref internalDFN">canonical lexical form</a> of an <em>integer</em>, i.e., a
+      <a href="#dfn-number" title="number" class="tref internalDFN">number</a> with no non-zero fractional part or a <a href="#dfn-number" title="number" class="tref internalDFN">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 href="#dfn-canonical-lexical-form" title="canonical-lexical-form" class="tref internalDFN">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 href="#dfn-canonical-lexical-form" title="canonical-lexical-form" class="tref internalDFN">canonical lexical form</a> of a <em>double</em>, i.e., a
+      <a href="#dfn-number" title="number" class="tref internalDFN">number</a> with a non-zero fractional part or a <a href="#dfn-number" title="number" class="tref internalDFN">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 href="#bib-IEEE-754-1985" class="bibref">IEEE-754-1985</a></cite>] whereas
+      the value space of JSON <a href="#dfn-number" title="number" class="tref internalDFN">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 href="#dfn-canonical-lexical-form" title="canonical-lexical-form" class="tref internalDFN">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 href="#dfn-canonical-lexical-form" title="canonical-lexical-form" class="tref internalDFN">canonical lexical form</a> of the <em>boolean</em>
+      values <a href="#dfn-true" title="true" class="tref internalDFN">true</a> and <a href="#dfn-false" title="false" class="tref internalDFN">false</a> are the strings
+      <code>true</code> and <code>false</code>.</p>
+
+    <p>When JSON-native <a href="#dfn-number" title="number" class="tref internalDFN">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 href="#dfn-canonical-lexical-form" title="canonical-lexical-form" class="tref internalDFN">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 href="#dfn-number" title="number" class="tref internalDFN">number</a> because
+      its value space is not limited. While the JSON specification [<cite><a href="#bib-RFC4627" class="bibref">RFC4627</a></cite>]
+      does not limit the value space of <a href="#dfn-number" title="number" class="tref internalDFN">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 href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal" title="rdf-literals" class="tref externalDFN">RDF literals</a>
+      with a <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-iri" title="datatype-iri" class="tref externalDFN">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 href="#dfn-false" title="false" class="tref internalDFN">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 title="MUST NOT" class="rfc2119">MUST NOT</em> be
+      backslash-escaped.</p>
+  </section> <!-- end of Data Round Tripping -->
+</section>
+
+
+<section id="the-application-programming-interface" class="informative">
+  <!--OddPage--><h2 id="h2_the-application-programming-interface" role="heading" aria-level="1"><span class="secno">11. </span>The Application Programming Interface</h2><p><em>This section is non-normative.</em></p>
+
+  <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.</p>
+
+  <p>The JSON-LD API uses <a href="#dfn-promise" title="promise" class="tref internalDFN">Promises</a> to represent
+    the result of the various asynchronous operations.
+    <dfn id="dfn-promise" title="promise">Promises</dfn> are temporarily being drafted on
+    <cite><a href="https://github.com/domenic/promises-unwrapping/blob/master/README.md">GitHub</a></cite>
+    [<cite><a href="#bib-PROMISES" class="bibref">PROMISES</a></cite>] but are expected to be standardized as part of ECMAScript&nbsp;6.</p>
+
+  <section id="the-jsonldprocessor-interface" class="informative">
+    <h3 id="h3_the-jsonldprocessor-interface" role="heading" aria-level="2"><span class="secno">11.1 </span>The <a class="idlType" href="#idl-def-JsonLdProcessor"><code>JsonLdProcessor</code></a> Interface</h3><p><em>This section is non-normative.</em></p>
+
+    <p>The <a class="idlType" href="#idl-def-JsonLdProcessor"><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 implementations do not modify the input parameters.
+      If an error is detected, the Promise is
+      rejected passing a <a class="idlType" href="#idl-def-JsonLdError"><code>JsonLdError</code></a> with the corresponding error
+      <code class="idlMemberName"><a href="#widl-JsonLdError-code">code</a></code>
+      and processing is stopped.</p>
+
+    <p>If the <code class="idlMemberName"><a href="#widl-JsonLdOptions-documentLoader">documentLoader</a></code>
+      option is specified, it is used to dereference remote documents and contexts.
+      The <code class="idlMemberName"><a href="#widl-RemoteDocument-documentUrl">documentUrl</a></code>
+      in the returned <code class="idlMemberName"><a href="#idl-def-RemoteDocument">RemoteDocument</a></code>
+      is used as <a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">base <abbr title="Internationalized Resource Identifier">IRI</abbr></a> and the
+      <code class="idlMemberName"><a href="#widl-RemoteDocument-contextUrl">contextUrl</a></code>
+      is used instead of looking at the HTTP Link Header directly. For the sake of simplicity, none of the algorithms
+      in this document mention this directly.</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 class="internalDFN" href="#dfn-promise">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 class="idlType" href="#idl-def-JsonLdContext"><code>JsonLdContext</code></a></span> <span class="idlParamName">context</span></span>, <span class="idlParam">optional <span class="idlParamType"><a class="idlType" href="#idl-def-JsonLdOptions"><code>JsonLdOptions</code></a></span> <span class="idlParamName">options</span></span>);</span>
+<span class="idlMethod">    <span class="idlMethType"><a class="internalDFN" href="#dfn-promise">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 class="idlType" href="#idl-def-JsonLdOptions"><code>JsonLdOptions</code></a></span> <span class="idlParamName">options</span></span>);</span>
+<span class="idlMethod">    <span class="idlMethType"><a class="internalDFN" href="#dfn-promise">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 class="idlType" href="#idl-def-JsonLdContext"><code>JsonLdContext</code></a>?</span> <span class="idlParamName">context</span></span>, <span class="idlParam">optional <span class="idlParamType"><a class="idlType" href="#idl-def-JsonLdOptions"><code>JsonLdOptions</code></a></span> <span class="idlParamName">options</span></span>);</span>
+};</span></pre><section><h4 role="heading" aria-level="3" id="methods">Methods</h4><p><em>This section is non-normative.</em></p><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 href="#dfn-promise" title="promise" class="tref internalDFN">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 href="#dfn-iri" title="iri" class="tref internalDFN"><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 href="#bib-RFC6839" class="bibref">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>. The <a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">base <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
+            of the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">null</a>. If set, the
+            <code class="idlMemberName"><a href="#widl-JsonLdOptions-base">base</a></code> option
+            overrides the <a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">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 href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a>. If
+            <code class="idlMemberName"><a href="#widl-JsonLdOptions-expandContext">expandContext</a></code>
+            is a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#bib-RFC5988" class="bibref">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 href="#bib-RFC6839" class="bibref">RFC6839</a></cite>] except
+            <code>application/ld+json</code>, update the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">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 href="#dfn-local-context" title="local-context" class="tref internalDFN">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 class="idlType" href="#idl-def-JsonLdError"><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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> and <i>input</i> as <i>element</i>.</li>
+          <li>If <i>context</i> is a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-iri" title="iri" class="tref internalDFN"><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 class="idlType" href="#idl-def-JsonLdContext"><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 href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a>, an
+            <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>, or an array consisting of
+            <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a>s and <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>s.</td></tr><tr><td class="prmName">options</td><td class="prmType"><code><a class="idlType" href="#idl-def-JsonLdOptions"><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 href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</td></tr></table><div><em>Return type: </em><code><a class="internalDFN" href="#dfn-promise">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 href="#dfn-promise" title="promise" class="tref internalDFN">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 href="#dfn-iri" title="iri" class="tref internalDFN"><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 href="#bib-RFC6839" class="bibref">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>. The <a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">base <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
+            of the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">null</a>. If set, the
+            <code class="idlMemberName"><a href="#widl-JsonLdOptions-base">base</a></code> option
+            overrides the <a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">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 href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a>. If
+            <code class="idlMemberName"><a href="#widl-JsonLdOptions-expandContext">expandContext</a></code>
+            is a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#bib-RFC5988" class="bibref">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 href="#bib-RFC6839" class="bibref">RFC6839</a></cite>] except
+            <code>application/ld+json</code>, update the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">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 href="#dfn-local-context" title="local-context" class="tref internalDFN">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 class="idlType" href="#idl-def-JsonLdError"><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 href="#dfn-active-context" title="active-context" class="tref internalDFN">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 href="#dfn-iri" title="iri" class="tref internalDFN"><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 class="idlType" href="#idl-def-JsonLdOptions"><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 href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</td></tr></table><div><em>Return type: </em><code><a class="internalDFN" href="#dfn-promise">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 href="#dfn-promise" title="promise" class="tref internalDFN">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 href="#dfn-iri" title="iri" class="tref internalDFN"><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 href="#bib-RFC6839" class="bibref">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>. The <a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">base <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
+            of the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">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 href="#dfn-null" title="null" class="tref internalDFN">null</a>. If set, the
+            <code class="idlMemberName"><a href="#widl-JsonLdOptions-base">base</a></code> option
+            overrides the <a href="#dfn-base-iri" title="base-iri" class="tref internalDFN">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 href="#dfn-active-context" title="active-context" class="tref internalDFN">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 href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a>. If
+            <code class="idlMemberName"><a href="#widl-JsonLdOptions-expandContext">expandContext</a></code>
+            is a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#bib-RFC5988" class="bibref">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 href="#bib-RFC6839" class="bibref">RFC6839</a></cite>] except
+            <code>application/ld+json</code>, update the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">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 href="#dfn-local-context" title="local-context" class="tref internalDFN">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 class="idlType" href="#idl-def-JsonLdError"><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 href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> and <i>input</i> as <i>element</i>.</li>
+          <li>If <i>context</i> is a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-iri" title="iri" class="tref internalDFN"><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 class="idlType" href="#idl-def-JsonLdContext"><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 href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a>, an
+            <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>, or an array consisting of <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a>s
+            and <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>s. If not
+            passed or <a href="#dfn-null" title="null" class="tref internalDFN">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 class="idlType" href="#idl-def-JsonLdOptions"><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 href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</td></tr></table><div><em>Return type: </em><code><a class="internalDFN" href="#dfn-promise">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 class="idlType" href="#idl-def-JsonLdContext"><code>JsonLdContext</code></a> type is used to refer to a value that
+        that may be a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a>, a <a href="#dfn-string" title="string" class="tref internalDFN">string</a> representing an
+        <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>, or an array of <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON objects</a>
+        and <a href="#dfn-string" title="string" class="tref internalDFN">strings</a>.</p>
+    </div>
+  </section> <!-- end of JsonLdProcessor -->
+
+  <section id="the-jsonldoptions-type" class="informative">
+    <h3 id="h3_the-jsonldoptions-type" role="heading" aria-level="2"><span class="secno">11.2 </span>The <a class="idlType" href="#idl-def-JsonLdOptions"><code>JsonLdOptions</code></a> Type</h3><p><em>This section is non-normative.</em></p>
+
+    <p>The <a class="idlType" href="#idl-def-JsonLdOptions"><code>JsonLdOptions</code></a> type is used to pass various options to the
+      <a class="idlType" href="#idl-def-JsonLdProcessor"><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 class="idlType" href="#idl-def-LoadDocumentCallback"><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 role="heading" aria-level="3" id="dictionary-jsonldoptions-members">Dictionary <a href="#idl-def-JsonLdOptions" class="idlType"><code>JsonLdOptions</code></a> Members</h4><p><em>This section is non-normative.</em></p><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 class="idlType" href="#idl-def-LoadDocumentCallback"><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 is used to retrieve remote documents and contexts; otherwise,
+        if not specified, the processor's built-in loader is 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 implementation has to 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 may implement
+        different optimizations. Developers must not 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" class="informative">
+    <h3 id="h3_remote-document-and-context-retrieval" role="heading" aria-level="2"><span class="secno">11.3 </span>Remote Document and Context Retrieval</h3><p><em>This section is non-normative.</em></p>
+
+    <p>Users of an API implementation can utilize a callback to control how remote
+      documents and contexts are retrieved. This section details the parameters of
+      that callback and the data structure used to return the retrieved context.</p>
+
+    <section class="informative">
+      <h4 role="heading" aria-level="3" id="loaddocumentcallback">LoadDocumentCallback</h4><p><em>This section is non-normative.</em></p>
+
+      <p>The <a class="idlType" href="#idl-def-LoadDocumentCallback"><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 class="internalDFN" href="#dfn-promise">Promise</a></span> (<span class="idlParam"><span class="idlParamType"><a>DOMString</a></span> <span class="idlParamName">url</span></span>);</span></pre><section><h5 role="heading" aria-level="4" id="callback-loaddocumentcallback-parameters">Callback <a href="#idl-def-LoadDocumentCallback" class="idlType"><code>LoadDocumentCallback</code></a> Parameters</h5><p><em>This section is non-normative.</em></p><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 result in the <a href="#dfn-promise" title="promise" class="tref internalDFN">Promise</a> being rejected with
+        a <a class="idlType" href="#idl-def-JsonLdError"><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 class="informative">
+      <h4 role="heading" aria-level="3" id="remotedocument">RemoteDocument</h4><p><em>This section is non-normative.</em></p>
+
+      <p>The <a class="idlType" href="#idl-def-RemoteDocument"><code>RemoteDocument</code></a> type is used by a <a class="idlType" href="#idl-def-LoadDocumentCallback"><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 role="heading" aria-level="4" id="dictionary-remotedocument-members">Dictionary <a href="#idl-def-RemoteDocument" class="idlType"><code>RemoteDocument</code></a> Members</h5><p><em>This section is non-normative.</em></p><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 href="#bib-RFC5988" class="bibref">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 is ignored. If multiple HTTP Link Headers using
+          the <code>http://www.w3.org/ns/json-ld#context</code> link relation are found,
+          the <a href="#dfn-promise" title="promise" class="tref internalDFN">Promise</a> of the <a class="idlType" href="#idl-def-LoadDocumentCallback"><code>LoadDocumentCallback</code></a> is rejected with
+          a <a class="idlType" href="#idl-def-JsonLdError"><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" class="informative">
+    <h3 id="h3_error-handling" role="heading" aria-level="2"><span class="secno">11.4 </span>Error Handling</h3><p><em>This section is non-normative.</em></p>
+
+    <p>This section describes the datatype definitions used within the
+      JSON-LD API for error handling.</p>
+
+    <section>
+      <h4 role="heading" aria-level="3" id="jsonlderror">JsonLdError</h4><p><em>This section is non-normative.</em></p>
+
+      <p>The <a class="idlType" href="#idl-def-JsonLdError"><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 class="idlType" href="#idl-def-JsonLdErrorCode"><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 role="heading" aria-level="4" id="dictionary-jsonlderror-members">Dictionary <a href="#idl-def-JsonLdError" class="idlType"><code>JsonLdError</code></a> Members</h5><p><em>This section is non-normative.</em></p><dl class="dictionary-members"><dt id="widl-JsonLdError-code"><code>code</code> of type <span class="idlMemberType"><a class="idlType" href="#idl-def-JsonLdErrorCode"><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 class="informative">
+      <h4 role="heading" aria-level="3" id="jsonlderrorcode">JsonLdErrorCode</h4><p><em>This section is non-normative.</em></p>
+      <p>The <a class="idlType" href="#idl-def-JsonLdErrorCode"><code>JsonLdErrorCode</code></a> represents the collection of valid JSON-LD error
+        codes.</p>
+
+      <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 href="#dfn-string" title="string" class="tref internalDFN">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 href="#dfn-string" title="string" class="tref internalDFN">string</a>.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.invalid-local-context">invalid local context</code></td><td>In invalid <a href="#dfn-local-context" title="local-context" class="tref internalDFN">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 href="#bib-RFC5988" class="bibref">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 href="#dfn-base-iri" title="base-iri" class="tref internalDFN">base <abbr title="Internationalized Resource Identifier">IRI</abbr></a> has been detected, i.e., it is
+          neither an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> nor <a href="#dfn-null" title="null" class="tref internalDFN">null</a>.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.invalid-vocab-mapping">invalid vocab mapping</code></td><td>An invalid <a href="#dfn-vocabulary-mapping" title="vocabulary-mapping" class="tref internalDFN">vocabulary mapping</a> has been detected, i.e.,
+          it is neither an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> nor <a href="#dfn-null" title="null" class="tref internalDFN">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 href="#dfn-default-language" title="default-language" class="tref internalDFN">default language</a> is not a <a href="#dfn-string" title="string" class="tref internalDFN">string</a>
+          or <a href="#dfn-null" title="null" class="tref internalDFN">null</a> and thus invalid.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.keyword-redefinition">keyword redefinition</code></td><td>A <a href="#dfn-keyword" title="keyword" class="tref internalDFN">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 href="#dfn-term-definition" title="term-definition" class="tref internalDFN">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 href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a> contains a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> that has
+          an invalid or missing <a href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN"><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 href="#dfn-iri-mapping" title="iri-mapping" class="tref internalDFN"><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 href="#dfn-keyword" title="keyword" class="tref internalDFN">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 href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a>
+          was encountered whose value could not be expanded to an
+          <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">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 href="#dfn-term-definition" title="term-definition" class="tref internalDFN">term definition</a>
+          was encountered whose value was neither a <a href="#dfn-string" title="string" class="tref internalDFN">string</a> nor
+          <a href="#dfn-null" title="null" class="tref internalDFN">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 href="#dfn-keyword" title="keyword" class="tref internalDFN">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 href="#dfn-string" title="string" class="tref internalDFN">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 href="#dfn-string" title="string" class="tref internalDFN">string</a> nor an <a href="#dfn-array" title="array" class="tref internalDFN">array</a>
+          of <a href="#dfn-string" title="string" class="tref internalDFN">strings</a>.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.invalid-value-object">invalid value object</code></td><td>A <a href="#dfn-value-object" title="value-object" class="tref internalDFN">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 href="#dfn-value-object" title="value-object" class="tref internalDFN">value object</a> has been detected, i.e., it is neither
+          a <a href="#dfn-scalar" title="scalar" class="tref internalDFN">scalar</a> nor <a href="#dfn-null" title="null" class="tref internalDFN">null</a>.</td></tr><tr><td><code id="idl-def-JsonLdErrorCode.invalid-language-tagged-string">invalid language-tagged string</code></td><td>A <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-language-tagged-string" title="language-tagged-string" class="tref internalDFN">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 href="#dfn-number" title="number" class="tref internalDFN">number</a>, <a href="#dfn-true" title="true" class="tref internalDFN">true</a>, or <a href="#dfn-false" title="false" class="tref internalDFN">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 href="#dfn-typed-value" title="typed-value" class="tref internalDFN">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 href="#dfn-set-object" title="set-object" class="tref internalDFN">set object</a> or <a href="#dfn-list-object" title="list-object" class="tref internalDFN">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 href="../json-ld/#dfn-language-map" title="language-map" class="tref externalDFN">language map</a>
+          has been detected. It has to be a <a href="#dfn-string" title="string" class="tref internalDFN">string</a> or an <a href="#dfn-array" title="array" class="tref internalDFN">array</a> of
+          <a href="#dfn-string" title="string" class="tref internalDFN">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 href="#dfn-keyword" title="keyword" class="tref internalDFN">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 href="#dfn-json-object" title="json-object" class="tref internalDFN">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 href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a>.</td></tr></table>
+    </section>
+  </section> <!-- end of Error Handling -->
+</section> <!-- end of The Application Programming Interfaces -->
+
+<section id="acknowledgements" class="appendix informative">
+  <!--OddPage--><h2 id="h2_acknowledgements" role="heading" aria-level="1"><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 rel="bibo:chapter" resource="#references" typeof="bibo:Chapter" class="appendix" id="references"><!--OddPage--><h2 id="h2_references" role="heading" aria-level="1"><span class="secno">B. </span>References</h2><section rel="bibo:chapter" resource="#normative-references" typeof="bibo:Chapter" id="normative-references"><h3 id="h3_normative-references" role="heading" aria-level="2"><span class="secno">B.1 </span>Normative references</h3><dl about="" class="bibliography"><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://www.w3.org/TR/2013/CR-json-ld-20130910/">JSON-LD 1.0</a>.</cite> W3C Candidate Recommendation (work in progress). URL: <a href="http://www.w3.org/TR/2013/CR-json-ld-20130910/">http://www.w3.org/TR/2013/CR-json-ld-20130910/</a>. The latest edition is available at <a href="http://www.w3.org/TR/json-ld/">http://www.w3.org/TR/json-ld/</a>
+</dd><dt id="bib-PROMISES">[PROMISES]</dt><dd rel="dcterms:requires">Domenic Denicola. <cite><a href="https://github.com/domenic/promises-unwrapping">Promise Objects</a>.</cite> October 2013. (work in progress). URL: <a href="http://www.w3.org/2013/10/json-ld-api/snapshot-promises-draft">http://www.w3.org/2013/10/json-ld-api/snapshot-promises-draft</a>. The latest draft is available at <a href="https://github.com/domenic/promises-unwrapping">https://github.com/domenic/promises-unwrapping</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-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 rel="bibo:chapter" resource="#informative-references" typeof="bibo:Chapter" id="informative-references"><h3 id="h3_informative-references" role="heading" aria-level="2"><span class="secno">B.2 </span>Informative references</h3><dl about="" class="bibliography"><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-20130723/">RDF 1.1 Concepts and Abstract Syntax.</a></cite> 23 July 2013. W3C Last Call Working Draft (work in progress). URL: <a href="http://www.w3.org/TR/2013/WD-rdf11-concepts-20130723/">http://www.w3.org/TR/2013/WD-rdf11-concepts-20130723/</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><dt id="bib-WEBIDL">[WEBIDL]</dt><dd rel="dcterms:references">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></dl></section></section></body></html>
--- a/spec/PR/json-ld/20131105/diff-20130910.html	Tue Oct 22 11:09:02 2013 -0400
+++ b/spec/PR/json-ld/20131105/diff-20130910.html	Tue Oct 22 18:58:43 2013 +0200
@@ -1,23 +1,19 @@
-<!DOCTYPE html>
-<html lang="en" dir="ltr" typeof="bibo:Document w3p:PR" about="" property="dcterms:language" content="en">
+<html lang="en" dir="ltr" typeof="bibo:Document w3p:PR" about="" property="dcterms:language" content="en" xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <title>JSON-LD 1.0</title>
-<meta http-equiv="content-type" content="text/html; charset=UTF-8">
-
-
-
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
 <style type="text/css">
+/*<![CDATA[*/
   .highlight { font-weight: bold; color: #0a3; }
   .comment { color: #999; }
   table, thead, tr, td { padding: 5px; border-width: 1px; border-spacing: 0px; border-style: solid; border-collapse: collapse; }
+/*]]>*/
 </style>
-<style>/*****************************************************************
- * ReSpec 3 CSS
- * Robin Berjon - http://berjon.com/
- *****************************************************************/
 
+<style type="text/css">
+/*<![CDATA[*/
 /* --- INLINES --- */
-em.rfc2119 { 
+em.rfc2119 {
     text-transform:     lowercase;
     font-variant:       small-caps;
     font-style:         normal;
@@ -120,13 +116,18 @@
 .section dl.attrs dd, .section dl.eldef dd {
     margin-bottom:  0;
 }
-</style><style>/* --- EXAMPLES --- */
+/*]]>*/
+</style>
+
+<style type="text/css">
+/*<![CDATA[*/
+/* --- EXAMPLES --- */
 div.example-title {
     min-width: 7.5em;
     color: #b9ab2d;
 }
 div.example-title span {
-    text-transform: uppercase;   
+    text-transform: uppercase;
 }
 aside.example, div.example, div.illegal-example {
     padding: 0.5em;
@@ -141,7 +142,7 @@
     border-left-width: .5em;
     border-left-style: solid;
     border-color: #e0cb52;
-    background: #fcfaee;    
+    background: #fcfaee;
 }
 
 aside.example div.example {
@@ -152,7 +153,12 @@
 aside.example div.example div.example-title {
     color: #999;
 }
-</style><style>/* --- ISSUES/NOTES --- */
+/*]]>*/
+</style>
+
+<style type="text/css">
+/*<![CDATA[*/
+/* --- ISSUES/NOTES --- */
 div.issue-title, div.note-title {
     padding-right:  1em;
     min-width: 7.5em;
@@ -191,7 +197,10 @@
 }
 
 
-</style><link rel="stylesheet" href="https://www.w3.org/StyleSheets/TR/W3C-PR"><!--[if lt IE 9]><script src='https://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]--><style type='text/css'>
+/*]]>*/
+</style>
+<link href="https://www.w3.org/StyleSheets/TR/W3C-PR" rel="stylesheet" type="text/css" /><!--[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;
@@ -211,13 +220,11 @@
 :focus { border: thin red solid}
 </style>
 </head>
-
-
-<body class="h-entry" role="document" id="respecDocument">
-<div class="head" role="contentinfo" id="respecHeader">
+<body id="respecDocument" role="document" class="h-entry">
+<div id="respecHeader" role="contentinfo" class="head">
 <p>
 <a href="http://www.w3.org/">
-<img width="72" height="48" src="https://www.w3.org/Icons/w3c_home" alt="W3C">
+<img src="https://www.w3.org/Icons/w3c_home" alt="W3C" height="48" width="72" />
 </a>
 </p>
 <h1 class="title p-name" id="title" property="dcterms:title">
@@ -232,7 +239,7 @@
 Linked
 Data
 </h2>
-<h2 property="dcterms:issued" datatype="xsd:dateTime" content="2013-11-05T05:00:00.000Z" id="w3c-proposed-recommendation-05-november-2013">
+<h2 id="w3c-proposed-recommendation-05-november-2013" property="dcterms:issued" datatype="xsd:dateTime" content="2013-11-04T23:00:00.000Z">
 <abbr title="World Wide Web Consortium">
 W3C
 </abbr>
@@ -468,10 +475,10 @@
 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">
+<hr />
+</div>
+<section rel="bibo:chapter" resource="#abstract" typeof="bibo:Chapter" datatype="" property="dcterms:abstract" class="introductory" id="abstract">
+<h2 id="h2_abstract" role="heading" aria-level="1">
 Abstract
 </h2>
 <p>
@@ -551,8 +558,8 @@
 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">
+<section rel="bibo:chapter" resource="#sotd" typeof="bibo:Chapter" id="sotd" class="introductory">
+<h2 id="h2_sotd" role="heading" aria-level="1">
 Status
 of
 This
@@ -622,7 +629,10 @@
 development
 for
 over
-30
+<del class="diff-old">30
+</del>
+<ins class="diff-chg">31
+</ins>
 months
 in
 the
@@ -662,7 +672,10 @@
 of
 the
 last
-30
+<del class="diff-old">30
+</del>
+<ins class="diff-chg">31
+</ins>
 months.
 </p>
 <p>
@@ -686,7 +699,7 @@
 suite
 [
 <cite>
-<a class="bibref" href="#bib-JSON-LD-TESTS">
+<a href="#bib-JSON-LD-TESTS" class="bibref">
 JSON-LD-TESTS
 </a>
 </cite>
@@ -756,102 +769,34 @@
 within
 the
 next
-three
+<del class="diff-old">three
+</del>
+<ins class="diff-chg">two
+</ins>
 months.
 </p>
 <p>
 <del class="diff-old">The
 following
 features
-</del>
-<ins class="diff-chg">There
-</ins>
-are
-<del class="diff-old">at
+are
+at
 risk
 and
-</del>
-<ins class="diff-chg">a
-number
-of
-ways
-that
-one
-</ins>
-may
-<del class="diff-old">be
+may
+be
 removed:
-</del>
-<ins class="diff-chg">participate
-in
-the
-development
-of
-this
-specification:
-</ins>
-</p>
-<ul>
-<li>
-<del class="diff-old">Support
+Support
 for
 @base:
 null
-</del>
-<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>
-<del class="diff-old">Confusion
+Confusion
 related
 to
 context-sensitivity
 of
 @type
-</del>
-<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>
-<del class="diff-old">Lists
+Lists
 of
 lists
 and
@@ -860,121 +805,23 @@
 conversion
 from
 RDF
-</del>
-<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>
-<del class="diff-old">Allow
+Allow
 blank
 nodes
-</del>
-<ins class="diff-chg">RDF
-Working
-Group
-teleconferences
-are
-held
-on
-Wednesdays
-at
-1500UTC
-every
-week.
-Participation
-is
-limited
-</ins>
-to
-<ins class="diff-new">RDF
-Working
-Group
-members.
-</ins></li><li><ins class="diff-new">
-Specification
-bugs
-and
-issues
-should
-</ins>
-be
-<del class="diff-old">used
+to
+be
+used
 as
 properties
 </del>
-<ins class="diff-chg">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-new">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-new">Source
-code
-</ins></a><ins class="diff-new">
-for
-the
-specification
-can
-be
-found
-on
-Github.
-</ins></li><li><ins class="diff-new">
-The
-</ins><a href="http://webchat.freenode.net/?channels=json-ld"><ins class="diff-new">
-#json-ld
-</ins></a><ins class="diff-new">
-IRC
-channel
-is
-available
-for
-real-time
-discussion
-on
-irc.freenode.net.
-</ins>
-</li>
-</ul>
-<p>
 Changes
 since
 the
 <a href="http://www.w3.org/TR/2013/WD-json-ld-20130411/">
-11&nbsp;April&nbsp;2013
+<del class="diff-old">11&nbsp;April&nbsp;2013
+</del>
+<ins class="diff-chg">11&#160;April&#160;2013
+</ins>
 Last
 Call
 Working
@@ -1090,7 +937,7 @@
 in
 [
 <cite>
-<a class="bibref" href="#bib-RFC6839">
+<a href="#bib-RFC6839" class="bibref">
 RFC6839
 </a>
 </cite>
@@ -1138,7 +985,7 @@
 since
 the
 </ins><a href="http://www.w3.org/TR/2013/CR-json-ld-20130910/"><ins class="diff-chg">
-10&nbsp;September&nbsp;2013
+10&#160;September&#160;2013
 Candidate
 Recommendation
 </ins></a>:</p><ul><li><ins class="diff-chg">
@@ -1241,8 +1088,26 @@
 Recommendation
 to
 indicate
-that
-the
+</del>
+<ins class="diff-chg">)
+through
+05
+December
+2013.
+Advisory
+Committee
+Representatives
+should
+consult
+their
+</ins><a href="https://www.w3.org/2002/09/wbs/myQuestionnaires"><ins class="diff-chg">
+WBS
+questionnaires
+</ins></a>.<ins class="diff-chg">
+Note
+</ins>
+that
+<del class="diff-old">the
 document
 is
 believed
@@ -1261,8 +1126,14 @@
 Candidate
 Recommendation
 is
+</del>
+<ins class="diff-chg">substantive
+technical
+comments
+were
+</ins>
 expected
-to
+<del class="diff-old">to
 advance
 to
 Proposed
@@ -1273,36 +1144,7 @@
 01
 October
 </del>
-<ins class="diff-chg">)
-through
-05
-December
-</ins>
-2013.
-<del class="diff-old">All
-</del>
-<ins class="diff-chg">Advisory
-Committee
-Representatives
-should
-consult
-their
-</ins><a href="https://www.w3.org/2002/09/wbs/myQuestionnaires"><ins class="diff-chg">
-WBS
-questionnaires
-</ins></a>.<ins class="diff-chg">
-Note
-that
-substantive
-technical
-</ins>
-comments
-<del class="diff-old">are
-welcome.
-</del>
-<ins class="diff-chg">were
-expected
-during
+<ins class="diff-chg">during
 the
 Last
 Call
@@ -1310,10 +1152,15 @@
 period
 that
 ended
-05
-August
-2009.
-</ins>
+10
+May
+</ins>
+2013.
+<del class="diff-old">All
+comments
+are
+welcome.
+</del>
 </p>
 <p>
 Publication
@@ -1512,14 +1359,14 @@
 </p>
 </section>
 <section id="toc">
-<h2 class="introductory" aria-level="1" role="heading" id="h2_toc">
+<h2 id="h2_toc" role="heading" aria-level="1" class="introductory">
 Table
 of
 Contents
 </h2>
-<ul class="toc" role="directory" id="respecContents">
-<li class="tocline">
-<a href="#introduction" class="tocxref">
+<ul id="respecContents" role="directory" class="toc">
+<li class="tocline">
+<a class="tocxref" href="#introduction">
 <span class="secno">
 1.
 </span>
@@ -1527,7 +1374,7 @@
 </a>
 <ul class="toc">
 <li class="tocline">
-<a href="#how-to-read-this-document" class="tocxref">
+<a class="tocxref" href="#how-to-read-this-document">
 <span class="secno">
 1.1
 </span>
@@ -1541,7 +1388,7 @@
 </ul>
 </li>
 <li class="tocline">
-<a href="#design-goals-and-rationale" class="tocxref">
+<a class="tocxref" href="#design-goals-and-rationale">
 <span class="secno">
 2.
 </span>
@@ -1552,7 +1399,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#terminology" class="tocxref">
+<a class="tocxref" href="#terminology">
 <span class="secno">
 3.
 </span>
@@ -1560,7 +1407,7 @@
 </a>
 <ul class="toc">
 <li class="tocline">
-<a href="#general-terminology" class="tocxref">
+<a class="tocxref" href="#general-terminology">
 <span class="secno">
 3.1
 </span>
@@ -1569,7 +1416,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#data-model-overview" class="tocxref">
+<a class="tocxref" href="#data-model-overview">
 <span class="secno">
 3.2
 </span>
@@ -1579,7 +1426,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#syntax-tokens-and-keywords" class="tocxref">
+<a class="tocxref" href="#syntax-tokens-and-keywords">
 <span class="secno">
 3.3
 </span>
@@ -1592,7 +1439,7 @@
 </ul>
 </li>
 <li class="tocline">
-<a href="#conformance" class="tocxref">
+<a class="tocxref" href="#conformance">
 <span class="secno">
 4.
 </span>
@@ -1600,7 +1447,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#basic-concepts" class="tocxref">
+<a class="tocxref" href="#basic-concepts">
 <span class="secno">
 5.
 </span>
@@ -1609,7 +1456,7 @@
 </a>
 <ul class="toc">
 <li class="tocline">
-<a href="#the-context" class="tocxref">
+<a class="tocxref" href="#the-context">
 <span class="secno">
 5.1
 </span>
@@ -1618,7 +1465,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#iris" class="tocxref">
+<a class="tocxref" href="#iris">
 <span class="secno">
 5.2
 </span>
@@ -1626,7 +1473,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#node-identifiers" class="tocxref">
+<a class="tocxref" href="#node-identifiers">
 <span class="secno">
 5.3
 </span>
@@ -1635,7 +1482,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#specifying-the-type" class="tocxref">
+<a class="tocxref" href="#specifying-the-type">
 <span class="secno">
 5.4
 </span>
@@ -1647,7 +1494,7 @@
 </ul>
 </li>
 <li class="tocline">
-<a href="#advanced-concepts" class="tocxref">
+<a class="tocxref" href="#advanced-concepts">
 <span class="secno">
 6.
 </span>
@@ -1656,7 +1503,7 @@
 </a>
 <ul class="toc">
 <li class="tocline">
-<a href="#base-iri" class="tocxref">
+<a class="tocxref" href="#base-iri">
 <span class="secno">
 6.1
 </span>
@@ -1667,7 +1514,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#default-vocabulary" class="tocxref">
+<a class="tocxref" href="#default-vocabulary">
 <span class="secno">
 6.2
 </span>
@@ -1676,7 +1523,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#compact-iris" class="tocxref">
+<a class="tocxref" href="#compact-iris">
 <span class="secno">
 6.3
 </span>
@@ -1685,7 +1532,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#typed-values" class="tocxref">
+<a class="tocxref" href="#typed-values">
 <span class="secno">
 6.4
 </span>
@@ -1694,7 +1541,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#type-coercion" class="tocxref">
+<a class="tocxref" href="#type-coercion">
 <span class="secno">
 6.5
 </span>
@@ -1703,7 +1550,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#embedding" class="tocxref">
+<a class="tocxref" href="#embedding">
 <span class="secno">
 6.6
 </span>
@@ -1711,7 +1558,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#advanced-context-usage" class="tocxref">
+<a class="tocxref" href="#advanced-context-usage">
 <span class="secno">
 6.7
 </span>
@@ -1721,7 +1568,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#interpreting-json-as-json-ld" class="tocxref">
+<a class="tocxref" href="#interpreting-json-as-json-ld">
 <span class="secno">
 6.8
 </span>
@@ -1732,7 +1579,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#string-internationalization" class="tocxref">
+<a class="tocxref" href="#string-internationalization">
 <span class="secno">
 6.9
 </span>
@@ -1741,7 +1588,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#iri-expansion-within-a-context" class="tocxref">
+<a class="tocxref" href="#iri-expansion-within-a-context">
 <span class="secno">
 6.10
 </span>
@@ -1755,7 +1602,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#sets-and-lists" class="tocxref">
+<a class="tocxref" href="#sets-and-lists">
 <span class="secno">
 6.11
 </span>
@@ -1765,7 +1612,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#reverse-properties" class="tocxref">
+<a class="tocxref" href="#reverse-properties">
 <span class="secno">
 6.12
 </span>
@@ -1774,7 +1621,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#named-graphs" class="tocxref">
+<a class="tocxref" href="#named-graphs">
 <span class="secno">
 6.13
 </span>
@@ -1783,7 +1630,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#identifying-blank-nodes" class="tocxref">
+<a class="tocxref" href="#identifying-blank-nodes">
 <span class="secno">
 6.14
 </span>
@@ -1793,7 +1640,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#aliasing-keywords" class="tocxref">
+<a class="tocxref" href="#aliasing-keywords">
 <span class="secno">
 6.15
 </span>
@@ -1802,7 +1649,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#data-indexing" class="tocxref">
+<a class="tocxref" href="#data-indexing">
 <span class="secno">
 6.16
 </span>
@@ -1811,7 +1658,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#expanded-document-form" class="tocxref">
+<a class="tocxref" href="#expanded-document-form">
 <span class="secno">
 6.17
 </span>
@@ -1821,7 +1668,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#compacted-document-form" class="tocxref">
+<a class="tocxref" href="#compacted-document-form">
 <span class="secno">
 6.18
 </span>
@@ -1831,7 +1678,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#flattened-document-form" class="tocxref">
+<a class="tocxref" href="#flattened-document-form">
 <span class="secno">
 6.19
 </span>
@@ -1841,7 +1688,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#embedding-json-ld-in-html-documents" class="tocxref">
+<a class="tocxref" href="#embedding-json-ld-in-html-documents">
 <span class="secno">
 6.20
 </span>
@@ -1855,7 +1702,7 @@
 </ul>
 </li>
 <li class="tocline">
-<a href="#data-model" class="tocxref">
+<a class="tocxref" href="#data-model">
 <span class="secno">
 7.
 </span>
@@ -1864,7 +1711,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#json-ld-grammar" class="tocxref">
+<a class="tocxref" href="#json-ld-grammar">
 <span class="secno">
 8.
 </span>
@@ -1873,7 +1720,7 @@
 </a>
 <ul class="toc">
 <li class="tocline">
-<a href="#terms" class="tocxref">
+<a class="tocxref" href="#terms">
 <span class="secno">
 8.1
 </span>
@@ -1881,7 +1728,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#node-objects" class="tocxref">
+<a class="tocxref" href="#node-objects">
 <span class="secno">
 8.2
 </span>
@@ -1890,7 +1737,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#value-objects" class="tocxref">
+<a class="tocxref" href="#value-objects">
 <span class="secno">
 8.3
 </span>
@@ -1899,7 +1746,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#lists-and-sets" class="tocxref">
+<a class="tocxref" href="#lists-and-sets">
 <span class="secno">
 8.4
 </span>
@@ -1909,7 +1756,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#language-maps" class="tocxref">
+<a class="tocxref" href="#language-maps">
 <span class="secno">
 8.5
 </span>
@@ -1918,7 +1765,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#index-maps" class="tocxref">
+<a class="tocxref" href="#index-maps">
 <span class="secno">
 8.6
 </span>
@@ -1927,7 +1774,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#context-definitions" class="tocxref">
+<a class="tocxref" href="#context-definitions">
 <span class="secno">
 8.7
 </span>
@@ -1938,7 +1785,7 @@
 </ul>
 </li>
 <li class="tocline">
-<a href="#relationship-to-rdf" class="tocxref">
+<a class="tocxref" href="#relationship-to-rdf">
 <span class="secno">
 9.
 </span>
@@ -1948,7 +1795,7 @@
 </a>
 <ul class="toc">
 <li class="tocline">
-<a href="#serializing-deserializing-rdf" class="tocxref">
+<a class="tocxref" href="#serializing-deserializing-rdf">
 <span class="secno">
 9.1
 </span>
@@ -1959,7 +1806,7 @@
 </ul>
 </li>
 <li class="tocline">
-<a href="#relationship-to-other-linked-data-formats" class="tocxref">
+<a class="tocxref" href="#relationship-to-other-linked-data-formats">
 <span class="secno">
 A.
 </span>
@@ -1972,7 +1819,7 @@
 </a>
 <ul class="toc">
 <li class="tocline">
-<a href="#turtle" class="tocxref">
+<a class="tocxref" href="#turtle">
 <span class="secno">
 A.1
 </span>
@@ -1980,7 +1827,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#rdfa" class="tocxref">
+<a class="tocxref" href="#rdfa">
 <span class="secno">
 A.2
 </span>
@@ -1988,7 +1835,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#microformats" class="tocxref">
+<a class="tocxref" href="#microformats">
 <span class="secno">
 A.3
 </span>
@@ -1996,7 +1843,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#microdata" class="tocxref">
+<a class="tocxref" href="#microdata">
 <span class="secno">
 A.4
 </span>
@@ -2006,7 +1853,7 @@
 </ul>
 </li>
 <li class="tocline">
-<a href="#iana-considerations" class="tocxref">
+<a class="tocxref" href="#iana-considerations">
 <span class="secno">
 B.
 </span>
@@ -2015,7 +1862,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#acknowledgements" class="tocxref">
+<a class="tocxref" href="#acknowledgements">
 <span class="secno">
 C.
 </span>
@@ -2023,7 +1870,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#references" class="tocxref">
+<a class="tocxref" href="#references">
 <span class="secno">
 D.
 </span>
@@ -2031,7 +1878,7 @@
 </a>
 <ul class="toc">
 <li class="tocline">
-<a href="#normative-references" class="tocxref">
+<a class="tocxref" href="#normative-references">
 <span class="secno">
 D.1
 </span>
@@ -2040,7 +1887,7 @@
 </a>
 </li>
 <li class="tocline">
-<a href="#informative-references" class="tocxref">
+<a class="tocxref" href="#informative-references">
 <span class="secno">
 D.2
 </span>
@@ -2052,8 +1899,8 @@
 </li>
 </ul>
 </section>
-<section class="informative" id="introduction">
-<h2 aria-level="1" role="heading" id="h2_introduction">
+<section id="introduction" class="informative">
+<h2 id="h2_introduction" role="heading" aria-level="1">
 <span class="secno">
 1.
 </span>
@@ -2072,7 +1919,7 @@
 Data
 [
 <cite>
-<a class="bibref" href="#bib-LINKED-DATA">
+<a href="#bib-LINKED-DATA" class="bibref">
 LINKED-DATA
 </a>
 </cite>
@@ -2141,7 +1988,7 @@
 JSON
 [
 <cite>
-<a class="bibref" href="#bib-RFC4627">
+<a href="#bib-RFC4627" class="bibref">
 RFC4627
 </a>
 </cite>
@@ -2228,7 +2075,7 @@
 identifier
 mechanism
 for
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
 JSON
 objects
 </a>
@@ -2236,7 +2083,7 @@
 the
 use
 of
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 IRIs
 </a>,
 </li>
@@ -2255,12 +2102,12 @@
 mapping
 them
 to
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 IRIs
 </a>
 via
 a
-<a class="tref internalDFN" title="context" href="#dfn-context">
+<a href="#dfn-context" title="context" class="tref internalDFN">
 context
 </a>,
 </li>
@@ -2273,7 +2120,7 @@
 value
 in
 a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
 JSON
 object
 </a>
@@ -2281,7 +2128,7 @@
 refer
 to
 a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
 JSON
 object
 </a>
@@ -2298,7 +2145,7 @@
 ability
 to
 annotate
-<a class="tref internalDFN" title="string" href="#dfn-string">
+<a href="#dfn-string" title="string" class="tref internalDFN">
 strings
 </a>
 with
@@ -2358,7 +2205,7 @@
 RDF
 [
 <cite>
-<a class="bibref" href="#bib-RDF11-CONCEPTS">
+<a href="#bib-RDF11-CONCEPTS" class="bibref">
 RDF11-CONCEPTS
 </a>
 </cite>
@@ -2433,7 +2280,7 @@
 Turtle
 [
 <cite>
-<a class="bibref" href="#bib-TURTLE">
+<a href="#bib-TURTLE" class="bibref">
 TURTLE
 </a>
 </cite>
@@ -2449,7 +2296,7 @@
 are
 in
 section
-<a href="#relationship-to-rdf" class="sec-ref">
+<a class="sec-ref" href="#relationship-to-rdf">
 <span class="secno">
 9.
 </span>
@@ -2507,8 +2354,8 @@
 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">
+<section id="how-to-read-this-document" class="informative">
+<h3 id="h3_how-to-read-this-document" role="heading" aria-level="2">
 <span class="secno">
 1.1
 </span>
@@ -2650,7 +2497,7 @@
 specification
 [
 <cite>
-<a class="bibref" href="#bib-JSON-LD-API">
+<a href="#bib-JSON-LD-API" class="bibref">
 JSON-LD-API
 </a>
 </cite>
@@ -2697,7 +2544,7 @@
 in
 [
 <cite>
-<a class="bibref" href="#bib-RFC4627">
+<a href="#bib-RFC4627" class="bibref">
 RFC4627
 </a>
 </cite>
@@ -2795,8 +2642,8 @@
 </p>
 </section>
 </section>
-<section class="informative" id="design-goals-and-rationale">
-<h2 aria-level="1" role="heading" id="h2_design-goals-and-rationale">
+<section id="design-goals-and-rationale" class="informative">
+<h2 id="h2_design-goals-and-rationale" role="heading" aria-level="1">
 <span class="secno">
 2.
 </span>
@@ -2860,7 +2707,7 @@
 JSON
 and
 two
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keywords
 </a>
 (
@@ -3119,7 +2966,7 @@
 RDF
 [
 <cite>
-<a class="bibref" href="#bib-RDF11-CONCEPTS">
+<a href="#bib-RDF11-CONCEPTS" class="bibref">
 RDF11-CONCEPTS
 </a>
 </cite>
@@ -3161,7 +3008,7 @@
 are
 in
 section
-<a href="#relationship-to-rdf" class="sec-ref">
+<a class="sec-ref" href="#relationship-to-rdf">
 <span class="secno">
 9.
 </span>
@@ -3174,15 +3021,15 @@
 </dd>
 </dl>
 </section>
-<section class="normative" id="terminology">
-<h2 aria-level="1" role="heading" id="h2_terminology">
+<section id="terminology" class="normative">
+<h2 id="h2_terminology" role="heading" aria-level="1">
 <span class="secno">
 3.
 </span>
 Terminology
 </h2>
-<section class="normative" id="general-terminology">
-<h3 aria-level="2" role="heading" id="h3_general-terminology">
+<section id="general-terminology" class="normative">
+<h3 id="h3_general-terminology" role="heading" aria-level="2">
 <span class="secno">
 3.1
 </span>
@@ -3202,7 +3049,7 @@
 JSON
 [
 <cite>
-<a class="bibref" href="#bib-RFC4627">
+<a href="#bib-RFC4627" class="bibref">
 RFC4627
 </a>
 </cite>
@@ -3218,7 +3065,7 @@
 in
 [
 <cite>
-<a class="bibref" href="#bib-RFC4627">
+<a href="#bib-RFC4627" class="bibref">
 RFC4627
 </a>
 </cite>
@@ -3229,7 +3076,7 @@
 </p>
 <dl>
 <dt>
-<dfn title="json-object" id="dfn-json-object">
+<dfn id="dfn-json-object" title="json-object">
 JSON
 object
 </dfn>
@@ -3256,7 +3103,7 @@
 key
 is
 a
-<a class="tref internalDFN" title="string" href="#dfn-string">
+<a href="#dfn-string" title="string" class="tref internalDFN">
 string
 </a>.
 A
@@ -3298,7 +3145,7 @@
 unique.
 </dd>
 <dt>
-<dfn title="array" id="dfn-array">
+<dfn id="dfn-array" title="array">
 array
 </dfn>
 </dt>
@@ -3382,7 +3229,7 @@
 ).
 </dd>
 <dt>
-<dfn title="string" id="dfn-string">
+<dfn id="dfn-string" title="string">
 string
 </dfn>
 </dt>
@@ -3409,7 +3256,7 @@
 necessary).
 </dd>
 <dt>
-<dfn title="number" id="dfn-number">
+<dfn id="dfn-number" title="number">
 number
 </dfn>
 </dt>
@@ -3443,11 +3290,11 @@
 allowed.
 </dd>
 <dt>
-<dfn title="true" id="dfn-true">
+<dfn id="dfn-true" title="true">
 true
 </dfn>
 and
-<dfn title="false" id="dfn-false">
+<dfn id="dfn-false" title="false">
 false
 </dfn>
 </dt>
@@ -3466,13 +3313,13 @@
 states.
 </dd>
 <dt>
-<dfn title="null" id="dfn-null">
+<dfn id="dfn-null" title="null">
 null
 </dfn>
 </dt>
 <dd>
 The
-<a class="tref internalDFN" title="null" href="#dfn-null">
+<a href="#dfn-null" title="null" class="tref internalDFN">
 null
 </a>
 value,
@@ -3499,20 +3346,20 @@
 the
 value
 is
-<a class="tref internalDFN" title="null" href="#dfn-null">
+<a href="#dfn-null" title="null" class="tref internalDFN">
 null
 </a>
 explicitly
 decouples
 a
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>
 's
 association
 with
 an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -3530,7 +3377,7 @@
 whose
 value
 is
-<a class="tref internalDFN" title="null" href="#dfn-null">
+<a href="#dfn-null" title="null" class="tref internalDFN">
 null
 </a>
 has
@@ -3559,7 +3406,7 @@
 is
 set
 to
-<a class="tref internalDFN" title="null" href="#dfn-null">
+<a href="#dfn-null" title="null" class="tref internalDFN">
 null
 </a>
 in
@@ -3568,7 +3415,7 @@
 then
 the
 entire
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
 JSON
 object
 </a>
@@ -3577,8 +3424,8 @@
 </dd>
 </dl>
 </section>
-<section class="informative" id="data-model-overview">
-<h3 aria-level="2" role="heading" id="h3_data-model-overview">
+<section id="data-model-overview" class="informative">
+<h3 id="h3_data-model-overview" role="heading" aria-level="2">
 <span class="secno">
 3.2
 </span>
@@ -3607,24 +3454,24 @@
 a
 labeled,
 directed
-<a class="tref internalDFN" title="graph" href="#dfn-graph">
+<a href="#dfn-graph" title="graph" class="tref internalDFN">
 graph
 </a>.
 The
 graph
 contains
-<a class="tref internalDFN" title="node" href="#dfn-node">
+<a href="#dfn-node" title="node" class="tref internalDFN">
 nodes
 </a>,
 which
 are
 connected
 by
-<a class="tref internalDFN" title="edge" href="#dfn-edge">
+<a href="#dfn-edge" title="edge" class="tref internalDFN">
 edges
 </a>.
 A
-<a class="tref internalDFN" title="node" href="#dfn-node">
+<a href="#dfn-node" title="node" class="tref internalDFN">
 node
 </a>
 is
@@ -3633,13 +3480,13 @@
 such
 as
 a
-<a class="tref internalDFN" title="string" href="#dfn-string">
+<a href="#dfn-string" title="string" class="tref internalDFN">
 string
 </a>,
-<a class="tref internalDFN" title="number" href="#dfn-number">
+<a href="#dfn-number" title="number" class="tref internalDFN">
 number
 </a>,
-<a class="tref internalDFN" title="typed-value" href="#dfn-typed-value">
+<a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">
 typed
 values
 </a>
@@ -3649,7 +3496,7 @@
 times)
 or
 an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -3661,12 +3508,12 @@
 special
 class
 of
-<a class="tref internalDFN" title="node" href="#dfn-node">
+<a href="#dfn-node" title="node" class="tref internalDFN">
 node
 </a>
 called
 a
-<a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">
+<a href="#dfn-blank-node" title="blank-node" class= "tref internalDFN">
 blank
 node
 </a>,
@@ -3686,12 +3533,12 @@
 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">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+<a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">
 Blank
 nodes
 </a>
@@ -3699,7 +3546,7 @@
 identified
 using
 a
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
 blank
 node
 identifier
@@ -3731,7 +3578,7 @@
 model,
 see
 section
-<a href="#data-model" class="sec-ref">
+<a class="sec-ref" href="#data-model">
 <span class="secno">
 7.
 </span>
@@ -3772,7 +3619,7 @@
 related,
 see
 section
-<a href="#relationship-to-rdf" class="sec-ref">
+<a class="sec-ref" href="#relationship-to-rdf">
 <span class="secno">
 9.
 </span>
@@ -3784,8 +3631,8 @@
 </a>.
 </p>
 </section>
-<section class="normative" id="syntax-tokens-and-keywords">
-<h3 aria-level="2" role="heading" id="h3_syntax-tokens-and-keywords">
+<section id="syntax-tokens-and-keywords" class="normative">
+<h3 id="h3_syntax-tokens-and-keywords" role="heading" aria-level="2">
 <span class="secno">
 3.3
 </span>
@@ -3803,7 +3650,7 @@
 syntax
 tokens
 and
-<dfn title="keyword" id="dfn-keyword">
+<dfn id="dfn-keyword" title="keyword">
 keywords
 </dfn>
 that
@@ -3840,7 +3687,7 @@
 names
 are
 called
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 terms
 </a>
 and
@@ -3892,11 +3739,11 @@
 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">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+IRIs
+</a>
+or
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
 blank
 node
 identifiers
@@ -3930,7 +3777,7 @@
 with
 a
 particular
-<a class="tref internalDFN" title="property" href="#dfn-property">
+<a href="#dfn-property" title="property" class="tref internalDFN">
 property
 </a>
 in
@@ -4005,11 +3852,11 @@
 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">
+<a href="#dfn-node" title="node" class="tref internalDFN">
+node
+</a>
+or
+<a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">
 typed
 value
 </a>.
@@ -4040,7 +3887,7 @@
 type
 for
 a
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>.
 This
@@ -4199,7 +4046,7 @@
 </abbr>
 against
 which
-<a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">
+<a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">
 relative
 IRIs
 </a>
@@ -4237,7 +4084,7 @@
 a
 common
 prefix
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -4264,7 +4111,7 @@
 to
 express
 a
-<a class="tref internalDFN" title="graph" href="#dfn-graph">
+<a href="#dfn-graph" title="graph" class="tref internalDFN">
 graph
 </a>.
 This
@@ -4293,7 +4140,7 @@
 values
 that
 use
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
 compact
 IRIs
 </a>.
@@ -4302,7 +4149,7 @@
 <p>
 All
 keys,
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keywords
 </a>,
 and
@@ -4314,8 +4161,8 @@
 </p>
 </section>
 </section>
-<section class="normative" id="conformance">
-<h2 aria-level="1" role="heading" id="h2_conformance">
+<section id="conformance" class="normative">
+<h2 id="h2_conformance" role="heading" aria-level="1">
 <span class="secno">
 4.
 </span>
@@ -4370,7 +4217,7 @@
 </p>
 <p>
 A
-<a class="tref internalDFN" title="json-ld-document" href="#dfn-json-ld-document">
+<a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">
 JSON-LD
 document
 </a>
@@ -4386,7 +4233,7 @@
 statements
 in
 appendix
-<a href="#json-ld-grammar" class="sec-ref">
+<a class="sec-ref" href="#json-ld-grammar">
 <span class="secno">
 8.
 </span>
@@ -4438,42 +4285,42 @@
 The
 key
 words
-<em class="rfc2119" title="MUST">
+<em title="MUST" class="rfc2119">
 MUST
 </em>,
-<em class="rfc2119" title="MUST NOT">
+<em title="MUST NOT" class="rfc2119">
 MUST
 NOT
 </em>,
-<em class="rfc2119" title="REQUIRED">
+<em title="REQUIRED" class="rfc2119">
 REQUIRED
 </em>,
-<em class="rfc2119" title="SHALL">
+<em title="SHALL" class="rfc2119">
 SHALL
 </em>,
-<em class="rfc2119" title="SHALL NOT">
+<em title="SHALL NOT" class="rfc2119">
 SHALL
 NOT
 </em>,
-<em class="rfc2119" title="SHOULD">
+<em title="SHOULD" class="rfc2119">
 SHOULD
 </em>,
-<em class="rfc2119" title="SHOULD NOT">
+<em title="SHOULD NOT" class="rfc2119">
 SHOULD
 NOT
 </em>,
-<em class="rfc2119" title="RECOMMENDED">
+<em title="RECOMMENDED" class="rfc2119">
 RECOMMENDED
 </em>,
-<em class="rfc2119" title="NOT RECOMMENDED">
+<em title="NOT RECOMMENDED" class="rfc2119">
 NOT
 RECOMMENDED
 </em>,
-<em class="rfc2119" title="MAY">
+<em title="MAY" class="rfc2119">
 MAY
 </em>,
 and
-<em class="rfc2119" title="OPTIONAL">
+<em title="OPTIONAL" class="rfc2119">
 OPTIONAL
 </em>
 in
@@ -4486,15 +4333,15 @@
 in
 [
 <cite>
-<a class="bibref" href="#bib-RFC2119">
+<a href="#bib-RFC2119" class="bibref">
 RFC2119
 </a>
 </cite>
 ].
 </p>
 </section>
-<section class="informative" id="basic-concepts">
-<h2 aria-level="1" role="heading" id="h2_basic-concepts">
+<section id="basic-concepts" class="informative">
+<h2 id="h2_basic-concepts" role="heading" aria-level="1">
 <span class="secno">
 5.
 </span>
@@ -4513,7 +4360,7 @@
 JSON
 [
 <cite>
-<a class="bibref" href="#bib-RFC4627">
+<a href="#bib-RFC4627" class="bibref">
 RFC4627
 </a>
 </cite>
@@ -4592,7 +4439,20 @@
 this
 section:
 </p>
-  <div class="example"><div class="example-title"><span>Example 1</span>: Sample JSON document</div><pre class="example">{
+<del class="diff-old">  {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+1
+</ins></span>:<ins class="diff-chg">
+Sample
+JSON
+document
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "name": "Manu Sporny",
   "homepage": "http://manu.sporny.org/",
   "image": "http://manu.sporny.org/images/manu.png"
@@ -4686,7 +4546,7 @@
 in
 general,
 uses
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 IRIs
 </a>
 (Internationalized
@@ -4697,7 +4557,7 @@
 in
 [
 <cite>
-<a class="bibref" href="#bib-RFC3987">
+<a href="#bib-RFC3987" class="bibref">
 RFC3987
 </a>
 </cite>
@@ -4710,7 +4570,7 @@
 is
 to
 use
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 IRIs
 </a>
 to
@@ -4731,7 +4591,7 @@
 is
 useful
 for
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 terms
 </a>,
 like
@@ -4745,7 +4605,7 @@
 to
 expand
 to
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 IRIs
 </a>
 so
@@ -4767,7 +4627,7 @@
 to
 use
 this
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -4798,7 +4658,7 @@
 is
 known
 as
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -4823,12 +4683,29 @@
 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">{
-<del class="diff-old">  "": "Manu Sporny",
+<del class="diff-old">  {
+  "": "Manu Sporny",
   ", ← The '@id' keyword means 'This value is an identifier that is an IRI'
   "
 </del>
-<ins class="diff-chg">  "<span class="highlight">http://schema.org/name</span>": "Manu Sporny",
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+2
+</ins></span>:<ins class="diff-chg">
+Sample
+JSON-LD
+document
+using
+full
+IRIs
+instead
+of
+terms
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+  "<span class="highlight">http://schema.org/name</span>": "Manu Sporny",
   "<span class="highlight">http://schema.org/url</span>": <span class="highlight">{ "@id": </span>"http://manu.sporny.org/" <span class="highlight">}</span>,  <span class="comment">← The '@id' keyword means 'This value is an identifier that is an IRI'</span>
   "<span class="highlight">http://schema.org/image</span>": <span class="highlight">{ "@id": </span>"http://manu.sporny.org/images/manu.png" <span class="highlight">}</span>
 </ins>
@@ -4847,7 +4724,7 @@
 identified
 by
 an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -4856,7 +4733,7 @@
 all
 values
 representing
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 IRIs
 </a>
 are
@@ -4869,7 +4746,7 @@
 <code>
 @id
 </code>
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keyword
 </a>.
 While
@@ -4910,7 +4787,7 @@
 notion
 of
 a
-<a class="tref internalDFN" title="context" href="#dfn-context">
+<a href="#dfn-context" title="context" class="tref internalDFN">
 context
 </a>
 as
@@ -4920,8 +4797,8 @@
 next
 section.
 </p>
-<section class="informative" id="the-context">
-<h3 aria-level="2" role="heading" id="h3_the-context">
+<section id="the-context" class="informative">
+<h3 id="h3_the-context" role="heading" aria-level="2">
 <span class="secno">
 5.1
 </span>
@@ -5018,21 +4895,21 @@
 Simply
 speaking,
 a
-<dfn title="context" id="dfn-context">
+<dfn id="dfn-context" title="context">
 context
 </dfn>
 is
 used
 to
 map
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 terms
 </a>
 to
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-IRIs
-</a>.
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+IRIs
+</a>.
+<a href="#dfn-term" title="term" class="tref internalDFN">
 Terms
 </a>
 are
@@ -5041,7 +4918,7 @@
 and
 any
 valid
-<a class="tref internalDFN" title="string" href="#dfn-string">
+<a href="#dfn-string" title="string" class="tref internalDFN">
 string
 </a>
 that
@@ -5050,15 +4927,15 @@
 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">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
+keyword
+</a>
+can
+be
+used
+as
+a
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>.
 </p>
@@ -5072,7 +4949,7 @@
 previous
 section,
 a
-<a class="tref internalDFN" title="context" href="#dfn-context">
+<a href="#dfn-context" title="context" class="tref internalDFN">
 context
 </a>
 would
@@ -5081,10 +4958,27 @@
 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">{
-<del class="diff-old">  "@context":
-</del>
-  <span class="highlight">"@context":
+<del class="diff-old">    {
+  "@context":
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+3
+</ins></span>:<ins class="diff-chg">
+Context
+for
+the
+sample
+document
+in
+the
+previous
+section
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>  <span class="highlight">"@context":
   {
 <del class="diff-old">    "name": "http://schema.org/name", 
 </del>
@@ -5113,7 +5007,7 @@
 <p>
 As
 the
-<a class="tref internalDFN" title="context" href="#dfn-context">
+<a href="#dfn-context" title="context" class="tref internalDFN">
 context
 </a>
 above
@@ -5122,7 +5016,7 @@
 value
 of
 a
-<dfn title="term-definition" id="dfn-term-definition">
+<dfn id="dfn-term-definition" title="term-definition">
 term
 definition
 </dfn>
@@ -5134,19 +5028,19 @@
 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">
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+to
+an
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+or
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
 JSON
 object
 </a>.
@@ -5154,7 +5048,7 @@
 <p>
 When
 a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
 JSON
 object
 </a>
@@ -5167,7 +5061,7 @@
 is
 called
 an
-<dfn title="expanded-term-definition" id="dfn-expanded-term-definition">
+<dfn id="dfn-expanded-term-definition" title="expanded-term-definition">
 expanded
 term
 definition
@@ -5196,10 +5090,10 @@
 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">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+IRIs
+</a>.
+<a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">
 Expanded
 term
 definitions
@@ -5219,7 +5113,7 @@
 to
 specify
 whether
-<a class="tref internalDFN" title="array" href="#dfn-array">
+<a href="#dfn-array" title="array" class="tref internalDFN">
 array
 </a>
 values
@@ -5233,7 +5127,7 @@
 or
 lists
 </a>.
-<a class="tref internalDFN" title="expanded-term-definition" href="#dfn-expanded-term-definition">
+<a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">
 Expanded
 term
 definitions
@@ -5242,11 +5136,11 @@
 be
 defined
 using
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 </a>
 or
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
 compact
 IRIs
 </a>
@@ -5264,11 +5158,11 @@
 information
 with
 an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 </a>
 or
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
 compact
 <abbr title="Internationalized Resource Identifier">
 IRI
@@ -5276,7 +5170,7 @@
 </a>.
 </p>
 <p>
-<a class="tref internalDFN" title="context" href="#dfn-context">
+<a href="#dfn-context" title="context" class="tref internalDFN">
 Contexts
 </a>
 can
@@ -5332,10 +5226,22 @@
 example
 below:
 </p>
-    <div class="example"><div class="example-title"><span>Example 4</span>: Referencing a JSON-LD context</div><pre class="example">{
-<del class="diff-old">  
-</del>
-  <span class="highlight">"@context": "http://json-ld.org/contexts/person.jsonld",</span>
+<del class="diff-old">    {
+  
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+4
+</ins></span>:<ins class="diff-chg">
+Referencing
+a
+JSON-LD
+context
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>  <span class="highlight">"@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"
@@ -5354,7 +5260,7 @@
 terms
 map
 to
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 IRIs
 </a>
 in
@@ -5383,7 +5289,7 @@
 interpreted
 as
 an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -5446,7 +5352,7 @@
 documentation
 about
 the
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 terms
 </a>
 declared
@@ -5492,7 +5398,7 @@
 by
 referencing
 a
-<a class="tref internalDFN" title="context" href="#dfn-context">
+<a href="#dfn-context" title="context" class="tref internalDFN">
 context
 </a>
 via
@@ -5526,7 +5432,7 @@
 API
 [
 <cite>
-<a class="bibref" href="#bib-JSON-LD-API">
+<a href="#bib-JSON-LD-API" class="bibref">
 JSON-LD-API
 </a>
 </cite>
@@ -5534,11 +5440,11 @@
 </p>
 <p>
 In
-<a class="tref internalDFN" title="json-ld-document" href="#dfn-json-ld-document">
+<a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">
 JSON-LD
 documents
 </a>,
-<a class="tref internalDFN" title="context" href="#dfn-context">
+<a href="#dfn-context" title="context" class="tref internalDFN">
 contexts
 </a>
 may
@@ -5580,10 +5486,21 @@
 different
 handling.
 </p>
-    <div class="example"><div class="example-title"><span>Example 5</span>: In-line context definition</div><pre class="example">{
-<del class="diff-old">  "@context":
-</del>
-  <span class="highlight">"@context":
+<del class="diff-old">    {
+  "@context":
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+5
+</ins></span>:<ins class="diff-chg">
+In-line
+context
+definition
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>  <span class="highlight">"@context":
   {
     "name": "http://schema.org/name",
     "image": {
@@ -5626,7 +5543,7 @@
 covered
 in
 section
-<a href="#advanced-concepts" class="sec-ref">
+<a class="sec-ref" href="#advanced-concepts">
 <span class="secno">
 6.
 </span>
@@ -5637,8 +5554,8 @@
 </a>.
 </p>
 </section>
-<section class="informative" id="iris">
-<h3 aria-level="2" role="heading" id="h3_iris">
+<section id="iris" class="informative">
+<h3 id="h3_iris" role="heading" aria-level="2">
 <span class="secno">
 5.2
 </span>
@@ -5653,7 +5570,7 @@
 </em>
 </p>
 <p>
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 IRIs
 </a>
 (Internationalized
@@ -5661,7 +5578,7 @@
 Identifiers
 [
 <cite>
-<a class="bibref" href="#bib-RFC3987">
+<a href="#bib-RFC3987" class="bibref">
 RFC3987
 </a>
 </cite>
@@ -5676,11 +5593,11 @@
 is
 how
 most
-<a class="tref internalDFN" title="node" href="#dfn-node">
+<a href="#dfn-node" title="node" class="tref internalDFN">
 nodes
 </a>
 and
-<a class="tref internalDFN" title="property" href="#dfn-property">
+<a href="#dfn-property" title="property" class="tref internalDFN">
 properties
 </a>
 are
@@ -5693,7 +5610,7 @@
 represented
 as
 an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 <abbr title="Internationalized Resource Identifier">
 IRI
@@ -5701,14 +5618,14 @@
 </a>
 or
 a
-<a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">
+<a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">
 relative
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>.
 An
-<dfn title="absolute-iri" id="dfn-absolute-iri">
+<dfn id="dfn-absolute-iri" title="absolute-iri">
 absolute
 <abbr title="Internationalized Resource Identifier">
 IRI
@@ -5719,7 +5636,7 @@
 in
 [
 <cite>
-<a class="bibref" href="#bib-RFC3987">
+<a href="#bib-RFC3987" class="bibref">
 RFC3987
 </a>
 </cite>
@@ -5746,7 +5663,7 @@
 </em>
 segments.
 A
-<dfn title="relative-iri" id="dfn-relative-iri">
+<dfn id="dfn-relative-iri" title="relative-iri">
 relative
 <abbr title="Internationalized Resource Identifier">
 IRI
@@ -5763,7 +5680,7 @@
 to
 some
 other
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 <abbr title="Internationalized Resource Identifier">
 IRI
@@ -5772,7 +5689,7 @@
 In
 JSON-LD
 all
-<a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">
+<a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">
 relative
 IRIs
 </a>
@@ -5781,7 +5698,7 @@
 relative
 to
 the
-<dfn title="base-iri" id="dfn-base-iri">
+<dfn id="dfn-base-iri" title="base-iri">
 base
 <abbr title="Internationalized Resource Identifier">
 IRI
@@ -5790,14 +5707,14 @@
 </p>
 <p>
 A
-<a class="tref internalDFN" title="string" href="#dfn-string">
+<a href="#dfn-string" title="string" class="tref internalDFN">
 string
 </a>
 is
 interpreted
 as
 an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -5814,7 +5731,24 @@
 </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">{
+<del class="diff-old">  {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+6
+</ins></span>:<ins class="diff-chg">
+Values
+of
+@id
+are
+interpreted
+as
+IRI
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
 ...
 <del class="diff-old">  "homepage": { "": "http://example.com/" }
 </del>
@@ -5830,7 +5764,7 @@
 are
 interpreted
 as
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 IRIs
 </a>,
 can
@@ -5838,7 +5772,7 @@
 be
 expressed
 as
-<a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">
+<a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">
 relative
 IRIs
 </a>.
@@ -5856,7 +5790,7 @@
 http://example.com/about/
 </code>,
 the
-<a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">
+<a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">
 relative
 <abbr title="Internationalized Resource Identifier">
 IRI
@@ -5875,7 +5809,7 @@
 information
 on
 where
-<a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">
+<a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">
 relative
 IRIs
 </a>
@@ -5886,7 +5820,7 @@
 refer
 to
 section
-<a href="#json-ld-grammar" class="sec-ref">
+<a class="sec-ref" href="#json-ld-grammar">
 <span class="secno">
 8.
 </span>
@@ -5897,7 +5831,21 @@
 </a>
 ).
 </p>
-  <div class="example"><div class="example-title"><span>Example 7</span>: IRIs can be relative</div><pre class="example">{
+<del class="diff-old">  {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+7
+</ins></span>:<ins class="diff-chg">
+IRIs
+can
+be
+relative
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
 ...
 <del class="diff-old">  "homepage": { "": "../" }
 </del>
@@ -5908,7 +5856,7 @@
 </pre>
 </div>
 <p>
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 Absolute
 IRIs
 </a>
@@ -5923,7 +5871,21 @@
 like
 so:
 </p>
-  <div class="example"><div class="example-title"><span>Example 8</span>: IRI as a key</div><pre class="example">{
+<del class="diff-old">  {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+8
+</ins></span>:<ins class="diff-chg">
+IRI
+as
+a
+key
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
 ...
 <del class="diff-old">  "": "Manu Sporny",
 </del>
@@ -5947,7 +5909,7 @@
 interpreted
 as
 an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 <abbr title="Internationalized Resource Identifier">
 IRI
@@ -5966,21 +5928,34 @@
 key
 matches
 a
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>
 defined
 within
 the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
 active
 context
 </a>:
 </p>
-  <div class="example"><div class="example-title"><span>Example 9</span>: Term expansion from context definition</div><pre class="example">{
-<del class="diff-old">  "":
-</del>
-<ins class="diff-chg">  "<span class="highlight">@context</span>":
+<del class="diff-old">  {
+  "":
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+9
+</ins></span>:<ins class="diff-chg">
+Term
+expansion
+from
+context
+definition
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+  "<span class="highlight">@context</span>":
 </ins>
   {
 <del class="diff-old">    ""
@@ -6005,7 +5980,7 @@
 expand
 to
 an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -6032,7 +6007,7 @@
 <p>
 If
 type
-<a class="tref internalDFN" title="coercion" href="#dfn-coercion">
+<a href="#dfn-coercion" title="coercion" class="tref internalDFN">
 coercion
 </a>
 rules
@@ -6046,7 +6021,7 @@
 for
 a
 particular
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>
 or
@@ -6063,7 +6038,17 @@
 </p>
 <del class="diff-old">  
 </del>
-  <div class="example"><div class="example-title"><span>Example 10</span>: Type coercion</div><pre class="example">{<span class="highlight">
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+10
+</ins></span>:<ins class="diff-chg">
+Type
+coercion
+</ins></div><pre class="example"><ins class="diff-chg">
+{<span class="highlight">
+</ins>
   "@context":
   {
     ...
@@ -6096,12 +6081,12 @@
 as
 a
 JSON
-<a class="tref internalDFN" title="string" href="#dfn-string">
+<a href="#dfn-string" title="string" class="tref internalDFN">
 string
 </a>,
 the
 type
-<a class="tref internalDFN" title="coercion" href="#dfn-coercion">
+<a href="#dfn-coercion" title="coercion" class="tref internalDFN">
 coercion
 </a>
 rules
@@ -6135,7 +6120,7 @@
 <p>
 In
 summary,
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 IRIs
 </a>
 can
@@ -6152,7 +6137,7 @@
 </p>
 <ol>
 <li>
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
 JSON
 object
 </a>
@@ -6160,20 +6145,20 @@
 that
 have
 a
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>
 mapping
 in
 the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
 active
 context
 </a>
 expand
 to
 an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -6183,7 +6168,7 @@
 outside
 of
 the
-<a class="tref internalDFN" title="context-definition" href="#dfn-context-definition">
+<a href="#dfn-context-definition" title="context-definition" class="tref internalDFN">
 context
 definition
 </a>
@@ -6191,7 +6176,7 @@
 </li>
 <li>
 An
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -6200,7 +6185,7 @@
 generated
 for
 the
-<a class="tref internalDFN" title="string" href="#dfn-string">
+<a href="#dfn-string" title="string" class="tref internalDFN">
 string
 </a>
 value
@@ -6216,7 +6201,7 @@
 </li>
 <li>
 An
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -6225,7 +6210,7 @@
 generated
 for
 the
-<a class="tref internalDFN" title="string" href="#dfn-string">
+<a href="#dfn-string" title="string" class="tref internalDFN">
 string
 </a>
 value
@@ -6236,7 +6221,7 @@
 which
 there
 are
-<a class="tref internalDFN" title="coercion" href="#dfn-coercion">
+<a href="#dfn-coercion" title="coercion" class="tref internalDFN">
 coercion
 </a>
 rules
@@ -6287,7 +6272,7 @@
 covered
 in
 section
-<a href="#advanced-concepts" class="sec-ref">
+<a class="sec-ref" href="#advanced-concepts">
 <span class="secno">
 6.
 </span>
@@ -6298,8 +6283,8 @@
 </a>.
 </p>
 </section>
-<section class="informative" id="node-identifiers">
-<h3 aria-level="2" role="heading" id="h3_node-identifiers">
+<section id="node-identifiers" class="informative">
+<h3 id="h3_node-identifiers" role="heading" aria-level="2">
 <span class="secno">
 5.3
 </span>
@@ -6321,25 +6306,25 @@
 to
 externally
 reference
-<a class="tref internalDFN" title="node" href="#dfn-node">
+<a href="#dfn-node" title="node" class="tref internalDFN">
 nodes
 </a>
 in
 a
-<a class="tref internalDFN" title="graph" href="#dfn-graph">
+<a href="#dfn-graph" title="graph" class="tref internalDFN">
 graph
 </a>,
 it
 is
 important
 that
-<a class="tref internalDFN" title="node" href="#dfn-node">
+<a href="#dfn-node" title="node" class="tref internalDFN">
 nodes
 </a>
 have
 an
 identifier.
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 IRIs
 </a>
 are
@@ -6350,7 +6335,7 @@
 Linked
 Data,
 for
-<a class="tref internalDFN" title="node" href="#dfn-node">
+<a href="#dfn-node" title="node" class="tref internalDFN">
 nodes
 </a>
 to
@@ -6367,7 +6352,7 @@
 representation
 of
 that
-<a class="tref internalDFN" title="node" href="#dfn-node">
+<a href="#dfn-node" title="node" class="tref internalDFN">
 node
 </a>.
 This
@@ -6381,7 +6366,7 @@
 information
 about
 a
-<a class="tref internalDFN" title="node" href="#dfn-node">
+<a href="#dfn-node" title="node" class="tref internalDFN">
 node
 </a>.
 </p>
@@ -6389,7 +6374,7 @@
 In
 JSON-LD,
 a
-<a class="tref internalDFN" title="node" href="#dfn-node">
+<a href="#dfn-node" title="node" class="tref internalDFN">
 node
 </a>
 is
@@ -6399,11 +6384,24 @@
 <code>
 @id
 </code>
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keyword
 </a>:
 </p>
-  <div class="example"><div class="example-title"><span>Example 11</span>: Identifying a node</div><pre class="example">{
+<del class="diff-old">  {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+11
+</ins></span>:<ins class="diff-chg">
+Identifying
+a
+node
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context":
   {
     ...
@@ -6423,7 +6421,7 @@
 above
 contains
 a
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
 node
 object
 </a>
@@ -6463,7 +6461,7 @@
 covered
 in
 section
-<a href="#advanced-concepts" class="sec-ref">
+<a class="sec-ref" href="#advanced-concepts">
 <span class="secno">
 6.
 </span>
@@ -6474,8 +6472,8 @@
 </a>.
 </p>
 </section>
-<section class="informative" id="specifying-the-type">
-<h3 aria-level="2" role="heading" id="h3_specifying-the-type">
+<section id="specifying-the-type" class="informative">
+<h3 id="h3_specifying-the-type" role="heading" aria-level="2">
 <span class="secno">
 5.4
 </span>
@@ -6506,7 +6504,7 @@
 <code>
 @type
 </code>
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keyword
 </a>.
 In
@@ -6518,13 +6516,29 @@
 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">{
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+</p>
+<del class="diff-old">{
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+12
+</ins></span>:<ins class="diff-chg">
+Specifying
+the
+type
+for
+a
+node
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
 ...
   "@id": "http://example.org/places#BrewEats",
 <del class="diff-old">  "",
@@ -6548,11 +6562,27 @@
 by
 using
 an
-<a class="tref internalDFN" title="array" href="#dfn-array">
+<a href="#dfn-array" title="array" class="tref internalDFN">
 array
 </a>:
 </p>
-<div class="example"><div class="example-title"><span>Example 13</span>: Specifying multiple types for a node</div><pre class="example">{
+<del class="diff-old">{
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+13
+</ins></span>:<ins class="diff-chg">
+Specifying
+multiple
+types
+for
+a
+node
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
 ...
   "@id": "http://example.org/places#BrewEats",
 <del class="diff-old">  "
@@ -6576,18 +6606,35 @@
 also
 be
 a
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>
 defined
 in
 the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
 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">{
+<del class="diff-old">{
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+14
+</ins></span>:<ins class="diff-chg">
+Using
+a
+term
+to
+specify
+the
+type
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context": {
     ...
 <del class="diff-old">    
@@ -6605,7 +6652,7 @@
 </pre>
 </div>
 <div class="note">
-<div class="note-title" aria-level="3" role="heading" id="h_note_1">
+<div id="h_note_1" role="heading" aria-level="3" class="note-title">
 <span>
 <ins class="diff-chg">Note
 </ins></span></div><p class="">
@@ -6635,7 +6682,7 @@
 the
 </ins><code><ins class="diff-chg">
 @type
-</ins></code><a class="tref internalDFN" title="keyword" href="#dfn-keyword"><ins class="diff-chg">
+</ins></code><a href="#dfn-keyword" title="keyword" class="tref internalDFN"><ins class="diff-chg">
 keyword
 </ins></a><ins class="diff-chg">
 is
@@ -6653,14 +6700,14 @@
 type
 of
 a
-</ins><a class="tref internalDFN" title="node" href="#dfn-node"><ins class="diff-chg">
+</ins><a href="#dfn-node" title="node" class="tref internalDFN"><ins class="diff-chg">
 node
 </ins></a><ins class="diff-chg">
 but
 also
 to
 express
-</ins><a class="tref internalDFN" title="typed-value" href="#dfn-typed-value"><ins class="diff-chg">
+</ins><a href="#dfn-typed-value" title="typed-value" class="tref internalDFN"><ins class="diff-chg">
 typed
 values
 </ins></a><ins class="diff-chg">
@@ -6681,7 +6728,7 @@
 )
 and
 to
-</ins><a class="tref internalDFN" title="coercion" href="#dfn-coercion"><ins class="diff-chg">
+</ins><a href="#dfn-coercion" title="coercion" class="tref internalDFN"><ins class="diff-chg">
 type
 coerce
 </ins></a><ins class="diff-chg">
@@ -6705,13 +6752,13 @@
 used
 in
 a
-</ins><a class="tref internalDFN" title="context" href="#dfn-context"><ins class="diff-chg">
+</ins><a href="#dfn-context" title="context" class="tref internalDFN"><ins class="diff-chg">
 context
 </ins></a><ins class="diff-chg">
 to
 define
 a
-</ins><a class="tref internalDFN" title="node" href="#dfn-node"><ins class="diff-chg">
+</ins><a href="#dfn-node" title="node" class="tref internalDFN"><ins class="diff-chg">
 node's
 </ins></a><ins class="diff-chg">
 type.
@@ -6736,8 +6783,8 @@
 </div>
 </section>
 </section>
-<section class="normative" id="advanced-concepts">
-<h2 aria-level="1" role="heading" id="h2_advanced-concepts">
+<section id="advanced-concepts" class="normative">
+<h2 id="h2_advanced-concepts" role="heading" aria-level="1">
 <span class="secno">
 6.
 </span>
@@ -6773,8 +6820,8 @@
 more
 detail.
 </p>
-<section class="informative" id="base-iri">
-<h3 aria-level="2" role="heading" id="h3_base-iri">
+<section id="base-iri" class="informative">
+<h3 id="h3_base-iri" role="heading" aria-level="2">
 <span class="secno">
 6.1
 </span>
@@ -6794,7 +6841,7 @@
 <p>
 JSON-LD
 allows
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -6828,7 +6875,7 @@
 of
 [
 <cite>
-<a class="bibref" href="#bib-RFC3986">
+<a href="#bib-RFC3986" class="bibref">
 RFC3986
 </a>
 </cite>
@@ -6844,7 +6891,7 @@
 set
 with
 a
-<a class="tref internalDFN" title="context" href="#dfn-context">
+<a href="#dfn-context" title="context" class="tref internalDFN">
 context
 </a>
 using
@@ -6877,7 +6924,24 @@
 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">{
+<del class="diff-old">  {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+15
+</ins></span>:<ins class="diff-chg">
+Use
+a
+relative
+IRI
+as
+node
+identifier
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context": {
     "label": "http://www.w3.org/2000/01/rdf-schema#label"
   },
@@ -6914,7 +6978,7 @@
 different
 location,
 the
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -6929,14 +6993,14 @@
 to
 use
 an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>,
 a
-<a class="tref internalDFN" title="context" href="#dfn-context">
+<a href="#dfn-context" title="context" class="tref internalDFN">
 context
 </a>
 may
@@ -6957,7 +7021,24 @@
 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">{
+<del class="diff-old">  {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+16
+</ins></span>:<ins class="diff-chg">
+Setting
+the
+document
+base
+in
+a
+document
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context": {
 <del class="diff-old">    
 </del>
@@ -6974,12 +7055,12 @@
 @base
 </code>
 to
-<a class="tref internalDFN" title="null" href="#dfn-null">
+<a href="#dfn-null" title="null" class="tref internalDFN">
 null
 </a>
 will
 prevent
-<a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">
+<a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">
 relative
 IRIs
 </a>
@@ -6987,7 +7068,7 @@
 be
 expanded
 to
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 IRIs
 </a>.
@@ -7150,8 +7231,8 @@
 contexts.
 </p>
 </section>
-<section class="informative" id="default-vocabulary">
-<h3 aria-level="2" role="heading" id="h3_default-vocabulary">
+<section id="default-vocabulary" class="informative">
+<h3 id="h3_default-vocabulary" role="heading" aria-level="2">
 <span class="secno">
 6.2
 </span>
@@ -7205,14 +7286,14 @@
 not
 match
 a
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>
 and
 are
 neither
 a
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
 compact
 <abbr title="Internationalized Resource Identifier">
 IRI
@@ -7220,7 +7301,7 @@
 </a>
 nor
 an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 <abbr title="Internationalized Resource Identifier">
 IRI
@@ -7234,7 +7315,22 @@
 a
 colon).
 </p>
-  <div class="example"><div class="example-title"><span>Example 17</span>: Using a common vocabulary prefix</div><pre class="example">{
+<del class="diff-old">  {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+17
+</ins></span>:<ins class="diff-chg">
+Using
+a
+common
+vocabulary
+prefix
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context": {
 <del class="diff-old">    
 </del>
@@ -7262,7 +7358,7 @@
 keys
 in
 an
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
 object
 </a>
 should
@@ -7272,13 +7368,13 @@
 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">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+a
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>
 can
@@ -7286,12 +7382,12 @@
 explicitly
 set
 to
-<a class="tref internalDFN" title="null" href="#dfn-null">
+<a href="#dfn-null" title="null" class="tref internalDFN">
 null
 </a>
 in
 the
-<a class="tref internalDFN" title="context" href="#dfn-context">
+<a href="#dfn-context" title="context" class="tref internalDFN">
 context
 </a>.
 For
@@ -7310,13 +7406,30 @@
 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">{
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+</p>
+<del class="diff-old">  {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+18
+</ins></span>:<ins class="diff-chg">
+Using
+the
+null
+keyword
+to
+ignore
+data
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context":
   {
      "@vocab": "http://schema.org/",
@@ -7334,8 +7447,8 @@
 </pre>
 </div>
 </section>
-<section class="informative" id="compact-iris">
-<h3 aria-level="2" role="heading" id="h3_compact-iris">
+<section id="compact-iris" class="informative">
+<h3 id="h3_compact-iris" role="heading" aria-level="2">
 <span class="secno">
 6.3
 </span>
@@ -7352,7 +7465,7 @@
 </p>
 <p>
 A
-<dfn title="compact-iri" id="dfn-compact-iri">
+<dfn id="dfn-compact-iri" title="compact-iri">
 compact
 <abbr title="Internationalized Resource Identifier">
 IRI
@@ -7364,7 +7477,7 @@
 of
 expressing
 an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -7387,18 +7500,18 @@
 </code>
 ).
 The
-<dfn title="prefix" id="dfn-prefix">
+<dfn id="dfn-prefix" title="prefix">
 prefix
 </dfn>
 is
 a
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>
 taken
 from
 the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
 active
 context
 </a>
@@ -7410,7 +7523,7 @@
 identifying
 a
 particular
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -7442,8 +7555,8 @@
 identified
 using
 the
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-<abbr title="Internationalized Resource Identifier">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title= "Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>
@@ -7473,7 +7586,7 @@
 version
 of
 the
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 <abbr title="Internationalized Resource Identifier">
 IRI
@@ -7500,10 +7613,20 @@
 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">{
-<del class="diff-old">  "":
-</del>
-<ins class="diff-chg">  "<span class="highlight">@context</span>":
+<del class="diff-old">  {
+  "":
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+19
+</ins></span>:<ins class="diff-chg">
+Prefix
+expansion
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+  "<span class="highlight">@context</span>":
 </ins>
   {
 <del class="diff-old">    ""
@@ -7533,7 +7656,7 @@
 expands
 to
 the
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -7552,7 +7675,7 @@
 </code>.
 </p>
 <p>
-<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
+<a href="#dfn-prefix" title="prefix" class="tref internalDFN">
 Prefixes
 </a>
 are
@@ -7565,7 +7688,7 @@
 value
 is
 a
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
 compact
 <abbr title="Internationalized Resource Identifier">
 IRI
@@ -7584,13 +7707,13 @@
 </em>
 matches
 a
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>
 defined
 within
 the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
 active
 context
 </a>,
@@ -7604,13 +7727,16 @@
 begin
 with
 two
-slashes&nbsp;(
+<del class="diff-old">slashes&nbsp;(
+</del>
+<ins class="diff-chg">slashes&#160;(
+</ins>
 <code>
 //
 </code>
 ).
 The
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
 compact
 <abbr title="Internationalized Resource Identifier">
 IRI
@@ -7621,7 +7747,7 @@
 by
 concatenating
 the
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -7649,7 +7775,7 @@
 defined
 in
 the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
 active
 context
 </a>,
@@ -7672,7 +7798,7 @@
 is
 interpreted
 as
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 <abbr title="Internationalized Resource Identifier">
 IRI
@@ -7695,7 +7821,7 @@
 is
 interpreted
 as
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
 blank
 node
 identifier
@@ -7720,7 +7846,19 @@
 following
 example:
 </p>
-  <div class="example"><div class="example-title"><span>Example 20</span>: Using vocabularies</div><pre class="example">{
+<del class="diff-old">  {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+20
+</ins></span>:<ins class="diff-chg">
+Using
+vocabularies
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context":
   {
     "xsd": "http://www.w3.org/2001/XMLSchema#",
@@ -7742,8 +7880,8 @@
 </pre>
 </div>
 </section>
-<section class="informative" id="typed-values">
-<h3 aria-level="2" role="heading" id="h3_typed-values">
+<section id="typed-values" class="informative">
+<h3 id="h3_typed-values" role="heading" aria-level="2">
 <span class="secno">
 6.4
 </span>
@@ -7769,7 +7907,7 @@
 known
 as
 a
-<a class="tref internalDFN" title="typed-value" href="#dfn-typed-value">
+<a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">
 typed
 value
 </a>,
@@ -7781,7 +7919,7 @@
 value
 with
 an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -7810,13 +7948,13 @@
 <code>
 @type
 </code>
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keyword
 </a>
 when
 defining
 a
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>
 within
@@ -7830,7 +7968,7 @@
 By
 utilizing
 a
-<a class="tref internalDFN" title="value-object" href="#dfn-value-object">
+<a href="#dfn-value-object" title="value-object" class="tref internalDFN">
 value
 object
 </a>.
@@ -7844,14 +7982,14 @@
 type
 such
 as
-<a class="tref internalDFN" title="number" href="#dfn-number">
+<a href="#dfn-number" title="number" class="tref internalDFN">
 number
 </a>,
-<a class="tref internalDFN" title="true" href="#dfn-true">
+<a href="#dfn-true" title="true" class="tref internalDFN">
 true
 </a>,
 or
-<a class="tref internalDFN" title="false" href="#dfn-false">
+<a href="#dfn-false" title="false" class="tref internalDFN">
 false
 </a>.
 </li>
@@ -7873,7 +8011,7 @@
 with
 a
 particular
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>
 in
@@ -7882,10 +8020,24 @@
 @context
 </code>:
 </p>
-<div class="example"><div class="example-title"><span>Example 21</span>: Expanded term definition with type coercion</div><pre class="example">{
-<del class="diff-old">  "@context":
-</del>
-  <span class="highlight">"@context":
+<del class="diff-old">{
+  "@context":
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+21
+</ins></span>:<ins class="diff-chg">
+Expanded
+term
+definition
+with
+type
+coercion
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>  <span class="highlight">"@context":
   {
     "modified":
     {
@@ -7995,7 +8147,21 @@
 JSON-LD
 document:
 </p>
-<div class="example"><div class="example-title"><span>Example 22</span>: Expanded value with type</div><pre class="example">{
+<del class="diff-old">{
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+22
+</ins></span>:<ins class="diff-chg">
+Expanded
+value
+with
+type
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context":
   {
     "modified":
@@ -8041,12 +8207,12 @@
 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">
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+or
+a
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
 compact
 <abbr title="Internationalized Resource Identifier">
 IRI
@@ -8061,7 +8227,7 @@
 type.
 </p>
 <div class="note">
-<div class="note-title" aria-level="3" role="heading" id="h_note_2">
+<div id="h_note_2" role="heading" aria-level="3" class="note-title">
 <span>
 <ins class="diff-chg">Note
 </ins></span></div><p class="">
@@ -8069,7 +8235,7 @@
 <code>
 @type
 </code>
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keyword
 </a>
 is
@@ -8081,20 +8247,20 @@
 type
 with
 a
-<a class="tref internalDFN" title="node" href="#dfn-node">
+<a href="#dfn-node" title="node" class="tref internalDFN">
 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">
+<a href="#dfn-node-type" title="node-type" class="tref internalDFN">
+node
+type
+</a>
+and
+a
+<a href="#dfn-value-type" title="value-type" class="tref internalDFN">
 value
 type
 </a>
@@ -8106,7 +8272,7 @@
 Generally
 speaking,
 a
-<dfn title="node-type" id="dfn-node-type">
+<dfn id="dfn-node-type" title="node-type">
 node
 type
 </dfn>
@@ -8128,7 +8294,7 @@
 web
 page.
 A
-<dfn title="value-type" id="dfn-value-type">
+<dfn id="dfn-value-type" title="value-type">
 value
 type
 </dfn>
@@ -8152,7 +8318,23 @@
 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">{
+<del class="diff-old">{
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+23
+</ins></span>:<ins class="diff-chg">
+Example
+demonstrating
+the
+context-sensitivity
+for
+@type
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
 ...
   "@id": "http://example.org/posts#TripToWestVirginia",
 <del class="diff-old">  ,   &lt;- This is a node type
@@ -8179,7 +8361,7 @@
 </code>
 associates
 a
-<a class="tref internalDFN" title="node-type" href="#dfn-node-type">
+<a href="#dfn-node-type" title="node-type" class="tref internalDFN">
 node
 type
 </a>
@@ -8190,7 +8372,7 @@
 )
 with
 the
-<a class="tref internalDFN" title="node" href="#dfn-node">
+<a href="#dfn-node" title="node" class="tref internalDFN">
 node
 </a>,
 which
@@ -8201,7 +8383,7 @@
 <code>
 @id
 </code>
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keyword
 </a>.
 The
@@ -8213,7 +8395,7 @@
 </code>
 associates
 a
-<a class="tref internalDFN" title="value-type" href="#dfn-value-type">
+<a href="#dfn-value-type" title="value-type" class="tref internalDFN">
 value
 type
 </a>
@@ -8231,7 +8413,7 @@
 <code>
 @value
 </code>
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keyword
 </a>.
 As
@@ -8251,7 +8433,7 @@
 in
 the
 same
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
 JSON
 object
 </a>,
@@ -8259,13 +8441,13 @@
 <code>
 @type
 </code>
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keyword
 </a>
 is
 expressing
 a
-<a class="tref internalDFN" title="value-type" href="#dfn-value-type">
+<a href="#dfn-value-type" title="value-type" class="tref internalDFN">
 value
 type
 </a>.
@@ -8274,13 +8456,13 @@
 <code>
 @type
 </code>
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keyword
 </a>
 is
 expressing
 a
-<a class="tref internalDFN" title="node-type" href="#dfn-node-type">
+<a href="#dfn-node-type" title="node-type" class="tref internalDFN">
 node
 type
 </a>.
@@ -8342,8 +8524,8 @@
 </tbody>
 </table>
 </section>
-<section class="informative" id="type-coercion">
-<h3 aria-level="2" role="heading" id="h3_type-coercion">
+<section id="type-coercion" class="informative">
+<h3 id="h3_type-coercion" role="heading" aria-level="2">
 <span class="secno">
 6.5
 </span>
@@ -8370,7 +8552,7 @@
 data
 types.
 Type
-<dfn title="coercion" id="dfn-coercion">
+<dfn id="dfn-coercion" title="coercion">
 coercion
 </dfn>
 allows
@@ -8396,11 +8578,11 @@
 of
 data
 type
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-IRIs
-</a>
-to
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+IRIs
+</a>
+to
+<a href="#dfn-term" title="term" class="tref internalDFN">
 terms
 </a>.
 Using
@@ -8431,7 +8613,7 @@
 specified
 within
 an
-<a class="tref internalDFN" title="expanded-term-definition" href="#dfn-expanded-term-definition">
+<a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">
 expanded
 term
 definition
@@ -8450,14 +8632,14 @@
 expands
 to
 an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>.
 Alternatively,
 the
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keywords
 </a>
 <code>
@@ -8483,13 +8665,13 @@
 JSON-LD
 document,
 a
-<a class="tref internalDFN" title="string" href="#dfn-string">
+<a href="#dfn-string" title="string" class="tref internalDFN">
 string
 </a>
 value
 of
 a
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>
 coerced
@@ -8507,7 +8689,7 @@
 interpreted
 as
 an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -8528,7 +8710,7 @@
 are
 expanded
 to
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 IRIs
 </a>.
@@ -8545,20 +8727,20 @@
 interpreting
 it
 as
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>.
 If
 no
 matching
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>
 is
 found
 in
 the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
 active
 context
 </a>,
@@ -8568,14 +8750,14 @@
 expand
 it
 as
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
 compact
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>
 or
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 <abbr title="Internationalized Resource Identifier">
 IRI
@@ -8596,7 +8778,7 @@
 value
 using
 the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
 active
 context's
 </a>
@@ -8609,7 +8791,7 @@
 interpreting
 it
 as
-<a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">
+<a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">
 relative
 <abbr title="Internationalized Resource Identifier">
 IRI
@@ -8626,14 +8808,14 @@
 are
 expanded
 as
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
 compact
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>
 or
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 <abbr title="Internationalized Resource Identifier">
 IRI
@@ -8649,7 +8831,7 @@
 are
 interpreted
 as
-<a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">
+<a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">
 relative
 <abbr title="Internationalized Resource Identifier">
 IRI
@@ -8657,11 +8839,11 @@
 </a>.
 </p>
 <p>
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 Terms
 </a>
 or
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
 compact
 IRIs
 </a>
@@ -8689,7 +8871,7 @@
 may
 specify
 a
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>
 like
@@ -8721,16 +8903,31 @@
 coerce
 values
 to
-<a class="tref internalDFN" title="typed-value" href="#dfn-typed-value">
+<a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">
 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">{
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+IRIs
+</a>.
+</p>
+<del class="diff-old">{
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+24
+</ins></span>:<ins class="diff-chg">
+Expanded
+term
+definition
+with
+types
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context":
   {
     "xsd": "http://www.w3.org/2001/XMLSchema#",
@@ -8808,7 +9005,10 @@
 Smith
 </td>
 <td>
-&nbsp;
+<del class="diff-old">&nbsp;
+</del>
+<ins class="diff-chg">&#160;
+</ins>
 </td>
 </tr>
 <tr>
@@ -8836,7 +9036,7 @@
 http://personal.example.org/
 </td>
 <td>
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -8848,7 +9048,7 @@
 http://work.example.com/jsmith/
 </td>
 <td>
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -8864,12 +9064,12 @@
 be
 defined
 using
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 IRIs
 </a>
 or
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
 compact
 IRIs
 </a>.
@@ -8889,13 +9089,30 @@
 as
 a
 simple
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 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">{
+<del class="diff-old">{
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+25
+</ins></span>:<ins class="diff-chg">
+Term
+definitions
+using
+compact
+and
+absolute
+IRIs
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context":
   {
     "foaf": "http://xmlns.com/foaf/0.1/",
@@ -8951,14 +9168,14 @@
 does
 exist,
 the
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
 compact
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>
 or
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -8971,7 +9188,7 @@
 be
 expanded
 to
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -9023,7 +9240,7 @@
 </code>
 in
 the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
 active
 context
 </a>
@@ -9033,7 +9250,7 @@
 the
 corresponding,
 expanded
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -9272,7 +9489,7 @@
 gathered.
 </del>
 <div class="note">
-<div class="note-title" aria-level="3" role="heading" id="h_note_3">
+<div id="h_note_3" role="heading" aria-level="3" class="note-title">
 <span>
 Note
 </span>
@@ -9285,7 +9502,7 @@
 are
 treated
 as
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 terms
 </a>
 for
@@ -9348,7 +9565,7 @@
 also
 allows
 a
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
 compact
 <abbr title="Internationalized Resource Identifier">
 IRI
@@ -9358,7 +9575,7 @@
 even
 an
 absolute
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -9378,7 +9595,7 @@
 specify
 that
 the
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>
 <code>
@@ -9416,8 +9633,8 @@
 </p>
 </div>
 </section>
-<section class="informative" id="embedding">
-<h3 aria-level="2" role="heading" id="h3_embedding">
+<section id="embedding" class="informative">
+<h3 id="h3_embedding" role="heading" aria-level="2">
 <span class="secno">
 6.6
 </span>
@@ -9432,7 +9649,7 @@
 </em>
 </p>
 <p>
-<dfn title="embedding" id="dfn-embedding">
+<dfn id="dfn-embedding" title="embedding">
 Embedding
 </dfn>
 is
@@ -9445,12 +9662,12 @@
 author
 to
 use
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
 node
 objects
 </a>
 as
-<a class="tref internalDFN" title="property" href="#dfn-property">
+<a href="#dfn-property" title="property" class="tref internalDFN">
 property
 </a>
 values.
@@ -9467,7 +9684,7 @@
 relationship
 between
 two
-<a class="tref internalDFN" title="node" href="#dfn-node">
+<a href="#dfn-node" title="node" class="tref internalDFN">
 nodes
 </a>.
 </p>
@@ -9486,7 +9703,28 @@
 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">{
+<del class="diff-old">  {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+26
+</ins></span>:<ins class="diff-chg">
+Embedding
+a
+node
+object
+as
+property
+value
+of
+another
+node
+object
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
 ...
   "name": "Manu Sporny",
 <del class="diff-old">  "":
@@ -9507,7 +9745,7 @@
 </div>
 <p>
 A
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
 node
 object
 </a>,
@@ -9532,8 +9770,8 @@
 document.
 </p>
 </section>
-<section class="informative" id="advanced-context-usage">
-<h3 aria-level="2" role="heading" id="h3_advanced-context-usage">
+<section id="advanced-context-usage" class="informative">
+<h3 id="h3_advanced-context-usage" role="heading" aria-level="2">
 <span class="secno">
 6.7
 </span>
@@ -9551,7 +9789,7 @@
 </p>
 <p>
 Section
-<a href="#the-context" class="sec-ref">
+<a class="sec-ref" href="#the-context">
 <span class="secno">
 5.1
 </span>
@@ -9577,7 +9815,7 @@
 principles
 of
 the
-<a class="tref internalDFN" title="context" href="#dfn-context">
+<a href="#dfn-context" title="context" class="tref internalDFN">
 context
 </a>
 and
@@ -9604,7 +9842,7 @@
 any
 time
 a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
 JSON
 object
 </a>
@@ -9628,7 +9866,7 @@
 For
 example,
 a
-<a class="tref internalDFN" title="json-ld-document" href="#dfn-json-ld-document">
+<a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">
 JSON-LD
 document
 </a>
@@ -9645,7 +9883,20 @@
 a
 document:
 </p>
-  <div class="example"><div class="example-title"><span>Example 27</span>: Using multiple contexts</div><pre class="example">[
+<del class="diff-old">  [
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+27
+</ins></span>:<ins class="diff-chg">
+Using
+multiple
+contexts
+</ins></div><pre class="example"><ins class="diff-chg">
+[
+</ins>
   {
 <del class="diff-old">    
 </del>
@@ -9671,7 +9922,7 @@
 <p>
 Duplicate
 context
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 terms
 </a>
 are
@@ -9681,10 +9932,23 @@
 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">{
-<del class="diff-old">  "@context":
-</del>
-  <span class="highlight">"@context":
+<del class="diff-old">  {
+  "@context":
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+28
+</ins></span>:<ins class="diff-chg">
+Scoped
+contexts
+within
+node
+objects
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>  <span class="highlight">"@context":
   {
     "name": "http://example.com/person#name,
     "details": "http://example.com/person#details"
@@ -9719,7 +9983,7 @@
 <code>
 name
 </code>
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>
 is
@@ -9759,13 +10023,13 @@
 structure
 of
 the
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
 JSON
 object
 </a>.
 If
 a
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>
 is
@@ -9785,7 +10049,7 @@
 removed.
 If
 a
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>
 is
@@ -9795,7 +10059,7 @@
 null
 </code>,
 the
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>
 is
@@ -9805,13 +10069,13 @@
 the
 list
 of
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 terms
 </a>
 defined
 in
 the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
 active
 context
 </a>.
@@ -9824,7 +10088,7 @@
 combined
 using
 an
-<a class="tref internalDFN" title="array" href="#dfn-array">
+<a href="#dfn-array" title="array" class="tref internalDFN">
 array
 </a>,
 which
@@ -9840,7 +10104,7 @@
 within
 a
 specific
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
 JSON
 object
 </a>
@@ -9848,12 +10112,12 @@
 referred
 to
 as
-<dfn title="local-context" id="dfn-local-context">
+<dfn id="dfn-local-context" title="local-context">
 local
 contexts
 </dfn>.
 The
-<dfn title="active-context" id="dfn-active-context">
+<dfn id="dfn-active-context" title="active-context">
 active
 context
 </dfn>
@@ -9862,7 +10126,7 @@
 the
 accumulation
 of
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
 local
 contexts
 </a>
@@ -9879,7 +10143,7 @@
 document.
 Setting
 a
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
 local
 context
 </a>
@@ -9890,7 +10154,7 @@
 effectively
 resets
 the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
 active
 context
 </a>
@@ -9918,10 +10182,23 @@
 external
 context:
 </p>
-  <div class="example"><div class="example-title"><span>Example 29</span>: Combining external and local contexts</div><pre class="example">{
-<del class="diff-old">  "@context": [
-</del>
-  <span class="highlight">"@context": [
+<del class="diff-old">  {
+  "@context": [
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+29
+</ins></span>:<ins class="diff-chg">
+Combining
+external
+and
+local
+contexts
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>  <span class="highlight">"@context": [
     "http://json-ld.org/contexts/person.jsonld",
     {
       "pic": "http://xmlns.com/foaf/0.1/depiction"
@@ -9936,7 +10213,7 @@
 </pre>
 </div>
 <div class="note">
-<div class="note-title" aria-level="3" role="heading" id="h_note_4">
+<div id="h_note_4" role="heading" aria-level="3" class="note-title">
 <span>
 Note
 </span>
@@ -9945,7 +10222,7 @@
 When
 possible,
 the
-<a class="tref internalDFN" title="context" href="#dfn-context">
+<a href="#dfn-context" title="context" class="tref internalDFN">
 context
 </a>
 definition
@@ -9979,7 +10256,7 @@
 not
 have
 the
-<a class="tref internalDFN" title="context" href="#dfn-context">
+<a href="#dfn-context" title="context" class="tref internalDFN">
 context
 </a>
 at
@@ -9992,7 +10269,7 @@
 </p>
 </div>
 <div class="note">
-<div class="note-title" aria-level="3" role="heading" id="h_note_5">
+<div id="h_note_5" role="heading" aria-level="3" class="note-title">
 <span>
 Note
 </span>
@@ -10002,12 +10279,15 @@
 avoid
 forward-compatibility
 issues,
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 terms
 </a>
 starting
 with
-an&nbsp;
+<del class="diff-old">an&nbsp;
+</del>
+<ins class="diff-chg">an&#160;
+</ins>
 <code>
 @
 </code>
@@ -10022,7 +10302,7 @@
 be
 used
 as
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keywords
 </a>
 in
@@ -10033,7 +10313,10 @@
 Terms
 starting
 with
-an&nbsp;
+<del class="diff-old">an&nbsp;
+</del>
+<ins class="diff-chg">an&#160;
+</ins>
 <code>
 @
 </code>
@@ -10041,7 +10324,7 @@
 that
 are
 not
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 JSON-LD
 1.0
 keywords
@@ -10060,7 +10343,7 @@
 mapped
 to
 an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -10070,7 +10353,7 @@
 use
 of
 empty
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 terms
 </a>
 (
@@ -10096,8 +10379,8 @@
 </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">
+<section id="interpreting-json-as-json-ld" class="normative">
+<h3 id="h3_interpreting-json-as-json-ld" role="heading" aria-level="2">
 <span class="secno">
 6.8
 </span>
@@ -10119,7 +10402,7 @@
 referencing
 a
 JSON-LD
-<a class="tref internalDFN" title="context" href="#dfn-context">
+<a href="#dfn-context" title="context" class="tref internalDFN">
 context
 </a>
 document
@@ -10180,7 +10463,7 @@
 in
 [
 <cite>
-<a class="bibref" href="#bib-RFC6839">
+<a href="#bib-RFC6839" class="bibref">
 RFC6839
 </a>
 </cite>
@@ -10201,12 +10484,12 @@
 document,
 an
 author
-<em class="rfc2119" title="MUST">
+<em title="MUST" class="rfc2119">
 MUST
 </em>
 specify
 an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -10214,7 +10497,7 @@
 to
 a
 valid
-<a class="tref internalDFN" title="json-ld-document" href="#dfn-json-ld-document">
+<a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">
 JSON-LD
 document
 </a>
@@ -10225,7 +10508,7 @@
 Header
 [
 <cite>
-<a class="bibref" href="#bib-RFC5988">
+<a href="#bib-RFC5988" class="bibref">
 RFC5988
 </a>
 </cite>
@@ -10240,13 +10523,13 @@
 The
 referenced
 document
-<em class="rfc2119" title="MUST">
+<em title="MUST" class="rfc2119">
 MUST
 </em>
 have
 a
 top-level
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
 JSON
 object
 </a>.
@@ -10263,7 +10546,7 @@
 to
 the
 top-level
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
 JSON
 object
 </a>
@@ -10273,7 +10556,7 @@
 document.
 If
 an
-<a class="tref internalDFN" title="array" href="#dfn-array">
+<a href="#dfn-array" title="array" class="tref internalDFN">
 array
 </a>
 is
@@ -10288,7 +10571,7 @@
 its
 items
 are
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
 JSON
 objects
 </a>,
@@ -10301,7 +10584,7 @@
 added
 to
 all
-<a class="tref internalDFN" title="array" href="#dfn-array">
+<a href="#dfn-array" title="array" class="tref internalDFN">
 array
 </a>
 items.
@@ -10320,7 +10603,7 @@
 the
 referenced
 document
-<em class="rfc2119" title="MUST">
+<em title="MUST" class="rfc2119">
 MUST
 </em>
 be
@@ -10330,7 +10613,7 @@
 means
 that
 the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
 active
 context
 </a>
@@ -10340,12 +10623,12 @@
 the
 referenced
 external
-<a class="tref internalDFN" title="context" href="#dfn-context">
+<a href="#dfn-context" title="context" class="tref internalDFN">
 context
 </a>.
 A
 response
-<em class="rfc2119" title="MUST NOT">
+<em title="MUST NOT" class="rfc2119">
 MUST
 NOT
 </em>
@@ -10358,7 +10641,7 @@
 Header
 [
 <cite>
-<a class="bibref" href="#bib-RFC5988">
+<a href="#bib-RFC5988" class="bibref">
 RFC5988
 </a>
 </cite>
@@ -10388,7 +10671,30 @@
 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
+<del class="diff-old">  GET /ordinary-json-document.json HTTP/1.1
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+30
+</ins></span>:<ins class="diff-chg">
+Referencing
+a
+JSON-LD
+context
+from
+a
+JSON
+document
+via
+an
+HTTP
+Link
+Header
+</ins></div><pre class="example"><ins class="diff-chg">
+GET /ordinary-json-document.json HTTP/1.1
+</ins>
 Host: example.com
 Accept: application/ld+json,application/json,*/*;q=0.1
 ====================================
@@ -10409,7 +10715,7 @@
 Please
 note
 that
-<a class="tref internalDFN" title="json-ld-document" href="#dfn-json-ld-document">
+<a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">
 JSON-LD
 documents
 </a>
@@ -10421,7 +10727,7 @@
 </code>
 media
 type
-<em class="rfc2119" title="MUST">
+<em title="MUST" class="rfc2119">
 MUST
 </em>
 have
@@ -10449,7 +10755,7 @@
 HTTP
 Link
 Header
-<em class="rfc2119" title="MUST">
+<em title="MUST" class="rfc2119">
 MUST
 </em>
 be
@@ -10459,8 +10765,8 @@
 documents.
 </p>
 </section>
-<section class="informative" id="string-internationalization">
-<h3 aria-level="2" role="heading" id="h3_string-internationalization">
+<section id="string-internationalization" class="informative">
+<h3 id="h3_string-internationalization" role="heading" aria-level="2">
 <span class="secno">
 6.9
 </span>
@@ -10484,7 +10790,7 @@
 to
 annotate
 a
-<a class="tref internalDFN" title="string" href="#dfn-string">
+<a href="#dfn-string" title="string" class="tref internalDFN">
 string
 </a>
 with
@@ -10522,14 +10828,30 @@
 key
 in
 the
-<a class="tref internalDFN" title="context" href="#dfn-context">
+<a href="#dfn-context" title="context" class="tref internalDFN">
 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">{
-<del class="diff-old">  "@context":
-</del>
-  <span class="highlight">"@context":
+<del class="diff-old">  {
+  "@context":
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+31
+</ins></span>:<ins class="diff-chg">
+Setting
+the
+default
+language
+of
+a
+JSON-LD
+document
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>  <span class="highlight">"@context":
   {
     ...
     "@language": "ja"
@@ -10558,7 +10880,7 @@
 with
 the
 two
-<a class="tref internalDFN" title="string" href="#dfn-string">
+<a href="#dfn-string" title="string" class="tref internalDFN">
 strings
 </a>
 <em>
@@ -10575,7 +10897,7 @@
 in
 [
 <cite>
-<a class="bibref" href="#bib-BCP47">
+<a href="#bib-BCP47" class="bibref">
 BCP47
 </a>
 </cite>
@@ -10586,7 +10908,7 @@
 applies
 to
 all
-<a class="tref internalDFN" title="string" href="#dfn-string">
+<a href="#dfn-string" title="string" class="tref internalDFN">
 string
 </a>
 values
@@ -10619,14 +10941,27 @@
 </code>
 in
 a
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
 local
 context
 </a>
 as
 follows:
 </p>
-  <div class="example"><div class="example-title"><span>Example 32</span>: Clearing default language</div><pre class="example">{
+<del class="diff-old">  {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+32
+</ins></span>:<ins class="diff-chg">
+Clearing
+default
+language
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context": {
     ...
     "@language": "ja"
@@ -10655,18 +10990,33 @@
 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">
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+using
+an
+<a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">
 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">{
+<del class="diff-old">  {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+33
+</ins></span>:<ins class="diff-chg">
+Expanded
+term
+definition
+with
+language
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context": {
     ...
     "ex": "http://example.com/vocab/",
@@ -10756,19 +11106,19 @@
 was
 reset
 to
-<a class="tref internalDFN" title="null" href="#dfn-null">
+<a href="#dfn-null" title="null" class="tref internalDFN">
 null
 </a>
 in
 the
-<a class="tref internalDFN" title="expanded-term-definition" href="#dfn-expanded-term-definition">
+<a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">
 expanded
 term
 definition
 </a>.
 </p>
 <div class="note">
-<div class="note-title" aria-level="3" role="heading" id="h_note_6">
+<div id="h_note_6" role="heading" aria-level="3" class="note-title">
 <span>
 Note
 </span>
@@ -10781,10 +11131,10 @@
 applied
 to
 plain
-<a class="tref internalDFN" title="string" href="#dfn-string">
+<a href="#dfn-string" title="string" class="tref internalDFN">
 strings
 </a>.
-<a class="tref internalDFN" title="typed-value" href="#dfn-typed-value">
+<a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">
 Typed
 values
 </a>
@@ -10850,7 +11200,7 @@
 In
 this
 case,
-<a class="tref internalDFN" title="language-map" href="#dfn-language-map">
+<a href="#dfn-language-map" title="language-map" class="tref internalDFN">
 language
 maps
 </a>
@@ -10858,7 +11208,25 @@
 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">{
+<del class="diff-old">  {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+34
+</ins></span>:<ins class="diff-chg">
+Language
+map
+expressing
+a
+property
+in
+three
+languages
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context":
   {
     ...
@@ -10961,12 +11329,29 @@
 by
 using
 a
-<a class="tref internalDFN" title="value-object" href="#dfn-value-object">
+<a href="#dfn-value-object" title="value-object" class="tref internalDFN">
 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">{
+<del class="diff-old">  {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+35
+</ins></span>:<ins class="diff-chg">
+Overriding
+default
+language
+using
+an
+expanded
+value
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context": {
     ...
     "@language": "ja"
@@ -11011,12 +11396,29 @@
 it
 using
 a
-<a class="tref internalDFN" title="value-object" href="#dfn-value-object">
+<a href="#dfn-value-object" title="value-object" class="tref internalDFN">
 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">{
+<del class="diff-old">  {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+36
+</ins></span>:<ins class="diff-chg">
+Removing
+language
+information
+using
+an
+expanded
+value
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context": {
     ...
     "@language": "ja"
@@ -11036,8 +11438,8 @@
 </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">
+<section id="iri-expansion-within-a-context" class="informative">
+<h3 id="h3_iri-expansion-within-a-context" role="heading" aria-level="2">
 <span class="secno">
 6.10
 </span>
@@ -11083,7 +11485,7 @@
 ).
 Within
 a
-<a class="tref internalDFN" title="context" href="#dfn-context">
+<a href="#dfn-context" title="context" class="tref internalDFN">
 context
 </a>
 definition,
@@ -11125,13 +11527,28 @@
 namespace
 when
 defining
-<a class="tref internalDFN" title="typed-value" href="#dfn-typed-value">
+<a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">
 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">{
+<del class="diff-old">{
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+37
+</ins></span>:<ins class="diff-chg">
+IRI
+expansion
+within
+a
+context
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context":
   {
 <del class="diff-old">    ,
@@ -11164,7 +11581,7 @@
 <code>
 xsd
 </code>
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>
 is
@@ -11173,7 +11590,7 @@
 used
 as
 a
-<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
+<a href="#dfn-prefix" title="prefix" class="tref internalDFN">
 prefix
 </a>
 for
@@ -11190,7 +11607,7 @@
 property.
 </p>
 <p>
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 Terms
 </a>
 may
@@ -11205,11 +11622,34 @@
 </abbr>
 of
 another
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 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">{
+<del class="diff-old">{
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+38
+</ins></span>:<ins class="diff-chg">
+Using
+a
+term
+to
+define
+the
+IRI
+of
+another
+term
+within
+a
+context
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context":
   {
 <del class="diff-old">    ,
@@ -11242,12 +11682,12 @@
 </pre>
 </div>
 <p>
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
 Compact
 IRIs
 </a>
 and
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 IRIs
 </a>
 may
@@ -11259,12 +11699,29 @@
 side
 of
 a
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 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">{
+<del class="diff-old">{
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+39
+</ins></span>:<ins class="diff-chg">
+Using
+a
+compact
+IRI
+as
+a
+term
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context":
   {
 <del class="diff-old">    ,
@@ -11296,7 +11753,7 @@
 this
 example,
 the
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
 compact
 <abbr title="Internationalized Resource Identifier">
 IRI
@@ -11319,14 +11776,14 @@
 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">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+for
+the
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>
 (using
@@ -11341,7 +11798,7 @@
 associated
 with
 the
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>.
 In
@@ -11356,14 +11813,14 @@
 associated
 with
 the
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>
 is
 specified.
 The
 full
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -11381,17 +11838,17 @@
 <code>
 foaf
 </code>
-<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
+<a href="#dfn-prefix" title="prefix" class="tref internalDFN">
 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">
+<a href="#dfn-context" title="context" class="tref internalDFN">
+context
+</a>.
+</p>
+<p>
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 Absolute
 IRIs
 </a>
@@ -11405,11 +11862,27 @@
 position
 in
 a
-<a class="tref internalDFN" title="context" href="#dfn-context">
+<a href="#dfn-context" title="context" class="tref internalDFN">
 context
 </a>:
 </p>
-<div class="example"><div class="example-title"><span>Example 40</span>: Associating context definitions with absolute IRIs</div><pre class="example">{
+<del class="diff-old">{
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+40
+</ins></span>:<ins class="diff-chg">
+Associating
+context
+definitions
+with
+absolute
+IRIs
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context":
   {
     "foaf": "http://xmlns.com/foaf/0.1/",
@@ -11437,7 +11910,7 @@
 order
 for
 the
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 <abbr title="Internationalized Resource Identifier">
 IRI
@@ -11447,7 +11920,7 @@
 match
 above,
 the
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 <abbr title="Internationalized Resource Identifier">
 IRI
@@ -11459,7 +11932,7 @@
 used
 in
 the
-<a class="tref internalDFN" title="json-ld-document" href="#dfn-json-ld-document">
+<a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">
 JSON-LD
 document
 </a>.
@@ -11494,7 +11967,7 @@
 </code>.
 That
 is,
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 terms
 </a>
 are
@@ -11502,7 +11975,7 @@
 up
 in
 a
-<a class="tref internalDFN" title="context" href="#dfn-context">
+<a href="#dfn-context" title="context" class="tref internalDFN">
 context
 </a>
 using
@@ -11511,7 +11984,7 @@
 comparison
 before
 the
-<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
+<a href="#dfn-prefix" title="prefix" class="tref internalDFN">
 prefix
 </a>
 lookup
@@ -11520,7 +11993,7 @@
 applied.
 </p>
 <div class="note">
-<div class="note-title" aria-level="3" role="heading" id="h_note_7">
+<div id="h_note_7" role="heading" aria-level="3" class="note-title">
 <span>
 Note
 </span>
@@ -11533,7 +12006,7 @@
 to
 define
 a
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
 compact
 <abbr title="Internationalized Resource Identifier">
 IRI
@@ -11541,7 +12014,7 @@
 </a>,
 or
 an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 <abbr title="Internationalized Resource Identifier">
 IRI
@@ -11553,7 +12026,7 @@
 some
 other
 unrelated
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -11585,7 +12058,7 @@
 terms
 in
 the
-<a class="tref internalDFN" title="context" href="#dfn-context">
+<a href="#dfn-context" title="context" class="tref internalDFN">
 context
 </a>
 is
@@ -11626,14 +12099,32 @@
 example,
 the
 following
-<a class="tref internalDFN" title="context" href="#dfn-context">
+<a href="#dfn-context" title="context" class="tref internalDFN">
 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">{
+<del class="diff-old">{
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+41
+</ins></span>:<ins class="diff-chg">
+Illegal
+circular
+definition
+of
+terms
+within
+a
+context
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context":
   {
 <del class="diff-old">    "term1": "term2:foo",
@@ -11646,8 +12137,8 @@
 </pre>
 </div>
 </section>
-<section class="informative" id="sets-and-lists">
-<h3 aria-level="2" role="heading" id="h3_sets-and-lists">
+<section id="sets-and-lists" class="informative">
+<h3 id="h3_sets-and-lists" role="heading" aria-level="2">
 <span class="secno">
 6.11
 </span>
@@ -11677,7 +12168,7 @@
 way
 by
 using
-<a class="tref internalDFN" title="array" href="#dfn-array">
+<a href="#dfn-array" title="array" class="tref internalDFN">
 arrays
 </a>.
 Since
@@ -11726,7 +12217,23 @@
 simple
 document:
 </p>
-<div class="example"><div class="example-title"><span>Example 42</span>: Multiple values with no inherent order</div><pre class="example">{
+<del class="diff-old">{
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+42
+</ins></span>:<ins class="diff-chg">
+Multiple
+values
+with
+no
+inherent
+order
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
 ...
   "@id": "http://example.org/people#joebob",
 <del class="diff-old">  "nick": ,
@@ -11825,7 +12332,25 @@
 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">{
+<del class="diff-old">{
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+43
+</ins></span>:<ins class="diff-chg">
+Using
+an
+expanded
+form
+to
+set
+multiple
+values
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@id": "http://example.org/articles/8",
 <del class="diff-old">  "dc:title": 
 </del>
@@ -11942,13 +12467,30 @@
 <code>
 @list
 </code>
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 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">{
+<del class="diff-old">{
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+44
+</ins></span>:<ins class="diff-chg">
+An
+ordered
+collection
+of
+values
+in
+JSON-LD
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
 ...
   "@id": "http://example.org/people#joebob",
   "foaf:nick":
@@ -11968,7 +12510,7 @@
 use
 of
 this
-<a class="tref internalDFN" title="array" href="#dfn-array">
+<a href="#dfn-array" title="array" class="tref internalDFN">
 array
 </a>
 as
@@ -12008,14 +12550,31 @@
 </code>
 in
 the
-<a class="tref internalDFN" title="context" href="#dfn-context">
+<a href="#dfn-context" title="context" class="tref internalDFN">
 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">{
-<del class="diff-old">  "@context":
-</del>
-  <span class="highlight">"@context":
+<del class="diff-old">{
+  "@context":
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+45
+</ins></span>:<ins class="diff-chg">
+Specifying
+that
+a
+collection
+is
+ordered
+in
+the
+context
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>  <span class="highlight">"@context":
   {
     ...
     "nick":
@@ -12035,7 +12594,7 @@
 </pre>
 </div>
 <div class="note">
-<div class="note-title" aria-level="3" role="heading" id="h_note_8">
+<div id="h_note_8" role="heading" aria-level="3" class="note-title">
 <span>
 Note
 </span>
@@ -12048,7 +12607,7 @@
 the
 form
 of
-</ins><a class="tref internalDFN" title="list-object" href="#dfn-list-object"><ins class="diff-new">
+</ins><a href="#dfn-list-object" title="list-object" class="tref internalDFN"><ins class="diff-new">
 list
 objects
 </ins></a>
@@ -12078,7 +12637,6 @@
 of
 lists.
 </p>
-</div>
 <del class="diff-old">Feature
 at
 Risk
@@ -12252,6 +12810,7 @@
 implementation
 feedback.
 </del>
+</div>
 <p>
 While
 <code>
@@ -12340,7 +12899,7 @@
 form
 of
 an
-<a class="tref internalDFN" title="array" href="#dfn-array">
+<a href="#dfn-array" title="array" class="tref internalDFN">
 array
 </a>,
 even
@@ -12398,8 +12957,8 @@
 value.
 </p>
 </section>
-<section class="informative" id="reverse-properties">
-<h3 aria-level="2" role="heading" id="h3_reverse-properties">
+<section id="reverse-properties" class="informative">
+<h3 id="h3_reverse-properties" role="heading" aria-level="2">
 <span class="secno">
 6.12
 </span>
@@ -12418,29 +12977,29 @@
 JSON-LD
 serializes
 directed
-<a class="tref internalDFN" title="graph" href="#dfn-graph">
+<a href="#dfn-graph" title="graph" class="tref internalDFN">
 graphs
 </a>.
 That
 means
 that
 every
-<a class="tref internalDFN" title="property" href="#dfn-property">
+<a href="#dfn-property" title="property" class="tref internalDFN">
 property
 </a>
 points
 from
 a
-<a class="tref internalDFN" title="node" href="#dfn-node">
+<a href="#dfn-node" title="node" class="tref internalDFN">
 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">
+<a href="#dfn-node" title="node" class="tref internalDFN">
+node
+</a>
+or
+<a href="#dfn-json-ld-value" title="json-ld-value" class="tref internalDFN">
 value
 </a>.
 However,
@@ -12484,7 +13043,7 @@
 <em>
 children
 </em>
-<a class="tref internalDFN" title="property" href="#dfn-property">
+<a href="#dfn-property" title="property" class="tref internalDFN">
 property
 </a>
 but
@@ -12493,11 +13052,11 @@
 <em>
 parent
 </em>
-<a class="tref internalDFN" title="property" href="#dfn-property">
+<a href="#dfn-property" title="property" class="tref internalDFN">
 property
 </a>,
 every
-<a class="tref internalDFN" title="node" href="#dfn-node">
+<a href="#dfn-node" title="node" class="tref internalDFN">
 node
 </a>
 representing
@@ -12510,7 +13069,7 @@
 expressed
 with
 a
-<a class="tref internalDFN" title="property" href="#dfn-property">
+<a href="#dfn-property" title="property" class="tref internalDFN">
 property
 </a>
 pointing
@@ -12523,7 +13082,25 @@
 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">[
+<del class="diff-old">  [
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+46
+</ins></span>:<ins class="diff-chg">
+A
+document
+with
+children
+linking
+to
+their
+parent
+</ins></div><pre class="example"><ins class="diff-chg">
+[
+</ins>
   {
 <del class="diff-old">    ,
 </del>
@@ -12560,11 +13137,30 @@
 <code>
 @reverse
 </code>
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 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">{
+<del class="diff-old">  {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+47
+</ins></span>:<ins class="diff-chg">
+A
+person
+and
+its
+children
+using
+a
+reverse
+property
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@id": "#homer",
   "http://example.com/vocab#name": "Homer",
 <del class="diff-old">  : {
@@ -12590,15 +13186,15 @@
 <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">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
+keyword
+</a>
+can
+also
+be
+used
+in
+<a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">
 expanded
 term
 definitions
@@ -12614,7 +13210,23 @@
 following
 example:
 </p>
-  <div class="example"><div class="example-title"><span>Example 48</span>: Using @reverse to define reverse properties</div><pre class="example">{
+<del class="diff-old">  {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+48
+</ins></span>:<ins class="diff-chg">
+Using
+@reverse
+to
+define
+reverse
+properties
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context": {
     "name": "http://example.com/vocab#name",
 <del class="diff-old">    
@@ -12639,8 +13251,8 @@
 </pre>
 </div>
 </section>
-<section class="informative" id="named-graphs">
-<h3 aria-level="2" role="heading" id="h3_named-graphs">
+<section id="named-graphs" class="informative">
+<h3 id="h3_named-graphs" role="heading" aria-level="2">
 <span class="secno">
 6.13
 </span>
@@ -12666,7 +13278,7 @@
 statements
 about
 a
-<a class="tref internalDFN" title="graph" href="#dfn-graph">
+<a href="#dfn-graph" title="graph" class="tref internalDFN">
 graph
 </a>
 itself,
@@ -12675,7 +13287,7 @@
 just
 a
 single
-<a class="tref internalDFN" title="node" href="#dfn-node">
+<a href="#dfn-node" title="node" class="tref internalDFN">
 node
 </a>.
 This
@@ -12687,7 +13299,7 @@
 a
 set
 of
-<a class="tref internalDFN" title="node" href="#dfn-node">
+<a href="#dfn-node" title="node" class="tref internalDFN">
 nodes
 </a>
 using
@@ -12695,7 +13307,7 @@
 <code>
 @graph
 </code>
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keyword
 </a>.
 A
@@ -12710,7 +13322,7 @@
 <code>
 @graph
 </code>
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keyword
 </a>
 by
@@ -12721,7 +13333,7 @@
 <code>
 @id
 </code>
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keyword
 </a>
 as
@@ -12731,7 +13343,24 @@
 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">{
+<del class="diff-old">  {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+49
+</ins></span>:<ins class="diff-chg">
+Identifying
+and
+making
+statements
+about
+a
+graph
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context": {
     "generatedAt": {
       "@id": "http://www.w3.org/ns/prov#generatedAtTime",
@@ -12769,7 +13398,7 @@
 above
 expresses
 a
-<a class="tref internalDFN" title="named-graph" href="#dfn-named-graph">
+<a href="#dfn-named-graph" title="named-graph" class="tref internalDFN">
 named
 graph
 </a>
@@ -12778,7 +13407,7 @@
 identified
 by
 the
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -12855,7 +13484,10 @@
 <tbody>
 <tr>
 <td>
-&nbsp;
+<del class="diff-old">&nbsp;
+</del>
+<ins class="diff-chg">&#160;
+</ins>
 </td>
 <td>
 http://example.org/graphs/73
@@ -12979,14 +13611,14 @@
 structure
 is
 an
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
 object
 </a>
 that
 contains
 no
 other
-<a class="tref internalDFN" title="property" href="#dfn-property">
+<a href="#dfn-property" title="property" class="tref internalDFN">
 properties
 </a>
 than
@@ -13005,14 +13637,14 @@
 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">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+a
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keyword
 </a>
 are
@@ -13027,7 +13659,7 @@
 the
 otherwise
 implicit
-<a class="tref internalDFN" title="default-graph" href="#dfn-default-graph">
+<a href="#dfn-default-graph" title="default-graph" class="tref internalDFN">
 default
 graph
 </a>.
@@ -13040,7 +13672,7 @@
 a
 number
 of
-<a class="tref internalDFN" title="node" href="#dfn-node">
+<a href="#dfn-node" title="node" class="tref internalDFN">
 nodes
 </a>
 exist
@@ -13053,7 +13685,7 @@
 share
 the
 same
-<a class="tref internalDFN" title="context" href="#dfn-context">
+<a href="#dfn-context" title="context" class="tref internalDFN">
 context
 </a>,
 which
@@ -13078,7 +13710,7 @@
 nodes
 in
 an
-<a class="tref internalDFN" title="array" href="#dfn-array">
+<a href="#dfn-array" title="array" class="tref internalDFN">
 array
 </a>
 and
@@ -13090,7 +13722,25 @@
 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">{
+<del class="diff-old">  {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+50
+</ins></span>:<ins class="diff-chg">
+Using
+@graph
+to
+explicitly
+express
+the
+default
+graph
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context": ...,
 <del class="diff-old">  "":
 </del>
@@ -13122,7 +13772,7 @@
 work
 as
 each
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
 node
 object
 </a>
@@ -13135,7 +13785,7 @@
 to
 using
 multiple
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
 node
 objects
 </a>
@@ -13149,12 +13799,32 @@
 </code>
 within
 each
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
 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">[
+<del class="diff-old">  [
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+51
+</ins></span>:<ins class="diff-chg">
+Context
+needs
+to
+be
+duplicated
+if
+@graph
+is
+not
+used
+</ins></div><pre class="example"><ins class="diff-chg">
+[
+</ins>
   {
 <del class="diff-old">    
 </del>
@@ -13177,8 +13847,8 @@
 </pre>
 </div>
 </section>
-<section class="informative" id="identifying-blank-nodes">
-<h3 aria-level="2" role="heading" id="h3_identifying-blank-nodes">
+<section id="identifying-blank-nodes" class="informative">
+<h3 id="h3_identifying-blank-nodes" role="heading" aria-level="2">
 <span class="secno">
 6.14
 </span>
@@ -13213,12 +13883,12 @@
 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">
+<a href="#dfn-node" title="node" class="tref internalDFN">
+node
+</a>
+with
+an
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -13230,7 +13900,7 @@
 is
 called
 a
-<a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">
+<a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">
 blank
 node
 </a>.
@@ -13283,7 +13953,7 @@
 one
 can
 use
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
 blank
 node
 identifiers
@@ -13291,7 +13961,7 @@
 which
 look
 like
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 IRIs
 </a>
 using
@@ -13328,7 +13998,7 @@
 external
 document.
 The
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
 blank
 node
 identifier
@@ -13344,7 +14014,23 @@
 is
 used.
 </p>
-  <div class="example"><div class="example-title"><span>Example 52</span>: Specifying a local blank node identifier</div><pre class="example">{
+<del class="diff-old">  {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+52
+</ins></span>:<ins class="diff-chg">
+Specifying
+a
+local
+blank
+node
+identifier
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
    ...
 <del class="diff-old">   "@id": "",
 </del>
@@ -13378,7 +14064,7 @@
 identified
 with
 an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -13387,17 +14073,23 @@
 expressing
 that
 <em>
-agent&nbsp;1
+<del class="diff-old">agent&nbsp;1
+</del>
+<ins class="diff-chg">agent&#160;1
+</ins>
 </em>
 knows
 <em>
-agent&nbsp;2
+<del class="diff-old">agent&nbsp;2
+</del>
+<ins class="diff-chg">agent&#160;2
+</ins>
 </em>
 is
 possible
 without
 using
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
 blank
 node
 identifiers
@@ -13407,7 +14099,10 @@
 necessary
 assign
 <em>
-agent&nbsp;1
+<del class="diff-old">agent&nbsp;1
+</del>
+<ins class="diff-chg">agent&#160;1
+</ins>
 </em>
 an
 identifier
@@ -13419,7 +14114,10 @@
 referenced
 from
 <em>
-agent&nbsp;2
+<del class="diff-old">agent&nbsp;2
+</del>
+<ins class="diff-chg">agent&#160;2
+</ins>
 </em>.
 </p>
 <p>
@@ -13445,7 +14143,7 @@
 refer
 to
 the
-<a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">
+<a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">
 blank
 node
 </a>
@@ -13461,7 +14159,7 @@
 using
 a
 dereferenceable
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -13478,8 +14176,8 @@
 documents.
 </p>
 </section>
-<section class="informative" id="aliasing-keywords">
-<h3 aria-level="2" role="heading" id="h3_aliasing-keywords">
+<section id="aliasing-keywords" class="informative">
+<h3 id="h3_aliasing-keywords" role="heading" aria-level="2">
 <span class="secno">
 6.15
 </span>
@@ -13499,7 +14197,7 @@
 of
 the
 JSON-LD
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keywords
 </a>,
 except
@@ -13547,11 +14245,23 @@
 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">{
+<a href="#dfn-context" title="context" class="tref internalDFN">
+context
+</a>.
+</p>
+<del class="diff-old">  {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+53
+</ins></span>:<ins class="diff-chg">
+Aliasing
+keywords
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context":
   {
 <del class="diff-old">     ,
@@ -13584,7 +14294,7 @@
 <code>
 @type
 </code>
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keywords
 </a>
 have
@@ -13618,8 +14328,8 @@
 keywords.
 </p>
 </section>
-<section class="informative" id="data-indexing">
-<h3 aria-level="2" role="heading" id="h3_data-indexing">
+<section id="data-indexing" class="informative">
+<h3 id="h3_data-indexing" role="heading" aria-level="2">
 <span class="secno">
 6.16
 </span>
@@ -13689,7 +14399,7 @@
 the
 notion
 of
-<a class="tref internalDFN" title="index-map" href="#dfn-index-map">
+<a href="#dfn-index-map" title="index-map" class="tref internalDFN">
 index
 maps
 </a>
@@ -13731,7 +14441,7 @@
 not
 map
 to
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 IRIs
 </a>.
 This
@@ -13766,7 +14476,7 @@
 <code>
 @index
 </code>
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keyword
 </a>
 with
@@ -13779,7 +14489,21 @@
 the
 context:
 </p>
-  <div class="example"><div class="example-title"><span>Example 54</span>: Indexing data in JSON-LD</div><pre class="example">{
+<del class="diff-old">  {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+54
+</ins></span>:<ins class="diff-chg">
+Indexing
+data
+in
+JSON-LD
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context":
   {
      "schema": "http://schema.org/",
@@ -13822,7 +14546,7 @@
 <strong>
 blogPost
 </strong>
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>
 has
@@ -13830,7 +14554,7 @@
 marked
 as
 an
-<a class="tref internalDFN" title="index-map" href="#dfn-index-map">
+<a href="#dfn-index-map" title="index-map" class="tref internalDFN">
 index
 map
 </a>.
@@ -14069,8 +14793,8 @@
 </tbody>
 </table>
 </section>
-<section class="informative" id="expanded-document-form">
-<h3 aria-level="2" role="heading" id="h3_expanded-document-form">
+<section id="expanded-document-form" class="informative">
+<h3 id="h3_expanded-document-form" role="heading" aria-level="2">
 <span class="secno">
 6.17
 </span>
@@ -14096,7 +14820,7 @@
 specification
 [
 <cite>
-<a class="bibref" href="#bib-JSON-LD-API">
+<a href="#bib-JSON-LD-API" class="bibref">
 JSON-LD-API
 </a>
 </cite>
@@ -14156,7 +14880,20 @@
 input
 document:
 </p>
-  <div class="example"><div class="example-title"><span>Example 55</span>: Sample JSON-LD document</div><pre class="example">{
+<del class="diff-old">  {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+55
+</ins></span>:<ins class="diff-chg">
+Sample
+JSON-LD
+document
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
    "@context":
    {
       "name": "http://xmlns.com/foaf/0.1/name",
@@ -14190,7 +14927,23 @@
 following
 output:
 </p>
-  <div class="example"><div class="example-title"><span>Example 56</span>: Expanded form for the previous example</div><pre class="example">[
+<del class="diff-old">  [
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+56
+</ins></span>:<ins class="diff-chg">
+Expanded
+form
+for
+the
+previous
+example
+</ins></div><pre class="example"><ins class="diff-chg">
+[
+</ins>
   {
     "http://xmlns.com/foaf/0.1/name": [
       { "@value": "Manu Sporny" }
@@ -14238,8 +14991,8 @@
 </code>.
 </p>
 </section>
-<section class="informative" id="compacted-document-form">
-<h3 aria-level="2" role="heading" id="h3_compacted-document-form">
+<section id="compacted-document-form" class="informative">
+<h3 id="h3_compacted-document-form" role="heading" aria-level="2">
 <span class="secno">
 6.18
 </span>
@@ -14265,7 +15018,7 @@
 specification
 [
 <cite>
-<a class="bibref" href="#bib-JSON-LD-API">
+<a href="#bib-JSON-LD-API" class="bibref">
 JSON-LD-API
 </a>
 </cite>
@@ -14291,15 +15044,15 @@
 context
 to
 shorten
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
-IRIs
-</a>
-to
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+IRIs
+</a>
+to
+<a href="#dfn-term" title="term" class="tref internalDFN">
 terms
 </a>
 or
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
 compact
 IRIs
 </a>
@@ -14315,11 +15068,11 @@
 values
 such
 as
-<a class="tref internalDFN" title="string" href="#dfn-string">
+<a href="#dfn-string" title="string" class="tref internalDFN">
 strings
 </a>
 or
-<a class="tref internalDFN" title="number" href="#dfn-number">
+<a href="#dfn-number" title="number" class="tref internalDFN">
 numbers
 </a>.
 Often
@@ -14360,7 +15113,21 @@
 input
 document:
 </p>
-  <div class="example"><div class="example-title"><span>Example 57</span>: Sample expanded JSON-LD document</div><pre class="example">[
+<del class="diff-old">  [
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+57
+</ins></span>:<ins class="diff-chg">
+Sample
+expanded
+JSON-LD
+document
+</ins></div><pre class="example"><ins class="diff-chg">
+[
+</ins>
   {
     "http://xmlns.com/foaf/0.1/name": [ "Manu Sporny" ],
     "http://xmlns.com/foaf/0.1/homepage": [
@@ -14381,7 +15148,19 @@
 JSON-LD
 context:
 </p>
-  <div class="example"><div class="example-title"><span>Example 58</span>: Sample context</div><pre class="example">{
+<del class="diff-old">  {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+58
+</ins></span>:<ins class="diff-chg">
+Sample
+context
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context": {
     "name": "http://xmlns.com/foaf/0.1/name",
     "homepage": {
@@ -14417,7 +15196,29 @@
 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">{
+<del class="diff-old">  {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+59
+</ins></span>:<ins class="diff-chg">
+Compact
+form
+of
+the
+sample
+document
+once
+sample
+context
+has
+been
+applied
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context": {
     "name": "http://xmlns.com/foaf/0.1/name",
     "homepage": {
@@ -14466,8 +15267,8 @@
 </code>.
 </p>
 </section>
-<section class="informative" id="flattened-document-form">
-<h3 aria-level="2" role="heading" id="h3_flattened-document-form">
+<section id="flattened-document-form" class="informative">
+<h3 id="h3_flattened-document-form" role="heading" aria-level="2">
 <span class="secno">
 6.19
 </span>
@@ -14493,7 +15294,7 @@
 specification
 [
 <cite>
-<a class="bibref" href="#bib-JSON-LD-API">
+<a href="#bib-JSON-LD-API" class="bibref">
 JSON-LD-API
 </a>
 </cite>
@@ -14514,25 +15315,25 @@
 properties
 of
 a
-<a class="tref internalDFN" title="node" href="#dfn-node">
+<a href="#dfn-node" title="node" class="tref internalDFN">
 node
 </a>
 in
 a
 single
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
 JSON
 object
 </a>
 and
 labels
 all
-<a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">
+<a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">
 blank
 nodes
 </a>
 with
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
 blank
 node
 identifiers
@@ -14569,7 +15370,20 @@
 input
 document:
 </p>
-  <div class="example"><div class="example-title"><span>Example 60</span>: Sample JSON-LD document</div><pre class="example">{
+<del class="diff-old">  {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+60
+</ins></span>:<ins class="diff-chg">
+Sample
+JSON-LD
+document
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context": {
     "name": "http://xmlns.com/foaf/0.1/name",
     "knows": "http://xmlns.com/foaf/0.1/knows"
@@ -14615,7 +15429,25 @@
 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">{
+<del class="diff-old">  {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+61
+</ins></span>:<ins class="diff-chg">
+Flattened
+and
+compacted
+form
+for
+the
+previous
+example
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context": {
     "name": "http://xmlns.com/foaf/0.1/name",
     "knows": "http://xmlns.com/foaf/0.1/knows"
@@ -14697,8 +15529,8 @@
 </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">
+<section id="embedding-json-ld-in-html-documents" class="informative">
+<h3 id="h3_embedding-json-ld-in-html-documents" role="heading" aria-level="2">
 <span class="secno">
 6.20
 </span>
@@ -14761,7 +15593,17 @@
 </p>
 <del class="diff-old">  
 </del>
-  <div class="example"><div class="example-title"><span>Example 62</span>: Embedding JSON-LD in HTML</div><pre class="example"><span class="highlight">&lt;script type="application/ld+json"&gt;</span>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+62
+</ins></span>:<ins class="diff-chg">
+Embedding
+JSON-LD
+in
+HTML
+</ins></div><pre class="example"><span class="highlight">&lt;script type="application/ld+json"&gt;</span>
 {
   "@context": "http://json-ld.org/contexts/person.jsonld",
   "@id": "http://dbpedia.org/resource/John_Lennon",
@@ -14769,9 +15611,9 @@
   "born": "1940-10-09",
   "spouse": "http://dbpedia.org/resource/Cynthia_Lennon"
 }
-<span class="highlight">
-&lt;/script&gt;
-</span>
+<del class="diff-old">&lt;/script&gt;
+</del>
+<span class="highlight">&lt;/script&gt;</span>
 </pre>
 </div>
 <p>
@@ -14832,7 +15674,7 @@
 RDF
 [
 <cite>
-<a class="bibref" href="#bib-RDF11-CONCEPTS">
+<a href="#bib-RDF11-CONCEPTS" class="bibref">
 RDF11-CONCEPTS
 </a>
 </cite>
@@ -14843,7 +15685,7 @@
 expanded
 into
 an
-<a class="tref externalDFN" title="rdf-dataset" href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-dataset">
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-dataset" title="rdf-dataset" class="tref externalDFN">
 RDF
 Dataset
 </a>
@@ -14860,7 +15702,7 @@
 </cite>
 [
 <cite>
-<a class="bibref" href="#bib-JSON-LD-API">
+<a href="#bib-JSON-LD-API" class="bibref">
 JSON-LD-API
 </a>
 </cite>
@@ -14868,8 +15710,8 @@
 </p>
 </section>
 </section>
-<section class="normative" id="data-model">
-<h2 aria-level="1" role="heading" id="h2_data-model">
+<section id="data-model" class="normative">
+<h2 id="h2_data-model" role="heading" aria-level="1">
 <span class="secno">
 7.
 </span>
@@ -14905,14 +15747,14 @@
 in
 [
 <cite>
-<a class="bibref" href="#bib-RFC4627">
+<a href="#bib-RFC4627" class="bibref">
 RFC4627
 </a>
 </cite>
 ],
 and
 the
-<dfn title="data-model" id="dfn-data-model">
+<dfn id="dfn-data-model" title="data-model">
 data
 model
 </dfn>
@@ -14927,7 +15769,7 @@
 model
 [
 <cite>
-<a class="bibref" href="#bib-RDF11-CONCEPTS">
+<a href="#bib-RDF11-CONCEPTS" class="bibref">
 RDF11-CONCEPTS
 </a>
 </cite>
@@ -14975,7 +15817,7 @@
 <ul>
 <li>
 A
-<dfn title="json-ld-document" id="dfn-json-ld-document">
+<dfn id="dfn-json-ld-document" title="json-ld-document">
 JSON-LD
 document
 </dfn>
@@ -14988,7 +15830,7 @@
 </a>
 [
 <cite>
-<a class="bibref" href="#bib-RDF11-CONCEPTS">
+<a href="#bib-RDF11-CONCEPTS" class="bibref">
 RDF11-CONCEPTS
 </a>
 </cite>
@@ -14998,14 +15840,14 @@
 a
 collection
 of
-<a class="tref internalDFN" title="graph" href="#dfn-graph">
+<a href="#dfn-graph" title="graph" class="tref internalDFN">
 graphs
 </a>
 that
 comprises
 exactly
 one
-<dfn title="default-graph" id="dfn-default-graph">
+<dfn id="dfn-default-graph" title="default-graph">
 <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-default-graph" class="externalDFN">
 default
 graph
@@ -15015,7 +15857,7 @@
 zero
 or
 more
-<dfn title="named-graph" id="dfn-named-graph">
+<dfn id="dfn-named-graph" title="named-graph">
 <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-named-graph" class="externalDFN">
 named
 graphs
@@ -15024,7 +15866,7 @@
 </li>
 <li>
 The
-<a class="tref internalDFN" title="default-graph" href="#dfn-default-graph">
+<a href="#dfn-default-graph" title="default-graph" class="tref internalDFN">
 default
 graph
 </a>
@@ -15034,7 +15876,7 @@
 a
 name
 and
-<em class="rfc2119" title="MAY">
+<em title="MAY" class="rfc2119">
 MAY
 </em>
 be
@@ -15042,7 +15884,7 @@
 </li>
 <li>
 Each
-<a class="tref internalDFN" title="named-graph" href="#dfn-named-graph">
+<a href="#dfn-named-graph" title="named-graph" class="tref internalDFN">
 named
 graph
 </a>
@@ -15052,19 +15894,19 @@
 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">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
 blank
 node
 identifier
 </a>
 (the
-<dfn title="graph-name" id="dfn-graph-name">
+<dfn id="dfn-graph-name" title="graph-name">
 <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-graph-name" class="externalDFN">
 graph
 name
@@ -15073,30 +15915,30 @@
 )
 and
 a
-<a class="tref internalDFN" title="graph" href="#dfn-graph">
+<a href="#dfn-graph" title="graph" class="tref internalDFN">
 graph
 </a>.
 Whenever
 practical,
 the
-<a class="tref internalDFN" title="graph-name" href="#dfn-graph-name">
+<a href="#dfn-graph-name" title="graph-name" class="tref internalDFN">
 graph
 name
 </a>
-<em class="rfc2119" title="SHOULD">
+<em title="SHOULD" class="rfc2119">
 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="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+</li>
+<li>
+A
+<dfn id="dfn-graph" title="graph">
 <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-graph" class="externalDFN">
 graph
 </a>
@@ -15110,18 +15952,18 @@
 a
 set
 of
-<a class="tref internalDFN" title="node" href="#dfn-node">
+<a href="#dfn-node" title="node" class="tref internalDFN">
 nodes
 </a>
 connected
 by
-<a class="tref internalDFN" title="edge" href="#dfn-edge">
+<a href="#dfn-edge" title="edge" class="tref internalDFN">
 edges
 </a>.
 </li>
 <li>
 Every
-<dfn title="edge" id="dfn-edge">
+<dfn id="dfn-edge" title="edge">
 edge
 </dfn>
 has
@@ -15135,14 +15977,14 @@
 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">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+a
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
 blank
 node
 identifier
@@ -15156,7 +15998,7 @@
 labels
 are
 called
-<dfn title="property" id="dfn-property">
+<dfn id="dfn-property" title="property">
 <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-property" class="externalDFN">
 properties
 </a>
@@ -15164,17 +16006,17 @@
 Whenever
 practical,
 an
-<a class="tref internalDFN" title="edge" href="#dfn-edge">
+<a href="#dfn-edge" title="edge" class="tref internalDFN">
 edge
 </a>
-<em class="rfc2119" title="SHOULD">
+<em title="SHOULD" class="rfc2119">
 SHOULD
 </em>
 be
 labeled
 with
 an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -15182,72 +16024,72 @@
 </li>
 <li>
 Every
-<dfn title="node" id="dfn-node">
+<dfn id="dfn-node" title="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">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+a
+<a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">
+blank
+node
+</a>,
+a
+<a href="#dfn-json-ld-value" title="json-ld-value" class="tref internalDFN">
+JSON-LD
+value
+</a>,
+or
+a
+<a href="#dfn-list" title="list" class="tref internalDFN">
 list
 </a>.
 </li>
 <li>
 A
-<a class="tref internalDFN" title="node" href="#dfn-node">
+<a href="#dfn-node" title="node" class="tref internalDFN">
 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">
+<em title="MUST" class="rfc2119">
+MUST
+</em>
+be
+an
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+a
+<a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">
+blank
+node
+</a>.
+</li>
+<li>
+A
+<a href="#dfn-graph" title="graph" class="tref internalDFN">
 graph
 </a>
-<em class="rfc2119" title="MUST NOT">
+<em title="MUST NOT" class="rfc2119">
 MUST
 NOT
 </em>
 contain
 unconnected
-<a class="tref internalDFN" title="node" href="#dfn-node">
+<a href="#dfn-node" title="node" class="tref internalDFN">
 nodes
 </a>,
 i.e.,
@@ -15258,19 +16100,19 @@
 connected
 by
 an
-<a class="tref internalDFN" title="edge" href="#dfn-edge">
+<a href="#dfn-edge" title="edge" class="tref internalDFN">
 edge
 </a>
 to
 any
 other
-<a class="tref internalDFN" title="node" href="#dfn-node">
+<a href="#dfn-node" title="node" class="tref internalDFN">
 node
 </a>.
 </li>
 <li>
 An
-<dfn title="iri" id="dfn-iri">
+<dfn id="dfn-iri" title="iri">
 <abbr title="Internationalized Resource Identifier">
 <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-iri" class="externalDFN">
 IRI
@@ -15292,21 +16134,21 @@
 in
 [
 <cite>
-<a class="bibref" href="#bib-RFC3987">
+<a href="#bib-RFC3987" class="bibref">
 RFC3987
 </a>
 </cite>
 ].
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 IRIs
 </a>
 used
 within
 a
-<a class="tref internalDFN" title="graph" href="#dfn-graph">
+<a href="#dfn-graph" title="graph" class="tref internalDFN">
 graph
 </a>
-<em class="rfc2119" title="SHOULD">
+<em title="SHOULD" class="rfc2119">
 SHOULD
 </em>
 return
@@ -15320,7 +16162,7 @@
 denoted
 by
 that
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
@@ -15331,7 +16173,7 @@
 </li>
 <li>
 A
-<dfn title="blank-node" id="dfn-blank-node">
+<dfn id="dfn-blank-node" title="blank-node">
 <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-blank-node" class="externalDFN">
 blank
 node
@@ -15339,40 +16181,40 @@
 </dfn>
 is
 a
-<a class="tref internalDFN" title="node" href="#dfn-node">
+<a href="#dfn-node" title="node" class="tref internalDFN">
 node
 </a>
 which
 is
 neither
 an
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>,
 nor
 a
-<a class="tref internalDFN" title="json-ld-value" href="#dfn-json-ld-value">
+<a href="#dfn-json-ld-value" title="json-ld-value" class="tref internalDFN">
 JSON-LD
 value
 </a>,
 nor
 a
-<a class="tref internalDFN" title="list" href="#dfn-list">
+<a href="#dfn-list" title="list" class="tref internalDFN">
 list
 </a>.
 A
 blank
 node
-<em class="rfc2119" title="MAY">
+<em title="MAY" class="rfc2119">
 MAY
 </em>
 be
 identified
 using
 a
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
 blank
 node
 identifier
@@ -15380,7 +16222,7 @@
 </li>
 <li>
 A
-<dfn title="blank-node-identifier" id="dfn-blank-node-identifier">
+<dfn id="dfn-blank-node-identifier" title="blank-node-identifier">
 <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-blank-node-identifier" class="externalDFN">
 blank
 node
@@ -15399,7 +16241,7 @@
 identifier
 for
 a
-<a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">
+<a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">
 blank
 node
 </a>
@@ -15408,7 +16250,7 @@
 scope
 of
 a
-<a class="tref internalDFN" title="json-ld-document" href="#dfn-json-ld-document">
+<a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">
 JSON-LD
 document
 </a>.
@@ -15423,25 +16265,25 @@
 </li>
 <li>
 A
-<dfn title="json-ld-value" id="dfn-json-ld-value">
+<dfn id="dfn-json-ld-value" title="json-ld-value">
 JSON-LD
 value
 </dfn>
 is
 a
-<a class="tref internalDFN" title="typed-value" href="#dfn-typed-value">
+<a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">
 typed
 value
 </a>,
 a
-<a class="tref internalDFN" title="string" href="#dfn-string">
+<a href="#dfn-string" title="string" class="tref internalDFN">
 string
 </a>
 (which
 is
 interpreted
 as
-<a class="tref internalDFN" title="typed-value" href="#dfn-typed-value">
+<a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">
 typed
 value
 </a>
@@ -15452,11 +16294,11 @@
 </code>
 ),
 a
-<a class="tref internalDFN" title="number" href="#dfn-number">
+<a href="#dfn-number" title="number" class="tref internalDFN">
 number
 </a>
 (
-<a class="tref internalDFN" title="number" href="#dfn-number">
+<a href="#dfn-number" title="number" class="tref internalDFN">
 numbers
 </a>
 with
@@ -15474,7 +16316,7 @@
 are
 interpreted
 as
-<a class="tref internalDFN" title="typed-value" href="#dfn-typed-value">
+<a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">
 typed
 values
 </a>
@@ -15485,13 +16327,13 @@
 </code>,
 all
 other
-<a class="tref internalDFN" title="number" href="#dfn-number">
+<a href="#dfn-number" title="number" class="tref internalDFN">
 numbers
 </a>
 are
 interpreted
 as
-<a class="tref internalDFN" title="typed-value" href="#dfn-typed-value">
+<a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">
 typed
 values
 </a>
@@ -15501,18 +16343,18 @@
 xsd:integer
 </code>
 ),
-<a class="tref internalDFN" title="true" href="#dfn-true">
+<a href= "#dfn-true" title="true" class="tref internalDFN">
 true
 </a>
 or
-<a class="tref internalDFN" title="false" href="#dfn-false">
+<a href="#dfn-false" title="false" class="tref internalDFN">
 false
 </a>
 (which
 are
 interpreted
 as
-<a class="tref internalDFN" title="typed-value" href="#dfn-typed-value">
+<a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">
 typed
 values
 </a>
@@ -15524,14 +16366,14 @@
 ),
 or
 a
-<a class="tref internalDFN" title="language-tagged-string" href="#dfn-language-tagged-string">
+<a href="#dfn-language-tagged-string" title="language-tagged-string" class="tref internalDFN">
 language-tagged
 string
 </a>.
 </li>
 <li>
 A
-<dfn title="typed-value" id="dfn-typed-value">
+<dfn id="dfn-typed-value" title="typed-value">
 typed
 value
 </dfn>
@@ -15549,15 +16391,15 @@
 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="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+</li>
+<li>
+A
+<dfn id="dfn-language-tagged-string" title="language-tagged-string">
 <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-language-tagged-string" class="externalDFN">
 language-tagged
 string
@@ -15577,7 +16419,7 @@
 by
 [
 <cite>
-<a class="bibref" href="#bib-BCP47">
+<a href="#bib-BCP47" class="bibref">
 BCP47
 </a>
 </cite>
@@ -15585,7 +16427,7 @@
 The
 language
 tag
-<em class="rfc2119" title="MUST">
+<em title="MUST" class="rfc2119">
 MUST
 </em>
 be
@@ -15602,7 +16444,7 @@
 of
 [
 <cite>
-<a class="bibref" href="#bib-BCP47">
+<a href="#bib-BCP47" class="bibref">
 BCP47
 </a>
 </cite>
@@ -15610,7 +16452,7 @@
 </li>
 <li>
 A
-<dfn title="list" id="dfn-list">
+<dfn id="dfn-list" title="list">
 list
 </dfn>
 is
@@ -15620,19 +16462,19 @@
 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">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+IRIs
+</a>,
+<a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">
 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">
+<a href="#dfn-json-ld-value" title="json-ld-value" class="tref internalDFN">
+JSON-LD
+values
+</a>.
+<a href="#dfn-list" title="list" class="tref internalDFN">
 Lists
 </a>
 are
@@ -15645,7 +16487,7 @@
 </a>
 [
 <cite>
-<a class="bibref" href="#bib-RDF11-MT">
+<a href="#bib-RDF11-MT" class="bibref">
 RDF11-MT
 </a>
 </cite>
@@ -15786,11 +16628,11 @@
 comment.
 </del>
 <p>
-<a class="tref internalDFN" title="json-ld-document" href="#dfn-json-ld-document">
+<a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">
 JSON-LD
 documents
 </a>
-<em class="rfc2119" title="MAY">
+<em title="MAY" class="rfc2119">
 MAY
 </em>
 contain
@@ -15801,7 +16643,7 @@
 represented
 by
 the
-<a class="tref internalDFN" title="data-model" href="#dfn-data-model">
+<a href="#dfn-data-model" title="data-model" class="tref internalDFN">
 data
 model
 </a>
@@ -15816,7 +16658,7 @@
 ignored
 when
 a
-<a class="tref internalDFN" title="json-ld-document" href="#dfn-json-ld-document">
+<a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">
 JSON-LD
 document
 </a>
@@ -15837,18 +16679,18 @@
 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">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+a
+<a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">
+blank
+node
+</a>,
+or
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keyword
 </a>
 will
@@ -15856,10 +16698,13 @@
 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">
+<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:
+<del class="diff-old">Figure&nbsp;1:
+</del>
+<ins class="diff-chg">Figure&#160;1:
+</ins>
 An
 illustration
 of
@@ -15868,8 +16713,8 @@
 model.
 </p>
 </section>
-<section class="normative" id="json-ld-grammar">
-<h2 aria-level="1" role="heading" id="h2_json-ld-grammar">
+<section id="json-ld-grammar" class="normative">
+<h2 id="h2_json-ld-grammar" role="heading" aria-level="1">
 <span class="secno">
 8.
 </span>
@@ -15893,11 +16738,11 @@
 </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">
+<a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">
+JSON-LD
+document
+</a>
+<em title="MUST" class="rfc2119">
 MUST
 </em>
 be
@@ -15910,7 +16755,7 @@
 in
 [
 <cite>
-<a class="bibref" href="#bib-RFC4627">
+<a href="#bib-RFC4627" class="bibref">
 RFC4627
 </a>
 </cite>
@@ -15918,30 +16763,30 @@
 </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">
+<a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">
+JSON-LD
+document
+</a>
+<em title="MUST" class="rfc2119">
 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">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
+node
+object
+</a>
+or
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
 array
 </a>
 whose
 elements
 are
 each
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
 node
 objects
 </a>
@@ -15960,17 +16805,17 @@
 the
 keys
 in
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
 objects
 </a>
-<em class="rfc2119" title="MUST">
+<em title="MUST" class="rfc2119">
 MUST
 </em>
 be
 unique.
 </p>
 <div class="note">
-<div class="note-title" aria-level="2" role="heading" id="h_note_9">
+<div id="h_note_9" role="heading" aria-level="2" class="note-title">
 <span>
 Note
 </span>
@@ -15978,7 +16823,7 @@
 <p class="">
 JSON-LD
 allows
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keywords
 </a>
 to
@@ -15995,7 +16840,7 @@
 details).
 Whenever
 a
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keyword
 </a>
 is
@@ -16012,20 +16857,20 @@
 alias
 for
 that
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keyword
 </a>.
 For
 example,
 if
 the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
 active
 context
 </a>
 defines
 the
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>
 <code>
@@ -16053,7 +16898,7 @@
 </code>.
 Note
 that
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keyword
 </a>
 aliases
@@ -16065,8 +16910,8 @@
 processing.
 </p>
 </div>
-<section class="normative" id="terms">
-<h3 aria-level="2" role="heading" id="h3_terms">
+<section id="terms" class="normative">
+<h3 id="h3_terms" role="heading" aria-level="2">
 <span class="secno">
 8.1
 </span>
@@ -16074,27 +16919,27 @@
 </h3>
 <p>
 A
-<dfn title="term" id="dfn-term">
+<dfn id="dfn-term" title="term">
 term
 </dfn>
 is
 a
 short-hand
-<a class="tref internalDFN" title="string" href="#dfn-string">
+<a href="#dfn-string" title="string" class="tref internalDFN">
 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">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+a
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
 blank
 node
 identifier
@@ -16102,10 +16947,10 @@
 </p>
 <p>
 A
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-<em class="rfc2119" title="MUST NOT">
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+<em title="MUST NOT" class="rfc2119">
 MUST
 NOT
 </em>
@@ -16114,7 +16959,7 @@
 of
 the
 JSON-LD
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keywords
 </a>.
 </p>
@@ -16124,10 +16969,10 @@
 forward-compatibility
 issues,
 a
-<a class="tref internalDFN" title="term" href="#dfn-term">
-term
-</a>
-<em class="rfc2119" title="SHOULD NOT">
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>
+<em title="SHOULD NOT" class="rfc2119">
 SHOULD
 NOT
 </em>
@@ -16146,20 +16991,20 @@
 may
 introduce
 additional
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keywords
 </a>.
 Furthermore,
 the
 term
-<em class="rfc2119" title="MUST NOT">
+<em title="MUST NOT" class="rfc2119">
 MUST
 NOT
 </em>
 be
 an
 empty
-<a class="tref internalDFN" title="string" href="#dfn-string">
+<a href="#dfn-string" title="string" class="tref internalDFN">
 string
 </a>
 (
@@ -16199,17 +17044,17 @@
 discussion
 on
 mapping
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 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">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+IRIs
+</a>.
+</p>
+</section>
+<section id="node-objects" class="normative">
+<h3 id="h3_node-objects" role="heading" aria-level="2">
 <span class="secno">
 8.2
 </span>
@@ -16218,7 +17063,7 @@
 </h3>
 <p>
 A
-<dfn title="node-object" id="dfn-node-object">
+<dfn id="dfn-node-object" title="node-object">
 node
 object
 </dfn>
@@ -16229,29 +17074,29 @@
 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">
+<a href="#dfn-node" title="node" class="tref internalDFN">
+node
+</a>
+in
+the
+<a href="#dfn-graph" title="graph" class="tref internalDFN">
 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">
+<a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">
+JSON-LD
+document
+</a>.
+A
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
+JSON
+object
+</a>
+is
+a
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
 node
 object
 </a>
@@ -16262,7 +17107,7 @@
 of
 a
 JSON-LD
-<a class="tref internalDFN" title="context" href="#dfn-context">
+<a href="#dfn-context" title="context" class="tref internalDFN">
 context
 </a>
 and:
@@ -16293,7 +17138,7 @@
 not
 the
 top-most
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
 JSON
 object
 </a>
@@ -16318,17 +17163,17 @@
 </ul>
 <p>
 The
-<a class="tref internalDFN" title="property" href="#dfn-property">
+<a href="#dfn-property" title="property" class="tref internalDFN">
 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">
+<a href="#dfn-node" title="node" class="tref internalDFN">
+node
+</a>
+in
+a
+<a href="#dfn-graph" title="graph" class="tref internalDFN">
 graph
 </a>
 may
@@ -16336,7 +17181,7 @@
 spread
 among
 different
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
 node
 objects
 </a>
@@ -16351,7 +17196,7 @@
 of
 the
 different
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
 node
 objects
 </a>
@@ -16366,22 +17211,22 @@
 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">
+<a href="#dfn-node" title="node" class="tref internalDFN">
+node
+</a>.
+</p>
+<p>
+A
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
+node
+object
+</a>
+<em title="MUST" class="rfc2119">
+MUST
+</em>
+be
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
 JSON
 object
 </a>.
@@ -16390,20 +17235,20 @@
 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">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+IRIs
+</a>,
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
 compact
 IRIs
 </a>,
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 terms
 </a>
 valid
 in
 the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
 active
 context
 </a>,
@@ -16412,10 +17257,10 @@
 of
 the
 following
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keywords
 </a>
-<em class="rfc2119" title="MUST">
+<em title="MUST" class="rfc2119">
 MUST
 </em>
 be
@@ -16459,7 +17304,7 @@
 <p>
 If
 the
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
 node
 object
 </a>
@@ -16471,35 +17316,35 @@
 key,
 its
 value
-<em class="rfc2119" title="MUST">
-MUST
-</em>
-be
-<a class="tref internalDFN" title="null" href="#dfn-null">
+<em title="MUST" class="rfc2119">
+MUST
+</em>
+be
+<a href="#dfn-null" title="null" class="tref internalDFN">
 null
 </a>,
 an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>,
 a
-<a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">
+<a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">
 relative
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>,
 a
-<a class="tref internalDFN" title="context-definition" href="#dfn-context-definition">
+<a href="#dfn-context-definition" title="context-definition" class="tref internalDFN">
 context
 definition
 </a>,
 or
 an
-<a class="tref internalDFN" title="array" href="#dfn-array">
+<a href="#dfn-array" title="array" class="tref internalDFN">
 array
 </a>
 composed
@@ -16511,7 +17356,7 @@
 <p>
 If
 the
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
 node
 object
 </a>
@@ -16523,19 +17368,19 @@
 key,
 its
 value
-<em class="rfc2119" title="MUST">
-MUST
-</em>
-be
-an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<em title="MUST" class="rfc2119">
+MUST
+</em>
+be
+an
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>,
 a
-<a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">
+<a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">
 relative
 <abbr title="Internationalized Resource Identifier">
 IRI
@@ -16543,14 +17388,14 @@
 </a>,
 or
 a
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
 compact
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>
 (including
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
 blank
 node
 identifiers
@@ -16570,7 +17415,7 @@
 IRIs
 </a>,
 and
-<a class="sectionRef sec-ref" href="#identifying-blank-nodes">
+<a class="sectionRef sec-ref" href= "#identifying-blank-nodes">
 section
 6.14
 Identifying
@@ -16589,7 +17434,7 @@
 <p>
 If
 the
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
 node
 object
 </a>
@@ -16601,31 +17446,31 @@
 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">
+<em title="MUST" class="rfc2119">
+MUST
+</em>
+be
+a
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
+node
+object
+</a>
+or
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
 array
 </a>
 of
 zero
 or
 more
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
 node
 objects
 </a>.
 If
 the
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
 node
 object
 </a>
@@ -16667,7 +17512,7 @@
 case,
 if
 a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
 JSON
 object
 </a>
@@ -16685,7 +17530,7 @@
 </code>,
 and
 the
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
+<a href= "#dfn-json-object" title="json-object" class="tref internalDFN">
 JSON
 object
 </a>
@@ -16697,7 +17542,7 @@
 JSON-LD
 document,
 the
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
 JSON
 object
 </a>
@@ -16706,7 +17551,7 @@
 treated
 as
 a
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
 node
 object
 </a>
@@ -16719,7 +17564,7 @@
 way
 of
 defining
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
 node
 definitions
 </a>
@@ -16733,7 +17578,7 @@
 This
 allows
 a
-<a class="tref internalDFN" title="context" href="#dfn-context">
+<a href="#dfn-context" title="context" class="tref internalDFN">
 context
 </a>
 to
@@ -16747,7 +17592,7 @@
 of
 the
 constituent
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
 node
 objects
 </a>.
@@ -16755,7 +17600,7 @@
 <p>
 If
 the
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
 node
 object
 </a>
@@ -16767,54 +17612,54 @@
 key,
 its
 value
-<em class="rfc2119" title="MUST">
+<em title="MUST" class="rfc2119">
 MUST
 </em>
 be
 either
 an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>,
 a
-<a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">
+<a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">
 relative
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>,
 a
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
 compact
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>
 (including
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
 blank
 node
 identifiers
 </a>
 ),
 a
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>
 defined
 in
 the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
 active
 context
 </a>
 expanding
 into
 an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href= "#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 <abbr title="Internationalized Resource Identifier">
 IRI
@@ -16822,7 +17667,7 @@
 </a>,
 or
 an
-<a class="tref internalDFN" title="array" href="#dfn-array">
+<a href="#dfn-array" title="array" class="tref internalDFN">
 array
 </a>
 of
@@ -16849,7 +17694,7 @@
 <p>
 If
 the
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
 node
 object
 </a>
@@ -16861,12 +17706,12 @@
 key,
 its
 value
-<em class="rfc2119" title="MUST">
-MUST
-</em>
-be
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
+<em title="MUST" class="rfc2119">
+MUST
+</em>
+be
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
 JSON
 object
 </a>
@@ -16882,45 +17727,45 @@
 a
 reverse
 property
-<em class="rfc2119" title="MUST">
-MUST
-</em>
-be
-an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<em title="MUST" class="rfc2119">
+MUST
+</em>
+be
+an
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>,
 a
-<a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">
+<a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">
 relative
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>,
 a
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
 compact
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>,
 a
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
 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">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
+node
+object
+</a>
+or
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
 array
 </a>
 containing
@@ -16932,7 +17777,7 @@
 <p>
 If
 the
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
 node
 object
 </a>
@@ -16944,12 +17789,12 @@
 key,
 its
 value
-<em class="rfc2119" title="MUST">
-MUST
-</em>
-be
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
+<em title="MUST" class="rfc2119">
+MUST
+</em>
+be
+a
+<a href="#dfn-string" title="string" class="tref internalDFN">
 string
 </a>.
 See
@@ -16972,23 +17817,23 @@
 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">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
+node
+object
+</a>
+that
+are
+not
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keywords
 </a>
-<em class="rfc2119" title="MAY">
+<em title="MAY" class="rfc2119">
 MAY
 </em>
 expand
 to
 an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 <abbr title="Internationalized Resource Identifier">
 IRI
@@ -16996,7 +17841,7 @@
 </a>
 using
 the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
 active
 context
 </a>.
@@ -17009,13 +17854,13 @@
 expand
 to
 an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>
-<em class="rfc2119" title="MUST">
+<em title="MUST" class="rfc2119">
 MUST
 </em>
 be
@@ -17026,57 +17871,57 @@
 </p>
 <ul>
 <li>
-<a class="tref internalDFN" title="string" href="#dfn-string">
+<a href="#dfn-string" title="string" class="tref internalDFN">
 string
 </a>,
 </li>
 <li>
-<a class="tref internalDFN" title="number" href="#dfn-number">
+<a href="#dfn-number" title="number" class="tref internalDFN">
 number
 </a>,
 </li>
 <li>
-<a class="tref internalDFN" title="true" href="#dfn-true">
+<a href="#dfn-true" title="true" class="tref internalDFN">
 true
 </a>,
 </li>
 <li>
-<a class="tref internalDFN" title="false" href="#dfn-false">
+<a href="#dfn-false" title="false" class="tref internalDFN">
 false
 </a>,
 </li>
 <li>
-<a class="tref internalDFN" title="null" href="#dfn-null">
+<a href="#dfn-null" title="null" class="tref internalDFN">
 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">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
+node
+object
+</a>,
+</li>
+<li>
+<a href="#dfn-value-object" title="value-object" class="tref internalDFN">
+value
+object
+</a>,
+</li>
+<li>
+<a href="#dfn-list-object" title="list-object" class="tref internalDFN">
 list
 object
 </a>,
 </li>
 <li>
-<a class="tref internalDFN" title="set-object" href="#dfn-set-object">
+<a href="#dfn-set-object" title="set-object" class="tref internalDFN">
 set
 object
 </a>,
 </li>
 <li>
 an
-<a class="tref internalDFN" title="array" href="#dfn-array">
+<a href="#dfn-array" title="array" class="tref internalDFN">
 array
 </a>
 of
@@ -17090,7 +17935,7 @@
 </li>
 <li>
 a
-<a class="tref internalDFN" title="language-map" href="#dfn-language-map">
+<a href="#dfn-language-map" title="language-map" class="tref internalDFN">
 language
 map
 </a>,
@@ -17098,15 +17943,15 @@
 </li>
 <li>
 an
-<a class="tref internalDFN" title="index-map" href="#dfn-index-map">
+<a href="#dfn-index-map" title="index-map" class="tref internalDFN">
 index
 map
 </a>
 </li>
 </ul>
 </section>
-<section class="normative" id="value-objects">
-<h3 aria-level="2" role="heading" id="h3_value-objects">
+<section id="value-objects" class="normative">
+<h3 id="h3_value-objects" role="heading" aria-level="2">
 <span class="secno">
 8.3
 </span>
@@ -17115,7 +17960,7 @@
 </h3>
 <p>
 A
-<dfn title="value-object" id="dfn-value-object">
+<dfn id="dfn-value-object" title="value-object">
 value
 object
 </dfn>
@@ -17135,29 +17980,29 @@
 to
 create
 a
-<a class="tref internalDFN" title="typed-value" href="#dfn-typed-value">
+<a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">
 typed
 value
 </a>
 or
 a
-<a class="tref internalDFN" title="language-tagged-string" href="#dfn-language-tagged-string">
+<a href="#dfn-language-tagged-string" title="language-tagged-string" class="tref internalDFN">
 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">
+<a href="#dfn-value-object" title="value-object" class="tref internalDFN">
+value
+object
+</a>
+<em title="MUST" class="rfc2119">
+MUST
+</em>
+be
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
 JSON
 object
 </a>
@@ -17168,7 +18013,7 @@
 </code>
 key.
 It
-<em class="rfc2119" title="MAY">
+<em title="MAY" class="rfc2119">
 MAY
 </em>
 also
@@ -17192,7 +18037,7 @@
 </code>
 key
 but
-<em class="rfc2119" title="MUST NOT">
+<em title="MUST NOT" class="rfc2119">
 MUST
 NOT
 </em>
@@ -17213,11 +18058,11 @@
 same
 time.
 A
-<a class="tref internalDFN" title="value-object" href="#dfn-value-object">
-value
-object
-</a>
-<em class="rfc2119" title="MUST NOT">
+<a href="#dfn-value-object" title="value-object" class="tref internalDFN">
+value
+object
+</a>
+<em title="MUST NOT" class="rfc2119">
 MUST
 NOT
 </em>
@@ -17229,14 +18074,14 @@
 expand
 to
 an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>
 or
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keyword
 </a>.
 </p>
@@ -17250,27 +18095,27 @@
 @value
 </code>
 key
-<em class="rfc2119" title="MUST">
+<em title="MUST" class="rfc2119">
 MUST
 </em>
 be
 either
 a
-<a class="tref internalDFN" title="string" href="#dfn-string">
+<a href="#dfn-string" title="string" class="tref internalDFN">
 string
 </a>,
 a
-<a class="tref internalDFN" title="number" href="#dfn-number">
+<a href="#dfn-number" title="number" class="tref internalDFN">
 number
 </a>,
-<a class="tref internalDFN" title="true" href="#dfn-true">
+<a href="#dfn-true" title="true" class="tref internalDFN">
 true
 </a>,
-<a class="tref internalDFN" title="false" href="#dfn-false">
+<a href="#dfn-false" title="false" class="tref internalDFN">
 false
 </a>
 or
-<a class="tref internalDFN" title="null" href="#dfn-null">
+<a href="#dfn-null" title="null" class="tref internalDFN">
 null
 </a>.
 </p>
@@ -17284,37 +18129,37 @@
 @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">
+<em title="MUST" class="rfc2119">
+MUST
+</em>
+be
+a
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>,
+a
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
 compact
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>,
 an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>,
 a
-<a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">
+<a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">
 relative
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>,
 or
-<a class="tref internalDFN" title="null" href="#dfn-null">
+<a href="#dfn-null" title="null" class="tref internalDFN">
 null
 </a>.
 </p>
@@ -17328,7 +18173,7 @@
 @language
 </code>
 key
-<em class="rfc2119" title="MUST">
+<em title="MUST" class="rfc2119">
 MUST
 </em>
 have
@@ -17339,14 +18184,14 @@
 in
 [
 <cite>
-<a class="bibref" href="#bib-BCP47">
+<a href="#bib-BCP47" class="bibref">
 BCP47
 </a>
 </cite>
 ],
 or
 be
-<a class="tref internalDFN" title="null" href="#dfn-null">
+<a href="#dfn-null" title="null" class="tref internalDFN">
 null
 </a>.
 </p>
@@ -17360,12 +18205,12 @@
 @index
 </code>
 key
-<em class="rfc2119" title="MUST">
-MUST
-</em>
-be
-a
-<a class="tref internalDFN" title="string" href="#dfn-string">
+<em title="MUST" class="rfc2119">
+MUST
+</em>
+be
+a
+<a href="#dfn-string" title="string" class="tref internalDFN">
 string
 </a>.
 </p>
@@ -17388,14 +18233,14 @@
 more
 information
 on
-<a class="tref internalDFN" title="value-object" href="#dfn-value-object">
+<a href="#dfn-value-object" title="value-object" class="tref internalDFN">
 value
 objects
 </a>.
 </p>
 </section>
-<section class="normative" id="lists-and-sets">
-<h3 aria-level="2" role="heading" id="h3_lists-and-sets">
+<section id="lists-and-sets" class="normative">
+<h3 id="h3_lists-and-sets" role="heading" aria-level="2">
 <span class="secno">
 8.4
 </span>
@@ -17405,7 +18250,7 @@
 </h3>
 <p>
 A
-<a class="tref internalDFN" title="list" href="#dfn-list">
+<a href="#dfn-list" title="list" class="tref internalDFN">
 list
 </a>
 represents
@@ -17429,7 +18274,7 @@
 Unless
 otherwise
 specified,
-<a class="tref internalDFN" title="array" href="#dfn-array">
+<a href="#dfn-array" title="array" class="tref internalDFN">
 arrays
 </a>
 are
@@ -17500,7 +18345,7 @@
 form
 of
 an
-<a class="tref internalDFN" title="array" href="#dfn-array">
+<a href="#dfn-array" title="array" class="tref internalDFN">
 array
 </a>
 when
@@ -17548,16 +18393,16 @@
 </p>
 <p>
 A
-<dfn title="list-object" id="dfn-list-object">
+<dfn id="dfn-list-object" title="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">
+<em title="MUST" class="rfc2119">
+MUST
+</em>
+be
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
 JSON
 object
 </a>
@@ -17569,14 +18414,14 @@
 expand
 to
 an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>
 or
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keyword
 </a>
 other
@@ -17594,16 +18439,16 @@
 </p>
 <p>
 A
-<dfn title="set-object" id="dfn-set-object">
+<dfn id="dfn-set-object" title="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">
+<em title="MUST" class="rfc2119">
+MUST
+</em>
+be
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
 JSON
 object
 </a>
@@ -17615,14 +18460,14 @@
 expand
 to
 an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>
 or
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keyword
 </a>
 other
@@ -17669,7 +18514,7 @@
 <code>
 @set
 </code>
-<em class="rfc2119" title="MUST">
+<em title="MUST" class="rfc2119">
 MUST
 </em>
 be
@@ -17681,46 +18526,46 @@
 </p>
 <ul>
 <li>
-<a class="tref internalDFN" title="string" href="#dfn-string">
+<a href="#dfn-string" title="string" class="tref internalDFN">
 string
 </a>,
 </li>
 <li>
-<a class="tref internalDFN" title="number" href="#dfn-number">
+<a href="#dfn-number" title="number" class="tref internalDFN">
 number
 </a>,
 </li>
 <li>
-<a class="tref internalDFN" title="true" href="#dfn-true">
+<a href="#dfn-true" title="true" class="tref internalDFN">
 true
 </a>,
 </li>
 <li>
-<a class="tref internalDFN" title="false" href="#dfn-false">
+<a href="#dfn-false" title="false" class="tref internalDFN">
 false
 </a>,
 </li>
 <li>
-<a class="tref internalDFN" title="null" href="#dfn-null">
+<a href="#dfn-null" title="null" class="tref internalDFN">
 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">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
+node
+object
+</a>,
+</li>
+<li>
+<a href="#dfn-value-object" title="value-object" class="tref internalDFN">
+value
+object
+</a>,
+or
+</li>
+<li>
+an
+<a href="#dfn-array" title="array" class="tref internalDFN">
 array
 </a>
 of
@@ -17751,8 +18596,8 @@
 lists.
 </p>
 </section>
-<section class="normative" id="language-maps">
-<h3 aria-level="2" role="heading" id="h3_language-maps">
+<section id="language-maps" class="normative">
+<h3 id="h3_language-maps" role="heading" aria-level="2">
 <span class="secno">
 8.5
 </span>
@@ -17761,7 +18606,7 @@
 </h3>
 <p>
 A
-<dfn title="language-map" id="dfn-language-map">
+<dfn id="dfn-language-map" title="language-map">
 language
 map
 </dfn>
@@ -17783,7 +18628,7 @@
 programmatic
 access.
 A
-<a class="tref internalDFN" title="language-map" href="#dfn-language-map">
+<a href="#dfn-language-map" title="language-map" class="tref internalDFN">
 language
 map
 </a>
@@ -17796,7 +18641,7 @@
 value
 within
 a
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
 node
 object
 </a>
@@ -17818,21 +18663,21 @@
 keys
 of
 a
-<a class="tref internalDFN" title="language-map" href="#dfn-language-map">
+<a href="#dfn-language-map" title="language-map" class="tref internalDFN">
 language
 map
 </a>
-<em class="rfc2119" title="MUST">
-MUST
-</em>
-be
-<a class="tref internalDFN" title="string" href="#dfn-string">
+<em title="MUST" class="rfc2119">
+MUST
+</em>
+be
+<a href="#dfn-string" title="string" class="tref internalDFN">
 strings
 </a>
 representing
 [
 <cite>
-<a class="bibref" href="#bib-BCP47">
+<a href="#bib-BCP47" class="bibref">
 BCP47
 </a>
 </cite>
@@ -17844,7 +18689,7 @@
 and
 the
 values
-<em class="rfc2119" title="MUST">
+<em title="MUST" class="rfc2119">
 MUST
 </em>
 be
@@ -17856,19 +18701,19 @@
 </p>
 <ul>
 <li>
-<a class="tref internalDFN" title="null" href="#dfn-null">
+<a href="#dfn-null" title="null" class="tref internalDFN">
 null
 </a>,
 </li>
 <li>
-<a class="tref internalDFN" title="string" href="#dfn-string">
+<a href="#dfn-string" title="string" class="tref internalDFN">
 string
 </a>,
 or
 </li>
 <li>
 an
-<a class="tref internalDFN" title="array" href="#dfn-array">
+<a href="#dfn-array" title="array" class="tref internalDFN">
 array
 </a>
 of
@@ -17897,8 +18742,8 @@
 maps.
 </p>
 </section>
-<section class="normative" id="index-maps">
-<h3 aria-level="2" role="heading" id="h3_index-maps">
+<section id="index-maps" class="normative">
+<h3 id="h3_index-maps" role="heading" aria-level="2">
 <span class="secno">
 8.6
 </span>
@@ -17907,7 +18752,7 @@
 </h3>
 <p>
 An
-<dfn title="index-map" id="dfn-index-map">
+<dfn id="dfn-index-map" title="index-map">
 index
 map
 </dfn>
@@ -17930,7 +18775,7 @@
 JSON-LD
 documents.
 An
-<a class="tref internalDFN" title="index-map" href="#dfn-index-map">
+<a href="#dfn-index-map" title="index-map" class="tref internalDFN">
 index
 map
 </a>
@@ -17939,13 +18784,13 @@
 used
 as
 a
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>
 value
 within
 a
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
 node
 object
 </a>
@@ -17970,11 +18815,11 @@
 members
 of
 an
-<a class="tref internalDFN" title="index-map" href="#dfn-index-map">
+<a href="#dfn-index-map" title="index-map" class="tref internalDFN">
 index
 map
 </a>
-<em class="rfc2119" title="MUST">
+<em title="MUST" class="rfc2119">
 MUST
 </em>
 be
@@ -17986,57 +18831,57 @@
 </p>
 <ul>
 <li>
-<a class="tref internalDFN" title="string" href="#dfn-string">
+<a href="#dfn-string" title="string" class="tref internalDFN">
 string
 </a>,
 </li>
 <li>
-<a class="tref internalDFN" title="number" href="#dfn-number">
+<a href="#dfn-number" title="number" class="tref internalDFN">
 number
 </a>,
 </li>
 <li>
-<a class="tref internalDFN" title="true" href="#dfn-true">
+<a href="#dfn-true" title="true" class="tref internalDFN">
 true
 </a>,
 </li>
 <li>
-<a class="tref internalDFN" title="false" href="#dfn-false">
+<a href="#dfn-false" title="false" class="tref internalDFN">
 false
 </a>,
 </li>
 <li>
-<a class="tref internalDFN" title="null" href="#dfn-null">
+<a href="#dfn-null" title="null" class="tref internalDFN">
 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">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
+node
+object
+</a>,
+</li>
+<li>
+<a href="#dfn-value-object" title="value-object" class="tref internalDFN">
+value
+object
+</a>,
+</li>
+<li>
+<a href="#dfn-list-object" title="list-object" class="tref internalDFN">
 list
 object
 </a>,
 </li>
 <li>
-<a class="tref internalDFN" title="set-object" href="#dfn-set-object">
+<a href="#dfn-set-object" title="set-object" class="tref internalDFN">
 set
 object
 </a>,
 </li>
 <li>
 an
-<a class="tref internalDFN" title="array" href="#dfn-array">
+<a href="#dfn-array" title="array" class="tref internalDFN">
 array
 </a>
 of
@@ -18065,8 +18910,8 @@
 topic.
 </p>
 </section>
-<section class="normative" id="context-definitions">
-<h3 aria-level="2" role="heading" id="h3_context-definitions">
+<section id="context-definitions" class="normative">
+<h3 id="h3_context-definitions" role="heading" aria-level="2">
 <span class="secno">
 8.7
 </span>
@@ -18075,59 +18920,59 @@
 </h3>
 <p>
 A
-<dfn title="context-definition" id="dfn-context-definition">
+<dfn id="dfn-context-definition" title="context-definition">
 context
 definition
 </dfn>
 defines
 a
-<a class="tref internalDFN" title="local-context" href="#dfn-local-context">
+<a href="#dfn-local-context" title="local-context" class="tref internalDFN">
 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">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
+node
+object
+</a>.
+</p>
+<p>
+A
+<a href="#dfn-context-definition" title="context-definition" class="tref internalDFN">
 context
 definition
 </a>
-<em class="rfc2119" title="MUST">
-MUST
-</em>
-be
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
+<em title="MUST" class="rfc2119">
+MUST
+</em>
+be
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
 JSON
 object
 </a>
 whose
 keys
-<em class="rfc2119" title="MUST">
+<em title="MUST" class="rfc2119">
 MUST
 </em>
 either
 be
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 terms
 </a>,
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
 compact
 IRIs
 </a>,
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 IRIs
 </a>,
 or
 the
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keywords
 </a>
 <code>
@@ -18144,7 +18989,7 @@
 <p>
 If
 the
-<a class="tref internalDFN" title="context-definition" href="#dfn-context-definition">
+<a href="#dfn-context-definition" title="context-definition" class="tref internalDFN">
 context
 definition
 </a>
@@ -18156,7 +19001,7 @@
 key,
 its
 value
-<em class="rfc2119" title="MUST">
+<em title="MUST" class="rfc2119">
 MUST
 </em>
 have
@@ -18167,21 +19012,21 @@
 in
 [
 <cite>
-<a class="bibref" href="#bib-BCP47">
+<a href="#bib-BCP47" class="bibref">
 BCP47
 </a>
 </cite>
 ]
 or
 be
-<a class="tref internalDFN" title="null" href="#dfn-null">
+<a href="#dfn-null" title="null" class="tref internalDFN">
 null
 </a>.
 </p>
 <p>
 If
 the
-<a class="tref internalDFN" title="context-definition" href="#dfn-context-definition">
+<a href="#dfn-context-definition" title="context-definition" class="tref internalDFN">
 context
 definition
 </a>
@@ -18193,33 +19038,33 @@
 key,
 its
 value
-<em class="rfc2119" title="MUST">
-MUST
-</em>
-be
-an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<em title="MUST" class="rfc2119">
+MUST
+</em>
+be
+an
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>,
 a
-<a class="tref internalDFN" title="relative-iri" href="#dfn-relative-iri">
+<a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">
 relative
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>,
 or
-<a class="tref internalDFN" title="null" href="#dfn-null">
+<a href="#dfn-null" title="null" class="tref internalDFN">
 null
 </a>.
 </p>
 <p>
 If
 the
-<a class="tref internalDFN" title="context-definition" href="#dfn-context-definition">
+<a href="#dfn-context-definition" title="context-definition" class="tref internalDFN">
 context
 definition
 </a>
@@ -18231,36 +19076,36 @@
 key,
 its
 value
-<em class="rfc2119" title="MUST">
-MUST
-</em>
-be
-a
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<em title="MUST" class="rfc2119">
+MUST
+</em>
+be
+a
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>,
 a
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
 compact
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>,
 a
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
 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">
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>,
+or
+<a href="#dfn-null" title="null" class="tref internalDFN">
 null
 </a>.
 </p>
@@ -18272,48 +19117,48 @@
 that
 are
 not
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keywords
 </a>
-<em class="rfc2119" title="MUST">
+<em title="MUST" class="rfc2119">
 MUST
 </em>
 be
 either
 an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>,
 a
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
 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">
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>,
+a
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
 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">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
+keyword
+</a>,
+<a href="#dfn-null" title="null" class="tref internalDFN">
 null
 </a>,
 or
 an
-<a class="tref internalDFN" title="expanded-term-definition" href="#dfn-expanded-term-definition">
+<a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">
 expanded
 term
 definition
@@ -18321,7 +19166,7 @@
 </p>
 <p>
 An
-<a class="tref internalDFN" title="expanded-term-definition" href="#dfn-expanded-term-definition">
+<a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">
 expanded
 term
 definition
@@ -18334,7 +19179,7 @@
 mapping
 between
 a
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>
 and
@@ -18352,7 +19197,7 @@
 associated
 with
 the
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>
 when
@@ -18363,24 +19208,24 @@
 key
 in
 a
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
 node
 object
 </a>.
 </p>
 <p>
 An
-<a class="tref internalDFN" title="expanded-term-definition" href="#dfn-expanded-term-definition">
+<a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">
 expanded
 term
 definition
 </a>
-<em class="rfc2119" title="MUST">
-MUST
-</em>
-be
-a
-<a class="tref internalDFN" title="json-object" href="#dfn-json-object">
+<em title="MUST" class="rfc2119">
+MUST
+</em>
+be
+a
+<a href="#dfn-json-object" title="json-object" class="tref internalDFN">
 JSON
 object
 </a>
@@ -18408,12 +19253,12 @@
 @container
 </code>.
 An
-<a class="tref internalDFN" title="expanded-term-definition" href="#dfn-expanded-term-definition">
+<a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">
 expanded
 term
 definition
 </a>
-<em class="rfc2119" title="SHOULD NOT">
+<em title="SHOULD NOT" class="rfc2119">
 SHOULD
 NOT
 </em>
@@ -18425,7 +19270,7 @@
 <p>
 If
 an
-<a class="tref internalDFN" title="expanded-term-definition" href="#dfn-expanded-term-definition">
+<a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">
 expanded
 term
 definition
@@ -18437,7 +19282,7 @@
 </code>
 member,
 it
-<em class="rfc2119" title="MUST NOT">
+<em title="MUST NOT" class="rfc2119">
 MUST
 NOT
 </em>
@@ -18460,11 +19305,11 @@
 exists,
 its
 value
-<em class="rfc2119" title="MUST">
-MUST
-</em>
-be
-<a class="tref internalDFN" title="null" href="#dfn-null">
+<em title="MUST" class="rfc2119">
+MUST
+</em>
+be
+<a href="#dfn-null" title="null" class="tref internalDFN">
 null
 </a>,
 <code>
@@ -18484,14 +19329,14 @@
 is
 not
 a
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
 compact
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>
 or
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 <abbr title="Internationalized Resource Identifier">
 IRI
@@ -18499,7 +19344,7 @@
 </a>
 and
 the
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
 active
 context
 </a>
@@ -18512,12 +19357,12 @@
 </code>
 mapping,
 the
-<a class="tref internalDFN" title="expanded-term-definition" href="#dfn-expanded-term-definition">
+<a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">
 expanded
 term
 definition
 </a>
-<em class="rfc2119" title="MUST">
+<em title="MUST" class="rfc2119">
 MUST
 </em>
 include
@@ -18530,7 +19375,7 @@
 <p>
 If
 the
-<a class="tref internalDFN" title="expanded-term-definition" href="#dfn-expanded-term-definition">
+<a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">
 expanded
 term
 definition
@@ -18540,52 +19385,52 @@
 <code>
 @id
 </code>
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keyword
 </a>,
 its
 value
-<em class="rfc2119" title="MUST">
-MUST
-</em>
-be
-<a class="tref internalDFN" title="null" href="#dfn-null">
+<em title="MUST" class="rfc2119">
+MUST
+</em>
+be
+<a href="#dfn-null" title="null" class="tref internalDFN">
 null
 </a>,
 an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>,
 a
-<a class="tref internalDFN" title="blank-node-identifier" href="#dfn-blank-node-identifier">
+<a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">
 blank
 node
 identifier
 </a>,
 a
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
 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">
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>,
+or
+a
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keyword
 </a>.
 </p>
 <p>
 If
 the
-<a class="tref internalDFN" title="expanded-term-definition" href="#dfn-expanded-term-definition">
+<a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">
 expanded
 term
 definition
@@ -18595,34 +19440,34 @@
 <code>
 @type
 </code>
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keyword
 </a>,
 its
 value
-<em class="rfc2119" title="MUST">
-MUST
-</em>
-be
-an
-<a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">
+<em title="MUST" class="rfc2119">
+MUST
+</em>
+be
+an
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">
 absolute
 <abbr title="Internationalized Resource Identifier">
 IRI
 </abbr>
 </a>,
 a
-<a class="tref internalDFN" title="compact-iri" href="#dfn-compact-iri">
+<a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">
 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">
+<a href="#dfn-term" title="term" class="tref internalDFN">
+term
+</a>,
+<a href="#dfn-null" title="null" class="tref internalDFN">
 null
 </a>,
 or
@@ -18630,7 +19475,7 @@
 one
 of
 the
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keywords
 </a>
 <code>
@@ -18644,7 +19489,7 @@
 <p>
 If
 the
-<a class="tref internalDFN" title="expanded-term-definition" href="#dfn-expanded-term-definition">
+<a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">
 expanded
 term
 definition
@@ -18654,12 +19499,12 @@
 <code>
 @language
 </code>
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keyword
 </a>,
 its
 value
-<em class="rfc2119" title="MUST">
+<em title="MUST" class="rfc2119">
 MUST
 </em>
 have
@@ -18670,21 +19515,21 @@
 in
 [
 <cite>
-<a class="bibref" href="#bib-BCP47">
+<a href="#bib-BCP47" class="bibref">
 BCP47
 </a>
 </cite>
 ]
 or
 be
-<a class="tref internalDFN" title="null" href="#dfn-null">
+<a href="#dfn-null" title="null" class="tref internalDFN">
 null
 </a>.
 </p>
 <p>
 If
 the
-<a class="tref internalDFN" title="expanded-term-definition" href="#dfn-expanded-term-definition">
+<a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">
 expanded
 term
 definition
@@ -18694,12 +19539,12 @@
 <code>
 @container
 </code>
-<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+<a href="#dfn-keyword" title="keyword" class="tref internalDFN">
 keyword
 </a>,
 its
 value
-<em class="rfc2119" title="MUST">
+<em title="MUST" class="rfc2119">
 MUST
 </em>
 be
@@ -18718,7 +19563,7 @@
 </code>,
 or
 be
-<a class="tref internalDFN" title="null" href="#dfn-null">
+<a href="#dfn-null" title="null" class="tref internalDFN">
 null
 </a>.
 If
@@ -18730,7 +19575,7 @@
 </code>,
 when
 the
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>
 is
@@ -18744,12 +19589,12 @@
 the
 associated
 value
-<em class="rfc2119" title="MUST">
-MUST
-</em>
-be
-a
-<a class="tref internalDFN" title="language-map" href="#dfn-language-map">
+<em title="MUST" class="rfc2119">
+MUST
+</em>
+be
+a
+<a href="#dfn-language-map" title="language-map" class="tref internalDFN">
 language
 map
 </a>.
@@ -18762,7 +19607,7 @@
 </code>,
 when
 the
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 term
 </a>
 is
@@ -18776,21 +19621,21 @@
 the
 associated
 value
-<em class="rfc2119" title="MUST">
-MUST
-</em>
-be
-an
-<a class="tref internalDFN" title="index-map" href="#dfn-index-map">
+<em title="MUST" class= "rfc2119">
+MUST
+</em>
+be
+an
+<a href="#dfn-index-map" title="index-map" class="tref internalDFN">
 index
 map
 </a>.
 </p>
 <p>
-<a class="tref internalDFN" title="term" href="#dfn-term">
+<a href="#dfn-term" title="term" class="tref internalDFN">
 Terms
 </a>
-<em class="rfc2119" title="MUST NOT">
+<em title="MUST NOT" class="rfc2119">
 MUST
 NOT
 </em>
@@ -18842,8 +19687,8 @@
 </p>
 </section>
 </section>
-<section class="normative" id="relationship-to-rdf">
-<h2 aria-level="1" role="heading" id="h2_relationship-to-rdf">
+<section id="relationship-to-rdf" class="normative">
+<h2 id="h2_relationship-to-rdf" role="heading" aria-level="1">
 <span class="secno">
 9.
 </span>
@@ -18855,7 +19700,7 @@
 JSON-LD
 is
 a
-<a class="tref externalDFN" title="concrete-rdf-syntax" href="http://www.w3.org/TR/rdf11-concepts/#dfn-concrete-rdf-syntax">
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-concrete-rdf-syntax" title="concrete-rdf-syntax" class="tref externalDFN">
 concrete
 RDF
 syntax
@@ -18865,7 +19710,7 @@
 in
 [
 <cite>
-<a class="bibref" href="#bib-RDF11-CONCEPTS">
+<a href="#bib-RDF11-CONCEPTS" class="bibref">
 RDF11-CONCEPTS
 </a>
 </cite>
@@ -18909,7 +19754,7 @@
 JSON-LD
 to
 serialize
-<a class="tref externalDFN" title="generalized-rdf-datasets" href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset">
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset" title="generalized-rdf-datasets" class="tref externalDFN">
 Generalized
 RDF
 Datasets
@@ -18928,16 +19773,16 @@
 <li>
 In
 JSON-LD
-<a class="tref internalDFN" title="property" href="#dfn-property">
+<a href="#dfn-property" title="property" class="tref internalDFN">
 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">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+IRIs
+</a>
+or
+<a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">
 blank
 nodes
 </a>
@@ -18949,7 +19794,7 @@
 have
 to
 be
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 IRIs
 </a>.
 This
@@ -18957,7 +19802,7 @@
 that
 JSON-LD
 serializes
-<a class="tref externalDFN" title="generalized-rdf-datasets" href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset">
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset" title="generalized-rdf-datasets" class="tref externalDFN">
 generalized
 RDF
 Datasets
@@ -18966,7 +19811,7 @@
 <li>
 In
 JSON-LD
-<a class="tref internalDFN" title="list" href="#dfn-list">
+<a href="#dfn-list" title="list" class="tref internalDFN">
 lists
 </a>
 are
@@ -18987,7 +19832,7 @@
 namely
 [
 <cite>
-<a class="bibref" href="#bib-RDF-SCHEMA">
+<a href="#bib-RDF-SCHEMA" class="bibref">
 RDF-SCHEMA
 </a>
 </cite>
@@ -19003,7 +19848,7 @@
 literals
 </em>
 (
-<a class="tref internalDFN" title="typed-value" href="#dfn-typed-value">
+<a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">
 typed
 values
 </a>
@@ -19014,7 +19859,7 @@
 strings
 </em>
 (
-<a class="tref internalDFN" title="language-tagged-string" href="#dfn-language-tagged-string">
+<a href="#dfn-language-tagged-string" title="language-tagged-string" class="tref internalDFN">
 language-tagged
 strings
 </a>
@@ -19028,21 +19873,21 @@
 data
 types,
 i.e.,
-<a class="tref internalDFN" title="number" href="#dfn-number">
+<a href="#dfn-number" title="number" class="tref internalDFN">
 number
 </a>,
-<a class="tref internalDFN" title="string" href="#dfn-string">
+<a href="#dfn-string" title="string" class="tref internalDFN">
 strings
 </a>,
 and
 the
 boolean
 values
-<a class="tref internalDFN" title="true" href="#dfn-true">
+<a href="#dfn-true" title="true" class="tref internalDFN">
 true
 </a>
 and
-<a class="tref internalDFN" title="false" href="#dfn-false">
+<a href="#dfn-false" title="false" class="tref internalDFN">
 false
 </a>.
 The
@@ -19054,7 +19899,7 @@
 specification
 [
 <cite>
-<a class="bibref" href="#bib-JSON-LD-API">
+<a href="#bib-JSON-LD-API" class="bibref">
 JSON-LD-API
 </a>
 </cite>
@@ -19115,7 +19960,7 @@
 Concepts
 [
 <cite>
-<a class="bibref" href="#bib-RDF11-CONCEPTS">
+<a href="#bib-RDF11-CONCEPTS" class="bibref">
 RDF11-CONCEPTS
 </a>
 </cite>
@@ -19128,12 +19973,12 @@
 developers
 working
 with
-<a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">
+<a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">
 blank
 nodes
 </a>
 as
-<a class="tref internalDFN" title="property" href="#dfn-property">
+<a href="#dfn-property" title="property" class="tref internalDFN">
 properties
 </a>
 when
@@ -19186,12 +20031,12 @@
 wishes
 to
 use
-<a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">
+<a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">
 blank
 nodes
 </a>
 as
-<a class="tref internalDFN" title="property" href="#dfn-property">
+<a href="#dfn-property" title="property" class="tref internalDFN">
 properties
 </a>
 and
@@ -19203,7 +20048,7 @@
 data
 as
 a
-<a class="tref externalDFN" title="generalized-rdf-dataset" href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset">
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset" title="generalized-rdf-dataset" class="tref externalDFN">
 generalized
 RDF
 Dataset
@@ -19226,7 +20071,7 @@
 algorithm
 [
 <cite>
-<a class="bibref" href="#bib-JSON-LD-API">
+<a href="#bib-JSON-LD-API" class="bibref">
 JSON-LD-API
 </a>
 </cite>
@@ -19237,7 +20082,7 @@
 Note
 that
 a
-<a class="tref externalDFN" title="generalized-rdf-dataset" href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset">
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset" title="generalized-rdf-dataset" class="tref externalDFN">
 generalized
 RDF
 Dataset
@@ -19265,12 +20110,12 @@
 wishes
 to
 use
-<a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">
+<a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">
 blank
 nodes
 </a>
 as
-<a class="tref internalDFN" title="property" href="#dfn-property">
+<a href="#dfn-property" title="property" class="tref internalDFN">
 properties
 </a>
 and
@@ -19283,7 +20128,7 @@
 a
 standard
 (non-generalized)
-<a class="tref externalDFN" title="rdf-dataset" href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-dataset">
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-dataset" title="rdf-dataset" class="tref externalDFN">
 RDF
 Dataset
 </a>,
@@ -19298,17 +20143,17 @@
 RDF
 by
 transforming
-<a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">
+<a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">
 blank
 nodes
 </a>
 used
 as
-<a class="tref internalDFN" title="property" href="#dfn-property">
+<a href="#dfn-property" title="property" class="tref internalDFN">
 properties
 </a>
 to
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 IRIs
 </a>,
 by
@@ -19330,7 +20175,7 @@
 of
 [
 <cite>
-<a class="bibref" href="#bib-RDF11-CONCEPTS">
+<a href="#bib-RDF11-CONCEPTS" class="bibref">
 RDF11-CONCEPTS
 </a>
 </cite>
@@ -19363,7 +20208,7 @@
 specification
 [
 <cite>
-<a class="bibref" href="#bib-JSON-LD-API">
+<a href="#bib-JSON-LD-API" class="bibref">
 JSON-LD-API
 </a>
 </cite>
@@ -19374,7 +20219,7 @@
 though
 JSON-LD
 serializes
-<a class="tref externalDFN" title="generalized-rdf-datasets" href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset">
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset" title="generalized-rdf-datasets" class="tref externalDFN">
 generalized
 RDF
 Datasets
@@ -19386,7 +20231,7 @@
 used
 as
 a
-<a class="tref externalDFN" title="rdf-graph-source" href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-source">
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-source" title="rdf-graph-source" class="tref externalDFN">
 RDF
 graph
 source
@@ -19396,7 +20241,7 @@
 case,
 a
 consumer
-<em class="rfc2119" title="MUST">
+<em title="MUST" class="rfc2119">
 MUST
 </em>
 only
@@ -19427,7 +20272,7 @@
 negotiation.
 </p>
 <div class="note">
-<div class="note-title" aria-level="2" role="heading" id="h_note_10">
+<div id="h_note_10" role="heading" aria-level="2" class="note-title">
 <span>
 Note
 </span>
@@ -19467,8 +20312,8 @@
 information.
 </p>
 </div>
-<section class="informative" id="serializing-deserializing-rdf">
-<h3 aria-level="2" role="heading" id="h3_serializing-deserializing-rdf">
+<section id="serializing-deserializing-rdf" class="informative">
+<h3 id="h3_serializing-deserializing-rdf" role="heading" aria-level="2">
 <span class="secno">
 9.1
 </span>
@@ -19520,7 +20365,7 @@
 specification
 [
 <cite>
-<a class="bibref" href="#bib-JSON-LD-API">
+<a href="#bib-JSON-LD-API" class="bibref">
 JSON-LD-API
 </a>
 </cite>
@@ -19590,7 +20435,7 @@
 full
 representation
 as
-<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
 IRIs
 </a>
 and
@@ -19621,7 +20466,7 @@
 an
 array
 of
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
 node
 objects
 </a>.
@@ -19641,7 +20486,7 @@
 <li>
 Turn
 each
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
 node
 object
 </a>
@@ -19649,7 +20494,7 @@
 a
 series
 of
-<a class="tref externalDFN" title="rdf-triples" href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple">
+<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple" title="rdf-triples" class="tref externalDFN">
 RDF
 triples
 </a>.
@@ -19667,7 +20512,20 @@
 compact
 form:
 </p>
-    <div class="example"><div class="example-title"><span>Example 63</span>: Sample JSON-LD document</div><pre class="example">{
+<del class="diff-old">    {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+63
+</ins></span>:<ins class="diff-chg">
+Sample
+JSON-LD
+document
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context": {
     "name": "http://xmlns.com/foaf/0.1/name",
     "knows": "http://xmlns.com/foaf/0.1/knows"
@@ -19710,7 +20568,25 @@
 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">[
+<del class="diff-old">    [
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+64
+</ins></span>:<ins class="diff-chg">
+Flattened
+and
+expanded
+form
+for
+the
+previous
+example
+</ins></div><pre class="example"><ins class="diff-chg">
+[
+</ins>
   {
     "@id": "_:b0",
     "http://xmlns.com/foaf/0.1/name": "Dave Longley"
@@ -19743,7 +20619,7 @@
 of
 turning
 each
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
 node
 object
 </a>
@@ -19762,13 +20638,31 @@
 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" .
+<del class="diff-old">    _:b0 &lt;http://xmlns.com/foaf/0.1/name&gt; "Dave Longley" .
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+65
+</ins></span>:<ins class="diff-chg">
+Turtle
+representation
+of
+expanded/flattened
+document
+</ins></div><pre class="example"><ins class="diff-chg">
+_:b0 &lt;http://xmlns.com/foaf/0.1/name&gt; "Dave Longley" .
+</ins>
 &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;
+<del class="diff-old">&lt;http://xmlns.com/foaf/0.1/knows&gt;
 &lt;http://manu.sporny.org/about#manu&gt;,
 _:b0
 .
+</del>
+<ins class="diff-chg">    &lt;http://xmlns.com/foaf/0.1/knows&gt; &lt;http://manu.sporny.org/about#manu&gt;, _:b0 .
+</ins>
 </pre>
 </div>
 <p>
@@ -19804,7 +20698,7 @@
 using
 a
 single
-<a class="tref internalDFN" title="node-object" href="#dfn-node-object">
+<a href="#dfn-node-object" title="node-object" class="tref internalDFN">
 node
 object
 </a>
@@ -19818,7 +20712,7 @@
 and
 a
 single
-<a class="tref internalDFN" title="property" href="#dfn-property">
+<a href="#dfn-property" title="property" class="tref internalDFN">
 property
 </a>
 for
@@ -19832,8 +20726,8 @@
 </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">
+<section id="relationship-to-other-linked-data-formats" class="appendix informative">
+<h2 id="h2_relationship-to-other-linked-data-formats" role="heading" aria-level="1">
 <span class="secno">
 A.
 </span>
@@ -19904,8 +20798,8 @@
 Data
 approaches.
 </p>
-<section class="informative" id="turtle">
-<h3 aria-level="2" role="heading" id="h3_turtle">
+<section id="turtle" class="informative">
+<h3 id="h3_turtle" role="heading" aria-level="2">
 <span class="secno">
 A.1
 </span>
@@ -19932,7 +20826,7 @@
 Turtle
 [
 <cite>
-<a class="bibref" href="#bib-TURTLE">
+<a href="#bib-TURTLE" class="bibref">
 TURTLE
 </a>
 </cite>
@@ -19941,7 +20835,7 @@
 JSON-LD.
 </p>
 <section>
-<h4 id="prefix-definitions" aria-level="3" role="heading">
+<h4 role="heading" aria-level="3" id="prefix-definitions">
 Prefix
 definitions
 </h4>
@@ -19968,15 +20862,53 @@
 </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; .
+<del class="diff-old">      @prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt; .
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+66
+</ins></span>:<ins class="diff-chg">
+A
+set
+of
+statements
+serialized
+in
+Turtle
+</ins></div><pre class="example"><ins class="diff-chg">
+@prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt; .
+</ins>
 &lt;http://manu.sporny.org/about#manu&gt; a foaf:Person;
   foaf:name "Manu Sporny";
-foaf:homepage
+<del class="diff-old">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">{
+</del>
+<ins class="diff-chg">  foaf:homepage &lt;http://manu.sporny.org/&gt; .
+</ins>
+</pre>
+</div>
+<del class="diff-old">      {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+67
+</ins></span>:<ins class="diff-chg">
+The
+same
+set
+of
+statements
+serialized
+in
+JSON-LD
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context":
   {
     "foaf": "http://xmlns.com/foaf/0.1/"
@@ -19990,7 +20922,7 @@
 </div>
 </section>
 <section>
-<h4 id="embedding-1" aria-level="3" role="heading">
+<h4 role="heading" aria-level="3" id="embedding-1">
 Embedding
 </h4>
 <p>
@@ -20006,16 +20938,29 @@
 allows
 embedding
 of
-<a class="tref internalDFN" title="blank-node" href="#dfn-blank-node">
+<a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">
 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; .
+<del class="diff-old">      @prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt; .
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+68
+</ins></span>:<ins class="diff-chg">
+Embedding
+in
+Turtle
+</ins></div><pre class="example"><ins class="diff-chg">
+@prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt; .
+</ins>
 &lt;http://manu.sporny.org/about#manu&gt;
   a foaf:Person;
   foaf:name "Manu Sporny";
-foaf:knows
+<del class="diff-old">foaf:knows
 [
 a
 foaf:Person;
@@ -20024,9 +20969,27 @@
 Kellogg"
 ]
 .
-</pre>
-</div>
-      <div class="example"><div class="example-title"><span>Example 69</span>: Same embedding example in JSON-LD</div><pre class="example">{
+</del>
+<ins class="diff-chg">  foaf:knows [ a foaf:Person; foaf:name "Gregg Kellogg" ] .
+</ins>
+</pre>
+</div>
+<del class="diff-old">      {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+69
+</ins></span>:<ins class="diff-chg">
+Same
+embedding
+example
+in
+JSON-LD
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context":
   {
     "foaf": "http://xmlns.com/foaf/0.1/"
@@ -20044,7 +21007,7 @@
 </div>
 </section>
 <section>
-<h4 id="conversion-of-native-data-types" aria-level="3" role="heading">
+<h4 role="heading" aria-level="3" id="conversion-of-native-data-types">
 Conversion
 of
 native
@@ -20100,7 +21063,7 @@
 specification
 [
 <cite>
-<a class="bibref" href="#bib-JSON-LD-API">
+<a href="#bib-JSON-LD-API" class="bibref">
 JSON-LD-API
 </a>
 </cite>
@@ -20116,7 +21079,7 @@
 and
 RDF's
 counterparts.
-<a class="tref internalDFN" title="number" href="#dfn-number">
+<a href="#dfn-number" title="number" class="tref internalDFN">
 Numbers
 </a>
 without
@@ -20143,11 +21106,11 @@
 two
 boolean
 values
-<a class="tref internalDFN" title="true" href="#dfn-true">
+<a href="#dfn-true" title="true" class="tref internalDFN">
 true
 </a>
 and
-<a class="tref internalDFN" title="false" href="#dfn-false">
+<a href="#dfn-false" title="false" class="tref internalDFN">
 false
 </a>
 to
@@ -20166,7 +21129,27 @@
 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">{
+<del class="diff-old">      {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+70
+</ins></span>:<ins class="diff-chg">
+JSON-LD
+using
+native
+data
+types
+for
+numbers
+and
+boolean
+values
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context":
   {
     "ex": "http://example.com/vocab#"
@@ -20177,19 +21160,39 @@
 }
 </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; .
+<del class="diff-old">      @prefix ex: &lt;http://example.com/vocab#&gt; .
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+71
+</ins></span>:<ins class="diff-chg">
+Same
+example
+in
+Turtle
+using
+typed
+literals
+</ins></div><pre class="example"><ins class="diff-chg">
+@prefix ex: &lt;http://example.com/vocab#&gt; .
+</ins>
 @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
+<del class="diff-old">ex:booleans
 "true"^^xsd:boolean,
 "false"^^xsd:boolean
 .
+</del>
+<ins class="diff-chg">  ex:booleans "true"^^xsd:boolean, "false"^^xsd:boolean .
+</ins>
 </pre>
 </div>
 </section>
 <section>
-<h4 id="lists" aria-level="3" role="heading">
+<h4 role="heading" aria-level="3" id="lists">
 Lists
 </h4>
 <p>
@@ -20204,19 +21207,57 @@
 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; .
+<del class="diff-old">      @prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt; .
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+72
+</ins></span>:<ins class="diff-chg">
+A
+list
+of
+values
+in
+Turtle
+</ins></div><pre class="example"><ins class="diff-chg">
+@prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt; .
+</ins>
 &lt;http://example.org/people#joebob&gt; a foaf:Person;
   foaf:name "Joe Bob";
-foaf:nick
+<del class="diff-old">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">{
+</del>
+<ins class="diff-chg">  foaf:nick ( "joe" "bob" "jaybee" ) .
+</ins>
+</pre>
+</div>
+<del class="diff-old">      {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+73
+</ins></span>:<ins class="diff-chg">
+Same
+example
+with
+a
+list
+of
+values
+in
+JSON-LD
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context":
   {
     "foaf": "http://xmlns.com/foaf/0.1/"
@@ -20233,8 +21274,8 @@
 </div>
 </section>
 </section>
-<section class="informative" id="rdfa">
-<h3 aria-level="2" role="heading" id="h3_rdfa">
+<section id="rdfa" class="informative">
+<h3 id="h3_rdfa" role="heading" aria-level="2">
 <span class="secno">
 A.2
 </span>
@@ -20265,7 +21306,7 @@
 RDFa
 [
 <cite>
-<a class="bibref" href="#bib-RDFA-CORE">
+<a href="#bib-RDFA-CORE" class="bibref">
 RDFA-CORE
 </a>
 </cite>
@@ -20273,7 +21314,21 @@
 </p>
 <del class="diff-old">    &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="highlight">prefix="foaf: http://xmlns.com/foaf/0.1/"</span>&gt;
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+74
+</ins></span>:<ins class="diff-chg">
+RDFa
+fragment
+that
+describes
+three
+people
+</ins></div><pre class="example"><ins class="diff-chg">
+&lt;div <span class="highlight">prefix="foaf: http://xmlns.com/foaf/0.1/"</span>&gt;
+</ins>
    &lt;ul&gt;
 <del class="diff-old">      &lt;li &gt;
         &lt;a &gt;Bob&lt;/a&gt;
@@ -20308,14 +21363,33 @@
 using
 a
 single
-<a class="tref internalDFN" title="context" href="#dfn-context">
+<a href="#dfn-context" title="context" class="tref internalDFN">
 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">{
+<del class="diff-old">    {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+75
+</ins></span>:<ins class="diff-chg">
+Same
+description
+in
+JSON-LD
+(context
+shared
+among
+node
+objects)
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context":
   {
     "foaf": "http://xmlns.com/foaf/0.1/"
@@ -20342,8 +21416,8 @@
 </pre>
 </div>
 </section>
-<section class="informative" id="microformats">
-<h3 aria-level="2" role="heading" id="h3_microformats">
+<section id="microformats" class="informative">
+<h3 id="h3_microformats" role="heading" aria-level="2">
 <span class="secno">
 A.3
 </span>
@@ -20373,7 +21447,7 @@
 Microformats
 [
 <cite>
-<a class="bibref" href="#bib-MICROFORMATS">
+<a href="#bib-MICROFORMATS" class="bibref">
 MICROFORMATS
 </a>
 </cite>
@@ -20383,7 +21457,24 @@
 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;
+<del class="diff-old">    &lt;div class="vcard"&gt;
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+76
+</ins></span>:<ins class="diff-chg">
+HTML
+fragment
+with
+a
+simple
+Microformats
+hCard
+</ins></div><pre class="example"><ins class="diff-chg">
+&lt;div class="vcard"&gt;
+</ins>
  &lt;a class="url fn" href="http://tantek.com/"&gt;Tantek Çelik&lt;/a&gt;
 &lt;/div&gt;
 </pre>
@@ -20400,7 +21491,7 @@
 terms
 in
 the
-<a class="tref internalDFN" title="context" href="#dfn-context">
+<a href="#dfn-context" title="context" class="tref internalDFN">
 context
 </a>
 and
@@ -20436,7 +21527,22 @@
 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">{
+<del class="diff-old">    {
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+77
+</ins></span>:<ins class="diff-chg">
+Same
+hCard
+representation
+in
+JSON-LD
+</ins></div><pre class="example"><ins class="diff-chg">
+{
+</ins>
   "@context":
   {
     "vcard": "http://microformats.org/profile/hcard#vcard",
@@ -20454,8 +21560,8 @@
 </pre>
 </div>
 </section>
-<section class="informative" id="microdata">
-<h3 aria-level="2" role="heading" id="h3_microdata">
+<section id="microdata" class="informative">
+<h3 id="h3_microdata" role="heading" aria-level="2">
 <span class="secno">
 A.4
 </span>
@@ -20475,7 +21581,7 @@
 Microdata
 [
 <cite>
-<a class="bibref" href="#bib-MICRODATA">
+<a href="#bib-MICRODATA" class="bibref">
 MICRODATA
 </a>
 </cite>
@@ -20491,7 +21597,25 @@
 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
+<del class="diff-old">    &lt;dl itemscope
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+78
+</ins></span>:<ins class="diff-chg">
+HTML
+fragments
+that
+describes
+a
+book
+using
+microdata
+</ins></div><pre class="example"><ins class="diff-chg">
+&lt;dl itemscope
+</ins>
     itemtype="http://purl.org/vocab/frbr/core#Work"
     itemid="http://purl.oreilly.com/works/45U8QJGZSQKDH8N"&gt;
  &lt;dt&gt;Title&lt;/dt&gt;
@@ -20546,13 +21670,30 @@
 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">[
+<a href="#dfn-iri" title="iri" class="tref internalDFN">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+</p>
+<del class="diff-old">    [
+</del>
+<div class="example">
+<div class="example-title">
+<span>
+<ins class="diff-chg">Example
+79
+</ins></span>:<ins class="diff-chg">
+Same
+book
+description
+in
+JSON-LD
+(avoiding
+contexts)
+</ins></div><pre class="example"><ins class="diff-chg">
+[
+</ins>
   {
     "@id": "http://purl.oreilly.com/works/45U8QJGZSQKDH8N",
     "@type": "http://purl.org/vocab/frbr/core#Work",
@@ -20579,8 +21720,8 @@
 </div>
 </section>
 </section>
-<section class="appendix normative" id="iana-considerations">
-<h2 aria-level="1" role="heading" id="h2_iana-considerations">
+<section id="iana-considerations" class="appendix normative">
+<h2 id="h2_iana-considerations" role="heading" aria-level="1">
 <span class="secno">
 B.
 </span>
@@ -20667,7 +21808,7 @@
 according
 [
 <cite>
-<a class="bibref" href="#bib-RFC6906">
+<a href="#bib-RFC6906" class="bibref">
 RFC6906
 </a>
 </cite>
@@ -20711,7 +21852,7 @@
 profile
 </code>
 parameter
-<em class="rfc2119" title="MAY">
+<em title="MAY" class="rfc2119">
 MAY
 </em>
 be
@@ -20735,7 +21876,7 @@
 given,
 a
 server
-<em class="rfc2119" title="SHOULD">
+<em title="SHOULD" class="rfc2119">
 SHOULD
 </em>
 return
@@ -20756,7 +21897,7 @@
 server.
 It
 is
-<em class="rfc2119" title="RECOMMENDED">
+<em title="RECOMMENDED" class="rfc2119">
 RECOMMENDED
 </em>
 that
@@ -20781,7 +21922,7 @@
 to
 [
 <cite>
-<a class="bibref" href="#bib-RFC6906">
+<a href="#bib-RFC6906" class="bibref">
 RFC6906
 </a>
 </cite>
@@ -20814,7 +21955,7 @@
 <code>
 http://www.w3.org/ns/json-ld#expanded
 </code>
-<em class="rfc2119" title="SHOULD">
+<em title="SHOULD" class="rfc2119">
 SHOULD
 </em>
 be
@@ -20834,7 +21975,7 @@
 <code>
 http://www.w3.org/ns/json-ld#compacted
 </code>
-<em class="rfc2119" title="SHOULD">
+<em title="SHOULD" class="rfc2119">
 SHOULD
 </em>
 be
@@ -20854,7 +21995,7 @@
 <code>
 http://www.w3.org/ns/json-ld#flattened
 </code>
-<em class="rfc2119" title="SHOULD">
+<em title="SHOULD" class="rfc2119">
 SHOULD
 </em>
 be
@@ -20865,7 +22006,7 @@
 according
 [
 <cite>
-<a class="bibref" href="#bib-HTTP11">
+<a href="#bib-HTTP11" class="bibref">
 HTTP11
 </a>
 </cite>
@@ -20957,7 +22098,7 @@
 of
 [
 <cite>
-<a class="bibref" href="#bib-RFC3987">
+<a href="#bib-RFC3987" class="bibref">
 RFC3987
 </a>
 </cite>
@@ -20972,7 +22113,10 @@
 </dt>
 <dd>
 See
-RFC&nbsp;6839,
+<del class="diff-old">RFC&nbsp;6839,
+</del>
+<ins class="diff-chg">RFC&#160;6839,
+</ins>
 section
 3.1.
 </dd>
@@ -20984,7 +22128,7 @@
 See
 [
 <cite>
-<a class="bibref" href="#bib-RFC4627">
+<a href="#bib-RFC4627" class="bibref">
 RFC4627
 </a>
 </cite>
@@ -21006,7 +22150,7 @@
 graphs,
 the
 serialization
-<em class="rfc2119" title="SHOULD NOT">
+<em title="SHOULD NOT" class="rfc2119">
 SHOULD
 NOT
 </em>
@@ -21118,7 +22262,7 @@
 specification
 [
 <cite>
-<a class="bibref" href="#bib-JSON-LD-API">
+<a href="#bib-JSON-LD-API" class="bibref">
 JSON-LD-API
 </a>
 </cite>
@@ -21163,7 +22307,7 @@
 modify
 the
 JSON-LD
-<a class="tref internalDFN" title="active-context" href="#dfn-active-context">
+<a href="#dfn-active-context" title="active-context" class="tref internalDFN">
 active
 context
 </a>
@@ -21412,15 +22556,15 @@
 </cite>
 [
 <cite>
-<a class="bibref" href="#bib-RDF11-CONCEPTS">
+<a href="#bib-RDF11-CONCEPTS" class="bibref">
 RDF11-CONCEPTS
 </a>
 </cite>
 ].
 </p>
 </section>
-<section class="appendix informative" id="acknowledgements">
-<h2 aria-level="1" role="heading" id="h2_acknowledgements">
+<section id="acknowledgements" class="appendix informative">
+<h2 id="h2_acknowledgements" role="heading" aria-level="1">
 <span class="secno">
 C.
 </span>
@@ -21760,22 +22904,22 @@
 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">
+<section rel="bibo:chapter" resource="#references" typeof="bibo:Chapter" class="appendix" id="references">
+<h2 id="h2_references" role="heading" aria-level="1">
 <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">
+<section rel="bibo:chapter" resource="#normative-references" typeof="bibo:Chapter" id="normative-references">
+<h3 id="h3_normative-references" role="heading" aria-level="2">
 <span class="secno">
 D.1
 </span>
 Normative
 references
 </h3>
-<dl class="bibliography" about="">
+<dl about="" class="bibliography">
 <dt id="bib-BCP47">
 [BCP47]
 </dt>
@@ -21954,15 +23098,15 @@
 </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">
+<section rel="bibo:chapter" resource="#informative-references" typeof="bibo:Chapter" id="informative-references">
+<h3 id="h3_informative-references" role="heading" aria-level="2">
 <span class="secno">
 D.2
 </span>
 Informative
 references
 </h3>
-<dl class="bibliography" about="">
+<dl about="" class="bibliography">
 <dt id="bib-HTTP11">
 [HTTP11]
 </dt>
@@ -22359,3 +23503,4 @@
 </section>
 </body>
 </html>
+
--- a/spec/PR/json-ld/20131105/index.html	Tue Oct 22 11:09:02 2013 -0400
+++ b/spec/PR/json-ld/20131105/index.html	Tue Oct 22 18:58:43 2013 +0200
@@ -3,21 +3,14 @@
 <head>
 <title>JSON-LD 1.0</title>
 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
-
-
-
 <style type="text/css">
   .highlight { font-weight: bold; color: #0a3; }
   .comment { color: #999; }
   table, thead, tr, td { padding: 5px; border-width: 1px; border-spacing: 0px; border-style: solid; border-collapse: collapse; }
 </style>
-<style>/*****************************************************************
- * ReSpec 3 CSS
- * Robin Berjon - http://berjon.com/
- *****************************************************************/
-
+<style>
 /* --- INLINES --- */
-em.rfc2119 { 
+em.rfc2119 {
     text-transform:     lowercase;
     font-variant:       small-caps;
     font-style:         normal;
@@ -126,7 +119,7 @@
     color: #b9ab2d;
 }
 div.example-title span {
-    text-transform: uppercase;   
+    text-transform: uppercase;
 }
 aside.example, div.example, div.illegal-example {
     padding: 0.5em;
@@ -141,7 +134,7 @@
     border-left-width: .5em;
     border-left-style: solid;
     border-color: #e0cb52;
-    background: #fcfaee;    
+    background: #fcfaee;
 }
 
 aside.example div.example {
@@ -191,38 +184,38 @@
 }
 
 
-</style><link rel="stylesheet" href="https://www.w3.org/StyleSheets/TR/W3C-PR"><!--[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">
+</style><link href="https://www.w3.org/StyleSheets/TR/W3C-PR" rel="stylesheet"><!--[if lt IE 9]><script src='https://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]--></head>
+
+<body id="respecDocument" role="document" class="h-entry"><div id="respecHeader" role="contentinfo" 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>
-    
+
+      <a href="http://www.w3.org/"><img src="https://www.w3.org/Icons/w3c_home" alt="W3C" height="48" width="72"></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-11-05T05:00:00.000Z" id="w3c-proposed-recommendation-05-november-2013"><abbr title="World Wide Web Consortium">W3C</abbr> Proposed Recommendation <time class="dt-published" datetime="2013-11-05">05 November 2013</time></h2>
+
+  <h2 id="w3c-proposed-recommendation-05-november-2013" property="dcterms:issued" datatype="xsd:dateTime" content="2013-11-04T23:00:00.000Z"><abbr title="World Wide Web Consortium">W3C</abbr> Proposed Recommendation <time class="dt-published" datetime="2013-11-05">05 November 2013</time></h2>
   <dl>
-    
+
       <dt>This version:</dt>
       <dd><a class="u-url" href="http://www.w3.org/TR/2013/PR-json-ld-20131105/">http://www.w3.org/TR/2013/PR-json-ld-20131105/</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/CR-json-ld-20130910/">http://www.w3.org/TR/2013/CR-json-ld-20130910/</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>
@@ -231,7 +224,7 @@
 <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>
@@ -244,25 +237,25 @@
 <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-20130910.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>,
@@ -271,11 +264,11 @@
         <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>
+<section rel="bibo:chapter" resource="#abstract" typeof="bibo:Chapter" datatype="" property="dcterms:abstract" class="introductory" id="abstract"><h2 id="h2_abstract" role="heading" aria-level="1">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
@@ -284,62 +277,33 @@
     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>
-  
-    
-      
+</section><section rel="bibo:chapter" resource="#sotd" typeof="bibo:Chapter" id="sotd" class="introductory"><h2 id="h2_sotd" role="heading" aria-level="1">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
+
+  <p>This document has been under development for over 31 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>
+    during the course of the last 31 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>]
+    this specification. There is a fairly complete test suite [<cite><a href="#bib-JSON-LD-TESTS" class="bibref">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>
+    next two months.</p>
 
   <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>
@@ -354,7 +318,7 @@
     <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>
+      [<cite><a href="#bib-RFC6839" class="bibref">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 months</li>
@@ -371,73 +335,73 @@
 
         <p>
           This document was published by the <a href="http://www.w3.org/2011/rdf-wg/">RDF Working Group</a> as a Proposed Recommendation.
-          
+
             This document is intended to become a <abbr title="World Wide Web Consortium">W3C</abbr> Recommendation.
-          
-          
-          
-          
-          
-          
+
+
+
+
+
+
               The <abbr title="World Wide Web Consortium">W3C</abbr> Membership and other interested parties are invited
               to review the document and send comments to
-              <a rel="discussion" href="mailto:public-rdf-comments@w3.org">public-rdf-comments@w3.org</a> 
+              <a rel="discussion" 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>)
               through 05 December 2013.
               Advisory Committee Representatives should consult their
-              <a href="https://www.w3.org/2002/09/wbs/myQuestionnaires">WBS questionnaires</a>. 
-              Note that substantive technical comments were expected during the Last Call review period that ended 05 August 2009.
+              <a href="https://www.w3.org/2002/09/wbs/myQuestionnaires">WBS questionnaires</a>.
+              Note that substantive technical comments were expected during the Last Call review period that ended 10 May 2013.
             </p>
-            
-          
-        
+
+
+
           <p>
             Publication as a Proposed 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 
+            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 
-             
+
+            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 
+
+
+
+
+
+              <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
+
+
+
+
+</section><section id="toc"><h2 id="h2_toc" role="heading" aria-level="1" class="introductory">Table of Contents</h2><ul id="respecContents" role="directory" class="toc"><li class="tocline"><a class="tocxref" href="#introduction"><span class="secno">1. </span>Introduction</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#how-to-read-this-document"><span class="secno">1.1 </span>How to Read this Document</a></li></ul></li><li class="tocline"><a class="tocxref" href="#design-goals-and-rationale"><span class="secno">2. </span>Design Goals and Rationale</a></li><li class="tocline"><a class="tocxref" href="#terminology"><span class="secno">3. </span>Terminology</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#general-terminology"><span class="secno">3.1 </span>General Terminology</a></li><li class="tocline"><a class="tocxref" href="#data-model-overview"><span class="secno">3.2 </span>Data Model Overview</a></li><li class="tocline"><a class="tocxref" href="#syntax-tokens-and-keywords"><span class="secno">3.3 </span>Syntax Tokens and Keywords</a></li></ul></li><li class="tocline"><a class="tocxref" href="#conformance"><span class="secno">4. </span>Conformance</a></li><li class="tocline"><a class="tocxref" href="#basic-concepts"><span class="secno">5. </span>Basic Concepts</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#the-context"><span class="secno">5.1 </span>The Context</a></li><li class="tocline"><a class="tocxref" href="#iris"><span class="secno">5.2 </span>IRIs</a></li><li class="tocline"><a class="tocxref" href="#node-identifiers"><span class="secno">5.3 </span>Node Identifiers</a></li><li class="tocline"><a class="tocxref" href="#specifying-the-type"><span class="secno">5.4 </span>Specifying the Type</a></li></ul></li><li class="tocline"><a class="tocxref" href="#advanced-concepts"><span class="secno">6. </span>Advanced Concepts</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#base-iri"><span class="secno">6.1 </span>Base <abbr title="Internationalized Resource Identifier">IRI</abbr></a></li><li class="tocline"><a class="tocxref" href="#default-vocabulary"><span class="secno">6.2 </span>Default Vocabulary</a></li><li class="tocline"><a class="tocxref" href="#compact-iris"><span class="secno">6.3 </span>Compact IRIs</a></li><li class="tocline"><a class="tocxref" href="#typed-values"><span class="secno">6.4 </span>Typed Values</a></li><li class="tocline"><a class="tocxref" href="#type-coercion"><span class="secno">6.5 </span>Type Coercion</a></li><li class="tocline"><a class="tocxref" href="#embedding"><span class="secno">6.6 </span>Embedding</a></li><li class="tocline"><a class="tocxref" href="#advanced-context-usage"><span class="secno">6.7 </span>Advanced Context Usage</a></li><li class="tocline"><a class="tocxref" href="#interpreting-json-as-json-ld"><span class="secno">6.8 </span>Interpreting JSON as JSON-LD</a></li><li class="tocline"><a class="tocxref" href="#string-internationalization"><span class="secno">6.9 </span>String Internationalization</a></li><li class="tocline"><a class="tocxref" href="#iri-expansion-within-a-context"><span class="secno">6.10 </span><abbr title="Internationalized Resource Identifier">IRI</abbr> Expansion within a Context</a></li><li class="tocline"><a class="tocxref" href="#sets-and-lists"><span class="secno">6.11 </span>Sets and Lists</a></li><li class="tocline"><a class="tocxref" href="#reverse-properties"><span class="secno">6.12 </span>Reverse Properties</a></li><li class="tocline"><a class="tocxref" href="#named-graphs"><span class="secno">6.13 </span>Named Graphs</a></li><li class="tocline"><a class="tocxref" href="#identifying-blank-nodes"><span class="secno">6.14 </span>Identifying Blank Nodes</a></li><li class="tocline"><a class="tocxref" href="#aliasing-keywords"><span class="secno">6.15 </span>Aliasing Keywords</a></li><li class="tocline"><a class="tocxref" href="#data-indexing"><span class="secno">6.16 </span>Data Indexing</a></li><li class="tocline"><a class="tocxref" href="#expanded-document-form"><span class="secno">6.17 </span>Expanded Document Form</a></li><li class="tocline"><a class="tocxref" href="#compacted-document-form"><span class="secno">6.18 </span>Compacted Document Form</a></li><li class="tocline"><a class="tocxref" href="#flattened-document-form"><span class="secno">6.19 </span>Flattened Document Form</a></li><li class="tocline"><a class="tocxref" href="#embedding-json-ld-in-html-documents"><span class="secno">6.20 </span>Embedding JSON-LD in HTML Documents</a></li></ul></li><li class="tocline"><a class="tocxref" href="#data-model"><span class="secno">7. </span>Data Model</a></li><li class="tocline"><a class="tocxref" href="#json-ld-grammar"><span class="secno">8. </span>JSON-LD Grammar</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#terms"><span class="secno">8.1 </span>Terms</a></li><li class="tocline"><a class="tocxref" href="#node-objects"><span class="secno">8.2 </span>Node Objects</a></li><li class="tocline"><a class="tocxref" href="#value-objects"><span class="secno">8.3 </span>Value Objects</a></li><li class="tocline"><a class="tocxref" href="#lists-and-sets"><span class="secno">8.4 </span>Lists and Sets</a></li><li class="tocline"><a class="tocxref" href="#language-maps"><span class="secno">8.5 </span>Language Maps</a></li><li class="tocline"><a class="tocxref" href="#index-maps"><span class="secno">8.6 </span>Index Maps</a></li><li class="tocline"><a class="tocxref" href="#context-definitions"><span class="secno">8.7 </span>Context Definitions</a></li></ul></li><li class="tocline"><a class="tocxref" href="#relationship-to-rdf"><span class="secno">9. </span>Relationship to RDF</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#serializing-deserializing-rdf"><span class="secno">9.1 </span>Serializing/Deserializing RDF</a></li></ul></li><li class="tocline"><a class="tocxref" href="#relationship-to-other-linked-data-formats"><span class="secno">A. </span>Relationship to Other Linked Data Formats</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#turtle"><span class="secno">A.1 </span>Turtle</a></li><li class="tocline"><a class="tocxref" href="#rdfa"><span class="secno">A.2 </span>RDFa</a></li><li class="tocline"><a class="tocxref" href="#microformats"><span class="secno">A.3 </span>Microformats</a></li><li class="tocline"><a class="tocxref" href="#microdata"><span class="secno">A.4 </span>Microdata</a></li></ul></li><li class="tocline"><a class="tocxref" href="#iana-considerations"><span class="secno">B. </span>IANA Considerations</a></li><li class="tocline"><a class="tocxref" href="#acknowledgements"><span class="secno">C. </span>Acknowledgements</a></li><li class="tocline"><a class="tocxref" href="#references"><span class="secno">D. </span>References</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#normative-references"><span class="secno">D.1 </span>Normative references</a></li><li class="tocline"><a class="tocxref" href="#informative-references"><span class="secno">D.2 </span>Informative references</a></li></ul></li></ul></section>
+
+
+
+<section id="introduction" class="informative">
+  <!--OddPage--><h2 id="h2_introduction" role="heading" aria-level="1"><span class="secno">1. </span>Introduction</h2><p><em>This section is non-normative.</em></p>
+
+  <p>Linked Data [<cite><a href="#bib-LINKED-DATA" class="bibref">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
+    JSON [<cite><a href="#bib-RFC4627" class="bibref">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
@@ -446,13 +410,13 @@
     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 universal identifier mechanism for <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON objects</a>
+      via the use of <a href="#dfn-iri" title="iri" class="tref internalDFN">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>
+      them to <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a> via a <a href="#dfn-context" title="context" class="tref internalDFN">context</a>,</li>
+    <li>a mechanism in which a value in a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> may refer
+      to a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> on a different site on the Web,</li>
+    <li>the ability to annotate <a href="#dfn-string" title="string" class="tref internalDFN">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>
@@ -460,13 +424,13 @@
 
   <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
+   [<cite><a href="#bib-RDF11-CONCEPTS" class="bibref">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>.
+   RDF syntax, like Turtle [<cite><a href="#bib-TURTLE" class="bibref">TURTLE</a></cite>]. Complete details of how JSON-LD relates
+   to RDF are in section <a class="sec-ref" href="#relationship-to-rdf"><span class="secno">9.</span> <span class="sec-title">Relationship to RDF</span></a>.
   </p>
 
   <p>
@@ -476,8 +440,8 @@
    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>
+  <section id="how-to-read-this-document" class="informative">
+    <h3 id="h3_how-to-read-this-document" role="heading" aria-level="2"><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>
@@ -495,11 +459,11 @@
     </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
+      [<cite><a href="#bib-JSON-LD-API" class="bibref">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>
+      JSON, which is detailed in [<cite><a href="#bib-RFC4627" class="bibref">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>)
@@ -515,8 +479,8 @@
   </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>
+<section id="design-goals-and-rationale" class="informative">
+  <!--OddPage--><h2 id="h2_design-goals-and-rationale" role="heading" aria-level="1"><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>
 
@@ -525,7 +489,7 @@
    <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>
+     <a href="#dfn-keyword" title="keyword" class="tref internalDFN">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
@@ -553,31 +517,31 @@
      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>].
+      idiomatic JSON, with no need to understand RDF [<cite><a href="#bib-RDF11-CONCEPTS" class="bibref">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>
+      <a class="sec-ref" href="#relationship-to-rdf"><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>
+<section id="terminology" class="normative">
+  <!--OddPage--><h2 id="h2_terminology" role="heading" aria-level="1"><span class="secno">3. </span>Terminology</h2>
+
+  <section id="general-terminology" class="normative">
+    <h3 id="h3_general-terminology" role="heading" aria-level="2"><span class="secno">3.1 </span>General Terminology</h3>
+
+    <p>This document uses the following terms as defined in JSON [<cite><a href="#bib-RFC4627" class="bibref">RFC4627</a></cite>]. Refer
+      to the <em>JSON Grammar</em> section in [<cite><a href="#bib-RFC4627" class="bibref">RFC4627</a></cite>] for formal definitions.</p>
 
     <dl>
-      <dt><dfn title="json-object" id="dfn-json-object">JSON object</dfn></dt><dd>
+      <dt><dfn id="dfn-json-object" title="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>.
+        zero or more key-value pairs. A key is a <a href="#dfn-string" title="string" class="tref internalDFN">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>
+      <dt><dfn id="dfn-array" title="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.
@@ -585,76 +549,76 @@
         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>
+      <dt><dfn id="dfn-string" title="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>
+      <dt><dfn id="dfn-number" title="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>
+      <dt><dfn id="dfn-true" title="true">true</dfn> and <dfn id="dfn-false" title="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
+      <dt><dfn id="dfn-null" title="null">null</dfn></dt>
+      <dd>The <a href="#dfn-null" title="null" class="tref internalDFN">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>.
+        <code>@context</code> where the value is <a href="#dfn-null" title="null" class="tref internalDFN">null</a> explicitly
+        decouples a <a href="#dfn-term" title="term" class="tref internalDFN">term</a>'s association with an <a href="#dfn-iri" title="iri" class="tref internalDFN"><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
+        value is <a href="#dfn-null" title="null" class="tref internalDFN">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>
+        <code>@set</code> is set to <a href="#dfn-null" title="null" class="tref internalDFN">null</a> in expanded form, then
+        the entire <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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>
+  <section id="data-model-overview" class="informative">
+    <h3 id="h3_data-model-overview" role="heading" aria-level="2"><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
+      directed <a href="#dfn-graph" title="graph" class="tref internalDFN">graph</a>. The graph contains
+      <a href="#dfn-node" title="node" class="tref internalDFN">nodes</a>, which are connected by
+      <a href="#dfn-edge" title="edge" class="tref internalDFN">edges</a>. A <a href="#dfn-node" title="node" class="tref internalDFN">node</a> is typically data
+      such as a <a href="#dfn-string" title="string" class="tref internalDFN">string</a>, <a href="#dfn-number" title="number" class="tref internalDFN">number</a>,
+      <a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">typed values</a> (like dates and times)
+      or an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.
+      There is also a special class of <a href="#dfn-node" title="node" class="tref internalDFN">node</a> called a
+      <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank node</a>, which is typically used to express data that does
+      not have a global identifier like an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.
+      <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">Blank nodes</a> are identified using a
+      <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">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>.
+      section <a class="sec-ref" href="#data-model"><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>.
+    section <a class="sec-ref" href="#relationship-to-rdf"><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>
+  <section id="syntax-tokens-and-keywords" class="normative">
+    <h3 id="h3_syntax-tokens-and-keywords" role="heading" aria-level="2"><span class="secno">3.3 </span>Syntax Tokens and Keywords</h3>
+
+    <p>JSON-LD specifies a number of syntax tokens and <dfn id="dfn-keyword" title="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
+        document. These short-hand names are called <a href="#dfn-term" title="term" class="tref internalDFN">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
+        with <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a> or
+        <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">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 href="#dfn-property" title="property" class="tref internalDFN">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>
@@ -662,11 +626,11 @@
         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
+      <dd>Used to set the data type of a <a href="#dfn-node" title="node" class="tref internalDFN">node</a> or
+        <a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">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>.
+      <dd>Used to set the default container type for a <a href="#dfn-term" title="term" class="tref internalDFN">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.
@@ -683,24 +647,24 @@
         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>
+      <dd>Used to set the base <abbr title="Internationalized Resource Identifier">IRI</abbr> against which <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">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>.
+        <a href="#dfn-iri" title="iri" class="tref internalDFN"><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 href="#dfn-graph" title="graph" class="tref internalDFN">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>
+        <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">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>
+    <p>All keys, <a href="#dfn-keyword" title="keyword" class="tref internalDFN">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>
+<section id="conformance" class="normative">
+  <!--OddPage--><h2 id="h2_conformance" role="heading" aria-level="1"><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
@@ -708,21 +672,21 @@
     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
+  <p>A <a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">JSON-LD document</a> complies with this specification if it follows
+    the normative statements in appendix <a class="sec-ref" href="#json-ld-grammar"><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>
+  <p>The key words <em title="MUST" class="rfc2119">MUST</em>, <em title="MUST NOT" class="rfc2119">MUST NOT</em>, <em title="REQUIRED" class="rfc2119">REQUIRED</em>, <em title="SHALL" class="rfc2119">SHALL</em>, <em title="SHALL NOT" class="rfc2119">SHALL NOT</em>, <em title="SHOULD" class="rfc2119">SHOULD</em>, <em title="SHOULD NOT" class="rfc2119">SHOULD NOT</em>,
+    <em title="RECOMMENDED" class="rfc2119">RECOMMENDED</em>, <em title="NOT RECOMMENDED" class="rfc2119">NOT RECOMMENDED</em>, <em title="MAY" class="rfc2119">MAY</em>, and <em title="OPTIONAL" class="rfc2119">OPTIONAL</em> in this specification have the
+    meaning defined in [<cite><a href="#bib-RFC2119" class="bibref">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.
+<section id="basic-concepts" class="informative">
+  <!--OddPage--><h2 id="h2_basic-concepts" role="heading" aria-level="1"><span class="secno">5. </span>Basic Concepts</h2><p><em>This section is non-normative.</em></p>
+
+  <p>JSON [<cite><a href="#bib-RFC4627" class="bibref">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
@@ -744,15 +708,15 @@
     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>
+  <p>Linked Data, and the Web in general, uses <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a>
+    (Internationalized Resource Identifiers as described in [<cite><a href="#bib-RFC3987" class="bibref">RFC3987</a></cite>]) for unambiguous
+    identification. The idea is to use <a href="#dfn-iri" title="iri" class="tref internalDFN">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>
+    It is useful for <a href="#dfn-term" title="term" class="tref internalDFN">terms</a>,
+    like <code>name</code> and <code>homepage</code>, to expand to <a href="#dfn-iri" title="iri" class="tref internalDFN">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>
+    machines are able to use this <a href="#dfn-iri" title="iri" class="tref internalDFN"><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 href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>
     dereferencing.</p>
 
   <p>Leveraging the popular <a href="http://schema.org/">schema.org vocabulary</a>,
@@ -764,15 +728,15 @@
   "<span class="highlight">http://schema.org/image</span>": <span class="highlight">{ "@id": </span>"http://manu.sporny.org/images/manu.png" <span class="highlight">}</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
+  <p>In the example above, every property is unambiguously identified by an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> and all values
+    representing <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a> are explicitly marked as such by the
+    <code>@id</code> <a href="#dfn-keyword" title="keyword" class="tref internalDFN">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>
+    of a <a href="#dfn-context" title="context" class="tref internalDFN">context</a> as described in the next section.</p>
+
+  <section id="the-context" class="informative">
+    <h3 id="h3_the-context" role="heading" aria-level="2"><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
@@ -783,12 +747,12 @@
     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
+    <p>Simply speaking, a <dfn id="dfn-context" title="context">context</dfn> is used to map <a href="#dfn-term" title="term" class="tref internalDFN">terms</a> to
+      <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a>. <a href="#dfn-term" title="term" class="tref internalDFN">Terms</a> are case sensitive
+      and any valid <a href="#dfn-string" title="string" class="tref internalDFN">string</a> that is not a reserved JSON-LD <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>
+      can be used as a <a href="#dfn-term" title="term" class="tref internalDFN">term</a>.</p>
+
+    <p>For the sample document in the previous section, a <a href="#dfn-context" title="context" class="tref internalDFN">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">{
@@ -806,25 +770,25 @@
   }</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
+    <p>As the <a href="#dfn-context" title="context" class="tref internalDFN">context</a> above shows, the value of a <dfn id="dfn-term-definition" title="term-definition">term definition</dfn> can
+      either be a simple string, mapping the <a href="#dfn-term" title="term" class="tref internalDFN">term</a> to an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
+      or a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a>.</p>
+
+    <p>When a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> is associated with a term, it is called
+      an <dfn id="dfn-expanded-term-definition" title="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>
+      <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a>. <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">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
+      and to specify whether <a href="#dfn-array" title="array" class="tref internalDFN">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
+      <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">Expanded term definitions</a> may
+      be defined using <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute</a> or
+      <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">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
+      <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute</a> or <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</p>
+
+    <p><a href="#dfn-context" title="context" class="tref internalDFN">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
@@ -838,25 +802,25 @@
 }</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
+      <a href="#dfn-iri" title="iri" class="tref internalDFN">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>,
+      can be interpreted as an <a href="#dfn-iri" title="iri" class="tref internalDFN"><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
+      documentation about the <a href="#dfn-term" title="term" class="tref internalDFN">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
+      referencing a <a href="#dfn-context" title="context" class="tref internalDFN">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.
+      possible to apply a custom context using the JSON-LD API [<cite><a href="#bib-JSON-LD-API" class="bibref">JSON-LD-API</a></cite>].</p>
+
+    <p>In <a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">JSON-LD documents</a>,
+      <a href="#dfn-context" title="context" class="tref internalDFN">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>
@@ -881,26 +845,26 @@
 
     <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>.
+    in section <a class="sec-ref" href="#advanced-concepts"><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>
+<section id="iris" class="informative">
+  <h3 id="h3_iris" role="heading" aria-level="2"><span class="secno">5.2 </span>IRIs</h3><p><em>This section is non-normative.</em></p>
+
+  <p><a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a> (Internationalized Resource Identifiers
+    [<cite><a href="#bib-RFC3987" class="bibref">RFC3987</a></cite>]) are fundamental to Linked Data as that is how most
+    <a href="#dfn-node" title="node" class="tref internalDFN">nodes</a> and <a href="#dfn-property" title="property" class="tref internalDFN">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
+    <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> or a <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>. An
+    <dfn id="dfn-absolute-iri" title="absolute-iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></dfn> is defined in [<cite><a href="#bib-RFC3987" class="bibref">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
+    <em>fragment</em> segments. A <dfn id="dfn-relative-iri" title="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 href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>.
+    In JSON-LD all <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative IRIs</a> are resolved
+    relative to the <dfn id="dfn-base-iri" title="base-iri">base <abbr title="Internationalized Resource Identifier">IRI</abbr></dfn>.</p>
+
+  <p>A <a href="#dfn-string" title="string" class="tref internalDFN">string</a> is interpreted as an <a href="#dfn-iri" title="iri" class="tref internalDFN"><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">{
@@ -909,13 +873,13 @@
 ...
 }</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,
+  <p>Values that are interpreted as <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a>, can also be
+    expressed as <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">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>http://example.com/about/</code>, the <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">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>
+    information on where  <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative IRIs</a> can be
+    used, please refer to section <a class="sec-ref" href="#json-ld-grammar"><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">{
 ...
@@ -923,7 +887,7 @@
 ...
 }</pre></div>
 
-  <p><a class="tref internalDFN" title="absolute-iri" href="#dfn-absolute-iri">Absolute IRIs</a> can be expressed directly
+  <p><a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">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">{
@@ -933,10 +897,10 @@
 }</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>
+    is interpreted as an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">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 href="#dfn-term" title="term" class="tref internalDFN">term</a> defined
+    within the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">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="highlight">@context</span>":
@@ -947,11 +911,11 @@
   "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>
+  <p>JSON keys that do not expand to an <a href="#dfn-iri" title="iri" class="tref internalDFN"><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>
+  <p>If type <a href="#dfn-coercion" title="coercion" class="tref internalDFN">coercion</a> rules are specified in the <code>@context</code> for
+    a particular <a href="#dfn-term" title="term" class="tref internalDFN">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="highlight">
   "@context":
@@ -970,46 +934,46 @@
 }</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>
+    is expressed as a JSON <a href="#dfn-string" title="string" class="tref internalDFN">string</a>, the type <a href="#dfn-coercion" title="coercion" class="tref internalDFN">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
+  <p>In summary, <a href="#dfn-iri" title="iri" class="tref internalDFN">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
+    <li><a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> keys that have a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> mapping in
+      the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> expand to an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>
+      (only applies outside of the <a href="#dfn-context-definition" title="context-definition" class="tref internalDFN">context definition</a>).</li>
+    <li>An <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> is generated for the <a href="#dfn-string" title="string" class="tref internalDFN">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
+    <li>An <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> is generated for the <a href="#dfn-string" title="string" class="tref internalDFN">string</a> value of any key for which there
+      are <a href="#dfn-coercion" title="coercion" class="tref internalDFN">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>.
+  section <a class="sec-ref" href="#advanced-concepts"><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>
+<section id="node-identifiers" class="informative">
+  <h3 id="h3_node-identifiers" role="heading" aria-level="2"><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 href="#dfn-node" title="node" class="tref internalDFN">nodes</a>
+    in a <a href="#dfn-graph" title="graph" class="tref internalDFN">graph</a>, it is important that
+    <a href="#dfn-node" title="node" class="tref internalDFN">nodes</a> have an identifier. <a href="#dfn-iri" title="iri" class="tref internalDFN">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>.
+    <a href="#dfn-node" title="node" class="tref internalDFN">nodes</a> to be truly linked, dereferencing the
+    identifier should result in a representation of that <a href="#dfn-node" title="node" class="tref internalDFN">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>
+    <a href="#dfn-node" title="node" class="tref internalDFN">node</a>.</p>
+
+  <p>In JSON-LD, a <a href="#dfn-node" title="node" class="tref internalDFN">node</a> is identified using the <code>@id</code>
+    <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>:</p>
 
   <div class="example"><div class="example-title"><span>Example 11</span>: Identifying a node</div><pre class="example">{
   "@context":
@@ -1022,22 +986,22 @@
   ...
 }</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>
+  <p>The example above contains a <a href="#dfn-node-object" title="node-object" class="tref internalDFN">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>.
+  node identifiers are covered in section <a class="sec-ref" href="#advanced-concepts"><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>
+<section id="specifying-the-type" class="informative">
+<h3 id="h3_specifying-the-type" role="heading" aria-level="2"><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>
+  <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>. In Linked Data, types are uniquely
+  identified with an <a href="#dfn-iri" title="iri" class="tref internalDFN"><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">{
 ...
@@ -1046,7 +1010,7 @@
 ...
 }</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>
+<p>A node can be assigned more than one type by using an <a href="#dfn-array" title="array" class="tref internalDFN">array</a>:</p>
 
 <div class="example"><div class="example-title"><span>Example 13</span>: Specifying multiple types for a node</div><pre class="example">{
 ...
@@ -1055,7 +1019,7 @@
 ...
 }</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>
+<p>The value of a <code>@type</code> key may also be a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> defined in the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">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": {
     ...
@@ -1067,34 +1031,34 @@
   ...
 }</pre></div>
 
-<div class="note"><div class="note-title" aria-level="3" role="heading" id="h_note_1"><span>Note</span></div><p class="">This section only covers the most basic features associated with
+<div class="note"><div id="h_note_1" role="heading" aria-level="3" class="note-title"><span>Note</span></div><p class="">This section only covers the most basic features associated with
   types in JSON-LD. It is worth noting that the <code>@type</code>
-  <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> is not only used to specify the type of a
-  <a class="tref internalDFN" title="node" href="#dfn-node">node</a> but also to express <a class="tref internalDFN" title="typed-value" href="#dfn-typed-value">typed values</a>
+  <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a> is not only used to specify the type of a
+  <a href="#dfn-node" title="node" class="tref internalDFN">node</a> but also to express <a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">typed values</a>
   (as described in <a class="sectionRef sec-ref" href="#typed-values">section 6.4 Typed Values</a>) and to
-  <a class="tref internalDFN" title="coercion" href="#dfn-coercion">type coerce</a> values (as described in
+  <a href="#dfn-coercion" title="coercion" class="tref internalDFN">type coerce</a> values (as described in
   <a class="sectionRef sec-ref" href="#type-coercion">section 6.5 Type Coercion</a>). Specifically, <code>@type</code>
-  cannot be used in a <a class="tref internalDFN" title="context" href="#dfn-context">context</a> to define a <a class="tref internalDFN" title="node" href="#dfn-node">node's</a>
+  cannot be used in a <a href="#dfn-context" title="context" class="tref internalDFN">context</a> to define a <a href="#dfn-node" title="node" class="tref internalDFN">node's</a>
   type. For a detailed description of the differences, please refer to
   <a class="sectionRef sec-ref" href="#typed-values">section 6.4 Typed Values</a>.</p></div>
 
 </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>
+<section id="advanced-concepts" class="normative">
+<!--OddPage--><h2 id="h2_advanced-concepts" role="heading" aria-level="1"><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
+<section id="base-iri" class="informative">
+  <h3 id="h3_base-iri" role="heading" aria-level="2"><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 href="#dfn-iri" title="iri" class="tref internalDFN"><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>
+    of [<cite><a href="#bib-RFC3986" class="bibref">RFC3986</a></cite>]. The base <abbr title="Internationalized Resource Identifier">IRI</abbr> may be explicitly set with a <a href="#dfn-context" title="context" class="tref internalDFN">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>,
@@ -1109,8 +1073,8 @@
 }</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>
+    However, if the document is moved to a different location, the <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> would change.
+    To prevent this without having to use an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-context" title="context" class="tref internalDFN">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">{
@@ -1121,21 +1085,21 @@
   "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>
+  <p>Setting <code>@base</code> to <a href="#dfn-null" title="null" class="tref internalDFN">null</a> will prevent
+    <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative IRIs</a> to be expanded to
+    <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute IRIs</a>.</p>
 
   <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>
+<section id="default-vocabulary" class="informative">
+  <h3 id="h3_default-vocabulary" role="heading" aria-level="2"><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
+    for all properties and types that do not match a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> and are neither
+    a <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> nor an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">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">{
@@ -1149,11 +1113,11 @@
 }</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
+    <a href="#dfn-json-object" title="json-object" class="tref internalDFN">object</a> should not be expanded using
+    the vocabulary <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> can be explicitly set
+    to <a href="#dfn-null" title="null" class="tref internalDFN">null</a> in the <a href="#dfn-context" title="context" class="tref internalDFN">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>
+    <a href="#dfn-iri" title="iri" class="tref internalDFN"><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":
@@ -1168,19 +1132,19 @@
 }</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>
+<section id="compact-iris" class="informative">
+  <h3 id="h3_compact-iris" role="heading" aria-level="2"><span class="secno">6.3 </span>Compact IRIs</h3><p><em>This section is non-normative.</em></p>
+
+  <p>A <dfn id="dfn-compact-iri" title="compact-iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></dfn> is a way of expressing an <a href="#dfn-iri" title="iri" class="tref internalDFN"><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
+    The <dfn id="dfn-prefix" title="prefix">prefix</dfn> is a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> taken from the
+    <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> and is a short string identifying a
+    particular <a href="#dfn-iri" title="iri" class="tref internalDFN"><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>
+    Friend-of-a-Friend vocabulary, which is identified using the <a href="#dfn-iri" title="iri" class="tref internalDFN"><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,
+    version of the <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">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>
 
@@ -1195,20 +1159,20 @@
 ...
 }</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>
+  <p>In the example above, <code>foaf:name</code> expands to the <a href="#dfn-iri" title="iri" class="tref internalDFN"><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>,
+  <p><a href="#dfn-prefix" title="prefix" class="tref internalDFN">Prefixes</a> are expanded when the form of the value
+    is a <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> represented as a <code>prefix:suffix</code>
+    combination, the <em>prefix</em> matches a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> defined within the
+    <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, and the <em>suffix</em> does not begin with two
+    slashes&nbsp;(<code>//</code>). The <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> is expanded by
+    concatenating the <a href="#dfn-iri" title="iri" class="tref internalDFN"><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 href="#dfn-active-context" title="active-context" class="tref internalDFN">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>
+    the value is interpreted as <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> instead. If the prefix is an
+    underscore (<code>_</code>), the value is interpreted as <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a>
     instead.</p>
 
 
@@ -1231,25 +1195,25 @@
 }</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>
+<section id="typed-values" class="informative">
+<h3 id="h3_typed-values" role="heading" aria-level="2"><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
+  <a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">typed value</a>, is indicated by associating a value with
+  an <a href="#dfn-iri" title="iri" class="tref internalDFN"><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>
+  <li>By utilizing the <code>@type</code> <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a> when defining
+    a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> within a <code>@context</code> section.</li>
+  <li>By utilizing a <a href="#dfn-value-object" title="value-object" class="tref internalDFN">value object</a>.</li>
+  <li>By using a native JSON type such as <a href="#dfn-number" title="number" class="tref internalDFN">number</a>, <a href="#dfn-true" title="true" class="tref internalDFN">true</a>, or <a href="#dfn-false" title="false" class="tref internalDFN">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>
+type with a particular <a href="#dfn-term" title="term" class="tref internalDFN">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="highlight">"@context":
@@ -1311,16 +1275,16 @@
 <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
+  also possible to use a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> or a <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> to
   express the value of a type.</p>
 
-<div class="note"><div class="note-title" aria-level="3" role="heading" id="h_note_2"><span>Note</span></div><p class="">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></div>
-
-<p>Generally speaking, a <dfn title="node-type" id="dfn-node-type">node type</dfn> specifies the type of thing
+<div class="note"><div id="h_note_2" role="heading" aria-level="3" class="note-title"><span>Note</span></div><p class="">The <code>@type</code> <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a> is also used to associate a type
+  with a <a href="#dfn-node" title="node" class="tref internalDFN">node</a>. The concept of a <a href="#dfn-node-type" title="node-type" class="tref internalDFN">node type</a> and
+  a <a href="#dfn-value-type" title="value-type" class="tref internalDFN">value type</a> are different.</p></div>
+
+<p>Generally speaking, a <dfn id="dfn-node-type" title="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
+  <dfn id="dfn-value-type" title="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">{
@@ -1335,17 +1299,17 @@
 ...
 }</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>
+<p>The first use of <code>@type</code> associates a <a href="#dfn-node-type" title="node-type" class="tref internalDFN">node type</a>
+  (<code>http://schema.org/BlogPosting</code>) with the <a href="#dfn-node" title="node" class="tref internalDFN">node</a>,
+  which is expressed using the <code>@id</code> <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>.
+  The second use of <code>@type</code> associates a <a href="#dfn-value-type" title="value-type" class="tref internalDFN">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
+  value expressed using the <code>@value</code> <a href="#dfn-keyword" title="keyword" class="tref internalDFN">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>
+  the same <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a>, the <code>@type</code>
+  <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a> is expressing a <a href="#dfn-value-type" title="value-type" class="tref internalDFN">value type</a>.
+  Otherwise, the <code>@type</code> <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a> is expressing a
+  <a href="#dfn-node-type" title="node-type" class="tref internalDFN">node type</a>. The example above expresses the following data:</p>
 
 <table class="example">
 <thead>
@@ -1372,37 +1336,37 @@
 
 </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>
+<section id="type-coercion" class="informative">
+<h3 id="h3_type-coercion" role="heading" aria-level="2"><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
+Type <dfn id="dfn-coercion" title="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 href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a> to
+<a href="#dfn-term" title="term" class="tref internalDFN">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>
+<p>Type coercion is specified within an <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">expanded term definition</a>
+  using the <code>@type</code> key. The value of this key expands to an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.
+  Alternatively, the <a href="#dfn-keyword" title="keyword" class="tref internalDFN">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 href="#dfn-string" title="string" class="tref internalDFN">string</a> value of a
+  <a href="#dfn-term" title="term" class="tref internalDFN">term</a> coerced to <code>@id</code> or <code>@vocab</code> is to be interpreted as an
+  <a href="#dfn-iri" title="iri" class="tref internalDFN"><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 href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute IRIs</a>. <code>@vocab</code> first tries to expand the value
+  by interpreting it as <a href="#dfn-term" title="term" class="tref internalDFN">term</a>. If no matching <a href="#dfn-term" title="term" class="tref internalDFN">term</a> is found in the
+  <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, it tries to expand it as <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> or <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">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
+  <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context's</a> vocabulary mapping, if present, or by interpreting it
+  as <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>. Values coerced to <code>@id</code> in contrast are expanded as
+  <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> or <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> if a colon is present; otherwise, they are interpreted
+  as <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</p>
+
+<p><a href="#dfn-term" title="term" class="tref internalDFN">Terms</a> or <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">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
+  <a href="#dfn-term" title="term" class="tref internalDFN">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>
+<a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">typed values</a> and <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a>.</p>
 
 <div class="example"><div class="example-title"><span>Example 24</span>: Expanded term definition with types</div><pre class="example">{
   "@context":
@@ -1456,18 +1420,18 @@
   <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>
+  <td><a href="#dfn-iri" title="iri" class="tref internalDFN"><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>
+  <td><a href="#dfn-iri" title="iri" class="tref internalDFN"><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>.
+<p>Terms may also be defined using <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute IRIs</a>
+  or <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact IRIs</a>. This allows coercion rules
+  to be applied to keys which are not represented as a simple <a href="#dfn-term" title="term" class="tref internalDFN">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">{
@@ -1494,34 +1458,34 @@
 }</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>
+  If it does exist, the <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> or <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> representing
+  the term will always be expanded to <a href="#dfn-iri" title="iri" class="tref internalDFN"><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="note"><div class="note-title" aria-level="3" role="heading" id="h_note_3"><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
+  in the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> and not for the corresponding, expanded
+  <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> <code>http://xmlns.com/foaf/0.1/age</code>.</p>
+
+<div class="note"><div id="h_note_3" role="heading" aria-level="3" class="note-title"><span>Note</span></div><p class="">Keys in the context are treated as <a href="#dfn-term" title="term" class="tref internalDFN">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
+  Doing this could be useful for establishing different type coercion or language specification rules. It also allows a <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> (or even an
+  absolute <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>) to be defined as something else entirely. For example, one could specify that
+  the <a href="#dfn-term" title="term" class="tref internalDFN">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>
+<section id="embedding" class="informative">
+  <h3 id="h3_embedding" role="heading" aria-level="2"><span class="secno">6.6 </span>Embedding</h3><p><em>This section is non-normative.</em></p>
+
+  <p><dfn id="dfn-embedding" title="embedding">Embedding</dfn> is a JSON-LD feature that allows an author to
+    use <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node objects</a> as
+    <a href="#dfn-property" title="property" class="tref internalDFN">property</a> values. This is a commonly used mechanism for
+    creating a parent-child relationship between two <a href="#dfn-node" title="node" class="tref internalDFN">nodes</a>.</p>
 
   <p>The example shows two nodes related by a property from the first node:</p>
 
@@ -1537,22 +1501,22 @@
 }</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
+    A <a href="#dfn-node-object" title="node-object" class="tref internalDFN">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
+<section id="advanced-context-usage" class="informative">
+  <h3 id="h3_advanced-context-usage" role="heading" aria-level="2"><span class="secno">6.7 </span>Advanced Context Usage</h3><p><em>This section is non-normative.</em></p>
+
+  <p>Section <a class="sec-ref" href="#the-context"><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
+  <a href="#dfn-context" title="context" class="tref internalDFN">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
+    <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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
+    <a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">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">[
@@ -1573,7 +1537,7 @@
   }
 ]</pre></div>
 
-  <p>Duplicate context <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> are overridden using a
+  <p>Duplicate context <a href="#dfn-term" title="term" class="tref internalDFN">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">{
@@ -1594,23 +1558,23 @@
   }
 }</pre></div>
 
-  <p>In the example above, the <code>name</code> <a class="tref internalDFN" title="term" href="#dfn-term">term</a> is overridden
+  <p>In the example above, the <code>name</code> <a href="#dfn-term" title="term" class="tref internalDFN">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
+    <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a>. If a <a href="#dfn-term" title="term" class="tref internalDFN">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>
+    removed. If a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> is redefined to <code>null</code>,
+    the <a href="#dfn-term" title="term" class="tref internalDFN">term</a> is effectively removed from the list of
+    <a href="#dfn-term" title="term" class="tref internalDFN">terms</a> defined in the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>.</p>
+
+  <p>Multiple contexts may be combined using an <a href="#dfn-array" title="array" class="tref internalDFN">array</a>, which is processed
+    in order. The set of contexts defined within a specific <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> are
+    referred to as <dfn id="dfn-local-context" title="local-context">local contexts</dfn>. The
+    <dfn id="dfn-active-context" title="active-context">active context</dfn> refers to the accumulation of
+    <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local contexts</a> that are in scope at a
+    specific point within the document. Setting a <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a>
+    to <code>null</code> effectively resets the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">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>
 
@@ -1626,45 +1590,45 @@
   <span class="highlight">"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_4"><span>Note</span></div><p class="">When possible, the <a class="tref internalDFN" title="context" href="#dfn-context">context</a> definition should be put
+  <div class="note"><div id="h_note_4" role="heading" aria-level="3" class="note-title"><span>Note</span></div><p class="">When possible, the <a href="#dfn-context" title="context" class="tref internalDFN">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_5"><span>Note</span></div><p class="">To avoid forward-compatibility issues, <a class="tref internalDFN" title="term" href="#dfn-term">terms</a>
+    <a href="#dfn-context" title="context" class="tref internalDFN">context</a> at the top are still conformant JSON-LD.</p></div>
+
+  <div class="note"><div id="h_note_5" role="heading" aria-level="3" class="note-title"><span>Note</span></div><p class="">To avoid forward-compatibility issues, <a href="#dfn-term" title="term" class="tref internalDFN">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
+    might be used as <a href="#dfn-keyword" title="keyword" class="tref internalDFN">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
+    <a href="#dfn-keyword" title="keyword" class="tref internalDFN">JSON-LD 1.0 keywords</a> are treated as any other term, i.e.,
+    they are ignored unless mapped to an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>. Furthermore, the use of
+    empty <a href="#dfn-term" title="term" class="tref internalDFN">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>
+<section id="interpreting-json-as-json-ld" class="normative">
+  <h3 id="h3_interpreting-json-as-json-ld" role="heading" aria-level="2"><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
+    <a href="#dfn-context" title="context" class="tref internalDFN">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>
+    [<cite><a href="#bib-RFC6839" class="bibref">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>.
+    <em title="MUST" class="rfc2119">MUST</em> specify an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> to a valid <a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">JSON-LD document</a> in
+    an HTTP Link Header [<cite><a href="#bib-RFC5988" class="bibref">RFC5988</a></cite>] using the <code>http://www.w3.org/ns/json-ld#context</code>
+    link relation. The referenced document <em title="MUST" class="rfc2119">MUST</em> have a top-level <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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>
+    <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> of the referencing document. If an <a href="#dfn-array" title="array" class="tref internalDFN">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
+    <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON objects</a>, the <code>@context</code>
+    subtree is added to all <a href="#dfn-array" title="array" class="tref internalDFN">array</a> items. All extra information located outside
+    of the <code>@context</code> subtree in the referenced document <em title="MUST" class="rfc2119">MUST</em> be
+    discarded. Effectively this means that the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> is
+    initialized with the referenced external <a href="#dfn-context" title="context" class="tref internalDFN">context</a>. A response <em title="MUST NOT" class="rfc2119">MUST NOT</em>
+    contain more than one HTTP Link Header [<cite><a href="#bib-RFC5988" class="bibref">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
@@ -1687,21 +1651,21 @@
   "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>
+  <p>Please note that <a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">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
+    media type <em title="MUST" class="rfc2119">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
+    <code>http://www.w3.org/ns/json-ld#context</code> HTTP Link Header <em title="MUST" class="rfc2119">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>
+<section id="string-internationalization" class="informative">
+  <h3 id="h3_string-internationalization" role="heading" aria-level="2"><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 href="#dfn-string" title="string" class="tref internalDFN">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>
+    by setting the <code>@language</code> key in the <a href="#dfn-context" title="context" class="tref internalDFN">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="highlight">"@context":
@@ -1714,12 +1678,12 @@
 }</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>
+    code with the two <a href="#dfn-string" title="string" class="tref internalDFN">strings</a> <em>花澄</em> and <em>科学者</em>.
+    Languages codes are defined in [<cite><a href="#bib-BCP47" class="bibref">BCP47</a></cite>]. The default language applies to all
+    <a href="#dfn-string" title="string" class="tref internalDFN">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>
+    be set to <code>null</code> in a <a href="#dfn-local-context" title="local-context" class="tref internalDFN">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": {
@@ -1735,8 +1699,8 @@
   }
 }</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>
+  <p>Second, it is possible to associate a language with a specific <a href="#dfn-term" title="term" class="tref internalDFN">term</a>
+    using an <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">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": {
@@ -1760,17 +1724,17 @@
     <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_6"><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>
+    <a href="#dfn-null" title="null" class="tref internalDFN">null</a> in the <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">expanded term definition</a>.</p>
+
+  <div class="note"><div id="h_note_6" role="heading" aria-level="3" class="note-title"><span>Note</span></div><p class="">Language associations are only applied to plain
+    <a href="#dfn-string" title="string" class="tref internalDFN">strings</a>. <a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">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>
+    the language-specific data. In this case, <a href="#dfn-language-map" title="language-map" class="tref internalDFN">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">{
@@ -1798,7 +1762,7 @@
     <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>
+    <a href="#dfn-value-object" title="value-object" class="tref internalDFN">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": {
@@ -1814,7 +1778,7 @@
 
   <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>
+    it using a <a href="#dfn-value-object" title="value-object" class="tref internalDFN">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": {
@@ -1833,14 +1797,14 @@
 
 </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>
+<section id="iri-expansion-within-a-context" class="informative">
+  <h3 id="h3_iri-expansion-within-a-context" role="heading" aria-level="2"><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
+    a <a href="#dfn-context" title="context" class="tref internalDFN">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>
+    the <code>xsd</code> namespace when defining <a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">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":
@@ -1861,12 +1825,12 @@
   ...
 }</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
+<p>In this example, the <code>xsd</code> <a href="#dfn-term" title="term" class="tref internalDFN">term</a> is defined
+  and used as a <a href="#dfn-prefix" title="prefix" class="tref internalDFN">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>
+<p><a href="#dfn-term" title="term" class="tref internalDFN">Terms</a> may also be used when defining the <abbr title="Internationalized Resource Identifier">IRI</abbr> of another
+<a href="#dfn-term" title="term" class="tref internalDFN">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":
@@ -1888,9 +1852,9 @@
   ...
 }</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>
+<p><a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">Compact IRIs</a>
+  and <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a> may be used on the left-hand side of a
+  <a href="#dfn-term" title="term" class="tref internalDFN">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":
@@ -1911,20 +1875,20 @@
 }</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
+In this example, the <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">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
+<a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> for the <a href="#dfn-term" title="term" class="tref internalDFN">term</a> (using short-form) as well as the
+<code>@type</code> associated with the <a href="#dfn-term" title="term" class="tref internalDFN">term</a>. In the second
+approach, only the <code>@type</code> associated with the <a href="#dfn-term" title="term" class="tref internalDFN">term</a> is
+specified. The full <a href="#dfn-iri" title="iri" class="tref internalDFN"><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>.
+<a href="#dfn-prefix" title="prefix" class="tref internalDFN">prefix</a> in the
+<a href="#dfn-context" title="context" class="tref internalDFN">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>:
+<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">Absolute IRIs</a> may also be used in the key position in a <a href="#dfn-context" title="context" class="tref internalDFN">context</a>:
 </p>
 
 <div class="example"><div class="example-title"><span>Example 40</span>: Associating context definitions with absolute IRIs</div><pre class="example">{
@@ -1946,24 +1910,24 @@
   ...
 }</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>
+<p>In order for the <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> to match above, the <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
+  needs to be used in the <a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">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_7"><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>
+  That is, <a href="#dfn-term" title="term" class="tref internalDFN">terms</a> are looked up in a <a href="#dfn-context" title="context" class="tref internalDFN">context</a> using
+  direct string comparison before the <a href="#dfn-prefix" title="prefix" class="tref internalDFN">prefix</a> lookup mechanism is applied.</p>
+
+<div class="note"><div id="h_note_7" role="heading" aria-level="3" class="note-title"><span>Note</span></div><p class="">While it is possible to define a <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, or
+  an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> to expand to some other unrelated <a href="#dfn-iri" title="iri" class="tref internalDFN"><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
+<p>The only exception for using terms in the <a href="#dfn-context" title="context" class="tref internalDFN">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
+  <em>term1</em>. For example, the following <a href="#dfn-context" title="context" class="tref internalDFN">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":
@@ -1975,11 +1939,11 @@
 }</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>
+<section id="sets-and-lists" class="informative">
+<h3 id="h3_sets-and-lists" role="heading" aria-level="2"><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
+  <a href="#dfn-array" title="array" class="tref internalDFN">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
@@ -2065,7 +2029,7 @@
 
 <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>
+  a list may be represented using the <code>@list</code> <a href="#dfn-keyword" title="keyword" class="tref internalDFN">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",
@@ -2076,10 +2040,10 @@
 ...
 }</pre></div>
 
-<p>This describes the use of this <a class="tref internalDFN" title="array" href="#dfn-array">array</a> as being ordered,
+<p>This describes the use of this <a href="#dfn-array" title="array" class="tref internalDFN">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>
+  to <code>@list</code> in the <a href="#dfn-context" title="context" class="tref internalDFN">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="highlight">"@context":
   {
@@ -2096,7 +2060,7 @@
 ...
 }</pre></div>
 
-<div class="note"><div class="note-title" aria-level="3" role="heading" id="h_note_8"><span>Note</span></div><p class="">List of lists in the form of <a class="tref internalDFN" title="list-object" href="#dfn-list-object">list objects</a>
+<div class="note"><div id="h_note_8" role="heading" aria-level="3" class="note-title"><span>Note</span></div><p class="">List of lists in the form of <a href="#dfn-list-object" title="list-object" class="tref internalDFN">list objects</a>
   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>
 
@@ -2107,7 +2071,7 @@
   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>,
+  are always represented in the form of an <a href="#dfn-array" title="array" class="tref internalDFN">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
@@ -2116,17 +2080,17 @@
 
 </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
+<section id="reverse-properties" class="informative">
+  <h3 id="h3_reverse-properties" role="heading" aria-level="2"><span class="secno">6.12 </span>Reverse Properties</h3><p><em>This section is non-normative.</em></p>
+
+  <p>JSON-LD serializes directed <a href="#dfn-graph" title="graph" class="tref internalDFN">graphs</a>. That means that
+    every <a href="#dfn-property" title="property" class="tref internalDFN">property</a> points from a <a href="#dfn-node" title="node" class="tref internalDFN">node</a> to another <a href="#dfn-node" title="node" class="tref internalDFN">node</a>
+    or <a href="#dfn-json-ld-value" title="json-ld-value" class="tref internalDFN">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
+    provide a <em>children</em> <a href="#dfn-property" title="property" class="tref internalDFN">property</a> but just a <em>parent</em>
+    <a href="#dfn-property" title="property" class="tref internalDFN">property</a>, every <a href="#dfn-node" title="node" class="tref internalDFN">node</a> representing a child would have to
+    be expressed with a <a href="#dfn-property" title="property" class="tref internalDFN">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">[
@@ -2147,7 +2111,7 @@
 ]</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>
+    <a href="#dfn-keyword" title="keyword" class="tref internalDFN">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",
@@ -2166,8 +2130,8 @@
   }
 }</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>
+  <p>The <code>@reverse</code> <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a> can also be used in
+    <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">expanded term definitions</a>
     to create reverse properties as shown in the following example:</p>
 
 
@@ -2192,15 +2156,15 @@
 </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>
+<section id="named-graphs" class="informative">
+  <h3 id="h3_named-graphs" role="heading" aria-level="2"><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 href="#dfn-graph" title="graph" class="tref internalDFN">graph</a>
+    itself, rather than just a single <a href="#dfn-node" title="node" class="tref internalDFN">node</a>. This can be done by
+    grouping a set of <a href="#dfn-node" title="node" class="tref internalDFN">nodes</a> using the <code>@graph</code>
+    <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>. A developer may also name data expressed using the
+    <code>@graph</code> <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a> by pairing it with an
+    <code>@id</code> <a href="#dfn-keyword" title="keyword" class="tref internalDFN">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": {
@@ -2231,8 +2195,8 @@
   ]
 }</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
+  <p>The example above expresses a <a href="#dfn-named-graph" title="named-graph" class="tref internalDFN">named graph</a> that is identified
+    by the <a href="#dfn-iri" title="iri" class="tref internalDFN"><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
@@ -2300,16 +2264,16 @@
   </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
+    <a href="#dfn-json-object" title="json-object" class="tref internalDFN">object</a> that contains no other
+    <a href="#dfn-property" title="property" class="tref internalDFN">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),
+    <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or a <a href="#dfn-keyword" title="keyword" class="tref internalDFN">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
+    <a href="#dfn-default-graph" title="default-graph" class="tref internalDFN">default graph</a>. This mechanism can be useful when a number
+    of <a href="#dfn-node" title="node" class="tref internalDFN">nodes</a> exist at the document's top level that
+    share the same <a href="#dfn-context" title="context" class="tref internalDFN">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>
+    <code>@graph</code> keyword collects such nodes in an <a href="#dfn-array" title="array" class="tref internalDFN">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">{
@@ -2331,10 +2295,10 @@
   ]
 }</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>
+  <p>In this case, embedding doesn't work as each <a href="#dfn-node-object" title="node-object" class="tref internalDFN">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>
+    <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node objects</a> in array and defining
+    the <code>@context</code> within each <a href="#dfn-node-object" title="node-object" class="tref internalDFN">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">[
   {
@@ -2355,20 +2319,20 @@
 
 </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>
+<section id="identifying-blank-nodes" class="informative">
+  <h3 id="h3_identifying-blank-nodes" role="heading" aria-level="2"><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
+    being able to uniquely identify the <a href="#dfn-node" title="node" class="tref internalDFN">node</a> with an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.
+    This type of node is called a <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">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>)
+    In these situations, one can use <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifiers</a>,
+    which look like <a href="#dfn-iri" title="iri" class="tref internalDFN">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>
+    <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">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">{
    ...
@@ -2382,25 +2346,25 @@
 }</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
+    with an <a href="#dfn-iri" title="iri" class="tref internalDFN"><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 href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">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
+    If a developer finds that they refer to the <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank node</a> more than once,
+    they should consider naming the node using a dereferenceable <a href="#dfn-iri" title="iri" class="tref internalDFN"><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>,
+<section id="aliasing-keywords" class="informative">
+  <h3 id="h3_aliasing-keywords" role="heading" aria-level="2"><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 href="#dfn-keyword" title="keyword" class="tref internalDFN">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>
+    using only the JSON-LD <a href="#dfn-context" title="context" class="tref internalDFN">context</a>.</p>
 
   <div class="example"><div class="example-title"><span>Example 53</span>: Aliasing keywords</div><pre class="example">{
   "@context":
@@ -2415,15 +2379,15 @@
 }</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
+    <a href="#dfn-keyword" title="keyword" class="tref internalDFN">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>
+<section id="data-indexing" class="informative">
+  <h3 id="h3_data-indexing" role="heading" aria-level="2"><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
@@ -2431,14 +2395,14 @@
     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>
+  <p>JSON-LD introduces the notion of <a href="#dfn-index-map" title="index-map" class="tref internalDFN">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
+    to <a href="#dfn-iri" title="iri" class="tref internalDFN">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>@index</code> <a href="#dfn-keyword" title="keyword" class="tref internalDFN">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">{
@@ -2470,8 +2434,8 @@
   }
 }</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>,
+  <p>In the example above, the <strong>blogPost</strong> <a href="#dfn-term" title="term" class="tref internalDFN">term</a> has
+    been marked as an <a href="#dfn-index-map" title="index-map" class="tref internalDFN">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
@@ -2535,10 +2499,10 @@
   </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>]
+<section id="expanded-document-form" class="informative">
+  <h3 id="h3_expanded-document-form" role="heading" aria-level="2"><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 href="#bib-JSON-LD-API" class="bibref">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
@@ -2579,15 +2543,15 @@
     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
+<section id="compacted-document-form" class="informative">
+  <h3 id="h3_compacted-document-form" role="heading" aria-level="2"><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 href="#bib-JSON-LD-API" class="bibref">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>
+    of applying a developer-supplied context to shorten <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a>
+    to <a href="#dfn-term" title="term" class="tref internalDFN">terms</a> or <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">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>.
+    <a href="#dfn-string" title="string" class="tref internalDFN">strings</a> or <a href="#dfn-number" title="number" class="tref internalDFN">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>
@@ -2639,14 +2603,14 @@
     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
+<section id="flattened-document-form" class="informative">
+  <h3 id="h3_flattened-document-form" role="heading" aria-level="2"><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 href="#bib-JSON-LD-API" class="bibref">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>.
+    properties of a <a href="#dfn-node" title="node" class="tref internalDFN">node</a> in a single <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> and labels
+    all <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank nodes</a> with
+    <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">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>
 
@@ -2708,8 +2672,8 @@
     <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>
+<section id="embedding-json-ld-in-html-documents" class="informative">
+  <h3 id="h3_embedding-json-ld-in-html-documents" role="heading" aria-level="2"><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
@@ -2733,21 +2697,21 @@
     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
+  <p>If JSON-LD content is extracted as RDF [<cite><a href="#bib-RDF11-CONCEPTS" class="bibref">RDF11-CONCEPTS</a></cite>], it should be expanded into an
+    <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-dataset" title="rdf-dataset" class="tref externalDFN">RDF Dataset</a> using the
     <cite><a href="../json-ld-api/#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>
+    [<cite><a href="#bib-JSON-LD-API" class="bibref">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>
+<section id="data-model" class="normative">
+  <!--OddPage--><h2 id="h2_data-model" role="heading" aria-level="1"><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
+    defined by JSON in [<cite><a href="#bib-RFC4627" class="bibref">RFC4627</a></cite>], and the <dfn id="dfn-data-model" title="data-model">data model</dfn> which is
+    an extension of the RDF data model [<cite><a href="#bib-RDF11-CONCEPTS" class="bibref">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>
 
@@ -2755,150 +2719,150 @@
     following summary is provided:</p>
 
   <ul>
-    <li>A <dfn title="json-ld-document" id="dfn-json-ld-document">JSON-LD document</dfn> serializes a
+    <li>A <dfn id="dfn-json-ld-document" title="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
+      [<cite><a href="#bib-RDF11-CONCEPTS" class="bibref">RDF11-CONCEPTS</a></cite>], which is a collection of <a href="#dfn-graph" title="graph" class="tref internalDFN">graphs</a>
+      that comprises exactly one <dfn id="dfn-default-graph" title="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 id="dfn-named-graph" title="named-graph"><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-named-graph" class="externalDFN">named graphs</a></dfn>.</li>
+    <li>The <a href="#dfn-default-graph" title="default-graph" class="tref internalDFN">default graph</a> does not have a name and <em title="MAY" class="rfc2119">MAY</em> be empty.</li>
+    <li>Each <a href="#dfn-named-graph" title="named-graph" class="tref internalDFN">named graph</a> is a pair consisting of an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or
+      <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a> (the
+      <dfn id="dfn-graph-name" title="graph-name"><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-graph-name" class="externalDFN">graph name</a></dfn>)
+      and a <a href="#dfn-graph" title="graph" class="tref internalDFN">graph</a>. Whenever practical, the <a href="#dfn-graph-name" title="graph-name" class="tref internalDFN">graph name</a> <em title="SHOULD" class="rfc2119">SHOULD</em> be an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</li>
+    <li>A <dfn id="dfn-graph" title="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 href="#dfn-node" title="node" class="tref internalDFN">nodes</a>
+      connected by <a href="#dfn-edge" title="edge" class="tref internalDFN">edges</a>.</li>
+    <li>Every <dfn id="dfn-edge" title="edge">edge</dfn> has a direction associated with it and is labeled with
+      an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or a <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">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>
+      <dfn id="dfn-property" title="property"><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-property" class="externalDFN">properties</a></dfn>.
+      Whenever practical, an <a href="#dfn-edge" title="edge" class="tref internalDFN">edge</a> <em title="SHOULD" class="rfc2119">SHOULD</em> be labeled with an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</li>
+    <li>Every <dfn id="dfn-node" title="node"><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-node" class="externalDFN">node</a></dfn>
+      is an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank node</a>, a <a href="#dfn-json-ld-value" title="json-ld-value" class="tref internalDFN">JSON-LD value</a>,
+      or a <a href="#dfn-list" title="list" class="tref internalDFN">list</a>.</li>
+    <li>A <a href="#dfn-node" title="node" class="tref internalDFN">node</a> having an outgoing edge <em title="MUST" class="rfc2119">MUST</em> be an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or a
+      <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank node</a>.</li>
+    <li>A <a href="#dfn-graph" title="graph" class="tref internalDFN">graph</a> <em title="MUST NOT" class="rfc2119">MUST NOT</em> contain unconnected <a href="#dfn-node" title="node" class="tref internalDFN">nodes</a>,
+      i.e., nodes which are not connected by an <a href="#dfn-edge" title="edge" class="tref internalDFN">edge</a> to any other <a href="#dfn-node" title="node" class="tref internalDFN">node</a>.</li>
+    <li>An <dfn id="dfn-iri" title="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
+      defined in [<cite><a href="#bib-RFC3987" class="bibref">RFC3987</a></cite>]. <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a> used within a
+      <a href="#dfn-graph" title="graph" class="tref internalDFN">graph</a> <em title="SHOULD" class="rfc2119">SHOULD</em> return a Linked Data document describing
+      the resource denoted by that <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> when being dereferenced.</li>
+    <li>A <dfn id="dfn-blank-node" title="blank-node"><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-blank-node" class="externalDFN">blank node</a></dfn>
+      is a <a href="#dfn-node" title="node" class="tref internalDFN">node</a> which is neither an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
+      nor a <a href="#dfn-json-ld-value" title="json-ld-value" class="tref internalDFN">JSON-LD value</a>, nor a <a href="#dfn-list" title="list" class="tref internalDFN">list</a>. A blank node <em title="MAY" class="rfc2119">MAY</em> be identified
+      using a <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a>.</li>
+    <li>A <dfn id="dfn-blank-node-identifier" title="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 href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank node</a> within
+      the scope of a <a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">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
+    <li>A <dfn id="dfn-json-ld-value" title="json-ld-value">JSON-LD value</dfn> is a <a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">typed value</a>, a <a href="#dfn-string" title="string" class="tref internalDFN">string</a> (which is interpreted
+      as <a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">typed value</a> with type <code>xsd:string</code>), a <a href="#dfn-number" title="number" class="tref internalDFN">number</a>
+      (<a href="#dfn-number" title="number" class="tref internalDFN">numbers</a> with a non-zero fractional part, i.e., the result of a modulo‑1 operation,
+      are interpreted as <a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">typed values</a> with type <code>xsd:double</code>, all other
+      <a href="#dfn-number" title="number" class="tref internalDFN">numbers</a> are interpreted as <a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">typed values</a>
+      with type <code>xsd:integer</code>), <a href="#dfn-true" title="true" class="tref internalDFN">true</a> or <a href="#dfn-false" title="false" class="tref internalDFN">false</a> (which are interpreted as
+      <a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">typed values</a> with type <code>xsd:boolean</code>),
+      or a <a href="#dfn-language-tagged-string" title="language-tagged-string" class="tref internalDFN">language-tagged string</a>.</li>
+    <li>A <dfn id="dfn-typed-value" title="typed-value">typed value</dfn> consists of a value, which is a string, and a type, which is an
+      <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</li>
+    <li>A <dfn id="dfn-language-tagged-string" title="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 href="#bib-BCP47" class="bibref">BCP47</a></cite>].
+      The language tag <em title="MUST" class="rfc2119">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>
+      of [<cite><a href="#bib-BCP47" class="bibref">BCP47</a></cite>].</li>
+    <li>A <dfn id="dfn-list" title="list">list</dfn> is a sequence of zero or more <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a>,
+      <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank nodes</a>, and <a href="#dfn-json-ld-value" title="json-ld-value" class="tref internalDFN">JSON-LD values</a>.
+      <a href="#dfn-list" title="list" class="tref internalDFN">Lists</a> are interpreted as
+      <a href="http://www.w3.org/TR/rdf11-mt/#rdf-collections" class="externalDFN">RDF list structures</a> [<cite><a href="#bib-RDF11-MT" class="bibref">RDF11-MT</a></cite>].</li>
   </ul>
 
-  <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>
+  <p><a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">JSON-LD documents</a> <em title="MAY" class="rfc2119">MAY</em> contain data
+    that cannot be represented by the <a href="#dfn-data-model" title="data-model" class="tref internalDFN">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>
+    <a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">JSON-LD document</a> is being processed. One result of this rule
+    is that properties which are not mapped to an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
+    a <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank node</a>, or <a href="#dfn-keyword" title="keyword" class="tref internalDFN">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>
+<section id="json-ld-grammar" class="normative">
+  <!--OddPage--><h2 id="h2_json-ld-grammar" role="heading" aria-level="1"><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_9"><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
+  <p>A <a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">JSON-LD document</a> <em title="MUST" class="rfc2119">MUST</em> be a valid JSON document as described
+    in [<cite><a href="#bib-RFC4627" class="bibref">RFC4627</a></cite>].</p>
+
+  <p>A <a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">JSON-LD document</a> <em title="MUST" class="rfc2119">MUST</em> be a single <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a>
+    or an <a href="#dfn-array" title="array" class="tref internalDFN">array</a> whose elements are each
+    <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node objects</a> at the top level.</p>
+
+  <p>In contrast to JSON, in JSON-LD the keys in <a href="#dfn-json-object" title="json-object" class="tref internalDFN">objects</a>
+    <em title="MUST" class="rfc2119">MUST</em> be unique.</p>
+
+  <div class="note"><div id="h_note_9" role="heading" aria-level="2" class="note-title"><span>Note</span></div><p class="">JSON-LD allows <a href="#dfn-keyword" title="keyword" class="tref internalDFN">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 href="#dfn-keyword" title="keyword" class="tref internalDFN">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 <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>. For example, if the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>
+    defines the <a href="#dfn-term" title="term" class="tref internalDFN">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
+    Note that <a href="#dfn-keyword" title="keyword" class="tref internalDFN">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
+  <section id="terms" class="normative">
+    <h3 id="h3_terms" role="heading" aria-level="2"><span class="secno">8.1 </span>Terms</h3>
+
+    <p>A <dfn id="dfn-term" title="term">term</dfn> is a short-hand <a href="#dfn-string" title="string" class="tref internalDFN">string</a> that expands
+      to an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or a <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a>.</p>
+
+    <p>A <a href="#dfn-term" title="term" class="tref internalDFN">term</a> <em title="MUST NOT" class="rfc2119">MUST NOT</em> equal any of the JSON-LD
+      <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keywords</a>.</p>
+
+    <p>To avoid forward-compatibility issues, a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> <em title="SHOULD NOT" class="rfc2119">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
+      additional <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keywords</a>. Furthermore, the term <em title="MUST NOT" class="rfc2119">MUST NOT</em>
+      be an empty <a href="#dfn-string" title="string" class="tref internalDFN">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>
+      on mapping <a href="#dfn-term" title="term" class="tref internalDFN">terms</a> to <a href="#dfn-iri" title="iri" class="tref internalDFN">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>
+  <section id="node-objects" class="normative">
+    <h3 id="h3_node-objects" role="heading" aria-level="2"><span class="secno">8.2 </span>Node Objects</h3>
+
+    <p>A <dfn id="dfn-node-object" title="node-object">node object</dfn> represents zero or more properties of a
+      <a href="#dfn-node" title="node" class="tref internalDFN">node</a> in the <a href="#dfn-graph" title="graph" class="tref internalDFN">graph</a> serialized by the
+      <a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">JSON-LD document</a>. A <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> is a
+      <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> if it exists outside of a JSON-LD
+      <a href="#dfn-context" title="context" class="tref internalDFN">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
+      <li>it is not the top-most <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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
+    <p>The <a href="#dfn-property" title="property" class="tref internalDFN">properties</a> of a <a href="#dfn-node" title="node" class="tref internalDFN">node</a> in
+      a <a href="#dfn-graph" title="graph" class="tref internalDFN">graph</a> may be spread among different
+      <a href="#dfn-node-object" title="node-object" class="tref internalDFN">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>
+      <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node objects</a> need to be merged to create the
+      properties of the resulting <a href="#dfn-node" title="node" class="tref internalDFN">node</a>.</p>
+
+    <p>A <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> <em title="MUST" class="rfc2119">MUST</em> be a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a>. All keys
+      which are not <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a>,
+      <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact IRIs</a>, <a href="#dfn-term" title="term" class="tref internalDFN">terms</a>
+      valid in the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, or one of the following
+      <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keywords</a> <em title="MUST" class="rfc2119">MUST</em> be ignored when processed:</p>
 
     <ul>
       <li><code>@context</code>,</li>
@@ -2909,269 +2873,269 @@
       <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>).
+    <p>If the <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> contains the <code>@context</code>
+      key, its value <em title="MUST" class="rfc2119">MUST</em> be <a href="#dfn-null" title="null" class="tref internalDFN">null</a>, an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
+      a <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-context-definition" title="context-definition" class="tref internalDFN">context definition</a>, or
+      an <a href="#dfn-array" title="array" class="tref internalDFN">array</a> composed of any of these.</p>
+
+    <p>If the <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> contains the <code>@id</code> key,
+      its value <em title="MUST" class="rfc2119">MUST</em> be an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
+      or a <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> (including
+      <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">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,
+    <p>If the <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> contains the <code>@graph</code>
+      key, its value <em title="MUST" class="rfc2119">MUST</em> be
+      a <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> or
+      an <a href="#dfn-array" title="array" class="tref internalDFN">array</a> of zero or more <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node objects</a>.
+      If the <a href="#dfn-node-object" title="node-object" class="tref internalDFN">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>
+      <code>@graph</code> values. As a special case, if a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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
+      <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> is the root of the JSON-LD document, the
+      <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> is not treated as a <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a>; this
+      is used as a way of defining <a href="#dfn-node-object" title="node-object" class="tref internalDFN">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.
+      <a href="#dfn-context" title="context" class="tref internalDFN">context</a> to be defined which is shared by all of the constituent
+      <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node objects</a>.</p>
+
+    <p>If the <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> contains the <code>@type</code>
+      key, its value <em title="MUST" class="rfc2119">MUST</em> be either an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a
+      <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
+      (including <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifiers</a>),
+      a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> defined in the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> expanding into an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, or
+      an <a href="#dfn-array" title="array" class="tref internalDFN">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
+    <p>If the <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> contains the <code>@reverse</code> key,
+      its value <em title="MUST" class="rfc2119">MUST</em> be a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> containing members representing reverse
+      properties. Each value of such a reverse property <em title="MUST" class="rfc2119">MUST</em> be an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
+      a <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a>,
+      a <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> or an <a href="#dfn-array" title="array" class="tref internalDFN">array</a> containing a combination of these.</p>
+
+    <p>If the <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> contains the <code>@index</code> key,
+      its value <em title="MUST" class="rfc2119">MUST</em> be a <a href="#dfn-string" title="string" class="tref internalDFN">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>
+    <p>Keys in a <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> that are not
+      <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keywords</a> <em title="MAY" class="rfc2119">MAY</em> expand to an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
+      using the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>. The values associated with keys that expand
+      to an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> <em title="MUST" class="rfc2119">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>
+      <li><a href="#dfn-string" title="string" class="tref internalDFN">string</a>,</li>
+      <li><a href="#dfn-number" title="number" class="tref internalDFN">number</a>,</li>
+      <li><a href="#dfn-true" title="true" class="tref internalDFN">true</a>,</li>
+      <li><a href="#dfn-false" title="false" class="tref internalDFN">false</a>,</li>
+      <li><a href="#dfn-null" title="null" class="tref internalDFN">null</a>,</li>
+      <li><a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a>,</li>
+      <li><a href="#dfn-value-object" title="value-object" class="tref internalDFN">value object</a>,</li>
+      <li><a href="#dfn-list-object" title="list-object" class="tref internalDFN">list object</a>,</li>
+      <li><a href="#dfn-set-object" title="set-object" class="tref internalDFN">set object</a>,</li>
+      <li>an <a href="#dfn-array" title="array" class="tref internalDFN">array</a> of zero or more of the possibilities above,</li>
+      <li>a <a href="#dfn-language-map" title="language-map" class="tref internalDFN">language map</a>, or </li>
+      <li>an <a href="#dfn-index-map" title="index-map" class="tref internalDFN">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
+  <section id="value-objects" class="normative">
+    <h3 id="h3_value-objects" role="heading" aria-level="2"><span class="secno">8.3 </span>Value Objects</h3>
+
+    <p>A <dfn id="dfn-value-object" title="value-object">value object</dfn> is used to explicitly associate a type or a
+      language with a value to create a <a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">typed value</a> or a <a href="#dfn-language-tagged-string" title="language-tagged-string" class="tref internalDFN">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
+    <p>A <a href="#dfn-value-object" title="value-object" class="tref internalDFN">value object</a> <em title="MUST" class="rfc2119">MUST</em> be a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> containing the
+      <code>@value</code> key. It <em title="MAY" class="rfc2119">MAY</em> also contain a <code>@type</code>,
+      a <code>@language</code>, an <code>@index</code>, or an <code>@context</code> key but <em title="MUST NOT" class="rfc2119">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>
+      A <a href="#dfn-value-object" title="value-object" class="tref internalDFN">value object</a> <em title="MUST NOT" class="rfc2119">MUST NOT</em> contain any other keys that expand to an
+      <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> or <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>.</p>
+
+    <p>The value associated with the <code>@value</code> key <em title="MUST" class="rfc2119">MUST</em> be either a
+      <a href="#dfn-string" title="string" class="tref internalDFN">string</a>, a <a href="#dfn-number" title="number" class="tref internalDFN">number</a>, <a href="#dfn-true" title="true" class="tref internalDFN">true</a>,
+      <a href="#dfn-false" title="false" class="tref internalDFN">false</a> or <a href="#dfn-null" title="null" class="tref internalDFN">null</a>.</p>
+
+    <p>The value associated with the <code>@type</code> key <em title="MUST" class="rfc2119">MUST</em> be a
+      <a href="#dfn-term" title="term" class="tref internalDFN">term</a>, a <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
+      an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, or <a href="#dfn-null" title="null" class="tref internalDFN">null</a>.</p>
+
+    <p>The value associated with the <code>@language</code> key <em title="MUST" class="rfc2119">MUST</em> have the
+      lexical form described in [<cite><a href="#bib-BCP47" class="bibref">BCP47</a></cite>], or be <a href="#dfn-null" title="null" class="tref internalDFN">null</a>.</p>
+
+    <p>The value associated with the <code>@index</code> key <em title="MUST" class="rfc2119">MUST</em> be a
+      <a href="#dfn-string" title="string" class="tref internalDFN">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>
+      for more information on <a href="#dfn-value-object" title="value-object" class="tref internalDFN">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
+  <section id="lists-and-sets" class="normative">
+    <h3 id="h3_lists-and-sets" role="heading" aria-level="2"><span class="secno">8.4 </span>Lists and Sets</h3>
+
+    <p>A <a href="#dfn-list" title="list" class="tref internalDFN">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
+      <a href="#dfn-array" title="array" class="tref internalDFN">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
+      will always be represented in the form of an <a href="#dfn-array" title="array" class="tref internalDFN">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
+    <p>A <dfn id="dfn-list-object" title="list-object">list object</dfn> <em title="MUST" class="rfc2119">MUST</em> be a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> that contains no
+      keys that expand to an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> or <a href="#dfn-keyword" title="keyword" class="tref internalDFN">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
+    <p>A <dfn id="dfn-set-object" title="set-object">set object</dfn> <em title="MUST" class="rfc2119">MUST</em> be a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> that contains no
+      keys that expand to an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> or <a href="#dfn-keyword" title="keyword" class="tref internalDFN">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>
+      <em title="MUST" class="rfc2119">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>
+      <li><a href="#dfn-string" title="string" class="tref internalDFN">string</a>,</li>
+      <li><a href="#dfn-number" title="number" class="tref internalDFN">number</a>,</li>
+      <li><a href="#dfn-true" title="true" class="tref internalDFN">true</a>,</li>
+      <li><a href="#dfn-false" title="false" class="tref internalDFN">false</a>,</li>
+      <li><a href="#dfn-null" title="null" class="tref internalDFN">null</a>,</li>
+      <li><a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a>,</li>
+      <li><a href="#dfn-value-object" title="value-object" class="tref internalDFN">value object</a>, or</li>
+      <li>an <a href="#dfn-array" title="array" class="tref internalDFN">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
+  <section id="language-maps" class="normative">
+    <h3 id="h3_language-maps" role="heading" aria-level="2"><span class="secno">8.5 </span>Language Maps</h3>
+
+    <p>A <dfn id="dfn-language-map" title="language-map">language map</dfn> is used to associate a language with a value in a
+      way that allows easy programmatic access. A <a href="#dfn-language-map" title="language-map" class="tref internalDFN">language map</a> may be
+      used as a term value within a <a href="#dfn-node-object" title="node-object" class="tref internalDFN">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 and the values <em class="rfc2119" title="MUST">MUST</em> be any of the following types:</p>
+      <a href="#dfn-language-map" title="language-map" class="tref internalDFN">language map</a> <em title="MUST" class="rfc2119">MUST</em> be <a href="#dfn-string" title="string" class="tref internalDFN">strings</a> representing
+      [<cite><a href="#bib-BCP47" class="bibref">BCP47</a></cite>] language codes and the values <em title="MUST" class="rfc2119">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>
+      <li><a href="#dfn-null" title="null" class="tref internalDFN">null</a>,</li>
+      <li><a href="#dfn-string" title="string" class="tref internalDFN">string</a>, or</li>
+      <li>an <a href="#dfn-array" title="array" class="tref internalDFN">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,
+  <section id="index-maps" class="normative">
+    <h3 id="h3_index-maps" role="heading" aria-level="2"><span class="secno">8.6 </span>Index Maps</h3>
+
+    <p>An <dfn id="dfn-index-map" title="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
+      An <a href="#dfn-index-map" title="index-map" class="tref internalDFN">index map</a> may
+      be used as a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> value within a <a href="#dfn-node-object" title="node-object" class="tref internalDFN">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
+      The values of the members of an <a href="#dfn-index-map" title="index-map" class="tref internalDFN">index map</a> <em title="MUST" class="rfc2119">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>
+      <li><a href="#dfn-string" title="string" class="tref internalDFN">string</a>,</li>
+      <li><a href="#dfn-number" title="number" class="tref internalDFN">number</a>,</li>
+      <li><a href="#dfn-true" title="true" class="tref internalDFN">true</a>,</li>
+      <li><a href="#dfn-false" title="false" class="tref internalDFN">false</a>,</li>
+      <li><a href="#dfn-null" title="null" class="tref internalDFN">null</a>,</li>
+      <li><a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a>,</li>
+      <li><a href="#dfn-value-object" title="value-object" class="tref internalDFN">value object</a>,</li>
+      <li><a href="#dfn-list-object" title="list-object" class="tref internalDFN">list object</a>,</li>
+      <li><a href="#dfn-set-object" title="set-object" class="tref internalDFN">set object</a>,</li>
+      <li>an <a href="#dfn-array" title="array" class="tref internalDFN">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>,
+<section id="context-definitions" class="normative">
+  <h3 id="h3_context-definitions" role="heading" aria-level="2"><span class="secno">8.7 </span>Context Definitions</h3>
+
+  <p>A <dfn id="dfn-context-definition" title="context-definition">context definition</dfn> defines a <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a> in a
+    <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a>.</p>
+
+  <p>A <a href="#dfn-context-definition" title="context-definition" class="tref internalDFN">context definition</a> <em title="MUST" class="rfc2119">MUST</em> be a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> whose
+    keys <em title="MUST" class="rfc2119">MUST</em> either be <a href="#dfn-term" title="term" class="tref internalDFN">terms</a>,
+    <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact IRIs</a>, <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute IRIs</a>,
+    or the <a href="#dfn-keyword" title="keyword" class="tref internalDFN">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>
+  <p>If the <a href="#dfn-context-definition" title="context-definition" class="tref internalDFN">context definition</a> has a <code>@language</code> key,
+    its value <em title="MUST" class="rfc2119">MUST</em> have the lexical form described in [<cite><a href="#bib-BCP47" class="bibref">BCP47</a></cite>] or be <a href="#dfn-null" title="null" class="tref internalDFN">null</a>.</p>
+
+  <p>If the <a href="#dfn-context-definition" title="context-definition" class="tref internalDFN">context definition</a> has a <code>@base</code> key,
+    its value <em title="MUST" class="rfc2119">MUST</em> be an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
+    or <a href="#dfn-null" title="null" class="tref internalDFN">null</a>.</p>
+
+  <p>If the <a href="#dfn-context-definition" title="context-definition" class="tref internalDFN">context definition</a> has a <code>@vocab</code> key,
+    its value <em title="MUST" class="rfc2119">MUST</em> be a <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
+    a <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a>, a <a href="#dfn-term" title="term" class="tref internalDFN">term</a>, or <a href="#dfn-null" title="null" class="tref internalDFN">null</a>.</p>
+
+  <p>The value of keys that are not <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keywords</a> <em title="MUST" class="rfc2119">MUST</em> be either an
+    <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-term" title="term" class="tref internalDFN">term</a>,
+    a <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a>, a <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>, <a href="#dfn-null" title="null" class="tref internalDFN">null</a>,
+    or an <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">expanded term definition</a>.</p>
+
+  <p>An <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">expanded term definition</a> is used to describe the mapping
+    between a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> and its expanded identifier, as well as other
+    properties of the value associated with the <a href="#dfn-term" title="term" class="tref internalDFN">term</a> when it is
+    used as key in a <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a>.</p>
+
+  <p>An <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">expanded term definition</a> <em title="MUST" class="rfc2119">MUST</em> be a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">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>,
+    <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">expanded term definition</a> <em title="SHOULD NOT" class="rfc2119">SHOULD NOT</em> contain any other keys.</p>
+
+  <p>If an <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">expanded term definition</a> has an <code>@reverse</code> member,
+    it <em title="MUST NOT" class="rfc2119">MUST NOT</em> have an <code>@id</code> member at the same time. If an
+    <code>@container</code> member exists, its value <em title="MUST" class="rfc2119">MUST</em> be <a href="#dfn-null" title="null" class="tref internalDFN">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>
+  <p>If the term being defined is not a <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> or
+    <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> and the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> does not have an
+    <code>@vocab</code> mapping, the <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">expanded term definition</a> <em title="MUST" class="rfc2119">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,
+  <p>If the <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">expanded term definition</a> contains the <code>@id</code>
+    <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>, its value <em title="MUST" class="rfc2119">MUST</em> be <a href="#dfn-null" title="null" class="tref internalDFN">null</a>, an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
+    a <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a>, a <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-term" title="term" class="tref internalDFN">term</a>,
+    or a <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>.</p>
+
+  <p>If the <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">expanded term definition</a> contains the <code>@type</code>
+    <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>, its value <em title="MUST" class="rfc2119">MUST</em> be an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a
+    <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-term" title="term" class="tref internalDFN">term</a>, <a href="#dfn-null" title="null" class="tref internalDFN">null</a>, or the one of the
+    <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keywords</a> <code>@id</code> or <code>@vocab</code>.</p>
+
+  <p>If the <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">expanded term definition</a> contains the <code>@language</code> <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>,
+    its value <em title="MUST" class="rfc2119">MUST</em> have the lexical form described in [<cite><a href="#bib-BCP47" class="bibref">BCP47</a></cite>] or be <a href="#dfn-null" title="null" class="tref internalDFN">null</a>.</p>
+
+  <p>If the <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">expanded term definition</a> contains the <code>@container</code>
+    <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>, its value <em title="MUST" class="rfc2119">MUST</em> be either <code>@list</code>, <code>@set</code>,
+    <code>@language</code>, <code>@index</code>, or be <a href="#dfn-null" title="null" class="tref internalDFN">null</a>. If the value
+    is <code>@language</code>, when the <a href="#dfn-term" title="term" class="tref internalDFN">term</a> is used outside of the
+    <code>@context</code>, the associated value <em title="MUST" class="rfc2119">MUST</em> be a <a href="#dfn-language-map" title="language-map" class="tref internalDFN">language map</a>.
+    If the value is <code>@index</code>, when the <a href="#dfn-term" title="term" class="tref internalDFN">term</a> is used outside of
+    the <code>@context</code>, the associated value <em title="MUST" class="rfc2119">MUST</em> be an
+    <a href="#dfn-index-map" title="index-map" class="tref internalDFN">index map</a>.</p>
+
+  <p><a href="#dfn-term" title="term" class="tref internalDFN">Terms</a> <em title="MUST NOT" class="rfc2119">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>
 
@@ -3180,89 +3144,89 @@
 
 </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>
+<section id="relationship-to-rdf" class="normative">
+  <!--OddPage--><h2 id="h2_relationship-to-rdf" role="heading" aria-level="1"><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
+    <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-concrete-rdf-syntax" title="concrete-rdf-syntax" class="tref externalDFN">concrete RDF syntax</a>
+    as described in [<cite><a href="#bib-RDF11-CONCEPTS" class="bibref">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>.
+    <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset" title="generalized-rdf-datasets" class="tref externalDFN">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
+    <li>In JSON-LD <a href="#dfn-property" title="property" class="tref internalDFN">properties</a> can be
+      <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a> or <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank nodes</a>
+      whereas in RDF properties (predicates) have to be <a href="#dfn-iri" title="iri" class="tref internalDFN">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>
+      <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset" title="generalized-rdf-datasets" class="tref externalDFN">generalized RDF Datasets</a>.</li>
+    <li>In JSON-LD <a href="#dfn-list" title="list" class="tref internalDFN">lists</a> are part of the data model
+      whereas in RDF they are part of a vocabulary, namely [<cite><a href="#bib-RDF-SCHEMA" class="bibref">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>]
+      (<a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">typed values</a>) or <em>language-tagged strings</em>
+      (<a href="#dfn-language-tagged-string" title="language-tagged-string" class="tref internalDFN">language-tagged strings</a>) whereas
+      JSON-LD also supports JSON's native data types, i.e., <a href="#dfn-number" title="number" class="tref internalDFN">number</a>,
+      <a href="#dfn-string" title="string" class="tref internalDFN">strings</a>, and the boolean values <a href="#dfn-true" title="true" class="tref internalDFN">true</a>
+      and <a href="#dfn-false" title="false" class="tref internalDFN">false</a>. The JSON-LD Processing Algorithms and API specification [<cite><a href="#bib-JSON-LD-API" class="bibref">JSON-LD-API</a></cite>]
       defines the <a href="../json-ld-api/#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,
+    interpreted as RDF as described in RDF 1.1 Concepts [<cite><a href="#bib-RDF11-CONCEPTS" class="bibref">RDF11-CONCEPTS</a></cite>].</p>
+
+  <p>For authors and developers working with <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank nodes</a>
+    as <a href="#dfn-property" title="property" class="tref internalDFN">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
+    <li>If the developer wishes to use <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank nodes</a>
+      as <a href="#dfn-property" title="property" class="tref internalDFN">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>,
+      <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset" title="generalized-rdf-dataset" class="tref externalDFN">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>
+      Deserialize JSON-LD to RDF algorithm [<cite><a href="#bib-JSON-LD-API" class="bibref">JSON-LD-API</a></cite>] to do so. Note that a
+      <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset" title="generalized-rdf-dataset" class="tref externalDFN">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
+    <li>If the author or developer wishes to use <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank nodes</a>
+      as <a href="#dfn-property" title="property" class="tref internalDFN">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>,
+      <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-dataset" title="rdf-dataset" class="tref externalDFN">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>,
+      <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank nodes</a> used as
+      <a href="#dfn-property" title="property" class="tref internalDFN">properties</a> to <a href="#dfn-iri" title="iri" class="tref internalDFN">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>
+      of [<cite><a href="#bib-RDF11-CONCEPTS" class="bibref">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>
+    specification [<cite><a href="#bib-JSON-LD-API" class="bibref">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.
+    <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset" title="generalized-rdf-datasets" class="tref externalDFN">generalized RDF Datasets</a>, it can
+    also be used as a <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-source" title="rdf-graph-source" class="tref externalDFN">RDF graph source</a>.
+    In that case, a consumer <em title="MUST" class="rfc2119">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_10"><span>Note</span></div><p class="">Publishers supporting both dataset and graph syntaxes have to ensure that
+  <div class="note"><div id="h_note_10" role="heading" aria-level="2" class="note-title"><span>Note</span></div><p class="">Publishers supporting both dataset and graph syntaxes have to ensure that
     the primary data is stored in the default graph to enable consumers that do not support
     datasets to process the information.</p></div>
 
-  <section 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>
+  <section id="serializing-deserializing-rdf" class="informative">
+    <h3 id="h3_serializing-deserializing-rdf" role="heading" aria-level="2"><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="../json-ld-api/#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>].
+      in the JSON-LD Processing Algorithms and API specification [<cite><a href="#bib-JSON-LD-API" class="bibref">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>
 
@@ -3272,13 +3236,13 @@
     <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
+        as <a href="#dfn-iri" title="iri" class="tref internalDFN">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
+        <a href="#dfn-node-object" title="node-object" class="tref internalDFN">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>
+      <li>Turn each <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> into a series of
+        <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple" title="rdf-triples" class="tref externalDFN">RDF triples</a>.</li>
     </ol>
 
     <p>For example, consider the following JSON-LD document in compact form:</p>
@@ -3325,7 +3289,7 @@
 ]</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
+      each <a href="#dfn-node-object" title="node-object" class="tref internalDFN">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" .
@@ -3337,14 +3301,14 @@
 
     <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>
+      matching the triples from RDF, using a single <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a>
+      for all triples having a common subject, and a single <a href="#dfn-property" title="property" class="tref internalDFN">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>
+<section id="relationship-to-other-linked-data-formats" class="appendix informative">
+  <!--OddPage--><h2 id="h2_relationship-to-other-linked-data-formats" role="heading" aria-level="1"><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,
@@ -3352,14 +3316,14 @@
     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>]
+  <section id="turtle" class="informative">
+    <h3 id="h3_turtle" role="heading" aria-level="2"><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 href="#bib-TURTLE" class="bibref">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>
+      <h4 role="heading" aria-level="3" id="prefix-definitions">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>
@@ -3383,10 +3347,10 @@
     </section>
 
     <section>
-      <h4 id="embedding-1" aria-level="3" role="heading">Embedding</h4>
+      <h4 role="heading" aria-level="3" id="embedding-1">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>
+        <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">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; .
 
@@ -3412,17 +3376,17 @@
     </section>
 
     <section>
-      <h4 id="conversion-of-native-data-types" aria-level="3" role="heading">Conversion of native data types</h4>
+      <h4 role="heading" aria-level="3" id="conversion-of-native-data-types">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>]
+        to allow full round-tripping, the JSON-LD Processing Algorithms and API specification [<cite><a href="#bib-JSON-LD-API" class="bibref">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
+        counterparts. <a href="#dfn-number" title="number" class="tref internalDFN">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
+        <a href="#dfn-true" title="true" class="tref internalDFN">true</a> and <a href="#dfn-false" title="false" class="tref internalDFN">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">{
@@ -3445,7 +3409,7 @@
     </section>
 
     <section>
-      <h4 id="lists" aria-level="3" role="heading">Lists</h4>
+      <h4 role="heading" aria-level="3" id="lists">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; .
@@ -3470,11 +3434,11 @@
     </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>
+  <section id="rdfa" class="informative">
+    <h3 id="h3_rdfa" role="heading" aria-level="2"><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>
+      homepages in RDFa [<cite><a href="#bib-RDFA-CORE" class="bibref">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="highlight">prefix="foaf: http://xmlns.com/foaf/0.1/"</span>&gt;
    &lt;ul&gt;
@@ -3490,7 +3454,7 @@
    &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
+    <p>An example JSON-LD implementation using a single <a href="#dfn-context" title="context" class="tref internalDFN">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">{
@@ -3519,18 +3483,18 @@
 }</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>
+  <section id="microformats" class="informative">
+    <h3 id="h3_microformats" role="heading" aria-level="2"><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>
+      how Microformats [<cite><a href="#bib-MICROFORMATS" class="bibref">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>
+      <a href="#dfn-context" title="context" class="tref internalDFN">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>
 
@@ -3551,10 +3515,10 @@
 }</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
+  <section id="microdata" class="informative">
+    <h3 id="h3_microdata" role="heading" aria-level="2"><span class="secno">A.4 </span>Microdata</h3><p><em>This section is non-normative.</em></p>
+
+    <p>The HTML Microdata [<cite><a href="#bib-MICRODATA" class="bibref">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
@@ -3583,7 +3547,7 @@
 
     <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>
+      instead refer to items by their full <a href="#dfn-iri" title="iri" class="tref internalDFN"><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">[
   {
@@ -3611,8 +3575,8 @@
   </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>
+<section id="iana-considerations" class="appendix normative">
+  <!--OddPage--><h2 id="h2_iana-considerations" role="heading" aria-level="1"><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>
@@ -3631,41 +3595,41 @@
         <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>].
+            constraints or conventions that apply to a JSON-LD document according [<cite><a href="#bib-RFC6906" class="bibref">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
+            representation. The <code>profile</code> parameter <em title="MAY" class="rfc2119">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
+            If the profile parameter is given, a server <em title="SHOULD" class="rfc2119">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
+            It is <em title="RECOMMENDED" class="rfc2119">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>
+            please refer to [<cite><a href="#bib-RFC6906" class="bibref">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.
+            the URI <code>http://www.w3.org/ns/json-ld#expanded</code> <em title="SHOULD" class="rfc2119">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.
+            the URI <code>http://www.w3.org/ns/json-ld#compacted</code> <em title="SHOULD" class="rfc2119">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>
+            the URI <code>http://www.w3.org/ns/json-ld#flattened</code> <em title="SHOULD" class="rfc2119">SHOULD</em> be used.
+            Please note that, according [<cite><a href="#bib-HTTP11" class="bibref">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>
+            of [<cite><a href="#bib-RFC3987" class="bibref">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>]
+    <dd>See [<cite><a href="#bib-RFC4627" class="bibref">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
+        directed graphs, the serialization <em title="SHOULD NOT" class="rfc2119">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
@@ -3676,11 +3640,11 @@
         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>],
+        JSON-LD Processing Algorithms and API specification [<cite><a href="#bib-JSON-LD-API" class="bibref">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
+        they may modify the JSON-LD <a href="#dfn-active-context" title="active-context" class="tref internalDFN">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>
@@ -3724,11 +3688,11 @@
   <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>
+    [<cite><a href="#bib-RDF11-CONCEPTS" class="bibref">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>
+<section id="acknowledgements" class="appendix informative">
+  <!--OddPage--><h2 id="h2_acknowledgements" role="heading" aria-level="1"><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
@@ -3768,18 +3732,18 @@
 
 
 
-<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>
+<section rel="bibo:chapter" resource="#references" typeof="bibo:Chapter" class="appendix" id="references"><!--OddPage--><h2 id="h2_references" role="heading" aria-level="1"><span class="secno">D. </span>References</h2><section rel="bibo:chapter" resource="#normative-references" typeof="bibo:Chapter" id="normative-references"><h3 id="h3_normative-references" role="heading" aria-level="2"><span class="secno">D.1 </span>Normative references</h3><dl about="" class="bibliography"><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-20130723/">RDF 1.1 Concepts and Abstract Syntax.</a></cite> 23 July 2013. W3C Last Call Working Draft (work in progress). URL: <a href="http://www.w3.org/TR/2013/WD-rdf11-concepts-20130723/">http://www.w3.org/TR/2013/WD-rdf11-concepts-20130723/</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-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></dl></section><section rel="bibo:chapter" resource="#informative-references" typeof="bibo:Chapter" id="informative-references"><h3 id="h3_informative-references" role="heading" aria-level="2"><span class="secno">D.2 </span>Informative references</h3><dl about="" class="bibliography"><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://www.w3.org/TR/2013/CR-json-ld-api-20130910/">JSON-LD 1.0 Processing Algorithms and API</a>.</cite> W3C Candidate Recommendation (work in progress). URL: <a href="http://www.w3.org/TR/2013/CR-json-ld-api-20130910/">http://www.w3.org/TR/2013/CR-json-ld-api-20130910/</a>. The latest edition is available at <a href="http://www.w3.org/TR/json-ld-api/">http://www.w3.org/TR/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-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-20130723/">RDF 1.1 Semantics.</a></cite> 23 July 2013. W3C Last Call Working Draft (work in progress). URL: <a href="http://www.w3.org/TR/2013/WD-rdf11-mt-20130723/">http://www.w3.org/TR/2013/WD-rdf11-mt-20130723/</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>. 22 August 2013. W3C Recommendation. URL: <a href="http://www.w3.org/TR/rdfa-core/">http://www.w3.org/TR/rdfa-core/</a>
--- a/spec/latest/json-ld-api/index.html	Tue Oct 22 11:09:02 2013 -0400
+++ b/spec/latest/json-ld-api/index.html	Tue Oct 22 18:58:43 2013 +0200
@@ -14,9 +14,9 @@
       doRDFa: "1.1",
       // specification status (e.g. WD, LCWD, NOTE, etc.). If in doubt use ED.
       specStatus:           "ED",
-      // publishDate:          "2013-08-22",
+
       // if you wish the publication date to be other than today, set this
-      //publishDate:          "2012-12-25",
+      //publishDate:          "2013-11-05",
       copyrightStart:       "2010",
 
       // the specification's short name, as in http://www.w3.org/TR/short-name/
@@ -24,18 +24,19 @@
 
       // if there is a previously published draft, uncomment this and set its YYYY-MM-DD date
       // and its maturity status
-      previousPublishDate:  "2013-05-16",
-      previousMaturity:     "LC",
-      previousURI:          "http://www.w3.org/TR/2013/WD-json-ld-api-20130516/",
+      previousPublishDate:  "2013-09-10",
+      previousMaturity:     "CR",
+      previousDiffURI:      "http://www.w3.org/TR/2013/CR-json-ld-api-20130910/",
 
       // if there a publicly available Editor's Draft, this is the link
-      edDraftURI:           "http://json-ld.org/spec/latest/json-ld-api/index.html",
+      edDraftURI:           "http://dvcs.w3.org/hg/json-ld/raw-file/default/spec/latest/json-ld-api/index.html",
 
       testSuiteURI:         "http://www.w3.org/2013/json-ld-tests/",
 
       // if this is a LCWD, uncomment and set the end of its review period
-      // lcEnd: "2009-08-05",
-      crEnd: "2013-09-19",
+      lcEnd: "2013-06-06",
+      crEnd: "2013-10-01",
+      prEnd: "2013-12-05",
 
       // if you want to have extra CSS, append them to this list
       // it is recommended that the respec.css stylesheet be kept
@@ -87,7 +88,7 @@
       wgPatentURI:  "http://www.w3.org/2004/01/pp-impl/46168/status",
       maxTocLevel: 2,
       preProcess: [ preProc ],
-      // alternateFormats: [ {uri: "diff-20130411.html", label: "diff to previous version"} ]
+      //alternateFormats: [ {uri: "diff-20130910.html", label: "diff to previous version"} ]
   };
 //]]>
 </script>
@@ -129,11 +130,11 @@
 </section>
 
 <section id="sotd">
-  <p>This document has been under development for over 30 months in the
+  <p>This document has been under development for over 31 months in the
     JSON for Linking Data Community Group. The document has 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>
+    development, review, and changes during the course of the last 31 months.</p>
 
   <p>There are several independent
     <a href="http://json-ld.org/test-suite/reports/">interoperable implementations</a> of
@@ -144,7 +145,7 @@
     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>
+    next two months.</p>
 
   <p>There are a number of ways that one may participate in the development of
     this specification:</p>
--- a/spec/latest/json-ld/index.html	Tue Oct 22 11:09:02 2013 -0400
+++ b/spec/latest/json-ld/index.html	Tue Oct 22 18:58:43 2013 +0200
@@ -13,9 +13,9 @@
 
       doRDFa: "1.1",
       // specification status (e.g. WD, LCWD, NOTE, etc.). If in doubt use ED.
-      specStatus:           "PR",
+      specStatus:           "ED",
       // if you wish the publication date to be other than today, set this
-      publishDate:          "2013-11-05",
+      //publishDate:          "2013-11-05",
       copyrightStart:       "2010",
 
       // the specification's short name, as in http://www.w3.org/TR/short-name/
@@ -32,8 +32,8 @@
       edDraftURI:           "http://dvcs.w3.org/hg/json-ld/raw-file/default/spec/latest/json-ld/index.html",
 
       // if this is a LCWD, uncomment and set the end of its review period
-      lcEnd: "2009-08-05",
-      crEnd: "2013-09-19",
+      lcEnd: "2013-05-10",
+      crEnd: "2013-10-01",
       prEnd: "2013-12-05",
 
       issueBase: "https://github.com/json-ld/json-ld.org/issues/",
@@ -86,7 +86,7 @@
       wgPatentURI:  "http://www.w3.org/2004/01/pp-impl/46168/status",
       maxTocLevel: 2,
       preProcess: [ preProc ],
-      alternateFormats: [ {uri: "diff-20130910.html", label: "diff to previous version"} ]
+      //alternateFormats: [ {uri: "diff-20130910.html", label: "diff to previous version"} ]
   };
 //]]>
 </script>
@@ -110,11 +110,11 @@
 </section>
 
 <section id="sotd">
-  <p>This document has been under development for over 30 months in the
+  <p>This document has been under development for over 31 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>
+    during the course of the last 31 months.</p>
 
   <p>There are several independent
     <a href="http://json-ld.org/test-suite/reports/">interoperable implementations</a> of
@@ -125,7 +125,7 @@
     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>
+    next two months.</p>
 
   <p>There are a number of ways that one may participate in the development of
     this specification:</p>