--- a/spec/latest/json-ld-syntax/index.html Mon Nov 05 09:15:09 2012 +0100
+++ b/spec/latest/json-ld-syntax/index.html Mon Nov 05 11:03:51 2012 +0100
@@ -332,10 +332,10 @@
it introduces:</p>
<ul>
- <li>a universal identifier mechanism for <tref>JSON object</tref>s via the
- use of <tref>IRI</tref>s,</li>
+ <li>a universal identifier mechanism for <tref title="JSON object">JSON objects</tref> via the
+ use of <tref title="IRI">IRIs</tref>,</li>
<li>a way to disambiguate the keys used between multiple JSON documents
- by mapping them to <tref>IRI</tref>s via a <tref>context</tref>,</li>
+ by mapping them to <tref title="IRI">IRIs</tref> via a <tref>context</tref>,</li>
<li>a mechanism in which a value in a <tref>JSON object</tref> may refer
to a <tref>JSON object</tref> on a different site on the Web,</li>
<li>the ability to express the language associated with a <tref>string</tref></li>
@@ -479,7 +479,7 @@
<p>There are a number of best practices that can ensure that developers
will generate good <tref>Linked Data</tref> for the Web. JSON-LD
formalizes those techniques by providing a mechanism to map JSON data,
- i.e., keys and values, to <tref>IRI</tref>s. This does not mean
+ i.e., keys and values, to <tref title="IRI">IRIs</tref>. This does not mean
that JSON-LD requires every key or value to be an IRI, but rather ensures that
keys and values can be mapped to IRIs if the developer desires to transform
their data into <tref>Linked Data</tref>.</p>
@@ -542,7 +542,7 @@
<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 <tref>term</tref>s and help
+ document. These short-hand names are called <tref title="term">terms</tref> 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"></a>.</dd>
@@ -619,15 +619,12 @@
ensure that these terms are unambiguous. For example, the term <code>name</code> may
map directly to the IRI <code>http://xmlns.com/foaf/0.1/name</code>. This allows JSON-LD documents to be constructed
using the common JSON practice of simple key-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
- MUST be either; 1) a simple string with the lexical form of an <tref>absolute IRI</tref> or
- 2) <tref>compact IRI</tref>, or 3) an <tref>JSON object</tref> 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).
+ page, API or database in which it resides.
</p>
-<p>These Linked Data <tref>term</tref>s are typically collected in a
-context document that would look something like this:</p>
+<p>In a JSON-LD document, the mapping between <tref title="term">terms</tref> and
+ <tref title="IRI">IRIs</tref> is typically collected in a <tref>context definition</tref>
+ that would look something like this:</p>
<pre class="example" data-transform="updateExample"
title="Context definition">
@@ -690,17 +687,20 @@
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 <tref>term</tref>s as well as other processing instructions for
+for certain <tref title="term">terms</tref> as well as other processing instructions for
the JSON-LD processor.</p>
-<p>External JSON-LD context documents MAY contain extra information
+<p>External JSON-LD context documents may contain extra information
located outside of the <code>@context</code> key, such as documentation about the
<tref title="term">terms</tref> 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 MUST be discarded.</p>
-
-<p>Contexts MAY 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>
+<code>@context</code> value from an external JSON-LD context document,
+<tref title="JSON-LD processor">JSON-LD processors</tref> MUST discard
+information contained outside of the <code>@context</code> value.</p>
+
+<p>Contexts may also be specified in-line. This ensures that
+ <tref title="JSON-LD document">JSON-LD documents</tref>
+ can be processed when a <tref>JSON-LD processor</tref> does not have access to
+ the Web.</p>
<pre class="example" data-transform="updateExample"
title="In-line context definition">
@@ -727,12 +727,12 @@
-->
</pre>
-<p>Contexts MAY be used at any time a <tref>node definition</tref> is defined.
- A <tref>node definition</tref> MAY specify multiple contexts, using an
- <tref>array</tref>, 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
- <tref>term</tref>s MUST be overridden using a last-defined-overrides
+<p>Contexts may be used at any time a <tref>node definition</tref> is defined.
+ A <tref>node definition</tref> may specify multiple contexts, using an
+ <tref>array</tref>, which <tref title="JSON-LD processor">JSON-LD processors</tref>
+ process 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
+ <tref title="term">terms</tref> are overridden using a last-defined-overrides
mechanism.</p>
<pre class="example" data-transform="updateExample"
@@ -763,13 +763,13 @@
legacy applications that depend on the specific structure of the
<tref>JSON object</tref>. If a <tref>term</tref> is re-defined within a
context, all previous rules associated with the previous definition are
- removed. A <tref>term</tref> defined in a previous context MUST be removed,
- if it is re-defined to <code>null</code>.</p>
+ removed. A <tref>term</tref> defined in a previous context MUST be removed
+ by the <tref>JSON-LD processor</tref> if it is re-defined to <code>null</code>.</p>
<p>The set of contexts defined within a specific <tref>node definition</tref> are
- referred to as <tdef>local context</tdef>s. Setting the context to <code>null</code>
+ referred to as <tdef title="local context">local contexts</tdef>. Setting the context to <code>null</code>
effectively resets the <tref>active context</tref> to an empty context. The
- <tdef>active context</tdef> refers to the accumulation of <tref>local context</tref>s
+ <tdef>active context</tdef> refers to the accumulation of <tref title="local context">local contexts</tref>
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>
@@ -802,7 +802,7 @@
<section>
<h2>From JSON to JSON-LD</h2>
-<p>If a set of <tref>term</tref>s such as, <strong>name</strong>,
+<p>If a set of <tref title="term">terms</tref> such as, <strong>name</strong>,
<strong>homepage</strong>, and <strong>depiction</strong>,
are defined in a <tref>context</tref>, and that context is used to resolve the
names in <tref title="JSON object">JSON objects</tref>, machines are able to automatically expand the terms to
@@ -832,7 +832,7 @@
<tref>node definition</tref>. <tref title="node definition">Node definitions</tref>
do not require an <code>@id</code>.
<tref title="node definition">Node definitions</tref> that do not
- contain an <code>@id</code> are known as an <tref title="unlabeled node">unlabeled nodes</tref>.</p>
+ contain an <code>@id</code> are known as <tref title="unlabeled node">unlabeled nodes</tref>.</p>
</section>
@@ -841,8 +841,8 @@
<p><tdef title="IRI"><abbr title="Internationalized Resource Identifier">IRIs</abbr></tdef>
(Internationalized Resource Identifiers are fundamental to <tref>Linked Data</tref> as
- that is how most <tref title="node">nodes</tref>s and <tref title="property">properties</tref>
- are identified. <tref>IRI</tref>s can be expressed in a variety of different ways in JSON-LD:</p>
+ that is how most <tref title="node">nodes</tref> and <tref title="property">properties</tref>
+ are identified. <tref title="IRI">IRIs</tref> can be expressed in a variety of different ways in JSON-LD:</p>
<ol>
<li>Except within a <tref>context</tref> definition, <tref title="term">terms</tref> in the
@@ -856,12 +856,11 @@
are <tref>coercion</tref> rules in effect that identify the value as an <code>@id</code>.</li>
</ol>
-<p>IRIs may be represented as an <tref>absolute IRI</tref>, a <tref>relative IRI</tref>,
- a <tref>compact IRI</tref>, or a <tref>term</tref>.</p>
+<p>IRIs may be represented as an <tref>absolute IRI</tref> or a <tref>relative IRI</tref>.</p>
<p>An <tdef>absolute IRI</tdef> is defined in [[!RFC3987]] containing a <em>scheme</em> along with
<em>path</em> and optional <em>query</em> and <em>fragment</em> segments. A <tdef>relative IRI</tdef> is an IRI
- that is relative to some other <tref>absolute IRI</tref>. In JSON-LD all <tref>relative IRI</tref>s are resolved relative to the
+ that is relative to some other <tref>absolute IRI</tref>. In JSON-LD all <tref title="relative IRI">relative IRIs</tref> are resolved relative to the
<tdef>base IRI</tdef> 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>
@@ -901,7 +900,7 @@
-->
</pre>
-<p><tref>Term</tref>s are case sensitive, and MUST be matched using a case-sensitive comparison.</p>
+<p><tref title="term">Terms</tref> are case sensitive, and MUST be matched by a <tref>JSON-LD processor</tref> using a case-sensitive comparison.</p>
<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
@@ -909,7 +908,7 @@
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
+<p><tref title="prefix">Prefixes</tref> 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
<tref>active context</tref>:</p>
@@ -935,8 +934,7 @@
<p>It is often common that all types and properties come from the same vocabulary. JSON-LD's
<code>@vocab</code> keyword allows to set a common prefix to be used for all properties and types
that neither match a <tref>term</tref> nor a <tref>compact IRI</tref> or an <tref>absolute IRI</tref>
- (i.e., do not contain a colon). The <code>@vocab</code> mapping MUST have a value of a simple string with the
- lexical form of an absolute IRI.</p>
+ (i.e., do not contain a colon).</p>
<pre class="example" data-transform="updateExample"
title="Using a common vocabulary prefix">
@@ -969,7 +967,7 @@
<code>@id</code> key is used to identify that <tref>node</tref> using an
<tref>IRI</tref>. When the object has only the <code>@id</code>, it
is called a <tref>node reference</tref>.
- This facility MAY also be used to link to another
+ This facility may also be used to link to another
<tref>node definition</tref> using a mechanism called
<tref>embedding</tref>, which is covered in the section titled
<a href="#embedding"></a>.</p>
@@ -1009,7 +1007,7 @@
<h2>Node Identifiers</h2>
<p>To be able to externally reference nodes in a graph, it is important that each node has
- an unambiguous identifier. <tref>IRI</tref>s are a fundamental concept of
+ an unambiguous identifier. <tref title="IRI">IRIs</tref> are a fundamental concept of
<tref>Linked Data</tref>, 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
@@ -1051,8 +1049,7 @@
<tref>node definition</tref>. <tref title="node definition">Node definitions</tref>
do not require an <code>@id</code>. A <tref>node definition</tref>
that does not contain an <code>@id</code> property defines properties of an
- <tref>unlabeled node</tref>. <tref title="node definition">Node definitions</tref> MAY
- be spread among different parts of a document or even between different documents.</p>
+ <tref>unlabeled node</tref>.</p>
</section>
@@ -1060,8 +1057,8 @@
<h2>Specifying the Type</h2>
<p>The type of a particular node can be specified using the <code>@type</code>
- <tref>keyword</tref>. To be considered <tref>Linked Data</tref>, types MUST
- be uniquely identified by an <tref>IRI</tref>.</p>
+ <tref>keyword</tref>. In <tref>Linked Data</tref>, types are uniquely
+ identified with an <tref>IRI</tref>.</p>
<pre class="example" data-transform="updateExample"
title="Specifying the type for a node">
@@ -1118,11 +1115,10 @@
</pre>
<p>The example above would associate the <code>ja</code> language
- code with the two <tref>string</tref>s <em>花澄</em> and <em>科学者</em>.
- Languages MUST be well-formed language tags according to [[!BCP47]].</p>
-
-<p>It is possible to override the default language by using the expanded
-form of a value:</p>
+ code with the two <tref title="string">strings</tref> <em>花澄</em> and <em>科学者</em>.
+ Languages codes are defined in [[!BCP47]].</p>
+
+<p>It is possible to override the default language by using an <tref>expanded value</tref>:</p>
<pre class="example" data-transform="updateExample"
title="Expanded value with language">
@@ -1143,7 +1139,7 @@
<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>
+<code>null</code> when expressing the <tref>expanded value</tref>:</p>
<pre class="example" data-transform="updateExample"
title="Expanded value to remove language">
@@ -1165,10 +1161,10 @@
-->
</pre>
-<p>Please note that language associations MUST only be applied to plain
- literal <tref>string</tref>s. That is, <tref>typed value</tref>s
- or values that are subject to <a href="#type-coercion"></a>
- won't be language tagged.</p>
+<p>Please note that language associations can only be applied to plain
+ literal <tref title="string">strings</tref>. That is,
+ <tref title="typed value">typed values</tref> or values that are subject
+ to <a href="#type-coercion"></a> cannot 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 <tref>local context</tref> as follows:</p>
@@ -1193,7 +1189,7 @@
</pre>
<p class="note">JSON-LD allows one to associate language information with
- <tref>term</tref>s. See <a href="#expanded-term-definition"></a> for
+ <tref title="term">terms</tref>. See <a href="#expanded-term-definition"></a> for
more details.</p>
</section>
@@ -1201,16 +1197,16 @@
<section>
<h2>JSON-LD Syntax</h2>
- <p>A JSON-LD document is first, and foremost, a JSON document
+ <p>A <tref>JSON-LD document</tref> is first, and foremost, a JSON document
(as defined in [[!RFC4627]]), and any syntactically correct JSON document
- MUST be processed by a conforming JSON-LD processor. However, JSON-LD
+ MUST be processed by a conforming <tref>JSON-LD processor</tref>. However, JSON-LD
describes a specific syntax to use for expressing Linked Data. This
includes the use of specific keywords, as identified in <a
href="#syntax-tokens-and-keywords"></a> for
expressing <a title="node definition">node definitions</a>, values,
and the <a>context</a>. See <a
href="#json-ld-grammar"></a> for authoring
- guidelines and a BNF description of JSON-LD.</p>
+ guidelines.</p>
</section>
</section>
@@ -1228,14 +1224,14 @@
<section>
<h2>Compact IRIs</h2>
<p>
- <tref>Term</tref>s in <tref>Linked Data</tref> documents may draw from
+ <tref title="term">Terms</tref> in <tref>Linked Data</tref> documents may draw from
a number of different <tref title="vocabulary">vocabularies</tref>.
At times, declaring every single <tref>term</tref> that a document uses can require the
developer to declare tens, if not hundreds of potential
- <tref>vocabulary</tref> <tref>term</tref>s that are used across an
+ <tref>vocabulary</tref> <tref title="term">terms</tref> 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
- <tref>term</tref>s, and the second is the serialized size of the
+ <tref title="term">terms</tref>, and the second is the serialized size of the
<tref>context</tref> if it is specified inline. In order to address these issues,
the concept of a <tref>compact IRI</tref> is introduced.</p>
<p>
@@ -1255,7 +1251,7 @@
Instead of having to remember and type out the entire IRI, the developer
can instead use the prefix in their JSON-LD markup.
</p>
- <p>Terms are interpreted as <tref>compact IRI</tref>s if they contain at least one
+ <p>Terms are interpreted as <tref title="compact IRI">compact IRIs</tref> 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 <tref>IRI</tref>,
the value is first split into a <em>prefix</em> and <em>suffix</em> at the first
@@ -1564,7 +1560,7 @@
<p>
In order to use an external context with an ordinary JSON document, an author
-MUST specify an <tref>IRI</tref> to a valid JSON-LD document in an HTTP Link
+MUST specify an <tref>IRI</tref> to a valid <tref>JSON-LD document</tref> in an HTTP Link
Header [[!RFC5988]] using the <code>describedby</code> link relation.
The referenced document MUST have a top-level <tref>node definition</tref>. The
@@ -1601,7 +1597,8 @@
-->
</pre>
-<p>Please note that JSON-LD documents served with the <code>application/ld+json</code>
+<p>Please note that <tref title="JSON-LD document">JSON-LD documents</tref>
+ served with the <code>application/ld+json</code>
media type MUST have all context information, including references to external
contexts, within the body of the document. Contexts linked via a
<code>describedby</code> HTTP Link Header MUST be ignored for such documents.</p>
@@ -1610,16 +1607,16 @@
<section>
<h3>Expanded Term Definition</h3>
-<p>Within a <tref>context</tref> definition, <tref>term</tref>s MAY be
- defined using an expanded notation to allow for additional information
+<p>Within a <tref>context</tref> definition, <tref title="term">terms</tref> may be
+ defined using an <tref>expanded term definition</tref> to allow for additional information
associated with the <tref>term</tref> to be specified (see also
<a href="#type-coercion"></a> and
<a href="#sets-and-lists"></a>).</p>
-<p>Instead of using a string representation of an IRI, the IRI MAY be
-specified using a <tref>JSON object</tref> having an <code>@id</code> key.
-The value of the <code>@id</code> key MUST be either a <tref>term</tref>, a
-<tref>compact IRI</tref>, or an <tref>absolute IRI</tref>. Such
+<p>Instead of using a string representation of an IRI, the IRI may be
+specified using a <tref>JSON object</tref> having an <code>@id</code> key,
+and a <tref>term</tref>, a <tref>compact IRI</tref>, or an
+<tref>absolute IRI</tref> as value. Such
an object is called a <tref>node reference</tref>.</p>
<pre class="example" data-transform="updateExample"
@@ -1641,8 +1638,8 @@
</pre>
<p>This allows additional information to be associated with the term. This
- MAY be used for <a href="#type-coercion"></a>,
- <a href="#sets-and-lists"></a>), or to associate language
+ may be used for <a href="#type-coercion"></a>,
+ <a href="#sets-and-lists"></a>, or to associate language
information with a <tref>term</tref> as shown in the following example:</p>
<pre class="example" data-transform="updateExample"
@@ -1672,12 +1669,12 @@
<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
- <tref>null</tref> in the expanded term definition.</p>
-
-<p>Expanded terms MAY also be defined using <tref title="compact_iri">compact IRIs</tref> or
+ <tref>null</tref> in the <tref>expanded term definition</tref>.</p>
+
+<p>Expanded terms may also be defined using <tref title="compact_iri">compact IRIs</tref> or
<tref title="absolute_IRI">absolute IRIs</tref> as keys. If the definition does not include an
<code>@id</code> key, the expanded IRI is determined by performing expansion of the key
- within the current active context. This mechanism is mainly used to associate type or language
+ within the current <tref>active context</tref>. 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
@@ -1692,24 +1689,24 @@
<p>JSON-LD supports the coercion of values to particular data types.
Type <tdef>coercion</tdef> allows someone deploying JSON-LD to coerce the incoming or
-outgoing values to the proper data type based on a mapping of data type <tref>IRI</tref>s to
-<tref>term</tref>s. Using type coercion, value representation is preserved without requiring
+outgoing values to the proper data type based on a mapping of data type <tref title="IRI">IRIs</tref> to
+<tref title="term">terms</tref>. 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"></a>
- using the <code>@type</code> key. The value of this key represents a type IRI and MUST take the form of
- a <tref>term</tref>, <tref>compact IRI</tref>, <tref>absolute IRI</tref>, or the <tref>keyword</tref> <code>@id</code>. Specifying
- <code>@id</code> indicates that within the body of a JSON-LD document, a string value of a <tref>term</tref> coerced to
+ using the <code>@type</code> key. The value of this key expands to an <tref>IRI</tref>.
+ Alternatively, the <tref>keyword</tref> <code>@id</code> may be used as value to indicate
+ that within the body of a JSON-LD document, a string value of a <tref>term</tref> coerced to
<code>@id</code> is to be interpreted as an <tref>IRI</tref>.</p>
<p><tref title="term">Terms</tref> or <tref title="compact_iri">compact IRIs</tref> used as the value of a
- <code>@type</code> key MAY be defined within the same context. This means that one may specify a
+ <code>@type</code> key may be defined within the same context. This means that one may specify a
<tref>term</tref> 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
-<tref>typed value</tref>s, IRIs and lists.</p>
+<tref title="typed value">typed values</tref>, IRIs and lists.</p>
<pre class="example" data-transform="updateExample"
title="Expanded term definition with types">
@@ -1824,9 +1821,8 @@
<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 MUST have an exact match for an entry in the
- <tref>active context</tref>.</p>
+<p>Type coercion is performed using the unexpanded value of the key, which has to match exactly
+ an entry in the <tref>active context</tref>.</p>
</section>
@@ -1904,7 +1900,7 @@
<p>In general, normal IRI expansion rules apply
anywhere an IRI is expected (see <a href="#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
+ within the context may also be used within that context as long as
there are no circular dependencies. For example, it is common to use
the <code>xsd</code> namespace when defining <tref>typed value</tref>s:</p>
<pre class="example" data-transform="updateExample"
@@ -1934,7 +1930,7 @@
and used as a <tref>prefix</tref> for the <code>@type</code> coercion
of the <code>age</code> property.</p>
-<p><tref>Term</tref>s MAY also be used when defining the IRI of another
+<p><tref title="term">Terms</tref> may also be used when defining the IRI of another
<tref>term</tref>:</p>
<pre class="example" data-transform="updateExample">
@@ -1962,7 +1958,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">
@@ -2001,7 +1997,7 @@
</p>
<p>
-<tref title="absolute iri">Absolute IRIs</tref> MAY also be used in the key position in a <tref>context</tref>:
+<tref title="absolute iri">Absolute IRIs</tref> may also be used in the key position in a <tref>context</tref>:
</p>
<pre class="example" data-transform="updateExample">
@@ -2028,19 +2024,18 @@
</pre>
<p>
-In order for the <tref>absolute IRI</tref> to match above, the <tref>absolute IRI</tref> MUST also
-be used in the JSON-LD document. Also note that <code>foaf:homepage</code>
+In order for the <tref>absolute IRI</tref> to match above, the <tref>absolute IRI</tref> needs to be used in the <tref>JSON-LD document</tref>. 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
-<tref>term</tref>s in a <tref>context</tref> before it applies the
+<code>http://xmlns.com/foaf/0.1/homepage</code>. That is, a <tref>JSON-LD
+processor</tref> will use direct string comparison when looking up
+<tref title="term">terms</tref> in a <tref>context</tref> before it applies the
<tref>prefix</tref> lookup mechanism.
</p>
<p>The only exception for using terms in the <tref>context</tref> is that
- they MUST NOT be used in a circular manner. That is,
- a definition of <em>term-1</em> MUST NOT depend on the
+ circular definitions are not allowed. That is,
+ a definition of <em>term-1</em> cannot 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 <tref>context</tref> definition
is illegal:</p>
@@ -2062,7 +2057,7 @@
<h2>Sets and Lists</h2>
<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
+ <tref title="array">arrays</tref>. Since graphs do not describe ordering for links
between nodes, arrays in JSON-LD do not provide an ordering of the
contained elements by default. This is exactly the opposite from regular JSON
arrays, which are ordered by default. For example, consider the following
@@ -2201,7 +2196,7 @@
<p>Similarly to <code>@list</code>, there exists the <tref>keyword</tref> <code>@set</code> to
describe unordered sets. While its use in the body of a JSON-LD document
- represents just syntactic sugar that MUST be optimized away when processing
+ represents just syntactic sugar 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 <tref>array</tref> - even if there is just a
@@ -2222,7 +2217,7 @@
<p><tdef>Embedding</tdef> is a JSON-LD feature that allows an author to
use <tref title="node definition">node definitions</tref> as
<tref>property</tref> values. This is a commonly used mechanism for
- creating a parent-child relationship between two <tref>node</tref>s.</p>
+ creating a parent-child relationship between two <tref title="node">nodes</tref>.</p>
<p>The example shows two nodes related by a property from the first node:</p>
@@ -2242,7 +2237,7 @@
</pre>
<p>
- A <tref>node definition</tref>, like the one used above, MAY be used in
+ A <tref>node definition</tref>, like the one used above, may be used in
any value position in the body of a JSON-LD document.</p>
</section>
@@ -2252,7 +2247,7 @@
<p>At times, it is necessary to make statements about a <tref>JSON-LD graph</tref>
itself, rather than just a single <tref>node</tref>. This can be done by
grouping a set of <tref title="node">nodes</tref> using the <code>@graph</code>
- <tref>keyword</tref>. A developer MAY also name data expressed using the
+ <tref>keyword</tref>. A developer may also name data expressed using the
<code>@graph</code> <tref>keyword</tref> by pairing it with an
<code>@id</code> <tref>keyword</tref> as shown in the following example:</p>
@@ -2456,7 +2451,7 @@
<h2>Aliasing Keywords</h2>
<p>Each of the JSON-LD <tref title="keyword">keywords</tref>,
-except for <code>@context</code>, MAY be aliased to application-specific
+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
@@ -2643,8 +2638,7 @@
<p>A <tref>JSON-LD document</tref> MUST be a single <tref>node definition</tref>
or a JSON <tref>array</tref> containing a set of one or more
- <tref title="node definition">node definitions</tref>.
- (@@@ plus @graph exception to the rule?)</p>
+ <tref title="node definition">node definitions</tref>.</p>
<pre class="example" data-transform="updateExample"
title="Simple node definition">
<!--
@@ -3057,13 +3051,16 @@
<p>If the <tref>expanded term definition</tref> contains the <code>@id</code> <tref>keyword</tref>,
its value MUST be an <tref>IRI</tref>, a <tref>compact IRI</tref>, a <tref>term</tref> defined in the defining <tref>context definition</tref> or the <tref>active context</tref>, or an <tref>array</tref> composed of any of the previous allowed values.</p>
<p>If the <tref>expanded term definition</tref> contains the <code>@type</code> <tref>keyword</tref>,
- its value MUST be an <tref>absolute IRI</tref>, a <tref>compact IRI</tref>, or a <tref>term</tref> defined in the defining <tref>context definition</tref> or the <tref>active context</tref>.</p>
+ its value MUST be an <tref>absolute IRI</tref>, a <tref>compact IRI</tref>, a <tref>term</tref> defined in the defining <tref>context definition</tref> or the <tref>active context</tref>, or the <code>@id</code> <tref>keyword</tref>.</p>
<p>If the <tref>expanded term definition</tref> contains the <code>@language</code> <tref>keyword</tref>,
its value MUST have the lexical form described in [[!BCP47]] or be <tref>null</tref>.</p>
<p>If the <tref>expanded term definition</tref> contains the <code>@container</code> <tref>keyword</tref>,
its value MUST be either <code>@list</code>, <code>@set</code>, <code>@language</code>, or be <tref>null</tref>.
If the value is <code>@language</code>, when the <tref>term</tref> is used outside of the <code>@context</code>, the
associated value MUST be a <tref>language map</tref>.</p>
+
+<p><tref title="term">Terms</tref> MUST NOT be used in a circular manner. That is, the definition of a term cannot depend on the definition of another term if that other term also depends on the first term.</p>
+
<p>See <a href="#the-context"></a> and <a href="#expanded-term-definition"></a>
for further discussion of contexts.</p>
</section>