--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/spec/ED/json-ld-syntax/20120522/diff-20120426.html Tue May 22 14:26:11 2012 -0400
@@ -0,0 +1,16274 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML+RDFa 1.1//EN' 'http://www.w3.org/MarkUp/DTD/xhtml-rdfa-2.dtd'>
+<html dir="ltr" about="" property="dcterms:language" content="en" xmlns="http://www.w3.org/1999/xhtml" prefix='bibo: http://purl.org/ontology/bibo/' typeof="bibo:Document">
+<head>
+<title>JSON-LD Syntax 1.0</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+
+<!--
+ === NOTA BENE ===
+ For the three scripts below, if your spec resides on dev.w3 you can check them
+ out in the same tree and use relative links so that they'll work offline,
+ -->
+
+
+
+<style type="text/css">
+.diff { font-weight:bold; color:#0a3; }
+ol.algorithm.update { margin-left: 2em; }
+ol.algorithm.update>li { list-style-type: none; }
+ol.algorithm.update>li>span.list-number {
+ display:block;
+ float: left;
+ margin-left: -3.5em;
+}
+</style>
+<style type="text/css">
+/*****************************************************************
+ * ReSpec CSS
+ * Robin Berjon (robin at berjon dot com)
+ * v0.05 - 2009-07-31
+ *****************************************************************/
+
+
+/* --- 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;
+}
+
+code {
+ color: #ff4500;
+}
+
+
+/* --- 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 {
+ font-weight: bold;
+ color: #005a9c;
+}
+
+.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 {
+ color: #005a9c;
+}
+.idlMethName {
+ color: #ff4500;
+}
+.idlMethName a {
+ color: #ff4500;
+ border-bottom: 1px dotted #ff4500;
+ text-decoration: none;
+}
+
+/*.idlParam*/
+.idlParamType {
+ color: #005a9c;
+}
+.idlParamName {
+ font-style: italic;
+}
+
+.extAttr {
+ color: #666;
+}
+
+/*.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.fields, dl.dictionary-members {
+ margin-left: 2em;
+}
+
+.attributes dt, .methods dt, .constants dt, .fields dt, .dictionary-members dt {
+ font-weight: normal;
+}
+
+.attributes dt code, .methods dt code, .constants 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;
+}
+
+.attributes dd, .methods dd, .constants 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%;
+}
+
+/* --- TOC --- */
+.toc a {
+ text-decoration: none;
+}
+
+a .secno {
+ color: #000;
+}
+
+/* --- 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;
+}
+
+/* --- EXAMPLES --- */
+pre.example {
+ border-top: 1px solid #ff4500;
+ border-bottom: 1px solid #ff4500;
+ padding: 1em;
+ margin-top: 1em;
+}
+
+pre.example::before {
+ content: "Example";
+ display: block;
+ width: 150px;
+ background: #ff4500;
+ color: #fff;
+ font-family: initial;
+ padding: 3px;
+ font-weight: bold;
+ margin: -1em 0 1em -1em;
+}
+
+/* --- EDITORIAL NOTES --- */
+.issue {
+ padding: 1em;
+ margin: 1em 0em 0em;
+ border: 1px solid #f00;
+ background: #ffc;
+}
+
+.issue::before {
+ content: "Issue";
+ display: block;
+ width: 150px;
+ margin: -1.5em 0 0.5em 0;
+ font-weight: bold;
+ border: 1px solid #f00;
+ background: #fff;
+ padding: 3px 1em;
+}
+
+.note {
+ margin: 1em 0em 0em;
+ padding: 1em;
+ border: 2px solid #cff6d9;
+ background: #e2fff0;
+}
+
+.note::before {
+ content: "Note";
+ display: block;
+ width: 150px;
+ margin: -1.5em 0 0.5em 0;
+ font-weight: bold;
+ border: 1px solid #cff6d9;
+ background: #fff;
+ padding: 3px 1em;
+}
+
+/* --- Best Practices --- */
+div.practice {
+ border: solid #bebebe 1px;
+ margin: 2em 1em 1em 2em;
+}
+
+span.practicelab {
+ margin: 1.5em 0.5em 1em 1em;
+ font-weight: bold;
+ font-style: italic;
+}
+
+span.practicelab { background: #dfffff; }
+
+span.practicelab {
+ position: relative;
+ padding: 0 0.5em;
+ top: -1.5em;
+}
+
+p.practicedesc {
+ margin: 1.5em 0.5em 1em 1em;
+}
+
+@media screen {
+ p.practicedesc {
+ position: relative;
+ top: -2em;
+ padding: 0;
+ margin: 1.5em 0.5em -1em 1em;
+ }
+}
+
+/* --- SYNTAX HIGHLIGHTING --- */
+pre.sh_sourceCode {
+ background-color: white;
+ color: black;
+ font-style: normal;
+ font-weight: normal;
+}
+
+pre.sh_sourceCode .sh_keyword { color: #005a9c; font-weight: bold; } /* language keywords */
+pre.sh_sourceCode .sh_type { color: #666; } /* basic types */
+pre.sh_sourceCode .sh_usertype { color: teal; } /* user defined types */
+pre.sh_sourceCode .sh_string { color: red; font-family: monospace; } /* strings and chars */
+pre.sh_sourceCode .sh_regexp { color: orange; font-family: monospace; } /* regular expressions */
+pre.sh_sourceCode .sh_specialchar { color: #ffc0cb; font-family: monospace; } /* e.g., \n, \t, \\ */
+pre.sh_sourceCode .sh_comment { color: #A52A2A; font-style: italic; } /* comments */
+pre.sh_sourceCode .sh_number { color: purple; } /* literal numbers */
+pre.sh_sourceCode .sh_preproc { color: #00008B; font-weight: bold; } /* e.g., #include, import */
+pre.sh_sourceCode .sh_symbol { color: blue; } /* e.g., *, + */
+pre.sh_sourceCode .sh_function { color: black; font-weight: bold; } /* function calls and declarations */
+pre.sh_sourceCode .sh_cbracket { color: red; } /* block brackets (e.g., {, }) */
+pre.sh_sourceCode .sh_todo { font-weight: bold; background-color: #00FFFF; } /* TODO and FIXME */
+
+/* Predefined variables and functions (for instance glsl) */
+pre.sh_sourceCode .sh_predef_var { color: #00008B; }
+pre.sh_sourceCode .sh_predef_func { color: #00008B; font-weight: bold; }
+
+/* for OOP */
+pre.sh_sourceCode .sh_classname { color: teal; }
+
+/* line numbers (not yet implemented) */
+pre.sh_sourceCode .sh_linenum { display: none; }
+
+/* Internet related */
+pre.sh_sourceCode .sh_url { color: blue; text-decoration: underline; font-family: monospace; }
+
+/* for ChangeLog and Log files */
+pre.sh_sourceCode .sh_date { color: blue; font-weight: bold; }
+pre.sh_sourceCode .sh_time, pre.sh_sourceCode .sh_file { color: #00008B; font-weight: bold; }
+pre.sh_sourceCode .sh_ip, pre.sh_sourceCode .sh_name { color: #006400; }
+
+/* for Prolog, Perl... */
+pre.sh_sourceCode .sh_variable { color: #006400; }
+
+/* for LaTeX */
+pre.sh_sourceCode .sh_italics { color: #006400; font-style: italic; }
+pre.sh_sourceCode .sh_bold { color: #006400; font-weight: bold; }
+pre.sh_sourceCode .sh_underline { color: #006400; text-decoration: underline; }
+pre.sh_sourceCode .sh_fixed { color: green; font-family: monospace; }
+pre.sh_sourceCode .sh_argument { color: #006400; }
+pre.sh_sourceCode .sh_optionalargument { color: purple; }
+pre.sh_sourceCode .sh_math { color: orange; }
+pre.sh_sourceCode .sh_bibtex { color: blue; }
+
+/* for diffs */
+pre.sh_sourceCode .sh_oldfile { color: orange; }
+pre.sh_sourceCode .sh_newfile { color: #006400; }
+pre.sh_sourceCode .sh_difflines { color: blue; }
+
+/* for css */
+pre.sh_sourceCode .sh_selector { color: purple; }
+pre.sh_sourceCode .sh_property { color: blue; }
+pre.sh_sourceCode .sh_value { color: #006400; font-style: italic; }
+
+/* other */
+pre.sh_sourceCode .sh_section { color: black; font-weight: bold; }
+pre.sh_sourceCode .sh_paren { color: red; }
+pre.sh_sourceCode .sh_attribute { color: #006400; }
+
+</style><style type="text/css">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><link href="http://www.w3.org/StyleSheets/TR/w3c-unofficial" rel="stylesheet" type="text/css" charset="utf-8" /><script type="text/javascript" src="http://s3.amazonaws.com/green-turtle/RDFa.0.13.0.js"></script><meta name="green-turtle-rdfa-message" content="{ "type": "status", "loaded": true, "count": 150 }" /><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 style="display: inherit; ">
+<div class="head">
+<p>
+</p>
+<h1 property="dcterms:title" class="title" id="title">
+JSON-LD
+Syntax
+1.0
+</h1>
+<h2 property="bibo:subtitle" id="subtitle">
+A
+Context-based
+JSON
+Serialization
+for
+Linking
+Data
+</h2>
+<h2 property="dcterms:issued" datatype="xsd:dateTime" content="2012-05-22T07:54:18+0000" id="unofficial-draft-22-may-2012">
+Unofficial
+Draft
+<del class="diff-old">26
+April
+</del>
+<ins class="diff-chg">22
+May
+</ins>
+2012
+</h2>
+<dl>
+<dt>
+Editors:
+</dt>
+<dd rel="bibo:editor" inlist="">
+<span typeof="foaf:Person">
+<a rel="foaf:homepage" property="foaf:name" content="Manu Sporny" href="http://manu.sporny.org/">
+Manu
+Sporny
+</a>,
+<a rel="foaf:workplaceHomepage" href="http://digitalbazaar.com/">
+Digital
+Bazaar
+</a>
+</span>
+</dd>
+<dd rel="bibo:editor" inlist="">
+<span typeof="foaf:Person">
+<a rel="foaf:homepage" property="foaf:name" content="Gregg Kellogg" href="http://greggkellogg.net/">
+Gregg
+Kellogg
+</a>,
+<a rel="foaf:workplaceHomepage" href="http://kellogg-assoc.com/">
+Kellogg
+Associates
+</a>
+</span>
+</dd>
+<dd rel="bibo:editor" inlist="">
+<span typeof="foaf:Person">
+<a rel="foaf:homepage" property="foaf:name" content="Markus Lanthaler" href="http://www.markus-lanthaler.com/">
+Markus
+Lanthaler
+</a>,
+<a rel="foaf:workplaceHomepage" href="http://www.tugraz.at/">
+Graz
+University
+of
+Technology
+</a>
+</span>
+</dd>
+<dt>
+Authors:
+</dt>
+<dd rel="dcterms:contributor">
+<span typeof="foaf:Person">
+<a rel="foaf:homepage" property="foaf:name" content="Manu Sporny" href="http://digitalbazaar.com/">
+Manu
+Sporny
+</a>,
+<a rel="foaf:workplaceHomepage" href="http://digitalbazaar.com/">
+Digital
+Bazaar
+</a>
+</span>
+</dd>
+<dd rel="dcterms:contributor">
+<span typeof="foaf:Person">
+<a rel="foaf:homepage" property="foaf:name" content="Dave Longley" href="http://digitalbazaar.com/">
+Dave
+Longley
+</a>,
+<a rel="foaf:workplaceHomepage" href="http://digitalbazaar.com/">
+Digital
+Bazaar
+</a>
+</span>
+</dd>
+<dd rel="dcterms:contributor">
+<span typeof="foaf:Person">
+<a rel="foaf:homepage" property="foaf:name" content="Gregg Kellogg" href="http://greggkellogg.net/">
+Gregg
+Kellogg
+</a>,
+<a rel="foaf:workplaceHomepage" href="http://kellogg-assoc.com/">
+Kellogg
+Associates
+</a>
+</span>
+</dd>
+<dd rel="dcterms:contributor">
+<span typeof="foaf:Person">
+<a rel="foaf:homepage" property="foaf:name" content="Markus Lanthaler" href="http://www.markus-lanthaler.com/">
+Markus
+Lanthaler
+</a>,
+<a rel="foaf:workplaceHomepage" href="http://www.tugraz.at/">
+Graz
+University
+of
+Technology
+</a>
+</span>
+</dd>
+<dd rel="dcterms:contributor">
+<span typeof="foaf:Person">
+<a rel="foaf:homepage" property="foaf:name" content="Mark Birbeck" href="http://webbackplane.com/">
+Mark
+Birbeck
+</a>,
+<a rel="foaf:workplaceHomepage" href="http://webbackplane.com/">
+Backplane
+Ltd.
+</a>
+</span>
+</dd>
+</dl>
+<p>
+This
+document
+is
+also
+available
+in
+this
+non-normative
+format:
+<a href="diff-20120426.html">
+diff
+to
+previous
+version
+</a>.
+</p>
+<p class="copyright">
+This
+document
+is
+licensed
+under
+a
+<a class="subfoot" href="http://creativecommons.org/licenses/by/3.0/" rel="license">
+Creative
+Commons
+Attribution
+3.0
+License
+</a>.
+</p>
+<hr />
+</div>
+<div id="abstract" class="introductory section" property="dcterms:abstract" datatype="" typeof="bibo:Chapter" resource="#abstract" rel="bibo:chapter">
+<h2>
+Abstract
+</h2>
+<p>
+JSON
+has
+proven
+to
+be
+a
+highly
+useful
+object
+serialization
+and
+messaging
+format.
+In
+an
+attempt
+to
+harmonize
+the
+representation
+of
+<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
+Linked
+Data
+</a>
+in
+JSON,
+this
+specification
+outlines
+a
+common
+JSON
+representation
+format
+for
+expressing
+directed
+graphs;
+mixing
+both
+Linked
+Data
+and
+non-Linked
+Data
+in
+a
+single
+document.
+</p>
+</div>
+<div id="sotd" class="introductory section" typeof="bibo:Chapter" resource="#sotd" rel="bibo:chapter">
+<h2>
+Status
+of
+This
+Document
+</h2>
+<p>
+This
+document
+is
+merely
+a
+public
+working
+draft
+of
+a
+potential
+specification.
+It
+has
+no
+official
+standing
+of
+any
+kind
+and
+does
+not
+represent
+the
+support
+or
+consensus
+of
+any
+standards
+organisation.
+</p>
+<p>
+This
+document
+is
+an
+experimental
+work
+in
+progress.
+</p>
+</div>
+<div id="toc" typeof="bibo:Chapter" resource="#toc" rel="bibo:chapter" class="section">
+<h2 class="introductory">
+Table
+of
+Contents
+</h2>
+<ul class="toc">
+<li class="tocline">
+<a href="#introduction" class="tocxref">
+<span class="secno">
+1.
+</span>
+Introduction
+</a>
+<ul class="toc">
+<li class="tocline">
+<a href="#how-to-read-this-document" class="tocxref">
+<span class="secno">
+1.1
+</span>
+How
+to
+Read
+this
+Document
+</a>
+</li>
+<li class="tocline">
+<a href="#syntax-tokens-and-keywords" class="tocxref">
+<span class="secno">
+1.2
+</span>
+Syntax
+Tokens
+and
+Keywords
+</a>
+</li>
+<li class="tocline">
+<a href="#contributing" class="tocxref">
+<span class="secno">
+1.3
+</span>
+Contributing
+</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="#basic-concepts" class="tocxref">
+<span class="secno">
+3.
+</span>
+Basic
+Concepts
+</a>
+<ul class="toc">
+<li class="tocline">
+<a href="#linking-data" class="tocxref">
+<span class="secno">
+3.1
+</span>
+Linking
+Data
+</a>
+<ul class="toc">
+<li class="tocline">
+<a href="#the-context" class="tocxref">
+<span class="secno">
+3.1.1
+</span>
+The
+Context
+</a>
+</li>
+<li class="tocline">
+<a href="#from-json-to-json-ld" class="tocxref">
+<span class="secno">
+3.1.2
+</span>
+From
+JSON
+to
+JSON-LD
+</a>
+</li>
+</ul>
+</li>
+<li class="tocline">
+<a href="#iris" class="tocxref">
+<span class="secno">
+3.2
+</span>
+IRIs
+</a>
+</li>
+<li class="tocline">
+<a href="#identifying-the-subject" class="tocxref">
+<span class="secno">
+3.3
+</span>
+Identifying
+the
+Subject
+</a>
+</li>
+<li class="tocline">
+<a href="#specifying-the-type" class="tocxref">
+<span class="secno">
+3.4
+</span>
+Specifying
+the
+Type
+</a>
+</li>
+<li class="tocline">
+<a href="#string-internationalization" class="tocxref">
+<span class="secno">
+3.5
+</span>
+String
+Internationalization
+</a>
+</li>
+<li class="tocline">
+<a href="#sets-and-lists" class="tocxref">
+<span class="secno">
+3.6
+</span>
+Sets
+and
+Lists
+</a>
+</li>
+</ul>
+</li>
+<li class="tocline">
+<a href="#advanced-concepts" class="tocxref">
+<span class="secno">
+4.
+</span>
+Advanced
+Concepts
+</a>
+<ul class="toc">
+<li class="tocline">
+<a href="#typed-values" class="tocxref">
+<span class="secno">
+4.1
+</span>
+Typed
+Values
+</a>
+</li>
+<li class="tocline">
+<a href="#compact-iris" class="tocxref">
+<span class="secno">
+4.2
+</span>
+Compact
+IRIs
+</a>
+</li>
+<li class="tocline">
+<a href="#external-contexts" class="tocxref">
+<span class="secno">
+4.3
+</span>
+External
+Contexts
+</a>
+</li>
+<li class="tocline">
+<a href="#referencing-contexts-from-json-documents" class="tocxref">
+<span class="secno">
+4.4
+</span>
+Referencing
+Contexts
+from
+JSON
+Documents
+</a>
+</li>
+<li class="tocline">
+<a href="#expanded-term-definition" class="tocxref">
+<span class="secno">
+4.5
+</span>
+Expanded
+Term
+Definition
+</a>
+</li>
+<li class="tocline">
+<a href="#type-coercion" class="tocxref">
+<span class="secno">
+4.6
+</span>
+Type
+Coercion
+</a>
+</li>
+<li class="tocline">
+<a href="#iri-expansion-within-a-context" class="tocxref">
+<span class="secno">
+4.7
+</span>
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+Expansion
+Within
+a
+Context
+</a>
+</li>
+<li class="tocline">
+<a href="#embedding" class="tocxref">
+<span class="secno">
+4.8
+</span>
+Embedding
+</a>
+</li>
+<li class="tocline">
+<a href="#named-graphs" class="tocxref">
+<span class="secno">
+4.9
+</span>
+Named
+Graphs
+</a>
+</li>
+<li class="tocline">
+<a href="#identifying-unlabeled-nodes" class="tocxref">
+<span class="secno">
+4.10
+</span>
+Identifying
+Unlabeled
+Nodes
+</a>
+</li>
+<li class="tocline">
+<a href="#aliasing-keywords" class="tocxref">
+<span class="secno">
+4.11
+</span>
+Aliasing
+Keywords
+</a>
+</li>
+<li class="tocline">
+<a href="#expanded-document-form" class="tocxref">
+<span class="secno">
+4.12
+</span>
+<del class="diff-old">Expansion
+</del>
+<ins class="diff-chg">Expanded
+Document
+Form
+</ins>
+</a>
+</li>
+<li class="tocline">
+<a href="#compact-document-form" class="tocxref">
+<span class="secno">
+4.13
+</span>
+<del class="diff-old">Compaction
+</del>
+<ins class="diff-chg">Compact
+Document
+Form
+</ins>
+</a>
+</li>
+<del class="diff-old">4.14
+Framing
+</del>
+</ul>
+</li>
+<li class="tocline">
+<a href="#json-ld-grammar" class="tocxref">
+<span class="secno">
+<del class="diff-old">4.14.1
+</del>
+<ins class="diff-chg">A.
+</ins>
+</span>
+<del class="diff-old">Framing
+Operators
+</del>
+<ins class="diff-chg">JSON-LD
+Grammar
+</ins>
+</a>
+</li>
+<li class="tocline">
+<a href="#markup-examples" class="tocxref">
+<span class="secno">
+<del class="diff-old">A.
+</del>
+<ins class="diff-chg">B.
+</ins>
+</span>
+Markup
+Examples
+</a>
+<ul class="toc">
+<li class="tocline">
+<a href="#turtle" class="tocxref">
+<span class="secno">
+<del class="diff-old">A.1
+</del>
+<ins class="diff-chg">B.1
+</ins>
+</span>
+Turtle
+</a>
+<ul class="toc">
+<li class="tocline">
+<a href="#prefix-definitions" class="tocxref">
+<span class="secno">
+<del class="diff-old">A.1.1
+</del>
+<ins class="diff-chg">B.1.1
+</ins>
+</span>
+Prefix
+definitions
+</a>
+</li>
+<li class="tocline">
+<a href="#embedding-1" class="tocxref">
+<span class="secno">
+<del class="diff-old">A.1.2
+</del>
+<ins class="diff-chg">B.1.2
+</ins>
+</span>
+Embedding
+</a>
+</li>
+<li class="tocline">
+<a href="#lists" class="tocxref">
+<span class="secno">
+<del class="diff-old">A.1.3
+</del>
+<ins class="diff-chg">B.1.3
+</ins>
+</span>
+Lists
+</a>
+</li>
+</ul>
+</li>
+<li class="tocline">
+<a href="#rdfa" class="tocxref">
+<span class="secno">
+<del class="diff-old">A.2
+</del>
+<ins class="diff-chg">B.2
+</ins>
+</span>
+RDFa
+</a>
+</li>
+<li class="tocline">
+<a href="#microformats" class="tocxref">
+<span class="secno">
+<del class="diff-old">A.3
+</del>
+<ins class="diff-chg">B.3
+</ins>
+</span>
+Microformats
+</a>
+</li>
+<li class="tocline">
+<a href="#microdata" class="tocxref">
+<span class="secno">
+<del class="diff-old">A.4
+</del>
+<ins class="diff-chg">B.4
+</ins>
+</span>
+Microdata
+</a>
+</li>
+</ul>
+</li>
+<li class="tocline">
+<del class="diff-old">B.
+Linked
+Data
+C.
+Mashing
+Up
+Vocabularies
+</del>
+<a href="#iana-considerations" class="tocxref">
+<span class="secno">
+<del class="diff-old">D.
+</del>
+<ins class="diff-chg">C.
+</ins>
+</span>
+IANA
+Considerations
+</a>
+</li>
+<li class="tocline">
+<a href="#acknowledgements" class="tocxref">
+<span class="secno">
+<del class="diff-old">E.
+</del>
+<ins class="diff-chg">D.
+</ins>
+</span>
+Acknowledgements
+</a>
+</li>
+<li class="tocline">
+<a href="#references" class="tocxref">
+<span class="secno">
+<del class="diff-old">F.
+</del>
+<ins class="diff-chg">E.
+</ins>
+</span>
+References
+</a>
+<ul class="toc">
+<li class="tocline">
+<a href="#normative-references" class="tocxref">
+<span class="secno">
+<del class="diff-old">F.1
+</del>
+<ins class="diff-chg">E.1
+</ins>
+</span>
+Normative
+references
+</a>
+</li>
+<li class="tocline">
+<a href="#informative-references" class="tocxref">
+<span class="secno">
+<del class="diff-old">F.2
+</del>
+<ins class="diff-chg">E.2
+</ins>
+</span>
+Informative
+references
+</a>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="informative section" id="introduction" typeof="bibo:Chapter" resource="#introduction" rel="bibo:chapter">
+<h2>
+<span class="secno">
+1.
+</span>
+Introduction
+</h2>
+<p>
+<em>
+This
+section
+is
+non-normative.
+</em>
+</p>
+<p>
+JSON,
+as
+specified
+in
+[
+<cite>
+<a class="bibref" rel="biblioentry" href="#bib-RFC4627">
+RFC4627
+</a>
+</cite>
+],
+is
+a
+simple
+language
+for
+representing
+data
+on
+the
+Web.
+<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
+Linked
+Data
+</a>
+is
+a
+technique
+for
+creating
+a
+<del class="diff-old">graph
+</del>
+<ins class="diff-chg">network
+</ins>
+of
+<del class="diff-old">interlinked
+</del>
+<ins class="diff-chg">inter-connected
+</ins>
+data
+across
+different
+<ins class="diff-new">Web
+</ins>
+documents
+<del class="diff-old">or
+</del>
+<ins class="diff-chg">and
+</ins>
+Web
+sites.
+<del class="diff-old">Data
+entities
+are
+described
+</del>
+<ins class="diff-chg">A
+</ins><em><ins class="diff-chg">
+thing
+</ins></em><ins class="diff-chg">
+in
+this
+data
+network
+is
+typically
+identified
+</ins>
+using
+<ins class="diff-new">an
+</ins>
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+<del class="diff-old">s,
+</del>
+<ins class="diff-chg">(Internationalized
+Resource
+Identifier),
+</ins>
+which
+<del class="diff-old">are
+</del>
+<ins class="diff-chg">is
+</ins>
+typically
+<del class="diff-old">dereferencable
+</del>
+<ins class="diff-chg">dereference-able,
+</ins>
+and
+thus
+may
+be
+used
+to
+find
+more
+information
+about
+<del class="diff-old">an
+entity,
+creating
+</del>
+<ins class="diff-chg">the
+</ins><em><ins class="diff-chg">
+thing
+</ins></em>.<ins class="diff-chg">
+The
+</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
+IRI
+</ins></abbr></a><ins class="diff-chg">
+allows
+</ins>
+a
+<del class="diff-old">"Web
+of
+Knowledge".
+JSON-LD
+is
+intended
+</del>
+<ins class="diff-chg">software
+program
+</ins>
+to
+<del class="diff-old">be
+a
+simple
+publishing
+method
+for
+expressing
+not
+only
+Linked
+Data
+</del>
+<ins class="diff-chg">start
+at
+one
+</ins><em><ins class="diff-chg">
+thing
+</ins></em><ins class="diff-chg">
+and
+follow
+links
+to
+other
+</ins><em><ins class="diff-chg">
+things
+</ins></em>
+in
+<del class="diff-old">JSON,
+but
+also
+for
+adding
+semantics
+</del>
+<ins class="diff-chg">order
+</ins>
+to
+<del class="diff-old">existing
+JSON.
+</del>
+<ins class="diff-chg">learn
+more
+about
+all
+of
+the
+things
+described
+on
+the
+Web.
+</ins>
+</p>
+<p>
+JSON-LD
+is
+designed
+as
+a
+lightweight
+syntax
+that
+can
+be
+used
+to
+express
+<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
+Linked
+Data
+</a>.
+It
+is
+primarily
+intended
+to
+be
+a
+way
+to
+use
+Linked
+Data
+in
+Javascript
+and
+other
+Web-based
+programming
+environments.
+It
+is
+also
+useful
+when
+building
+<del class="diff-old">interoperable
+</del>
+<ins class="diff-chg">inter-operable
+</ins>
+Web
+services
+and
+when
+storing
+Linked
+Data
+in
+JSON-based
+document
+storage
+engines.
+It
+is
+practical
+and
+designed
+to
+be
+as
+simple
+as
+possible,
+utilizing
+the
+large
+number
+of
+JSON
+parsers
+and
+libraries
+available
+today.
+</p>
+<p>
+The
+syntax
+does
+not
+necessarily
+require
+applications
+to
+change
+their
+JSON,
+but
+allows
+one
+to
+easily
+add
+meaning
+by
+simply
+adding
+or
+referencing
+a
+context.
+The
+syntax
+is
+designed
+to
+not
+disturb
+already
+deployed
+systems
+running
+on
+JSON,
+but
+provide
+a
+smooth
+upgrade
+path
+from
+JSON
+to
+<del class="diff-old">JSON-LD
+with
+added
+semantics.
+</del>
+<ins class="diff-chg">JSON-LD.
+</ins>
+Finally,
+the
+format
+is
+intended
+to
+be
+easy
+to
+parse,
+efficient
+to
+generate,
+and
+only
+requires
+a
+very
+small
+memory
+footprint
+in
+order
+to
+operate.
+</p>
+<div id="how-to-read-this-document" typeof="bibo:Chapter" resource="#how-to-read-this-document" rel="bibo:chapter" class="section">
+<h3>
+<span class="secno">
+1.1
+</span>
+How
+to
+Read
+this
+Document
+</h3>
+<p>
+This
+document
+is
+a
+detailed
+specification
+for
+a
+serialization
+of
+Linked
+Data
+in
+JSON.
+The
+document
+is
+primarily
+intended
+for
+the
+following
+audiences:
+</p>
+<ul>
+<li>
+Software
+developers
+that
+want
+to
+encode
+Linked
+Data
+in
+a
+way
+that
+is
+cross-language
+compatible
+via
+JSON.
+</li>
+<li>
+Software
+developers
+that
+want
+to
+understand
+the
+design
+decisions
+and
+language
+syntax
+for
+JSON-LD.
+</li>
+<li>
+Software
+developers
+that
+want
+to
+implement
+processors
+and
+APIs
+for
+JSON-LD.
+</li>
+</ul>
+<p>
+This
+specification
+does
+not
+describe
+the
+programming
+interfaces
+for
+the
+JSON-LD
+Syntax.
+The
+specification
+that
+describes
+the
+programming
+interfaces
+for
+JSON-LD
+documents
+is
+the
+JSON-LD
+Application
+Programming
+Interface
+[
+<cite>
+<a class="bibref" rel="biblioentry" href="#bib-JSON-LD-API">
+JSON-LD-API
+</a>
+</cite>
+].
+</p>
+<p>
+To
+understand
+the
+basics
+in
+this
+specification
+you
+must
+first
+be
+familiar
+with
+JSON,
+which
+is
+detailed
+in
+[
+<cite>
+<a class="bibref" rel="biblioentry" href="#bib-RFC4627">
+RFC4627
+</a>
+</cite>
+].
+<del class="diff-old">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
+[
+ECMA-262
+]
+and
+WebIDL
+[
+WEBIDL
+].
+</del>
+</p>
+<p>
+JSON
+[
+<cite>
+<a class="bibref" rel="biblioentry" href="#bib-RFC4627">
+RFC4627
+</a>
+</cite>
+]
+defines
+several
+terms
+which
+are
+used
+throughout
+this
+document:
+</p>
+<dl>
+<dt>
+<dfn title="json_object" id="dfn-json_object">
+JSON
+object
+</dfn>
+</dt>
+<dd>
+An
+object
+structure
+is
+represented
+as
+a
+pair
+of
+curly
+brackets
+surrounding
+zero
+or
+more
+<del class="diff-old">name/value
+pairs
+(or
+members).
+</del>
+<ins class="diff-chg">name-value
+pairs.
+</ins>
+A
+name
+is
+a
+<a class="tref internalDFN" title="string" href="#dfn-string">
+string
+</a>.
+A
+single
+colon
+comes
+after
+each
+name,
+separating
+the
+name
+from
+the
+value.
+A
+single
+comma
+separates
+a
+value
+from
+a
+following
+name.
+The
+names
+within
+an
+object
+<em class="rfc2119" title="should">
+should
+</em>
+be
+unique.
+</dd>
+<dt>
+<dfn title="array" id="dfn-array">
+array
+</dfn>
+</dt>
+<dd>
+<del class="diff-old">An
+</del>
+<ins class="diff-chg">In
+JSON,
+an
+</ins>
+array
+is
+an
+<em>
+ordered
+</em>
+collection
+of
+values.
+An
+array
+<del class="diff-old">structure
+</del>
+is
+represented
+as
+square
+brackets
+surrounding
+zero
+or
+more
+values
+<del class="diff-old">(or
+elements).
+Elements
+</del>
+<ins class="diff-chg">that
+</ins>
+are
+separated
+by
+commas.
+<del class="diff-old">Within
+JSON-LD,
+</del>
+<ins class="diff-chg">While
+JSON-LD
+uses
+the
+same
+</ins>
+array
+<ins class="diff-new">representation
+as
+JSON,
+the
+collection
+is
+</ins><em><ins class="diff-new">
+unordered
+</ins></em><ins class="diff-new">
+by
+default.
+While
+</ins>
+order
+is
+<del class="diff-old">not
+</del>
+preserved
+<del class="diff-old">by
+default,
+</del>
+<ins class="diff-chg">in
+regular
+JSON
+arrays,
+it
+is
+not
+in
+regular
+JSON-LD
+arrays
+</ins>
+unless
+specific
+markup
+is
+provided
+(see
+<a href="#sets-and-lists">
+Sets
+and
+Lists
+</a>
+).
+<del class="diff-old">This
+is
+because
+the
+basic
+data
+model
+of
+JSON-LD
+is
+a
+linked
+data
+graph
+,
+which
+is
+inherently
+unordered.
+</del>
+</dd>
+<dt>
+<dfn title="string" id="dfn-string">
+string
+</dfn>
+</dt>
+<dd>
+A
+string
+is
+a
+sequence
+of
+zero
+or
+more
+Unicode
+<ins class="diff-new">(UTF-8)
+</ins>
+characters,
+wrapped
+in
+double
+quotes,
+using
+backslash
+<del class="diff-old">escapes.
+</del>
+<ins class="diff-chg">escapes
+(if
+necessary).
+</ins>
+A
+character
+is
+represented
+as
+a
+single
+character
+string.
+</dd>
+<dt>
+<dfn title="number" id="dfn-number">
+number
+</dfn>
+</dt>
+<dd>
+A
+number
+is
+is
+similar
+to
+that
+used
+in
+most
+programming
+languages,
+except
+that
+the
+octal
+and
+hexadecimal
+formats
+are
+not
+used
+and
+that
+leading
+zeros
+are
+not
+allowed.
+</dd>
+<dt>
+<dfn title="true" id="dfn-true">
+true
+</dfn>
+and
+<dfn title="false" id="dfn-false">
+false
+</dfn>
+</dt>
+<dd>
+Values
+that
+are
+used
+to
+express
+one
+of
+two
+possible
+boolean
+states.
+</dd>
+<dt>
+<dfn title="null" id="dfn-null">
+null
+</dfn>
+</dt>
+<dd>
+Unless
+otherwise
+specified,
+a
+JSON-LD
+processor
+<em class="rfc2119" title="must">
+must
+</em>
+act
+as
+if
+a
+key-value
+pair
+in
+the
+body
+of
+a
+JSON-LD
+document
+was
+never
+declared
+when
+the
+value
+equals
+<em>
+null
+</em>.
+If
+<code>
+@value
+</code>,
+<code>
+@list
+</code>,
+or
+<code>
+@set
+</code>
+is
+set
+to
+<em>
+null
+</em>
+in
+expanded
+form,
+then
+the
+entire
+JSON
+object
+is
+ignored.
+If
+<code>
+@context
+</code>
+is
+set
+to
+<em>
+null
+</em>,
+the
+<a class="tref internalDFN" title="active_context" href="#dfn-active_context">
+active
+context
+</a>
+is
+reset
+and
+when
+used
+within
+a
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>,
+it
+removes
+any
+definition
+associated
+with
+the
+key,
+unless
+otherwise
+specified.
+</dd>
+<dt>
+<dfn title="subject_definition" id="dfn-subject_definition">
+subject
+definition
+</dfn>
+</dt>
+<dd>
+A
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+</a>
+used
+to
+represent
+a
+<a class="tref internalDFN" title="subject" href="#dfn-subject">
+subject
+</a>
+and
+one
+or
+more
+properties
+of
+that
+subject.
+A
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+</a>
+is
+a
+subject
+definition
+if
+it
+does
+not
+contain
+they
+keys
+<code>
+@value
+</code>,
+<code>
+@list
+</code>
+or
+<code>
+@set
+</code>
+and
+it
+has
+one
+or
+more
+keys
+other
+than
+<code>
+@id
+</code>.
+</dd>
+<dt>
+<dfn title="subject_reference" id="dfn-subject_reference">
+subject
+reference
+</dfn>
+</dt>
+<dd>
+A
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+</a>
+used
+to
+reference
+a
+subject
+having
+only
+the
+<code>
+@id
+</code>
+key.
+</dd>
+</dl>
+<p>
+</p>
+</div>
+<div id="syntax-tokens-and-keywords" typeof="bibo:Chapter" resource="#syntax-tokens-and-keywords" rel="bibo:chapter" class="section">
+<h3>
+<span class="secno">
+1.2
+</span>
+Syntax
+Tokens
+and
+Keywords
+</h3>
+<p>
+JSON-LD
+specifies
+a
+number
+of
+syntax
+tokens
+and
+<dfn title="keyword" id="dfn-keyword">
+keywords
+</dfn>
+that
+are
+<del class="diff-old">using
+in
+all
+algorithms
+described
+in
+this
+section:
+</del>
+<ins class="diff-chg">a
+core
+part
+of
+the
+language:
+</ins>
+</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">
+term
+</a>
+s
+and
+help
+developers
+to
+express
+specific
+identifiers
+in
+a
+compact
+manner.
+The
+<code>
+@context
+</code>
+keyword
+is
+described
+in
+detail
+in
+the
+section
+titled
+<a href="#the-context">
+The
+Context
+</a>.
+</dd>
+<dt>
+<code>
+@graph
+</code>
+</dt>
+<dd>
+Used
+to
+explicitly
+express
+a
+<a class="tref internalDFN" title="linked_data_graph" href="#dfn-linked_data_graph">
+linked
+data
+graph
+</a>.
+</dd>
+<dt>
+<code>
+@id
+</code>
+</dt>
+<dd>
+Used
+to
+uniquely
+identify
+<em>
+things
+</em>
+that
+are
+being
+described
+in
+the
+document.
+This
+keyword
+is
+described
+in
+the
+section
+titled
+<a href="#identifying-the-subject">
+Identifying
+the
+Subject
+</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
+the
+sections
+titled
+<a href="#string-internationalization">
+String
+Internationalization
+</a>
+and
+<a href="#typed-values">
+Typed
+Values
+</a>.
+</dd>
+<dt>
+<code>
+@language
+</code>
+</dt>
+<dd>
+Used
+to
+specify
+the
+native
+language
+for
+a
+particular
+value
+or
+the
+default
+language
+of
+a
+JSON-LD
+document.
+This
+keyword
+is
+described
+in
+the
+section
+titled
+<a href="#string-internationalization">
+String
+Internationalization
+</a>.
+</dd>
+<dt>
+<code>
+@type
+</code>
+</dt>
+<dd>
+Used
+to
+set
+the
+data
+type
+of
+a
+<a class="tref internalDFN" title="subject" href="#dfn-subject">
+subject
+</a>
+or
+<a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">
+typed
+value
+</a>.
+This
+keyword
+is
+described
+in
+the
+section
+titled
+<a href="#typed-values">
+Typed
+Values
+</a>.
+</dd>
+<dt>
+<code>
+@container
+</code>
+</dt>
+<dd>
+Used
+to
+set
+the
+container
+of
+a
+particular
+value.
+This
+keyword
+is
+described
+in
+the
+section
+titled
+<a href="#sets-and-lists">
+Sets
+and
+Lists
+</a>.
+</dd>
+<dt>
+<code>
+@list
+</code>
+</dt>
+<dd>
+Used
+to
+express
+an
+ordered
+set
+of
+data.
+This
+keyword
+is
+described
+in
+the
+section
+titled
+<a href="#sets-and-lists">
+Sets
+and
+Lists
+</a>.
+</dd>
+<dt>
+<code>
+@set
+</code>
+</dt>
+<dd>
+Used
+to
+express
+an
+unordered
+set
+of
+data.
+This
+keyword
+is
+described
+in
+the
+section
+titled
+<a href="#sets-and-lists">
+Sets
+and
+Lists
+</a>.
+</dd>
+<dt>
+<code>:
+</code>
+</dt>
+<dd>
+The
+separator
+for
+JSON
+keys
+and
+values
+that
+use
+<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
+compact
+IRIs
+</a>.
+</dd>
+</dl>
+<p>
+For
+the
+avoidance
+of
+doubt,
+all
+keys,
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keywords
+</a>,
+and
+values
+in
+JSON-LD
+are
+case-sensitive.
+</p>
+</div>
+<div id="contributing" typeof="bibo:Chapter" resource="#contributing" rel="bibo:chapter" class="section">
+<h3>
+<span class="secno">
+1.3
+</span>
+Contributing
+</h3>
+<p>
+There
+are
+a
+number
+of
+ways
+that
+one
+may
+participate
+in
+the
+development
+of
+this
+specification:
+</p>
+<ul>
+<li>
+Technical
+discussion
+typically
+occurs
+on
+the
+public
+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
+teleconferences
+</a>
+are
+held
+every
+week
+on
+Tuesdays
+at
+1500
+UTC.
+</li>
+<li>
+Specification
+bugs
+and
+issues
+should
+be
+reported
+<del class="diff-old">in
+</del>
+<ins class="diff-chg">using
+</ins>
+the
+<a href="https://github.com/json-ld/json-ld.org/issues">
+issue
+tracker
+</a>.
+</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>
+</div>
+</div>
+<div class="informative section" id="design-goals-and-rationale" typeof="bibo:Chapter" resource="#design-goals-and-rationale" rel="bibo:chapter">
+<h2>
+<span class="secno">
+2.
+</span>
+Design
+Goals
+and
+Rationale
+</h2>
+<p>
+<em>
+This
+section
+is
+non-normative.
+</em>
+</p>
+<p>
+A
+number
+of
+design
+<del class="diff-old">considerations
+</del>
+<ins class="diff-chg">goals
+</ins>
+were
+<del class="diff-old">explored
+during
+</del>
+<ins class="diff-chg">established
+before
+</ins>
+the
+creation
+of
+this
+markup
+language:
+</p>
+<dl>
+<dt>
+Simplicity
+</dt>
+<dd>
+<ins class="diff-new">No
+extra
+processors
+or
+software
+libraries
+should
+be
+necessary
+to
+use
+JSON-LD
+in
+its
+most
+basic
+form.
+The
+language
+will
+provide
+developers
+with
+a
+very
+easy
+learning
+curve.
+</ins>
+Developers
+need
+only
+know
+JSON
+and
+two
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keywords
+</a>
+(
+<code>
+@context
+</code>
+and
+<code>
+@id
+</code>
+)
+to
+use
+the
+basic
+functionality
+in
+JSON-LD.
+<del class="diff-old">No
+extra
+processors
+or
+software
+libraries
+are
+necessary
+to
+use
+JSON-LD
+in
+its
+most
+basic
+form.
+The
+language
+attempts
+to
+ensure
+that
+developers
+have
+an
+easy
+learning
+curve.
+</del>
+</dd>
+<dt>
+Compatibility
+</dt>
+<dd>
+The
+JSON-LD
+markup
+must
+be
+100%
+compatible
+with
+JSON.
+This
+ensures
+that
+all
+of
+the
+standard
+JSON
+libraries
+work
+seamlessly
+with
+JSON-LD
+documents.
+</dd>
+<dt>
+Expressiveness
+</dt>
+<dd>
+The
+syntax
+must
+be
+able
+to
+express
+directed
+graphs,
+which
+have
+been
+proven
+to
+be
+able
+to
+express
+almost
+every
+real
+world
+data
+model.
+</dd>
+<dt>
+Terseness
+</dt>
+<dd>
+The
+JSON-LD
+syntax
+must
+be
+very
+terse
+and
+human
+readable,
+requiring
+as
+little
+effort
+as
+possible
+from
+the
+developer.
+</dd>
+<dt>
+Zero
+Edits,
+most
+of
+the
+time
+</dt>
+<dd>
+JSON-LD
+<del class="diff-old">provides
+</del>
+<ins class="diff-chg">must
+provide
+</ins>
+a
+<a href="#referencing-contexts-from-json-documents">
+mechanism
+</a>
+that
+allows
+developers
+to
+specify
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>
+in
+a
+way
+that
+is
+out-of-band.
+This
+allows
+organizations
+that
+have
+already
+deployed
+large
+JSON-based
+infrastructure
+to
+add
+meaning
+to
+their
+JSON
+documents
+in
+a
+way
+that
+is
+not
+disruptive
+to
+their
+day-to-day
+operations
+and
+is
+transparent
+to
+their
+current
+customers.
+At
+times,
+mapping
+JSON
+to
+a
+graph
+representation
+can
+become
+difficult.
+In
+these
+instances,
+rather
+than
+having
+JSON-LD
+support
+<ins class="diff-new">an
+</ins>
+esoteric
+<del class="diff-old">markup,
+</del>
+<ins class="diff-chg">use
+case,
+</ins>
+we
+chose
+not
+to
+support
+the
+use
+case
+and
+support
+a
+simplified
+syntax
+instead.
+So,
+while
+Zero
+Edits
+is
+a
+goal,
+it
+is
+not
+always
+possible
+without
+adding
+great
+complexity
+to
+the
+language.
+</dd>
+<dt>
+One-pass
+Processing
+</dt>
+<dd>
+JSON-LD
+supports
+one-pass
+processing,
+which
+results
+in
+a
+very
+small
+memory
+footprint
+when
+processing
+documents.
+For
+example,
+to
+expand
+a
+JSON-LD
+document
+from
+a
+compacted
+form,
+only
+one
+pass
+is
+required
+over
+the
+data.
+</dd>
+</dl>
+</div>
+<div id="basic-concepts" typeof="bibo:Chapter" resource="#basic-concepts" rel="bibo:chapter" class="section">
+<h2>
+<span class="secno">
+3.
+</span>
+Basic
+Concepts
+</h2>
+<p>
+JSON-LD
+is
+designed
+to
+ensure
+that
+<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
+Linked
+Data
+</a>
+concepts
+can
+be
+marked
+up
+in
+a
+way
+that
+is
+simple
+to
+understand
+and
+create
+by
+Web
+authors.
+In
+many
+cases,
+regular
+JSON
+markup
+can
+become
+Linked
+Data
+with
+the
+simple
+addition
+of
+a
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>.
+As
+more
+JSON-LD
+features
+are
+used,
+more
+semantics
+are
+added
+to
+the
+JSON
+markup.
+</p>
+<div id="linking-data" typeof="bibo:Chapter" resource="#linking-data" rel="bibo:chapter" class="section">
+<h3>
+<span class="secno">
+3.1
+</span>
+Linking
+Data
+</h3>
+<p>
+<del class="diff-old">An
+Internationalized
+Resource
+Identifier
+(
+</del>
+<ins class="diff-chg">The
+following
+definition
+for
+</ins><a class="tref internalDFN" title="linked_data" href="#dfn-linked_data"><ins class="diff-chg">
+Linked
+Data
+</ins></a><ins class="diff-chg">
+is
+the
+one
+that
+will
+be
+used
+for
+this
+specification.
+</ins></p><ol><li><dfn title="linked_data" id="dfn-linked_data"><ins class="diff-chg">
+Linked
+Data
+</ins></dfn><ins class="diff-chg">
+is
+a
+set
+of
+documents,
+each
+containing
+a
+representation
+of
+a
+linked
+data
+graph.
+</ins></li><li><ins class="diff-chg">
+A
+</ins><dfn title="linked_data_graph" id="dfn-linked_data_graph"><ins class="diff-chg">
+linked
+data
+graph
+</ins></dfn><ins class="diff-chg">
+is
+an
+unordered
+labeled
+directed
+graph,
+where
+nodes
+are
+</ins><a class="tref internalDFN" title="subject" href="#dfn-subject"><ins class="diff-chg">
+subject
+</ins></a><ins class="diff-chg">
+s
+or
+</ins><a class="tref internalDFN" title="object" href="#dfn-object"><ins class="diff-chg">
+object
+</ins></a><ins class="diff-chg">
+s,
+and
+edges
+are
+properties.
+</ins></li><li><ins class="diff-chg">
+A
+</ins><dfn title="subject" id="dfn-subject"><ins class="diff-chg">
+subject
+</ins></dfn><ins class="diff-chg">
+is
+any
+node
+in
+a
+</ins><a class="tref internalDFN" title="linked_data_graph" href="#dfn-linked_data_graph"><ins class="diff-chg">
+linked
+data
+graph
+</ins></a><ins class="diff-chg">
+with
+at
+least
+one
+outgoing
+edge.
+</ins></li><li><ins class="diff-chg">
+A
+</ins><a class="tref internalDFN" title="subject" href="#dfn-subject"><ins class="diff-chg">
+subject
+</ins></a><em class="rfc2119" title="should"><ins class="diff-chg">
+should
+</ins></em><ins class="diff-chg">
+be
+labeled
+with
+an
+</ins>
+<dfn title="iri" id="dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</dfn>
+<del class="diff-old">),
+</del>
+<ins class="diff-chg">(an
+Internationalized
+Resource
+Identifier
+</ins>
+as
+described
+in
+[
+<cite>
+<a class="bibref" rel="biblioentry" href="#bib-RFC3987">
+RFC3987
+</a>
+</cite>
+<del class="diff-old">],
+</del>
+<ins class="diff-chg">]).
+</ins></li><li><ins class="diff-chg">
+An
+</ins><dfn title="object" id="dfn-object"><ins class="diff-chg">
+object
+</ins></dfn>
+is
+a
+<del class="diff-old">mechanism
+for
+representing
+unique
+identifiers
+on
+</del>
+<ins class="diff-chg">node
+in
+a
+</ins><a class="tref internalDFN" title="linked_data_graph" href="#dfn-linked_data_graph"><ins class="diff-chg">
+linked
+data
+graph
+</ins></a><ins class="diff-chg">
+with
+at
+least
+one
+incoming
+edge.
+</ins></li><li><ins class="diff-chg">
+An
+</ins><a class="tref internalDFN" title="object" href="#dfn-object"><ins class="diff-chg">
+object
+</ins></a><em class="rfc2119" title="may"><ins class="diff-chg">
+may
+</ins></em><ins class="diff-chg">
+be
+labeled
+with
+an
+</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
+IRI
+</ins></abbr></a>.</li><li><ins class="diff-chg">
+A
+node
+</ins><em class="rfc2119" title="may"><ins class="diff-chg">
+may
+</ins></em><ins class="diff-chg">
+be
+a
+</ins><a class="tref internalDFN" title="subject" href="#dfn-subject"><ins class="diff-chg">
+subject
+</ins></a><ins class="diff-chg">
+and
+</ins><a class="tref internalDFN" title="object" href="#dfn-object"><ins class="diff-chg">
+object
+</ins></a><ins class="diff-chg">
+at
+</ins>
+the
+<del class="diff-old">Web.
+In
+Linked
+Data
+,
+</del>
+<ins class="diff-chg">same
+time.
+</ins></li><li><ins class="diff-chg">
+A
+</ins><dfn title="property" id="dfn-property"><ins class="diff-chg">
+property
+</ins></dfn><ins class="diff-chg">
+is
+</ins>
+an
+<ins class="diff-new">edge
+of
+the
+</ins><a class="tref internalDFN" title="linked_data_graph" href="#dfn-linked_data_graph"><ins class="diff-new">
+linked
+data
+graph
+</ins></a>.</li><li><ins class="diff-new">
+A
+</ins><a class="tref internalDFN" title="property" href="#dfn-property"><ins class="diff-new">
+property
+</ins></a><em class="rfc2119" title="should"><ins class="diff-new">
+should
+</ins></em><ins class="diff-new">
+be
+labeled
+with
+an
+</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
+IRI
+</ins></abbr></a>.</li><li><ins class="diff-new">
+An
+</ins><a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+<ins class="diff-new">that
+</ins>
+is
+<del class="diff-old">commonly
+used
+for
+expressing
+</del>
+a
+<ins class="diff-new">label
+in
+a
+</ins><a class="tref internalDFN" title="linked_data_graph" href="#dfn-linked_data_graph"><ins class="diff-new">
+linked
+data
+graph
+</ins></a><em class="rfc2119" title="should"><ins class="diff-new">
+should
+</ins></em><ins class="diff-new">
+be
+dereferencable
+to
+a
+</ins><a class="tref internalDFN" title="linked_data" href="#dfn-linked_data"><ins class="diff-new">
+Linked
+Data
+</ins></a><ins class="diff-new">
+document
+describing
+the
+labeled
+</ins>
+<a class="tref internalDFN" title="subject" href="#dfn-subject">
+subject
+</a>,
+<del class="diff-old">a
+property
+</del>
+<a class="tref internalDFN" title="object" href="#dfn-object">
+<ins class="diff-chg">object
+</ins>
+</a>
+or
+<a class="tref internalDFN" title="property" href="#dfn-property">
+<ins class="diff-new">property
+</ins></a>.</li><li><ins class="diff-new">
+A
+</ins><dfn title="value" id="dfn-value"><ins class="diff-new">
+value
+</ins></dfn><ins class="diff-new">
+is
+</ins>
+an
+<a class="tref internalDFN" title="object" href="#dfn-object">
+object
+</a>
+<ins class="diff-new">with
+a
+label
+that
+is
+not
+an
+</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
+IRI
+</ins></abbr></a></li></ol><p class="issue"><ins class="diff-new">
+An
+illustration
+of
+a
+linked
+data
+graph
+would
+probably
+help
+here.
+</ins></p><p><ins class="diff-new">
+Note
+that
+the
+definition
+for
+</ins><a class="tref internalDFN" title="linked_data" href="#dfn-linked_data"><ins class="diff-new">
+Linked
+Data
+</ins></a><ins class="diff-new">
+above
+is
+silent
+on
+the
+topic
+of
+unlabeled
+nodes.
+Unlabeled
+nodes
+are
+not
+considered
+</ins><a class="tref internalDFN" title="linked_data" href="#dfn-linked_data"><ins class="diff-new">
+Linked
+Data
+</ins>
+</a>.
+<ins class="diff-new">However,
+this
+specification
+allows
+for
+the
+expression
+of
+unlabled
+nodes,
+as
+most
+graph-based
+data
+sets
+on
+the
+Web
+contain
+a
+number
+of
+associated
+nodes
+that
+are
+not
+named
+and
+thus
+are
+not
+directly
+de-referenceable.
+</ins>
+</p>
+<p>
+JSON-LD
+defines
+a
+mechanism
+to
+map
+JSON
+terms,
+i.e.,
+keys
+and
+values,
+to
+IRIs.
+This
+does
+not
+mean
+that
+JSON-LD
+requires
+every
+key
+or
+value
+to
+be
+an
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>,
+but
+rather
+ensures
+that
+keys
+and
+values
+can
+be
+mapped
+to
+IRIs
+if
+the
+developer
+desires
+to
+transform
+their
+data
+into
+<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
+Linked
+Data
+</a>.
+There
+are
+a
+few
+techniques
+that
+can
+ensure
+that
+developers
+will
+generate
+good
+Linked
+Data
+for
+the
+Web.
+JSON-LD
+formalizes
+those
+techniques.
+</p>
+<p>
+We
+will
+be
+using
+the
+following
+JSON
+markup
+as
+the
+example
+for
+the
+rest
+of
+this
+section:
+</p>
+<del class="diff-old">{
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "depiction": "http://twitter.com/account/profile_image/manusporny"
+</del>
+<pre class="example">{
+<ins class="diff-chg"> "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "depiction": "http://twitter.com/account/profile_image/manusporny"
+</ins>
+}
+</pre>
+<div id="the-context" typeof="bibo:Chapter" resource="#the-context" rel="bibo:chapter" class="section">
+<h4>
+<span class="secno">
+3.1.1
+</span>
+The
+Context
+</h4>
+<p>
+In
+JSON-LD,
+a
+<dfn title="context" id="dfn-context">
+context
+</dfn>
+is
+used
+to
+map
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+s,
+i.e.,
+properties
+with
+associated
+values
+in
+an
+JSON
+document,
+to
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+s.
+A
+<dfn title="term" id="dfn-term">
+term
+</dfn>
+is
+a
+short
+word
+that
+expands
+to
+an
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+<a class="tref internalDFN" title="term" href="#dfn-term">
+Term
+</a>
+s
+<em class="rfc2119" title="may">
+may
+</em>
+be
+defined
+as
+any
+valid
+JSON
+<a class="tref internalDFN" title="string" href="#dfn-string">
+string
+</a>
+other
+than
+a
+JSON-LD
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>.
+To
+avoid
+forward-compatibility
+issues,
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+s
+starting
+with
+an
+<code>
+@
+</code>
+character
+<em class="rfc2119" title="should not">
+should
+not
+</em>
+be
+used
+as
+they
+might
+be
+used
+as
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keywords
+</a>
+in
+future
+versions
+of
+JSON-LD.
+<ins class="diff-new">Furthermore,
+the
+use
+of
+empty
+terms
+(
+</ins><code><ins class="diff-new">
+""
+</ins></code><ins class="diff-new">
+)
+is
+discouraged
+as
+not
+all
+programming
+languages
+are
+able
+to
+handle
+empty
+property
+names.
+</ins>
+</p>
+<p>
+The
+Web
+uses
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+IRIs
+</a>
+for
+unambiguous
+identification.
+The
+idea
+is
+that
+these
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+s
+mean
+something
+that
+may
+be
+of
+use
+to
+other
+developers
+and
+that
+it
+is
+useful
+to
+give
+them
+an
+unambiguous
+identifier.
+That
+is,
+it
+is
+useful
+for
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+s
+to
+expand
+to
+IRIs
+so
+that
+developers
+don't
+accidentally
+step
+on
+each
+other's
+<dfn title="vocabulary" id="dfn-vocabulary">
+vocabulary
+</dfn>
+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
+plugging
+it
+directly
+into
+a
+web
+browser,
+for
+instance)
+to
+go
+to
+the
+term
+and
+get
+a
+definition
+of
+what
+the
+term
+means.
+<del class="diff-old">Much
+like
+</del>
+<ins class="diff-chg">This
+mechanism
+is
+analogousto
+the
+way
+</ins>
+we
+can
+use
+<a href="http://wordnet.princeton.edu/">
+WordNet
+</a>
+today
+to
+see
+the
+definition
+of
+words
+in
+the
+English
+language.
+Developers
+and
+machines
+need
+the
+same
+sort
+of
+definition
+of
+terms.
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+IRIs
+</a>
+provide
+a
+way
+to
+ensure
+that
+these
+terms
+are
+unambiguous.
+For
+example,
+the
+term
+<code>
+name
+</code>
+may
+map
+directly
+to
+the
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+<code>
+http://xmlns.com/foaf/0.1/name
+</code>.
+This
+allows
+JSON-LD
+documents
+to
+be
+constructed
+using
+the
+common
+JSON
+practice
+of
+simple
+name/value
+pairs
+while
+ensuring
+that
+the
+data
+is
+useful
+outside
+of
+the
+page,
+API
+or
+database
+in
+which
+it
+resides.
+The
+value
+of
+a
+term
+mapping
+<em class="rfc2119" title="must">
+must
+</em>
+be
+either;
+1)
+a
+simple
+string
+with
+the
+lexical
+form
+of
+an
+<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+2)
+<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
+compact
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+or
+3)
+an
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+</a>
+containing
+an
+<code>
+@id
+</code>,
+<code>
+@type
+</code>,
+<code>
+@language
+</code>,
+or
+<code>
+@container
+</code>
+keyword
+(all
+other
+keywords
+are
+ignored
+by
+a
+JSON-LD
+processor).
+</p>
+<p>
+These
+Linked
+Data
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+s
+are
+typically
+collected
+in
+a
+context
+document
+that
+would
+look
+something
+like
+this:
+</p>
+<del class="diff-old">{
+ "@context":
+ {
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "depiction":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/depiction",
+ "@type": "@id"
+ },
+ "homepage":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+ },
+ }
+</del>
+<pre class="example">{
+<ins class="diff-chg"> "@context":
+ {
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "depiction":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/depiction",
+ "@type": "@id"
+ },
+ "homepage":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+ },
+ }
+</ins>
+}
+</pre>
+<p>
+Assuming
+that
+this
+context
+document
+can
+be
+retrieved
+at
+<code>
+http://json-ld.org/contexts/person
+</code>,
+it
+can
+be
+referenced
+from
+a
+JSON-LD
+document
+by
+adding
+a
+single
+line.
+The
+JSON
+markup
+shown
+in
+the
+previous
+section
+could
+be
+changed
+as
+follows:
+</p>
+<del class="diff-old">{
+
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "depiction": "http://twitter.com/account/profile_image/manusporny"
+</del>
+<pre class="example">{
+ <span class="diff">"@context": "http://json-ld.org/contexts/person",</span>
+<ins class="diff-chg"> "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "depiction": "http://twitter.com/account/profile_image/manusporny"
+</ins>
+}
+</pre>
+<p>
+The
+additions
+above
+transform
+the
+previous
+JSON
+document
+into
+a
+JSON
+document
+with
+added
+semantics
+because
+the
+<code>
+@context
+</code>
+specifies
+how
+the
+<strong>
+name
+</strong>,
+<strong>
+homepage
+</strong>,
+and
+<strong>
+depiction
+</strong>
+terms
+map
+to
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+IRIs
+</a>.
+Mapping
+those
+keys
+to
+IRIs
+gives
+the
+data
+global
+context.
+If
+two
+developers
+use
+the
+same
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+to
+describe
+a
+property,
+they
+are
+more
+than
+likely
+expressing
+the
+same
+concept.
+This
+allows
+both
+developers
+to
+re-use
+each
+others
+data
+without
+having
+to
+agree
+to
+how
+their
+data
+will
+interoperate
+on
+a
+site-by-site
+basis.
+Contexts
+may
+also
+contain
+type
+information
+for
+certain
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+s
+as
+well
+as
+other
+processing
+instructions
+for
+the
+JSON-LD
+processor.
+</p>
+<p>
+Contexts
+<em class="rfc2119" title="may">
+may
+</em>
+be
+specified
+in-line.
+This
+ensures
+that
+JSON-LD
+documents
+can
+be
+processed
+when
+a
+JSON-LD
+processor
+does
+not
+have
+access
+to
+the
+Web.
+</p>
+<del class="diff-old">{
+ "@context":
+ {
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "depiction":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/depiction",
+ "@type": "@id"
+ },
+ "homepage":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+ },
+ },
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "depiction": "http://twitter.com/account/profile_image/manusporny"
+</del>
+<pre class="example">{
+ <span class="diff">"@context":
+<ins class="diff-chg"> {
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "depiction":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/depiction",
+ "@type": "@id"
+ },
+ "homepage":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+ },
+ },</span>
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "depiction": "http://twitter.com/account/profile_image/manusporny"
+</ins>
+}
+</pre>
+<p>
+Contexts
+<em class="rfc2119" title="may">
+may
+</em>
+be
+used
+at
+any
+time
+a
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+</a>
+is
+defined.
+A
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+</a>
+<em class="rfc2119" title="may">
+may
+</em>
+specify
+multiple
+contexts,
+using
+an
+<a class="tref internalDFN" title="array" href="#dfn-array">
+array
+</a>,
+which
+is
+processed
+in
+order.
+This
+is
+useful
+when
+an
+author
+would
+like
+to
+use
+an
+existing
+context
+and
+add
+application-specific
+terms
+to
+the
+existing
+context.
+Duplicate
+context
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+s
+<em class="rfc2119" title="must">
+must
+</em>
+be
+overridden
+using
+a
+last-defined-overrides
+mechanism.
+</p>
+<p class="note">
+If
+a
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+is
+re-defined
+within
+a
+context,
+all
+previous
+rules
+associated
+with
+the
+previous
+definition
+are
+removed.
+A
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+defined
+in
+a
+previous
+context
+<em class="rfc2119" title="must">
+must
+</em>
+be
+removed,
+if
+it
+is
+re-defined
+to
+<code>
+null
+</code>.
+</p>
+<p>
+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
+context
+</dfn>
+s.
+Setting
+the
+context
+to
+<code>
+null
+</code>
+effectively
+sets
+the
+<a class="tref internalDFN" title="local_context" href="#dfn-local_context">
+local
+context
+</a>
+to
+<del class="diff-old">it's
+</del>
+<ins class="diff-chg">its
+</ins>
+initial
+state.
+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
+context
+</a>
+s
+that
+are
+in
+scope
+at
+a
+specific
+point
+within
+the
+document.
+The
+following
+example
+specifies
+an
+external
+context
+and
+then
+layers
+a
+local
+context
+on
+top
+of
+the
+external
+context:
+</p>
+<del class="diff-old">{
+ "@context": [
+ "http://json-ld.org/contexts/person",
+ {
+ "pic": "http://xmlns.com/foaf/0.1/depiction"
+ }
+ ],
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+
+</del>
+<pre class="example">{
+ <span class="diff">"@context": [
+<ins class="diff-chg"> "http://json-ld.org/contexts/person",
+ {
+ "pic": "http://xmlns.com/foaf/0.1/depiction"
+ }
+ ],</span>
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+</ins> <span class="diff">"pic": "http://twitter.com/account/profile_image/manusporny"</span>
+}
+</pre>
+<p class="note">
+To
+ensure
+the
+best
+possible
+performance,
+it
+is
+a
+best
+practice
+to
+put
+the
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>
+definition
+at
+the
+top
+of
+the
+JSON-LD
+document.
+If
+it
+isn't
+listed
+first,
+processors
+have
+to
+save
+each
+key-value
+pair
+until
+the
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>
+is
+processed.
+This
+creates
+a
+memory
+and
+complexity
+burden
+for
+one-pass
+processors.
+</p>
+</div>
+<div id="from-json-to-json-ld" typeof="bibo:Chapter" resource="#from-json-to-json-ld" rel="bibo:chapter" class="section">
+<h4>
+<span class="secno">
+3.1.2
+</span>
+From
+JSON
+to
+JSON-LD
+</h4>
+<p>
+If
+a
+set
+of
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+s
+such
+as,
+<strong>
+name
+</strong>,
+<strong>
+homepage
+</strong>,
+and
+<strong>
+depiction
+</strong>,
+are
+defined
+in
+a
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>,
+and
+that
+context
+is
+used
+to
+resolve
+the
+names
+in
+JSON
+objects,
+machines
+are
+able
+to
+automatically
+expand
+the
+terms
+to
+something
+meaningful
+and
+unambiguous,
+like
+this:
+</p>
+<del class="diff-old">{
+ "": "Manu Sporny",
+ "": "http://manu.sporny.org"
+ "": "http://twitter.com/account/profile_image/manusporny"
+</del>
+<pre class="example">{
+<ins class="diff-chg"> "<span class="diff">http://xmlns.com/foaf/0.1/name</span>": "Manu Sporny",
+ "<span class="diff">http://xmlns.com/foaf/0.1/homepage</span>": "http://manu.sporny.org"
+ "<span class="diff">http://xmlns.com/foaf/0.1/depiction</span>": "http://twitter.com/account/profile_image/manusporny"
+</ins>
+}
+</pre>
+<p>
+Doing
+this
+allows
+JSON
+to
+be
+unambiguously
+machine-readable
+without
+requiring
+developers
+to
+drastically
+change
+their
+workflow.
+</p>
+<p class="note">
+The
+example
+above
+does
+not
+use
+the
+<code>
+@id
+</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>
+to
+set
+the
+<a class="tref internalDFN" title="subject" href="#dfn-subject">
+subject
+</a>
+of
+the
+node
+being
+described
+above.
+This
+type
+of
+node
+is
+called
+an
+<dfn title="unlabeled_node" id="dfn-unlabeled_node">
+unlabeled
+node
+</dfn>
+and
+is
+considered
+to
+be
+a
+weaker
+form
+of
+<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
+Linked
+Data
+</a>.
+It
+is
+advised
+that
+all
+nodes
+described
+in
+JSON-LD
+are
+given
+unique
+identifiers
+via
+the
+<code>
+@id
+</code>
+keyword
+unless
+the
+data
+is
+not
+intended
+to
+be
+linked
+to
+from
+other
+data
+sets.
+</p>
+<p>
+A
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+</a>
+used
+to
+define
+property
+values
+is
+called
+a
+<a class="tref internalDFN" title="subject_definition" href="#dfn-subject_definition">
+subject
+definition
+</a>.
+<a class="tref internalDFN" title="subject_definition" href="#dfn-subject_definition">
+Subject
+definitions
+</a>
+do
+not
+require
+a
+<code>
+@id
+</code>,
+in
+which
+case
+they
+are
+considered
+to
+be
+an
+<a class="tref internalDFN" title="unlabeled_node" href="#dfn-unlabeled_node">
+unlabeled
+node
+</a>.
+</p>
+</div>
+</div>
+<div id="iris" typeof="bibo:Chapter" resource="#iris" rel="bibo:chapter" class="section">
+<h3>
+<span class="secno">
+3.2
+</span>
+IRIs
+</h3>
+<p>
+Expressing
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+s
+are
+fundamental
+to
+<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
+Linked
+Data
+</a>
+as
+that
+is
+how
+most
+<a class="tref internalDFN" title="subject" href="#dfn-subject">
+subject
+</a>
+s,
+all
+<a class="tref internalDFN" title="property" href="#dfn-property">
+properties
+</a>
+and
+many
+<a class="tref internalDFN" title="object" href="#dfn-object">
+object
+</a>
+s
+are
+identified.
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+s
+can
+be
+expressed
+in
+a
+variety
+of
+different
+ways
+in
+JSON-LD.
+</p>
+<ol>
+<li>
+Except
+within
+a
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>
+definition,
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+s
+in
+the
+key
+position
+in
+a
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+</a>
+that
+have
+a
+mapping
+to
+an
+<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+another
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+in
+the
+<a class="tref internalDFN" title="active_context" href="#dfn-active_context">
+active
+context
+</a>
+are
+expanded
+to
+an
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+by
+JSON-LD
+processors.
+</li>
+<li>
+An
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+is
+generated
+for
+the
+<a class="tref internalDFN" title="string" href="#dfn-string">
+string
+</a>
+value
+specified
+using
+<code>
+@id
+</code>
+or
+<code>
+@type
+</code>.
+</li>
+<li>
+An
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+is
+generated
+for
+the
+<a class="tref internalDFN" title="string" href="#dfn-string">
+string
+</a>
+value
+of
+any
+key
+for
+which
+there
+are
+<a class="tref internalDFN" title="coercion" href="#dfn-coercion">
+coercion
+</a>
+rules
+in
+effect
+that
+identify
+the
+value
+as
+an
+<code>
+@id
+</code>.
+</li>
+</ol>
+<p>
+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>,
+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="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>.
+</p>
+<p>
+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" rel="biblioentry" href="#bib-RFC3987">
+RFC3987
+</a>
+</cite>
+]
+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
+some
+other
+<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+<del class="diff-old">;
+in
+the
+case
+of
+</del>
+</a>.
+<ins class="diff-chg">In
+</ins>
+JSON-LD
+<del class="diff-old">this
+is
+</del>
+<ins class="diff-chg">all
+</ins><a class="tref internalDFN" title="relative_iri" href="#dfn-relative_iri"><ins class="diff-chg">
+relative
+</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
+IRI
+</ins></abbr></a><ins class="diff-chg">
+s
+are
+resolved
+relative
+to
+</ins>
+the
+<dfn title="base_iri" id="dfn-base_iri">
+base
+<del class="diff-old">location
+of
+</del>
+<abbr title="Internationalized Resource Identifier">
+<ins class="diff-chg">IRI
+</ins></abbr></dfn><ins class="diff-chg">
+associated
+with
+</ins>
+the
+<del class="diff-old">document.
+</del>
+<ins class="diff-chg">document
+(typically,
+the
+directory
+that
+contains
+the
+document
+or
+the
+document
+itself).
+</ins>
+</p>
+<p>
+IRIs
+can
+be
+expressed
+directly
+in
+the
+key
+position
+like
+so:
+</p>
+<del class="diff-old">{
+...
+ "": "Manu Sporny",
+...
+</del>
+<pre class="example">{
+<ins class="diff-chg">...
+ "<span class="diff">http://xmlns.com/foaf/0.1/name</span>": "Manu Sporny",
+...
+</ins>
+}
+</pre>
+<p>
+In
+the
+example
+above,
+the
+key
+<code>
+http://xmlns.com/foaf/0.1/name
+</code>
+is
+interpreted
+as
+an
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+as
+opposed
+to
+being
+interpreted
+as
+a
+<del class="diff-old">string.
+</del>
+<ins class="diff-chg">string
+because
+it
+contains
+a
+colon
+(
+</ins><code>:</code><ins class="diff-chg">
+)
+delimiting
+a
+valid
+</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
+IRI
+</ins></abbr><ins class="diff-chg">
+scheme.
+</ins>
+</p>
+<p>
+Term
+expansion
+occurs
+for
+IRIs
+if
+the
+value
+matches
+a
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+defined
+within
+the
+<a class="tref internalDFN" title="active_context" href="#dfn-active_context">
+active
+context
+</a>:
+</p>
+<del class="diff-old">{
+ "":
+ {
+ ""
+...
+ },
+ "": "Manu Sporny",
+...
+</del>
+<pre class="example">{
+<ins class="diff-chg"> "<span class="diff">@context</span>":
+ {
+ "<span class="diff">name</span>": "<span class="diff">http://xmlns.com/foaf/0.1/name</span>"
+...
+ },
+ "<span class="diff">name</span>": "Manu Sporny",
+ "status": "trollin'",
+...
+</ins>
+}
+</pre>
+<p>
+<a class="tref internalDFN" title="term" href="#dfn-term">
+<ins class="diff-new">Term
+</ins></a><ins class="diff-new">
+s
+are
+case
+sensitive,
+and
+</ins><em class="rfc2119" title="must"><ins class="diff-new">
+must
+</ins></em><ins class="diff-new">
+be
+matched
+using
+a
+case-sensitive
+comparison.
+</ins></p><p><ins class="diff-new">
+JSON
+keys
+that
+do
+not
+expand
+to
+an
+absolute
+</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
+IRI
+</ins></abbr><ins class="diff-new">
+are
+ignored,
+or
+removed
+in
+some
+cases,
+by
+the
+[
+</ins><cite><a class="bibref" rel="biblioentry" href="#bib-JSON-LD-API"><ins class="diff-new">
+JSON-LD-API
+</ins></a></cite><ins class="diff-new">
+].
+However,
+JSON
+keys
+that
+do
+not
+include
+a
+mapping
+in
+the
+</ins><a class="tref internalDFN" title="context" href="#dfn-context"><ins class="diff-new">
+context
+</ins></a><ins class="diff-new">
+are
+still
+considered
+valid
+expressions
+in
+JSON-LD
+documents
+-
+the
+keys
+just
+don't
+have
+any
+machine-readable,
+semantic
+meaning.
+</ins></p><p>
+<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
+Prefix
+</a>
+es
+are
+expanded
+when
+the
+form
+of
+the
+value
+<ins class="diff-new">is
+a
+</ins>
+<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
+compact
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+represented
+as
+<del class="diff-old">is
+</del>
+<ins class="diff-chg">a
+</ins>
+<code>
+prefix:suffix
+<del class="diff-old">,
+</del>
+</code>
+<ins class="diff-chg">combination,
+</ins>
+and
+the
+prefix
+matches
+a
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+defined
+within
+the
+<a class="tref internalDFN" title="active_context" href="#dfn-active_context">
+active
+context
+</a>:
+</p>
+<del class="diff-old">{
+ "":
+ {
+ ""
+...
+ },
+ "": "Manu Sporny",
+...
+</del>
+<pre class="example">{
+<ins class="diff-chg"> "<span class="diff">@context</span>":
+ {
+ "<span class="diff">foaf</span>": "<span class="diff">http://xmlns.com/foaf/0.1/</span>"
+...
+ },
+ "<span class="diff">foaf:name</span>": "Manu Sporny",
+...
+</ins>
+}
+</pre>
+<p>
+<del class="diff-old">Term
+s
+are
+case
+sensitive,
+and
+must
+be
+matched
+using
+a
+case-sensitive
+comparison.
+Keys
+that
+do
+not
+expand
+to
+an
+absolute
+IRI
+are
+ignored.
+</del>
+<code>
+foaf:name
+</code>
+above
+will
+automatically
+expand
+out
+to
+the
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+<code>
+http://xmlns.com/foaf/0.1/name
+</code>.
+See
+<a href="#compact-iris">
+Compact
+IRIs
+</a>
+for
+more
+details.
+</p>
+<p>
+An
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+is
+generated
+when
+a
+<del class="diff-old">value
+</del>
+<ins class="diff-chg">JSON
+object
+</ins>
+is
+<del class="diff-old">associated
+with
+a
+key
+using
+</del>
+<ins class="diff-chg">used
+in
+</ins>
+the
+<ins class="diff-new">value
+position
+that
+contains
+an
+</ins>
+<code>
+@id
+</code>
+keyword:
+</p>
+<del class="diff-old">{
+...
+ "homepage": { "": "http://manu.sporny.org" }
+...
+</del>
+<pre class="example">{
+<ins class="diff-chg">...
+ "homepage": { "<span class="diff">@id</span>": "http://manu.sporny.org" }
+...
+</ins>
+}
+</pre>
+<p class="note">
+Specifying
+a
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+</a>
+with
+an
+<code>
+@id
+</code>
+key
+is
+used
+to
+identify
+that
+object
+using
+an
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+This
+facility
+<em class="rfc2119" title="may">
+may
+</em>
+also
+be
+used
+to
+link
+<del class="diff-old">a
+subject
+with
+an
+</del>
+<ins class="diff-chg">to
+another
+</ins><a class="tref internalDFN" title="json_object" href="#dfn-json_object"><ins class="diff-chg">
+JSON
+</ins>
+object
+</a>
+using
+a
+mechanism
+called
+<a class="tref internalDFN" title="embedding" href="#dfn-embedding">
+embedding
+</a>,
+which
+is
+covered
+in
+the
+section
+titled
+<a href="#embedding">
+Embedding
+</a>.
+</p>
+<p>
+If
+type
+<a class="tref internalDFN" title="coercion" href="#dfn-coercion">
+coercion
+</a>
+rules
+are
+specified
+in
+the
+<code>
+@context
+</code>
+for
+a
+particular
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+or
+property
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>,
+an
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+is
+generated:
+</p>
+<del class="diff-old">
+ "@context":
+ {
+ ...
+ "homepage":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+ }
+ ...
+ }
+...
+ "homepage": "http://manu.sporny.org/",
+...
+</del>
+<pre class="example">{<span class="diff">
+<ins class="diff-chg"> "@context":
+ {
+ ...
+ "homepage":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+ }
+ ...
+ }</span>
+...
+ "homepage": "http://manu.sporny.org/",
+...
+</ins>
+}
+</pre>
+<p>
+<del class="diff-old">Even
+</del>
+<ins class="diff-chg">In
+the
+example
+above,
+even
+</ins>
+though
+the
+value
+<code>
+http://manu.sporny.org/
+</code>
+is
+<ins class="diff-new">expressed
+as
+</ins>
+a
+<ins class="diff-new">JSON
+</ins>
+<a class="tref internalDFN" title="string" href="#dfn-string">
+string
+</a>,
+the
+type
+<a class="tref internalDFN" title="coercion" href="#dfn-coercion">
+coercion
+</a>
+rules
+will
+transform
+the
+value
+into
+an
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+when
+processed
+by
+a
+JSON-LD
+Processor.
+</p>
+</div>
+<div id="identifying-the-subject" typeof="bibo:Chapter" resource="#identifying-the-subject" rel="bibo:chapter" class="section">
+<h3>
+<span class="secno">
+3.3
+</span>
+Identifying
+the
+Subject
+</h3>
+<p>
+To
+be
+able
+to
+externally
+reference
+<del class="diff-old">nodes,
+</del>
+<ins class="diff-chg">nodes
+in
+a
+graph,
+</ins>
+it
+is
+important
+that
+each
+node
+has
+an
+unambiguous
+identifier.
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+s
+are
+a
+fundamental
+concept
+of
+<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
+Linked
+Data
+</a>,
+and
+nodes
+should
+have
+a
+de-referencable
+identifier
+used
+to
+name
+and
+locate
+them.
+For
+nodes
+to
+be
+truly
+linked,
+de-referencing
+the
+identifier
+should
+result
+in
+a
+representation
+of
+that
+<del class="diff-old">node.
+</del>
+<ins class="diff-chg">node
+(for
+example,
+using
+a
+URL
+to
+retrieve
+a
+web
+page).
+</ins>
+Associating
+an
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+with
+a
+node
+tells
+an
+application
+that
+the
+returned
+document
+contains
+a
+description
+of
+the
+node
+requested.
+</p>
+<p>
+JSON-LD
+documents
+may
+also
+contain
+descriptions
+of
+other
+nodes,
+so
+it
+is
+necessary
+to
+be
+able
+to
+uniquely
+identify
+each
+node
+which
+may
+be
+externally
+referenced.
+</p>
+<p>
+A
+<a class="tref internalDFN" title="subject" href="#dfn-subject">
+subject
+</a>
+of
+an
+object
+in
+JSON
+is
+declared
+using
+the
+<code>
+@id
+</code>
+key.
+The
+subject
+is
+the
+first
+piece
+of
+information
+needed
+by
+the
+JSON-LD
+processor
+in
+order
+to
+create
+the
+(subject,
+property,
+object)
+tuple,
+also
+known
+as
+a
+triple.
+</p>
+<del class="diff-old">{
+...
+ "",
+...
+</del>
+<pre class="example">{
+<ins class="diff-chg">...
+ "<span class="diff">@id</span>": "<span class="diff">http://example.org/people#joebob</span>",
+...
+</ins>
+}
+</pre>
+<p>
+The
+example
+above
+would
+set
+the
+subject
+to
+the
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+<code>
+http://example.org/people#joebob
+</code>.
+</p>
+<p>
+A
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+</a>
+used
+to
+define
+property
+values
+is
+called
+a
+<a class="tref internalDFN" title="subject_definition" href="#dfn-subject_definition">
+subject
+definition
+</a>.
+<a class="tref internalDFN" title="subject_definition" href="#dfn-subject_definition">
+Subject
+definitions
+</a>
+do
+not
+require
+<del class="diff-old">a
+</del>
+<ins class="diff-chg">an
+</ins>
+<code>
+@id
+<del class="diff-old">,
+in
+which
+case
+they
+are
+considered
+to
+be
+</del>
+</code>.
+<ins class="diff-chg">A
+</ins><a class="tref internalDFN" title="subject_definition" href="#dfn-subject_definition"><ins class="diff-chg">
+subject
+definition
+</ins></a><ins class="diff-chg">
+that
+does
+not
+contain
+an
+</ins><code><ins class="diff-chg">
+@id
+</ins></code><ins class="diff-chg">
+property
+is
+called
+</ins>
+an
+<a class="tref internalDFN" title="unlabeled_node" href="#dfn-unlabeled_node">
+unlabeled
+node
+</a>.
+</p>
+<p class="note">
+To
+ensure
+the
+best
+possible
+performance,
+it
+is
+a
+best
+practice
+to
+put
+the
+<code>
+@id
+</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>
+before
+other
+key-value
+pairs
+in
+an
+object.
+If
+it
+isn't
+listed
+first,
+processors
+have
+to
+save
+each
+key-value
+pair
+until
+<code>
+@id
+</code>
+is
+processed
+before
+they
+can
+start
+generating
+triples.
+Not
+specifying
+the
+<code>
+@id
+</code>
+keyword
+first
+creates
+a
+memory
+and
+complexity
+burden
+for
+one-pass
+processors.
+</p>
+</div>
+<div id="specifying-the-type" typeof="bibo:Chapter" resource="#specifying-the-type" rel="bibo:chapter" class="section">
+<h3>
+<span class="secno">
+3.4
+</span>
+Specifying
+the
+Type
+</h3>
+<p>
+The
+type
+of
+a
+particular
+subject
+can
+be
+specified
+using
+the
+<code>
+@type
+</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>.
+Specifying
+the
+type
+in
+this
+way
+will
+generate
+a
+triple
+of
+the
+form
+(subject,
+type,
+type-
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+).
+To
+be
+considered
+<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
+Linked
+Data
+</a>,
+types
+<em class="rfc2119" title="must">
+must
+</em>
+be
+uniquely
+identified
+by
+an
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+</p>
+<del class="diff-old">{
+...
+ "@id": "http://example.org/people#joebob",
+ "",
+...
+</del>
+<pre class="example">{
+<ins class="diff-chg">...
+ "@id": "http://example.org/people#joebob",
+ "<span class="diff">@type</span>": "<span class="diff">http://xmlns.com/foaf/0.1/Person</span>",
+...
+</ins>
+}
+</pre>
+</div>
+<div id="string-internationalization" typeof="bibo:Chapter" resource="#string-internationalization" rel="bibo:chapter" class="section">
+<h3>
+<span class="secno">
+3.5
+</span>
+String
+Internationalization
+</h3>
+<p>
+<del class="diff-old">In
+different
+scenarios
+</del>
+<ins class="diff-chg">At
+times,
+</ins>
+it
+is
+important
+to
+annotate
+a
+<a class="tref internalDFN" title="string" href="#dfn-string">
+string
+</a>
+with
+its
+language.
+In
+JSON-LD
+this
+is
+possible
+in
+a
+variety
+of
+ways.
+Firstly,
+it
+is
+possible
+to
+define
+a
+default
+language
+for
+a
+JSON-LD
+document
+by
+setting
+the
+<code>
+@language
+</code>
+key
+in
+the
+<code>
+@context
+</code>
+or
+in
+a
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+definition:
+</p>
+<del class="diff-old">{
+ "@context":
+ {
+ ...
+ "@language": "ja"
+ },
+ "name": ,
+ "occupation":
+</del>
+<pre class="example">{
+ <span class="diff">"@context":
+<ins class="diff-chg"> {
+ ...
+ "@language": "ja"
+ },</span>
+ "name": <span class="diff">"花澄"</span>,
+ "occupation": <span class="diff">"科学者"</span>
+</ins>
+}
+</pre>
+<p>
+The
+example
+above
+would
+associate
+the
+<code>
+ja
+</code>
+language
+code
+with
+the
+two
+<a class="tref internalDFN" title="string" href="#dfn-string">
+string
+</a>
+s
+<em>
+花澄
+</em>
+and
+<em>
+科学者
+</em>.
+Languages
+<em class="rfc2119" title="must">
+must
+</em>
+be
+expressed
+in
+[
+<cite>
+<a class="bibref" rel="biblioentry" href="#bib-BCP47">
+BCP47
+</a>
+</cite>
+]
+format.
+</p>
+<p>
+It
+is
+possible
+to
+override
+the
+default
+language
+by
+using
+the
+expanded
+form
+of
+a
+value:
+</p>
+<del class="diff-old">{
+ "@context": {
+ ...
+ "@language": "ja"
+ },
+ "name": "花澄",
+ "occupation": {
+ "@value": "Scientist",
+ "@language": "en"
+ }
+</del>
+<pre class="example">{
+<ins class="diff-chg"> "@context": {
+ ...
+ "@language": "ja"
+ },
+ "name": "花澄",
+ "occupation": <span class="diff">{
+ "@value": "Scientist",
+ "@language": "en"
+ }</span>
+</ins>
+}
+</pre>
+<p>
+It
+is
+also
+possible
+to
+override
+the
+default
+language
+or
+specify
+a
+plain
+value
+by
+omitting
+the
+<code>
+@language
+</code>
+tag
+or
+setting
+it
+to
+<code>
+null
+</code>
+when
+expressing
+the
+expanded
+value:
+</p>
+<del class="diff-old">{
+ "@context": {
+ ...
+ "@language": "ja"
+ },
+ "name": {
+ "@value": "花澄"
+ },
+ "occupation": {
+ "@value": "Ninja",
+ "@language": "en"
+ },
+ "speciality": "手裏剣"
+</del>
+<pre class="example">{
+<ins class="diff-chg"> "@context": {
+ ...
+ "@language": "ja"
+ },
+ "name": <span class="diff">{
+ "@value": "Frank"
+ },</span>
+ "occupation": <span class="diff"> {
+ "@value": "Ninja",
+ "@language": "en"
+ }</span>,
+ "speciality": "手裏剣"
+</ins>
+}
+</pre>
+<p class="note">
+Please
+note
+that
+language
+associations
+<em class="rfc2119" title="must">
+must
+</em>
+only
+be
+applied
+to
+plain
+literal
+<a class="tref internalDFN" title="string" href="#dfn-string">
+string
+</a>
+s.
+That
+is,
+<a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">
+typed
+value
+</a>
+s
+or
+values
+that
+are
+subject
+to
+<a href="#type-coercion">
+type
+coercion
+</a>
+won't
+be
+language
+tagged.
+</p>
+<p>
+To
+clear
+the
+default
+language
+for
+a
+subtree,
+<code>
+@language
+</code>
+can
+be
+set
+to
+<code>
+null
+</code>
+in
+a
+<a class="tref internalDFN" title="local_context" href="#dfn-local_context">
+local
+context
+</a>
+as
+follows:
+</p>
+<del class="diff-old">{
+ "@context": {
+ ...
+ "@language": "ja"
+ },
+ "name": "花澄",
+ "details": {
+ "@context": {
+ "@language": null
+ },
+ "occupation": "Ninja"
+ }
+</del>
+<pre class="example">{
+<ins class="diff-chg"> "@context": {
+ ...
+ "@language": "ja"
+ },
+ "name": "花澄",
+ "details": {
+</ins><span class="diff"> "@context": {<ins class="diff-chg">
+ "@language": null
+ },</span>
+ "occupation": "Ninja"
+ }
+</ins>
+}
+</pre>
+<p class="note">
+JSON-LD
+allows
+<ins class="diff-new">one
+</ins>
+to
+associate
+language
+information
+with
+<del class="diff-old">terms.
+</del>
+<a class="tref internalDFN" title="term" href="#dfn-term">
+<ins class="diff-chg">term
+</ins></a><ins class="diff-chg">
+s.
+</ins>
+See
+<a href="#expanded-term-definition">
+Expanded
+Term
+Definition
+</a>
+for
+more
+details.
+</p>
+</div>
+<div id="sets-and-lists" typeof="bibo:Chapter" resource="#sets-and-lists" rel="bibo:chapter" class="section">
+<h3>
+<span class="secno">
+3.6
+</span>
+Sets
+and
+Lists
+</h3>
+<p>
+A
+JSON-LD
+author
+can
+express
+multiple
+values
+in
+a
+compact
+way
+by
+using
+<a class="tref internalDFN" title="array" href="#dfn-array">
+array
+</a>
+s.
+<del class="diff-old">But,
+because
+</del>
+<ins class="diff-chg">Since
+</ins>
+graphs
+do
+not
+describe
+ordering
+for
+links
+between
+nodes,
+<del class="diff-old">in
+contrast
+to
+plain
+JSON,
+</del>
+arrays
+in
+JSON-LD
+do
+not
+provide
+an
+ordering
+of
+the
+listed
+objects
+by
+default.
+<ins class="diff-new">This
+is
+exactly
+the
+opposite
+from
+regular
+JSON
+arrays,
+which
+are
+ordered
+by
+default.
+</ins>
+For
+example,
+consider
+the
+following
+simple
+document:
+</p>
+<del class="diff-old">{
+...
+ "@id": "http://example.org/people#joebob",
+ "nick": ,
+...
+</del>
+<pre class="example">{
+<ins class="diff-chg">...
+ "@id": "http://example.org/people#joebob",
+ "nick": <span class="diff">[ "joe", "bob", "jaybee" ]</span>,
+...
+</ins>
+}
+</pre>
+<p>
+The
+markup
+shown
+above
+would
+result
+in
+three
+triples
+being
+generated,
+each
+relating
+the
+subject
+to
+an
+individual
+object,
+with
+no
+inherent
+order:
+</p>
+<del class="diff-old"><http://example.org/people#joebob>
+ <http://xmlns.com/foaf/0.1/nick>
+ "joe" .
+<http://example.org/people#joebob>
+ <http://xmlns.com/foaf/0.1/nick>
+ "bob" .
+<http://example.org/people#joebob>
+ <http://xmlns.com/foaf/0.1/nick>
+</del>
+<pre class="example"><http://example.org/people#joebob>
+<ins class="diff-chg"> <http://xmlns.com/foaf/0.1/nick>
+ "joe" .
+<http://example.org/people#joebob>
+ <http://xmlns.com/foaf/0.1/nick>
+ "bob" .
+<http://example.org/people#joebob>
+ <http://xmlns.com/foaf/0.1/nick>
+</ins>
+"jaybee"
+.
+</pre>
+<p>
+Multiple
+values
+may
+also
+be
+expressed
+using
+the
+expanded
+object
+form:
+</p>
+<del class="diff-old">{
+ "@id": "http://example.org/articles/8",
+ "dc:title":
+ [
+ {
+ "@value": "Das Kapital",
+ "@language": "de"
+ },
+ {
+ "@value": "Capital",
+ "@language": "en"
+ }
+ ]
+</del>
+<pre class="example">{
+<ins class="diff-chg"> "@id": "http://example.org/articles/8",
+ "dc:title": <span class="diff">
+ [
+ {
+ "@value": "Das Kapital",
+ "@language": "de"
+ },
+ {
+ "@value": "Capital",
+ "@language": "en"
+ }
+ ]</span>
+</ins>
+}
+</pre>
+<p>
+The
+markup
+shown
+above
+would
+generate
+the
+following
+triples,
+again
+with
+no
+inherent
+order:
+</p>
+<del class="diff-old"><http://example.org/articles/8>
+ <http://purl.org/dc/terms/title>
+ "Das Kapital"@de .
+<http://example.org/articles/8>
+ <http://purl.org/dc/terms/title>
+</del>
+<pre class="example"><http://example.org/articles/8>
+<ins class="diff-chg"> <http://purl.org/dc/terms/title>
+ "Das Kapital"@de .
+<http://example.org/articles/8>
+ <http://purl.org/dc/terms/title>
+</ins>
+"Capital"@en
+.
+</pre>
+<p>
+As
+the
+notion
+of
+ordered
+collections
+is
+rather
+important
+in
+data
+modeling,
+it
+is
+useful
+to
+have
+specific
+language
+support.
+In
+JSON-LD,
+a
+list
+may
+be
+represented
+using
+the
+<code>
+@list
+</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>
+as
+follows:
+</p>
+<del class="diff-old">{
+...
+ "@id": "http://example.org/people#joebob",
+ "foaf:nick":
+ {
+ "@list": [ "joe", "bob", "jaybee" ]
+ },
+...
+</del>
+<pre class="example">{
+<ins class="diff-chg">...
+ "@id": "http://example.org/people#joebob",
+ "foaf:nick":
+</ins> <span class="diff">{<ins class="diff-chg">
+ "@list": [ "joe", "bob", "jaybee" ]
+ }</span>,
+...
+</ins>
+}
+</pre>
+<p>
+This
+describes
+the
+use
+of
+this
+<a class="tref internalDFN" title="array" href="#dfn-array">
+array
+</a>
+as
+being
+ordered,
+and
+order
+is
+maintained
+<del class="diff-old">through
+operations
+such
+as
+Expansion
+,
+Compaction
+,
+and
+Framing
+.
+</del>
+<ins class="diff-chg">when
+processing
+a
+document.
+</ins>
+If
+every
+use
+of
+a
+given
+multi-valued
+property
+is
+a
+list,
+this
+may
+be
+abbreviated
+by
+setting
+<code>
+@container
+</code>
+to
+<code>
+@list
+</code>
+in
+the
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>:
+</p>
+<del class="diff-old">{
+ "@context":
+ {
+ ...
+ "nick":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/nick",
+ "@container": "@list"
+ }
+ },
+...
+ "@id": "http://example.org/people#joebob",
+ "nick": ,
+...
+</del>
+<pre class="example">{
+ <span class="diff">"@context":
+<ins class="diff-chg"> {
+ ...
+ "nick":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/nick",
+ "@container": "@list"
+ }
+ }</span>,
+...
+ "@id": "http://example.org/people#joebob",
+ "nick": <span class="diff">[ "joe", "bob", "jaybee" ]</span>,
+...
+</ins>
+}
+</pre>
+<p class="note">
+List
+of
+lists
+are
+not
+allowed
+in
+this
+version
+of
+JSON-LD.
+If
+a
+list
+of
+lists
+is
+detected,
+a
+JSON-LD
+processor
+will
+throw
+an
+exception.
+<ins class="diff-new">This
+decision
+was
+made
+due
+to
+the
+extreme
+amount
+of
+added
+complexity
+when
+processing
+lists
+of
+lists.
+</ins>
+</p>
+<p>
+Similarly
+to
+<code>
+@list
+</code>,
+there
+exists
+the
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>
+<code>
+@set
+</code>
+to
+describe
+unordered
+sets.
+While
+its
+use
+in
+the
+body
+of
+a
+JSON-LD
+document
+represents
+just
+syntactic
+sugar
+that
+<em class="rfc2119" title="must">
+must
+</em>
+be
+optimized
+away
+when
+processing
+the
+document,
+it
+is
+very
+helpful
+<del class="diff-old">for
+Compaction
+and
+Framing
+.
+The
+value
+</del>
+<ins class="diff-chg">when
+used
+within
+the
+context
+of
+a
+document.
+Values
+</ins>
+of
+terms
+associated
+with
+a
+<code>
+@set
+</code>
+<del class="diff-old">-
+</del>
+or
+<code>
+@list
+</code>
+<del class="diff-old">-
+@container
+</del>
+<ins class="diff-chg">container
+</ins>
+are
+always
+represented
+in
+the
+form
+of
+an
+<a class="tref internalDFN" title="array" href="#dfn-array">
+array
+</a>
+-
+even
+if
+there
+is
+just
+a
+single
+<del class="diff-old">value.
+</del>
+<ins class="diff-chg">value
+that
+would
+otherwise
+be
+optimized
+to
+a
+non-array
+form
+in
+a
+</ins><a href="#compact-document-form"><ins class="diff-chg">
+compacted
+document
+</ins></a>.
+This
+makes
+post-processing
+of
+the
+data
+easier
+as
+the
+data
+is
+<ins class="diff-new">always
+</ins>
+in
+<ins class="diff-new">array
+form,
+even
+if
+the
+array
+only
+contains
+</ins>
+a
+<del class="diff-old">deterministic
+form.
+If
+no
+such
+@container
+is
+specified,
+</del>
+single
+<del class="diff-old">values
+are
+optimized
+to
+a
+non-array
+form.
+</del>
+<ins class="diff-chg">value.
+</ins>
+</p>
+<p class="note">
+The
+use
+of
+<code>
+@container
+</code>
+in
+the
+body
+of
+a
+JSON-LD
+document,
+i.e.,
+outside
+<code>
+@context
+</code>
+<del class="diff-old">is
+</del>
+<em class="rfc2119" title="must">
+<ins class="diff-chg">must
+</ins></em><ins class="diff-chg">
+be
+</ins>
+ignored
+by
+JSON-LD
+processors.
+</p>
+</div>
+</div>
+<div id="advanced-concepts" typeof="bibo:Chapter" resource="#advanced-concepts" rel="bibo:chapter" class="section">
+<h2>
+<span class="secno">
+4.
+</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
+<del class="diff-old">sections
+outline
+the
+features
+that
+are
+specific
+to
+JSON-LD.
+</del>
+<ins class="diff-chg">section
+describes
+this
+advanced
+functionality
+in
+more
+detail.
+</ins>
+</p>
+<div id="typed-values" typeof="bibo:Chapter" resource="#typed-values" rel="bibo:chapter" class="section">
+<h3>
+<span class="secno">
+4.1
+</span>
+Typed
+Values
+</h3>
+<p>
+A
+value
+with
+an
+associated
+type,
+also
+known
+as
+a
+<dfn title="typed_value" id="dfn-typed_value">
+typed
+value
+</dfn>,
+is
+indicated
+by
+associating
+a
+value
+with
+an
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+which
+indicates
+the
+value's
+type.
+Typed
+values
+may
+be
+expressed
+in
+JSON-LD
+in
+three
+ways:
+</p>
+<ol>
+<li>
+By
+utilizing
+the
+<code>
+@type
+</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>
+when
+defining
+a
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+within
+a
+<code>
+@context
+</code>
+section.
+</li>
+<li>
+By
+utilizing
+the
+expanded
+form
+for
+specifying
+objects.
+</li>
+<li>
+By
+using
+a
+native
+JSON
+type.
+</li>
+</ol>
+<p>
+The
+first
+example
+uses
+the
+<code>
+@type
+</code>
+keyword
+to
+<del class="diff-old">express
+</del>
+<ins class="diff-chg">associate
+</ins>
+a
+<del class="diff-old">typed
+value:
+</del>
+<ins class="diff-chg">type
+with
+a
+particular
+</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
+term
+</ins></a><ins class="diff-chg">
+in
+the
+</ins><code><ins class="diff-chg">
+@context
+</ins></code>:
+</p>
+<del class="diff-old">{
+ "@context":
+ {
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
+ "modified":
+ {
+ "@id": "http://purl.org/dc/terms/modified",
+ "@type": "xsd:dateTime"
+ }
+ }
+...
+ "modified": "2010-05-29T14:17:39+02:00",
+...
+</del>
+<pre class="example">{
+ <span class="diff">"@context":
+<ins class="diff-chg"> {
+ "modified":
+ {
+ "@id": "http://purl.org/dc/terms/modified",
+ "@type": "http://www.w3.org/2001/XMLSchema#dateTime"
+ }
+ },</span>
+...
+ "modified": "2010-05-29T14:17:39+02:00",
+...
+</ins>
+}
+</pre>
+<p>
+The
+<em>
+<ins class="diff-new">modified
+</ins></em><ins class="diff-new">
+key's
+value
+above
+is
+automatically
+type
+coerced
+to
+a
+datetime
+value
+because
+of
+the
+information
+specified
+in
+the
+</ins><code><ins class="diff-new">
+@context
+</ins></code>.</p><p><ins class="diff-new">
+The
+</ins>
+second
+example
+uses
+the
+expanded
+form
+<del class="diff-old">for
+specifying
+objects:
+</del>
+<ins class="diff-chg">of
+setting
+the
+type
+information
+in
+the
+body
+of
+a
+JSON-LD
+document:
+</ins>
+</p>
+<del class="diff-old">{
+...
+ "modified":
+ {
+ "@value": "2010-05-29T14:17:39+02:00",
+ "@type": "xsd:dateTime"
+ }
+...
+</del>
+<pre class="example">{
+<ins class="diff-chg"> "@context":
+ {
+ "modified":
+ {
+ "@id": "http://purl.org/dc/terms/modified"
+ }
+ },
+...
+ "modified":
+</ins> <span class="diff">{<ins class="diff-chg">
+ "@value": "2010-05-29T14:17:39+02:00",
+ "@type": "http://www.w3.org/2001/XMLSchema#dateTime"
+ }</span>
+...
+</ins>
+}
+</pre>
+<p>
+Both
+examples
+above
+would
+generate
+an
+object
+with
+the
+value
+of
+<code>
+2010-05-29T14:17:39+02:00
+</code>
+and
+the
+type
+of
+<code>
+http://www.w3.org/2001/XMLSchema#dateTime
+</code>.
+</p>
+<p>
+The
+third
+example
+uses
+a
+built-in
+native
+JSON
+type,
+a
+<a class="tref internalDFN" title="number" href="#dfn-number">
+number
+</a>,
+to
+express
+a
+type:
+</p>
+<del class="diff-old">{
+...
+ "@id": "http://example.org/people#joebob",
+ "age":
+...
+</del>
+<pre class="example">{
+<ins class="diff-chg">...
+ "@id": "http://example.org/people#joebob",
+ "age": <span class="diff">31</span>
+...
+</ins>
+}
+</pre>
+<p>
+The
+example
+above
+is
+really
+just
+a
+shorthand
+for
+the
+following:
+</p>
+<del class="diff-old">{
+...
+ "@id": "http://example.org/people#joebob",
+ "age":
+ {
+ "@value": "31",
+ "@type": "http://www.w3.org/2001/XMLSchema#integer"
+ }
+...
+</del>
+<pre class="example">{
+<ins class="diff-chg">...
+ "@id": "http://example.org/people#joebob",
+ "age":
+</ins> <span class="diff">{<ins class="diff-chg">
+ "@value": "31",
+ "@type": "http://www.w3.org/2001/XMLSchema#integer"
+ }</span>
+...
+</ins>
+}
+</pre>
+<p class="note">
+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="subject" href="#dfn-subject">
+subject
+</a>.
+Although
+the
+same
+keyword
+is
+used
+in
+both
+places,
+the
+concept
+of
+an
+<em>
+object
+type
+</em>
+and
+a
+<em>
+value
+type
+</em>
+are
+different.
+This
+is
+similar
+to
+object-oriented
+programming
+languages
+where
+both
+scalar
+and
+structured
+types
+use
+the
+same
+class
+inheritance
+mechanism,
+even
+though
+scalar
+types
+and
+structured
+types
+are
+inherently
+different.
+</p>
+</div>
+<div id="compact-iris" typeof="bibo:Chapter" resource="#compact-iris" rel="bibo:chapter" class="section">
+<h3>
+<span class="secno">
+4.2
+</span>
+Compact
+IRIs
+</h3>
+<p>
+<a class="tref internalDFN" title="term" href="#dfn-term">
+Term
+</a>
+s
+in
+<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
+Linked
+Data
+</a>
+documents
+may
+draw
+from
+a
+number
+of
+different
+<a class="tref internalDFN" title="vocabulary" href="#dfn-vocabulary">
+vocabularies
+</a>.
+At
+times,
+declaring
+every
+single
+term
+that
+a
+document
+uses
+can
+require
+the
+developer
+to
+declare
+tens,
+if
+not
+hundreds
+of
+potential
+<a class="tref internalDFN" title="vocabulary" href="#dfn-vocabulary">
+vocabulary
+</a>
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+s
+that
+are
+used
+across
+an
+application.
+This
+is
+a
+concern
+for
+at
+least
+<del class="diff-old">three
+</del>
+<ins class="diff-chg">two
+</ins>
+reasons:
+the
+first
+is
+the
+cognitive
+load
+on
+the
+developer
+of
+remembering
+all
+of
+the
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+s,
+<ins class="diff-new">and
+</ins>
+the
+second
+is
+the
+serialized
+size
+of
+the
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>
+if
+it
+is
+specified
+<del class="diff-old">inline,
+the
+third
+is
+future-proofing
+embedded
+application
+context
+s
+that
+may
+not
+be
+easy
+to
+change
+after
+they
+are
+deployed.
+</del>
+<ins class="diff-chg">inline.
+</ins>
+In
+order
+to
+address
+these
+issues,
+the
+concept
+of
+a
+<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
+compact
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+is
+introduced.
+</p>
+<p>
+A
+<dfn title="compact_iri" id="dfn-compact_iri">
+compact
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</dfn>
+is
+a
+way
+of
+expressing
+an
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+using
+a
+<em>
+prefix
+</em>
+and
+<em>
+suffix
+<del class="diff-old">.
+Generally,
+these
+prefixes
+are
+used
+by
+concatenating
+the
+prefix
+</del>
+</em>
+<del class="diff-old">and
+a
+suffix
+,
+which
+is
+</del>
+separated
+by
+a
+colon
+(
+<code>:
+</code>
+<del class="diff-old">).
+</del>
+<ins class="diff-chg">)
+which
+is
+similar
+to
+the
+</ins><cite><a href="http://www.w3.org/TR/rdfa-core/#s_curies"><ins class="diff-chg">
+CURIE
+Syntax
+</ins></a></cite><ins class="diff-chg">
+in
+[
+</ins><cite><a class="bibref" rel="biblioentry" href="#bib-RDFA-CORE"><ins class="diff-chg">
+RDFA-CORE
+</ins></a></cite><ins class="diff-chg">
+].
+</ins>
+The
+<dfn title="prefix" id="dfn-prefix">
+prefix
+</dfn>
+is
+a
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+taken
+from
+the
+<a class="tref internalDFN" title="active_context" href="#dfn-active_context">
+active
+context
+</a>
+and
+is
+a
+short
+string
+identifying
+a
+particular
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+in
+a
+JSON-LD
+document.
+For
+example,
+the
+prefix
+<code>
+foaf
+</code>
+may
+be
+used
+as
+a
+short
+hand
+for
+the
+Friend-of-a-Friend
+vocabulary,
+which
+is
+identified
+using
+the
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+<code>
+http://xmlns.com/foaf/0.1/
+</code>.
+A
+developer
+may
+append
+any
+of
+the
+FOAF
+<a class="tref internalDFN" title="vocabulary" href="#dfn-vocabulary">
+vocabulary
+</a>
+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
+<a class="tref internalDFN" title="vocabulary" href="#dfn-vocabulary">
+vocabulary
+</a>
+term.
+For
+example,
+<code>
+foaf:name
+</code>
+would
+be
+expanded
+out
+to
+the
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+<code>
+http://xmlns.com/foaf/0.1/name
+</code>.
+Instead
+of
+having
+to
+remember
+and
+type
+out
+the
+entire
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>,
+the
+developer
+can
+instead
+use
+the
+prefix
+in
+their
+JSON-LD
+markup.
+</p>
+<p>
+Terms
+are
+interpreted
+as
+<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
+compact
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+s
+if
+they
+contain
+at
+least
+one
+colon
+and
+the
+first
+colon
+is
+not
+followed
+by
+two
+slashes
+(
+<code>
+//
+</code>,
+as
+in
+<code>
+http://example.com
+</code>
+).
+To
+generate
+the
+full
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+the
+value
+is
+first
+split
+into
+a
+<em>
+prefix
+</em>
+and
+<em>
+suffix
+</em>
+at
+the
+first
+occurrence
+of
+a
+colon
+(
+<code>:
+</code>
+).
+If
+the
+<a class="tref internalDFN" title="active_context" href="#dfn-active_context">
+active
+context
+</a>
+contains
+a
+term
+mapping
+for
+<em>
+prefix
+</em>,
+an
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+is
+generated
+by
+prepending
+the
+mapped
+<em>
+prefix
+</em>
+to
+the
+(possibly
+empty)
+<em>
+suffix
+</em>
+using
+textual
+concatenation.
+If
+no
+prefix
+mapping
+is
+defined,
+the
+value
+is
+interpreted
+as
+an
+<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+If
+the
+prefix
+is
+an
+underscore
+(
+<code>
+_
+</code>
+),
+the
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+remains
+unchanged.
+This
+effectively
+means
+that
+every
+term
+containing
+a
+colon
+will
+be
+interpreted
+by
+a
+JSON-LD
+processor
+as
+an
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>.
+</p>
+<p>
+<del class="diff-old">The
+ability
+to
+use
+compact
+IRIs
+reduces
+the
+need
+for
+developers
+to
+declare
+every
+vocabulary
+term
+that
+they
+intend
+to
+use
+in
+the
+JSON-LD
+context
+.
+This
+reduces
+stand-alone
+JSON-LD
+document
+serialization
+size
+because
+every
+vocabulary
+term
+need
+not
+be
+declared
+in
+the
+embedded
+context.
+Compact
+IRIs
+also
+reduces
+the
+cognitive
+load
+on
+the
+developer.
+It
+is
+far
+easier
+to
+remember
+foaf:name
+than
+it
+is
+to
+remember
+http://xmlns.com/foaf/0.1/name
+.
+The
+use
+of
+prefixes
+also
+ensures
+that
+a
+context
+document
+does
+not
+have
+to
+be
+updated
+in
+lock-step
+with
+an
+externally
+defined
+vocabulary
+.
+Without
+prefixes,
+a
+developer
+would
+need
+to
+keep
+their
+application
+context
+terms
+in
+lock-step
+with
+an
+externally
+defined
+vocabulary.
+Rather,
+by
+just
+declaring
+the
+vocabulary
+prefix,
+one
+can
+use
+new
+terms
+as
+they're
+declared
+without
+having
+to
+update
+the
+application's
+JSON-LD
+context
+.
+</del>
+Consider
+the
+following
+example:
+</p>
+<del class="diff-old"> {
+ "@context":
+ {
+
+
+ },
+ "@id": "http://example.org/library",
+ "@type": ,
+ :
+ {
+ "@id": "http://example.org/library/the-republic",
+ "@type": ,
+ : "Plato",
+ : "The Republic",
+ :
+ {
+ "@id": "http://example.org/library/the-republic#introduction",
+ "@type": ,
+ : "An introductory chapter on The Republic.",
+ : "The Introduction"
+ }
+ }
+</del>
+ <pre class="example">{
+<ins class="diff-chg"> "@context":
+ {
+</ins> <span class="diff">"dc": "http://purl.org/dc/elements/1.1/",</span> <span class="diff">"ex": "http://example.org/vocab#"</span><ins class="diff-chg">
+ },
+ "@id": "http://example.org/library",
+ "@type": <span class="diff">"ex:Library"</span>,
+</ins> <span class="diff">"ex:contains"</span>:<ins class="diff-chg">
+ {
+ "@id": "http://example.org/library/the-republic",
+ "@type": <span class="diff">"ex:Book"</span>,
+</ins> <span class="diff">"dc:creator"</span>: "Plato", <span class="diff">"dc:title"</span>: "The Republic", <span class="diff">"ex:contains"</span>:<ins class="diff-chg">
+ {
+ "@id": "http://example.org/library/the-republic#introduction",
+ "@type": <span class="diff">"ex:Chapter"</span>,
+</ins> <span class="diff">"dc:description"</span>: "An introductory chapter on The Republic.", <span class="diff">"dc:title"</span>: "The Introduction"<ins class="diff-chg">
+ }
+ }
+</ins>
+}
+</pre>
+<p>
+In
+this
+example,
+two
+different
+<a class="tref internalDFN" title="vocabulary" href="#dfn-vocabulary">
+vocabularies
+</a>
+are
+referred
+to
+using
+prefixes.
+Those
+prefixes
+are
+then
+used
+as
+type
+and
+property
+values
+using
+the
+compact
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+<code>
+prefix:suffix
+</code>
+notation.
+</p>
+<p>
+It's
+also
+possible
+to
+use
+compact
+IRIs
+within
+the
+context
+as
+shown
+in
+the
+following
+example:
+</p>
+<del class="diff-old"> {
+ "@context":
+ {
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
+ "foaf": "http://xmlns.com/foaf/0.1/",
+ : { "@type": "@id" },
+ "picture": { "@id": , "@type": "@id" }
+ },
+ "@subject": "http://me.markus-lanthaler.com/",
+ "@type": "foaf:Person",
+ "foaf:name": "Markus Lanthaler",
+ "foaf:homepage": "http://www.markus-lanthaler.com/",
+ "picture": "http://twitter.com/account/profile_image/markuslanthaler"
+</del>
+ <pre class="example">{
+<ins class="diff-chg"> "@context":
+ {
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
+ "foaf": "http://xmlns.com/foaf/0.1/",
+</ins> <span class="diff">"foaf:homepage"</span>: { "@type": "@id" },<ins class="diff-chg">
+ "picture": { "@id": <span class="diff">"foaf:depiction"</span>, "@type": "@id" }
+ },
+ "@subject": "http://me.markus-lanthaler.com/",
+ "@type": "foaf:Person",
+ "foaf:name": "Markus Lanthaler",
+ "foaf:homepage": "http://www.markus-lanthaler.com/",
+ "picture": "http://twitter.com/account/profile_image/markuslanthaler"
+</ins>
+}
+</pre>
+<del class="diff-old">Compact
+IRIs
+,
+also
+known
+as
+CURIEs,
+are
+defined
+more
+formally
+in
+RDFa
+Core
+1.1,
+Section
+6
+"CURIE
+Syntax
+Definition"
+[
+RDFA-CORE
+].
+JSON-LD
+does
+not
+support
+the
+square-bracketed
+CURIE
+syntax
+as
+the
+mechanism
+is
+not
+required
+to
+disambiguate
+IRI
+s
+in
+a
+JSON-LD
+document
+like
+it
+is
+in
+HTML
+documents.
+</del>
+</div>
+<div id="external-contexts" typeof="bibo:Chapter" resource="#external-contexts" rel="bibo:chapter" class="section">
+<h3>
+<span class="secno">
+4.3
+</span>
+External
+Contexts
+</h3>
+<p>
+Authors
+may
+choose
+to
+declare
+JSON-LD
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>
+s
+in
+external
+documents
+to
+promote
+re-use
+of
+contexts
+as
+well
+as
+reduce
+the
+size
+of
+JSON-LD
+documents.
+</p>
+<p>
+In
+order
+to
+use
+an
+external
+context,
+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
+JSON-LD
+document.
+The
+referenced
+document
+<em class="rfc2119" title="must">
+must
+</em>
+have
+a
+top-level
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+</a>.
+The
+value
+of
+any
+<code>
+@context
+</code>
+key
+within
+that
+object
+is
+substituted
+for
+the
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+within
+the
+referencing
+document
+to
+have
+the
+same
+effect
+as
+if
+the
+value
+were
+specified
+inline
+within
+the
+referencing
+document.
+</p>
+<p>
+The
+following
+example
+demonstrates
+the
+use
+of
+an
+external
+context:
+</p>
+<del class="diff-old">{
+ ,
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "depiction": "http://twitter.com/account/profile_image/manusporny"
+</del>
+<pre class="example">{
+ <span class="diff">"@context": "http://json-ld.org/contexts/person"</span>,
+<ins class="diff-chg"> "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "depiction": "http://twitter.com/account/profile_image/manusporny"
+</ins>
+}
+</pre>
+<p>
+Authors
+may
+also
+import
+multiple
+contexts
+or
+a
+combination
+of
+external
+and
+local
+contexts
+by
+specifying
+a
+list
+of
+contexts:
+</p>
+<del class="diff-old">{
+ "@context":
+ [
+ "http://json-ld.org/contexts/person",
+ {
+ "foaf": "http://xmlns.com/foaf/0.1/"
+ },
+ "http://json-ld.org/contexts/event",
+ ]
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "depiction": "http://twitter.com/account/profile_image/manusporny"
+ "celebrates":
+ {
+ "@type": "Event",
+ "description": "International Talk Like a Pirate Day",
+ "date": "R/2011-09-19"
+ }
+</del>
+<pre class="example">{
+ <span class="diff">"@context":
+<ins class="diff-chg"> [
+ "http://json-ld.org/contexts/person",
+ {
+ "foaf": "http://xmlns.com/foaf/0.1/"
+ },
+ "http://json-ld.org/contexts/event",
+ ]</span>
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "depiction": "http://twitter.com/account/profile_image/manusporny"
+</ins> <span class="diff">"celebrates":<ins class="diff-chg">
+ {
+ "@type": "Event",
+ "description": "International Talk Like a Pirate Day",
+ "date": "R/2011-09-19"
+ }</span>
+</ins>
+}
+</pre>
+<p>
+Each
+context
+in
+a
+list
+will
+be
+evaluated
+in-order.
+Duplicate
+mappings
+among
+the
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>
+s
+<em class="rfc2119" title="must">
+must
+</em>
+be
+overwritten
+on
+a
+last-defined-overrides
+basis.
+The
+context
+list
+<em class="rfc2119" title="must">
+must
+</em>
+contain
+either
+de-referenceable
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+s
+or
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+</a>
+s
+that
+conform
+to
+the
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>
+syntax
+as
+described
+in
+this
+document.
+</p>
+<p>
+An
+author
+<em class="rfc2119" title="may">
+may
+</em>
+nest
+contexts
+within
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+</a>
+s,
+with
+the
+more
+deeply
+nested
+contexts
+overriding
+the
+values
+in
+previously
+defined
+contexts:
+</p>
+<del class="diff-old">{
+ "@context":
+ {
+ "name": "http://example.com/person#name",
+ "details": "http://example.com/person#details"
+ },
+ "": "Markus Lanthaler",
+ ...
+ "details":
+ {
+
+ "": "Graz University of Technology"
+ }
+</del>
+<pre class="example">{
+ <span class="diff">"@context":
+<ins class="diff-chg"> {
+ "name": "http://example.com/person#name",
+ "details": "http://example.com/person#details"
+ },</span>
+ "<span class="diff">name</span>": "Markus Lanthaler",
+ ...
+ "details":
+ {
+</ins> <span class="diff">"@context": {<ins class="diff-chg">
+ "name": "http://example.com/organization#name"
+ },</span>
+ "<span class="diff">name</span>": "Graz University of Technology"
+ }
+</ins>
+}
+</pre>
+<p>
+In
+the
+example
+above,
+the
+<code>
+name
+</code>
+prefix
+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
+the
+JSON
+object
+has
+legacy
+applications
+using
+the
+structure
+of
+the
+object.
+</p>
+<p>
+External
+JSON-LD
+context
+documents
+<em class="rfc2119" title="may">
+may
+</em>
+contain
+extra
+information
+located
+outside
+of
+the
+<code>
+@context
+</code>
+key,
+such
+as
+documentation
+about
+the
+<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
+prefixes
+</a>
+declared
+in
+the
+document.
+When
+importing
+a
+<code>
+@context
+</code>
+value
+from
+an
+external
+JSON-LD
+context
+document,
+any
+extra
+information
+contained
+outside
+of
+the
+<code>
+@context
+</code>
+value
+<em class="rfc2119" title="must">
+must
+</em>
+be
+discarded.
+It
+is
+also
+<em class="rfc2119" title="recommended">
+recommended
+</em>
+that
+a
+human-readable
+document
+<del class="diff-old">encoded
+in
+HTML+RDFa
+[
+HTML-RDFA
+]
+or
+other
+Linked
+Data
+compatible
+format
+</del>
+is
+served
+as
+well
+to
+explain
+the
+correct
+usage
+of
+the
+JSON-LD
+context
+document.
+</p>
+</div>
+<div id="referencing-contexts-from-json-documents" typeof="bibo:Chapter" resource="#referencing-contexts-from-json-documents" rel="bibo:chapter" class="section">
+<h3>
+<span class="secno">
+4.4
+</span>
+Referencing
+Contexts
+from
+JSON
+Documents
+</h3>
+<p>
+Ordinary
+JSON
+documents
+can
+be
+transformed
+into
+JSON-LD
+documents
+by
+referencing
+to
+an
+external
+JSON-LD
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>
+in
+an
+HTTP
+Link
+Header.
+Doing
+this
+allows
+JSON
+to
+be
+unambiguously
+machine-readable
+without
+requiring
+developers
+to
+drastically
+change
+their
+workflow
+and
+provides
+an
+upgrade
+path
+for
+existing
+infrastructure
+without
+breaking
+existing
+clients
+that
+rely
+on
+the
+<code>
+application/json
+</code>
+media
+type.
+</p>
+<p>
+In
+order
+to
+use
+an
+external
+context
+with
+an
+ordinary
+JSON
+document,
+an
+author
+<em class="rfc2119" title="must">
+must
+</em>
+specify
+an
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+to
+a
+valid
+JSON-LD
+document
+in
+an
+HTTP
+Link
+Header
+[
+<cite>
+<a class="bibref" rel="biblioentry" href="#bib-RFC5988">
+RFC5988
+</a>
+</cite>
+]
+using
+the
+<code>
+describedby
+</code>
+link
+relation.
+The
+referenced
+document
+<em class="rfc2119" title="must">
+must
+</em>
+have
+a
+top-level
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+</a>.
+The
+<code>
+@context
+</code>
+subtree
+within
+that
+object
+is
+added
+to
+the
+top-level
+object
+of
+the
+referencing
+document.
+If
+an
+array
+is
+at
+the
+top-level
+of
+the
+referencing
+document
+and
+its
+items
+are
+objects,
+the
+<code>
+@context
+</code>
+subtree
+is
+added
+to
+all
+array
+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.
+</p>
+<p>
+The
+following
+example
+demonstrates
+the
+use
+of
+an
+external
+context
+with
+an
+ordinary
+JSON
+document:
+</p>
+<del class="diff-old">GET /ordinary-json-document.json HTTP/1.1
+Host: example.com
+Accept: application/json,*/*;q=0.1
+
+====================================
+
+HTTP/1.0 200 OK
+...
+Content-Type: application/json
+
+
+{
+ "name": "Markus Lanthaler",
+ "homepage": "http://www.markus-lanthaler.com/",
+ "depiction": "http://twitter.com/account/profile_image/markuslanthaler"
+</del>
+<pre class="example">GET /ordinary-json-document.json HTTP/1.1
+<ins class="diff-chg">Host: example.com
+Accept: application/ld+json,application/json,*/*;q=0.1
+====================================
+HTTP/1.0 200 OK
+...
+Content-Type: <span class="diff">application/json</span>
+</ins><span class="diff">Link: <http://json-ld.org/contexts/person>; rel="describedby"; type="application/ld+json"</span><ins class="diff-chg">
+{
+ "name": "Markus Lanthaler",
+ "homepage": "http://www.markus-lanthaler.com/",
+ "depiction": "http://twitter.com/account/profile_image/markuslanthaler"
+</ins>
+}
+</pre>
+<p class="note">
+JSON-LD
+documents
+served
+with
+the
+<code>
+application/ld+json
+</code>
+media
+type
+<em class="rfc2119" title="must">
+must
+</em>
+have
+all
+context
+information,
+including
+references
+to
+external
+contexts,
+within
+the
+body
+of
+the
+document.
+</p>
+</div>
+<div id="expanded-term-definition" typeof="bibo:Chapter" resource="#expanded-term-definition" rel="bibo:chapter" class="section">
+<h3>
+<span class="secno">
+4.5
+</span>
+Expanded
+Term
+Definition
+</h3>
+<p>
+Within
+a
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>
+definition,
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+s
+<em class="rfc2119" title="may">
+may
+</em>
+be
+defined
+using
+an
+expanded
+notation
+to
+allow
+for
+additional
+information
+associated
+with
+the
+term
+to
+be
+specified
+(see
+also
+<a href="#type-coercion">
+Type
+Coercion
+</a>
+and
+<a href="#sets-and-lists">
+Sets
+and
+Lists
+</a>
+).
+</p>
+<p>
+Instead
+of
+using
+a
+string
+representation
+of
+an
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>,
+the
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+<em class="rfc2119" title="may">
+may
+</em>
+be
+specified
+using
+an
+object
+having
+an
+<code>
+@id
+</code>
+key.
+The
+value
+of
+the
+<code>
+@id
+</code>
+key
+<em class="rfc2119" title="must">
+must
+</em>
+be
+either
+a
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>,
+a
+<del class="diff-old">prefix
+:suffix
+value,
+</del>
+<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
+<ins class="diff-chg">compact
+</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
+IRI
+</ins></abbr></a>,
+or
+an
+<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+<del class="diff-old">Type
+information
+may
+be
+specified
+</del>
+</p>
+<del class="diff-old">{
+ "@context":
+ {
+ "foaf": ,
+ "name": ,
+ "homepage": ,
+ "depiction":
+ },
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "depiction": "http://twitter.com/account/profile_image/manusporny"
+</del>
+<pre class="example">{
+<ins class="diff-chg"> "@context":
+ {
+ "foaf": <span class="diff">{ "@id": "http://xmlns.com/foaf/0.1/" }</span>,
+ "name": <span class="diff">{ "@id": "http://xmlns.com/foaf/0.1/name" }</span>,
+ "homepage": <span class="diff">{ "@id": "foaf:homepage" }</span>,
+ "depiction": <span class="diff">{ "@id": "foaf:depiction" }</span>
+ },
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "depiction": "http://twitter.com/account/profile_image/manusporny"
+</ins>
+}
+</pre>
+<p>
+This
+allows
+additional
+information
+to
+be
+associated
+with
+the
+term.
+This
+<em class="rfc2119" title="may">
+may
+</em>
+be
+used
+for
+<a href="#type-coercion">
+Type
+Coercion
+</a>,
+<a href="#sets-and-lists">
+Sets
+and
+Lists
+</a>
+),
+or
+to
+associate
+language
+information
+with
+a
+term
+as
+shown
+in
+the
+following
+example:
+</p>
+<del class="diff-old">{
+ "@context": {
+ ...
+ "ex": "http://example.com/",
+ "@language": "ja",
+ "name": { "@id": "ex:name", },
+ "occupation": { "@id": "ex:occupation" },
+ "occupation_en": { "@id": "ex:occupation", },
+ "occupation_de": { "@id": "ex:occupation", }
+ },
+ "name": "Yagyū Muneyoshi",
+ "occupation": "忍者",
+ "occupation_en": "Ninja",
+ "occupation_cs": "Nindža",
+ ...
+</del>
+<pre class="example">{
+<ins class="diff-chg"> "@context": {
+ ...
+ "ex": "http://example.com/",
+ "@language": "ja",
+ "name": { "@id": "ex:name", <span class="diff">"@language": null</span> },
+ "occupation": { "@id": "ex:occupation" },
+ "occupation_en": { "@id": "ex:occupation", <span class="diff">"@language": "en"</span> },
+ "occupation_cs": { "@id": "ex:occupation", <span class="diff">"@language": "cs"</span> }
+ },
+</ins> <span class="diff">"name": "Yagyū Muneyoshi",<ins class="diff-chg">
+ "occupation": "忍者",
+ "occupation_en": "Ninja",
+ "occupation_cs": "Nindža",</span>
+ ...
+</ins>
+}
+</pre>
+<p>
+The
+example
+above
+would
+associate
+<em>
+忍者
+</em>
+with
+the
+specified
+default
+language
+code
+<code>
+ja
+</code>,
+<em>
+Ninja
+</em>
+with
+the
+language
+code
+<code>
+en
+</code>,
+and
+<em>
+Nindža
+</em>
+with
+the
+language
+code
+<code>
+cs
+</code>.
+The
+value
+of
+<code>
+name
+</code>,
+<em>
+Yagyū
+Muneyoshi
+</em>
+wouldn't
+be
+associated
+with
+any
+language
+code
+since
+<del class="diff-old">it
+</del>
+<code>
+<ins class="diff-chg">@language
+</ins></code>
+was
+reset
+<ins class="diff-new">to
+</ins><a class="tref internalDFN" title="null" href="#dfn-null"><ins class="diff-new">
+null
+</ins></a>
+in
+the
+expanded
+term
+definition.
+</p>
+<p>
+Expanded
+terms
+<em class="rfc2119" title="may">
+may
+</em>
+also
+be
+defined
+using
+<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
+<del class="diff-old">Compact
+</del>
+<ins class="diff-chg">compact
+</ins>
+IRIs
+</a>
+or
+<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
+<ins class="diff-chg">absolute
+</ins>
+IRIs
+</a>
+as
+keys.
+If
+the
+definition
+does
+not
+include
+an
+<code>
+@id
+</code>
+key,
+the
+expanded
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+is
+determined
+by
+performing
+expansion
+of
+the
+key
+within
+the
+current
+active
+context.
+<ins class="diff-new">This
+mechanism
+is
+mainly
+used
+to
+associate
+type
+or
+language
+information
+with
+a
+</ins><a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri"><ins class="diff-new">
+compact
+</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
+IRI
+</ins></abbr></a><ins class="diff-new">
+or
+an
+</ins><a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri"><ins class="diff-new">
+absolute
+</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
+IRI
+</ins></abbr></a>.
+</p>
+<p class="note">
+<del class="diff-old">Although
+</del>
+<ins class="diff-chg">While
+</ins>
+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
+<ins class="diff-new">an
+absolute
+</ins>
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+to
+expand
+to
+some
+other
+<ins class="diff-new">unrelated
+</ins>
+<abbr title="Internationalized Resource Identifier">
+IRI
+<del class="diff-old">,
+</del>
+</abbr>
+<ins class="diff-chg">(for
+example,
+</ins><code><ins class="diff-chg">
+foaf:name
+</ins></code><ins class="diff-chg">
+expanding
+to
+</ins><code><ins class="diff-chg">
+http://example.org/unrelated#species
+</ins></code><ins class="diff-chg">
+),
+</ins>
+such
+usage
+is
+strongly
+discouraged.
+</p>
+</div>
+<div id="type-coercion" typeof="bibo:Chapter" resource="#type-coercion" rel="bibo:chapter" class="section">
+<h3>
+<span class="secno">
+4.6
+</span>
+Type
+Coercion
+</h3>
+<p>
+JSON-LD
+supports
+the
+coercion
+of
+values
+to
+particular
+data
+types.
+Type
+<dfn title="coercion" id="dfn-coercion">
+coercion
+</dfn>
+allows
+someone
+deploying
+JSON-LD
+to
+coerce
+the
+incoming
+or
+outgoing
+<del class="diff-old">types
+</del>
+<ins class="diff-chg">values
+</ins>
+to
+the
+proper
+data
+type
+based
+on
+a
+mapping
+of
+data
+type
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+s
+to
+<del class="diff-old">property
+types.
+</del>
+<a class="tref internalDFN" title="term" href="#dfn-term">
+<ins class="diff-chg">term
+</ins></a><ins class="diff-chg">
+s.
+</ins>
+Using
+type
+coercion,
+value
+representation
+is
+preserved
+without
+requiring
+the
+data
+type
+to
+be
+specified
+with
+each
+<del class="diff-old">usage.
+</del>
+<ins class="diff-chg">piece
+of
+data.
+</ins>
+</p>
+<p>
+Type
+coercion
+is
+specified
+within
+an
+<a href="#expanded-term-definition">
+expanded
+term
+definition
+</a>
+using
+the
+<code>
+@type
+</code>
+key.
+The
+<del class="diff-old">values
+</del>
+<ins class="diff-chg">value
+</ins>
+of
+this
+key
+<del class="diff-old">represent
+</del>
+<ins class="diff-chg">represents
+a
+</ins>
+type
+<del class="diff-old">IRIs
+</del>
+<abbr title="Internationalized Resource Identifier">
+<ins class="diff-chg">IRI
+</ins></abbr>
+and
+<em class="rfc2119" title="must">
+must
+</em>
+take
+the
+form
+of
+<ins class="diff-new">a
+</ins>
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>,
+<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
+compact
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
+absolute
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>,
+or
+the
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>
+<code>
+@id
+</code>.
+Specifying
+<code>
+@id
+</code>
+indicates
+that
+within
+the
+body
+of
+a
+JSON-LD
+document,
+<ins class="diff-new">a
+</ins>
+string
+<del class="diff-old">values
+</del>
+<ins class="diff-chg">value
+</ins>
+of
+<del class="diff-old">keys
+</del>
+<ins class="diff-chg">a
+</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
+term
+</ins></a>
+coerced
+<del class="diff-old">as
+</del>
+<ins class="diff-chg">to
+</ins>
+<code>
+@id
+</code>
+<del class="diff-old">are
+</del>
+<ins class="diff-chg">is
+</ins>
+to
+be
+interpreted
+as
+<ins class="diff-new">an
+</ins>
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+<del class="diff-old">s.
+</del>
+</a>.
+</p>
+<p>
+<a class="tref internalDFN" title="term" href="#dfn-term">
+Terms
+</a>
+or
+<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
+compact
+IRIs
+</a>
+used
+as
+the
+value
+of
+a
+<code>
+@type
+</code>
+key
+<em class="rfc2119" title="may">
+may
+</em>
+be
+defined
+within
+the
+same
+context.
+<ins class="diff-new">This
+means
+that
+one
+may
+specify
+a
+</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-new">
+term
+</ins></a><ins class="diff-new">
+like
+</ins><code><ins class="diff-new">
+xsd
+</ins></code><ins class="diff-new">
+and
+then
+use
+</ins><code><ins class="diff-new">
+xsd:integer
+</ins></code><ins class="diff-new">
+within
+the
+same
+context
+definition
+-
+the
+JSON-LD
+processor
+will
+be
+able
+to
+determine
+the
+proper
+expansion
+for
+</ins><code><ins class="diff-new">
+xsd:integer
+</ins></code>.
+</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
+value
+</a>
+s,
+IRIs
+and
+lists.
+</p>
+<del class="diff-old">{
+ "@context":
+ {
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "age":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/age",
+ "@type": "xsd:integer"
+ },
+ "homepage":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id",
+ "@container": "@list"
+ }
+ },
+ "name": "John Smith",
+ "age": ,
+ "homepage":
+ [
+ "http://personal.example.org/",
+ "http://work.example.com/jsmith/"
+ ]
+</del>
+<pre class="example">{
+<ins class="diff-chg"> "@context":
+ {
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "age":
+</ins> <span class="diff">{<ins class="diff-chg">
+ "@id": "http://xmlns.com/foaf/0.1/age",
+ "@type": "xsd:integer"
+ }</span>,
+ "homepage":
+</ins> <span class="diff">{<ins class="diff-chg">
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id",
+ "@container": "@list"
+ }</span>
+ },
+ "name": "John Smith",
+ "age": <span class="diff">"41"</span>,
+ "homepage":
+</ins> <span class="diff">[<ins class="diff-chg">
+ "http://personal.example.org/",
+ "http://work.example.com/jsmith/"
+ ]</span>
+</ins>
+}
+</pre>
+<p>
+The
+example
+above
+would
+generate
+the
+following
+Turtle:
+</p>
+<del class="diff-old">@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+
+[ foaf:name "John Smith";
+ foaf:age "41"^^xsd:integer;
+ foaf:homepage ( <http://personal.example.org/> <http://work.example.com/jsmith/> )
+</del>
+<pre class="example">@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+<ins class="diff-chg">[ foaf:name "John Smith";
+ foaf:age "41"^^xsd:integer;
+ foaf:homepage ( <http://personal.example.org/> <http://work.example.com/jsmith/> )
+</ins>
+]
+.
+</pre>
+<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
+by
+applied
+to
+keys
+which
+are
+not
+represented
+as
+a
+simple
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>.
+For
+example:
+</p>
+<del class="diff-old">{
+ "@context":
+ {
+ ,
+ "":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/"",
+ "@type": "xsd:integer"
+ },
+ "":
+ {
+ "@type": "@id"
+ }
+</del>
+<pre class="example">{
+<ins class="diff-chg"> "@context":
+ {
+</ins> <span class="diff">"foaf": "http://xmlns.com/foaf/0.1/"</span>,<ins class="diff-chg">
+ "<span class="diff">foaf:age</span>":
+ {
+ "@type": "xsd:integer"
+ },
+ "<span class="diff">foaf:homepage</span>":
+</ins> <span class="diff">{<ins class="diff-chg">
+ "@type": "@id"
+ }</span>
+ },
+ "foaf:name": "John Smith",
+ "foaf:age": <span class="diff">"41"</span>,
+ "foaf:homepage":
+</ins> <span class="diff">[<ins class="diff-chg">
+ "http://personal.example.org/",
+ "http://work.example.com/jsmith/"
+ ]</span>
+</ins>
+}
+</pre>
+<p>
+In
+this
+<del class="diff-old">case,
+</del>
+<ins class="diff-chg">case
+</ins>
+the
+<code>
+@id
+</code>
+definition
+is
+optional,
+but
+if
+it
+does
+exist,
+the
+<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
+compact
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+or
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+is
+treated
+as
+a
+term
+<ins class="diff-new">(not
+a
+</ins><code><ins class="diff-new">
+prefix:suffix
+</ins></code><ins class="diff-new">
+construct)
+</ins>
+so
+that
+the
+actual
+definition
+of
+a
+<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
+prefix
+</a>
+becomes
+unnecessary.
+</p>
+<p class="note">
+Keys
+in
+the
+context
+are
+treated
+as
+<a class="tref internalDFN" title="term" href="#dfn-term">
+terms
+</a>
+for
+the
+purpose
+of
+expansion
+and
+value
+coercion.
+<del class="diff-old">This
+allows
+</del>
+<ins class="diff-chg">At
+times,
+this
+may
+result
+in
+</ins>
+multiple
+representations
+for
+the
+same
+expanded
+<abbr title="Internationalized Resource Identifier">
+IRI
+<del class="diff-old">,
+which
+may
+</del>
+</abbr>.
+<ins class="diff-chg">For
+example,
+one
+could
+specify
+that
+</ins><code><ins class="diff-chg">
+dog
+</ins></code><ins class="diff-chg">
+and
+</ins><code><ins class="diff-chg">
+cat
+</ins></code><ins class="diff-chg">
+both
+expanded
+to
+</ins><code><ins class="diff-chg">
+http://example.com/vocab#animal
+</ins></code>.<ins class="diff-chg">
+Doing
+this
+could
+</ins>
+be
+useful
+for
+establishing
+different
+type
+coercion
+<ins class="diff-new">or
+language
+specification
+</ins>
+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
+<del class="diff-old">entirely,
+</del>
+<ins class="diff-chg">entirely.
+For
+example,
+one
+could
+specify
+that
+the
+</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
+term
+</ins></a><code><ins class="diff-chg">
+http://example.org/zoo
+</ins></code><ins class="diff-chg">
+should
+expand
+to
+</ins><code><ins class="diff-chg">
+http://example.org/river
+</ins></code>,
+but
+this
+usage
+is
+<del class="diff-old">discouraged.
+</del>
+<ins class="diff-chg">discouraged
+because
+it
+would
+lead
+to
+a
+great
+deal
+of
+confusion
+among
+developers
+attempting
+to
+understand
+the
+JSON-LD
+document.
+</ins>
+</p>
+<p>
+Type
+coercion
+is
+performed
+using
+the
+unexpanded
+value
+of
+the
+key,
+which
+<em class="rfc2119" title="must">
+must
+</em>
+<del class="diff-old">exactly
+</del>
+<ins class="diff-chg">have
+an
+exact
+</ins>
+match
+<del class="diff-old">a
+coercion
+rule
+</del>
+<ins class="diff-chg">for
+an
+entry
+</ins>
+in
+the
+<a class="tref internalDFN" title="active_context" href="#dfn-active_context">
+active
+context
+</a>.
+</p>
+</div>
+<div id="iri-expansion-within-a-context" typeof="bibo:Chapter" resource="#iri-expansion-within-a-context" rel="bibo:chapter" class="section">
+<h3>
+<span class="secno">
+4.7
+</span>
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+Expansion
+Within
+a
+Context
+</h3>
+<p>
+<del class="diff-old">To
+be
+consistent
+with
+JSON-LD,
+in
+</del>
+<ins class="diff-chg">In
+</ins>
+general,
+<del class="diff-old">anywhere
+an
+IRI
+is
+expected,
+</del>
+normal
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+expansion
+rules
+apply
+<ins class="diff-new">anywhere
+an
+</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
+IRI
+</ins></abbr><ins class="diff-new">
+is
+expected
+</ins>
+(see
+<a href="#iris">
+IRIs
+</a>
+).
+Within
+a
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>
+definition,
+this
+can
+mean
+that
+terms
+defined
+within
+<del class="diff-old">a
+given
+</del>
+<ins class="diff-chg">the
+</ins>
+context
+<em class="rfc2119" title="may">
+may
+</em>
+also
+be
+used
+within
+that
+<del class="diff-old">context,
+</del>
+<ins class="diff-chg">context
+</ins>
+as
+long
+as
+there
+are
+no
+circular
+dependencies.
+For
+example,
+it
+is
+common
+to
+use
+the
+<code>
+xsd
+</code>
+namespace
+when
+defining
+<a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">
+typed
+value
+</a>
+s:
+</p>
+<del class="diff-old">{
+ "@context":
+ {
+ ,
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "age":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/age",
+ "@type":
+ },
+ "homepage":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+ }
+ },
+ ...
+</del>
+<pre class="example">{
+<ins class="diff-chg"> "@context":
+ {
+</ins> <span class="diff">"xsd": "http://www.w3.org/2001/XMLSchema#"</span>,<ins class="diff-chg">
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "age":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/age",
+ "@type": <span class="diff">"xsd:integer"</span>
+ },
+ "homepage":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+ }
+ },
+ ...
+</ins>
+}
+</pre>
+<p>
+In
+this
+example,
+the
+<code>
+xsd
+</code>
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+is
+<del class="diff-old">defined,
+</del>
+<ins class="diff-chg">defined
+</ins>
+and
+used
+as
+a
+<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
+prefix
+</a>
+for
+the
+<code>
+@type
+</code>
+coercion
+of
+the
+<code>
+age
+</code>
+property.
+</p>
+<p>
+<a class="tref internalDFN" title="term" href="#dfn-term">
+Term
+</a>
+s
+<em class="rfc2119" title="may">
+may
+</em>
+also
+be
+used
+when
+defining
+the
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+of
+another
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>:
+</p>
+<del class="diff-old">{
+ "@context":
+ {
+ ,
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
+ "name": ,
+ "age":
+ {
+ "@id": ,
+ "@type": "xsd:integer"
+ },
+ "homepage":
+ {
+ "@id": ,
+ "@type": "@id"
+ }
+ },
+ ...
+</del>
+<pre class="example">{
+<ins class="diff-chg"> "@context":
+ {
+</ins> <span class="diff">"foaf": "http://xmlns.com/foaf/0.1/"</span>,<ins class="diff-chg">
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
+ "name": <span class="diff">"foaf:name"</span>,
+ "age":
+ {
+ "@id": <span class="diff">"foaf:age"</span>,
+ "@type": "xsd:integer"
+ },
+ "homepage":
+ {
+ "@id": <span class="diff">"foaf:homepage"</span>,
+ "@type": "@id"
+ }
+ },
+ ...
+</ins>
+}
+</pre>
+<p>
+<del class="diff-old">Not
+only
+term
+s,
+but
+also
+</del>
+<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>
+<em class="rfc2119" title="may">
+may
+</em>
+be
+used
+on
+the
+left-hand
+side
+of
+a
+<a class="tref internalDFN" title="term" href="#dfn-term">
+<ins class="diff-new">term
+</ins></a>
+definition.
+</p>
+<del class="diff-old">{
+ "@context":
+ {
+ ,
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
+ "name": "foaf:name",
+ "":
+ {
+ "@id": "foaf:age",
+ "@type": "xsd:integer"
+ },
+ "":
+ {
+ "@type": "@id"
+ }
+ },
+ ...
+</del>
+<pre class="example">{
+<ins class="diff-chg"> "@context":
+ {
+</ins> <span class="diff">"foaf": "http://xmlns.com/foaf/0.1/"</span>,<ins class="diff-chg">
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
+ "name": "foaf:name",
+ "<span class="diff">foaf:age</span>":
+ {
+ "@type": "xsd:integer"
+ },
+ "<span class="diff">foaf:homepage</span>":
+</ins> <span class="diff">{<ins class="diff-chg">
+ "@type": "@id"
+ }</span>
+ },
+ ...
+</ins>
+}
+</pre>
+<p>
+In
+this
+example,
+the
+<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
+compact
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+form
+is
+used
+in
+two
+different
+ways.
+<del class="diff-old">The
+</del>
+<ins class="diff-chg">In
+the
+</ins>
+first
+<del class="diff-old">way,
+as
+shown
+with
+</del>
+<ins class="diff-chg">approach,
+</ins>
+<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
+term
+(using
+short-form)
+as
+well
+as
+the
+<code>
+@type
+</code>
+associated
+with
+the
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>.
+<del class="diff-old">The
+</del>
+<ins class="diff-chg">In
+the
+</ins>
+second
+<del class="diff-old">way,
+</del>
+<ins class="diff-chg">approach,
+</ins>
+only
+<del class="diff-old">declares
+</del>
+the
+<code>
+@type
+</code>
+associated
+with
+the
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+<del class="diff-old">.
+In
+the
+second
+case,
+the
+</del>
+</a>
+<ins class="diff-chg">is
+specified.
+The
+</ins>
+JSON-LD
+processor
+will
+<del class="diff-old">still
+</del>
+derive
+the
+full
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+<ins class="diff-new">for
+</ins><code><ins class="diff-new">
+foaf:homepage
+</ins></code>
+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
+<del class="diff-old">for
+foaf:homepage
+.
+</del>
+</a>.
+</p>
+<p>
+<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">
+Absolute
+IRIs
+</a>
+<em class="rfc2119" title="may">
+may
+</em>
+also
+be
+used
+<del class="diff-old">on
+</del>
+<ins class="diff-chg">in
+</ins>
+the
+<del class="diff-old">left-hand
+side
+of
+</del>
+<ins class="diff-chg">key
+position
+in
+</ins>
+a
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>:
+</p>
+<del class="diff-old">{
+ "@context":
+ {
+ "foaf": "http://xmlns.com/foaf/0.1/",
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
+ "name": "foaf:name",
+ "foaf:age":
+ {
+ "@id": "foaf:age",
+ "@type": "xsd:integer"
+ },
+ "":
+ {
+ "@type": "@id"
+ }
+ },
+ ...
+</del>
+<pre class="example">{
+<ins class="diff-chg"> "@context":
+ {
+ "foaf": "http://xmlns.com/foaf/0.1/",
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
+ "name": "foaf:name",
+ "foaf:age":
+ {
+ "@id": "foaf:age",
+ "@type": "xsd:integer"
+ },
+ "<span class="diff">http://xmlns.com/foaf/0.1/homepage</span>":
+ {
+ "@type": "@id"
+ }
+ },
+ ...
+</ins>
+}
+</pre>
+<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>
+<em class="rfc2119" title="must">
+must
+</em>
+also
+be
+used
+in
+the
+JSON-LD
+document.
+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
+JSON-LD
+processor
+will
+use
+direct
+string
+comparison
+when
+looking
+up
+<a class="tref internalDFN" title="term" href="#dfn-term">
+term
+</a>
+s
+in
+a
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>
+before
+it
+applies
+the
+<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
+prefix
+</a>
+lookup
+mechanism.
+</p>
+<p>
+The
+only
+exception
+for
+using
+terms
+in
+the
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>
+is
+that
+they
+<em class="rfc2119" title="must not">
+must
+not
+</em>
+be
+used
+in
+a
+circular
+manner.
+That
+is,
+a
+definition
+of
+<em>
+term-1
+</em>
+<em class="rfc2119" title="must not">
+must
+not
+</em>
+depend
+on
+the
+definition
+of
+<em>
+term-2
+</em>
+if
+<em>
+term-2
+</em>
+also
+depends
+on
+<em>
+term-1
+</em>.
+For
+example,
+the
+following
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>
+definition
+is
+illegal:
+</p>
+<del class="diff-old">{
+ "@context":
+ {
+ "term1": "term2:foo",
+ "term2": "term1:bar"
+ },
+ ...
+</del>
+<pre class="example">{
+<ins class="diff-chg"> "@context":
+ {
+</ins> <span class="diff">"term1": "term2:foo",<ins class="diff-chg">
+ "term2": "term1:bar"</span>
+ },
+ ...
+</ins>
+}
+</pre>
+</div>
+<div id="embedding" typeof="bibo:Chapter" resource="#embedding" rel="bibo:chapter" class="section">
+<h3>
+<span class="secno">
+4.8
+</span>
+Embedding
+</h3>
+<p>
+Object
+<dfn title="embedding" id="dfn-embedding">
+embedding
+</dfn>
+is
+a
+JSON-LD
+feature
+that
+allows
+an
+author
+to
+use
+the
+definition
+of
+JSON-LD
+objects
+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="subject" href="#dfn-subject">
+subject
+</a>
+s.
+</p>
+<p>
+The
+example
+shows
+two
+subjects
+related
+by
+a
+property
+from
+the
+first
+subject:
+</p>
+<del class="diff-old"> {
+...
+ "name": "Manu Sporny",
+ "":
+ {
+ "",
+ "",
+ }
+...
+</del>
+ <pre class="example">{
+<ins class="diff-chg">...
+ "name": "Manu Sporny",
+ "<span class="diff">knows</span>":
+ {
+ "<span class="diff">@type</span>": "<span class="diff">Person</span>",
+ "<span class="diff">name</span>": "<span class="diff">Gregg Kellogg</span>",
+ }
+...
+</ins>
+}
+</pre>
+<p>
+An
+object
+definition,
+like
+the
+one
+used
+above,
+<em class="rfc2119" title="may">
+may
+</em>
+be
+used
+<del class="diff-old">as
+a
+JSON
+value
+at
+</del>
+<ins class="diff-chg">in
+</ins>
+any
+<del class="diff-old">point
+</del>
+<ins class="diff-chg">value
+position
+</ins>
+in
+<del class="diff-old">JSON-LD.
+</del>
+<ins class="diff-chg">the
+body
+of
+a
+JSON-LD
+document.
+</ins>
+</p>
+</div>
+<div id="named-graphs" typeof="bibo:Chapter" resource="#named-graphs" rel="bibo:chapter" class="section">
+<h3>
+<span class="secno">
+4.9
+</span>
+Named
+Graphs
+</h3>
+<p>
+The
+<code>
+@graph
+</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>
+is
+used
+to
+<del class="diff-old">identify
+</del>
+<ins class="diff-chg">express
+</ins>
+a
+set
+of
+JSON-LD
+<del class="diff-old">object
+definitions
+</del>
+<a class="tref internalDFN" title="subject_definition" href="#dfn-subject_definition">
+<ins class="diff-chg">subject
+definition
+</ins></a><ins class="diff-chg">
+s
+</ins>
+that
+may
+not
+be
+directly
+related
+<ins class="diff-new">to
+one
+another
+</ins>
+through
+a
+<del class="diff-old">property,
+or
+</del>
+<ins class="diff-chg">property.
+The
+mechanism
+may
+also
+be
+used
+</ins>
+where
+<a class="tref internalDFN" title="embedding" href="#dfn-embedding">
+embedding
+</a>
+is
+not
+<del class="diff-old">appropriate.
+</del>
+<ins class="diff-chg">desirable
+to
+the
+application.
+</ins>
+For
+example:
+</p>
+<del class="diff-old"> {
+ "@context": ...,
+ "":
+ [
+ {
+ "@id": "http://manu.sporny.org/i/public",
+ "@type": "foaf:Person",
+ "name": "Manu Sporny",
+ "knows" "http://greggkellogg.net/foaf#me"
+ },
+ {
+ "@id": "http://greggkellogg.net/foaf#me",
+ "@type": "foaf:Person",
+ "name": "Gregg Kellogg",
+ "knows" "http://manu.sporny.org/i/public"
+ }
+ ]
+</del>
+ <pre class="example">{
+<ins class="diff-chg"> "@context": ...,
+ "<span class="diff">@graph</span>":
+ [
+ {
+ "@id": "http://manu.sporny.org/i/public",
+ "@type": "foaf:Person",
+ "name": "Manu Sporny",
+ "knows": "http://greggkellogg.net/foaf#me"
+ },
+ {
+ "@id": "http://greggkellogg.net/foaf#me",
+ "@type": "foaf:Person",
+ "name": "Gregg Kellogg",
+ "knows": "http://manu.sporny.org/i/public"
+ }
+ ]
+</ins>
+}
+</pre>
+<p>
+In
+this
+case,
+embedding
+doesn't
+work
+as
+each
+JSON-LD
+object
+references
+the
+other.
+Using
+the
+<code>
+@graph
+</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>
+allows
+multiple
+resources
+to
+be
+defined
+within
+an
+<a class="tref internalDFN" title="array" href="#dfn-array">
+array
+</a>,
+and
+allows
+the
+use
+of
+a
+shared
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>.
+This
+is
+equivalent
+to
+using
+multiple
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+</a>
+definitions
+in
+array
+and
+defining
+the
+<code>
+@context
+</code>
+within
+each
+object:
+</p>
+<del class="diff-old">
+ {
+
+ "@id": "http://manu.sporny.org/i/public",
+ "@type": "foaf:Person",
+ "name": "Manu Sporny",
+ "knows" "http://greggkellogg.net/foaf#me"
+ },
+ {
+
+ "@id": "http://greggkellogg.net/foaf#me",
+ "@type": "foaf:Person",
+ "name": "Gregg Kellogg",
+ "knows" "http://manu.sporny.org/i/public"
+ }
+</del>
+ <pre class="example"><span class="diff">[</span>
+<ins class="diff-chg"> {
+</ins> <span class="diff">"@context": ...,</span><ins class="diff-chg">
+ "@id": "http://manu.sporny.org/i/public",
+ "@type": "foaf:Person",
+ "name": "Manu Sporny",
+ "knows": "http://greggkellogg.net/foaf#me"
+ },
+ {
+</ins> <span class="diff">"@context": ...,</span><ins class="diff-chg">
+ "@id": "http://greggkellogg.net/foaf#me",
+ "@type": "foaf:Person",
+ "name": "Gregg Kellogg",
+ "knows": "http://manu.sporny.org/i/public"
+ }
+</ins>
+<span class="diff">
+]
+</span>
+</pre>
+<p>
+<del class="diff-old">The
+@graph
+keyword
+takes
+on
+additional
+meaning
+when
+it
+is
+used
+along
+with
+other
+properties,
+or
+is
+used
+within
+an
+embedded
+</del>
+JSON-LD
+<del class="diff-old">object.
+In
+this
+case,
+the
+set
+of
+subject
+definitions
+,
+or
+subject
+references
+contained
+within
+a
+@graph
+is
+given
+a
+</del>
+<ins class="diff-chg">allows
+you
+to
+</ins>
+<em>
+name
+<del class="diff-old">,
+based
+</del>
+</em>
+<ins class="diff-chg">things
+</ins>
+on
+the
+<del class="diff-old">label
+of
+the
+JSON-LD
+object
+containing
+a
+</del>
+<ins class="diff-chg">Web
+by
+assigning
+an
+</ins>
+<code>
+<del class="diff-old">@graph
+</del>
+<ins class="diff-chg">@id
+</ins>
+</code>
+<del class="diff-old">property,
+either
+</del>
+<ins class="diff-chg">to
+them,
+which
+is
+typically
+</ins>
+an
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+<del class="diff-old">,
+or
+</del>
+</a>.
+<ins class="diff-chg">This
+notion
+extends
+to
+the
+ability
+to
+identify
+graphs
+in
+the
+same
+manner.
+A
+developer
+may
+name
+data
+expressed
+using
+the
+</ins><code><ins class="diff-chg">
+@graph
+</ins></code><a class="tref internalDFN" title="keyword" href="#dfn-keyword"><ins class="diff-chg">
+keyword
+</ins></a><ins class="diff-chg">
+by
+pairing
+it
+with
+</ins>
+an
+<del class="diff-old">unlabeled
+node
+</del>
+<code>
+<ins class="diff-chg">@id
+</ins></code><a class="tref internalDFN" title="keyword" href="#dfn-keyword"><ins class="diff-chg">
+keyword
+</ins>
+</a>.
+This
+<del class="diff-old">allows
+statements
+</del>
+<ins class="diff-chg">enables
+the
+developer
+</ins>
+to
+<del class="diff-old">be
+made
+</del>
+<ins class="diff-chg">make
+statements
+</ins>
+about
+<del class="diff-old">an
+entire
+</del>
+<ins class="diff-chg">the
+</ins>
+<a class="tref internalDFN" title="linked_data_graph" href="#dfn-linked_data_graph">
+linked
+data
+graph
+<del class="diff-old">,
+</del>
+</a>
+<ins class="diff-chg">itself,
+</ins>
+rather
+than
+just
+a
+single
+JSON-LD
+object.
+</p>
+<del class="diff-old"> {
+ "@context": ...,
+ "@id": "http://example.org/linked-data-graph",
+ "asOf": { "@value": "2012-04-09", "@type": "xsd:date" },
+ "@graph":
+ [
+ {
+ "@id": "http://manu.sporny.org/i/public",
+ "@type": "foaf:Person",
+ "name": "Manu Sporny",
+ "knows" "http://greggkellogg.net/foaf#me"
+ },
+ {
+ "@id": "http://greggkellogg.net/foaf#me",
+ "@type": "foaf:Person",
+ "name": "Gregg Kellogg",
+ "knows" "http://manu.sporny.org/i/public"
+ },
+ "http://www.markus-lanthaler.com/"
+ ]
+</del>
+ <pre class="example">{
+<ins class="diff-chg"> "@context": ...,
+</ins> <span class="diff">"@id": "http://example.org/graphs/73",<ins class="diff-chg">
+ "asOf": { "@value": "2012-04-09", "@type": "xsd:date" },
+ "@graph":</span>
+ [
+ {
+ "@id": "http://manu.sporny.org/i/public",
+ "@type": "foaf:Person",
+ "name": "Manu Sporny",
+ "knows": "http://greggkellogg.net/foaf#me"
+ },
+ {
+ "@id": "http://greggkellogg.net/foaf#me",
+ "@type": "foaf:Person",
+ "name": "Gregg Kellogg",
+ "knows": "http://manu.sporny.org/i/public"
+ },
+ "http://www.markus-lanthaler.com/"
+ ]
+</ins>
+}
+</pre>
+<p>
+<del class="diff-old">This
+</del>
+<ins class="diff-chg">The
+</ins>
+example
+<del class="diff-old">says
+that
+there
+is
+</del>
+<ins class="diff-chg">above
+expresses
+</ins>
+a
+<em>
+<ins class="diff-new">named
+</ins></em>
+<a class="tref internalDFN" title="linked_data_graph" href="#dfn-linked_data_graph">
+linked
+data
+graph
+</a>
+<ins class="diff-new">that
+is
+</ins>
+identified
+by
+<ins class="diff-new">the
+</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
+IRI
+</ins></abbr></a>
+<code>
+<del class="diff-old">http://example.org/linked-data-graph
+which
+</del>
+<ins class="diff-chg">http://example.org/graphs/73
+</ins></code>.<ins class="diff-chg">
+That
+graph
+</ins>
+is
+composed
+of
+the
+statements
+about
+Manu
+and
+Gregg
+and
+a
+reference
+to
+another
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>,
+which
+could
+make
+statements
+about
+Markus.
+<del class="diff-old">Additionally,
+there
+is
+information
+</del>
+<ins class="diff-chg">Meta-data
+</ins>
+about
+the
+graph
+<del class="diff-old">itself,
+which
+indicates
+a
+time
+at
+</del>
+<ins class="diff-chg">itself
+is
+also
+expressed
+via
+the
+</ins><code><ins class="diff-chg">
+asOf
+</ins></code><ins class="diff-chg">
+property,
+</ins>
+which
+<del class="diff-old">this
+</del>
+<ins class="diff-chg">specifies
+when
+the
+</ins>
+information
+<del class="diff-old">as
+asserted
+to
+be
+true.
+</del>
+<ins class="diff-chg">was
+retrieved
+from
+the
+Web.
+</ins>
+</p>
+</div>
+<div id="identifying-unlabeled-nodes" typeof="bibo:Chapter" resource="#identifying-unlabeled-nodes" rel="bibo:chapter" class="section">
+<h3>
+<span class="secno">
+4.10
+</span>
+Identifying
+Unlabeled
+Nodes
+</h3>
+<p>
+At
+times,
+it
+becomes
+necessary
+to
+be
+able
+to
+express
+information
+without
+being
+able
+to
+specify
+the
+subject.
+Typically,
+this
+type
+of
+node
+is
+called
+an
+<a class="tref internalDFN" title="unlabeled_node" href="#dfn-unlabeled_node">
+unlabeled
+node
+</a>
+or
+a
+blank
+node.
+In
+JSON-LD,
+<a class="tref internalDFN" title="unlabeled_node" href="#dfn-unlabeled_node">
+unlabeled
+node
+</a>
+identifiers
+are
+automatically
+created
+if
+a
+subject
+is
+not
+specified
+using
+the
+<code>
+@id
+</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keyword
+</a>.
+However,
+authors
+may
+provide
+identifiers
+for
+unlabeled
+nodes
+by
+using
+the
+special
+<code>
+_
+</code>
+(underscore)
+<a class="tref internalDFN" title="prefix" href="#dfn-prefix">
+prefix
+</a>.
+This
+allows
+<ins class="diff-new">one
+</ins>
+to
+reference
+the
+node
+locally
+within
+the
+<del class="diff-old">document
+</del>
+<ins class="diff-chg">document,
+</ins>
+but
+<del class="diff-old">not
+in
+</del>
+<ins class="diff-chg">makes
+it
+impossible
+to
+reference
+the
+node
+from
+</ins>
+an
+external
+document.
+<ins class="diff-new">The
+</ins><a class="tref internalDFN" title="unlabeled_node" href="#dfn-unlabeled_node"><ins class="diff-new">
+unlabeled
+node
+</ins></a><ins class="diff-new">
+identifier
+is
+scoped
+to
+the
+document
+in
+which
+it
+is
+used.
+</ins>
+</p>
+<del class="diff-old">{
+...
+ "@id": "",
+...
+</del>
+<pre class="example">{
+<ins class="diff-chg">...
+ "@id": "<span class="diff">_:foo</span>",
+...
+</ins>
+}
+</pre>
+<p>
+The
+example
+above
+would
+set
+the
+subject
+to
+<code>
+_:foo
+</code>,
+which
+can
+then
+be
+used
+<del class="diff-old">later
+on
+</del>
+<ins class="diff-chg">elsewhere
+</ins>
+in
+the
+JSON-LD
+<del class="diff-old">markup
+</del>
+<ins class="diff-chg">document
+</ins>
+to
+refer
+back
+to
+the
+<a class="tref internalDFN" title="unlabeled_node" href="#dfn-unlabeled_node">
+unlabeled
+node
+</a>.
+This
+<del class="diff-old">practice,
+however,
+</del>
+<ins class="diff-chg">practice
+</ins>
+is
+<del class="diff-old">usually
+</del>
+frowned
+upon
+when
+generating
+<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
+Linked
+Data
+</a>.
+If
+a
+developer
+finds
+that
+they
+refer
+to
+the
+unlabeled
+node
+more
+than
+once,
+they
+should
+consider
+naming
+the
+node
+using
+a
+de-referenceable
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+</p>
+</div>
+<div id="aliasing-keywords" typeof="bibo:Chapter" resource="#aliasing-keywords" rel="bibo:chapter" class="section">
+<h3>
+<span class="secno">
+4.11
+</span>
+Aliasing
+Keywords
+</h3>
+<p>
+<del class="diff-old">JSON-LD
+allows
+all
+</del>
+<ins class="diff-chg">Each
+</ins>
+of
+the
+<del class="diff-old">syntax
+</del>
+<ins class="diff-chg">JSON-LD
+</ins>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keywords
+</a>,
+except
+for
+<code>
+@context
+</code>,
+<del class="diff-old">to
+</del>
+<em class="rfc2119" title="may">
+<ins class="diff-chg">may
+</ins></em>
+be
+<del class="diff-old">aliased.
+</del>
+<ins class="diff-chg">aliased
+to
+application-specific
+keywords.
+</ins>
+This
+feature
+allows
+<del class="diff-old">more
+</del>
+legacy
+JSON
+content
+to
+be
+<del class="diff-old">supported
+</del>
+<ins class="diff-chg">utilized
+</ins>
+by
+<del class="diff-old">JSON-LD.
+It
+</del>
+<ins class="diff-chg">JSON-LD
+by
+re-using
+JSON
+keys
+that
+already
+exist
+in
+legacy
+documents.
+This
+feature
+</ins>
+also
+allows
+developers
+to
+design
+domain-specific
+implementations
+using
+only
+the
+JSON-LD
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>.
+</p>
+<del class="diff-old">{
+ "@context":
+ {
+ ,
+ ,
+ "name": "http://schema.org/name"
+ },
+ "url": "http://example.com/about#gregg",
+ "a": "http://schema.org/Person",
+ "name": "Gregg Kellogg"
+</del>
+<pre class="example">{
+<ins class="diff-chg"> "@context":
+ {
+</ins> <span class="diff">"url": "@id"</span>, <span class="diff">"a": "@type"</span>,<ins class="diff-chg">
+ "name": "http://schema.org/name"
+ },
+ "<span class="diff">url</span>": "http://example.com/about#gregg",
+ "<span class="diff">a</span>": "http://schema.org/Person",
+ "name": "Gregg Kellogg"
+</ins>
+}
+</pre>
+<p>
+In
+the
+example
+above,
+the
+<code>
+@id
+</code>
+and
+<code>
+@type
+</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">
+keywords
+</a>
+have
+been
+given
+the
+aliases
+<strong>
+url
+</strong>
+and
+<strong>
+a
+</strong>,
+respectively.
+</p>
+</div>
+<div id="expanded-document-form" typeof="bibo:Chapter" resource="#expanded-document-form" rel="bibo:chapter" class="section">
+<h3>
+<span class="secno">
+4.12
+</span>
+<del class="diff-old">Expansion
+</del>
+<ins class="diff-chg">Expanded
+Document
+Form
+</ins>
+</h3>
+<p>
+The
+JSON-LD
+API
+[
+<cite>
+<a class="bibref" rel="biblioentry" href="#bib-JSON-LD-API">
+JSON-LD-API
+</a>
+</cite>
+]
+defines
+an
+method
+for
+<em>
+expanding
+</em>
+a
+JSON-LD
+document.
+Expansion
+is
+the
+process
+of
+taking
+a
+JSON-LD
+document
+and
+applying
+a
+<del class="diff-old">context
+</del>
+<code>
+<ins class="diff-chg">@context
+</ins></code>
+such
+that
+all
+IRIs,
+datatypes,
+and
+<del class="diff-old">literal
+</del>
+values
+are
+expanded
+so
+that
+the
+<del class="diff-old">context
+</del>
+<code>
+<ins class="diff-chg">@context
+</ins></code>
+is
+no
+longer
+necessary.
+<del class="diff-old">JSON-LD
+document
+expansion
+is
+typically
+used
+as
+a
+part
+of
+Framing
+.
+</del>
+</p>
+<p>
+For
+example,
+assume
+the
+following
+JSON-LD
+input
+document:
+</p>
+<del class="diff-old">{
+ "@context":
+ {
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "homepage": {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type", "@id"
+ }
+ },
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/"
+</del>
+<pre class="example">{
+<ins class="diff-chg"> "@context":
+ {
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "homepage": {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type", "@id"
+ }
+ },
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/"
+</ins>
+}
+</pre>
+<p>
+Running
+the
+JSON-LD
+Expansion
+algorithm
+against
+the
+JSON-LD
+input
+document
+provided
+above
+would
+result
+in
+the
+following
+output:
+</p>
+<del class="diff-old">[
+ {
+ "http://xmlns.com/foaf/0.1/name": [ "Manu Sporny" ],
+ "http://xmlns.com/foaf/0.1/homepage": [
+ {
+ "@id": "http://manu.sporny.org/"
+ }
+ ]
+ }
+</del>
+<pre class="example">[
+<ins class="diff-chg"> {
+ "http://xmlns.com/foaf/0.1/name": [
+ { "@value": "Manu Sporny" }
+ ],
+ "http://xmlns.com/foaf/0.1/homepage": [
+ { "@id": "http://manu.sporny.org/" }
+ ]
+ }
+</ins>
+]
+</pre>
+<p>
+<ins class="diff-new">Expanded
+document
+form
+is
+useful
+when
+an
+application
+has
+to
+process
+input
+data
+in
+a
+deterministic
+form.
+It
+has
+been
+optimized
+to
+ensure
+that
+the
+code
+that
+developers
+have
+to
+write
+is
+minimized
+compared
+to
+the
+code
+that
+would
+have
+to
+be
+written
+to
+operate
+on
+</ins><a href="#compact-document-form"><ins class="diff-new">
+compact
+document
+form
+</ins></a>.</p>
+</div>
+<div id="compact-document-form" typeof="bibo:Chapter" resource="#compact-document-form" rel="bibo:chapter" class="section">
+<h3>
+<span class="secno">
+4.13
+</span>
+<del class="diff-old">Compaction
+</del>
+<ins class="diff-chg">Compact
+Document
+Form
+</ins>
+</h3>
+<p>
+The
+JSON-LD
+API
+[
+<cite>
+<a class="bibref" rel="biblioentry" href="#bib-JSON-LD-API">
+JSON-LD-API
+</a>
+</cite>
+]
+defines
+a
+method
+for
+<em>
+compacting
+</em>
+a
+JSON-LD
+document.
+Compaction
+is
+the
+process
+of
+taking
+a
+JSON-LD
+document
+and
+applying
+a
+context
+such
+that
+the
+most
+compact
+form
+of
+the
+document
+is
+generated.
+JSON
+is
+typically
+expressed
+in
+a
+very
+compact,
+key-value
+format.
+That
+is,
+full
+IRIs
+are
+rarely
+used
+as
+keys.
+At
+times,
+a
+JSON-LD
+document
+may
+be
+received
+that
+is
+not
+in
+its
+most
+compact
+form.
+JSON-LD,
+via
+the
+API,
+provides
+a
+way
+to
+compact
+a
+JSON-LD
+document.
+</p>
+<p>
+For
+example,
+assume
+the
+following
+JSON-LD
+input
+document:
+</p>
+<del class="diff-old">[
+ {
+ "http://xmlns.com/foaf/0.1/name": [ "Manu Sporny" ],
+ "http://xmlns.com/foaf/0.1/homepage": [
+ {
+ "@id": "http://manu.sporny.org/"
+ }
+ ]
+ }
+</del>
+<pre class="example">[
+<ins class="diff-chg"> {
+ "http://xmlns.com/foaf/0.1/name": [ "Manu Sporny" ],
+ "http://xmlns.com/foaf/0.1/homepage": [
+ {
+ "@id": "http://manu.sporny.org/"
+ }
+ ]
+ }
+</ins>
+]
+</pre>
+<p>
+Additionally,
+assume
+the
+following
+developer-supplied
+JSON-LD
+context:
+</p>
+<del class="diff-old">{
+ "@context": {
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "homepage": {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+ }
+ }
+</del>
+<pre class="example">{
+<ins class="diff-chg"> "@context": {
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "homepage": {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+ }
+ }
+</ins>
+}
+</pre>
+<p>
+Running
+the
+JSON-LD
+Compaction
+algorithm
+given
+the
+context
+supplied
+above
+against
+the
+JSON-LD
+input
+document
+provided
+above
+would
+result
+in
+the
+following
+output:
+</p>
+<del class="diff-old">{
+ "@context": {
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "homepage": {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+ }
+ },
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/"
+</del>
+<pre class="example">{
+<ins class="diff-chg"> "@context": {
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "homepage": {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+ }
+ },
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/"
+</ins>
+}
+</pre>
+<p>
+The
+compaction
+algorithm
+<del class="diff-old">also
+</del>
+enables
+<del class="diff-old">the
+</del>
+<ins class="diff-chg">a
+</ins>
+developer
+to
+map
+any
+<del class="diff-old">expanded
+format
+</del>
+<ins class="diff-chg">document
+</ins>
+into
+an
+application-specific
+compacted
+<del class="diff-old">format.
+</del>
+<ins class="diff-chg">form
+by
+first
+</ins><a href="#expanded-document-form"><ins class="diff-chg">
+expanding
+the
+document
+</ins></a>.
+While
+the
+context
+provided
+above
+mapped
+<code>
+http://xmlns.com/foaf/0.1/name
+</code>
+to
+<strong>
+name
+</strong>,
+it
+could
+have
+also
+mapped
+it
+to
+any
+arbitrary
+string
+provided
+by
+the
+developer.
+<ins class="diff-new">This
+powerful
+mechanism,
+along
+with
+another
+JSON-LD
+API
+technique
+called
+</ins><em><ins class="diff-new">
+framing
+</ins></em>,<ins class="diff-new">
+allows
+the
+developer
+to
+re-shape
+the
+incoming
+JSON
+data
+into
+a
+format
+that
+is
+optimized
+for
+their
+application.
+</ins>
+</p>
+</div>
+</div>
+<div class="appendix normative section" id="json-ld-grammar" typeof="bibo:Chapter" resource="#json-ld-grammar" rel="bibo:chapter">
+<h2>
+<span class="secno">
+<del class="diff-old">4.14
+</del>
+<ins class="diff-chg">A.
+</ins>
+</span>
+<del class="diff-old">Framing
+</del>
+<ins class="diff-chg">JSON-LD
+Grammar
+</ins></h2>
+<p>
+<del class="diff-old">The
+</del>
+<ins class="diff-chg">Since
+the
+</ins>
+JSON-LD
+<del class="diff-old">API
+[
+JSON-LD-API
+]
+defines
+an
+method
+for
+framing
+</del>
+<ins class="diff-chg">syntax
+is
+</ins>
+a
+<ins class="diff-new">subset
+of
+the
+JSON
+syntax,
+it
+follows
+that
+all
+well-formed
+</ins>
+JSON-LD
+<del class="diff-old">document.
+This
+allows
+developers
+to
+query
+by
+example
+and
+force
+</del>
+<ins class="diff-chg">documents
+are
+well-formed
+JSON
+documents.
+It
+also
+means
+that
+</ins>
+a
+<del class="diff-old">specific
+tree
+layout
+to
+</del>
+<ins class="diff-chg">non-well-formed
+JSON
+document
+can
+never
+be
+</ins>
+a
+<ins class="diff-new">well-formed
+</ins>
+JSON-LD
+document.
+<del class="diff-old">A
+</del>
+<ins class="diff-chg">Furthermore,
+</ins>
+JSON-LD
+<del class="diff-old">document
+is
+</del>
+<ins class="diff-chg">places
+</ins>
+a
+<del class="diff-old">representation
+</del>
+<ins class="diff-chg">number
+</ins>
+of
+<del class="diff-old">a
+directed
+graph.
+A
+single
+directed
+graph
+can
+have
+many
+different
+serializations,
+each
+expressing
+exactly
+</del>
+<ins class="diff-chg">restrictions
+on
+</ins>
+the
+<del class="diff-old">same
+information.
+Developers
+typically
+work
+with
+trees,
+represented
+as
+</del>
+JSON
+<del class="diff-old">object
+s.
+While
+mapping
+</del>
+<ins class="diff-chg">syntax
+in
+order
+to
+define
+</ins>
+a
+<del class="diff-old">graph
+</del>
+<em>
+<ins class="diff-chg">grammar
+</ins></em><ins class="diff-chg">
+that
+is
+used
+</ins>
+to
+<ins class="diff-new">express
+valid
+JSON-LD
+documents.
+At
+times,
+even
+if
+this
+grammar
+is
+violated,
+</ins>
+a
+<del class="diff-old">tree
+can
+be
+done,
+</del>
+<ins class="diff-chg">JSON-LD
+processor
+will
+do
+its
+best
+to
+recover
+from
+</ins>
+the
+<del class="diff-old">layout
+</del>
+<ins class="diff-chg">error
+and
+deterministically
+transform
+the
+author's
+markup
+into
+valid
+JSON-LD.
+</ins></p><p class="issue"><ins class="diff-chg">
+The
+final
+nuanced
+details
+</ins>
+of
+the
+<del class="diff-old">end
+result
+must
+be
+specified
+</del>
+<ins class="diff-chg">exact
+grammar
+are
+still
+being
+discussed,
+as
+well
+as
+the
+best
+mechanism
+to
+express
+these
+restrictions.
+EBNF
+seems
+like
+overkill
+since
+it's
+a
+subset
+of
+JSON.
+EBNF
+doesn't
+quite
+capture
+some
+of
+the
+more
+esoteric
+restrictions
+</ins>
+in
+<del class="diff-old">advance.
+</del>
+<ins class="diff-chg">the
+language.
+</ins></p><ol><li>
+A
+<del class="diff-old">Frame
+can
+be
+used
+by
+a
+developer
+on
+a
+</del>
+JSON-LD
+document
+<del class="diff-old">to
+specify
+a
+deterministic
+layout
+for
+a
+graph.
+Framing
+</del>
+is
+<del class="diff-old">the
+process
+</del>
+<ins class="diff-chg">composed
+</ins>
+of
+<del class="diff-old">taking
+a
+JSON-LD
+document,
+which
+expresses
+</del>
+a
+<del class="diff-old">graph
+</del>
+<ins class="diff-chg">single
+</ins><a class="tref internalDFN" title="json_object" href="#dfn-json_object"><ins class="diff-chg">
+JSON
+object
+</ins></a><ins class="diff-chg">
+or
+an
+array
+</ins>
+of
+<del class="diff-old">information,
+and
+applying
+a
+specific
+graph
+layout
+(called
+a
+Frame
+</del>
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+<ins class="diff-chg">JSON
+object
+</ins>
+</a>
+<del class="diff-old">).
+</del>
+<ins class="diff-chg">s.
+</ins></li><li>
+The
+<del class="diff-old">JSON-LD
+document
+below
+expresses
+</del>
+<ins class="diff-chg">value
+of
+</ins><code><ins class="diff-chg">
+@id
+</ins></code><em class="rfc2119" title="must"><ins class="diff-chg">
+must
+</ins></em><ins class="diff-chg">
+be
+</ins><code><ins class="diff-chg">
+null
+</ins></code>,
+a
+<del class="diff-old">library,
+</del>
+<a class="tref internalDFN" title="term" href="#dfn-term">
+<ins class="diff-chg">term
+</ins></a>,
+a
+<del class="diff-old">book
+</del>
+<a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">
+<ins class="diff-chg">compact
+</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
+IRI
+</ins></abbr></a>,<ins class="diff-chg">
+or
+an
+</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
+IRI
+</ins></abbr></a>.</li><li><ins class="diff-chg">
+A
+</ins><code><ins class="diff-chg">
+@id
+</ins></code><ins class="diff-chg">
+keyword
+</ins>
+and
+a
+<del class="diff-old">chapter:
+{
+ "@context": {
+ "Book": "http://example.org/vocab#Book",
+ "Chapter": "http://example.org/vocab#Chapter",
+ "contains": {
+ "@id": "http://example.org/vocab#contains",
+ "@type": "@id"
+ },
+ "creator": "http://purl.org/dc/terms/creator",
+ "description": "http://purl.org/dc/terms/description",
+ "Library": "http://example.org/vocab#Library",
+ "title": "http://purl.org/dc/terms/title"
+ },
+ "@graph":
+ [{
+ "@id": "http://example.com/library",
+ "@type": "Library",
+ "contains": "http://example.org/library/the-republic"
+ },
+ {
+ "@id": "http://example.org/library/the-republic",
+ "@type": "Book",
+ "creator": "Plato",
+ "title": "The Republic",
+ "contains": "http://example.org/library/the-republic#introduction"
+ },
+ {
+ "@id": "http://example.org/library/the-republic#introduction",
+ "@type": "Chapter",
+ "description": "An introductory chapter on The Republic.",
+ "title": "The Introduction"
+ }]
+}
+Developers
+typically
+like
+to
+operate
+on
+items
+</del>
+<code>
+<ins class="diff-chg">@language
+</ins></code><ins class="diff-chg">
+keyword
+</ins><em class="rfc2119" title="must not"><ins class="diff-chg">
+must
+not
+</ins></em><ins class="diff-chg">
+exist
+</ins>
+in
+<ins class="diff-new">the
+same
+</ins><a class="tref internalDFN" title="json_object" href="#dfn-json_object"><ins class="diff-new">
+JSON
+object
+</ins></a>.</li><li><ins class="diff-new">
+A
+</ins><code><ins class="diff-new">
+@id
+</ins></code><ins class="diff-new">
+keyword
+and
+</ins>
+a
+<del class="diff-old">hierarchical,
+tree-based
+fashion.
+Ideally,
+</del>
+<code>
+<ins class="diff-chg">@container
+</ins></code><ins class="diff-chg">
+keyword
+</ins><em class="rfc2119" title="must not"><ins class="diff-chg">
+must
+not
+</ins></em><ins class="diff-chg">
+exist
+in
+the
+same
+</ins><a class="tref internalDFN" title="json_object" href="#dfn-json_object"><ins class="diff-chg">
+JSON
+object
+</ins></a>.</li><li><ins class="diff-chg">
+A
+</ins><a class="tref internalDFN" title="json_object" href="#dfn-json_object"><ins class="diff-chg">
+JSON
+object
+</ins></a><em class="rfc2119" title="may"><ins class="diff-chg">
+may
+</ins></em><ins class="diff-chg">
+contain
+</ins>
+a
+<del class="diff-old">developer
+would
+want
+</del>
+<code>
+<ins class="diff-chg">@context
+</ins></code><ins class="diff-chg">
+property.
+</ins></li><li><ins class="diff-chg">
+A
+</ins><code><ins class="diff-chg">
+@context
+</ins></code><ins class="diff-chg">
+value
+</ins><em class="rfc2119" title="must not"><ins class="diff-chg">
+must
+not
+</ins></em><ins class="diff-chg">
+contain
+an
+embedded
+</ins><code><ins class="diff-chg">
+@context
+</ins></code><ins class="diff-chg">
+definition.
+</ins></li><li><ins class="diff-chg">
+The
+value
+associated
+with
+</ins>
+the
+<del class="diff-old">data
+above
+sorted
+into
+top-level
+libraries,
+then
+</del>
+<code>
+<ins class="diff-chg">@context
+</ins></code><ins class="diff-chg">
+keyword
+</ins><em class="rfc2119" title="must"><ins class="diff-chg">
+must
+</ins></em><ins class="diff-chg">
+be
+an
+</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
+IRI
+</ins></abbr></a>,<ins class="diff-chg">
+a
+</ins><a class="tref internalDFN" title="json_object" href="#dfn-json_object"><ins class="diff-chg">
+JSON
+object
+</ins></a>,<ins class="diff-chg">
+null,
+or
+an
+array
+containing
+a
+combination
+of
+</ins>
+the
+<del class="diff-old">books
+that
+are
+contained
+in
+each
+library,
+and
+then
+</del>
+<ins class="diff-chg">allowed
+values.
+</ins></li><li><ins class="diff-chg">
+The
+value
+associated
+with
+</ins>
+the
+<del class="diff-old">chapters
+contained
+</del>
+<ins class="diff-chg">keys
+used
+</ins>
+in
+<ins class="diff-new">a
+</ins><code><ins class="diff-new">
+@context
+</ins></code><em class="rfc2119" title="must"><ins class="diff-new">
+must
+</ins></em><ins class="diff-new">
+be
+a
+</ins><code><ins class="diff-new">
+null
+</ins></code>,<ins class="diff-new">
+an
+</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-new">
+IRI
+</ins></abbr></a>,<ins class="diff-new">
+or
+a
+</ins><a class="tref internalDFN" title="json_object" href="#dfn-json_object"><ins class="diff-new">
+JSON
+object
+</ins></a>.</li><li><ins class="diff-new">
+For
+</ins>
+each
+<del class="diff-old">book.
+To
+achieve
+</del>
+<ins class="diff-chg">value
+</ins>
+that
+<del class="diff-old">layout,
+the
+developer
+can
+define
+the
+following
+frame
+:
+{
+ "@context": {
+ "Book": "http://example.org/vocab#Book",
+ "Chapter": "http://example.org/vocab#Chapter",
+ "contains": "http://example.org/vocab#contains",
+ "creator": "http://purl.org/dc/terms/creator",
+ "description": "http://purl.org/dc/terms/description",
+ "Library": "http://example.org/vocab#Library",
+ "title": "http://purl.org/dc/terms/title"
+ },
+ "@type": "Library",
+ "contains": {
+ "@type": "Book",
+ "contains": {
+ "@type": "Chapter"
+ }
+ }
+}
+When
+the
+framing
+algorithm
+</del>
+is
+<del class="diff-old">run
+against
+the
+previously
+defined
+JSON-LD
+document,
+paired
+with
+the
+frame
+</del>
+<ins class="diff-chg">a
+</ins><a class="tref internalDFN" title="json_object" href="#dfn-json_object"><ins class="diff-chg">
+JSON
+object
+</ins>
+</a>
+<del class="diff-old">above,
+the
+following
+JSON-LD
+document
+</del>
+<ins class="diff-chg">that
+</ins>
+is
+<del class="diff-old">the
+end
+result:
+{
+ "@context": {
+ "Book": "http://example.org/vocab#Book",
+ "Chapter": "http://example.org/vocab#Chapter",
+ "contains": "http://example.org/vocab#contains",
+ "creator": "http://purl.org/dc/terms/creator"
+ "description": "http://purl.org/dc/terms/description"
+ "Library": "http://example.org/vocab#Library",
+ "title": "http://purl.org/dc/terms/title"
+ },
+ "@id": "http://example.org/library",
+ "@type": "Library",
+ "contains": {
+
+ "@type": "Book",
+
+
+ "contains": {
+
+ "@type": "Chapter",
+
+
+ },
+ },
+}
+</del>
+<ins class="diff-chg">associated
+with
+a
+key
+in
+a
+</ins><code><ins class="diff-chg">
+@context
+</ins></code>:<ol><li><code><ins class="diff-chg">
+@id
+</ins></code><ins class="diff-chg">
+and
+</ins><code><ins class="diff-chg">
+@type
+</ins></code><em class="rfc2119" title="must"><ins class="diff-chg">
+must
+</ins></em><ins class="diff-chg">
+be
+an
+</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
+IRI
+</ins></abbr>
+<del class="diff-old">4.14.1
+Framing
+Operators
+A
+frame
+</del>
+</a>
+<del class="diff-old">is
+a
+JSON-LD
+document
+</del>
+<ins class="diff-chg">or
+</ins><code><ins class="diff-chg">
+null
+</ins></code></li><li><code><ins class="diff-chg">
+@container
+</ins></code><em class="rfc2119" title="must"><ins class="diff-chg">
+must
+</ins></em><ins class="diff-chg">
+be
+associated
+</ins>
+with
+<del class="diff-old">some
+extra
+syntactic
+elements
+used
+to
+match
+against
+parts
+of
+an
+input
+document.
+These
+operators
+work
+by
+matching
+on
+elements
+</del>
+<ins class="diff-chg">a
+value
+</ins>
+of
+<del class="diff-old">subject
+definitions
+</del>
+<ins class="diff-chg">either
+</ins><code><ins class="diff-chg">
+@set
+</ins></code><ins class="diff-chg">
+or
+</ins><code><ins class="diff-chg">
+@list
+</ins></code>.</li><li><code><ins class="diff-chg">
+@language
+</ins></code><em class="rfc2119" title="must"><ins class="diff-chg">
+must
+</ins></em><ins class="diff-chg">
+be
+a
+string
+expressed
+in
+[
+</ins><cite><a class="bibref" rel="biblioentry" href="#bib-BCP47"><ins class="diff-chg">
+BCP47
+</ins>
+</a>
+<del class="diff-old">comprising
+the
+document.
+Type
+Matching
+</del>
+</cite>
+<ins class="diff-chg">]
+or
+</ins><code><ins class="diff-chg">
+null
+</ins></code>.</li><li><ins class="diff-chg">
+Any
+other
+property
+</ins><em class="rfc2119" title="must"><ins class="diff-chg">
+must
+</ins></em><ins class="diff-chg">
+be
+ignored
+by
+a
+JSON-LD
+processor
+and
+</ins><em class="rfc2119" title="must"><ins class="diff-chg">
+must
+</ins></em><ins class="diff-chg">
+be
+preserved
+in
+compaction
+and
+framing.
+</ins></li></ol></li><li>
+A
+<del class="diff-old">frame
+</del>
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+<ins class="diff-chg">JSON
+object
+</ins>
+</a>
+<del class="diff-old">including
+a
+</del>
+<em class="rfc2119" title="may">
+<ins class="diff-chg">may
+</ins></em><ins class="diff-chg">
+have
+an
+</ins>
+<code>
+<del class="diff-old">@type
+</del>
+<ins class="diff-chg">@graph
+</ins>
+</code>
+<del class="diff-old">with
+one
+or
+more
+values
+matches
+any
+subject
+definition
+having
+</del>
+<ins class="diff-chg">property.
+</ins></li><li><ins class="diff-chg">
+The
+value
+of
+</ins>
+a
+<code>
+<del class="diff-old">@type
+</del>
+<ins class="diff-chg">@graph
+</ins>
+</code>
+property
+<del class="diff-old">that
+includes
+the
+specified
+type.
+Type
+Wildcard
+</del>
+<em class="rfc2119" title="must">
+<ins class="diff-chg">must
+</ins></em><ins class="diff-chg">
+be
+null,
+an
+</ins><a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+<ins class="diff-chg">IRI
+</ins></abbr></a>,<ins class="diff-chg">
+or
+a
+</ins><a class="tref internalDFN" title="json_object" href="#dfn-json_object"><ins class="diff-chg">
+JSON
+object
+</ins></a>.</li><li>
+A
+<del class="diff-old">frame
+</del>
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+<ins class="diff-chg">JSON
+object
+</ins>
+</a>
+<del class="diff-old">including
+</del>
+<ins class="diff-chg">containing
+</ins>
+a
+<code>
+<del class="diff-old">@type
+</del>
+<ins class="diff-chg">@set
+</ins>
+</code>
+<del class="diff-old">having
+only
+an
+empty
+</del>
+<ins class="diff-chg">key
+</ins><em class="rfc2119" title="must not"><ins class="diff-chg">
+must
+not
+</ins></em><ins class="diff-chg">
+have
+any
+other
+keys.
+</ins></li><li><ins class="diff-chg">
+A
+</ins>
+<a class="tref internalDFN" title="json_object" href="#dfn-json_object">
+JSON
+object
+</a>
+<del class="diff-old">matches
+any
+subject
+definition
+having
+</del>
+<ins class="diff-chg">containing
+</ins>
+a
+<code>
+<del class="diff-old">@type
+</del>
+<ins class="diff-chg">@list
+</ins>
+</code>
+<del class="diff-old">property
+with
+</del>
+<ins class="diff-chg">key
+</ins><em class="rfc2119" title="must not"><ins class="diff-chg">
+must
+not
+</ins></em><ins class="diff-chg">
+have
+</ins>
+any
+<del class="diff-old">value.
+Duck
+Typing
+A
+frame
+</del>
+<ins class="diff-chg">other
+keys.
+</ins></li><li><ins class="diff-chg">
+The
+value
+of
+an
+</ins><code><ins class="diff-chg">
+@set
+</ins></code><ins class="diff-chg">
+or
+</ins><code><ins class="diff-chg">
+@list
+</ins></code><ins class="diff-chg">
+key
+can
+be
+a
+string,
+a
+number,
+a
+</ins><a class="tref internalDFN" title="json_object" href="#dfn-json_object"><ins class="diff-chg">
+JSON
+object
+</ins></a>,<ins class="diff-chg">
+or
+an
+array
+containing
+a
+combination
+of
+the
+allowed
+values.
+</ins></li><li><ins class="diff-chg">
+For
+each
+</ins><a class="tref internalDFN" title="json_object" href="#dfn-json_object"><ins class="diff-chg">
+JSON
+object
+</ins>
+</a>
+<del class="diff-old">without
+</del>
+<ins class="diff-chg">that
+contains
+</ins>
+a
+<code>
+<ins class="diff-new">@value
+</ins></code><ins class="diff-new">
+key:
+</ins><ol><li><ins class="diff-new">
+It
+</ins><em class="rfc2119" title="may"><ins class="diff-new">
+may
+</ins></em><ins class="diff-new">
+have
+a
+</ins><code><ins class="diff-new">
+@language
+</ins></code><ins class="diff-new">
+or
+</ins><code>
+@type
+</code>
+<del class="diff-old">definition
+but
+with
+other
+non-
+keyword
+</del>
+property
+<del class="diff-old">definitions
+matches
+</del>
+<ins class="diff-chg">and
+</ins><em class="rfc2119" title="must not"><ins class="diff-chg">
+must
+not
+</ins></em><ins class="diff-chg">
+have
+</ins>
+any
+<del class="diff-old">subject
+definition
+having
+</del>
+<ins class="diff-chg">other
+properties.
+</ins></li><li><ins class="diff-chg">
+It
+</ins><em class="rfc2119" title="must not"><ins class="diff-chg">
+must
+not
+</ins></em><ins class="diff-chg">
+contain
+both
+the
+</ins><code><ins class="diff-chg">
+@language
+</ins></code><ins class="diff-chg">
+and
+</ins><code><ins class="diff-chg">
+@type
+</ins></code><ins class="diff-chg">
+keys
+</ins>
+at
+<del class="diff-old">least
+</del>
+the
+same
+<del class="diff-old">set
+</del>
+<ins class="diff-chg">time.
+</ins></li><li><ins class="diff-chg">
+The
+value
+</ins>
+of
+<del class="diff-old">properties.
+Embedding
+A
+frame
+including
+</del>
+<ins class="diff-chg">the
+</ins><code><ins class="diff-chg">
+@value
+</ins></code><ins class="diff-chg">
+key
+</ins><em class="rfc2119" title="must"><ins class="diff-chg">
+must
+</ins></em><ins class="diff-chg">
+be
+</ins>
+a
+<del class="diff-old">property
+which
+references
+another
+frame
+causes
+subject
+definitions
+containing
+that
+property
+and
+referencing
+either
+other
+subject
+definitions
+</del>
+<ins class="diff-chg">string
+</ins>
+or
+<del class="diff-old">subject
+references
+to
+embed
+subject
+definitions
+matching
+</del>
+<ins class="diff-chg">a
+number.
+</ins></li><li><ins class="diff-chg">
+The
+value
+of
+</ins>
+the
+<del class="diff-old">embed
+frame
+to
+</del>
+<code>
+<ins class="diff-chg">@language
+</ins></code><ins class="diff-chg">
+key
+</ins><em class="rfc2119" title="must"><ins class="diff-chg">
+must
+</ins></em>
+be
+<del class="diff-old">defined
+within
+that
+property.
+Subject
+references
+that
+don't
+match
+the
+embed
+frame
+are
+dropped.
+The
+</del>
+<code>
+<ins class="diff-chg">null
+</ins></code><ins class="diff-chg">
+or
+a
+string
+in
+</ins>
+[
+<cite>
+<del class="diff-old">JSON-LD-API
+</del>
+<a class="bibref" rel="biblioentry" href="#bib-BCP47">
+<ins class="diff-chg">BCP47
+</ins>
+</a>
+</cite>
+]
+<del class="diff-old">describes
+other
+flags
+and
+keywords
+that
+are
+used
+</del>
+<ins class="diff-chg">format.
+</ins></li><li><ins class="diff-chg">
+The
+value
+of
+</ins><code><ins class="diff-chg">
+@type
+</ins></code><em class="rfc2119" title="must"><ins class="diff-chg">
+must
+</ins></em><ins class="diff-chg">
+be
+</ins><code><ins class="diff-chg">
+null
+</ins></code>,<ins class="diff-chg">
+a
+</ins><a class="tref internalDFN" title="term" href="#dfn-term"><ins class="diff-chg">
+term
+</ins></a>,<ins class="diff-chg">
+a
+</ins><a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri"><ins class="diff-chg">
+compact
+</ins><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
+IRI
+</ins></abbr></a>,<ins class="diff-chg">
+an
+</ins><a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier"><ins class="diff-chg">
+IRI
+</ins></abbr></a>,<ins class="diff-chg">
+a
+</ins><a class="tref internalDFN" title="json_object" href="#dfn-json_object"><ins class="diff-chg">
+JSON
+object
+</ins></a>,<ins class="diff-chg">
+or
+an
+array
+containing
+a
+combination
+of
+the
+allowed
+values.
+</ins></li></ol></li><li><ins class="diff-chg">
+In
+the
+body
+of
+a
+JSON-LD
+document,
+the
+value
+of
+</ins><code><ins class="diff-chg">
+@type
+</ins></code><em class="rfc2119" title="must not"><ins class="diff-chg">
+must
+not
+</ins></em><ins class="diff-chg">
+be
+</ins><code><ins class="diff-chg">
+@id
+</ins></code>.<ins class="diff-chg">
+This
+is
+in
+contrast
+</ins>
+to
+<del class="diff-old">gain
+even
+more
+control
+over
+</del>
+the
+<del class="diff-old">framed
+output.
+</del>
+<ins class="diff-chg">use
+of
+</ins><code><ins class="diff-chg">
+@type
+</ins></code><ins class="diff-chg">
+in
+the
+</ins><code><ins class="diff-chg">
+@context
+</ins></code>,<ins class="diff-chg">
+where
+this
+is
+allowed.
+</ins></li></ol>
+</div>
+<div class="appendix informative section" id="markup-examples" typeof="bibo:Chapter" resource="#markup-examples" rel="bibo:chapter">
+<h2>
+<span class="secno">
+<del class="diff-old">A.
+</del>
+<ins class="diff-chg">B.
+</ins>
+</span>
+Markup
+Examples
+</h2>
+<p>
+<em>
+This
+section
+is
+non-normative.
+</em>
+</p>
+<p>
+JSON-LD
+is
+a
+specification
+for
+representing
+<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
+Linked
+Data
+</a>
+in
+JSON.
+A
+common
+way
+of
+working
+with
+Linked
+Data
+is
+through
+<dfn title="rdf" id="dfn-rdf">
+RDF
+</dfn>,
+the
+Resource
+Description
+Framework.
+RDF
+can
+be
+expressed
+using
+JSON-LD
+by
+associating
+JSON-LD
+concepts
+such
+as
+<code>
+@id
+</code>
+and
+<code>
+@type
+</code>
+with
+the
+equivalent
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+s
+in
+RDF.
+Further
+information
+about
+RDF
+may
+be
+found
+in
+<ins class="diff-new">the
+</ins>
+[
+<cite>
+<a class="bibref" rel="biblioentry" href="#bib-RDF-PRIMER">
+RDF-PRIMER
+</a>
+</cite>
+].
+</p>
+<p>
+The
+JSON-LD
+markup
+examples
+below
+demonstrate
+how
+JSON-LD
+can
+be
+used
+to
+express
+semantic
+data
+marked
+up
+in
+other
+languages
+such
+as
+Turtle,
+RDFa,
+Microformats,
+and
+Microdata.
+These
+sections
+are
+merely
+provided
+as
+proof
+that
+JSON-LD
+is
+very
+flexible
+in
+what
+it
+can
+express
+across
+different
+<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">
+Linked
+Data
+</a>
+approaches.
+<del class="diff-old">Details
+of
+</del>
+<ins class="diff-chg">Further
+information
+on
+</ins>
+transforming
+JSON-LD
+into
+RDF
+are
+<del class="diff-old">defined
+</del>
+<ins class="diff-chg">detailed
+</ins>
+in
+<ins class="diff-new">the
+</ins>
+[
+<cite>
+<a class="bibref" rel="biblioentry" href="#bib-JSON-LD-API">
+JSON-LD-API
+</a>
+</cite>
+].
+</p>
+<div id="turtle" typeof="bibo:Chapter" resource="#turtle" rel="bibo:chapter" class="section">
+<h3>
+<span class="secno">
+<del class="diff-old">A.1
+</del>
+<ins class="diff-chg">B.1
+</ins>
+</span>
+Turtle
+</h3>
+<p>
+The
+following
+are
+examples
+of
+representing
+<a class="tref internalDFN" title="rdf" href="#dfn-rdf">
+RDF
+</a>
+as
+expressed
+in
+[
+<cite>
+<a class="bibref" rel="biblioentry" href="#bib-TURTLE">
+TURTLE
+</a>
+</cite>
+]
+into
+JSON-LD.
+</p>
+<div id="prefix-definitions" typeof="bibo:Chapter" resource="#prefix-definitions" rel="bibo:chapter" class="section">
+<h4>
+<span class="secno">
+<del class="diff-old">A.1.1
+</del>
+<ins class="diff-chg">B.1.1
+</ins>
+</span>
+Prefix
+definitions
+</h4>
+<p>
+The
+JSON-LD
+context
+has
+direct
+equivalents
+for
+the
+Turtle
+<code>
+@prefix
+</code>
+declaration:
+</p>
+<del class="diff-old">@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+
+<http://manu.sporny.org/i/public> a foaf:Person;
+ foaf:name "Manu Sporny";
+</del>
+<pre class="example">@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+<ins class="diff-chg"><http://manu.sporny.org/i/public> a foaf:Person;
+ foaf:name "Manu Sporny";
+</ins>
+foaf:homepage
+<http://manu.sporny.org/>
+.
+</pre>
+<del class="diff-old">{
+ "@context":
+ {
+ "foaf": "http://xmlns.com/foaf/0.1/"
+ },
+ "@id": "http://manu.sporny.org/i/public",
+ "@type": "foaf:Person",
+ "foaf:name": "Manu Sporny",
+ "foaf:homepage": { "@id": "http://manu.sporny.org/" }
+</del>
+<pre class="example">{
+<ins class="diff-chg"> "@context":
+ {
+ "foaf": "http://xmlns.com/foaf/0.1/"
+ },
+ "@id": "http://manu.sporny.org/i/public",
+ "@type": "foaf:Person",
+ "foaf:name": "Manu Sporny",
+ "foaf:homepage": { "@id": "http://manu.sporny.org/" }
+</ins>
+}
+</pre>
+<div class="note">
+<p>
+JSON-LD
+has
+no
+equivalent
+for
+the
+Turtle
+<code>
+@base
+</code>
+declaration.
+<del class="diff-old">Authors
+could,
+of
+course,
+</del>
+<ins class="diff-chg">Instead,
+authors
+may
+</ins>
+use
+a
+prefix
+definition
+to
+resolve
+<a class="tref internalDFN" title="relative_iri" href="#dfn-relative_iri">
+relative
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>
+<del class="diff-old">s.
+For
+example,
+an
+empty
+prefix
+could
+be
+used
+to
+get
+a
+similar
+effect
+to
+@base
+:
+</del>
+<ins class="diff-chg">s:
+</ins>
+</p>
+<del class="diff-old">{
+ "@context":
+ {
+
+ "foaf": "http://xmlns.com/foaf/0.1/"
+ },
+ "@id": ,
+ "@type": "foaf:Person",
+ "foaf:name": "Manu Sporny",
+ "foaf:homepage": { "@id": }
+</del>
+<pre class="example">{
+<ins class="diff-chg"> "@context":
+ {
+</ins> <span class="diff">"base": "http://manu.sporny.org/",</span><ins class="diff-chg">
+ "foaf": "http://xmlns.com/foaf/0.1/"
+ },
+ "@id": <span class="diff">"base:i/public"</span>,
+ "@type": "foaf:Person",
+ "foaf:name": "Manu Sporny",
+ "foaf:homepage": { "@id": <span class="diff">"base" </span>}
+</ins>
+}
+</pre>
+</div>
+</div>
+<div id="embedding-1" typeof="bibo:Chapter" resource="#embedding-1" rel="bibo:chapter" class="section">
+<h4>
+<span class="secno">
+<del class="diff-old">A.1.2
+</del>
+<ins class="diff-chg">B.1.2
+</ins>
+</span>
+Embedding
+</h4>
+<p>
+Both
+Turtle
+and
+JSON-LD
+allow
+embedding
+of
+objects,
+although
+Turtle
+only
+allows
+embedding
+of
+objects
+which
+use
+unlabeled
+node
+identifiers.
+</p>
+</div>
+<del class="diff-old">@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+
+<http://manu.sporny.org/i/public>
+ a foaf:Person;
+ foaf:name "Manu Sporny";
+</del>
+<pre class="example">@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+<ins class="diff-chg"><http://manu.sporny.org/i/public>
+ a foaf:Person;
+ foaf:name "Manu Sporny";
+</ins>
+foaf:knows
+[
+a
+foaf:Person;
+foaf:name
+"Gregg
+Kellogg"
+]
+.
+</pre>
+<del class="diff-old">{
+ "@context":
+ {
+ "foaf": "http://xmlns.com/foaf/0.1/"
+ },
+ "@id": "http://manu.sporny.org/i/public",
+ "@type": "foaf:Person",
+ "foaf:name": "Manu Sporny",
+ "foaf:knows":
+ {
+ "@type": "foaf:Person",
+ "foaf:name": "Gregg Kellogg"
+ }
+</del>
+<pre class="example">{
+<ins class="diff-chg"> "@context":
+ {
+ "foaf": "http://xmlns.com/foaf/0.1/"
+ },
+ "@id": "http://manu.sporny.org/i/public",
+ "@type": "foaf:Person",
+ "foaf:name": "Manu Sporny",
+ "foaf:knows":
+ {
+ "@type": "foaf:Person",
+ "foaf:name": "Gregg Kellogg"
+ }
+</ins>
+}
+</pre>
+<div id="lists" typeof="bibo:Chapter" resource="#lists" rel="bibo:chapter" class="section">
+<h4>
+<span class="secno">
+<del class="diff-old">A.1.3
+</del>
+<ins class="diff-chg">B.1.3
+</ins>
+</span>
+Lists
+</h4>
+<p>
+Both
+JSON-LD
+and
+Turtle
+can
+represent
+sequential
+lists
+of
+values.
+</p>
+<del class="diff-old">@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+
+<http://example.org/people#joebob> a foaf:Person;
+ foaf:name "Joe Bob";
+</del>
+<pre class="example">@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+<ins class="diff-chg"><http://example.org/people#joebob> a foaf:Person;
+ foaf:name "Joe Bob";
+</ins>
+foaf:nick
+(
+"joe"
+"bob"
+"jaybee"
+)
+.
+</pre>
+<del class="diff-old">{
+ "@context":
+ {
+ "foaf": "http://xmlns.com/foaf/0.1/"
+ },
+ "@id": "http://example.org/people#joebob",
+ "@type": "foaf:Person",
+ "foaf:name": "Joe Bob",
+ "foaf:nick":
+ {
+ "@list": [ "joe", "bob", "jaybe" ]
+ }
+</del>
+<pre class="example">{
+<ins class="diff-chg"> "@context":
+ {
+ "foaf": "http://xmlns.com/foaf/0.1/"
+ },
+ "@id": "http://example.org/people#joebob",
+ "@type": "foaf:Person",
+ "foaf:name": "Joe Bob",
+ "foaf:nick":
+ {
+ "@list": [ "joe", "bob", "jaybee" ]
+ }
+</ins>
+}
+</pre>
+</div>
+</div>
+<div id="rdfa" typeof="bibo:Chapter" resource="#rdfa" rel="bibo:chapter" class="section">
+<h3>
+<span class="secno">
+<del class="diff-old">A.2
+</del>
+<ins class="diff-chg">B.2
+</ins>
+</span>
+RDFa
+</h3>
+<p>
+The
+following
+example
+describes
+three
+people
+with
+their
+respective
+names
+and
+homepages.
+</p>
+<del class="diff-old">>
+ <ul>
+ <li >
+ <a >Bob</a>
+ </li>
+ <li >
+ <a >Eve</a>
+ </li>
+ <li >
+ <a >Manu</a>
+ </li>
+ </ul>
+</del>
+<pre class="example"><div <span class="diff">prefix="foaf: http://xmlns.com/foaf/0.1/"</span>>
+<ins class="diff-chg"> <ul>
+ <li <span class="diff">typeof="foaf:Person"</span>>
+ <a <span class="diff">rel="foaf:homepage" href="http://example.com/bob/" property="foaf:name" </span>>Bob</a>
+ </li>
+ <li <span class="diff">typeof="foaf:Person"</span>>
+ <a <span class="diff">rel="foaf:homepage" href="http://example.com/eve/" property="foaf:name" </span>>Eve</a>
+ </li>
+ <li <span class="diff">typeof="foaf:Person"</span>>
+ <a <span class="diff">rel="foaf:homepage" href="http://example.com/manu/" property="foaf:name" </span>>Manu</a>
+ </li>
+ </ul>
+</ins>
+</div>
+</pre>
+<p>
+An
+example
+JSON-LD
+implementation
+using
+a
+single
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>
+is
+described
+below.
+</p>
+<del class="diff-old">{
+ "@context":
+ {
+ "foaf": "http://xmlns.com/foaf/0.1/"
+ },
+ "@graph":
+ [
+ {
+ "@type": "foaf:Person",
+ "foaf:homepage": "http://example.com/bob/",
+ "foaf:name": "Bob"
+ },
+ {
+ "@type": "foaf:Person",
+ "foaf:homepage": "http://example.com/eve/",
+ "foaf:name": "Eve"
+ },
+ {
+ "@type": "foaf:Person",
+ "foaf:homepage": "http://example.com/manu/",
+ "foaf:name": "Manu"
+ }
+ ]
+</del>
+<pre class="example">{
+<ins class="diff-chg"> "@context":
+ {
+ "foaf": "http://xmlns.com/foaf/0.1/"
+ },
+ "@graph":
+ [
+ {
+ "@type": "foaf:Person",
+ "foaf:homepage": "http://example.com/bob/",
+ "foaf:name": "Bob"
+ },
+ {
+ "@type": "foaf:Person",
+ "foaf:homepage": "http://example.com/eve/",
+ "foaf:name": "Eve"
+ },
+ {
+ "@type": "foaf:Person",
+ "foaf:homepage": "http://example.com/manu/",
+ "foaf:name": "Manu"
+ }
+ ]
+</ins>
+}
+</pre>
+</div>
+<div id="microformats" typeof="bibo:Chapter" resource="#microformats" rel="bibo:chapter" class="section">
+<h3>
+<span class="secno">
+<del class="diff-old">A.3
+</del>
+<ins class="diff-chg">B.3
+</ins>
+</span>
+Microformats
+</h3>
+<p>
+The
+following
+example
+uses
+a
+simple
+Microformats
+hCard
+example
+to
+express
+how
+the
+Microformat
+is
+represented
+in
+JSON-LD.
+</p>
+<del class="diff-old"><div class="vcard">
+ <a class="url fn" href="http://www.markus-lanthaler.com/">Markus Lanthaler</a>
+</del>
+<pre class="example"><div class="vcard">
+<ins class="diff-chg"> <a class="url fn" href="http://tantek.com/">Tantek Çelik</a>
+</ins>
+</div>
+</pre>
+<p>
+The
+representation
+of
+the
+hCard
+expresses
+the
+Microformat
+terms
+in
+the
+<a class="tref internalDFN" title="context" href="#dfn-context">
+context
+</a>
+and
+uses
+them
+directly
+for
+the
+<code>
+url
+</code>
+and
+<code>
+fn
+</code>
+properties.
+Also
+note
+that
+the
+Microformat
+to
+JSON-LD
+processor
+has
+generated
+the
+proper
+URL
+type
+for
+<code>
+http://tantek.com/
+</code>.
+</p>
+<del class="diff-old">{
+ "@context":
+ {
+ "vcard": "http://microformats.org/profile/hcard#vcard",
+ "url":
+ {
+ "@id": "http://microformats.org/profile/hcard#url",
+ "@type": "@id"
+ },
+ "fn": "http://microformats.org/profile/hcard#fn"
+ },
+ "@type": "vcard",
+ "url": "http://www.markus-lanthaler.com/",
+ "fn": "Markus Lanthaler"
+</del>
+<pre class="example">{
+<ins class="diff-chg"> "@context":
+ {
+ "vcard": "http://microformats.org/profile/hcard#vcard",
+ "url":
+ {
+ "@id": "http://microformats.org/profile/hcard#url",
+ "@type": "@id"
+ },
+ "fn": "http://microformats.org/profile/hcard#fn"
+ },
+ "@type": "vcard",
+ "url": "http://tantek.com/",
+ "fn": "Tantek Çelik"
+</ins>
+}
+</pre>
+</div>
+<div id="microdata" typeof="bibo:Chapter" resource="#microdata" rel="bibo:chapter" class="section">
+<h3>
+<span class="secno">
+<del class="diff-old">A.4
+</del>
+<ins class="diff-chg">B.4
+</ins>
+</span>
+Microdata
+</h3>
+<p>
+The
+microdata
+example
+below
+expresses
+book
+information
+as
+a
+microdata
+Work
+item.
+</p>
+<del class="diff-old"><dl itemscope
+ itemtype="http://purl.org/vocab/frbr/core#Work"
+ itemid="http://purl.oreilly.com/works/45U8QJGZSQKDH8N">
+ <dt>Title</dt>
+ <dd><cite itemprop="http://purl.org/dc/terms/title">Just a Geek</cite></dd>
+ <dt>By</dt>
+ <dd><span itemprop="http://purl.org/dc/terms/creator">Wil Wheaton</span></dd>
+ <dt>Format</dt>
+ <dd itemprop="http://purl.org/vocab/frbr/core#realization"
+ itemscope
+ itemtype="http://purl.org/vocab/frbr/core#Expression"
+ itemid="http://purl.oreilly.com/products/9780596007683.BOOK">
+ <link itemprop="http://purl.org/dc/terms/type" href="http://purl.oreilly.com/product-types/BOOK">
+ Print
+ </dd>
+ <dd itemprop="http://purl.org/vocab/frbr/core#realization"
+ itemscope
+ itemtype="http://purl.org/vocab/frbr/core#Expression"
+ itemid="http://purl.oreilly.com/products/9780596802189.EBOOK">
+ <link itemprop="http://purl.org/dc/terms/type" href="http://purl.oreilly.com/product-types/EBOOK">
+ Ebook
+ </dd>
+</del>
+<pre class="example"><dl itemscope
+<ins class="diff-chg"> itemtype="http://purl.org/vocab/frbr/core#Work"
+ itemid="http://purl.oreilly.com/works/45U8QJGZSQKDH8N">
+ <dt>Title</dt>
+ <dd><cite itemprop="http://purl.org/dc/terms/title">Just a Geek</cite></dd>
+ <dt>By</dt>
+ <dd><span itemprop="http://purl.org/dc/terms/creator">Wil Wheaton</span></dd>
+ <dt>Format</dt>
+ <dd itemprop="http://purl.org/vocab/frbr/core#realization"
+ itemscope
+ itemtype="http://purl.org/vocab/frbr/core#Expression"
+ itemid="http://purl.oreilly.com/products/9780596007683.BOOK">
+ <link itemprop="http://purl.org/dc/terms/type" href="http://purl.oreilly.com/product-types/BOOK">
+ Print
+ </dd>
+ <dd itemprop="http://purl.org/vocab/frbr/core#realization"
+ itemscope
+ itemtype="http://purl.org/vocab/frbr/core#Expression"
+ itemid="http://purl.oreilly.com/products/9780596802189.EBOOK">
+ <link itemprop="http://purl.org/dc/terms/type" href="http://purl.oreilly.com/product-types/EBOOK">
+ Ebook
+ </dd>
+</ins>
+</dl>
+</pre>
+<p>
+Note
+that
+the
+JSON-LD
+representation
+of
+the
+Microdata
+information
+stays
+true
+to
+the
+desires
+of
+the
+Microdata
+community
+to
+avoid
+contexts
+and
+instead
+refer
+to
+items
+by
+their
+full
+<a class="tref internalDFN" title="iri" href="#dfn-iri">
+<abbr title="Internationalized Resource Identifier">
+IRI
+</abbr>
+</a>.
+</p>
+<del class="diff-old">[
+ {
+ "@id": "http://purl.oreilly.com/works/45U8QJGZSQKDH8N",
+ "@type": "http://purl.org/vocab/frbr/core#Work",
+ "http://purl.org/dc/terms/title": "Just a Geek",
+ "http://purl.org/dc/terms/creator": "Whil Wheaton",
+ "http://purl.org/vocab/frbr/core#realization":
+ [
+ "http://purl.oreilly.com/products/9780596007683.BOOK",
+ "http://purl.oreilly.com/products/9780596802189.EBOOK"
+ ]
+ },
+ {
+ "@id": "http://purl.oreilly.com/products/9780596007683.BOOK",
+ "@type": "http://purl.org/vocab/frbr/core#Expression",
+ "http://purl.org/dc/terms/type": "http://purl.oreilly.com/product-types/BOOK"
+ },
+ {
+ "@id": "http://purl.oreilly.com/products/9780596802189.EBOOK",
+ "@type": "http://purl.org/vocab/frbr/core#Expression",
+ "http://purl.org/dc/terms/type": "http://purl.oreilly.com/product-types/EBOOK"
+ }
+</del>
+<pre class="example">[
+<ins class="diff-chg"> {
+ "@id": "http://purl.oreilly.com/works/45U8QJGZSQKDH8N",
+ "@type": "http://purl.org/vocab/frbr/core#Work",
+ "http://purl.org/dc/terms/title": "Just a Geek",
+ "http://purl.org/dc/terms/creator": "Whil Wheaton",
+ "http://purl.org/vocab/frbr/core#realization":
+ [
+ "http://purl.oreilly.com/products/9780596007683.BOOK",
+ "http://purl.oreilly.com/products/9780596802189.EBOOK"
+ ]
+ },
+ {
+ "@id": "http://purl.oreilly.com/products/9780596007683.BOOK",
+ "@type": "http://purl.org/vocab/frbr/core#Expression",
+ "http://purl.org/dc/terms/type": "http://purl.oreilly.com/product-types/BOOK"
+ },
+ {
+ "@id": "http://purl.oreilly.com/products/9780596802189.EBOOK",
+ "@type": "http://purl.org/vocab/frbr/core#Expression",
+ "http://purl.org/dc/terms/type": "http://purl.oreilly.com/product-types/EBOOK"
+ }
+</ins>
+]
+</pre>
+</div>
+</div>
+<del class="diff-old">B.
+Linked
+Data
+The
+following
+definition
+for
+Linked
+Data
+is
+the
+one
+that
+will
+be
+used
+for
+this
+specification.
+Linked
+Data
+is
+a
+set
+of
+documents,
+each
+containing
+a
+representation
+of
+a
+linked
+data
+graph.
+A
+linked
+data
+graph
+is
+an
+unordered
+labeled
+directed
+graph,
+where
+nodes
+are
+subject
+s
+or
+object
+s,
+and
+edges
+are
+properties.
+A
+subject
+is
+any
+node
+in
+a
+linked
+data
+graph
+with
+at
+least
+one
+outgoing
+edge.
+A
+subject
+should
+be
+labeled
+with
+an
+IRI
+(an
+Internationalized
+Resource
+Identifier
+as
+described
+in
+[
+RFC3987
+]).
+An
+object
+is
+a
+node
+in
+a
+linked
+data
+graph
+with
+at
+least
+one
+incoming
+edge.
+An
+object
+may
+be
+labeled
+with
+an
+IRI
+.
+A
+node
+may
+be
+a
+subject
+and
+object
+at
+the
+same
+time.
+A
+property
+is
+an
+edge
+of
+the
+linked
+data
+graph
+.
+A
+property
+should
+be
+labeled
+with
+an
+IRI
+.
+An
+IRI
+that
+is
+a
+label
+in
+a
+linked
+data
+graph
+should
+be
+dereferencable
+to
+a
+Linked
+Data
+document
+describing
+the
+labeled
+subject
+,
+object
+or
+property
+.
+A
+value
+is
+an
+object
+with
+a
+label
+that
+is
+not
+an
+IRI
+Note
+that
+the
+definition
+for
+Linked
+Data
+above
+is
+silent
+on
+the
+topic
+of
+unlabeled
+nodes.
+Unlabeled
+nodes
+are
+not
+considered
+Linked
+Data
+.
+However,
+this
+specification
+allows
+for
+the
+expression
+of
+unlabled
+nodes,
+as
+most
+graph-based
+data
+sets
+on
+the
+Web
+contain
+a
+number
+of
+associated
+nodes
+that
+are
+not
+named
+and
+thus
+are
+not
+directly
+de-referenceable.
+</del>
+<div class="appendix informative section" id="iana-considerations" typeof="bibo:Chapter" resource="#iana-considerations" rel="bibo:chapter">
+<h2>
+<span class="secno">
+C.
+</span>
+<del class="diff-old">Mashing
+Up
+Vocabularies
+This
+section
+is
+non-normative.
+Developers
+benefit
+by
+being
+able
+to
+mash
+other
+vocabularies
+into
+their
+JSON-LD
+markup.
+There
+are
+over
+200
+vocabularies
+that
+are
+available
+for
+use
+on
+the
+Web
+today.
+Some
+of
+these
+vocabularies
+include:
+RDF
+-
+for
+describing
+information
+about
+objects
+and
+concepts
+on
+the
+Web.
+RDFS
+-
+for
+expressing
+things
+like
+labels
+and
+comments.
+XSD
+-
+for
+specifying
+basic
+types
+like
+strings,
+integers,
+dates
+and
+times.
+Dublin
+Core
+-
+for
+describing
+creative
+works.
+FOAF
+-
+for
+describing
+social
+networks.
+Calendar
+-
+for
+specifying
+events.
+SIOC
+-
+for
+describing
+discussions
+on
+blogs
+and
+websites.
+CCrel
+-
+for
+describing
+Creative
+Commons
+and
+other
+types
+of
+licenses.
+GEO
+-
+for
+describing
+geographic
+location.
+VCard
+-
+for
+describing
+organizations
+and
+people.
+DOAP
+-
+for
+describing
+projects.
+You
+can
+use
+these
+vocabularies
+in
+combination,
+like
+so:
+{
+ "@context":
+ {
+ "foaf": "http://xmlns.com/foaf/0.1/",
+ "sioc": "http://rdfs.org/sioc/ns#",
+ "rdfs": "http://www.w3.org/2000/01/rdf-schema#"
+ },
+ "@type": "foaf:Person",
+ "foaf:name": "Manu Sporny",
+ "foaf:homepage": "http://manu.sporny.org/",
+ "sioc:avatar": "http://twitter.com/account/profile_image/manusporny",
+ "rdfs:comment": "Likes puppies, unicorns and rainbows."
+}
+Developers
+can
+also
+specify
+their
+own
+vocabulary
+documents
+by
+modifying
+the
+active
+context
+in-line
+using
+the
+@context
+keyword,
+like
+so:
+{
+ "@context":
+ {
+ "foaf": "http://xmlns.com/foaf/0.1/",
+ "sioc": "http://rdfs.org/sioc/ns#",
+ "rdfs": "http://www.w3.org/2000/01/rdf-schema#",
+
+ },
+ "@type": "foaf:Person",
+ "foaf:name": "Manu Sporny",
+ "foaf:homepage": "http://manu.sporny.org/",
+ "sioc:avatar": "http://twitter.com/account/profile_image/manusporny",
+ "rdfs:comment": "Likes puppies, unicorns and rainbows."
+
+}
+D.
+</del>
+IANA
+Considerations
+</h2>
+<p>
+<em>
+This
+section
+is
+non-normative.
+</em>
+</p>
+<p>
+This
+section
+is
+included
+merely
+for
+standards
+community
+review
+and
+will
+be
+submitted
+to
+the
+Internet
+Engineering
+Steering
+Group
+if
+this
+specification
+becomes
+a
+W3C
+Recommendation.
+</p>
+<h3 id="application-ld-json">
+<ins class="diff-new">application/ld+json
+</ins></h3>
+<dl>
+<dt>
+Type
+name:
+</dt>
+<dd>
+application
+</dd>
+<dt>
+Subtype
+name:
+</dt>
+<dd>
+ld+json
+</dd>
+<dt>
+Required
+parameters:
+</dt>
+<dd>
+None
+</dd>
+<dt>
+Optional
+parameters:
+</dt>
+<dd>
+<dl>
+<dt>
+<code>
+form
+</code>
+</dt>
+<dd>
+Determines
+the
+serialization
+form
+for
+the
+JSON-LD
+document.
+The
+only
+valid
+value
+at
+the
+moment
+is
+<code>
+expanded
+</code>.
+If
+no
+form
+is
+specified
+in
+an
+HTTP
+request
+header
+to
+an
+HTTP
+server,
+the
+server
+<em class="rfc2119" title="may">
+may
+</em>
+choose
+any
+form.
+If
+no
+form
+is
+specified
+in
+an
+HTTP
+response,
+the
+form
+<em class="rfc2119" title="must not">
+must
+not
+</em>
+be
+assumed
+to
+take
+any
+particular
+form.
+</dd>
+</dl>
+</dd>
+<dt>
+Encoding
+considerations:
+</dt>
+<dd>
+The
+same
+as
+the
+<code>
+application/json
+</code>
+MIME
+media
+type.
+</dd>
+<dt>
+Security
+considerations:
+</dt>
+<dd>
+Since
+JSON-LD
+is
+intended
+to
+be
+a
+pure
+data
+exchange
+format
+for
+directed
+graphs,
+the
+serialization
+<em class="rfc2119" title="should not">
+should
+not
+</em>
+be
+passed
+through
+a
+code
+execution
+mechanism
+such
+as
+JavaScript's
+<code>
+eval()
+</code>
+function.
+It
+is
+<em class="rfc2119" title="recommended">
+recommended
+</em>
+that
+a
+conforming
+parser
+does
+not
+attempt
+to
+directly
+evaluate
+the
+JSON-LD
+serialization
+and
+instead
+purely
+parse
+the
+input
+into
+a
+language-native
+data
+structure.
+</dd>
+<dt>
+Interoperability
+considerations:
+</dt>
+<dd>
+Not
+Applicable
+</dd>
+<dt>
+Published
+specification:
+</dt>
+<dd>
+The
+<a href="http://json-ld.org/spec/latest/">
+JSON-LD
+</a>
+specification.
+</dd>
+<dt>
+Applications
+that
+use
+this
+media
+type:
+</dt>
+<dd>
+Any
+programming
+environment
+that
+requires
+the
+exchange
+of
+directed
+graphs.
+Implementations
+of
+JSON-LD
+have
+been
+created
+for
+JavaScript,
+Python,
+Ruby,
+PHP
+and
+C++.
+</dd>
+<dt>
+Additional
+information:
+</dt>
+<dd>
+<dl>
+<dt>
+Magic
+number(s):
+</dt>
+<dd>
+Not
+Applicable
+</dd>
+<dt>
+File
+extension(s):
+</dt>
+<dd>.jsonld
+</dd>
+<dt>
+Macintosh
+file
+type
+code(s):
+</dt>
+<dd>
+TEXT
+</dd>
+</dl>
+</dd>
+<dt>
+Person
+&
+email
+address
+to
+contact
+for
+further
+information:
+</dt>
+<dd>
+Manu
+Sporny
+<msporny@digitalbazaar.com>
+</dd>
+<dt>
+Intended
+usage:
+</dt>
+<dd>
+Common
+</dd>
+<dt>
+Restrictions
+on
+usage:
+</dt>
+<dd>
+None
+</dd>
+<dt>
+Author(s):
+</dt>
+<dd>
+Manu
+Sporny,
+Gregg
+Kellogg,
+Markus
+Lanthaler,
+Dave
+Longley
+</dd>
+<dt>
+Change
+controller:
+</dt>
+<dd>
+W3C
+</dd>
+</dl>
+<p>
+<ins class="diff-new">Fragment
+identifiers
+used
+with
+</ins><a href="#application-ld-json"><ins class="diff-new">
+application/ld+json
+</ins></a><ins class="diff-new">
+resources
+</ins><em class="rfc2119" title="may"><ins class="diff-new">
+may
+</ins></em><ins class="diff-new">
+identify
+a
+node
+in
+the
+</ins><a class="tref internalDFN" title="linked_data_graph" href="#dfn-linked_data_graph"><ins class="diff-new">
+linked
+data
+graph
+</ins></a><ins class="diff-new">
+expressed
+in
+the
+resource.
+This
+idiom,
+which
+is
+also
+used
+in
+RDF
+[
+</ins><cite><a class="bibref" rel="biblioentry" href="#bib-RDF-CONCEPTS"><ins class="diff-new">
+RDF-CONCEPTS
+</ins></a></cite><ins class="diff-new">
+],
+gives
+a
+simple
+way
+to
+"mint"
+new,
+document-local
+IRIs
+to
+label
+nodes
+and
+therefore
+contributes
+considerably
+to
+the
+expressive
+power
+of
+JSON-LD.
+</ins></p>
+</div>
+<div class="appendix informative section" id="acknowledgements" typeof="bibo:Chapter" resource="#acknowledgements" rel="bibo:chapter">
+<h2>
+<span class="secno">
+<del class="diff-old">E.
+</del>
+<ins class="diff-chg">D.
+</ins>
+</span>
+Acknowledgements
+</h2>
+<p>
+<em>
+This
+section
+is
+non-normative.
+</em>
+</p>
+<p>
+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,
+Dave
+Longley,
+Dave
+Lehn
+and
+Mike
+Johnson
+who
+reviewed,
+provided
+feedback,
+and
+performed
+several
+implementations
+of
+the
+specification,
+and
+Ian
+Davis,
+who
+created
+RDF/JSON.
+Thanks
+also
+to
+Nathan
+Rixham,
+Bradley
+P.
+Allen,
+Kingsley
+Idehen,
+Glenn
+McDonald,
+Alexandre
+Passant,
+Danny
+Ayers,
+Ted
+Thibodeau
+Jr.,
+Olivier
+Grisel,
+Niklas
+Lindström,
+Markus
+Lanthaler,
+and
+Richard
+Cyganiak
+for
+their
+input
+on
+the
+specification.
+</p>
+</div>
+<div id="references" class="appendix section" typeof="bibo:Chapter" resource="#references" rel="bibo:chapter">
+<h2>
+<span class="secno">
+<del class="diff-old">F.
+</del>
+<ins class="diff-chg">E.
+</ins>
+</span>
+References
+</h2>
+<div id="normative-references" typeof="bibo:Chapter" resource="#normative-references" rel="bibo:chapter" class="section">
+<h3>
+<span class="secno">
+<del class="diff-old">F.1
+</del>
+<ins class="diff-chg">E.1
+</ins>
+</span>
+Normative
+references
+</h3>
+<dl class="bibliography" about="">
+<dt id="bib-BCP47">
+[BCP47]
+</dt>
+<dd rel="dcterms:requires">
+A.
+Phillips,
+M.
+Davis.
+<a href="http://tools.ietf.org/rfc/bcp/bcp47.txt">
+<cite>
+Tags
+for
+Identifying
+Languages
+</cite>
+</a>
+September
+2009.
+IETF
+Best
+Current
+Practice.
+URL:
+<a href="http://tools.ietf.org/rfc/bcp/bcp47.txt">
+http://tools.ietf.org/rfc/bcp/bcp47.txt
+</a>
+</dd>
+<del class="diff-old">[JSON-LD-API]
+Manu
+Sporny,
+Gregg
+Kellogg,
+Dave
+Longley,
+Markus
+Lanthaler,
+Eds.
+JSON-LD
+API
+Latest.
+W3C
+Editor's
+Draft.
+URL:
+http://json-ld.org/spec/latest/json-ld-api/
+</del>
+<dt id="bib-RFC3987">
+[RFC3987]
+</dt>
+<dd rel="dcterms:requires">
+M.
+Dürst;
+M.
+Suignard.
+<a href="http://www.ietf.org/rfc/rfc3987.txt">
+<cite>
+Internationalized
+Resource
+Identifiers
+(IRIs).
+</cite>
+</a>
+January
+2005.
+Internet
+RFC
+3987.
+URL:
+<a href="http://www.ietf.org/rfc/rfc3987.txt">
+http://www.ietf.org/rfc/rfc3987.txt
+</a>
+</dd>
+<dt id="bib-RFC4627">
+[RFC4627]
+</dt>
+<dd rel="dcterms:requires">
+D.
+Crockford.
+<a href="http://www.ietf.org/rfc/rfc4627.txt">
+<cite>
+The
+application/json
+Media
+Type
+for
+JavaScript
+Object
+Notation
+(JSON)
+</cite>
+</a>
+July
+2006.
+Internet
+RFC
+4627.
+URL:
+<a href="http://www.ietf.org/rfc/rfc4627.txt">
+http://www.ietf.org/rfc/rfc4627.txt
+</a>
+</dd>
+<dt id="bib-RFC5988">
+[RFC5988]
+</dt>
+<dd rel="dcterms:requires">
+M.
+Nottingham.
+<a href="http://tools.ietf.org/rfc/rfc5988">
+<cite>
+Web
+Linking
+</cite>
+</a>
+October
+2010.
+IETF
+Standard.
+URL:
+<a href="http://tools.ietf.org/rfc/rfc5988.txt">
+http://tools.ietf.org/rfc/rfc5988.txt
+</a>
+</dd>
+<del class="diff-old">[WEBIDL]
+Cameron
+McCormack.
+Web
+IDL.
+27
+September
+2011.
+W3C
+Working
+Draft.
+(Work
+in
+progress.)
+URL:
+http://www.w3.org/TR/2011/WD-WebIDL-20110927/
+</del>
+</dl>
+</div>
+<div id="informative-references" typeof="bibo:Chapter" resource="#informative-references" rel="bibo:chapter" class="section">
+<h3>
+<span class="secno">
+<del class="diff-old">F.2
+</del>
+<ins class="diff-chg">E.2
+</ins>
+</span>
+Informative
+references
+</h3>
+<dl class="bibliography" about="">
+<del class="diff-old">[ECMA-262]
+</del>
+<dt id="bib-JSON-LD-API">
+<ins class="diff-chg">[JSON-LD-API]
+</ins>
+</dt>
+<dd rel="dcterms:references">
+<ins class="diff-chg">Manu
+Sporny,
+Gregg
+Kellogg,
+Dave
+Longley,
+Markus
+Lanthaler,
+Eds.
+</ins>
+<cite>
+<del class="diff-old">ECMAScript
+Language
+Specification.
+</del>
+<a href="http://json-ld.org/spec/latest/json-ld-api/">
+<ins class="diff-new">JSON-LD
+API
+</ins>
+</a>
+<del class="diff-old">December
+1999.
+</del>
+</cite>
+<ins class="diff-chg">Latest.
+W3C
+Editor's
+Draft.
+</ins>
+URL:
+<del class="diff-old">http://www.ecma-international.org/publications/standards/Ecma-262.htm
+</del>
+<a href="http://json-ld.org/spec/latest/json-ld-api/">
+<ins class="diff-chg">http://json-ld.org/spec/latest/json-ld-api/
+</ins>
+</a>
+</dd>
+<del class="diff-old">[HTML-RDFA]
+</del>
+<dt id="bib-RDF-CONCEPTS">
+<ins class="diff-chg">[RDF-CONCEPTS]
+</ins>
+</dt>
+<del class="diff-old">Manu
+Sporny;
+et
+al.
+</del>
+<dd rel="dcterms:references">
+<ins class="diff-chg">Graham
+Klyne;
+Jeremy
+J.
+Carroll.
+</ins><a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210">
+<cite>
+<del class="diff-old">HTML+RDFa
+</del>
+<ins class="diff-chg">Resource
+Description
+Framework
+(RDF):
+Concepts
+and
+Abstract
+Syntax.
+</ins>
+</cite>
+</a>
+<del class="diff-old">04
+March
+2010.
+</del>
+<ins class="diff-chg">10
+February
+2004.
+</ins>
+W3C
+<del class="diff-old">Working
+Draft.
+</del>
+<ins class="diff-chg">Recommendation.
+</ins>
+URL:
+<del class="diff-old">http://www.w3.org/TR/rdfa-in-html/
+</del>
+<a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210">
+<ins class="diff-chg">http://www.w3.org/TR/2004/REC-rdf-concepts-20040210
+</ins>
+</a>
+</dd>
+<dt id="bib-RDF-PRIMER">
+[RDF-PRIMER]
+</dt>
+<dd rel="dcterms:references">
+Frank
+Manola;
+Eric
+Miller.
+<a href="http://www.w3.org/TR/2004/REC-rdf-primer-20040210/">
+<cite>
+RDF
+Primer.
+</cite>
+</a>
+10
+February
+2004.
+W3C
+Recommendation.
+URL:
+<a href="http://www.w3.org/TR/2004/REC-rdf-primer-20040210/">
+http://www.w3.org/TR/2004/REC-rdf-primer-20040210/
+</a>
+</dd>
+<dt id="bib-RDFA-CORE">
+[RDFA-CORE]
+</dt>
+<dd rel="dcterms:references">
+Shane
+McCarron;
+et
+al.
+<a href="http://www.w3.org/TR/2012/PR-rdfa-core-20120508/">
+<cite>
+RDFa
+Core
+1.1:
+Syntax
+and
+processing
+rules
+for
+embedding
+RDF
+through
+attributes.
+</cite>
+</a>
+<del class="diff-old">13
+March
+</del>
+<ins class="diff-chg">8
+May
+</ins>
+2012.
+W3C
+<del class="diff-old">Candidate
+</del>
+<ins class="diff-chg">Proposed
+</ins>
+Recommendation.
+URL:
+<del class="diff-old">http://www.w3.org/TR/2012/CR-rdfa-core-20120313/
+</del>
+<a href="http://www.w3.org/TR/2012/PR-rdfa-core-20120508/">
+<ins class="diff-chg">http://www.w3.org/TR/2012/PR-rdfa-core-20120508/
+</ins>
+</a>
+</dd>
+<dt id="bib-TURTLE">
+[TURTLE]
+</dt>
+<dd rel="dcterms:references">
+David
+Beckett,
+Tim
+Berners-Lee.
+<a href="http://www.w3.org/TeamSubmission/turtle/">
+<cite>
+Turtle:
+Terse
+RDF
+Triple
+Language.
+</cite>
+</a>
+January
+2008.
+W3C
+Team
+Submission.
+URL:
+<a href="http://www.w3.org/TeamSubmission/turtle/">
+http://www.w3.org/TeamSubmission/turtle/
+</a>
+</dd>
+</dl>
+</div>
+</div>
+</body>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/spec/ED/json-ld-syntax/20120522/index.html Tue May 22 14:26:11 2012 -0400
@@ -0,0 +1,2750 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML+RDFa 1.1//EN' 'http://www.w3.org/MarkUp/DTD/xhtml-rdfa-2.dtd'>
+<html dir="ltr" about="" property="dcterms:language" content="en" xmlns="http://www.w3.org/1999/xhtml" prefix='bibo: http://purl.org/ontology/bibo/' typeof="bibo:Document">
+<head>
+<title>JSON-LD Syntax 1.0</title>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+
+<!--
+ === NOTA BENE ===
+ For the three scripts below, if your spec resides on dev.w3 you can check them
+ out in the same tree and use relative links so that they'll work offline,
+ -->
+
+
+
+<style type="text/css">
+.diff { font-weight:bold; color:#0a3; }
+ol.algorithm.update { margin-left: 2em; }
+ol.algorithm.update>li { list-style-type: none; }
+ol.algorithm.update>li>span.list-number {
+ display:block;
+ float: left;
+ margin-left: -3.5em;
+}
+</style>
+<style type="text/css">
+/*****************************************************************
+ * ReSpec CSS
+ * Robin Berjon (robin at berjon dot com)
+ * v0.05 - 2009-07-31
+ *****************************************************************/
+
+
+/* --- 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;
+}
+
+code {
+ color: #ff4500;
+}
+
+
+/* --- 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 {
+ font-weight: bold;
+ color: #005a9c;
+}
+
+.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 {
+ color: #005a9c;
+}
+.idlMethName {
+ color: #ff4500;
+}
+.idlMethName a {
+ color: #ff4500;
+ border-bottom: 1px dotted #ff4500;
+ text-decoration: none;
+}
+
+/*.idlParam*/
+.idlParamType {
+ color: #005a9c;
+}
+.idlParamName {
+ font-style: italic;
+}
+
+.extAttr {
+ color: #666;
+}
+
+/*.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.fields, dl.dictionary-members {
+ margin-left: 2em;
+}
+
+.attributes dt, .methods dt, .constants dt, .fields dt, .dictionary-members dt {
+ font-weight: normal;
+}
+
+.attributes dt code, .methods dt code, .constants 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;
+}
+
+.attributes dd, .methods dd, .constants 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%;
+}
+
+/* --- TOC --- */
+.toc a {
+ text-decoration: none;
+}
+
+a .secno {
+ color: #000;
+}
+
+/* --- 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;
+}
+
+/* --- EXAMPLES --- */
+pre.example {
+ border-top: 1px solid #ff4500;
+ border-bottom: 1px solid #ff4500;
+ padding: 1em;
+ margin-top: 1em;
+}
+
+pre.example::before {
+ content: "Example";
+ display: block;
+ width: 150px;
+ background: #ff4500;
+ color: #fff;
+ font-family: initial;
+ padding: 3px;
+ font-weight: bold;
+ margin: -1em 0 1em -1em;
+}
+
+/* --- EDITORIAL NOTES --- */
+.issue {
+ padding: 1em;
+ margin: 1em 0em 0em;
+ border: 1px solid #f00;
+ background: #ffc;
+}
+
+.issue::before {
+ content: "Issue";
+ display: block;
+ width: 150px;
+ margin: -1.5em 0 0.5em 0;
+ font-weight: bold;
+ border: 1px solid #f00;
+ background: #fff;
+ padding: 3px 1em;
+}
+
+.note {
+ margin: 1em 0em 0em;
+ padding: 1em;
+ border: 2px solid #cff6d9;
+ background: #e2fff0;
+}
+
+.note::before {
+ content: "Note";
+ display: block;
+ width: 150px;
+ margin: -1.5em 0 0.5em 0;
+ font-weight: bold;
+ border: 1px solid #cff6d9;
+ background: #fff;
+ padding: 3px 1em;
+}
+
+/* --- Best Practices --- */
+div.practice {
+ border: solid #bebebe 1px;
+ margin: 2em 1em 1em 2em;
+}
+
+span.practicelab {
+ margin: 1.5em 0.5em 1em 1em;
+ font-weight: bold;
+ font-style: italic;
+}
+
+span.practicelab { background: #dfffff; }
+
+span.practicelab {
+ position: relative;
+ padding: 0 0.5em;
+ top: -1.5em;
+}
+
+p.practicedesc {
+ margin: 1.5em 0.5em 1em 1em;
+}
+
+@media screen {
+ p.practicedesc {
+ position: relative;
+ top: -2em;
+ padding: 0;
+ margin: 1.5em 0.5em -1em 1em;
+ }
+}
+
+/* --- SYNTAX HIGHLIGHTING --- */
+pre.sh_sourceCode {
+ background-color: white;
+ color: black;
+ font-style: normal;
+ font-weight: normal;
+}
+
+pre.sh_sourceCode .sh_keyword { color: #005a9c; font-weight: bold; } /* language keywords */
+pre.sh_sourceCode .sh_type { color: #666; } /* basic types */
+pre.sh_sourceCode .sh_usertype { color: teal; } /* user defined types */
+pre.sh_sourceCode .sh_string { color: red; font-family: monospace; } /* strings and chars */
+pre.sh_sourceCode .sh_regexp { color: orange; font-family: monospace; } /* regular expressions */
+pre.sh_sourceCode .sh_specialchar { color: #ffc0cb; font-family: monospace; } /* e.g., \n, \t, \\ */
+pre.sh_sourceCode .sh_comment { color: #A52A2A; font-style: italic; } /* comments */
+pre.sh_sourceCode .sh_number { color: purple; } /* literal numbers */
+pre.sh_sourceCode .sh_preproc { color: #00008B; font-weight: bold; } /* e.g., #include, import */
+pre.sh_sourceCode .sh_symbol { color: blue; } /* e.g., *, + */
+pre.sh_sourceCode .sh_function { color: black; font-weight: bold; } /* function calls and declarations */
+pre.sh_sourceCode .sh_cbracket { color: red; } /* block brackets (e.g., {, }) */
+pre.sh_sourceCode .sh_todo { font-weight: bold; background-color: #00FFFF; } /* TODO and FIXME */
+
+/* Predefined variables and functions (for instance glsl) */
+pre.sh_sourceCode .sh_predef_var { color: #00008B; }
+pre.sh_sourceCode .sh_predef_func { color: #00008B; font-weight: bold; }
+
+/* for OOP */
+pre.sh_sourceCode .sh_classname { color: teal; }
+
+/* line numbers (not yet implemented) */
+pre.sh_sourceCode .sh_linenum { display: none; }
+
+/* Internet related */
+pre.sh_sourceCode .sh_url { color: blue; text-decoration: underline; font-family: monospace; }
+
+/* for ChangeLog and Log files */
+pre.sh_sourceCode .sh_date { color: blue; font-weight: bold; }
+pre.sh_sourceCode .sh_time, pre.sh_sourceCode .sh_file { color: #00008B; font-weight: bold; }
+pre.sh_sourceCode .sh_ip, pre.sh_sourceCode .sh_name { color: #006400; }
+
+/* for Prolog, Perl... */
+pre.sh_sourceCode .sh_variable { color: #006400; }
+
+/* for LaTeX */
+pre.sh_sourceCode .sh_italics { color: #006400; font-style: italic; }
+pre.sh_sourceCode .sh_bold { color: #006400; font-weight: bold; }
+pre.sh_sourceCode .sh_underline { color: #006400; text-decoration: underline; }
+pre.sh_sourceCode .sh_fixed { color: green; font-family: monospace; }
+pre.sh_sourceCode .sh_argument { color: #006400; }
+pre.sh_sourceCode .sh_optionalargument { color: purple; }
+pre.sh_sourceCode .sh_math { color: orange; }
+pre.sh_sourceCode .sh_bibtex { color: blue; }
+
+/* for diffs */
+pre.sh_sourceCode .sh_oldfile { color: orange; }
+pre.sh_sourceCode .sh_newfile { color: #006400; }
+pre.sh_sourceCode .sh_difflines { color: blue; }
+
+/* for css */
+pre.sh_sourceCode .sh_selector { color: purple; }
+pre.sh_sourceCode .sh_property { color: blue; }
+pre.sh_sourceCode .sh_value { color: #006400; font-style: italic; }
+
+/* other */
+pre.sh_sourceCode .sh_section { color: black; font-weight: bold; }
+pre.sh_sourceCode .sh_paren { color: red; }
+pre.sh_sourceCode .sh_attribute { color: #006400; }
+
+</style><style type="text/css">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><link href="http://www.w3.org/StyleSheets/TR/w3c-unofficial" rel="stylesheet" type="text/css" charset="utf-8" /><script type="text/javascript" src="http://s3.amazonaws.com/green-turtle/RDFa.0.13.0.js"></script><meta name="green-turtle-rdfa-message" content="{ "type": "status", "loaded": true, "count": 150 }" /></head>
+
+<body style="display: inherit; "><div class="head"><p></p><h1 property="dcterms:title" class="title" id="title">JSON-LD Syntax 1.0</h1><h2 property="bibo:subtitle" id="subtitle">A Context-based JSON Serialization for Linking Data</h2><h2 property="dcterms:issued" datatype="xsd:dateTime" content="2012-05-22T07:54:18+0000" id="unofficial-draft-22-may-2012">Unofficial Draft 22 May 2012</h2><dl><dt>Editors:</dt><dd rel="bibo:editor" inlist=""><span typeof="foaf:Person"><a rel="foaf:homepage" property="foaf:name" content="Manu Sporny" href="http://manu.sporny.org/">Manu Sporny</a>, <a rel="foaf:workplaceHomepage" href="http://digitalbazaar.com/">Digital Bazaar</a></span>
+</dd>
+<dd rel="bibo:editor" inlist=""><span typeof="foaf:Person"><a rel="foaf:homepage" property="foaf:name" content="Gregg Kellogg" href="http://greggkellogg.net/">Gregg Kellogg</a>, <a rel="foaf:workplaceHomepage" href="http://kellogg-assoc.com/">Kellogg Associates</a></span>
+</dd>
+<dd rel="bibo:editor" inlist=""><span typeof="foaf:Person"><a rel="foaf:homepage" property="foaf:name" content="Markus Lanthaler" href="http://www.markus-lanthaler.com/">Markus Lanthaler</a>, <a rel="foaf:workplaceHomepage" href="http://www.tugraz.at/">Graz University of Technology</a></span>
+</dd>
+<dt>Authors:</dt><dd rel="dcterms:contributor"><span typeof="foaf:Person"><a rel="foaf:homepage" property="foaf:name" content="Manu Sporny" href="http://digitalbazaar.com/">Manu Sporny</a>, <a rel="foaf:workplaceHomepage" href="http://digitalbazaar.com/">Digital Bazaar</a></span>
+</dd>
+<dd rel="dcterms:contributor"><span typeof="foaf:Person"><a rel="foaf:homepage" property="foaf:name" content="Dave Longley" href="http://digitalbazaar.com/">Dave Longley</a>, <a rel="foaf:workplaceHomepage" href="http://digitalbazaar.com/">Digital Bazaar</a></span>
+</dd>
+<dd rel="dcterms:contributor"><span typeof="foaf:Person"><a rel="foaf:homepage" property="foaf:name" content="Gregg Kellogg" href="http://greggkellogg.net/">Gregg Kellogg</a>, <a rel="foaf:workplaceHomepage" href="http://kellogg-assoc.com/">Kellogg Associates</a></span>
+</dd>
+<dd rel="dcterms:contributor"><span typeof="foaf:Person"><a rel="foaf:homepage" property="foaf:name" content="Markus Lanthaler" href="http://www.markus-lanthaler.com/">Markus Lanthaler</a>, <a rel="foaf:workplaceHomepage" href="http://www.tugraz.at/">Graz University of Technology</a></span>
+</dd>
+<dd rel="dcterms:contributor"><span typeof="foaf:Person"><a rel="foaf:homepage" property="foaf:name" content="Mark Birbeck" href="http://webbackplane.com/">Mark Birbeck</a>, <a rel="foaf:workplaceHomepage" href="http://webbackplane.com/">Backplane Ltd.</a></span>
+</dd>
+</dl><p>This document is also available in this non-normative format: <a href="diff-20120426.html">diff to previous version</a>.</p><p class="copyright">This document is licensed under a <a class="subfoot" href="http://creativecommons.org/licenses/by/3.0/" rel="license">Creative Commons Attribution 3.0 License</a>.</p><hr /></div>
+<div id="abstract" class="introductory section" property="dcterms:abstract" datatype="" typeof="bibo:Chapter" resource="#abstract" rel="bibo:chapter"><h2>Abstract</h2>
+<p>
+JSON has proven to be a highly useful object serialization and messaging format.
+In an attempt to harmonize the representation of <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a>
+in JSON, this specification outlines a common JSON representation format for
+expressing directed graphs; mixing both Linked Data and non-Linked Data in
+a single document.
+</p>
+</div><div id="sotd" class="introductory section" typeof="bibo:Chapter" resource="#sotd" rel="bibo:chapter"><h2>Status of This Document</h2><p>This document is merely a public working draft of a potential specification. It has no official standing of any kind and does not represent the support or consensus of any standards organisation.</p>
+<p>This document is an experimental work in progress.</p>
+
+<!-- <p>
+This document has been reviewed by W3C Members, by software
+developers, and by other W3C groups and interested parties, and is
+endorsed by the Director as a W3C Recommendation. It is a stable
+document and may be used as reference material or cited from another
+document. W3C's role in making the Recommendation is to draw attention
+to the specification and to promote its widespread deployment. This
+enhances the functionality and interoperability of the Web.
+</p> -->
+
+</div><div id="toc" typeof="bibo:Chapter" resource="#toc" rel="bibo:chapter" class="section"><h2 class="introductory">Table of Contents</h2><ul class="toc"><li class="tocline"><a href="#introduction" class="tocxref"><span class="secno">1. </span>Introduction</a><ul class="toc"><li class="tocline"><a href="#how-to-read-this-document" class="tocxref"><span class="secno">1.1 </span>How to Read this Document</a></li><li class="tocline"><a href="#syntax-tokens-and-keywords" class="tocxref"><span class="secno">1.2 </span>Syntax Tokens and Keywords</a></li><li class="tocline"><a href="#contributing" class="tocxref"><span class="secno">1.3 </span>Contributing</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="#basic-concepts" class="tocxref"><span class="secno">3. </span>Basic Concepts</a><ul class="toc"><li class="tocline"><a href="#linking-data" class="tocxref"><span class="secno">3.1 </span>Linking Data</a><ul class="toc"><li class="tocline"><a href="#the-context" class="tocxref"><span class="secno">3.1.1 </span>The Context</a></li><li class="tocline"><a href="#from-json-to-json-ld" class="tocxref"><span class="secno">3.1.2 </span>From JSON to JSON-LD</a></li></ul></li><li class="tocline"><a href="#iris" class="tocxref"><span class="secno">3.2 </span>IRIs</a></li><li class="tocline"><a href="#identifying-the-subject" class="tocxref"><span class="secno">3.3 </span>Identifying the Subject</a></li><li class="tocline"><a href="#specifying-the-type" class="tocxref"><span class="secno">3.4 </span>Specifying the Type</a></li><li class="tocline"><a href="#string-internationalization" class="tocxref"><span class="secno">3.5 </span>String Internationalization</a></li><li class="tocline"><a href="#sets-and-lists" class="tocxref"><span class="secno">3.6 </span>Sets and Lists</a></li></ul></li><li class="tocline"><a href="#advanced-concepts" class="tocxref"><span class="secno">4. </span>Advanced Concepts</a><ul class="toc"><li class="tocline"><a href="#typed-values" class="tocxref"><span class="secno">4.1 </span>Typed Values</a></li><li class="tocline"><a href="#compact-iris" class="tocxref"><span class="secno">4.2 </span>Compact IRIs</a></li><li class="tocline"><a href="#external-contexts" class="tocxref"><span class="secno">4.3 </span>External Contexts</a></li><li class="tocline"><a href="#referencing-contexts-from-json-documents" class="tocxref"><span class="secno">4.4 </span>Referencing Contexts from JSON Documents</a></li><li class="tocline"><a href="#expanded-term-definition" class="tocxref"><span class="secno">4.5 </span>Expanded Term Definition</a></li><li class="tocline"><a href="#type-coercion" class="tocxref"><span class="secno">4.6 </span>Type Coercion</a></li><li class="tocline"><a href="#iri-expansion-within-a-context" class="tocxref"><span class="secno">4.7 </span><abbr title="Internationalized Resource Identifier">IRI</abbr> Expansion Within a Context</a></li><li class="tocline"><a href="#embedding" class="tocxref"><span class="secno">4.8 </span>Embedding</a></li><li class="tocline"><a href="#named-graphs" class="tocxref"><span class="secno">4.9 </span>Named Graphs</a></li><li class="tocline"><a href="#identifying-unlabeled-nodes" class="tocxref"><span class="secno">4.10 </span>Identifying Unlabeled Nodes</a></li><li class="tocline"><a href="#aliasing-keywords" class="tocxref"><span class="secno">4.11 </span>Aliasing Keywords</a></li><li class="tocline"><a href="#expanded-document-form" class="tocxref"><span class="secno">4.12 </span>Expanded Document Form</a></li><li class="tocline"><a href="#compact-document-form" class="tocxref"><span class="secno">4.13 </span>Compact Document Form</a></li></ul></li><li class="tocline"><a href="#json-ld-grammar" class="tocxref"><span class="secno">A. </span>JSON-LD Grammar</a></li><li class="tocline"><a href="#markup-examples" class="tocxref"><span class="secno">B. </span>Markup Examples</a><ul class="toc"><li class="tocline"><a href="#turtle" class="tocxref"><span class="secno">B.1 </span>Turtle</a><ul class="toc"><li class="tocline"><a href="#prefix-definitions" class="tocxref"><span class="secno">B.1.1 </span>Prefix definitions</a></li><li class="tocline"><a href="#embedding-1" class="tocxref"><span class="secno">B.1.2 </span>Embedding</a></li><li class="tocline"><a href="#lists" class="tocxref"><span class="secno">B.1.3 </span>Lists</a></li></ul></li><li class="tocline"><a href="#rdfa" class="tocxref"><span class="secno">B.2 </span>RDFa</a></li><li class="tocline"><a href="#microformats" class="tocxref"><span class="secno">B.3 </span>Microformats</a></li><li class="tocline"><a href="#microdata" class="tocxref"><span class="secno">B.4 </span>Microdata</a></li></ul></li><li class="tocline"><a href="#iana-considerations" class="tocxref"><span class="secno">C. </span>IANA Considerations</a></li><li class="tocline"><a href="#acknowledgements" class="tocxref"><span class="secno">D. </span>Acknowledgements</a></li><li class="tocline"><a href="#references" class="tocxref"><span class="secno">E. </span>References</a><ul class="toc"><li class="tocline"><a href="#normative-references" class="tocxref"><span class="secno">E.1 </span>Normative references</a></li><li class="tocline"><a href="#informative-references" class="tocxref"><span class="secno">E.2 </span>Informative references</a></li></ul></li></ul></div>
+
+
+
+<div class="informative section" id="introduction" typeof="bibo:Chapter" resource="#introduction" rel="bibo:chapter">
+
+<!-- OddPage -->
+<h2><span class="secno">1. </span>Introduction</h2><p><em>This section is non-normative.</em></p>
+
+<p>
+JSON, as specified in [<cite><a class="bibref" rel="biblioentry" href="#bib-RFC4627">RFC4627</a></cite>], is a simple language for representing
+data on the Web. <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a> is a technique for creating a network
+of inter-connected data across different Web documents and Web sites.
+A <em>thing</em> in this data network is typically identified using an
+<a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> (Internationalized Resource Identifier), which is typically
+dereference-able, and thus may be used to find more information about the
+<em>thing</em>. The <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> allows
+a software program to start at one <em>thing</em> and follow links to other
+<em>things</em> in order to learn more about all of the things described on the
+Web.
+</p>
+
+<p>
+JSON-LD is designed as a lightweight syntax that can be used to express
+<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a>. It is primarily intended to be a way to use Linked Data
+in Javascript and other Web-based programming environments. It is also
+useful when building inter-operable Web services and when storing Linked
+Data in JSON-based document storage engines. It is practical and designed
+to be as simple as possible, utilizing the large number of JSON parsers
+and libraries available today.
+</p>
+
+<p>
+The syntax does not necessarily require applications to change their JSON, but
+allows one to easily add meaning by simply adding or referencing a context.
+The syntax is designed to not disturb already deployed systems
+running on JSON, but provide a smooth upgrade path from JSON to JSON-LD.
+Finally, the format is intended to be easy to parse, efficient
+to generate, and only requires a very small memory footprint in order to
+operate.
+</p>
+
+<div id="how-to-read-this-document" typeof="bibo:Chapter" resource="#how-to-read-this-document" rel="bibo:chapter" class="section">
+<h3><span class="secno">1.1 </span>How to Read this Document</h3>
+
+<p>
+This document is a detailed specification for a serialization of Linked
+Data in JSON. The document is primarily intended for the following audiences:
+</p>
+
+<ul>
+ <li>Software developers that want to encode Linked Data in a way that is
+ cross-language compatible via JSON.</li>
+ <li>Software developers that want to understand the design decisions and
+ language syntax for JSON-LD.</li>
+ <li>Software developers that want to implement processors and APIs for
+ JSON-LD.</li>
+</ul>
+
+<p>This specification does not describe the programming interfaces for the
+JSON-LD Syntax. The specification that describes the programming interfaces
+for JSON-LD documents is the JSON-LD Application Programming Interface
+[<cite><a class="bibref" rel="biblioentry" href="#bib-JSON-LD-API">JSON-LD-API</a></cite>].</p>
+
+<p>
+To understand the basics in this specification you must first be familiar with
+JSON, which is detailed in [<cite><a class="bibref" rel="biblioentry" href="#bib-RFC4627">RFC4627</a></cite>].</p>
+
+<p>
+ JSON [<cite><a class="bibref" rel="biblioentry" href="#bib-RFC4627">RFC4627</a></cite>] defines several terms which are used throughout this document:
+ </p><dl>
+ <dt><dfn title="json_object" id="dfn-json_object">JSON object</dfn></dt><dd>
+ An object structure is represented as a pair of curly brackets surrounding zero or
+ more name-value pairs. A name is a <a class="tref internalDFN" title="string" href="#dfn-string">string</a>. A single colon comes after
+ each name, separating the name from the value. A single comma separates a value
+ from a following name. The names within an object <em class="rfc2119" title="should">should</em> be unique.
+ </dd>
+ <dt><dfn title="array" id="dfn-array">array</dfn></dt>
+ <dd>
+ In JSON, an array is an <em>ordered</em> collection of values. An array
+ is represented as square brackets surrounding zero or more values that
+ are separated by commas. While JSON-LD uses the same array representation
+ as JSON, the collection is <em>unordered</em> by default. While order is
+ preserved in regular JSON arrays, it is not in regular JSON-LD arrays
+ unless specific markup is provided (see <a href="#sets-and-lists">Sets and Lists</a>).
+ </dd>
+ <dt><dfn title="string" id="dfn-string">string</dfn></dt><dd>
+ A string is a sequence of zero or more Unicode (UTF-8) characters,
+ wrapped in double quotes, using backslash escapes (if necessary). A
+ character is represented as a single character string.
+ </dd>
+ <dt><dfn title="number" id="dfn-number">number</dfn></dt>
+ <dd>
+ A number is is similar to that used in most programming languages, except that the octal and hexadecimal formats are not used and that leading zeros are not allowed.</dd>
+ <dt><dfn title="true" id="dfn-true">true</dfn> and <dfn title="false" id="dfn-false">false</dfn></dt><dd>
+ Values that are used to express one of two possible boolean states.
+ </dd>
+ <dt><dfn title="null" id="dfn-null">null</dfn></dt><dd>
+ Unless otherwise specified, a JSON-LD processor <em class="rfc2119" title="must">must</em> act as if a key-value pair in the body of a JSON-LD document was never declared when the value equals <em>null</em>.
+ If <code>@value</code>, <code>@list</code>, or <code>@set</code> is set to <em>null</em> in expanded form, then the entire JSON object is ignored.
+ If <code>@context</code> is set to <em>null</em>, the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a> is reset and when used
+ within a <a class="tref internalDFN" title="context" href="#dfn-context">context</a>, it removes any definition associated with the key, unless otherwise specified.
+ </dd>
+ <dt><dfn title="subject_definition" id="dfn-subject_definition">subject definition</dfn></dt><dd>
+ A <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> used to represent a <a class="tref internalDFN" title="subject" href="#dfn-subject">subject</a> and one or more properties
+ of that subject. A <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> is a subject definition if it does not contain they keys
+ <code>@value</code>, <code>@list</code> or <code>@set</code> and it has one or more keys other than <code>@id</code>.</dd>
+ <dt><dfn title="subject_reference" id="dfn-subject_reference">subject reference</dfn></dt><dd>
+ A <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> used to reference a subject having only the <code>@id</code> key.</dd>
+ </dl>
+<p></p>
+
+</div>
+
+<div id="syntax-tokens-and-keywords" typeof="bibo:Chapter" resource="#syntax-tokens-and-keywords" rel="bibo:chapter" class="section">
+ <h3><span class="secno">1.2 </span>Syntax Tokens and Keywords</h3>
+
+ <p>JSON-LD specifies a number of syntax tokens and <dfn title="keyword" id="dfn-keyword">keywords</dfn>
+ that are a core part of the language:</p>
+
+ <dl>
+ <dt><code>@context</code></dt>
+ <dd>Used to define the short-hand names that are used throughout a JSON-LD
+ document. These short-hand names are called <a class="tref internalDFN" title="term" href="#dfn-term">term</a>s and help
+ developers to express specific identifiers in a compact manner. The
+ <code>@context</code> keyword is described in detail in the section titled
+ <a href="#the-context">The Context</a>.</dd>
+ <dt><code>@graph</code></dt><dd>Used to explicitly express a <a class="tref internalDFN" title="linked_data_graph" href="#dfn-linked_data_graph">linked data graph</a>.</dd>
+ <dt><code>@id</code></dt>
+ <dd>Used to uniquely identify <em>things</em> that are being described in the document.
+ This keyword is described in the section titled
+ <a href="#identifying-the-subject">Identifying the Subject</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 the sections titled
+ <a href="#string-internationalization">String Internationalization</a> and
+ <a href="#typed-values">Typed Values</a>.</dd>
+ <dt><code>@language</code></dt>
+ <dd>Used to specify the native language for a particular value or the default
+ language of a JSON-LD document. This keyword is described in the section titled
+ <a href="#string-internationalization">String Internationalization</a>.</dd>
+ <dt><code>@type</code></dt>
+ <dd>Used to set the data type of a <a class="tref internalDFN" title="subject" href="#dfn-subject">subject</a> or
+ <a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">typed value</a>. This keyword is described in the section titled
+ <a href="#typed-values">Typed Values</a>.</dd>
+ <dt><code>@container</code></dt>
+ <dd>Used to set the container of a particular value.
+ This keyword is described in the section titled <a href="#sets-and-lists">Sets and Lists</a>.</dd>
+ <dt><code>@list</code></dt>
+ <dd>Used to express an ordered set of data.
+ This keyword is described in the section titled <a href="#sets-and-lists">Sets and Lists</a>.</dd>
+ <dt><code>@set</code></dt>
+ <dd>Used to express an unordered set of data.
+ This keyword is described in the section titled <a href="#sets-and-lists">Sets and Lists</a>.</dd>
+ <dt><code>:</code></dt>
+ <dd>The separator for JSON keys and values that use
+ <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact IRIs</a>.</dd>
+ </dl>
+
+ <p>For the avoidance of doubt, all keys, <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a>, and values in JSON-LD are
+ case-sensitive.</p>
+</div>
+
+<div id="contributing" typeof="bibo:Chapter" resource="#contributing" rel="bibo:chapter" class="section">
+<h3><span class="secno">1.3 </span>Contributing</h3>
+
+<p>There are a number of ways that one may participate in the development of
+this specification:</p>
+
+<ul>
+<li>Technical discussion typically occurs on the public 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 teleconferences</a> are held
+every week on Tuesdays at 1500 UTC.
+</li>
+
+<li>Specification bugs and issues should be reported using the
+<a href="https://github.com/json-ld/json-ld.org/issues">issue tracker</a>.</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>
+
+</div>
+
+</div>
+
+<div class="informative section" id="design-goals-and-rationale" typeof="bibo:Chapter" resource="#design-goals-and-rationale" rel="bibo:chapter">
+
+<!-- OddPage -->
+<h2><span class="secno">2. </span>Design Goals and Rationale</h2><p><em>This section is non-normative.</em></p>
+
+<p>A number of design goals were established before the creation of this
+ markup language:</p>
+
+<dl>
+ <dt>Simplicity</dt>
+ <dd>No extra
+ processors or software libraries should be necessary to use JSON-LD in its most
+ basic form. The language will provide developers with a very easy
+ learning curve. Developers need only know JSON and two
+ <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a> (<code>@context</code>
+ and <code>@id</code>) to use the basic functionality in JSON-LD.</dd>
+ <dt>Compatibility</dt>
+ <dd>The JSON-LD markup must be 100% compatible with JSON. This ensures that
+ all of the standard JSON libraries work seamlessly with JSON-LD documents.</dd>
+ <dt>Expressiveness</dt>
+ <dd>The syntax must be able to express directed graphs, which have been proven
+ to be able to express almost every real world data model.</dd>
+ <dt>Terseness</dt>
+ <dd>The JSON-LD syntax must be very terse and human readable, requiring as
+ little effort as possible from the developer.</dd>
+
+<!-- <dt>Pragmatism</dt>
+ <dd>Mixing the expression of pure Linked Data with data that is not
+ linked was an approach that was driven by pragmatism. JSON-LD attempts to be
+ more practical than theoretical in its approach to Linked Data.</dd> -->
+
+ <dt>Zero Edits, most of the time</dt>
+ <dd>JSON-LD must provide a
+ <a href="#referencing-contexts-from-json-documents">mechanism</a>
+ that allows developers to specify <a class="tref internalDFN" title="context" href="#dfn-context">context</a> in a way that is
+ out-of-band.
+ This allows organizations that have
+ already deployed large JSON-based infrastructure to add meaning to their
+ JSON documents in a way that is not disruptive to their day-to-day operations and is
+ transparent to their current customers. At times, mapping JSON to
+ a graph representation can become difficult. In these instances, rather than
+ having JSON-LD support an esoteric use case, we chose not to support the
+ use case and support a simplified syntax instead. So, while Zero Edits is
+ a goal, it is not always possible without adding great complexity to
+ the language.
+ </dd>
+ <dt>One-pass Processing</dt>
+ <dd>JSON-LD supports one-pass processing, which results in a very small memory
+ footprint when processing documents. For example, to expand a JSON-LD document
+ from a compacted form, only one pass is required over the data.</dd>
+</dl>
+</div>
+
+<div id="basic-concepts" typeof="bibo:Chapter" resource="#basic-concepts" rel="bibo:chapter" class="section">
+
+<!-- OddPage -->
+<h2><span class="secno">3. </span>Basic Concepts</h2>
+
+<p>JSON-LD is designed to ensure that <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a> concepts can be
+marked up in a way that is simple to understand and create by Web authors.
+In many cases, regular JSON markup can become Linked Data with the
+simple addition of a <a class="tref internalDFN" title="context" href="#dfn-context">context</a>. As more JSON-LD features are
+used, more semantics are added to the JSON markup.</p>
+
+<div id="linking-data" typeof="bibo:Chapter" resource="#linking-data" rel="bibo:chapter" class="section">
+<h3><span class="secno">3.1 </span>Linking Data</h3>
+
+<p>
+The following definition for <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a> is the one that will
+be used for this specification.
+</p>
+<ol>
+ <li><dfn title="linked_data" id="dfn-linked_data">Linked Data</dfn> is a set of documents, each containing a representation of a linked data graph.</li>
+ <li>A <dfn title="linked_data_graph" id="dfn-linked_data_graph">linked data graph</dfn> is an unordered labeled directed graph, where nodes are <a class="tref internalDFN" title="subject" href="#dfn-subject">subject</a>s or <a class="tref internalDFN" title="object" href="#dfn-object">object</a>s, and edges are properties.</li>
+ <li>A <dfn title="subject" id="dfn-subject">subject</dfn> is any node in a <a class="tref internalDFN" title="linked_data_graph" href="#dfn-linked_data_graph">linked data graph</a> with at least one outgoing edge.</li>
+ <li>A <a class="tref internalDFN" title="subject" href="#dfn-subject">subject</a> <em class="rfc2119" title="should">should</em> be labeled with an <dfn title="iri" id="dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></dfn> (an Internationalized Resource Identifier as described in [<cite><a class="bibref" rel="biblioentry" href="#bib-RFC3987">RFC3987</a></cite>]).</li>
+ <li>An <dfn title="object" id="dfn-object">object</dfn> is a node in a <a class="tref internalDFN" title="linked_data_graph" href="#dfn-linked_data_graph">linked data graph</a> with at least one incoming edge.</li>
+ <li>An <a class="tref internalDFN" title="object" href="#dfn-object">object</a> <em class="rfc2119" title="may">may</em> be labeled with an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</li>
+ <li>A node <em class="rfc2119" title="may">may</em> be a <a class="tref internalDFN" title="subject" href="#dfn-subject">subject</a> and <a class="tref internalDFN" title="object" href="#dfn-object">object</a> at the same time.</li>
+ <li>A <dfn title="property" id="dfn-property">property</dfn> is an edge of the <a class="tref internalDFN" title="linked_data_graph" href="#dfn-linked_data_graph">linked data graph</a>.</li>
+ <li>A <a class="tref internalDFN" title="property" href="#dfn-property">property</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>An <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> that is a label in a <a class="tref internalDFN" title="linked_data_graph" href="#dfn-linked_data_graph">linked data graph</a> <em class="rfc2119" title="should">should</em> be dereferencable to a <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a> document describing the labeled <a class="tref internalDFN" title="subject" href="#dfn-subject">subject</a>, <a class="tref internalDFN" title="object" href="#dfn-object">object</a> or <a class="tref internalDFN" title="property" href="#dfn-property">property</a>.</li>
+ <li>A <dfn title="value" id="dfn-value">value</dfn> is an <a class="tref internalDFN" title="object" href="#dfn-object">object</a> with a label that is not an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a></li>
+</ol>
+
+<p class="issue">An illustration of a linked data graph would probably help here.</p>
+
+<p>
+Note that the definition for <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a> above is silent on the
+topic of unlabeled nodes. Unlabeled nodes are not considered
+<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a>. However, this specification allows for the expression
+of unlabled nodes, as most graph-based data sets on the Web contain a number
+of associated nodes that are not named and thus are not directly
+de-referenceable.
+</p>
+
+<p>JSON-LD defines a mechanism to map JSON terms, i.e., keys and values, to IRIs. This does not mean
+that JSON-LD requires every key or value to be an <abbr title="Internationalized Resource Identifier">IRI</abbr>, but rather ensures that
+keys and values can be mapped to IRIs if the developer desires to transform
+their data into <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a>. There are a few techniques that can ensure
+that developers will generate good Linked Data for the Web. JSON-LD
+formalizes those techniques.
+</p>
+
+<p>We will be using the following JSON markup as the example for the
+rest of this section:
+</p>
+
+<pre class="example">{
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "depiction": "http://twitter.com/account/profile_image/manusporny"
+}</pre>
+
+<div id="the-context" typeof="bibo:Chapter" resource="#the-context" rel="bibo:chapter" class="section">
+<h4><span class="secno">3.1.1 </span>The Context</h4>
+
+<p>In JSON-LD, a <dfn title="context" id="dfn-context">context</dfn> is used to map <a class="tref internalDFN" title="term" href="#dfn-term">term</a>s, i.e., properties with associated
+ values in an JSON document, to <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>s. A <dfn title="term" id="dfn-term">term</dfn> is a short word that expands to an
+ <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>. <a class="tref internalDFN" title="term" href="#dfn-term">Term</a>s <em class="rfc2119" title="may">may</em> be defined as any valid JSON <a class="tref internalDFN" title="string" href="#dfn-string">string</a> other
+ than a JSON-LD <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>. To avoid
+ forward-compatibility issues, <a class="tref internalDFN" title="term" href="#dfn-term">term</a>s starting with an <code>@</code> character <em class="rfc2119" title="should not">should not</em> be used
+ as they might be used as <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a> in future versions of JSON-LD. Furthermore,
+ the use of empty terms (<code>""</code>) is discouraged as not all programming languages are able to handle
+ empty property names.</p>
+<p>The Web uses <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> for unambiguous identification. The
+ idea is that these <a class="tref internalDFN" title="term" href="#dfn-term">term</a>s mean something that may be of use to other developers and that it is useful to
+ give them an unambiguous identifier. That is, it is useful for <a class="tref internalDFN" title="term" href="#dfn-term">term</a>s to expand to IRIs so that
+ developers don't accidentally step on each other's <dfn title="vocabulary" id="dfn-vocabulary">vocabulary</dfn> 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 plugging it directly into a web browser, for instance) to go to
+ the term and get a definition of what the term means. This mechanism is analogousto the way we can use
+ <a href="http://wordnet.princeton.edu/">WordNet</a> today to see the definition of words in the English language.
+ Developers and machines need the same sort of definition of terms. <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a> provide a way to
+ ensure that these terms are unambiguous. For example, the term <code>name</code> may
+ map directly to the <abbr title="Internationalized Resource Identifier">IRI</abbr> <code>http://xmlns.com/foaf/0.1/name</code>. This allows JSON-LD documents to be constructed
+ using the common JSON practice of simple name/value pairs while ensuring that the data is useful outside of the
+ page, API or database in which it resides. The value of a term mapping
+ <em class="rfc2119" title="must">must</em> be either; 1) a simple string with the lexical form of an <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> or
+ 2) <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, or 3) an <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> containing an
+ <code>@id</code>, <code>@type</code>, <code>@language</code>, or <code>@container</code> keyword
+ (all other keywords are ignored by a JSON-LD processor).
+</p>
+
+<p>These Linked Data <a class="tref internalDFN" title="term" href="#dfn-term">term</a>s are typically collected in a
+context document that would look something like this:</p>
+
+<pre class="example">{
+ "@context":
+ {
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "depiction":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/depiction",
+ "@type": "@id"
+ },
+ "homepage":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+ },
+ }
+}</pre>
+
+<p>Assuming that this context document can be retrieved at <code>http://json-ld.org/contexts/person</code>,
+ it can be referenced from a JSON-LD document by adding a single line. The JSON markup shown in the previous
+ section could be changed as follows:</p>
+
+<pre class="example">{
+ <span class="diff">"@context": "http://json-ld.org/contexts/person",</span>
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "depiction": "http://twitter.com/account/profile_image/manusporny"
+}</pre>
+
+<p>The additions above transform the previous JSON document into a JSON document
+with added semantics because the <code>@context</code> specifies how the
+<strong>name</strong>, <strong>homepage</strong>, and <strong>depiction</strong>
+terms map to <a class="tref internalDFN" title="iri" href="#dfn-iri">IRIs</a>.
+Mapping those keys to IRIs gives the data global context. If two
+developers use the same <abbr title="Internationalized Resource Identifier">IRI</abbr> to describe a property, they are more than likely
+expressing the same concept. This allows both developers to re-use each others
+data without having to agree to how their data will interoperate on a
+site-by-site basis. Contexts may also contain type information
+for certain <a class="tref internalDFN" title="term" href="#dfn-term">term</a>s as well as other processing instructions for
+the JSON-LD processor.</p>
+
+<p>Contexts <em class="rfc2119" title="may">may</em> be specified in-line. This ensures that JSON-LD documents
+can be processed when a JSON-LD processor does not have access to the Web.</p>
+
+<pre class="example">{
+ <span class="diff">"@context":
+ {
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "depiction":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/depiction",
+ "@type": "@id"
+ },
+ "homepage":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+ },
+ },</span>
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "depiction": "http://twitter.com/account/profile_image/manusporny"
+}</pre>
+
+<p>Contexts <em class="rfc2119" title="may">may</em> be used at any time a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> is defined.
+ A <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> <em class="rfc2119" title="may">may</em> specify multiple contexts, using an
+ <a class="tref internalDFN" title="array" href="#dfn-array">array</a>, which is processed in order. This is useful
+ when an author would like to use an existing context and add
+ application-specific terms to the existing context. Duplicate context
+ <a class="tref internalDFN" title="term" href="#dfn-term">term</a>s <em class="rfc2119" title="must">must</em> be overridden using a last-defined-overrides
+ mechanism.</p>
+
+<p class="note">If a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> is re-defined within a context, all previous
+ rules associated with the previous definition are removed. A <a class="tref internalDFN" title="term" href="#dfn-term">term</a> defined
+ in a previous context <em class="rfc2119" title="must">must</em> be removed, if it is re-defined to <code>null</code>.</p>
+
+<p>
+ 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 context</dfn>s. Setting the context to <code>null</code>
+ effectively sets the <a class="tref internalDFN" title="local_context" href="#dfn-local_context">local context</a> to its initial state. 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 context</a>s that are in scope at a specific point within
+ the document. The following example specifies an external context and then
+ layers a local context on top of the external context:</p>
+
+<pre class="example">{
+ <span class="diff">"@context": [
+ "http://json-ld.org/contexts/person",
+ {
+ "pic": "http://xmlns.com/foaf/0.1/depiction"
+ }
+ ],</span>
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ <span class="diff">"pic": "http://twitter.com/account/profile_image/manusporny"</span>
+}</pre>
+
+<p class="note">To ensure the best possible performance, it is a best practice to
+put the <a class="tref internalDFN" title="context" href="#dfn-context">context</a> definition at the top of the JSON-LD document. If it isn't listed
+first, processors have to save each key-value pair until the <a class="tref internalDFN" title="context" href="#dfn-context">context</a> is processed.
+This creates a memory and complexity burden for one-pass processors.</p>
+
+</div>
+
+<div id="from-json-to-json-ld" typeof="bibo:Chapter" resource="#from-json-to-json-ld" rel="bibo:chapter" class="section">
+<h4><span class="secno">3.1.2 </span>From JSON to JSON-LD</h4>
+
+<p>If a set of <a class="tref internalDFN" title="term" href="#dfn-term">term</a>s such as, <strong>name</strong>,
+<strong>homepage</strong>, and <strong>depiction</strong>,
+are defined in a <a class="tref internalDFN" title="context" href="#dfn-context">context</a>, and that context is used to resolve the
+names in JSON objects, machines are able to automatically expand the terms to
+something meaningful and unambiguous, like this:</p>
+
+<pre class="example">{
+ "<span class="diff">http://xmlns.com/foaf/0.1/name</span>": "Manu Sporny",
+ "<span class="diff">http://xmlns.com/foaf/0.1/homepage</span>": "http://manu.sporny.org"
+ "<span class="diff">http://xmlns.com/foaf/0.1/depiction</span>": "http://twitter.com/account/profile_image/manusporny"
+}</pre>
+
+<p>Doing this allows JSON to be unambiguously machine-readable without
+requiring developers to drastically change their workflow.</p>
+
+<p class="note">The example above does not use the <code>@id</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>
+to set the <a class="tref internalDFN" title="subject" href="#dfn-subject">subject</a> of the node being described above. This type
+of node is called an <dfn title="unlabeled_node" id="dfn-unlabeled_node">unlabeled node</dfn> and is considered to be
+a weaker form of <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a>. It is advised that all nodes
+described in JSON-LD are given unique identifiers via the
+<code>@id</code> keyword unless the data is not intended to be linked to
+from other data sets.</p>
+
+<p>A <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> used to define property values is called a
+ <a class="tref internalDFN" title="subject_definition" href="#dfn-subject_definition">subject definition</a>. <a class="tref internalDFN" title="subject_definition" href="#dfn-subject_definition">Subject definitions</a>
+ do not require a <code>@id</code>, in which case they are considered to be an
+ <a class="tref internalDFN" title="unlabeled_node" href="#dfn-unlabeled_node">unlabeled node</a>.</p>
+
+</div>
+</div>
+
+<div id="iris" typeof="bibo:Chapter" resource="#iris" rel="bibo:chapter" class="section">
+<h3><span class="secno">3.2 </span>IRIs</h3>
+
+<p>Expressing <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>s are fundamental to <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a>
+as that is how most <a class="tref internalDFN" title="subject" href="#dfn-subject">subject</a>s, all
+<a class="tref internalDFN" title="property" href="#dfn-property">properties</a> and many <a class="tref internalDFN" title="object" href="#dfn-object">object</a>s are
+identified. <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>s can be expressed in a variety of different ways
+in JSON-LD.</p>
+
+<ol>
+ <li>Except within a <a class="tref internalDFN" title="context" href="#dfn-context">context</a> definition, <a class="tref internalDFN" title="term" href="#dfn-term">term</a>s in the key position in
+ a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> that have a mapping to an <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> or another <a class="tref internalDFN" title="term" href="#dfn-term">term</a> in the
+ <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a> are expanded to an <abbr title="Internationalized Resource Identifier">IRI</abbr> by JSON-LD processors.</li>
+ <li>An <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> is generated for the <a class="tref internalDFN" title="string" href="#dfn-string">string</a> value specified using
+ <code>@id</code> or <code>@type</code>.</li>
+ <li>An <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> is generated for the <a class="tref internalDFN" title="string" href="#dfn-string">string</a> value of any key for which there
+ are <a class="tref internalDFN" title="coercion" href="#dfn-coercion">coercion</a> rules in effect that identify the value as an <code>@id</code>.</li>
+</ol>
+
+<p>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>, 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="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>.</p>
+
+<p>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" rel="biblioentry" href="#bib-RFC3987">RFC3987</a></cite>] 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 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 <abbr title="Internationalized Resource Identifier">IRI</abbr></a>s are resolved relative to the
+ <dfn title="base_iri" id="dfn-base_iri">base <abbr title="Internationalized Resource Identifier">IRI</abbr></dfn> associated with the document (typically, the directory that contains the document or the document itself).</p>
+
+<p>IRIs can be expressed directly in the key position like so:</p>
+
+<pre class="example">{
+...
+ "<span class="diff">http://xmlns.com/foaf/0.1/name</span>": "Manu Sporny",
+...
+}</pre>
+
+<p>In the example above, the key <code>http://xmlns.com/foaf/0.1/name</code> is interpreted
+ as an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>, as opposed to being interpreted as a string because it contains a colon
+ (<code>:</code>) delimiting a valid <abbr title="Internationalized Resource Identifier">IRI</abbr> scheme.</p>
+
+<p>Term expansion occurs for IRIs if the value 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>
+
+<pre class="example">{
+ "<span class="diff">@context</span>":
+ {
+ "<span class="diff">name</span>": "<span class="diff">http://xmlns.com/foaf/0.1/name</span>"
+...
+ },
+ "<span class="diff">name</span>": "Manu Sporny",
+ "status": "trollin'",
+...
+}</pre>
+
+<p><a class="tref internalDFN" title="term" href="#dfn-term">Term</a>s are case sensitive, and <em class="rfc2119" title="must">must</em> be matched using a case-sensitive comparison.</p>
+
+<p>JSON keys that do not expand to an absolute <abbr title="Internationalized Resource Identifier">IRI</abbr> are ignored, or removed
+in some cases, by the [<cite><a class="bibref" rel="biblioentry" href="#bib-JSON-LD-API">JSON-LD-API</a></cite>]. However, JSON keys that do not include
+a mapping in the <a class="tref internalDFN" title="context" href="#dfn-context">context</a> are still considered valid expressions
+in JSON-LD documents - the keys just don't have any machine-readable,
+semantic meaning.</p>
+
+<p><a class="tref internalDFN" title="prefix" href="#dfn-prefix">Prefix</a>es are expanded when the form of the value is a
+ <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> represented as a <code>prefix:suffix</code>
+ combination, and the prefix matches a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> defined within the
+ <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a>:</p>
+
+<pre class="example">{
+ "<span class="diff">@context</span>":
+ {
+ "<span class="diff">foaf</span>": "<span class="diff">http://xmlns.com/foaf/0.1/</span>"
+...
+ },
+ "<span class="diff">foaf:name</span>": "Manu Sporny",
+...
+}</pre>
+
+<p><code>foaf:name</code> above will automatically expand out to the <abbr title="Internationalized Resource Identifier">IRI</abbr>
+<code>http://xmlns.com/foaf/0.1/name</code>. See <a href="#compact-iris">Compact IRIs</a> for more details.</p>
+
+<p>An <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> is generated when a JSON object is used in the
+value position that contains an <code>@id</code> keyword:</p>
+
+<pre class="example">{
+...
+ "homepage": { "<span class="diff">@id</span>": "http://manu.sporny.org" }
+...
+}</pre>
+
+<p class="note">Specifying a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> with an
+ <code>@id</code> key is used to identify that object using an
+ <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>. This facility <em class="rfc2119" title="may">may</em> also be used to link to another
+ <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> using a mechanism called
+ <a class="tref internalDFN" title="embedding" href="#dfn-embedding">embedding</a>, which is covered in the section titled
+ <a href="#embedding">Embedding</a>.</p>
+
+<p>If type <a class="tref internalDFN" title="coercion" href="#dfn-coercion">coercion</a> rules are specified in the <code>@context</code> for
+a particular <a class="tref internalDFN" title="term" href="#dfn-term">term</a> or property <abbr title="Internationalized Resource Identifier">IRI</abbr>, an <abbr title="Internationalized Resource Identifier">IRI</abbr> is generated:</p>
+
+<pre class="example">{<span class="diff">
+ "@context":
+ {
+ ...
+ "homepage":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+ }
+ ...
+ }</span>
+...
+ "homepage": "http://manu.sporny.org/",
+...
+}</pre>
+
+<p>In the example above, even though the value
+<code>http://manu.sporny.org/</code> is expressed as a JSON
+<a class="tref internalDFN" title="string" href="#dfn-string">string</a>, the type <a class="tref internalDFN" title="coercion" href="#dfn-coercion">coercion</a> rules will transform
+the value into an <abbr title="Internationalized Resource Identifier">IRI</abbr> when processed by a JSON-LD Processor.</p>
+
+</div>
+
+<div id="identifying-the-subject" typeof="bibo:Chapter" resource="#identifying-the-subject" rel="bibo:chapter" class="section">
+<h3><span class="secno">3.3 </span>Identifying the Subject</h3>
+
+<p>
+ To be able to externally reference nodes in a graph, it is important that each node has
+ an unambiguous identifier. <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>s are a fundamental concept of
+ <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a>, and nodes should have a de-referencable
+ identifier used to name and locate them. For nodes to be truly linked,
+ de-referencing the identifier should result in a representation of that node
+ (for example, using a URL to retrieve a web page).
+ Associating an <abbr title="Internationalized Resource Identifier">IRI</abbr> with a node tells an application that the returned
+ document contains a description of the node requested.
+</p>
+<p>
+ JSON-LD documents may also contain descriptions of other nodes, so it is necessary to be able to
+ uniquely identify each node which may be externally referenced.
+</p>
+<p>A <a class="tref internalDFN" title="subject" href="#dfn-subject">subject</a>
+ of an object in JSON is declared using the <code>@id</code> key. The subject is the
+first piece of information needed by the JSON-LD processor in order to
+create the (subject, property, object) tuple, also known as a triple.</p>
+
+<pre class="example">{
+...
+ "<span class="diff">@id</span>": "<span class="diff">http://example.org/people#joebob</span>",
+...
+}</pre>
+
+<p>The example above would set the subject to the <abbr title="Internationalized Resource Identifier">IRI</abbr>
+<code>http://example.org/people#joebob</code>.
+</p>
+
+<p>A <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> used to define property values is called a
+ <a class="tref internalDFN" title="subject_definition" href="#dfn-subject_definition">subject definition</a>. <a class="tref internalDFN" title="subject_definition" href="#dfn-subject_definition">Subject definitions</a>
+ do not require an <code>@id</code>. A
+ <a class="tref internalDFN" title="subject_definition" href="#dfn-subject_definition">subject definition</a>
+ that does not contain an <code>@id</code> property is called an
+ <a class="tref internalDFN" title="unlabeled_node" href="#dfn-unlabeled_node">unlabeled node</a>.</p>
+
+<p class="note">To ensure the best possible performance, it is a best practice
+to put the <code>@id</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> before other key-value pairs in an object.
+If it isn't listed first, processors have to save each key-value pair until
+<code>@id</code> is processed before they can start generating triples.
+Not specifying the <code>@id</code> keyword first creates a memory and
+complexity burden for one-pass processors.</p>
+
+</div>
+
+<div id="specifying-the-type" typeof="bibo:Chapter" resource="#specifying-the-type" rel="bibo:chapter" class="section">
+<h3><span class="secno">3.4 </span>Specifying the Type</h3>
+
+<p>The type of a particular subject can be specified using the
+<code>@type</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>. Specifying the type in this way will generate a
+triple of the form (subject, type, type-<abbr title="Internationalized Resource Identifier">IRI</abbr>). To be considered
+<a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a>, types <em class="rfc2119" title="must">must</em> be uniquely identified by
+an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</p>
+
+<pre class="example">{
+...
+ "@id": "http://example.org/people#joebob",
+ "<span class="diff">@type</span>": "<span class="diff">http://xmlns.com/foaf/0.1/Person</span>",
+...
+}</pre>
+</div>
+
+<div id="string-internationalization" typeof="bibo:Chapter" resource="#string-internationalization" rel="bibo:chapter" class="section">
+<h3><span class="secno">3.5 </span>String Internationalization</h3>
+
+<p>At times, it is important to annotate a <a class="tref internalDFN" title="string" href="#dfn-string">string</a>
+ with its language. In JSON-LD this is possible in a variety of ways.
+ Firstly, it is possible to define a default language for a JSON-LD document
+ by setting the <code>@language</code> key in the <code>@context</code> or in a
+ <a class="tref internalDFN" title="term" href="#dfn-term">term</a> definition:</p>
+
+<pre class="example">{
+ <span class="diff">"@context":
+ {
+ ...
+ "@language": "ja"
+ },</span>
+ "name": <span class="diff">"花澄"</span>,
+ "occupation": <span class="diff">"科学者"</span>
+}</pre>
+
+<p>The example above would associate the <code>ja</code> language
+ code with the two <a class="tref internalDFN" title="string" href="#dfn-string">string</a>s <em>花澄</em> and <em>科学者</em>.
+ Languages <em class="rfc2119" title="must">must</em> be expressed in [<cite><a class="bibref" rel="biblioentry" href="#bib-BCP47">BCP47</a></cite>] format.</p>
+
+<p>It is possible to override the default language by using the expanded
+form of a value:</p>
+
+<pre class="example">{
+ "@context": {
+ ...
+ "@language": "ja"
+ },
+ "name": "花澄",
+ "occupation": <span class="diff">{
+ "@value": "Scientist",
+ "@language": "en"
+ }</span>
+}</pre>
+
+<p>It is also possible to override the default language or specify a plain
+value by omitting the <code>@language</code> tag or setting it to
+<code>null</code> when expressing the expanded value:</p>
+
+<pre class="example">{
+ "@context": {
+ ...
+ "@language": "ja"
+ },
+ "name": <span class="diff">{
+ "@value": "Frank"
+ },</span>
+ "occupation": <span class="diff"> {
+ "@value": "Ninja",
+ "@language": "en"
+ }</span>,
+ "speciality": "手裏剣"
+}</pre>
+
+<p class="note">Please note that language associations <em class="rfc2119" title="must">must</em> only be applied
+ to plain literal <a class="tref internalDFN" title="string" href="#dfn-string">string</a>s. That is, <a class="tref internalDFN" title="typed_value" href="#dfn-typed_value">typed value</a>s
+ or values that are subject to <a href="#type-coercion">type coercion</a>
+ won't be language tagged.</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>
+
+<pre class="example">{
+ "@context": {
+ ...
+ "@language": "ja"
+ },
+ "name": "花澄",
+ "details": {
+<span class="diff"> "@context": {
+ "@language": null
+ },</span>
+ "occupation": "Ninja"
+ }
+}</pre>
+
+<p class="note">JSON-LD allows one to associate language information with
+ <a class="tref internalDFN" title="term" href="#dfn-term">term</a>s.
+ See <a href="#expanded-term-definition">Expanded Term Definition</a> for
+ more details.</p>
+
+</div>
+
+<div id="sets-and-lists" typeof="bibo:Chapter" resource="#sets-and-lists" rel="bibo:chapter" class="section">
+<h3><span class="secno">3.6 </span>Sets and Lists</h3>
+
+<p>A JSON-LD author can express multiple values in a compact way by using
+ <a class="tref internalDFN" title="array" href="#dfn-array">array</a>s. Since graphs do not describe ordering for links
+ between nodes, arrays in JSON-LD do not provide an ordering of the
+ listed objects by default. This is exactly the opposite from regular JSON
+ arrays, which are ordered by default. For example, consider the following
+ simple document:</p>
+<pre class="example">{
+...
+ "@id": "http://example.org/people#joebob",
+ "nick": <span class="diff">[ "joe", "bob", "jaybee" ]</span>,
+...
+}</pre>
+
+<p>The markup shown above would result in three triples being generated,
+ each relating the subject to an individual object, with no inherent order:</p>
+<pre class="example"><http://example.org/people#joebob>
+ <http://xmlns.com/foaf/0.1/nick>
+ "joe" .
+<http://example.org/people#joebob>
+ <http://xmlns.com/foaf/0.1/nick>
+ "bob" .
+<http://example.org/people#joebob>
+ <http://xmlns.com/foaf/0.1/nick>
+ "jaybee" .</pre>
+
+<p>Multiple values may also be expressed using the expanded object form:</p>
+
+<pre class="example">{
+ "@id": "http://example.org/articles/8",
+ "dc:title": <span class="diff">
+ [
+ {
+ "@value": "Das Kapital",
+ "@language": "de"
+ },
+ {
+ "@value": "Capital",
+ "@language": "en"
+ }
+ ]</span>
+}</pre>
+
+<p>The markup shown above would generate the following triples, again with
+ no inherent order:</p>
+
+<pre class="example"><http://example.org/articles/8>
+ <http://purl.org/dc/terms/title>
+ "Das Kapital"@de .
+<http://example.org/articles/8>
+ <http://purl.org/dc/terms/title>
+ "Capital"@en .</pre>
+
+
+<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>
+<pre class="example">{
+...
+ "@id": "http://example.org/people#joebob",
+ "foaf:nick":
+ <span class="diff">{
+ "@list": [ "joe", "bob", "jaybee" ]
+ }</span>,
+...
+}</pre>
+
+<p>This describes the use of this <a class="tref internalDFN" title="array" href="#dfn-array">array</a> as being ordered,
+ and order is maintained when processing a document. If every use of a given multi-valued
+ property is a list, this may be abbreviated by setting <code>@container</code>
+ to <code>@list</code> in the <a class="tref internalDFN" title="context" href="#dfn-context">context</a>:</p>
+<pre class="example">{
+ <span class="diff">"@context":
+ {
+ ...
+ "nick":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/nick",
+ "@container": "@list"
+ }
+ }</span>,
+...
+ "@id": "http://example.org/people#joebob",
+ "nick": <span class="diff">[ "joe", "bob", "jaybee" ]</span>,
+...
+}</pre>
+
+<p class="note">List of lists are not allowed in this version of JSON-LD.
+ If a list of lists is detected, a JSON-LD processor will throw an exception.
+ This decision was made due to the extreme amount of added complexity when
+ processing lists of lists.</p>
+
+<p>Similarly to <code>@list</code>, there exists the <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> <code>@set</code> to
+ describe unordered sets. While its use in the body of a JSON-LD document
+ represents just syntactic sugar that <em class="rfc2119" title="must">must</em> be optimized away when processing
+ the document, 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
+ are always represented in the form of an <a class="tref internalDFN" title="array" href="#dfn-array">array</a> - even if there is just a
+ single value that would otherwise be optimized to a non-array form in a
+ <a href="#compact-document-form">compacted document</a>. This makes post-processing of
+ the data easier as the data is always in array form, even if the array only
+ contains a single value.</p>
+
+<p class="note">The use of <code>@container</code> in the body of a JSON-LD
+ document, i.e., outside <code>@context</code> <em class="rfc2119" title="must">must</em> be ignored by
+ JSON-LD processors.</p>
+
+</div>
+
+</div>
+
+<div id="advanced-concepts" typeof="bibo:Chapter" resource="#advanced-concepts" rel="bibo:chapter" class="section">
+
+<!-- OddPage -->
+<h2><span class="secno">4. </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>
+
+<div id="typed-values" typeof="bibo:Chapter" resource="#typed-values" rel="bibo:chapter" class="section">
+<h3><span class="secno">4.1 </span>Typed Values</h3>
+
+<p>
+ A value with an associated type, also known as a
+ <dfn title="typed_value" id="dfn-typed_value">typed value</dfn>, is indicated by associating a value with
+ an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> which indicates the value's type. Typed values may be
+ expressed in JSON-LD in three ways:
+</p>
+
+<ol>
+ <li>By utilizing the <code>@type</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> when defining a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> within a
+ <code>@context</code> section.</li>
+ <li>By utilizing the expanded form for specifying objects.</li>
+ <li>By using a native JSON type.</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>
+
+<pre class="example">{
+ <span class="diff">"@context":
+ {
+ "modified":
+ {
+ "@id": "http://purl.org/dc/terms/modified",
+ "@type": "http://www.w3.org/2001/XMLSchema#dateTime"
+ }
+ },</span>
+...
+ "modified": "2010-05-29T14:17:39+02:00",
+...
+}</pre>
+
+<p>The <em>modified</em> key's value above is automatically type coerced to a
+datetime value because of the information specified in the
+<code>@context</code>.</p>
+
+<p>The second example uses the expanded form of setting the type information
+in the body of a JSON-LD document:</p>
+
+<pre class="example">{
+ "@context":
+ {
+ "modified":
+ {
+ "@id": "http://purl.org/dc/terms/modified"
+ }
+ },
+...
+ "modified":
+ <span class="diff">{
+ "@value": "2010-05-29T14:17:39+02:00",
+ "@type": "http://www.w3.org/2001/XMLSchema#dateTime"
+ }</span>
+...
+}</pre>
+
+<p>Both examples above would generate an object with the value of
+<code>2010-05-29T14:17:39+02:00</code> and the type of
+<code>http://www.w3.org/2001/XMLSchema#dateTime</code>.</p>
+
+<p>The third example uses a built-in native JSON type, a
+ <a class="tref internalDFN" title="number" href="#dfn-number">number</a>, to express a type:</p>
+
+<pre class="example">{
+...
+ "@id": "http://example.org/people#joebob",
+ "age": <span class="diff">31</span>
+...
+}</pre>
+
+<p>The example above is really just a shorthand for the following:</p>
+
+<pre class="example">{
+...
+ "@id": "http://example.org/people#joebob",
+ "age":
+ <span class="diff">{
+ "@value": "31",
+ "@type": "http://www.w3.org/2001/XMLSchema#integer"
+ }</span>
+...
+}</pre>
+
+<p class="note">
+ 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="subject" href="#dfn-subject">subject</a>. Although the same keyword is used in both places,
+ the concept of an <em>object type</em> and a <em>value type</em>
+ are different. This is similar to object-oriented programming languages
+ where both scalar and structured types use the same class inheritance
+ mechanism, even though scalar types and structured types are
+ inherently different.
+</p>
+
+</div>
+
+<div id="compact-iris" typeof="bibo:Chapter" resource="#compact-iris" rel="bibo:chapter" class="section">
+ <h3><span class="secno">4.2 </span>Compact IRIs</h3>
+ <p>
+ <a class="tref internalDFN" title="term" href="#dfn-term">Term</a>s in <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a> documents may draw from
+ a number of different <a class="tref internalDFN" title="vocabulary" href="#dfn-vocabulary">vocabularies</a>.
+ At times, declaring every single term that a document uses can require the
+ developer to declare tens, if not hundreds of potential
+ <a class="tref internalDFN" title="vocabulary" href="#dfn-vocabulary">vocabulary</a> <a class="tref internalDFN" title="term" href="#dfn-term">term</a>s that are used across an
+ application. This is a concern for at least two reasons: the
+ first is the cognitive load on the developer of remembering all of the
+ <a class="tref internalDFN" title="term" href="#dfn-term">term</a>s, and the second is the serialized size of the
+ <a class="tref internalDFN" title="context" href="#dfn-context">context</a> if it is specified inline. In order to address these issues,
+ the concept of a <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> is introduced.</p>
+ <p>
+ A <dfn title="compact_iri" id="dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></dfn> is a way of expressing an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>
+ using a <em>prefix</em> and <em>suffix</em> separated by a colon (<code>:</code>) which is
+ similar to the <cite><a href="http://www.w3.org/TR/rdfa-core/#s_curies">CURIE Syntax</a></cite>
+ in [<cite><a class="bibref" rel="biblioentry" href="#bib-RDFA-CORE">RDFA-CORE</a></cite>]. The <dfn title="prefix" id="dfn-prefix">prefix</dfn> is a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> taken from the
+ <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a> and is a short string identifying a
+ particular <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> in a JSON-LD document.
+ For example, the prefix <code>foaf</code> may be used as a short
+ hand for the Friend-of-a-Friend vocabulary, which is identified using
+ the <abbr title="Internationalized Resource Identifier">IRI</abbr> <code>http://xmlns.com/foaf/0.1/</code>. A developer may append
+ any of the FOAF <a class="tref internalDFN" title="vocabulary" href="#dfn-vocabulary">vocabulary</a> 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
+ <a class="tref internalDFN" title="vocabulary" href="#dfn-vocabulary">vocabulary</a> term. For example, <code>foaf:name</code> would
+ be expanded out to the <abbr title="Internationalized Resource Identifier">IRI</abbr> <code>http://xmlns.com/foaf/0.1/name</code>.
+ Instead of having to remember and type out the entire <abbr title="Internationalized Resource Identifier">IRI</abbr>, the developer
+ can instead use the prefix in their JSON-LD markup.
+ </p>
+ <p>Terms are interpreted as <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>s if they contain at least one
+ colon and the first colon is not followed by two slashes (<code>//</code>, as in
+ <code>http://example.com</code>). To generate the full <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
+ the value is first split into a <em>prefix</em> and <em>suffix</em> at the first
+ occurrence of a colon (<code>:</code>). If the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a>
+ contains a term mapping for <em>prefix</em>, an <abbr title="Internationalized Resource Identifier">IRI</abbr> is generated by
+ prepending the mapped <em>prefix</em> to the (possibly empty) <em>suffix</em>
+ using textual concatenation. If no prefix mapping is defined, the value is interpreted
+ as an <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>. If the prefix is an underscore
+ (<code>_</code>), the <abbr title="Internationalized Resource Identifier">IRI</abbr> remains unchanged. This effectively means that every term
+ containing a colon will be interpreted by a JSON-LD processor as an <abbr title="Internationalized Resource Identifier">IRI</abbr>.
+ </p>
+ <p>Consider the following example:</p>
+ <pre class="example">{
+ "@context":
+ {
+ <span class="diff">"dc": "http://purl.org/dc/elements/1.1/",</span>
+ <span class="diff">"ex": "http://example.org/vocab#"</span>
+ },
+ "@id": "http://example.org/library",
+ "@type": <span class="diff">"ex:Library"</span>,
+ <span class="diff">"ex:contains"</span>:
+ {
+ "@id": "http://example.org/library/the-republic",
+ "@type": <span class="diff">"ex:Book"</span>,
+ <span class="diff">"dc:creator"</span>: "Plato",
+ <span class="diff">"dc:title"</span>: "The Republic",
+ <span class="diff">"ex:contains"</span>:
+ {
+ "@id": "http://example.org/library/the-republic#introduction",
+ "@type": <span class="diff">"ex:Chapter"</span>,
+ <span class="diff">"dc:description"</span>: "An introductory chapter on The Republic.",
+ <span class="diff">"dc:title"</span>: "The Introduction"
+ }
+ }
+}</pre>
+ <p>
+ In this example, two different <a class="tref internalDFN" title="vocabulary" href="#dfn-vocabulary">vocabularies</a>
+ are referred to using prefixes. Those prefixes are then used as type and
+ property values using the compact <abbr title="Internationalized Resource Identifier">IRI</abbr> <code>prefix:suffix</code> notation.
+ </p>
+ <p>It's also possible to use compact IRIs within the context as shown in the
+ following example:</p>
+ <pre class="example">{
+ "@context":
+ {
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
+ "foaf": "http://xmlns.com/foaf/0.1/",
+ <span class="diff">"foaf:homepage"</span>: { "@type": "@id" },
+ "picture": { "@id": <span class="diff">"foaf:depiction"</span>, "@type": "@id" }
+ },
+ "@subject": "http://me.markus-lanthaler.com/",
+ "@type": "foaf:Person",
+ "foaf:name": "Markus Lanthaler",
+ "foaf:homepage": "http://www.markus-lanthaler.com/",
+ "picture": "http://twitter.com/account/profile_image/markuslanthaler"
+}</pre>
+</div>
+
+<div id="external-contexts" typeof="bibo:Chapter" resource="#external-contexts" rel="bibo:chapter" class="section">
+<h3><span class="secno">4.3 </span>External Contexts</h3>
+
+<p>Authors may choose to declare JSON-LD <a class="tref internalDFN" title="context" href="#dfn-context">context</a>s in external
+documents to promote re-use of contexts as well as reduce the size of JSON-LD
+documents.
+</p>
+
+<p>
+In order to use an external context, 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 JSON-LD document. The referenced document <em class="rfc2119" title="must">must</em> have a
+top-level <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a>. The value of any <code>@context</code> key
+within that object is substituted for the <abbr title="Internationalized Resource Identifier">IRI</abbr> within the referencing document
+to have the same effect as if the value were specified inline within the
+referencing document.</p>
+
+<p>The following example demonstrates the use of an external context:</p>
+
+<pre class="example">{
+ <span class="diff">"@context": "http://json-ld.org/contexts/person"</span>,
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "depiction": "http://twitter.com/account/profile_image/manusporny"
+}</pre>
+
+<p>Authors may also import multiple contexts or a combination of external
+and local contexts by specifying a list of contexts:</p>
+
+<pre class="example">{
+ <span class="diff">"@context":
+ [
+ "http://json-ld.org/contexts/person",
+ {
+ "foaf": "http://xmlns.com/foaf/0.1/"
+ },
+ "http://json-ld.org/contexts/event",
+ ]</span>
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "depiction": "http://twitter.com/account/profile_image/manusporny"
+ <span class="diff">"celebrates":
+ {
+ "@type": "Event",
+ "description": "International Talk Like a Pirate Day",
+ "date": "R/2011-09-19"
+ }</span>
+}</pre>
+
+<p>Each context in a list will be evaluated in-order. Duplicate mappings among
+the <a class="tref internalDFN" title="context" href="#dfn-context">context</a>s <em class="rfc2119" title="must">must</em> be overwritten on a last-defined-overrides
+basis. The context list <em class="rfc2119" title="must">must</em> contain either de-referenceable <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>s
+or <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a>s that conform to the <a class="tref internalDFN" title="context" href="#dfn-context">context</a> syntax
+as described in this document.</p>
+
+<p>An author <em class="rfc2119" title="may">may</em> nest contexts within <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a>s, with the
+more deeply nested contexts overriding the values in previously defined
+contexts:</p>
+
+<pre class="example">{
+ <span class="diff">"@context":
+ {
+ "name": "http://example.com/person#name",
+ "details": "http://example.com/person#details"
+ },</span>
+ "<span class="diff">name</span>": "Markus Lanthaler",
+ ...
+ "details":
+ {
+ <span class="diff">"@context": {
+ "name": "http://example.com/organization#name"
+ },</span>
+ "<span class="diff">name</span>": "Graz University of Technology"
+ }
+}</pre>
+
+<p>In the example above, the <code>name</code> prefix 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 the
+JSON object has legacy applications using the structure of the object.</p>
+
+<p>External JSON-LD context documents <em class="rfc2119" title="may">may</em> contain extra information located
+outside of the <code>@context</code> key, such as
+documentation about the <a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefixes</a> declared in the document.
+When importing a <code>@context</code> value from an external JSON-LD context
+document, any extra information contained outside of the
+<code>@context</code> value <em class="rfc2119" title="must">must</em> be discarded. It is
+also <em class="rfc2119" title="recommended">recommended</em> that a human-readable document is served as well to
+explain the correct usage of the JSON-LD context document.
+</p>
+</div>
+
+<div id="referencing-contexts-from-json-documents" typeof="bibo:Chapter" resource="#referencing-contexts-from-json-documents" rel="bibo:chapter" class="section">
+<h3><span class="secno">4.4 </span>Referencing Contexts from JSON Documents</h3>
+
+<p>Ordinary JSON documents can be transformed into JSON-LD documents by referencing
+to an external JSON-LD <a class="tref internalDFN" title="context" href="#dfn-context">context</a> in an HTTP Link Header. Doing this
+allows JSON to be unambiguously machine-readable without requiring developers to
+drastically change their workflow and provides an upgrade path for existing
+infrastructure without breaking existing clients that rely on the <code>application/json</code>
+media type.
+</p>
+
+<p>
+In order to use an external context with an ordinary JSON document, an author
+<em class="rfc2119" title="must">must</em> specify an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> to a valid JSON-LD document in an HTTP Link
+Header [<cite><a class="bibref" rel="biblioentry" href="#bib-RFC5988">RFC5988</a></cite>] using the <code>describedby</code> link relation.
+
+The referenced document <em class="rfc2119" title="must">must</em> have a top-level <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a>. The
+<code>@context</code> subtree within that object is added to the top-level
+object of the referencing document. If an array is at the top-level of the
+referencing document and its items are objects, the <code>@context</code>
+subtree is added to all array 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.
+</p>
+
+<p>The following example demonstrates the use of an external context with an
+ordinary JSON document:</p>
+
+<pre class="example">GET /ordinary-json-document.json HTTP/1.1
+Host: example.com
+Accept: application/ld+json,application/json,*/*;q=0.1
+
+====================================
+
+HTTP/1.0 200 OK
+...
+Content-Type: <span class="diff">application/json</span>
+<span class="diff">Link: <http://json-ld.org/contexts/person>; rel="describedby"; type="application/ld+json"</span>
+
+{
+ "name": "Markus Lanthaler",
+ "homepage": "http://www.markus-lanthaler.com/",
+ "depiction": "http://twitter.com/account/profile_image/markuslanthaler"
+}</pre>
+
+<p class="note">JSON-LD documents served with the <code>application/ld+json</code> media type
+ <em class="rfc2119" title="must">must</em> have all context information, including references to external contexts, within the
+ body of the document.</p>
+</div>
+
+<div id="expanded-term-definition" typeof="bibo:Chapter" resource="#expanded-term-definition" rel="bibo:chapter" class="section">
+<h3><span class="secno">4.5 </span>Expanded Term Definition</h3>
+
+<p>Within a <a class="tref internalDFN" title="context" href="#dfn-context">context</a> definition, <a class="tref internalDFN" title="term" href="#dfn-term">term</a>s <em class="rfc2119" title="may">may</em> be
+ defined using an expanded notation to allow for additional information
+ associated with the term to be specified (see also
+ <a href="#type-coercion">Type Coercion</a> and
+ <a href="#sets-and-lists">Sets and Lists</a>).</p>
+
+<p>Instead of using a string representation of an <abbr title="Internationalized Resource Identifier">IRI</abbr>, the <abbr title="Internationalized Resource Identifier">IRI</abbr> <em class="rfc2119" title="may">may</em> be
+specified using an object having an <code>@id</code> key.
+The value of the <code>@id</code> key <em class="rfc2119" title="must">must</em> be either 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>, or an <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</p>
+
+<pre class="example">{
+ "@context":
+ {
+ "foaf": <span class="diff">{ "@id": "http://xmlns.com/foaf/0.1/" }</span>,
+ "name": <span class="diff">{ "@id": "http://xmlns.com/foaf/0.1/name" }</span>,
+ "homepage": <span class="diff">{ "@id": "foaf:homepage" }</span>,
+ "depiction": <span class="diff">{ "@id": "foaf:depiction" }</span>
+ },
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/",
+ "depiction": "http://twitter.com/account/profile_image/manusporny"
+}</pre>
+
+<p>This allows additional information to be associated with the term. This
+ <em class="rfc2119" title="may">may</em> be used for <a href="#type-coercion">Type Coercion</a>,
+ <a href="#sets-and-lists">Sets and Lists</a>), or to associate language
+ information with a term as shown in the following example:</p>
+
+<pre class="example">{
+ "@context": {
+ ...
+ "ex": "http://example.com/",
+ "@language": "ja",
+ "name": { "@id": "ex:name", <span class="diff">"@language": null</span> },
+ "occupation": { "@id": "ex:occupation" },
+ "occupation_en": { "@id": "ex:occupation", <span class="diff">"@language": "en"</span> },
+ "occupation_cs": { "@id": "ex:occupation", <span class="diff">"@language": "cs"</span> }
+ },
+ <span class="diff">"name": "Yagyū Muneyoshi",
+ "occupation": "忍者",
+ "occupation_en": "Ninja",
+ "occupation_cs": "Nindža",</span>
+ ...
+}</pre>
+
+<p>The example above would associate <em>忍者</em> with the specified default
+ language code <code>ja</code>, <em>Ninja</em> with the language code
+ <code>en</code>, and <em>Nindža</em> with the language code <code>cs</code>.
+ The value of <code>name</code>, <em>Yagyū Muneyoshi</em> wouldn't be
+ associated with any language code since <code>@language</code> was reset to
+ <a class="tref internalDFN" title="null" href="#dfn-null">null</a> in the expanded term definition.</p>
+
+<p>Expanded terms <em class="rfc2119" title="may">may</em> also be defined using <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact IRIs</a> or
+ <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute IRIs</a> as keys. If the definition does not include an
+ <code>@id</code> key, the expanded <abbr title="Internationalized Resource Identifier">IRI</abbr> is determined by performing expansion of the key
+ within the current active context. This mechanism is mainly used to associate type or language
+ information with a <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>.</p>
+
+<p class="note">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 absolute <abbr title="Internationalized Resource Identifier">IRI</abbr> to expand to some
+ other unrelated <abbr title="Internationalized Resource Identifier">IRI</abbr> (for example, <code>foaf:name</code> expanding to
+ <code>http://example.org/unrelated#species</code>),
+ such usage is strongly discouraged.</p>
+</div>
+
+<div id="type-coercion" typeof="bibo:Chapter" resource="#type-coercion" rel="bibo:chapter" class="section">
+<h3><span class="secno">4.6 </span>Type Coercion</h3>
+
+<p>JSON-LD supports the coercion of values to particular data types.
+Type <dfn title="coercion" id="dfn-coercion">coercion</dfn> allows someone deploying JSON-LD to coerce the incoming or
+outgoing values to the proper data type based on a mapping of data type <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>s to
+<a class="tref internalDFN" title="term" href="#dfn-term">term</a>s. 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 href="#expanded-term-definition">expanded term definition</a>
+ using the <code>@type</code> key. The value of this key represents a type <abbr title="Internationalized Resource Identifier">IRI</abbr> and <em class="rfc2119" title="must">must</em> take the form of
+ a <a class="tref internalDFN" title="term" href="#dfn-term">term</a>, <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, <a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, or the <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> <code>@id</code>. Specifying
+ <code>@id</code> indicates that within the body of a JSON-LD document, a string value of a <a class="tref internalDFN" title="term" href="#dfn-term">term</a> coerced to
+ <code>@id</code> is to be interpreted as an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</p>
+
+<p><a class="tref internalDFN" title="term" href="#dfn-term">Terms</a> or <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact IRIs</a> used as the value of a
+ <code>@type</code> key <em class="rfc2119" title="may">may</em> be defined within the same context. This means that one may specify a
+ <a class="tref internalDFN" title="term" href="#dfn-term">term</a> like <code>xsd</code> and then use <code>xsd:integer</code> within the same
+ context definition - the JSON-LD processor will be able to determine the proper expansion for
+ <code>xsd:integer</code>.</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 value</a>s, IRIs and lists.</p>
+
+<pre class="example">{
+ "@context":
+ {
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "age":
+ <span class="diff">{
+ "@id": "http://xmlns.com/foaf/0.1/age",
+ "@type": "xsd:integer"
+ }</span>,
+ "homepage":
+ <span class="diff">{
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id",
+ "@container": "@list"
+ }</span>
+ },
+ "name": "John Smith",
+ "age": <span class="diff">"41"</span>,
+ "homepage":
+ <span class="diff">[
+ "http://personal.example.org/",
+ "http://work.example.com/jsmith/"
+ ]</span>
+}</pre>
+
+<p>The example above would generate the following Turtle:</p>
+
+<pre class="example">@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
+
+[ foaf:name "John Smith";
+ foaf:age "41"^^xsd:integer;
+ foaf:homepage ( <http://personal.example.org/> <http://work.example.com/jsmith/> )
+] .</pre>
+
+<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 by applied to keys which are not represented as a simple <a class="tref internalDFN" title="term" href="#dfn-term">term</a>.
+ For example:</p>
+
+<pre class="example">{
+ "@context":
+ {
+ <span class="diff">"foaf": "http://xmlns.com/foaf/0.1/"</span>,
+ "<span class="diff">foaf:age</span>":
+ {
+ "@type": "xsd:integer"
+ },
+ "<span class="diff">foaf:homepage</span>":
+ <span class="diff">{
+ "@type": "@id"
+ }</span>
+ },
+ "foaf:name": "John Smith",
+ "foaf:age": <span class="diff">"41"</span>,
+ "foaf:homepage":
+ <span class="diff">[
+ "http://personal.example.org/",
+ "http://work.example.com/jsmith/"
+ ]</span>
+}</pre>
+
+<p>In this case the <code>@id</code> definition is optional, but if it does exist, the <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
+ or <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> is treated as a term (not a <code>prefix:suffix</code> construct)
+ so that the actual definition of a <a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a> becomes unnecessary.</p>
+
+<p class="note">Keys in the context are treated as <a class="tref internalDFN" title="term" href="#dfn-term">terms</a> for the purpose of
+ expansion and value coercion. At times, this may result in multiple representations for the same expanded <abbr title="Internationalized Resource Identifier">IRI</abbr>.
+ For example, one could specify that <code>dog</code> and <code>cat</code> both expanded to <code>http://example.com/vocab#animal</code>.
+ Doing this could be useful for establishing different type coercion or language specification rules. It also allows a <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> (or even an
+ absolute <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>) to be defined as something else entirely. For example, one could specify that
+ the <a class="tref internalDFN" title="term" href="#dfn-term">term</a> <code>http://example.org/zoo</code> should expand to
+ <code>http://example.org/river</code>, but this usage is discouraged because it would lead to a
+ great deal of confusion among developers attempting to understand the JSON-LD document.</p>
+
+<p>Type coercion is performed using the unexpanded value of the key,
+ which <em class="rfc2119" title="must">must</em> have an exact match for an entry in the <a class="tref internalDFN" title="active_context" href="#dfn-active_context">active context</a>.</p>
+
+</div>
+
+<div id="iri-expansion-within-a-context" typeof="bibo:Chapter" resource="#iri-expansion-within-a-context" rel="bibo:chapter" class="section">
+ <h3><span class="secno">4.7 </span><abbr title="Internationalized Resource Identifier">IRI</abbr> Expansion Within a Context</h3>
+ <p>In general, normal <abbr title="Internationalized Resource Identifier">IRI</abbr> expansion rules apply
+ anywhere an <abbr title="Internationalized Resource Identifier">IRI</abbr> is expected (see <a href="#iris">IRIs</a>). Within
+ a <a class="tref internalDFN" title="context" href="#dfn-context">context</a> definition, this can mean that terms defined
+ within the context <em class="rfc2119" title="may">may</em> 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>
+<pre class="example">{
+ "@context":
+ {
+ <span class="diff">"xsd": "http://www.w3.org/2001/XMLSchema#"</span>,
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "age":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/age",
+ "@type": <span class="diff">"xsd:integer"</span>
+ },
+ "homepage":
+ {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+ }
+ },
+ ...
+}</pre>
+<p>In this example, the <code>xsd</code> <a class="tref internalDFN" title="term" href="#dfn-term">term</a> is defined
+ and used as a <a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a> for the <code>@type</code> coercion
+ of the <code>age</code> property.</p>
+
+<p><a class="tref internalDFN" title="term" href="#dfn-term">Term</a>s <em class="rfc2119" title="may">may</em> 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>
+
+<pre class="example">{
+ "@context":
+ {
+ <span class="diff">"foaf": "http://xmlns.com/foaf/0.1/"</span>,
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
+ "name": <span class="diff">"foaf:name"</span>,
+ "age":
+ {
+ "@id": <span class="diff">"foaf:age"</span>,
+ "@type": "xsd:integer"
+ },
+ "homepage":
+ {
+ "@id": <span class="diff">"foaf:homepage"</span>,
+ "@type": "@id"
+ }
+ },
+ ...
+}</pre>
+
+<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> <em class="rfc2119" title="may">may</em> be used on the left-hand side of a
+ <a class="tref internalDFN" title="term" href="#dfn-term">term</a> definition.</p>
+
+<pre class="example">{
+ "@context":
+ {
+ <span class="diff">"foaf": "http://xmlns.com/foaf/0.1/"</span>,
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
+ "name": "foaf:name",
+ "<span class="diff">foaf:age</span>":
+ {
+ "@type": "xsd:integer"
+ },
+ "<span class="diff">foaf:homepage</span>":
+ <span class="diff">{
+ "@type": "@id"
+ }</span>
+ },
+ ...
+}</pre>
+
+<p>
+In this example, the <a class="tref internalDFN" title="compact_iri" href="#dfn-compact_iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> form is used in two different
+ways.
+In the first approach, <code>foaf:age</code> declares both the
+<a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> for the term (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 JSON-LD processor will derive the full <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> for
+<code>foaf:homepage</code> by looking up the <code>foaf</code>
+<a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a> in the
+<a class="tref internalDFN" title="context" href="#dfn-context">context</a>.
+</p>
+
+<p>
+<a class="tref internalDFN" title="absolute_iri" href="#dfn-absolute_iri">Absolute IRIs</a> <em class="rfc2119" title="may">may</em> also be used in the key position in a <a class="tref internalDFN" title="context" href="#dfn-context">context</a>:
+</p>
+
+<pre class="example">{
+ "@context":
+ {
+ "foaf": "http://xmlns.com/foaf/0.1/",
+ "xsd": "http://www.w3.org/2001/XMLSchema#",
+ "name": "foaf:name",
+ "foaf:age":
+ {
+ "@id": "foaf:age",
+ "@type": "xsd:integer"
+ },
+ "<span class="diff">http://xmlns.com/foaf/0.1/homepage</span>":
+ {
+ "@type": "@id"
+ }
+ },
+ ...
+}</pre>
+
+<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> <em class="rfc2119" title="must">must</em> also
+be used in the JSON-LD document. 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 JSON-LD
+processor will use direct string comparison when looking up
+<a class="tref internalDFN" title="term" href="#dfn-term">term</a>s in a <a class="tref internalDFN" title="context" href="#dfn-context">context</a> before it applies the
+<a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a> lookup mechanism.
+</p>
+
+<p>The only exception for using terms in the <a class="tref internalDFN" title="context" href="#dfn-context">context</a> is that
+ they <em class="rfc2119" title="must not">must not</em> be used in a circular manner. That is,
+ a definition of <em>term-1</em> <em class="rfc2119" title="must not">must not</em> depend on the
+ definition of <em>term-2</em> if <em>term-2</em> also depends on
+ <em>term-1</em>. For example, the following <a class="tref internalDFN" title="context" href="#dfn-context">context</a> definition
+ is illegal:</p>
+<pre class="example">{
+ "@context":
+ {
+ <span class="diff">"term1": "term2:foo",
+ "term2": "term1:bar"</span>
+ },
+ ...
+}</pre>
+</div>
+
+<div id="embedding" typeof="bibo:Chapter" resource="#embedding" rel="bibo:chapter" class="section">
+ <h3><span class="secno">4.8 </span>Embedding</h3>
+ <p>
+ Object <dfn title="embedding" id="dfn-embedding">embedding</dfn> is a JSON-LD feature that allows an author to
+ use the definition of JSON-LD objects 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="subject" href="#dfn-subject">subject</a>s.
+ </p>
+ <p>The example shows two subjects related by a property from the first subject:</p>
+
+ <pre class="example">{
+...
+ "name": "Manu Sporny",
+ "<span class="diff">knows</span>":
+ {
+ "<span class="diff">@type</span>": "<span class="diff">Person</span>",
+ "<span class="diff">name</span>": "<span class="diff">Gregg Kellogg</span>",
+ }
+...
+}</pre>
+
+ <p>
+ An object definition, like the one used above, <em class="rfc2119" title="may">may</em> be used in any value
+ position in the body of a JSON-LD document.
+ </p>
+</div>
+
+<div id="named-graphs" typeof="bibo:Chapter" resource="#named-graphs" rel="bibo:chapter" class="section">
+ <h3><span class="secno">4.9 </span>Named Graphs</h3>
+ <p>The <code>@graph</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> is used to express a set of
+ JSON-LD <a class="tref internalDFN" title="subject_definition" href="#dfn-subject_definition">subject definition</a>s that may not be directly related
+ to one another through a property. The mechanism may also be used where
+ <a class="tref internalDFN" title="embedding" href="#dfn-embedding">embedding</a> is not desirable to the application. For example:</p>
+
+ <pre class="example">{
+ "@context": ...,
+ "<span class="diff">@graph</span>":
+ [
+ {
+ "@id": "http://manu.sporny.org/i/public",
+ "@type": "foaf:Person",
+ "name": "Manu Sporny",
+ "knows": "http://greggkellogg.net/foaf#me"
+ },
+ {
+ "@id": "http://greggkellogg.net/foaf#me",
+ "@type": "foaf:Person",
+ "name": "Gregg Kellogg",
+ "knows": "http://manu.sporny.org/i/public"
+ }
+ ]
+}</pre>
+
+ <p>In this case, embedding doesn't work as each JSON-LD object references the other.
+ Using the <code>@graph</code>
+ <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a> allows multiple resources to be defined within an <a class="tref internalDFN" title="array" href="#dfn-array">array</a>, and allows the use
+ of a shared <a class="tref internalDFN" title="context" href="#dfn-context">context</a>. This is equivalent to using multiple <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a>
+ definitions in array and defining the <code>@context</code> within each object:</p>
+
+ <pre class="example"><span class="diff">[</span>
+ {
+ <span class="diff">"@context": ...,</span>
+ "@id": "http://manu.sporny.org/i/public",
+ "@type": "foaf:Person",
+ "name": "Manu Sporny",
+ "knows": "http://greggkellogg.net/foaf#me"
+ },
+ {
+ <span class="diff">"@context": ...,</span>
+ "@id": "http://greggkellogg.net/foaf#me",
+ "@type": "foaf:Person",
+ "name": "Gregg Kellogg",
+ "knows": "http://manu.sporny.org/i/public"
+ }
+<span class="diff">]</span></pre>
+
+ <p>JSON-LD allows you to <em>name</em> things on the Web by assigning
+ an <code>@id</code> to them, which is typically an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.
+ This notion extends to the ability to identify graphs in the same
+ manner. A developer may 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>. This enables the developer to make statements
+ about the <a class="tref internalDFN" title="linked_data_graph" href="#dfn-linked_data_graph">linked data graph</a> itself,
+ rather than just a single JSON-LD object.</p>
+
+ <pre class="example">{
+ "@context": ...,
+ <span class="diff">"@id": "http://example.org/graphs/73",
+ "asOf": { "@value": "2012-04-09", "@type": "xsd:date" },
+ "@graph":</span>
+ [
+ {
+ "@id": "http://manu.sporny.org/i/public",
+ "@type": "foaf:Person",
+ "name": "Manu Sporny",
+ "knows": "http://greggkellogg.net/foaf#me"
+ },
+ {
+ "@id": "http://greggkellogg.net/foaf#me",
+ "@type": "foaf:Person",
+ "name": "Gregg Kellogg",
+ "knows": "http://manu.sporny.org/i/public"
+ },
+ "http://www.markus-lanthaler.com/"
+ ]
+}</pre>
+
+ <p>The example above expresses a <em>named</em>
+ <a class="tref internalDFN" title="linked_data_graph" href="#dfn-linked_data_graph">linked data graph</a> that is identified by the <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>
+ <code>http://example.org/graphs/73</code>. That graph is composed of the
+ statements about Manu and Gregg and a reference to another <abbr title="Internationalized Resource Identifier">IRI</abbr>, which could
+ make statements about Markus. Meta-data about the graph itself is also
+ expressed via the <code>asOf</code> property, which specifies when the
+ information was retrieved from the Web.</p>
+
+</div>
+
+<div id="identifying-unlabeled-nodes" typeof="bibo:Chapter" resource="#identifying-unlabeled-nodes" rel="bibo:chapter" class="section">
+<h3><span class="secno">4.10 </span>Identifying Unlabeled Nodes</h3>
+
+<p>At times, it becomes necessary to be able to express information without
+being able to specify the subject. Typically, this type of node is called
+an <a class="tref internalDFN" title="unlabeled_node" href="#dfn-unlabeled_node">unlabeled node</a> or a blank node. In JSON-LD, <a class="tref internalDFN" title="unlabeled_node" href="#dfn-unlabeled_node">unlabeled node</a> identifiers are
+automatically created if a subject is not specified using the
+<code>@id</code> <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keyword</a>. However, authors may provide identifiers for
+unlabeled nodes by using the special <code>_</code> (underscore)
+<a class="tref internalDFN" title="prefix" href="#dfn-prefix">prefix</a>. This allows one to reference the node locally within the
+document, but makes it impossible to reference the node from an
+external document. The <a class="tref internalDFN" title="unlabeled_node" href="#dfn-unlabeled_node">unlabeled node</a> identifier is scoped to the
+document in which it is used.</p>
+
+<pre class="example">{
+...
+ "@id": "<span class="diff">_:foo</span>",
+...
+}</pre>
+
+<p>The example above would set the subject to <code>_:foo</code>, which can
+then be used elsewhere in the JSON-LD document to refer back to the
+<a class="tref internalDFN" title="unlabeled_node" href="#dfn-unlabeled_node">unlabeled node</a>. This practice is frowned upon when
+generating <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a>. If a developer finds that they refer to the unlabeled
+node more than once, they should consider naming the node using a de-referenceable
+<a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.
+</p>
+
+</div>
+
+<div id="aliasing-keywords" typeof="bibo:Chapter" resource="#aliasing-keywords" rel="bibo:chapter" class="section">
+<h3><span class="secno">4.11 </span>Aliasing Keywords</h3>
+
+<p>Each of the JSON-LD <a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a>,
+except for <code>@context</code>, <em class="rfc2119" title="may">may</em> 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>
+
+<pre class="example">{
+ "@context":
+ {
+ <span class="diff">"url": "@id"</span>,
+ <span class="diff">"a": "@type"</span>,
+ "name": "http://schema.org/name"
+ },
+ "<span class="diff">url</span>": "http://example.com/about#gregg",
+ "<span class="diff">a</span>": "http://schema.org/Person",
+ "name": "Gregg Kellogg"
+}</pre>
+
+<p>In the example above, the <code>@id</code> and <code>@type</code>
+<a class="tref internalDFN" title="keyword" href="#dfn-keyword">keywords</a> have been given the aliases <strong>url</strong> and
+<strong>a</strong>, respectively.
+</p>
+
+</div>
+
+<div id="expanded-document-form" typeof="bibo:Chapter" resource="#expanded-document-form" rel="bibo:chapter" class="section">
+<h3><span class="secno">4.12 </span>Expanded Document Form</h3>
+<p>The JSON-LD API [<cite><a class="bibref" rel="biblioentry" href="#bib-JSON-LD-API">JSON-LD-API</a></cite>] defines an 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, datatypes, and values
+ are expanded so that the <code>@context</code> is no longer necessary.</p>
+
+<p>For example, assume the following JSON-LD input document:</p>
+
+<pre class="example">{
+ "@context":
+ {
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "homepage": {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type", "@id"
+ }
+ },
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/"
+}</pre>
+
+<p>Running the JSON-LD Expansion algorithm against the JSON-LD input document
+ provided above would result in the following output:</p>
+
+<pre class="example">[
+ {
+ "http://xmlns.com/foaf/0.1/name": [
+ { "@value": "Manu Sporny" }
+ ],
+ "http://xmlns.com/foaf/0.1/homepage": [
+ { "@id": "http://manu.sporny.org/" }
+ ]
+ }
+]</pre>
+
+<p>Expanded document form is useful when an application has to process input
+data in a deterministic form. It has been optimized to ensure that the code
+that developers have to write is minimized compared to the code that would
+have to be written to operate on
+<a href="#compact-document-form">compact document form</a>.</p>
+
+</div>
+
+<div id="compact-document-form" typeof="bibo:Chapter" resource="#compact-document-form" rel="bibo:chapter" class="section">
+<h3><span class="secno">4.13 </span>Compact Document Form</h3>
+<p>The JSON-LD API [<cite><a class="bibref" rel="biblioentry" href="#bib-JSON-LD-API">JSON-LD-API</a></cite>] defines a method for <em>compacting</em> a JSON-LD document.
+ Compaction is the process of taking a JSON-LD document and applying a
+ context such that the most compact form of the document is generated. JSON
+ is typically expressed in a very compact, key-value format. That is, full
+ IRIs are rarely used as keys. At times, a JSON-LD document may be received
+ that is not in its most compact form. JSON-LD, via the API, provides a way
+ to compact a JSON-LD document.</p>
+
+<p>For example, assume the following JSON-LD input document:</p>
+
+<pre class="example">[
+ {
+ "http://xmlns.com/foaf/0.1/name": [ "Manu Sporny" ],
+ "http://xmlns.com/foaf/0.1/homepage": [
+ {
+ "@id": "http://manu.sporny.org/"
+ }
+ ]
+ }
+]</pre>
+
+<p>Additionally, assume the following developer-supplied JSON-LD context:</p>
+
+<pre class="example">{
+ "@context": {
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "homepage": {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+ }
+ }
+}</pre>
+
+<p>Running the JSON-LD Compaction algorithm given the context supplied above
+ against the JSON-LD input document provided above would result in the following
+ output:</p>
+
+<pre class="example">{
+ "@context": {
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "homepage": {
+ "@id": "http://xmlns.com/foaf/0.1/homepage",
+ "@type": "@id"
+ }
+ },
+ "name": "Manu Sporny",
+ "homepage": "http://manu.sporny.org/"
+}</pre>
+
+<p>The compaction algorithm enables a developer to map any document into an
+ application-specific compacted form by first <a href="#expanded-document-form">expanding the document</a>.
+ While the context provided above mapped <code>http://xmlns.com/foaf/0.1/name</code>
+ to <strong>name</strong>, it could have also mapped it to any arbitrary string
+ provided by the developer. This powerful mechanism, along with another
+ JSON-LD API technique called <em>framing</em>, allows the developer to
+ re-shape the incoming JSON data into a format that is optimized for
+ their application.</p>
+</div>
+
+</div>
+
+<div class="appendix normative section" id="json-ld-grammar" typeof="bibo:Chapter" resource="#json-ld-grammar" rel="bibo:chapter">
+
+<!-- OddPage -->
+<h2><span class="secno">A. </span>JSON-LD Grammar</h2>
+
+<p>Since the JSON-LD syntax is a subset of the JSON syntax, it follows that
+all well-formed JSON-LD documents are well-formed JSON documents. It also
+means that a non-well-formed JSON document can never be a well-formed
+JSON-LD document. Furthermore, JSON-LD places a number of restrictions on
+the JSON syntax in order to define a <em>grammar</em> that is used to express
+valid JSON-LD documents. At times, even if this grammar is violated, a
+JSON-LD processor will do its best to recover from the error and
+deterministically transform the author's markup into valid JSON-LD.</p>
+
+<p class="issue">The final nuanced details of the exact grammar are still being
+discussed (see <a href="https://github.com/json-ld/json-ld.org/issues/114#issuecomment-5820544">ISSUE-114</a>),
+as well as the best mechanism to express these restrictions. EBNF
+seems like overkill since it's a subset of JSON. EBNF doesn't quite capture
+some of the more esoteric restrictions in the language.
+</p>
+
+<ol>
+<li>A JSON-LD document is composed of a single <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> or an array of <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a>s.</li>
+<li>The value of <code>@id</code> <em class="rfc2119" title="must">must</em> be <code>null</code>, 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>, or an <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</li>
+<li>A <code>@id</code> keyword and a <code>@language</code> keyword <em class="rfc2119" title="must not">must not</em> exist in the same <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a>.</li>
+<li>A <code>@id</code> keyword and a <code>@container</code> keyword <em class="rfc2119" title="must not">must not</em> exist in the same <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a>.</li>
+<li>A <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> <em class="rfc2119" title="may">may</em> contain a <code>@context</code> property.</li>
+<li>A <code>@context</code> value <em class="rfc2119" title="must not">must not</em> contain an embedded <code>@context</code> definition.</li>
+<li>The value associated with the <code>@context</code> keyword <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>, a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a>, null, or an array containing a combination of the allowed values.</li>
+<li>The value associated with the keys used in a <code>@context</code> <em class="rfc2119" title="must">must</em> be a <code>null</code>, 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>.</li>
+<li>For each value that is a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> that is associated with a key in a <code>@context</code>:
+ <ol>
+ <li><code>@id</code> and <code>@type</code> <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 <code>null</code></li>
+ <li><code>@container</code> <em class="rfc2119" title="must">must</em> be associated with a value of either <code>@set</code> or <code>@list</code>.</li>
+ <li><code>@language</code> <em class="rfc2119" title="must">must</em> be a string expressed in [<cite><a class="bibref" rel="biblioentry" href="#bib-BCP47">BCP47</a></cite>] or <code>null</code>.</li>
+ <li>Any other property <em class="rfc2119" title="must">must</em> be ignored by a JSON-LD processor and <em class="rfc2119" title="must">must</em> be preserved in compaction and framing.</li>
+ </ol>
+</li>
+<li>A <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> <em class="rfc2119" title="may">may</em> have an <code>@graph</code> property.</li>
+<li>The value of a <code>@graph</code> property <em class="rfc2119" title="must">must</em> be null, 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>.</li>
+<li>A <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> containing a <code>@set</code> key <em class="rfc2119" title="must not">must not</em> have any other keys.</li>
+<li>A <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> containing a <code>@list</code> key <em class="rfc2119" title="must not">must not</em> have any other keys.</li>
+<li>The value of an <code>@set</code> or <code>@list</code> key can be a string, a number, a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a>, or an array containing a combination of the allowed values.</li>
+<li>For each <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a> that contains a <code>@value</code> key:
+ <ol>
+ <li>It <em class="rfc2119" title="may">may</em> have a <code>@language</code> or <code>@type</code> property and <em class="rfc2119" title="must not">must not</em> have any other properties.</li>
+ <li>It <em class="rfc2119" title="must not">must not</em> contain both the <code>@language</code> and <code>@type</code> keys at the same time.</li>
+ <li>The value of the <code>@value</code> key <em class="rfc2119" title="must">must</em> be a string or a number.</li>
+ <li>The value of the <code>@language</code> key <em class="rfc2119" title="must">must</em> be <code>null</code> or a string in [<cite><a class="bibref" rel="biblioentry" href="#bib-BCP47">BCP47</a></cite>] format.</li>
+ <li>The value of <code>@type</code> <em class="rfc2119" title="must">must</em> be <code>null</code>, 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="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a class="tref internalDFN" title="json_object" href="#dfn-json_object">JSON object</a>, or an array containing a combination of the allowed values.</li>
+ </ol>
+</li>
+<li>In the body of a JSON-LD document, the value of <code>@type</code> <em class="rfc2119" title="must not">must not</em> be <code>@id</code>. This is in contrast to the use of <code>@type</code> in the <code>@context</code>, where this is allowed.</li>
+</ol>
+
+</div>
+
+<div class="appendix informative section" id="markup-examples" typeof="bibo:Chapter" resource="#markup-examples" rel="bibo:chapter">
+
+<!-- OddPage -->
+<h2><span class="secno">B. </span>Markup Examples</h2><p><em>This section is non-normative.</em></p>
+
+<p>JSON-LD is a specification for representing <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a> in JSON. A common
+ way of working with Linked Data is through <dfn title="rdf" id="dfn-rdf">RDF</dfn>, the Resource Description Framework.
+ RDF can be expressed using JSON-LD by associating JSON-LD concepts such as <code>@id</code>
+ and <code>@type</code> with the equivalent <a class="tref internalDFN" title="iri" href="#dfn-iri"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>s in RDF. Further information about
+ RDF may be found in the [<cite><a class="bibref" rel="biblioentry" href="#bib-RDF-PRIMER">RDF-PRIMER</a></cite>].</p>
+
+<p>The JSON-LD markup examples below demonstrate how JSON-LD can be used to
+ express semantic data marked up in other languages such as Turtle, RDFa, Microformats,
+ and Microdata. These sections are merely provided as proof that JSON-LD is
+ very flexible in what it can express across different <a class="tref internalDFN" title="linked_data" href="#dfn-linked_data">Linked Data</a> approaches.
+ Further information on transforming JSON-LD into RDF are detailed in the
+ [<cite><a class="bibref" rel="biblioentry" href="#bib-JSON-LD-API">JSON-LD-API</a></cite>].</p>
+
+<div id="turtle" typeof="bibo:Chapter" resource="#turtle" rel="bibo:chapter" class="section">
+ <h3><span class="secno">B.1 </span>Turtle</h3>
+
+ <p>The following are examples of representing <a class="tref internalDFN" title="rdf" href="#dfn-rdf">RDF</a> as expressed in [<cite><a class="bibref" rel="biblioentry" href="#bib-TURTLE">TURTLE</a></cite>] into JSON-LD.</p>
+
+<div id="prefix-definitions" typeof="bibo:Chapter" resource="#prefix-definitions" rel="bibo:chapter" class="section">
+<h4><span class="secno">B.1.1 </span>Prefix definitions</h4>
+<p>The JSON-LD context has direct equivalents for the Turtle
+ <code>@prefix</code> declaration:</p>
+
+<pre class="example">@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+
+<http://manu.sporny.org/i/public> a foaf:Person;
+ foaf:name "Manu Sporny";
+ foaf:homepage <http://manu.sporny.org/> .</pre>
+
+<pre class="example">{
+ "@context":
+ {
+ "foaf": "http://xmlns.com/foaf/0.1/"
+ },
+ "@id": "http://manu.sporny.org/i/public",
+ "@type": "foaf:Person",
+ "foaf:name": "Manu Sporny",
+ "foaf:homepage": { "@id": "http://manu.sporny.org/" }
+}</pre>
+
+<div class="note">
+<p>JSON-LD has no equivalent for the Turtle <code>@base</code> declaration.
+ Instead, authors may use a prefix definition to resolve
+ <a class="tref internalDFN" title="relative_iri" href="#dfn-relative_iri">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>s:</p>
+<pre class="example">{
+ "@context":
+ {
+ <span class="diff">"base": "http://manu.sporny.org/",</span>
+ "foaf": "http://xmlns.com/foaf/0.1/"
+ },
+ "@id": <span class="diff">"base:i/public"</span>,
+ "@type": "foaf:Person",
+ "foaf:name": "Manu Sporny",
+ "foaf:homepage": { "@id": <span class="diff">"base" </span>}
+}</pre>
+</div>
+</div>
+
+<div id="embedding-1" typeof="bibo:Chapter" resource="#embedding-1" rel="bibo:chapter" class="section">
+<h4><span class="secno">B.1.2 </span>Embedding</h4>
+<p>Both Turtle and JSON-LD allow embedding of objects, although Turtle only allows embedding of objects which
+ use unlabeled node identifiers.</p>
+</div>
+
+<pre class="example">@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+
+<http://manu.sporny.org/i/public>
+ a foaf:Person;
+ foaf:name "Manu Sporny";
+ foaf:knows [ a foaf:Person; foaf:name "Gregg Kellogg" ] .</pre>
+
+<pre class="example">{
+ "@context":
+ {
+ "foaf": "http://xmlns.com/foaf/0.1/"
+ },
+ "@id": "http://manu.sporny.org/i/public",
+ "@type": "foaf:Person",
+ "foaf:name": "Manu Sporny",
+ "foaf:knows":
+ {
+ "@type": "foaf:Person",
+ "foaf:name": "Gregg Kellogg"
+ }
+}</pre>
+<div id="lists" typeof="bibo:Chapter" resource="#lists" rel="bibo:chapter" class="section">
+<h4><span class="secno">B.1.3 </span>Lists</h4>
+<p>Both JSON-LD and Turtle can represent sequential lists of values.</p>
+
+<pre class="example">@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+
+<http://example.org/people#joebob> a foaf:Person;
+ foaf:name "Joe Bob";
+ foaf:nick ( "joe" "bob" "jaybee" ) .</pre>
+
+<pre class="example">{
+ "@context":
+ {
+ "foaf": "http://xmlns.com/foaf/0.1/"
+ },
+ "@id": "http://example.org/people#joebob",
+ "@type": "foaf:Person",
+ "foaf:name": "Joe Bob",
+ "foaf:nick":
+ {
+ "@list": [ "joe", "bob", "jaybee" ]
+ }
+}</pre>
+</div>
+
+</div>
+
+<div id="rdfa" typeof="bibo:Chapter" resource="#rdfa" rel="bibo:chapter" class="section">
+<h3><span class="secno">B.2 </span>RDFa</h3>
+
+<p>The following example describes three people with their respective names and
+homepages.</p>
+
+<pre class="example"><div <span class="diff">prefix="foaf: http://xmlns.com/foaf/0.1/"</span>>
+ <ul>
+ <li <span class="diff">typeof="foaf:Person"</span>>
+ <a <span class="diff">rel="foaf:homepage" href="http://example.com/bob/" property="foaf:name" </span>>Bob</a>
+ </li>
+ <li <span class="diff">typeof="foaf:Person"</span>>
+ <a <span class="diff">rel="foaf:homepage" href="http://example.com/eve/" property="foaf:name" </span>>Eve</a>
+ </li>
+ <li <span class="diff">typeof="foaf:Person"</span>>
+ <a <span class="diff">rel="foaf:homepage" href="http://example.com/manu/" property="foaf:name" </span>>Manu</a>
+ </li>
+ </ul>
+</div></pre>
+
+<p>An example JSON-LD implementation using a single <a class="tref internalDFN" title="context" href="#dfn-context">context</a> is
+described below.</p>
+
+<pre class="example">{
+ "@context":
+ {
+ "foaf": "http://xmlns.com/foaf/0.1/"
+ },
+ "@graph":
+ [
+ {
+ "@type": "foaf:Person",
+ "foaf:homepage": "http://example.com/bob/",
+ "foaf:name": "Bob"
+ },
+ {
+ "@type": "foaf:Person",
+ "foaf:homepage": "http://example.com/eve/",
+ "foaf:name": "Eve"
+ },
+ {
+ "@type": "foaf:Person",
+ "foaf:homepage": "http://example.com/manu/",
+ "foaf:name": "Manu"
+ }
+ ]
+}</pre>
+
+</div>
+
+<div id="microformats" typeof="bibo:Chapter" resource="#microformats" rel="bibo:chapter" class="section">
+<h3><span class="secno">B.3 </span>Microformats</h3>
+
+<p>The following example uses a simple Microformats hCard example to express
+how the Microformat is represented in JSON-LD.</p>
+
+<pre class="example"><div class="vcard">
+ <a class="url fn" href="http://tantek.com/">Tantek Çelik</a>
+</div></pre>
+
+<p>The representation of the hCard expresses the Microformat terms in the
+<a class="tref internalDFN" title="context" href="#dfn-context">context</a> and uses them directly for the <code>url</code> and <code>fn</code>
+properties. Also note that the Microformat to JSON-LD processor has
+generated the proper URL type for <code>http://tantek.com/</code>.</p>
+
+<pre class="example">{
+ "@context":
+ {
+ "vcard": "http://microformats.org/profile/hcard#vcard",
+ "url":
+ {
+ "@id": "http://microformats.org/profile/hcard#url",
+ "@type": "@id"
+ },
+ "fn": "http://microformats.org/profile/hcard#fn"
+ },
+ "@type": "vcard",
+ "url": "http://tantek.com/",
+ "fn": "Tantek Çelik"
+}</pre>
+
+</div>
+
+<div id="microdata" typeof="bibo:Chapter" resource="#microdata" rel="bibo:chapter" class="section">
+<h3><span class="secno">B.4 </span>Microdata</h3>
+
+<p>The microdata example below expresses book information as a microdata Work
+item.
+</p>
+
+<pre class="example"><dl itemscope
+ itemtype="http://purl.org/vocab/frbr/core#Work"
+ itemid="http://purl.oreilly.com/works/45U8QJGZSQKDH8N">
+ <dt>Title</dt>
+ <dd><cite itemprop="http://purl.org/dc/terms/title">Just a Geek</cite></dd>
+ <dt>By</dt>
+ <dd><span itemprop="http://purl.org/dc/terms/creator">Wil Wheaton</span></dd>
+ <dt>Format</dt>
+ <dd itemprop="http://purl.org/vocab/frbr/core#realization"
+ itemscope
+ itemtype="http://purl.org/vocab/frbr/core#Expression"
+ itemid="http://purl.oreilly.com/products/9780596007683.BOOK">
+ <link itemprop="http://purl.org/dc/terms/type" href="http://purl.oreilly.com/product-types/BOOK">
+ Print
+ </dd>
+ <dd itemprop="http://purl.org/vocab/frbr/core#realization"
+ itemscope
+ itemtype="http://purl.org/vocab/frbr/core#Expression"
+ itemid="http://purl.oreilly.com/products/9780596802189.EBOOK">
+ <link itemprop="http://purl.org/dc/terms/type" href="http://purl.oreilly.com/product-types/EBOOK">
+ Ebook
+ </dd>
+</dl></pre>
+
+<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>
+
+<pre class="example">[
+ {
+ "@id": "http://purl.oreilly.com/works/45U8QJGZSQKDH8N",
+ "@type": "http://purl.org/vocab/frbr/core#Work",
+ "http://purl.org/dc/terms/title": "Just a Geek",
+ "http://purl.org/dc/terms/creator": "Whil Wheaton",
+ "http://purl.org/vocab/frbr/core#realization":
+ [
+ "http://purl.oreilly.com/products/9780596007683.BOOK",
+ "http://purl.oreilly.com/products/9780596802189.EBOOK"
+ ]
+ },
+ {
+ "@id": "http://purl.oreilly.com/products/9780596007683.BOOK",
+ "@type": "http://purl.org/vocab/frbr/core#Expression",
+ "http://purl.org/dc/terms/type": "http://purl.oreilly.com/product-types/BOOK"
+ },
+ {
+ "@id": "http://purl.oreilly.com/products/9780596802189.EBOOK",
+ "@type": "http://purl.org/vocab/frbr/core#Expression",
+ "http://purl.org/dc/terms/type": "http://purl.oreilly.com/product-types/EBOOK"
+ }
+]</pre>
+</div>
+</div>
+
+<div class="appendix informative section" id="iana-considerations" typeof="bibo:Chapter" resource="#iana-considerations" rel="bibo:chapter">
+
+<!-- OddPage -->
+<h2><span class="secno">C. </span>IANA Considerations</h2><p><em>This section is non-normative.</em></p>
+
+<p>This section is included merely for standards community review and will be
+submitted to the Internet Engineering Steering Group if this specification
+becomes a W3C Recommendation.</p>
+
+<h3 id="application-ld-json">application/ld+json</h3>
+<dl>
+ <dt>Type name:</dt>
+ <dd>application</dd>
+ <dt>Subtype name:</dt>
+ <dd>ld+json</dd>
+ <dt>Required parameters:</dt>
+ <dd>None</dd>
+ <dt>Optional parameters:</dt>
+ <dd>
+ <dl>
+ <dt><code>form</code></dt>
+ <dd>Determines the serialization form for the JSON-LD document. The only
+ valid value at the moment is <code>expanded</code>. If no form is
+ specified in an HTTP request header to an HTTP server, the server <em class="rfc2119" title="may">may</em>
+ choose any form. If no form is specified in an HTTP response, the form
+ <em class="rfc2119" title="must not">must not</em> be assumed to take any particular form.</dd>
+ </dl>
+ </dd>
+ <dt>Encoding considerations:</dt>
+ <dd>The same as the <code>application/json</code> MIME media type.</dd>
+ <dt>Security considerations:</dt>
+ <dd>Since JSON-LD is intended to be a pure data exchange format for
+ directed graphs, the serialization <em class="rfc2119" title="should not">should not</em> be passed through a
+ code execution mechanism such as JavaScript's <code>eval()</code>
+ function. It is <em class="rfc2119" title="recommended">recommended</em> that a conforming parser does not attempt to
+ directly evaluate the JSON-LD serialization and instead purely parse the
+ input into a language-native data structure. </dd>
+ <dt>Interoperability considerations:</dt>
+ <dd>Not Applicable</dd>
+ <dt>Published specification:</dt>
+ <dd>The <a href="http://json-ld.org/spec/latest/">JSON-LD</a> specification.</dd>
+ <dt>Applications that use this media type:</dt>
+ <dd>Any programming environment that requires the exchange of
+ directed graphs. Implementations of JSON-LD have been created for
+ JavaScript, Python, Ruby, PHP and C++.
+ </dd>
+ <dt>Additional information:</dt>
+ <dd>
+ <dl>
+ <dt>Magic number(s):</dt>
+ <dd>Not Applicable</dd>
+ <dt>File extension(s):</dt>
+ <dd>.jsonld</dd>
+ <dt>Macintosh file type code(s):</dt>
+ <dd>TEXT</dd>
+ </dl>
+ </dd>
+ <dt>Person & email address to contact for further information:</dt>
+ <dd>Manu Sporny <msporny@digitalbazaar.com></dd>
+ <dt>Intended usage:</dt>
+ <dd>Common</dd>
+ <dt>Restrictions on usage:</dt>
+ <dd>None</dd>
+ <dt>Author(s):</dt>
+ <dd>Manu Sporny, Gregg Kellogg, Markus Lanthaler, Dave Longley</dd>
+ <dt>Change controller:</dt>
+ <dd>W3C</dd>
+</dl>
+
+<p>Fragment identifiers used with <a href="#application-ld-json">application/ld+json</a>
+ resources <em class="rfc2119" title="may">may</em> identify a node in the <a class="tref internalDFN" title="linked_data_graph" href="#dfn-linked_data_graph">linked data graph</a> expressed in
+ the resource. This idiom, which is also used in RDF [<cite><a class="bibref" rel="biblioentry" href="#bib-RDF-CONCEPTS">RDF-CONCEPTS</a></cite>], gives a
+ simple way to "mint" new, document-local IRIs to label nodes and therefore contributes
+ considerably to the expressive power of JSON-LD.</p>
+
+</div>
+
+<div class="appendix informative section" id="acknowledgements" typeof="bibo:Chapter" resource="#acknowledgements" rel="bibo:chapter">
+
+<!-- OddPage -->
+<h2><span class="secno">D. </span>Acknowledgements</h2><p><em>This section is non-normative.</em></p>
+
+<p>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,
+Dave Longley, Dave Lehn and Mike Johnson who reviewed, provided feedback, and
+performed several implementations of the specification, and Ian Davis, who
+created RDF/JSON. Thanks also to Nathan Rixham, Bradley P. Allen,
+Kingsley Idehen, Glenn McDonald, Alexandre Passant, Danny Ayers, Ted
+Thibodeau Jr., Olivier Grisel, Niklas Lindström, Markus Lanthaler, and Richard
+Cyganiak for their input on the specification.
+</p>
+</div>
+
+
+
+<div id="references" class="appendix section" typeof="bibo:Chapter" resource="#references" rel="bibo:chapter">
+<!-- OddPage -->
+<h2><span class="secno">E. </span>References</h2><div id="normative-references" typeof="bibo:Chapter" resource="#normative-references" rel="bibo:chapter" class="section"><h3><span class="secno">E.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/rfc/bcp/bcp47.txt"><cite>Tags for Identifying Languages</cite></a> September 2009. IETF Best Current Practice. URL: <a href="http://tools.ietf.org/rfc/bcp/bcp47.txt">http://tools.ietf.org/rfc/bcp/bcp47.txt</a>
+</dd><dt id="bib-RFC3987">[RFC3987]</dt><dd rel="dcterms:requires">M. Dürst; M. Suignard. <a href="http://www.ietf.org/rfc/rfc3987.txt"><cite>Internationalized Resource Identifiers (IRIs).</cite></a> January 2005. Internet RFC 3987. URL: <a href="http://www.ietf.org/rfc/rfc3987.txt">http://www.ietf.org/rfc/rfc3987.txt</a>
+</dd><dt id="bib-RFC4627">[RFC4627]</dt><dd rel="dcterms:requires">D. Crockford. <a href="http://www.ietf.org/rfc/rfc4627.txt"><cite>The application/json Media Type for JavaScript Object Notation (JSON)</cite></a> July 2006. Internet RFC 4627. URL: <a href="http://www.ietf.org/rfc/rfc4627.txt">http://www.ietf.org/rfc/rfc4627.txt</a>
+</dd><dt id="bib-RFC5988">[RFC5988]</dt><dd rel="dcterms:requires">M. Nottingham. <a href="http://tools.ietf.org/rfc/rfc5988"><cite>Web Linking</cite></a> October 2010. IETF Standard. URL: <a href="http://tools.ietf.org/rfc/rfc5988.txt">http://tools.ietf.org/rfc/rfc5988.txt</a>
+</dd></dl></div><div id="informative-references" typeof="bibo:Chapter" resource="#informative-references" rel="bibo:chapter" class="section"><h3><span class="secno">E.2 </span>Informative references</h3><dl class="bibliography" about=""><dt id="bib-JSON-LD-API">[JSON-LD-API]</dt><dd rel="dcterms:references">Manu Sporny, Gregg Kellogg, Dave Longley, Markus Lanthaler, Eds. <cite><a href="http://json-ld.org/spec/latest/json-ld-api/">JSON-LD API</a></cite> Latest. W3C Editor's Draft. URL: <a href="http://json-ld.org/spec/latest/json-ld-api/">http://json-ld.org/spec/latest/json-ld-api/</a>
+</dd><dt id="bib-RDF-CONCEPTS">[RDF-CONCEPTS]</dt><dd rel="dcterms:references">Graham Klyne; Jeremy J. Carroll. <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210"><cite>Resource Description Framework (RDF): Concepts and Abstract Syntax.</cite></a> 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210">http://www.w3.org/TR/2004/REC-rdf-concepts-20040210</a>
+</dd><dt id="bib-RDF-PRIMER">[RDF-PRIMER]</dt><dd rel="dcterms:references">Frank Manola; Eric Miller. <a href="http://www.w3.org/TR/2004/REC-rdf-primer-20040210/"><cite>RDF Primer.</cite></a> 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-rdf-primer-20040210/">http://www.w3.org/TR/2004/REC-rdf-primer-20040210/</a>
+</dd><dt id="bib-RDFA-CORE">[RDFA-CORE]</dt><dd rel="dcterms:references">Shane McCarron; et al. <a href="http://www.w3.org/TR/2012/PR-rdfa-core-20120508/"><cite>RDFa Core 1.1: Syntax and processing rules for embedding RDF through attributes.</cite></a> 8 May 2012. W3C Proposed Recommendation. URL: <a href="http://www.w3.org/TR/2012/PR-rdfa-core-20120508/">http://www.w3.org/TR/2012/PR-rdfa-core-20120508/</a>
+</dd><dt id="bib-TURTLE">[TURTLE]</dt><dd rel="dcterms:references">David Beckett, Tim Berners-Lee. <a href="http://www.w3.org/TeamSubmission/turtle/"><cite>Turtle: Terse RDF Triple Language.</cite></a> January 2008. W3C Team Submission. URL: <a href="http://www.w3.org/TeamSubmission/turtle/">http://www.w3.org/TeamSubmission/turtle/</a>
+</dd></dl></div></div></body></html>
--- a/spec/latest/json-ld-syntax/index.html Tue May 22 14:25:14 2012 -0400
+++ b/spec/latest/json-ld-syntax/index.html Tue May 22 14:26:11 2012 -0400
@@ -304,13 +304,13 @@
<p>
JSON, as specified in [[!RFC4627]], is a simple language for representing
-data on the Web. <tref>Linked Data</tref> is a technique for creating a network
-of inter-connected data across different Web documents and Web sites.
+data on the Web. <tref>Linked Data</tref> is a technique for creating a network
+of inter-connected data across different Web documents and Web sites.
A <em>thing</em> in this data network is typically identified using an
-<tref>IRI</tref> (Internationalized Resource Identifier), which is typically
-dereference-able, and thus may be used to find more information about the
-<em>thing</em>. The <tref>IRI</tref> allows
-a software program to start at one <em>thing</em> and follow links to other
+<tref>IRI</tref> (Internationalized Resource Identifier), which is typically
+dereference-able, and thus may be used to find more information about the
+<em>thing</em>. The <tref>IRI</tref> allows
+a software program to start at one <em>thing</em> and follow links to other
<em>things</em> in order to learn more about all of the things described on the
Web.
</p>
@@ -329,9 +329,9 @@
The syntax does not necessarily require applications to change their JSON, but
allows one to easily add meaning by simply adding or referencing a context.
The syntax is designed to not disturb already deployed systems
-running on JSON, but provide a smooth upgrade path from JSON to JSON-LD.
+running on JSON, but provide a smooth upgrade path from JSON to JSON-LD.
Finally, the format is intended to be easy to parse, efficient
-to generate, and only requires a very small memory footprint in order to
+to generate, and only requires a very small memory footprint in order to
operate.
</p>
@@ -380,8 +380,8 @@
unless specific markup is provided (see <a href="#sets-and-lists">Sets and Lists</a>).
</dd>
<dt><tdef>string</tdef></dt><dd>
- A string is a sequence of zero or more Unicode (UTF-8) characters,
- wrapped in double quotes, using backslash escapes (if necessary). A
+ A string is a sequence of zero or more Unicode (UTF-8) characters,
+ wrapped in double quotes, using backslash escapes (if necessary). A
character is represented as a single character string.
</dd>
<dt><tdef>number</tdef></dt>
@@ -410,7 +410,7 @@
<section>
<h2>Syntax Tokens and Keywords</h2>
- <p>JSON-LD specifies a number of syntax tokens and <tdef title="keyword">keywords</tdef>
+ <p>JSON-LD specifies a number of syntax tokens and <tdef title="keyword">keywords</tdef>
that are a core part of the language:</p>
<dl>
@@ -497,7 +497,7 @@
<dd>No extra
processors or software libraries should be necessary to use JSON-LD in its most
basic form. The language will provide developers with a very easy
- learning curve. Developers need only know JSON and two
+ learning curve. Developers need only know JSON and two
<tref title="keyword">keywords</tref> (<code>@context</code>
and <code>@id</code>) to use the basic functionality in JSON-LD.</dd>
<dt>Compatibility</dt>
@@ -514,18 +514,18 @@
linked was an approach that was driven by pragmatism. JSON-LD attempts to be
more practical than theoretical in its approach to Linked Data.</dd>-->
<dt>Zero Edits, most of the time</dt>
- <dd>JSON-LD must provide a
+ <dd>JSON-LD must provide a
<a href="#referencing-contexts-from-json-documents">mechanism</a>
- that allows developers to specify <tref>context</tref> in a way that is
+ that allows developers to specify <tref>context</tref> in a way that is
out-of-band.
This allows organizations that have
already deployed large JSON-based infrastructure to add meaning to their
JSON documents in a way that is not disruptive to their day-to-day operations and is
transparent to their current customers. At times, mapping JSON to
a graph representation can become difficult. In these instances, rather than
- having JSON-LD support an esoteric use case, we chose not to support the
- use case and support a simplified syntax instead. So, while Zero Edits is
- a goal, it is not always possible without adding great complexity to
+ having JSON-LD support an esoteric use case, we chose not to support the
+ use case and support a simplified syntax instead. So, while Zero Edits is
+ a goal, it is not always possible without adding great complexity to
the language.
</dd>
<dt>One-pass Processing</dt>
@@ -852,12 +852,12 @@
<p>JSON keys that do not expand to an absolute IRI are ignored, or removed
in some cases, by the [[JSON-LD-API]]. However, JSON keys that do not include
a mapping in the <tref>context</tref> are still considered valid expressions
-in JSON-LD documents - the keys just don't have any machine-readable,
+in JSON-LD documents - the keys just don't have any machine-readable,
semantic meaning.</p>
<p><tref>Prefix</tref>es are expanded when the form of the value is a
<tref>compact IRI</tref> represented as a <code>prefix:suffix</code>
- combination, and the prefix matches a <tref>term</tref> defined within the
+ combination, and the prefix matches a <tref>term</tref> defined within the
<tref>active context</tref>:</p>
<pre class="example" data-transform="updateExample">
@@ -920,8 +920,8 @@
-->
</pre>
-<p>In the example above, even though the value
-<code>http://manu.sporny.org/</code> is expressed as a JSON
+<p>In the example above, even though the value
+<code>http://manu.sporny.org/</code> is expressed as a JSON
<tref>string</tref>, the type <tref>coercion</tref> rules will transform
the value into an IRI when processed by a JSON-LD Processor.</p>
@@ -965,7 +965,7 @@
<p>A <tref>JSON object</tref> used to define property values is called a
<tref>subject definition</tref>. <tref title="subject definition">Subject definitions</tref>
- do not require an <code>@id</code>. A
+ do not require an <code>@id</code>. A
<tref>subject definition</tref>
that does not contain an <code>@id</code> property is called an
<tref>unlabeled node</tref>.</p>
@@ -1095,7 +1095,7 @@
-->
</pre>
-<p class="note">JSON-LD allows one to associate language information with
+<p class="note">JSON-LD allows one to associate language information with
<tref>term</tref>s.
See <a href="#expanded-term-definition">Expanded Term Definition</a> for
more details.</p>
@@ -1107,7 +1107,7 @@
<p>A JSON-LD author can express multiple values in a compact way by using
<tref>array</tref>s. Since graphs do not describe ordering for links
- between nodes, arrays in JSON-LD do not provide an ordering of the
+ between nodes, arrays in JSON-LD do not provide an ordering of the
listed objects by default. This is exactly the opposite from regular JSON
arrays, which are ordered by default. For example, consider the following
simple document:</p>
@@ -1231,7 +1231,7 @@
contains a single value.</p>
<p class="note">The use of <code>@container</code> in the body of a JSON-LD
- document, i.e., outside <code>@context</code> MUST be ignored by
+ document, i.e., outside <code>@context</code> MUST be ignored by
JSON-LD processors.</p>
</section>
@@ -1285,7 +1285,7 @@
</pre>
<p>The <em>modified</em> key's value above is automatically type coerced to a
-datetime value because of the information specified in the
+datetime value because of the information specified in the
<code>@context</code>.</p>
<p>The second example uses the expanded form of setting the type information
@@ -1683,10 +1683,10 @@
within the current active context. This mechanism is mainly used to associate type or language
information with a <tref>compact IRI</tref> or an <tref>absolute IRI</tref>.</p>
-<p class="note">While it is possible to define a
+<p class="note">While it is possible to define a
<tref>compact IRI</tref>, or an absolute IRI to expand to some
- other unrelated IRI (for example, <code>foaf:name</code> expanding to
- <code>http://example.org/unrelated#species</code>),
+ other unrelated IRI (for example, <code>foaf:name</code> expanding to
+ <code>http://example.org/unrelated#species</code>),
such usage is strongly discouraged.</p>
</section>
@@ -1788,7 +1788,7 @@
</pre>
<p>In this case the <code>@id</code> definition is optional, but if it does exist, the <tref>compact IRI</tref>
- or <tref>IRI</tref> is treated as a term (not a <code>prefix:suffix</code> construct)
+ or <tref>IRI</tref> is treated as a term (not a <code>prefix:suffix</code> construct)
so that the actual definition of a <tref>prefix</tref> becomes unnecessary.</p>
<p class="note">Keys in the context are treated as <tref title="term">terms</tref> for the purpose of
@@ -1796,18 +1796,18 @@
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 <tref>compact IRI</tref> (or even an
absolute <tref>IRI</tref>) to be defined as something else entirely. For example, one could specify that
- the <tref>term</tref> <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
+ the <tref>term</tref> <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>
-<p>Type coercion is performed using the unexpanded value of the key,
+<p>Type coercion is performed using the unexpanded value of the key,
which MUST have an exact match for an entry in the <tref>active context</tref>.</p>
</section>
<section>
<h3>IRI Expansion Within a Context</h3>
- <p>In general, normal IRI expansion rules apply
+ <p>In general, normal IRI expansion rules apply
anywhere an IRI is expected (see <a href="#iris">IRIs</a>). Within
a <tref>context</tref> definition, this can mean that terms defined
within the context MAY also be used within that context as long as
@@ -1867,7 +1867,7 @@
</pre>
<p><tref title="compact iri">Compact IRIs</tref>
- and <tref title="iri">IRIs</tref> MAY be used on the left-hand side of a
+ and <tref title="iri">IRIs</tref> MAY be used on the left-hand side of a
<tref>term</tref> definition.</p>
<pre class="example" data-transform="updateExample">
@@ -1900,7 +1900,7 @@
<code>@type</code> associated with the <tref>term</tref>. In the second
approach, only the <code>@type</code> associated with the <tref>term</tref> is
specified. The JSON-LD processor will derive the full <tref>IRI</tref> for
-<code>foaf:homepage</code> by looking up the <code>foaf</code>
+<code>foaf:homepage</code> by looking up the <code>foaf</code>
<tref>prefix</tref> in the
<tref>context</tref>.
</p>
@@ -1989,16 +1989,17 @@
</pre>
<p>
- An object definition, like the one used above, MAY be used as a
- JSON value at any point in JSON-LD.
+ An object definition, like the one used above, MAY be used in any value
+ position in the body of a JSON-LD document.
</p>
</section>
<section>
<h2>Named Graphs</h2>
- <p>The <code>@graph</code> <tref>keyword</tref> is used to identify a set of JSON-LD object
- definitions that may not be directly related through a property, or where
- <tref>embedding</tref> is not appropriate. For example:</p>
+ <p>The <code>@graph</code> <tref>keyword</tref> is used to express a set of
+ JSON-LD <tref>subject definition</tref>s that may not be directly related
+ to one another through a property. The mechanism may also be used where
+ <tref>embedding</tref> is not desirable to the application. For example:</p>
<pre class="example" data-transform="updateExample">
<!--
@@ -2050,21 +2051,20 @@
-->
</pre>
- <p>The <code>@graph</code> <tref>keyword</tref> takes on additional meaning when it
- is used along with other properties, or is used within an embedded JSON-LD
- object. In this case, the set of <tref title="subject definition">subject definitions</tref>,
- or <tref title="subject reference">subject references</tref>
- contained within a <code>@graph</code> is given a <em>name</em>, based on
- the label of the JSON-LD object containing a <code>@graph</code> property,
- either an <tref>IRI</tref>, or an <tref>unlabeled node</tref>. This allows
- statements to be made about an entire <tref>linked data graph</tref>,
+ <p>JSON-LD allows you to <em>name</em> things on the Web by assigning
+ an <code>@id</code> to them, which is typically an <tref>IRI</tref>.
+ This notion extends to the ability to identify graphs in the same
+ manner. A developer may name data expressed using the <code>@graph</code>
+ <tref>keyword</tref> by pairing it with an <code>@id</code>
+ <tref>keyword</tref>. This enables the developer to make statements
+ about the <tref>linked data graph</tref> itself,
rather than just a single JSON-LD object.</p>
<pre class="example" data-transform="updateExample">
<!--
{
"@context": ...,
- ****"@id": "http://example.org/linked-data-graph",
+ ****"@id": "http://example.org/graphs/73",
"asOf": { "@value": "2012-04-09", "@type": "xsd:date" },
"@graph":****
[
@@ -2086,12 +2086,13 @@
-->
</pre>
- <p>This example says that there is a <tref>linked data graph</tref> identified by
- <code>http://example.org/linked-data-graph</code> which is composed of the
+ <p>The example above expresses a <em>named</em>
+ <tref>linked data graph</tref> that is identified by the <tref>IRI</tref>
+ <code>http://example.org/graphs/73</code>. That graph is composed of the
statements about Manu and Gregg and a reference to another IRI, which could
- make statements about Markus. Additionally, there is information about the
- graph itself, which indicates a time at which this information as asserted
- to be true.</p>
+ make statements about Markus. Meta-data about the graph itself is also
+ expressed via the <code>asOf</code> property, which specifies when the
+ information was retrieved from the Web.</p>
</section>
@@ -2104,8 +2105,10 @@
automatically created if a subject is not specified using the
<code>@id</code> <tref>keyword</tref>. However, authors may provide identifiers for
unlabeled nodes by using the special <code>_</code> (underscore)
-<tref>prefix</tref>. This allows to reference the node locally within the
-document but not in an external document.</p>
+<tref>prefix</tref>. This allows one to reference the node locally within the
+document, but makes it impossible to reference the node from an
+external document. The <tref>unlabeled node</tref> identifier is scoped to the
+document in which it is used.</p>
<pre class="example" data-transform="updateExample">
<!--
@@ -2118,8 +2121,8 @@
</pre>
<p>The example above would set the subject to <code>_:foo</code>, which can
-then be used later on in the JSON-LD markup to refer back to the
-<tref>unlabeled node</tref>. This practice, however, is usually frowned upon when
+then be used elsewhere in the JSON-LD document to refer back to the
+<tref>unlabeled node</tref>. This practice is frowned upon when
generating <tref>Linked Data</tref>. If a developer finds that they refer to the unlabeled
node more than once, they should consider naming the node using a de-referenceable
<tref>IRI</tref>.
@@ -2130,9 +2133,11 @@
<section>
<h2>Aliasing Keywords</h2>
-<p>JSON-LD allows all of the syntax <tref title="keyword">keywords</tref>, except for <code>@context</code>,
-to be aliased. This feature allows more legacy JSON content to be supported
-by JSON-LD. It also allows developers to design domain-specific implementations
+<p>Each of the JSON-LD <tref title="keyword">keywords</tref>,
+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 <tref>context</tref>.</p>
<pre class="example" data-transform="updateExample">
@@ -2144,8 +2149,8 @@
****"a": "@type"****,
"name": "http://schema.org/name"
},
- "url": "http://example.com/about#gregg",
- "a": "http://schema.org/Person",
+ "****url****": "http://example.com/about#gregg",
+ "****a****": "http://schema.org/Person",
"name": "Gregg Kellogg"
}
-->
@@ -2160,10 +2165,11 @@
<section>
<h3>Expanded Document Form</h3>
-<p>The JSON-LD API [[JSON-LD-API]] defines an method for <em>expanding</em> a JSON-LD document.
+<p>The JSON-LD API [[JSON-LD-API]] defines an method for <em>expanding</em> a
+ JSON-LD document.
Expansion is the process of taking a JSON-LD document and applying a
- context such that all IRIs, datatypes, and literal values are expanded so
- that the context is no longer necessary.</p>
+ <code>@context</code> such that all IRIs, datatypes, and values
+ are expanded so that the <code>@context</code> is no longer necessary.</p>
<p>For example, assume the following JSON-LD input document:</p>
@@ -2201,6 +2207,13 @@
]
-->
</pre>
+
+<p>Expanded document form is useful when an application has to process input
+data in a deterministic form. It has been optimized to ensure that the code
+that developers have to write is minimized compared to the code that would
+have to be written to operate on
+<a href="#compact-document-form">compact document form</a>.</p>
+
</section>
<section>
@@ -2270,11 +2283,69 @@
application-specific compacted form by first <a href="#expanded-document-form">expanding the document</a>.
While the context provided above mapped <code>http://xmlns.com/foaf/0.1/name</code>
to <strong>name</strong>, it could have also mapped it to any arbitrary string
- provided by the developer.</p>
+ provided by the developer. This powerful mechanism, along with another
+ JSON-LD API technique called <em>framing</em>, allows the developer to
+ re-shape the incoming JSON data into a format that is optimized for
+ their application.</p>
</section>
</section>
+<section class="appendix normative">
+<h2>JSON-LD Grammar</h2>
+
+<p>Since the JSON-LD syntax is a subset of the JSON syntax, it follows that
+all well-formed JSON-LD documents are well-formed JSON documents. It also
+means that a non-well-formed JSON document can never be a well-formed
+JSON-LD document. Furthermore, JSON-LD places a number of restrictions on
+the JSON syntax in order to define a <em>grammar</em> that is used to express
+valid JSON-LD documents. At times, even if this grammar is violated, a
+JSON-LD processor will do its best to recover from the error and
+deterministically transform the author's markup into valid JSON-LD.</p>
+
+<p class="issue">The final nuanced details of the exact grammar are still being
+discussed (see <a href="https://github.com/json-ld/json-ld.org/issues/114#issuecomment-5820544">ISSUE-114</a>),
+as well as the best mechanism to express these restrictions. EBNF
+seems like overkill since it's a subset of JSON. EBNF doesn't quite capture
+some of the more esoteric restrictions in the language.
+</p>
+
+<ol>
+<li>A JSON-LD document is composed of a single <tref>JSON object</tref> or an array of <tref>JSON object</tref>s.</li>
+<li>The value of <code>@id</code> MUST be <code>null</code>, a <tref>term</tref>, a <tref>compact IRI</tref>, or an <tref>IRI</tref>.</li>
+<li>A <code>@id</code> keyword and a <code>@language</code> keyword MUST NOT exist in the same <tref>JSON object</tref>.</li>
+<li>A <code>@id</code> keyword and a <code>@container</code> keyword MUST NOT exist in the same <tref>JSON object</tref>.</li>
+<li>A <tref>JSON object</tref> MAY contain a <code>@context</code> property.</li>
+<li>A <code>@context</code> value MUST NOT contain an embedded <code>@context</code> definition.</li>
+<li>The value associated with the <code>@context</code> keyword MUST be an <tref>IRI</tref>, a <tref>JSON object</tref>, null, or an array containing a combination of the allowed values.</li>
+<li>The value associated with the keys used in a <code>@context</code> MUST be a <code>null</code>, an <tref>IRI</tref>, or a <tref>JSON object</tref>.</li>
+<li>For each value that is a <tref>JSON object</tref> that is associated with a key in a <code>@context</code>:
+ <ol>
+ <li><code>@id</code> and <code>@type</code> MUST be an <tref>IRI</tref> or <code>null</code></li>
+ <li><code>@container</code> MUST be associated with a value of either <code>@set</code> or <code>@list</code>.</li>
+ <li><code>@language</code> MUST be a string expressed in [[BCP47]] or <code>null</code>.</li>
+ <li>Any other property MUST be ignored by a JSON-LD processor and MUST be preserved in compaction and framing.</li>
+ </ol>
+</li>
+<li>A <tref>JSON object</tref> MAY have an <code>@graph</code> property.</li>
+<li>The value of a <code>@graph</code> property MUST be null, an <tref>IRI</tref>, or a <tref>JSON object</tref>.</li>
+<li>A <tref>JSON object</tref> containing a <code>@set</code> key MUST NOT have any other keys.</li>
+<li>A <tref>JSON object</tref> containing a <code>@list</code> key MUST NOT have any other keys.</li>
+<li>The value of an <code>@set</code> or <code>@list</code> key can be a string, a number, a <tref>JSON object</tref>, or an array containing a combination of the allowed values.</li>
+<li>For each <tref>JSON object</tref> that contains a <code>@value</code> key:
+ <ol>
+ <li>It MAY have a <code>@language</code> or <code>@type</code> property and MUST NOT have any other properties.</li>
+ <li>It MUST NOT contain both the <code>@language</code> and <code>@type</code> keys at the same time.</li>
+ <li>The value of the <code>@value</code> key MUST be a string or a number.</li>
+ <li>The value of the <code>@language</code> key MUST be <code>null</code> or a string in [[BCP47]] format.</li>
+ <li>The value of <code>@type</code> MUST be <code>null</code>, a <tref>term</tref>, a <tref>compact IRI</tref>, an <tref>IRI</tref>, a <tref>JSON object</tref>, or an array containing a combination of the allowed values.</li>
+ </ol>
+</li>
+<li>In the body of a JSON-LD document, the value of <code>@type</code> MUST NOT be <code>@id</code>. This is in contrast to the use of <code>@type</code> in the <code>@context</code>, where this is allowed.</li>
+</ol>
+
+</section>
+
<section class="appendix informative">
<h2>Markup Examples</h2>
@@ -2282,13 +2353,14 @@
way of working with Linked Data is through <tdef>RDF</tdef>, the Resource Description Framework.
RDF can be expressed using JSON-LD by associating JSON-LD concepts such as <code>@id</code>
and <code>@type</code> with the equivalent <tref>IRI</tref>s in RDF. Further information about
- RDF may be found in [[RDF-PRIMER]].</p>
+ RDF may be found in the [[RDF-PRIMER]].</p>
<p>The JSON-LD markup examples below demonstrate how JSON-LD can be used to
express semantic data marked up in other languages such as Turtle, RDFa, Microformats,
and Microdata. These sections are merely provided as proof that JSON-LD is
very flexible in what it can express across different <tref>Linked Data</tref> approaches.
- Details of transforming JSON-LD into RDF are defined in [[JSON-LD-API]].</p>
+ Further information on transforming JSON-LD into RDF are detailed in the
+ [[JSON-LD-API]].</p>
<section>
<h3>Turtle</h3>
@@ -2297,7 +2369,8 @@
<section>
<h4>Prefix definitions</h4>
-<p>The JSON-LD context has direct equivalents for the Turtle <code>@prefix</code> declaration:</p>
+<p>The JSON-LD context has direct equivalents for the Turtle
+ <code>@prefix</code> declaration:</p>
<pre class="example" data-transform="updateExample">
<!--
@@ -2325,8 +2398,9 @@
</pre>
<div class="note">
-<p>JSON-LD has no equivalent for the Turtle <code>@base</code> declaration. Authors could, of course,
- use a prefix definition to resolve <tref>relative IRI</tref>s:</p>
+<p>JSON-LD has no equivalent for the Turtle <code>@base</code> declaration.
+ Instead, authors may use a prefix definition to resolve
+ <tref>relative IRI</tref>s:</p>
<pre class="example" data-transform="updateExample">
<!--
{
@@ -2406,7 +2480,7 @@
"foaf:name": "Joe Bob",
"foaf:nick":
{
- "@list": [ "joe", "bob", "jaybe" ]
+ "@list": [ "joe", "bob", "jaybee" ]
}
}
-->
@@ -2482,7 +2556,7 @@
<pre class="example" data-transform="updateExample">
<!--
<div class="vcard">
- <a class="url fn" href="http://www.markus-lanthaler.com/">Markus Lanthaler</a>
+ <a class="url fn" href="http://tantek.com/">Tantek Çelik</a>
</div>
-->
</pre>
@@ -2506,8 +2580,8 @@
"fn": "http://microformats.org/profile/hcard#fn"
},
"@type": "vcard",
- "url": "http://www.markus-lanthaler.com/",
- "fn": "Markus Lanthaler"
+ "url": "http://tantek.com/",
+ "fn": "Tantek Çelik"
}
-->
</pre>