--- a/spec/latest/json-ld-api/alternate.html Tue Jan 15 17:39:01 2013 +0100
+++ b/spec/latest/json-ld-api/alternate.html Tue Jan 15 18:10:35 2013 +0100
@@ -239,7 +239,7 @@
-->
</pre>
- <p>The next input example uses one <tref>URL</tref> to express a property, but leaves
+ <p>The next input example uses one <tref>IRI</tref> to express a property, but leaves
the rest of the information untouched.</p>
<pre class="example" data-transform="updateExample">
@@ -263,7 +263,7 @@
context could change as well. To ensure that the data can be given a more
uniform structure, JSON-LD introduces the notion of expansion. <tdef>Expansion</tdef>
performs two important operations. The first is to expand all values that represent
- <tref title="URL">URLs</tref> to <tref title="absolute URL">absolute URLs</tref>.
+ <tref title="IRI">IRIs</tref> to <tref title="absolute IRI">absolute IRIs</tref>.
The second is to express all values in <tref>expanded form</tref>. Running the
<a href="#expansion-algorithm">Expansion algorithm</a> against the examples provided
above results in the following output:</p>
@@ -286,7 +286,7 @@
<p>Note that in the output above all <tref>context</tref> definitions have
been removed, all <tref title="term">terms</tref> and <tref title="prefix">prefixes</tref>
- have been expanded to absolute <tref title="URL">URLs</tref>, and all
+ have been expanded to absolute <tref title="IRI">IRIs</tref>, and all
<tref title="JSON-LD value">JSON-LD values</tref> are expressed in <tref>expanded form</tref>.
While the output is more difficult for a human to read, it is easier for a
software program to process because of its very regular structure.</p>
@@ -299,8 +299,8 @@
to expansion which is meant to produce something that is easy to process by software
programs, compaction is meant to produce something that is easy to read by software
developers. Compaction uses a developer-supplied <tref>context</tref> to compress
- <tref title="URL">URLs</tref> to <tref title="term">terms</tref> or
- <tref title="compact URL">compact URLs</tref> and <tref title="JSON-LD value">JSON-LD values</tref>
+ <tref title="IRI">IRIs</tref> to <tref title="term">terms</tref> or
+ <tref title="compact IRI">compact IRIs</tref> and <tref title="JSON-LD value">JSON-LD values</tref>
expressed in <tref>expanded form</tref> to simple values such as
<tref title="string">strings</tref> and <tref title="number">numbers</tref>.</p>
@@ -359,7 +359,7 @@
-->
</pre>
- <p>Note that all <tref title="URL">URLs</tref> have been compacted to
+ <p>Note that all <tref title="IRI">IRIs</tref> have been compacted to
<tref title="term">terms</tref> as specified in the <tref>context</tref>
which consequently has been injected into the output. While compacted
output is most useful to humans, it can often also be used to generate
@@ -565,10 +565,8 @@
<p>This specification does not define how JSON-LD Implementations or Processors handle
non-conforming input documents. This implies that JSON-LD Implementations or Processors
- MUST NOT attempt to correct malformed <tref title="URL">URLs</tref> or language tags;
- however, they MAY issue validation warnings. URLs are not modified other than converted
- between <tref title="relative URL">relative</tref> and
- <tref title="absolute URL">absolute URLs</tref>.</p>
+ MUST NOT attempt to correct malformed IRIs or language tags; however, they MAY issue
+ validation warnings.</p>
<p class="note">Implementers can partially check their level of conformance to
this specification by successfully passing the test cases of the JSON-LD test
@@ -612,7 +610,7 @@
<dd>The <tref>null</tref> value. A key-value pair in the
<code>@context</code> where the value, or the <code>@id</code> of the
value, is <tref>null</tref> explicitly decouples a term's association
- with an URL. A key-value pair in the body of a JSON-LD document whose
+ with an IRI. A key-value pair in the body of a JSON-LD document whose
value is <tref>null</tref> has the same meaning as if the key-value pair
was not defined. If <code>@value</code>, <code>@list</code>, or
<code>@set</code> is set to <tref>null</tref> in expanded form, then
@@ -633,7 +631,7 @@
<tref title="JSON-LD graph">JSON-LD graphs</tref> and comprises exactly one
<tref>default graph</tref> and zero or more <tref title="named graph">named graphs</tref>.</dd>
<dt><tdef>named graph</tdef></dt>
- <dd>A named graph is a pair consisting of an <tref>URL</tref> or <tref>blank node</tref>
+ <dd>A named graph is a pair consisting of an <tref>IRI</tref> or <tref>blank node</tref>
(the <tdef>graph name</tdef>) and a <tref>JSON-LD graph</tref>.</dd>
<dt><tdef>default graph</tdef></dt>
<dd>The default graph is the only graph in a JSON-LD document which has no <tref>graph name</tref>.</dd>
@@ -643,21 +641,21 @@
specification [[!JSON-LD]].</dd>
<dt><tdef>edge</tdef></dt>
<dd>Every <tref>edge</tref> has a direction associated with it and is labeled with
- an <tref>URL</tref> or a <tref>blank node identifier</tref>. Within the JSON-LD syntax
+ an <tref>IRI</tref> or a <tref>blank node identifier</tref>. Within the JSON-LD syntax
these edge labels are called <tdef title="property">properties</tdef>. Whenever possible, an
- <tref>edge</tref> SHOULD be labeled with an <tref>URL</tref>.</dd>
+ <tref>edge</tref> SHOULD be labeled with an <tref>IRI</tref>.</dd>
<dt><tdef>node</tdef></dt>
- <dd>Every <tref>node</tref> is an <tref>URL</tref>, a <tref>blank node</tref>,
+ <dd>Every <tref>node</tref> is an <tref>IRI</tref>, a <tref>blank node</tref>,
a <tref>JSON-LD value</tref>, or a <tref>list</tref>.</dd>
- <dt><tdef>URL</tdef></dt>
- <dd>Throughout this specification, the term <tref>URL</tref> means
- <abbr title="Internationalized Resource Identifier">IRI</abbr> as defined in [[!RFC3987]]. The reason we
- use the term <tref>URL</tref> instead is because it is more familiar to Web developers.</dd>
- <dt><tdef>absolute URL</tdef></dt>
- <dd>An absolute URL is an absolute IRI reference as defined in [[!RFC3987]].</dd>
- <dt><tdef>relative URL</tdef></dt>
- <dd>A relative URL is a relative IRI reference as defined in [[!RFC3987]]. In the case of
- of JSON-LD the base URL is the location of the document.</dd>
+ <dt><tdef><abbr title="Internationalized Resource Identifier">IRI</abbr></tdef></dt>
+ <dd>An <tref>IRI</tref> (Internationalized Resource Identifier) is a string that conforms to the syntax
+ defined in [[RFC3987]].</dd>
+ <dt><tdef>absolute IRI</tdef></dt>
+ <dd>An absolute IRI is defined in [[!RFC3987]] containing a <em>scheme</em> along with a <em>path</em> and
+ optional <em>query</em> and fragment segments.</dd>
+ <dt><tdef>relative IRI</tdef></dt>
+ <dd>A relative IRI is an IRI that is relative some other <tref>absolute IRI</tref>;
+ in the case of JSON-LD this is the base location of the document.</dd>
<dt><tdef>blank node</tdef></dt>
<dd>A <tref>node</tref> in a <tref>JSON-LD graph</tref> that does not contain a de-referenceable
identifier because it is either ephemeral in nature or does not contain information that needs to be
@@ -670,14 +668,14 @@
<tref>true</tref> or <tref>false</tref>, a <tref>typed value</tref>, or a
<tref>language-tagged string</tref>.</dd>
<dt><tdef>typed value</tdef></dt>
- <dd>A <tref>typed value</tref> consists of a value, which is a string, and a type, which is an <tref>URL</tref>.</dd>
+ <dd>A <tref>typed value</tref> consists of a value, which is a string, and a type, which is an <tref>IRI</tref>.</dd>
<dt><tdef>language-tagged string</tdef></dt>
<dd>A <tref>language-tagged string</tref> consists of a string and a non-empty language
tag as defined by [[BCP47]]. The language tag must be well-formed according to section
<a href="http://tools.ietf.org/html/bcp47#section-2.2.9">2.2.9</a> of [[BCP47]], and MUST
be normalized to lowercase.</dd>
<dt><tdef>list</tdef></dt>
- <dd>A <tref>list</tref> is an ordered sequence of <tref title="URL">URLs</tref>,
+ <dd>A <tref>list</tref> is an ordered sequence of <tref title="IRI">IRIs</tref>,
<tref title="blank node">blank nodes</tref>, and
<tref title="JSON-LD value">JSON-LD values</tref>.</dd>
</dl>
@@ -726,11 +724,11 @@
<dt><tdef>JSON-LD output</tdef></dt>
<dd>The JSON-LD data structure that is produced as output by the algorithm.</dd>
<dt><tdef>term</tdef></dt>
- <dd>A <tref>term</tref> is a short word defined in a context that MAY be expanded to an <tref>URL</tref></dd>
- <dt><tdef>compact URL</tdef></dt>
- <dd>A compact URL is has the form of <tdef>prefix</tdef>:<em>suffix</em> and is used as a way
- of expressing an URL without needing to define separate <tref>term</tref> definitions for
- each URL contained within a common vocabulary identified by <tref>prefix</tref>.</dd>
+ <dd>A <tref>term</tref> is a short word defined in a context that MAY be expanded to an <tref>IRI</tref></dd>
+ <dt><tdef>compact IRI</tdef></dt>
+ <dd>A compact IRI is has the form of <tdef>prefix</tdef>:<em>suffix</em> and is used as a way
+ of expressing an IRI without needing to define separate <tref>term</tref> definitions for
+ each IRI contained within a common vocabulary identified by <tref>prefix</tref>.</dd>
<dt><tdef>node object</tdef></dt>
<dd>A <tref>node object</tref> represents zero or more properties of a
<tref>node</tref> in the <tref>JSON-LD graph</tref> serialized by the
@@ -801,13 +799,13 @@
ordered by <em>property</em> as follows:
<ol class="algorithm">
<li>Expand
- <em>property</em> according to the steps outlined in <a href="#url-expansion">URL Expansion</a> relative
+ <em>property</em> according to the steps outlined in <a href="#iri-expansion">IRI Expansion</a> relative
to the <tref>vocabulary mapping</tref> from the <tref>active context</tref>
and re-labeling <tref title="blank node">Blank Nodes</tref>.
Set the <tref>active property</tref> to the original un-expanded <em>property</em> if
<em>property</em> is not a <tref>keyword</tref>.</li>
<li>If <em>expanded property</em> is an <tref>array</tref>, remove every element which is not a
- <tref>absolute URL</tref>.</li>
+ <tref>absolute IRI</tref>.</li>
<li>If <em>expanded property</em> is an empty array, or <code>null</code>,
continue with the next property from <em>element</em>.</li>
<li>If <em>expanded property</em> is a <tref>keyword</tref>, process it as
@@ -816,12 +814,12 @@
<li>If <em>expanded property</em> is <code>@id</code>, <em>value</em> MUST be a <tref>string</tref>.
Set the <code>@id</code>
member in <em>result</em> to the result of expanding <em>value</em>
- according the <a href="#url-expansion">URL Expansion algorithm</a> relative to the
+ according the <a href="#iri-expansion">IRI Expansion algorithm</a> relative to the
<em>document base</em> and re-labeling <tref title="blank node">Blank Nodes</tref>.</li>
<li>If <em>expanded property</em> is <code>@type</code>, <em>value</em> MUST be a <tref>string</tref>
or <tref>array</tref> of <tref title="string">strings</tref>. Set the <code>@type</code>
member of <em>result</em> to the result of expanding <em>value</em>
- according the <a href="#url-expansion">URL Expansion algorithm</a> relative to the <em>document base</em>
+ according the <a href="#iri-expansion">IRI Expansion algorithm</a> relative to the <em>document base</em>
and re-labeling <tref title="blank node">Blank Nodes</tref>, unless that result
is an empty <tref>array</tref>.</li>
<li>If <em>expanded property</em> is <code>@value</code>, <em>value</em> MUST be a <tref>scalar</tref>
@@ -891,8 +889,8 @@
<li>Label all <tref title="blank node">blank nodes</tref> in <em>value</em> with
<tref title="blank node identifier">blank node identifiers</tref> by using the
<a href="#label-blank-nodes-algorithm">Label Blank Nodes Algorithm</a>.</li>
- <li>Then, for each <em>url</em> of <em>expanded property</em> merge a copy
- of <em>value</em> into the <em>url</em> member of the <em>result</em>
+ <li>Then, for each <em>iri</em> of <em>expanded property</em> merge a copy
+ of <em>value</em> into the <em>iri</em> member of the <em>result</em>
<tref>JSON object</tref> as an <tref>array</tref> member.</li>
</ol>
</li>
@@ -942,9 +940,9 @@
<p>The <tref>active context</tref> contains the active <tdef title="term definition">term definitions</tdef>
which specify how properties and values are interpreted as well as the current
<tdef>vocabulary mapping</tdef> and the <tdef>default language</tdef>. Each <tref>term definition</tref> consists
- of an <tdef>URL mapping</tdef> and optionally a <tdef>type mapping</tdef> from terms to datatypes or
+ of an <tdef>IRI mapping</tdef> and optionally a <tdef>type mapping</tdef> from terms to datatypes or
<tdef>language mapping</tdef> from terms to language codes, and a <tdef>container mapping</tdef>. If an
- <tref>URL mapping</tref> maps a term to multiple <tref title="URL">URLs</tref> it is said to be a
+ <tref>IRI mapping</tref> maps a term to multiple <tref title="IRI">IRIs</tref> it is said to be a
<tdef>property generator</tdef>.</p>
<p>A <tref>local context</tref> is identified within a <tref>JSON object</tref> having a <code>@context</code>
@@ -957,9 +955,9 @@
<li id="process-context">If <em>context</em> equals <tref>null</tref>, clear <tref>local context</tref>.</li>
<li>If <em>context</em> is an <tref>array</tref>, process each element as <em>context</em> in order
recursively using this algorithm along with <tref>local context</tref> as the <tref>active context</tref>.</li>
- <li>If <em>context</em> is a <tref>string</tref>, it MUST have a lexical form of <tref>URL</tref>.
+ <li>If <em>context</em> is a <tref>string</tref>, it MUST have a lexical form of <tref>IRI</tref>.
<ol class="algorithm">
- <li>Expand <em>context</em> according to <a href="#url-expansion">URL Expansion</a>
+ <li>Expand <em>context</em> according to <a href="#iri-expansion">IRI Expansion</a>
relative to the enclosing document.
Processors MUST NOT process a previously processed <em>context</em>.</li>
<li>The resulting dereferencing <em>context</em> MUST be a JSON document; process the resulting
@@ -972,7 +970,7 @@
<li>If the <tref>local context</tref> does not have a <tref>vocabulary mapping</tref>, initialize
it to the <em>document base</em>.</li>
<li>If <em>context</em> has a <code>@vocab</code> member, it MUST have a value of a
- simple <tref>string</tref> with the lexical form of <tref>absolute URL</tref>,
+ simple <tref>string</tref> with the lexical form of <tref>absolute IRI</tref>,
<tref>Blank Node identifier</tref>, or <tref>null</tref>.
Set the <tref title="active context">local context's</tref>
<tref>vocabulary mapping</tref> to this value.</li>
@@ -987,13 +985,13 @@
<li>If <em>key</em> is a JSON-LD <tref>keyword</tref>, continue with the next
<em>key</em>-<em>value</em> pair.</li>
<li>If <em>value</em> is <tref>null</tref>, replace the <tref>term definition</tref>
- for <em>key</em> in the <tref>local context</tref> with an <tref>URL mapping</tref>
+ for <em>key</em> in the <tref>local context</tref> with an <tref>IRI mapping</tref>
set to <tref>null</tref> and continue with the next <em>key</em>-<em>value</em> pair.</li>
<li>If <em>value</em> is a <tref>string</tref>, expand it according to the
- <a href="#url-expansion">URL Expansion algorithm</a>
+ <a href="#iri-expansion">IRI Expansion algorithm</a>
relative to the <tref>vocabulary mapping</tref> and replace the
<tref>term definition</tref> for <em>key</em> in the <tref>local context</tref> with
- an <tref>URL mapping</tref> set to the expanded <em>value</em>. Continue with
+ an <tref>IRI mapping</tref> set to the expanded <em>value</em>. Continue with
the next <em>key</em>-<em>value</em> pair.</li>
<li>Otherwise, <em>value</em> MUST be a <tref>JSON object</tref>.
Set <tref>term definition</tref> for <em>key</em> to a new, empty <tref>term definition</tref> <em>definition</em>.</li>
@@ -1003,27 +1001,27 @@
MUST be a <tref>string</tref>:
<ol class="algorithm">
<li>Expand each <em>item</em> in the array according the
- <a href="#url-expansion">URL Expansion algorithm</a> relative to the <tref>vocabulary mapping</tref>.</li>
- <li>Lexicographically sort <em>val</em> and set the <tref>URL mapping</tref>
+ <a href="#iri-expansion">IRI Expansion algorithm</a> relative to the <tref>vocabulary mapping</tref>.</li>
+ <li>Lexicographically sort <em>val</em> and set the <tref>IRI mapping</tref>
of <em>definition</em> to expanded <em>val</em>.</li>
</ol>
</li>
<li>Otherwise, set the
- <tref>URL mapping</tref> of <em>definition</em> to the result of expanding <em>val</em> according the
- <a href="#url-expansion">URL Expansion algorithm</a> relative to the <tref>vocabulary mapping</tref>.</li>
+ <tref>IRI mapping</tref> of <em>definition</em> to the result of expanding <em>val</em> according the
+ <a href="#iri-expansion">IRI Expansion algorithm</a> relative to the <tref>vocabulary mapping</tref>.</li>
</ol>
</li>
- <li>Otherwise, set the <tref>URL mapping</tref> of <em>definition</em> to the result of
- expanding <em>key</em> according the <a href="#url-expansion">URL Expansion algorithm</a>
+ <li>Otherwise, set the <tref>IRI mapping</tref> of <em>definition</em> to the result of
+ expanding <em>key</em> according the <a href="#iri-expansion">IRI Expansion algorithm</a>
relative to the <tref>vocabulary mapping</tref>.</li>
- <li>If the <tref>URL mapping</tref> of <em>definition</em> is <tref>null</tref> or a
+ <li>If the <tref>IRI mapping</tref> of <em>definition</em> is <tref>null</tref> or a
<tref>keyword</tref>, store <em>definition</em> as the <tref>term definition</tref>
for <em>key</em> in the <tref>local context</tref> and continue with the next
<em>key</em>-<em>value</em> pair from <em>context</em>.</li>
<li>If <em>value</em> has an <code>@type</code> member with a value <em>val</em>,
set the <tref>type mapping</tref> of <em>definition</em> the
result of expanding <em>val</em> using the <a
- href="#url-expansion">URL Expansion algorithm</a> relative to
+ href="#iri-expansion">IRI Expansion algorithm</a> relative to
the <tref>vocabulary mapping</tref>.</li>
<li>Otherwise, if <em>value</em> has an <code>@language</code> member with a value <em>val</em>,
<em>val</em> MUST be a <tref>string</tref> having the lexical representation defined in [[!BCP47]]
@@ -1043,23 +1041,23 @@
</section>
<section id="iri-expansion">
- <h2>URL Expansion Algorithm</h2>
- <p>Keys and some values are evaluated to produce an <tref>URL</tref>. This section defines an algorithm for
- transforming a value representing an URL into an <tref>absolute URL</tref>. If <tref>URL</tref> expansion
+ <h2>IRI Expansion Algorithm</h2>
+ <p>Keys and some values are evaluated to produce an <tref>IRI</tref>. This section defines an algorithm for
+ transforming a value representing an IRI into an <tref>absolute IRI</tref>. If <tref>IRI</tref> expansion
occurs during context processing, the <tref>local context</tref> that is being processed
is passed to this algorithm. After application of this algorithm, values processed by this
- algorithm are said to be in <tdef>expanded URL form</tdef>, although this may also include
+ algorithm are said to be in <tdef>expanded IRI form</tdef>, although this may also include
named <tref title="blank node">blank nodes</tref>.</p>
<p>The algorithm is passed a <em>value</em> and an <tref>active context</tref> and may be used
to expand values relative to a <em>document base</em> or a <tref>vocabulary mapping</tref>. It
may also re-label <tref title="blank node identifier">Blank Node identifiers</tref>.</p>
- <p>The algorithm for generating an URL is:</p>
+ <p>The algorithm for generating an IRI is:</p>
<ol class="algorithm">
<li>If the <tref>active context</tref> contains a <tref>term definition</tref> for the <em>value</em>
- that is not a <tref>property generator</tref>, set <em>value</em> to the <tref>URL mapping</tref>.</li>
+ that is not a <tref>property generator</tref>, set <em>value</em> to the <tref>IRI mapping</tref>.</li>
<li>If <em>value</em> contains a <code>:</code>:
<ol class="algorithm">
<li>Split the value into a <em>prefix</em> and <em>suffix</em> from the first occurrence of ':'.</li>
@@ -1078,10 +1076,10 @@
<li>Otherwise, if performing expansion relative to a <tref>vocabulary mapping</tref>, return the result
of appending <em>value</em> to this mapping using textual concatenation.</li>
<li>Otherwise, if performing expansion relative to a <em>document base</em>, return the result of resolving <em>value</em>
- against the <em>document base</em> as per [[!RFC3986]] and return the resulting <tref>URL</tref>. Only the basic
+ against the <em>document base</em> as per [[!RFC3986]] and return the resulting <tref>IRI</tref>. Only the basic
algorithm in section 5.2 of [[!RFC3986]] is used; neither <em>Syntax-Based Normalization</em>
nor <em>Scheme-Based Normalization</em> (as described in sections 6.2.2 and 6.2.3 of [[!RFC3986]])
- are performed. Characters additionally allowed in URL references are treated in the same way that
+ are performed. Characters additionally allowed in IRI references are treated in the same way that
unreserved characters are treated in URI references, per section 6.5 of [[!RFC3987]]</li>
<li>Otherwise, return <em>value</em> as is.</li>
</ol>
@@ -1105,13 +1103,13 @@
<tref title="active property">active property's</tref> <tref>type mapping</tref> is set to
<code>@id</code>, add a key-value pair to <em>result</em> where the key is <code>@id</code>
and the value is the result of expanding <em>value</em> according to the
- <a href="#url-expansion">URL Expansion algorithm</a> passing <code>true</code> for the
+ <a href="#iri-expansion">IRI Expansion algorithm</a> passing <code>true</code> for the
<em>documentRelative</em> flag. Then return <em>result</em>.</li>
<li>Add a key-value pair to <em>result</em> where the key is <code>@value</code>
and the value is <em>value</em>.</li>
<li>If the <tref>active property</tref> has a <tref>type mapping</tref>, add a key-value
pair to <em>result</em> where the key is <code>@type</code> and the value is the
- <tref>URL</tref> associated with the <tref>type mapping</tref> or a newly
+ <tref>IRI</tref> associated with the <tref>type mapping</tref> or a newly
<a href="#generate-blank-node-identifier">generated blank node identifier</a> if the
<tref>type mapping</tref> is set to a <tref>blank node identifier</tref>.</li>
<li>Otherwise, if <em>value</em> is a <tref>string</tref> and the <tref>active property</tref> has a
@@ -1210,11 +1208,11 @@
<li>If <tref>active property</tref> has a <tref>container mapping</tref> of <code>@list</code>, return
that <tref>array</tref>.</li>
<li>Create a new <tref>JSON object</tref> <em>list</em> with a key being the result of performing
- <a href="#iri-compaction">URL Compaction</a> on <code>@list</code> and the <tref>array</tref> from above as
+ <a href="#iri-compaction">IRI Compaction</a> on <code>@list</code> and the <tref>array</tref> from above as
the value.</li>
<li>If <em>element</em> has a <code>@annotation</code> property add a key/value pair to <em>list</em> composed
of the result of performing
- <a href="#iri-compaction">URL Compaction</a> on <code>@annotation</code> and the value of the <code>@annotation</code>
+ <a href="#iri-compaction">IRI Compaction</a> on <code>@annotation</code> and the value of the <code>@annotation</code>
property in <em>element</em>.</li>
<li>Return <em>list</em>.</li>
</ol>
@@ -1224,26 +1222,26 @@
<li>For each <tref>property generator</tref> <em>term</em> in the <tref>active context</tref> ordered
lexically:
<ol class="algorithm">
- <li>Set <em>p</em> to the first entry in <tref>URL mapping</tref> for <em>term</em>.</li>
+ <li>Set <em>p</em> to the first entry in <tref>IRI mapping</tref> for <em>term</em>.</li>
<li>Continue to the next <tref>property generator</tref> if <em>p</em> is not a property of <em>element</em>.</li>
<li>Create an empty <tref>array</tref> <em>items</em> used to hold common value items for this <tref>property generator</tref>.</li>
<li>For each <em>item</em> in the value of <em>p</em> in <em>element</em>:
<ol class="algorithm">
<li>Continue to the next <em>item</em> unless every property value in <em>element</em> where the property
- is in <tref>URL mapping</tref> for <em>term</em> having an equivalent item, using
+ is in <tref>IRI mapping</tref> for <em>term</em> having an equivalent item, using
<a href="find-property-generator-equivalents">Find Property Generator Equivalents</a>.</li>
<li>Remove every property value item in <em>element</em> where the property
- is in <tref>URL mapping</tref> for <em>term</em> is an equivalent item, using
+ is in <tref>IRI mapping</tref> for <em>term</em> is an equivalent item, using
<a href="find-property-generator-equivalents">Find Property Generator Equivalents</a>.</li>
<li>Append <em>item</em> to <em>iterms</em></li>
</ol>
</li>
- <li>If <em>items</em> is not empty or the value of every property from <tref>URL mapping</tref> in <em>element</em>
+ <li>If <em>items</em> is not empty or the value of every property from <tref>IRI mapping</tref> in <em>element</em>
does not exist, or is empty:
<ol class="algorithm">
<li>Add an entry to <em>output</em> for <em>term</em> and <em>items</em> ensuring that it is an <tref>array</tref>
if the <tref>container mapping</tref> for <em>term</em> is <code>@set</code>.</li>
- <li>Remove every property in <em>element</em> from <tref>URL mapping</tref> for <em>term</em> who's value
+ <li>Remove every property in <em>element</em> from <tref>IRI mapping</tref> for <em>term</em> who's value
is empty.</li>
</ol>
</li>
@@ -1254,10 +1252,10 @@
<li>If <em>property</em> is <code>@id</code> or <code>@type</code>
<ol class="algorithm">
<li>Set <tref>active property</tref> to the result of performing
- <a href="#iri-compaction">URL Compaction</a> on <em>property</em> relative to <tref>vocabulary mapping</tref>.</li>
+ <a href="#iri-compaction">IRI Compaction</a> on <em>property</em> relative to <tref>vocabulary mapping</tref>.</li>
<li>If <em>value</em> is a <tref>string</tref>, the compacted <em>value</em> is the result of performing
- <a href="#iri-compaction">URL Compaction</a> on <em>value</em> relative to <em>document base</em>.</li>
- <li>Otherwise, <em>value</em> MUST be an <tref>array</tref>. Perform <a href="#iri-compaction">URL Compaction</a>
+ <a href="#iri-compaction">IRI Compaction</a> on <em>value</em> relative to <em>document base</em>.</li>
+ <li>Otherwise, <em>value</em> MUST be an <tref>array</tref>. Perform <a href="#iri-compaction">IRI Compaction</a>
on every entry of <em>value</em> relative to either <em>document base</em> or <tref>vocabulary mapping</tref>
depnding on if <em>property</em> is <code>@id</code> or <code>@type</code>.
If <em>value</em> contains just one entry and the
@@ -1273,13 +1271,13 @@
<li>If <em>value</em> is empty:
<ol class="algorithm">
<li>Set <tref>active property</tref> to the result of performing
- <a href="#iri-compaction">URL Compaction</a> on <em>property</em> relative to <tref>vocabulary mapping</tref>.</li>
+ <a href="#iri-compaction">IRI Compaction</a> on <em>property</em> relative to <tref>vocabulary mapping</tref>.</li>
<li>Create an entry in <em>output</em> for <tref>active property</tref> and <em>value</em>.</li>
</ol>
</li>
<li>For each <em>item</em> in <em>value</em>:
<ol class="algorithm">
- <li>Set <tref>active property</tref> to the result of performing <a href="#iri-compaction">URL Compaction</a>
+ <li>Set <tref>active property</tref> to the result of performing <a href="#iri-compaction">IRI Compaction</a>
for <em>property</em> and <em>item</em> relative to <tref>vocabulary mapping</tref>.</li>
<li>Compact <em>item</em> by recursively performing this algorithm passing a copy of
the <tref>active context</tref> and the <tref>active property</tref>.</li>
@@ -1322,13 +1320,13 @@
</section>
<section>
- <h3>URL Compaction Algorithm</h3>
+ <h3>IRI Compaction Algorithm</h3>
- <p>This section defines an algorithm for transforming an <tref>URL</tref> to a
- <tref>term</tref> or <tref>compact URL</tref> using an <tref>active context</tref>.
+ <p>This section defines an algorithm for transforming an <tref>IRI</tref> to a
+ <tref>term</tref> or <tref>compact IRI</tref> using an <tref>active context</tref>.
If a <em>value</em> is passed it is used to choose the best matching <tref>term</tref>.</p>
- <p>The algorithm for generating a <tref>compact URL</tref> is:
+ <p>The algorithm for generating a <tref>compact IRI</tref> is:
<ol class="algorithm">
<li>Create an empty list of terms <em>terms</em> that will be populated with
<tref>term</tref>s that are ranked according to how closely they match
@@ -1336,8 +1334,8 @@
and set a flag <em>list container</em> to <code>false</code>.</li>
<li>For each <em>term</em> in the <tref>active context</tref>:
<ol class="algorithm">
- <li>If the <em>term</em>'s <tref>URL</tref> is not a complete match against
- <em>url</em>, continue to the next <em>term</em>.</li>
+ <li>If the <em>term</em>'s <tref>IRI</tref> is not a complete match against
+ <em>iri</em>, continue to the next <em>term</em>.</li>
<li>If <em>value</em> is a <tref>JSON object</tref> containing only the property <code>@list</code>:
<ol class="algorithm">
<li>If <em>term</em> has a <code>@container</code> set to <code>@set</code>, continue
@@ -1372,22 +1370,22 @@
</ol>
</li>
<li>If <em>terms</em> is empty, and the <tref>active context</tref> has a <tref>vocabulary mapping</tref>
- which is a prefix of <em>url</em> where
- the resulting <tref>relative URL</tref> is not a <tref>term</tref> in the
- <tref>active context</tref>. The resulting <tref>relative URL</tref> is the
- unmatched part of <em>url</em>.</li>
- <li>If <em>terms</em> is empty, add a <tref>compact URL</tref> representation of <em>url</em>
+ which is a prefix of <em>iri</em> where
+ the resulting <tref>relative IRI</tref> is not a <tref>term</tref> in the
+ <tref>active context</tref>. The resulting <tref>relative IRI</tref> is the
+ unmatched part of <em>iri</em>.</li>
+ <li>If <em>terms</em> is empty, add a <tref>compact IRI</tref> representation of <em>iri</em>
for each <tref>term</tref> in the <tref>active context</tref> which
- maps to an <tref>URL</tref> which is a prefix for <em>url</em> where
- the resulting <tref>compact URL</tref> is not a <tref>term</tref> in the
- <tref>active context</tref>. The resulting <tref>compact URL</tref> is the
+ maps to an <tref>IRI</tref> which is a prefix for <em>iri</em> where
+ the resulting <tref>compact IRI</tref> is not a <tref>term</tref> in the
+ <tref>active context</tref>. The resulting <tref>compact IRI</tref> is the
<tref>term</tref> associated with the partially
- matched URL in the <tref>active context</tref> concatenated with a
- colon (:) character and the unmatched part of <em>url</em>.</li>
- <li>If <em>terms</em> is empty, the <tref>URL</tref> being processed is a property or the
+ matched IRI in the <tref>active context</tref> concatenated with a
+ colon (:) character and the unmatched part of <em>iri</em>.</li>
+ <li>If <em>terms</em> is empty, the <tref>IRI</tref> being processed is a property or the
value of <code>@type</code> and <code>@vocab</code> is not null and matches the beginning
- of <em>url</em>, return the unmatched portion of <em>url</em>. Otherwise return
- <em>url</em>.</li>
+ of <em>iri</em>, return the unmatched portion of <em>iri</em>. Otherwise return
+ <em>iri</em>.</li>
<li>Otherwise, return the shortest and lexicographically least value in <em>terms</em>.</li>
</ol>
</p>
@@ -1396,7 +1394,7 @@
<section>
<h3>Term Rank Algorithm</h3>
<p>When selecting among multiple possible terms for a given property, it may be that multiple
- <tref title="term">terms</tref> are defined with the same <tref>URL</tref>, but differ in <code>@type</code>, <code>@container</code>
+ <tref title="term">terms</tref> are defined with the same <tref>IRI</tref>, but differ in <code>@type</code>, <code>@container</code>
or <code>@language</code>. The purpose of this algorithm is to take a <tref>term</tref>
and a value and give it a <tdef>term rank</tdef>. The selection can then be based, partly, on
the <tref>term</tref> having the highest <tref>term rank</tref>.</p>
@@ -1445,9 +1443,9 @@
</li>
<li>Otherwise, <em>value</em> MUST be a <tref>node object</tref>.
<ol class="algorithm">
- <li>If <em>term</em> has <tref>URL mapping</tref> of <code>@id</code>,
+ <li>If <em>term</em> has <tref>IRI mapping</tref> of <code>@id</code>,
<tref>term rank</tref> is <code>3</code>, otherwise
- if <em>term</em> has no <tref>URL mapping</tref> and no <tref>language mapping</tref>,
+ if <em>term</em> has no <tref>IRI mapping</tref> and no <tref>language mapping</tref>,
<tref>term rank</tref> is <code>1</code>, otherwise <code>0</code>.</li>
</ol>
</li>
@@ -1457,7 +1455,7 @@
<section id="value-compaction">
<h2>Value Compaction Algorithm</h2>
- <p>Some values, such as <tref title="URL">URLs</tref> and <tref title="typed value">typed values</tref>, may be expressed in an
+ <p>Some values, such as <tref title="IRI">IRIs</tref> and <tref title="typed value">typed values</tref>, may be expressed in an
<tref>expanded form</tref> (<tdef>expanded value</tdef>) in JSON-LD. These values are required to be compacted at
times when processing JSON-LD documents. A value is said to be in <tdef>compacted form</tdef> after
the application of this algorithm on an <tref>expanded value</tref>.
@@ -1470,7 +1468,7 @@
then the compacted value is the value of <code>@value</code>.</li>
<li>Otherwise, if <tref>active property</tref> is <code>@graph</code>, the compacted value is the
value associated with the <code>@id</code> key, processed according to
- the <a href="#iri-compaction">URL Compaction</a> steps.</li>
+ the <a href="#iri-compaction">IRI Compaction</a> steps.</li>
<li>Otherwise, if the <tref>active context</tref> contains a coercion target for the
key that matches the expression of the value, compact the value using the
following steps:
@@ -1478,20 +1476,20 @@
<li>If the coercion target is an <code>@id</code>, the compacted
value is the value associated with the <code>@id</code> key,
processed according to the
- <a href="#iri-compaction">URL Compaction</a> steps.</li>
+ <a href="#iri-compaction">IRI Compaction</a> steps.</li>
<li>If the coercion target is a <tref>typed value</tref>, the compacted
value is the value associated with the <code>@value</code> key.</li>
</ol>
</li>
<li>Otherwise, if <em>value</em> contains an <code>@id</code> key, the compacted value is <em>value</em> with
the value of <code>@id</code> processed according to the
- <a href="#iri-compaction">URL Compaction</a> steps.</li>
+ <a href="#iri-compaction">IRI Compaction</a> steps.</li>
<li>Otherwise, if the <tref>active context</tref> contains a <code>@language</code>, which
matches the <code>@language</code> of the value, or the value has only a <code>@value</code> key, the compacted
value is the value associated with the <code>@value</code> key.</li>
<li>Otherwise, if the value contains a <code>@type</code> key, the compacted value
is <em>value</em> with the <code>@type</code> value processed according to the
- <a href="#iri-compaction">URL Compaction</a> steps.</li>
+ <a href="#iri-compaction">IRI Compaction</a> steps.</li>
<li>Otherwise, the value is not modified.</li>
</ol>
</section>
@@ -1562,10 +1560,10 @@
<h2>Node Map Generation Algorithm</h2>
<p>The Node Map Generation algorithm takes as input an expanded JSON-LD document and results in a <tref>JSON object</tref>
<em>nodeMap</em> holding a flat representation of the graphs and <tref title="node">nodes</tref> represented in the document. All <tref title="node">nodes</tref> that are not
- uniquely identified by an URL get assigned a (new) <tref>blank node identifier</tref>. The resulting <em>nodeMap</em>
+ uniquely identified by an IRI get assigned a (new) <tref>blank node identifier</tref>. The resulting <em>nodeMap</em>
document will have a property for every graph in the document whose value is another object with a property for every
<tref>node</tref> represented in the document. While the default graph is stored under the <code>@default</code> property and the merged graph
- under the <code>@merged</code> property, all other graphs are stored under their respective <tref title="URL">URLs</tref>.</p>
+ under the <code>@merged</code> property, all other graphs are stored under their respective <tref title="IRI">IRIs</tref>.</p>
<p>The algorithm takes as input the expanded JSON-LD document as <em>element</em>, the initially empty <em>nodeMap</em>,
<code>@default</code> as <em>graph</em>, <tref>null</tref> as <em>list</em>, and <tref>null</tref> as <em>id</em>.</p>
@@ -1576,7 +1574,7 @@
<li>If <em>element</em> is not a <tref>JSON object</tref> or if it has a <code>@value</code> property,
then if <em>list</em> is not <tref>null</tref>, append <em>element</em> to <em>list</em> and return.</li>
<li>If <em>id</em> is <tref>null</tref> and if the <code>@id</code>
- property exists and is an <tref>URL</tref>, set <em>id</em> to its value,
+ property exists and is an <tref>IRI</tref>, set <em>id</em> to its value,
otherwise set it to a <tref>blank node identifier</tref> created by the
<a href="#generate-blank-node-identifier">Generate Blank Node Identifier</a>
algorithm.</li>
@@ -1598,7 +1596,7 @@
<ol class="algorithm">
<li>If <em>v</em> is a <tref>node object</tref> or <tref>node object</tref>:
<ol class="algorithm">
- <li>If the property <code>@id</code> is not an <tref>URL</tref> or it does not exist,
+ <li>If the property <code>@id</code> is not an <tref>IRI</tref> or it does not exist,
map <em>v</em> to a <a
href="#generate-blank-node-identifier">new blank node
identifier</a> <em>name</em> to avoid collisions. If one does
@@ -1616,7 +1614,7 @@
<li>If <tref>active property</tref> is <tref>null</tref> or <code>@graph</code>,
<a href="#generate-blank-node-identifier">generate a blank node identifier</a> <em>id</em>
and store <em>result</em> as value of the member <em>id</em> in <em>activeGraph</em>.</li>
- <li>Otherwise, if <em>property</em> is <code>@type</code> and <em>v</em> is not an <tref>URL</tref>,
+ <li>Otherwise, if <em>property</em> is <code>@type</code> and <em>v</em> is not an <tref>IRI</tref>,
generate a <a href="#generate-blank-node-identifier">new blank node identifier</a> and add it
to <em>node</em> for <em>property</em>.</li>
<li>Otherwise, add <em>v</em> to <em>node</em> for <em>property</em>.</li>
@@ -1712,7 +1710,7 @@
</li>
<li id="processing-step-subject">If <em>element</em> has a <code>@id</code> property,
the value MUST be a <tref>string</tref>, set the <tref>active subject</tref> to the previously
- expanded value (either a <tref>blank node</tref> or an <tref>URL</tref>).</li>
+ expanded value (either a <tref>blank node</tref> or an <tref>IRI</tref>).</li>
<li>
Otherwise, if <em>element</em> does not have a <code>@id</code> property, set the <tref>active
subject</tref> to newly generated <tref>blank node</tref>.</li>
@@ -1729,7 +1727,7 @@
and null values for <tref>active subject</tref> and <tref>active property</tref> and then
proceed to next property.</li>
<li>Otherwise, if <em>property</em> is a <tref>keyword</tref>, skip this step.</li>
- <li>Otherwise, set <tref>active property</tref> to the <tref>expanded URL form</tref> of <em>property</em>.</li>
+ <li>Otherwise, set <tref>active property</tref> to the <tref>expanded IRI form</tref> of <em>property</em>.</li>
<li>Process <em>value</em> recursively using this algorithm, passing copies of
<tref>active subject</tref>, <tref>active property</tref> and <tref>graph name</tref>.
</li>
@@ -1746,7 +1744,7 @@
<tref>active subject</tref>, <tref>active property</tref>, and <tref>graph name</tref>.</li>
<li>Otherwise, if <em>element</em> is a <tref>string</tref>, then the <tref>active property</tref>
- must be <code>rdf:type</code> so set the <tref>active object</tref> to an <tref>URL</tref>.</li>
+ must be <code>rdf:type</code> so set the <tref>active object</tref> to an <tref>IRI</tref>.</li>
<li>If any of these steps created an <tref>active object</tref> and neither <tref>active subject</tref>
nor <tref>active property</tref> are <tref>null</tref>, generate a <tref>Quad</tref> using
@@ -1848,16 +1846,16 @@
does not contain an entry for <em>name</em>,
create a new entry for <em>name</em> from a new
<tref>JSON object</tref> with key/value pair of <code>@id</code> and
- <em>name</em> represented in <tref>expanded URL form</tref>.</li>
+ <em>name</em> represented in <tref>expanded IRI form</tref>.</li>
<li>Set <em>value</em> as the entry from <em>graph.nodes</em> for
<em>subject</em>, initializing it to a new
<tref>JSON object</tref> with key/value pair of <code>@id</code> and
- <em>subject</em> represented in <tref>expanded URL form</tref> if necessary.</li>
+ <em>subject</em> represented in <tref>expanded IRI form</tref> if necessary.</li>
<li>If <em>property</em> is <code>rdf:type</code>, <em>object</em> is not a <tref>JSON-LD value</tref>, and the
<code class="idlMemberName"><a href="#widl-JsonLdOptions-useRdfType">useRdfType</a></code>
option is not present or <tref>false</tref>:
<ol class="algorithm">
- <li>Append <em>object</em> represented in <tref>expanded URL form</tref> to the array value for the
+ <li>Append <em>object</em> represented in <tref>expanded IRI form</tref> to the array value for the
key <code>@type</code>, creating an entry in <em>value</em> if necessary.</li>
</ol>
</li>
@@ -1888,14 +1886,14 @@
<li>Otherwise, if <em>object</em> is <code>rdf:nil</code>:
<ol class="algorithm">
- <li>Let <em>key</em> be <em>property</em> expressed in <tref>expanded URL form</tref>.</li>
+ <li>Let <em>key</em> be <em>property</em> expressed in <tref>expanded IRI form</tref>.</li>
<li>Append an empty <code>@list</code> representation to the array value for
<em>key</em>, creating an entry in <em>value</em> if necessary.</li>
</ol>
</li>
<li>Otherwise,
<ol class="algorithm">
- <li>Let <em>key</em> be <em>property</em> expressed in <tref>expanded URL form</tref> and let
+ <li>Let <em>key</em> be <em>property</em> expressed in <tref>expanded IRI form</tref> and let
<em>object representation</em>
be <em>object</em> represented in <tref>expanded form</tref> as described in
<a href="#value-expansion">Value Expansion</a>.</li>
@@ -2038,14 +2036,14 @@
<dl class="parameters">
<dt>(object or object[] or DOMString) input</dt>
<dd>The JSON-LD object or array of JSON-LD objects to perform the expansion upon or an
- <tref>URL</tref> referencing the JSON-LD document to expand.</dd>
+ <tref>IRI</tref> referencing the JSON-LD document to expand.</dd>
<dt>JsonLdCallback callback</dt>
<dd>A callback that is called when processing completed successfully
on the given <code>input</code>, or a fatal error prevented
processing from completing.</dd>
<dt>optional JsonLdOptions? options</dt>
<dd>A set of options to configure the used algorithms such. This allows, e.g.,
- to set the input document's base <tref>URL</tref>.</dd>
+ to set the input document's base <tref>IRI</tref>.</dd>
</dl>
</dd>
@@ -2058,17 +2056,17 @@
<dl class="parameters">
<dt>(object or object[] or DOMString) input</dt>
<dd>The JSON-LD object or array of JSON-LD objects to perform the compaction upon or an
- <tref>URL</tref> referencing the JSON-LD document to compact.</dd>
+ <tref>IRI</tref> referencing the JSON-LD document to compact.</dd>
<dt>(object or DOMString) context</dt>
<dd>The context to use when compacting the <code>input</code>; either in the
- form of an <tref>JSON object</tref> or as <tref>URL</tref>.</dd>
+ form of an <tref>JSON object</tref> or as <tref>IRI</tref>.</dd>
<dt>JsonLdCallback callback</dt>
<dd>A callback that is called when processing completed successfully
on the given <code>input</code>, or a fatal error prevented
processing from completing.</dd>
<dt>optional JsonLdOptions? options</dt>
<dd>A set of options to configure the used algorithms such. This allows, e.g.,
- to set the input document's base <tref>URL</tref>. This also includes
+ to set the input document's base <tref>IRI</tref>. This also includes
the <code>optimize</code> flag, which, if set, will allow processor-specific
optimization.</dd>
</dl>
@@ -2082,11 +2080,11 @@
<dl class="parameters">
<dt>(object or object[] or DOMString) input</dt>
- <dd>The JSON-LD object or array of JSON-LD objects or an <tref>URL</tref>
+ <dd>The JSON-LD object or array of JSON-LD objects or an <tref>IRI</tref>
referencing the JSON-LD document to flatten.</dd>
<dt>(object or DOMString)? context</dt>
<dd>The context to use when compacting the flattened <code>input</code>; either
- in the form of an <tref>JSON object</tref> or as <tref>URL</tref>. If
+ in the form of an <tref>JSON object</tref> or as <tref>IRI</tref>. If
<tref>null</tref> is passed, the result will not be compacted but keept
in expanded form.</dd>
<dt>JsonLdCallback callback</dt>
@@ -2095,7 +2093,7 @@
processing from completing.</dd>
<dt>optional JsonLdOptions? options</dt>
<dd>A set of options to configure the used algorithms such. This allows, e.g.,
- to set the input document's base <tref>URL</tref>.</dd>
+ to set the input document's base <tref>IRI</tref>.</dd>
</dl>
</dd>
</dl>
@@ -2137,9 +2135,9 @@
<p>The <a>JsonLdOptions</a> type is used to pass various options to the <a>JsonLdProcessor</a> methods.</p>
<dl title="dictionary JsonLdOptions" class="idl">
<dt>DOMString base</dt>
- <dd>The Base URL to use when expanding the document. This overrides the value of
- <em>input</em> if it is a <a>URL</a>. If not specified and <em>input</em> is not
- an <a>URL</a>, the base URL defaults to the current document URL if in a browser context,
+ <dd>The Base IRI to use when expanding the document. This overrides the value of
+ <em>input</em> if it is a <a>IRI</a>. If not specified and <em>input</em> is not
+ an <a>IRI</a>, the base IRI defaults to the current document IRI if in a browser context,
or the empty string if there is no document context.
</dd>
<dt>object or DOMString expandContext = null</dt>
@@ -2170,7 +2168,7 @@
</dd>
<dt>boolean useRdfType = false</dt>
<dd>If set to <code>true</code>, the JSON-LD processor will use the
- expanded <code>rdf:type</code> URL as the property instead of
+ expanded <code>rdf:type</code> IRI as the property instead of
<code>@type</code> when <a href="#convert-from-rdf-algorithm">converting from RDF</a>.
</dd>
<dt>boolean useNativeTypes = true</dt>
--- a/spec/latest/json-ld-api/index.html Tue Jan 15 17:39:01 2013 +0100
+++ b/spec/latest/json-ld-api/index.html Tue Jan 15 18:10:35 2013 +0100
@@ -239,11 +239,11 @@
-->
</pre>
- <p>The next input example uses one <tref>URL</tref> to express a property, but leaves
+ <p>The next input example uses one <tref>IRI</tref> to express a property, but leaves
the rest of the information untouched.</p>
<pre class="example" data-transform="updateExample"
- title="Sample JSON-LD document using a URL instead of a term to express a property">
+ title="Sample JSON-LD document using a IRI instead of a term to express a property">
<!--
{
"@context": {
@@ -264,7 +264,7 @@
context could change as well. To ensure that the data can be given a more
uniform structure, JSON-LD introduces the notion of expansion. <tdef>Expansion</tdef>
performs two important operations. The first is to expand all values that represent
- <tref title="URL">URLs</tref> to <tref title="absolute URL">absolute URLs</tref>.
+ <tref title="IRI">IRIs</tref> to <tref title="absolute IRI">absolute IRIs</tref>.
The second is to express all values in <tref>expanded form</tref>. Running the
<a href="#expansion-algorithm">Expansion algorithm</a> against the examples provided
above results in the following output:</p>
@@ -288,7 +288,7 @@
<p>Note that in the output above all <tref>context</tref> definitions have
been removed, all <tref title="term">terms</tref> and <tref title="prefix">prefixes</tref>
- have been expanded to absolute <tref title="URL">URLs</tref>, and all
+ have been expanded to absolute <tref title="IRI">IRIs</tref>, and all
<tref title="JSON-LD value">JSON-LD values</tref> are expressed in <tref>expanded form</tref>.
While the output is more difficult for a human to read, it is easier for a
software program to process because of its very regular structure.</p>
@@ -301,8 +301,8 @@
to expansion which is meant to produce something that is easy to process by software
programs, compaction is meant to produce something that is easy to read by software
developers. Compaction uses a developer-supplied <tref>context</tref> to compress
- <tref title="URL">URLs</tref> to <tref title="term">terms</tref> or
- <tref title="compact URL">compact URLs</tref> and <tref title="JSON-LD value">JSON-LD values</tref>
+ <tref title="IRI">IRIs</tref> to <tref title="term">terms</tref> or
+ <tref title="compact IRI">compact IRIs</tref> and <tref title="JSON-LD value">JSON-LD values</tref>
expressed in <tref>expanded form</tref> to simple values such as
<tref title="string">strings</tref> and <tref title="number">numbers</tref>.</p>
@@ -364,7 +364,7 @@
-->
</pre>
- <p>Note that all <tref title="URL">URLs</tref> have been compacted to
+ <p>Note that all <tref title="IRI">IRIs</tref> have been compacted to
<tref title="term">terms</tref> as specified in the <tref>context</tref>
which consequently has been injected into the output. While compacted
output is most useful to humans, it can often also be used to generate
@@ -575,10 +575,10 @@
<p>This specification does not define how JSON-LD Implementations or Processors handle
non-conforming input documents. This implies that JSON-LD Implementations or Processors
- MUST NOT attempt to correct malformed <tref title="URL">URLs</tref> or language tags;
- however, they MAY issue validation warnings. URLs are not modified other than converted
- between <tref title="relative URL">relative</tref> and
- <tref title="absolute URL">absolute URLs</tref>.</p>
+ MUST NOT attempt to correct malformed <tref title="IRI">IRIs</tref> or language tags;
+ however, they MAY issue validation warnings. IRIs are not modified other than converted
+ between <tref title="relative IRI">relative</tref> and
+ <tref title="absolute IRI">absolute IRIs</tref>.</p>
<p class="note">Implementers can partially check their level of conformance to
this specification by successfully passing the test cases of the JSON-LD test
@@ -622,7 +622,7 @@
<dd>The <tref>null</tref> value. A key-value pair in the
<code>@context</code> where the value, or the <code>@id</code> of the
value, is <tref>null</tref> explicitly decouples a term's association
- with an URL. A key-value pair in the body of a JSON-LD document whose
+ with an IRI. A key-value pair in the body of a JSON-LD document whose
value is <tref>null</tref> has the same meaning as if the key-value pair
was not defined. If <code>@value</code>, <code>@list</code>, or
<code>@set</code> is set to <tref>null</tref> in expanded form, then
@@ -643,7 +643,7 @@
<tref title="JSON-LD graph">JSON-LD graphs</tref> and comprises exactly one
<tref>default graph</tref> and zero or more <tref title="named graph">named graphs</tref>.</dd>
<dt><tdef>named graph</tdef></dt>
- <dd>A named graph is a pair consisting of an <tref>URL</tref> or <tref>blank node</tref>
+ <dd>A named graph is a pair consisting of an <tref>IRI</tref> or <tref>blank node</tref>
(the <tdef>graph name</tdef>) and a <tref>JSON-LD graph</tref>.</dd>
<dt><tdef>default graph</tdef></dt>
<dd>The default graph is the only graph in a JSON-LD document which has no <tref>graph name</tref>.</dd>
@@ -653,21 +653,21 @@
specification [[!JSON-LD]].</dd>
<dt><tdef>edge</tdef></dt>
<dd>Every <tref>edge</tref> has a direction associated with it and is labeled with
- an <tref>URL</tref> or a <tref>blank node identifier</tref>. Within the JSON-LD syntax
+ an <tref>IRI</tref> or a <tref>blank node identifier</tref>. Within the JSON-LD syntax
these edge labels are called <tdef title="property">properties</tdef>. Whenever possible, an
- <tref>edge</tref> SHOULD be labeled with an <tref>URL</tref>.</dd>
+ <tref>edge</tref> SHOULD be labeled with an <tref>IRI</tref>.</dd>
<dt><tdef>node</tdef></dt>
- <dd>Every <tref>node</tref> is an <tref>URL</tref>, a <tref>blank node</tref>,
+ <dd>Every <tref>node</tref> is an <tref>IRI</tref>, a <tref>blank node</tref>,
a <tref>JSON-LD value</tref>, or a <tref>list</tref>.</dd>
- <dt><tdef>URL</tdef></dt>
- <dd>Throughout this specification, the term <tref>URL</tref> means
- <abbr title="Internationalized Resource Identifier">IRI</abbr> as defined in [[!RFC3987]]. The reason we
- use the term <tref>URL</tref> instead is because it is more familiar to Web developers.</dd>
- <dt><tdef>absolute URL</tdef></dt>
- <dd>An absolute URL is an absolute IRI reference as defined in [[!RFC3987]].</dd>
- <dt><tdef>relative URL</tdef></dt>
- <dd>A relative URL is a relative IRI reference as defined in [[!RFC3987]]. In the case of
- of JSON-LD the base URL is the location of the document.</dd>
+ <dt><tdef><abbr title="Internationalized Resource Identifier">IRI</abbr></tdef></dt>
+ <dd>An <tref>IRI</tref> (Internationalized Resource Identifier) is a string that conforms to the syntax
+ defined in [[RFC3987]].</dd>
+ <dt><tdef>absolute IRI</tdef></dt>
+ <dd>An absolute IRI is defined in [[!RFC3987]] containing a <em>scheme</em> along with a <em>path</em> and
+ optional <em>query</em> and fragment segments.</dd>
+ <dt><tdef>relative IRI</tdef></dt>
+ <dd>A relative IRI is an IRI that is relative some other <tref>absolute IRI</tref>;
+ in the case of JSON-LD this is the base location of the document.</dd>
<dt><tdef>blank node</tdef></dt>
<dd>A <tref>node</tref> in a <tref>JSON-LD graph</tref> that does not contain a de-referenceable
identifier because it is either ephemeral in nature or does not contain information that needs to be
@@ -680,14 +680,14 @@
<tref>true</tref> or <tref>false</tref>, a <tref>typed value</tref>, or a
<tref>language-tagged string</tref>.</dd>
<dt><tdef>typed value</tdef></dt>
- <dd>A <tref>typed value</tref> consists of a value, which is a string, and a type, which is an <tref>URL</tref>.</dd>
+ <dd>A <tref>typed value</tref> consists of a value, which is a string, and a type, which is an <tref>IRI</tref>.</dd>
<dt><tdef>language-tagged string</tdef></dt>
<dd>A <tref>language-tagged string</tref> consists of a string and a non-empty language
tag as defined by [[BCP47]]. The language tag must be well-formed according to section
<a href="http://tools.ietf.org/html/bcp47#section-2.2.9">2.2.9</a> of [[BCP47]], and MUST
be normalized to lowercase.</dd>
<dt><tdef>list</tdef></dt>
- <dd>A <tref>list</tref> is an ordered sequence of <tref title="URL">URLs</tref>,
+ <dd>A <tref>list</tref> is an ordered sequence of <tref title="IRI">IRIs</tref>,
<tref title="blank node">blank nodes</tref>, and
<tref title="JSON-LD value">JSON-LD values</tref>.</dd>
</dl>
@@ -736,11 +736,11 @@
<dt><tdef>JSON-LD output</tdef></dt>
<dd>The JSON-LD data structure that is produced as output by the algorithm.</dd>
<dt><tdef>term</tdef></dt>
- <dd>A <tref>term</tref> is a short word defined in a context that MAY be expanded to an <tref>URL</tref></dd>
- <dt><tdef>compact URL</tdef></dt>
- <dd>A compact URL is has the form of <tdef>prefix</tdef>:<em>suffix</em> and is used as a way
- of expressing an URL without needing to define separate <tref>term</tref> definitions for
- each URL contained within a common vocabulary identified by <tref>prefix</tref>.</dd>
+ <dd>A <tref>term</tref> is a short word defined in a context that MAY be expanded to an <tref>IRI</tref></dd>
+ <dt><tdef>compact IRI</tdef></dt>
+ <dd>A compact IRI is has the form of <tdef>prefix</tdef>:<em>suffix</em> and is used as a way
+ of expressing an IRI without needing to define separate <tref>term</tref> definitions for
+ each IRI contained within a common vocabulary identified by <tref>prefix</tref>.</dd>
<dt><tdef>node object</tdef></dt>
<dd>A <tref>node object</tref> represents zero or more properties of a
<tref>node</tref> in the <tref>JSON-LD graph</tref> serialized by the
@@ -812,21 +812,21 @@
ordered by <em>property</em> as follows:
<ol class="algorithm">
<li>If the <tref>active context</tref> contains a <tref>property generator</tref> for
- <em>property</em> set <em>expanded property</em> to its <tref title="URL">URLs</tref>,
+ <em>property</em> set <em>expanded property</em> to its <tref title="IRI">IRIs</tref>,
otherwise set it to the result of expanding <em>property</em> according to the steps
- outlined in <a href="#url-expansion">URL Expansion</a> (passing <code>true</code> for
+ outlined in <a href="#iri-expansion">IRI Expansion</a> (passing <code>true</code> for
the <em>vocabRelative</em> flag).</li>
<li>If <em>expanded property</em> is a <tref>keyword</tref>, process it as
follows:
<ol class="algorithm">
<li>If <em>expanded property</em> equals <code>@id</code>, set the <code>@id</code>
member of <em>result</em> to the result of expanding <em>value</em>
- according the <a href="#url-expansion">URL Expansion algorithm</a> (passing <code>true</code>
+ according the <a href="#iri-expansion">IRI Expansion algorithm</a> (passing <code>true</code>
for the <em>documentRelative</em> flag). If <em>value</em> is not a <tref>string</tref>
trigger an <code class="error">invalid @id value</code> error.</li>
<li>If <em>expanded property</em> equals <code>@type</code>, set the <code>@type</code>
member of <em>result</em> to the result of expanding <em>value</em>
- according the <a href="#url-expansion">URL Expansion algorithm</a> (passing <code>true</code>
+ according the <a href="#iri-expansion">IRI Expansion algorithm</a> (passing <code>true</code>
for both the <em>documentRelative</em> and the <em>vocabRelative</em> flag). If <em>value</em>
is neither a <tref>string</tref> nor an <tref>array</tref> of
<tref title="string">strings</tref> trigger an <code class="error">invalid type value</code>
@@ -857,7 +857,7 @@
</ol>
</li>
<li>If <em>expanded property</em> is neither a <tref>blank node identifier</tref> nor an
- <tref>absolute URL</tref>,i.e., it is <tref>null</tref> or does not contain a colon
+ <tref>absolute IRI</tref>,i.e., it is <tref>null</tref> or does not contain a colon
(<code>:</code>), continue with the next member from <em>element</em>.</li>
<li>Otherwise, if <em>property's</em> <tref>container mapping</tref> is set to
<code>@language</code>
@@ -912,12 +912,12 @@
<li>label all <tref title="blank node">blank nodes</tref> in <em>value</em> with
<tref title="blank node identifier">blank node identifiers</tref> by using the
<a href="#label-blank-nodes-algorithm">Label Blank Nodes Algorithm</a>.</li>
- <li>Then, for each <em>url</em> of <em>expanded property</em> merge a copy
- of <em>value</em> into the <em>url</em> member of the <em>result</em>
+ <li>Then, for each <em>iri</em> of <em>expanded property</em> merge a copy
+ of <em>value</em> into the <em>iri</em> member of the <em>result</em>
<tref>JSON object</tref>.</li>
</ol>
</li>
- <li>Otherwise, merge <em>value</em> into the <em>url</em> member of the <em>result</em>
+ <li>Otherwise, merge <em>value</em> into the <em>iri</em> member of the <em>result</em>
<tref>JSON object</tref>.</li>
</ol>
</li>
@@ -974,9 +974,9 @@
<p>The <tref>active context</tref> contains the active <tdef title="term definition">term definitions</tdef>
which specify how properties and values have to be interpreted as well as the current
<tdef>vocabulary mapping</tdef> and the <tdef>default language</tdef>. Each <tref>term definition</tref> consists
- of an <tdef>URL mapping</tdef> and optionally a <tdef>type mapping</tdef> from terms to datatypes or
+ of an <tdef>IRI mapping</tdef> and optionally a <tdef>type mapping</tdef> from terms to datatypes or
<tdef>language mapping</tdef> from terms to language codes, and a <tdef>container mapping</tdef>. If an
- <tref>URL mapping</tref> maps a term to multiple <tref="URL">URLs</tref> it is said to be a
+ <tref>IRI mapping</tref> maps a term to multiple <tref="IRI">IRIs</tref> it is said to be a
<tdef>property generator</tdef>.</p>
<p>If a <tref>local context</tref> is encountered, information from the <tref>local context</tref>
@@ -989,7 +989,7 @@
a <tref>local context</tref>, and an array of already included remote contexts <em>remoteContexts</em>. To
begin, <em>remoteContexts</em> is initialized to an empty array.</p>
- <p>All calls of the <a href="#url-expansion">URL Expansion algorithm</a> pass the value specified in the
+ <p>All calls of the <a href="#iri-expansion">IRI Expansion algorithm</a> pass the value specified in the
algorithm along with the <tref>active context</tref>, the currently being processed <tref>local context</tref>,
and <code>true</code> for the <em>vocabRelative</em> flag.</p>
@@ -1001,7 +1001,7 @@
and continue with the next item.</li>
<li>If <em>context</em> is a <tref>string</tref>:
<ol class="algorithm">
- <li>Expand <em>context</em> according to <a href="#url-expansion">URL Expansion</a>.</li>
+ <li>Expand <em>context</em> according to <a href="#iri-expansion">IRI Expansion</a>.</li>
<li>If <em>context</em> is in the <em>remoteContexts</em> array, raise an
<code class="error">recursive context inclusion</code> error. Otherwise, add
<em>context</em> to <em>remoteContexts</em>.</li>
@@ -1010,8 +1010,8 @@
<tref>JSON object</tref> that has a <code>@context</code> member recursively invoke
this algorithm passing a copy of <tref>active context</tref>, the value of the
<code>@context</code> member as <tref>local context</tref>, and a copy of
- the <em>remoteContexts</em> array. <tref title="relative URL">Relative URLs</tref>
- are expanded using the remote context's URL. Otherwise raise an
+ the <em>remoteContexts</em> array. <tref title="relative IRI">Relative IRIs</tref>
+ are expanded using the remote context's IRI. Otherwise raise an
<code class="error">invalid remote context</code> error.</li>
<li>Continue with the next item from <em>context</em>.</li>
</ol>
@@ -1021,7 +1021,7 @@
<li>Otherwise, if <em>context</em> is an <tref>JSON object</tref>, perform the following steps:
<ol class="algorithm">
<li>If <em>context</em> has a <code>@vocab</code> member: if its value is neither
- an <tref>absolute URL</tref>, i.e., it does not contain a colon (<code>:</code>),
+ an <tref>absolute IRI</tref>, i.e., it does not contain a colon (<code>:</code>),
nor <tref>null</tref>, trigger an <code class="error">invalid vocab mapping</code>
error; otherwise set the <tref title="active context">active context's</tref>
<tref>vocabulary mapping</tref> to its value and remove the <code>@vocab</code>
@@ -1038,12 +1038,12 @@
<li>If <em>key</em> is a JSON-LD <tref>keyword</tref>, continue with the next
<em>key</em>-<em>value</em> pair.</li>
<li>If <em>value</em> equals <tref>null</tref>, replace the <tref>term definition</tref>
- for <em>key</em> in the <tref>active context</tref> with an <tref>URL mapping</tref>
+ for <em>key</em> in the <tref>active context</tref> with an <tref>IRI mapping</tref>
set to <tref>null</tref> and continue with the next <em>key</em>-<em>value</em> pair.</li>
<li>If <em>value</em> is a <tref>string</tref>, expand it according to the
- <a href="#url-expansion">URL Expansion algorithm</a> and replace the
+ <a href="#iri-expansion">IRI Expansion algorithm</a> and replace the
<tref>term definition</tref> for <em>key</em> in the <tref>active context</tref> with
- an <tref>URL mapping</tref> set to the expanded <em>value</em>. Continue with
+ an <tref>IRI mapping</tref> set to the expanded <em>value</em>. Continue with
the next <em>key</em>-<em>value</em> pair.</li>
<li>If <em>value</em> is not a <tref>JSON object</tref>, trigger an
<code class="error">invalid term definition</code> error</li>
@@ -1055,36 +1055,36 @@
<li>if <em>val</em> is an <tref>array</tref>,:
<ol class="algorithm">
<li>expand each <em>item</em> in the array according the
- <a href="#url-expansion">URL Expansion algorithm</a> if it is a
+ <a href="#iri-expansion">IRI Expansion algorithm</a> if it is a
<tref>string</tref>. If am <em>item</em> is not a <tref>string</tref>,
raise an <code class="error">invalid property generator</code> error; if
- <em>item</em> does not expand to an <tref>absolute URL</tref> or
+ <em>item</em> does not expand to an <tref>absolute IRI</tref> or
<tref>blank node identifier</tref>, i.e., it does not contain a colon
(<code>:</code>) after expansion, raise an
- <code class="error">invalid property generator URL mapping</code> error.</li>
- <li>Lexicographically sort <em>val</em> and set the <tref>URL mapping</tref>
+ <code class="error">invalid property generator IRI mapping</code> error.</li>
+ <li>Lexicographically sort <em>val</em> and set the <tref>IRI mapping</tref>
of <em>definition</em> to <em>val</em>.</li>
</ol>
<li>Otherwise, expand <em>val</em> according the
- <a href="#url-expansion">URL Expansion algorithm</a> and set the
- <tref>URL mapping</tref> of <em>definition</em> to <em>val</em>.</li>
+ <a href="#iri-expansion">IRI Expansion algorithm</a> and set the
+ <tref>IRI mapping</tref> of <em>definition</em> to <em>val</em>.</li>
</ol>
</li>
- <li>Otherwise, set the <tref>URL mapping</tref> of <em>definition</em> to the result of
- expanding <em>key</em> according the <a href="#url-expansion">URL Expansion algorithm</a>.</li>
- <li>If the <tref>URL mapping</tref> of <em>definition</em> is set to <tref>null</tref> or a
+ <li>Otherwise, set the <tref>IRI mapping</tref> of <em>definition</em> to the result of
+ expanding <em>key</em> according the <a href="#iri-expansion">IRI Expansion algorithm</a>.</li>
+ <li>If the <tref>IRI mapping</tref> of <em>definition</em> is set to <tref>null</tref> or a
<tref>keyword</tref>, store <em>definition</em> as the <tref>term definition</tref>
for <em>key</em> in the <tref>active context</tref> and continue with the next
<em>key</em>-<em>value</em> pair from <em>context</em>.</li>
- <li>Otherwise, if the <tref>URL mapping</tref> of <em>definition</em> is set to
+ <li>Otherwise, if the <tref>IRI mapping</tref> of <em>definition</em> is set to
a <tref>string</tref> which does not contain a colon (<code>:</code>), i.e., it is
- neither an <tref>absolute URL</tref> nor a <tref>blank node identifier</tref>,
- raise an <code class="error">invalid term URL mapping</code> error.</li>
+ neither an <tref>absolute IRI</tref> nor a <tref>blank node identifier</tref>,
+ raise an <code class="error">invalid term IRI mapping</code> error.</li>
<li>If <em>value</em> has an <code>@type</code> member with a value <em>val</em> and <em>val</em>
- is not a <tref>string</tref> or does not expand to an <tref>absolute URL</tref> using the
- <a href="#url-expansion">URL Expansion algorithm</a>, raise an
+ is not a <tref>string</tref> or does not expand to an <tref>absolute IRI</tref> using the
+ <a href="#iri-expansion">IRI Expansion algorithm</a>, raise an
<code class="error">invalid type mapping</code> error. Otherwise set the
- <tref>URL mapping</tref> of <em>definition</em> to the expanded <em>val</em>.</li>
+ <tref>IRI mapping</tref> of <em>definition</em> to the expanded <em>val</em>.</li>
<li>Otherwise, if <em>value</em> has an <code>@language</code> member with a value <em>val</em>
that is a <tref>string</tref> or <tref>null</tref>, set the <tref>language mapping</tref> of
<em>definition</em> to the lowercased <em>val</em>. If <em>val</em> is neither a
@@ -1105,29 +1105,29 @@
</section>
<section>
- <h2>URL Expansion</h2>
+ <h2>IRI Expansion</h2>
- <p>In JSON-LD documents keys and some values are evaluated to produce an <tref>URL</tref>.
- This section defines an algorithm for transforming strings representing an URL into an
- <tref>absolute URL</tref>. If URL expansion occurs during context processing, the
+ <p>In JSON-LD documents keys and some values are evaluated to produce an <tref>IRI</tref>.
+ This section defines an algorithm for transforming strings representing an IRI into an
+ <tref>absolute IRI</tref>. If IRI expansion occurs during context processing, the
<tref>local context</tref> that is being processed is passed to this algorithm.
After application of this algorithm, values processed by this algorithm are said to be
- in <tdef>expanded URL form</tdef>, although this may also include
+ in <tdef>expanded IRI form</tdef>, although this may also include
<tref title="blank node identifier">blank node identifiers</tref> and
JSON-LD <tref title="keyword">keywords</tref>.</p>
<p>The algorithm takes two mandatory and four optional input variables: a <em>value</em>
to be expanded, an <tref>active context</tref>, two flags <em>documentRelative</em> and
<em>vocabRelative</em> specifying whether <em>value</em> should be interpreted as
- <tref>relative URL</tref> against the document's base URL or the
+ <tref>relative IRI</tref> against the document's base IRI or the
<tref title="active context">active context's</tref> <tref>vocabulary mapping</tref>,
along with an <tref>local context</tref> passed when this algorithm is used in
<a href="#context-processing">Context Processing</a>, and finally an array
- <em>path</em> which is used to detect cyclic <tref title="URL mapping">URL mappings</tref>.
+ <em>path</em> which is used to detect cyclic <tref title="IRI mapping">IRI mappings</tref>.
If not passed, the two flags are set to <code>false</code> and <em>path</em> is
initialized to an empty <tref>array</tref> by default.</p>
- <p>The algorithm for generating an URL is:</p>
+ <p>The algorithm for generating an IRI is:</p>
<ol class="algorithm">
<li>If <em>value</em> is <tref>null</tref> or a JSON-LD <tref>keyword</tref>, return
@@ -1135,20 +1135,20 @@
<li>If a <tref>local context</tref> has been passed
<ol class="algorithm">
<li>and <em>value</em> is in the <em>path</em> array, raise a
- <code class="error">cyclic URL mapping</code> error. Otherwise append <em>value</em>
+ <code class="error">cyclic IRI mapping</code> error. Otherwise append <em>value</em>
to <em>path</em>.</li>
- <li>If <tref>local context</tref> contains an <tref>URL mapping</tref> for <em>value</em>
+ <li>If <tref>local context</tref> contains an <tref>IRI mapping</tref> for <em>value</em>
that is not a <tref>property generator</tref> return the result of recursively calling
- this algorithm passing the <tref>URL</tref> of the <tref>URL mapping</tref> as new
+ this algorithm passing the <tref>IRI</tref> of the <tref>IRI mapping</tref> as new
<em>value</em>, the <tref>active context</tref> and <tref>local context</tref>,
<em>path</em>, and <code>true</code> for the <em>vocabRelative</em> flag. If the result
is a <tref>property generator</tref>, raise an
<code class="error">property generator in term definition</code> error.</li>
</ol>
</li>
- <li>If the <em>vocabRelative</em> flag is set to <code>true</code> and an <tref>URL mapping</tref>
+ <li>If the <em>vocabRelative</em> flag is set to <code>true</code> and an <tref>IRI mapping</tref>
exists for <em>value</em> in the <tref>active context</tref> that is not a
- <tref>property generator</tref>, return the value of the <tref>URL mapping</tref>.</li>
+ <tref>property generator</tref>, return the value of the <tref>IRI mapping</tref>.</li>
<li>If <em>value</em> contains a colon (<code>:</code>), perform the following steps:
<ol class="algorithm">
<li>Split <em>value</em> into a <em>prefix</em> and <em>suffix</em> at the first occurrence of
@@ -1159,23 +1159,23 @@
invoking this algorithm passing <em>prefix</em> as <em>value</em>, the <tref>active context</tref>
and <tref>local context</tref>, <em>path</em>, and <code>true</code> for the
<em>vocabRelative</em> flag. If the expanded <em>prefix</em> contains a colon (<code>:</code>)
- generate and return an <tref>URL</tref> by prepending the expanded <em>prefix</em> to the
+ generate and return an <tref>IRI</tref> by prepending the expanded <em>prefix</em> to the
(possibly empty) <em>suffix</em> using textual concatenation.</li>
- <li>Otherwise, if the <tref>active context</tref> contains an <tref>URL mapping</tref> for
+ <li>Otherwise, if the <tref>active context</tref> contains an <tref>IRI mapping</tref> for
<em>prefix</em> that is not a <tref>property generator</tref>, generate and return an
- <tref>URL</tref> by prepending the <tref>URL</tref> mapped to <em>prefix</em> to the
+ <tref>IRI</tref> by prepending the <tref>IRI</tref> mapped to <em>prefix</em> to the
(possibly empty) <em>suffix</em> using textual concatenation.</li>
</ol>
</li>
<li>Otherwise, if the <em>vocabRelative</em> flag is set to <code>true</code> and the
<tref>active context</tref> contains a <tref>vocabulary mapping</tref>, generate and return an
- <tref>URL</tref> by prepending the <tref>URL</tref> of the <tref>vocabulary mapping</tref>
+ <tref>IRI</tref> by prepending the <tref>IRI</tref> of the <tref>vocabulary mapping</tref>
to the <em>value</em> using textual concatenation.</li>
<li>Otherwise, if the <em>documentRelative</em> flag is set to <code>true</code>, resolve <em>value</em>
- against the base URL as per [[!RFC3986]] and return the resulting <tref>URL</tref>. Only the basic
+ against the base IRI as per [[!RFC3986]] and return the resulting <tref>IRI</tref>. Only the basic
algorithm in section 5.2 of [[!RFC3986]] is used; neither <em>Syntax-Based Normalization</em>
nor <em>Scheme-Based Normalization</em> (as described in sections 6.2.2 and 6.2.3 of [[!RFC3986]])
- are performed. Characters additionally allowed in URL references are treated in the same way that
+ are performed. Characters additionally allowed in IRI references are treated in the same way that
unreserved characters are treated in URI references, per section 6.5 of [[!RFC3987]]</li>
<li>Otherwise return <em>value</em> as is.</li>
</ol>
@@ -1204,13 +1204,13 @@
<tref title="active property">active property's</tref> <tref>type mapping</tref> is set to
<code>@id</code>, add a key-value pair to <em>result</em> where the key is <code>@id</code>
and the value is the result of expanding <em>value</em> according to the
- <a href="#url-expansion">URL Expansion algorithm</a> passing <code>true</code> for the
+ <a href="#iri-expansion">IRI Expansion algorithm</a> passing <code>true</code> for the
<em>documentRelative</em> flag. Then return <em>result</em>.</li>
<li>Add a key-value pair to <em>result</em> where the key is <code>@value</code>
and the value is <em>value</em>.</li>
<li>If the <tref>active property</tref> has a <tref>type mapping</tref>, add a key-value
pair to <em>result</em> where the key is <code>@type</code> and the value is the
- <tref>URL</tref> associated with the <tref>type mapping</tref> or a newly
+ <tref>IRI</tref> associated with the <tref>type mapping</tref> or a newly
<a href="#generate-blank-node-identifier">generated blank node identifier</a> if the
<tref>type mapping</tref> is set to a <tref>blank node identifier</tref>.</li>
<li>Otherwise, if <em>value</em> is a <tref>string</tref> and the <tref>active property</tref> has a
@@ -1314,10 +1314,10 @@
<li>If <em>property</em> is a JSON-LD <tref>keyword</tref>
<ol class="algorithm">
<li>and <em>property</em> equals <code>@id</code>, compact <em>value</em>
- according the rules of the <a href="#url-compaction-algorithm">URL Compaction algorithm</a>.</li>
+ according the rules of the <a href="#iri-compaction-algorithm">IRI Compaction algorithm</a>.</li>
<li>Otherwise, if <em>property</em> equals <code>@type</code>, compact <em>value</em>
(or each item of <em>value</em> if it is an <tref>array</tref>) according the rules of the
- <a href="#url-compaction-algorithm">URL Compaction algorithm</a> with the
+ <a href="#iri-compaction-algorithm">IRI Compaction algorithm</a> with the
<em>vocabRelative</em> flag set to <code>true</code>. If <em>value</em> is an
<tref>array</tref> consisting of just one item, replace <em>value</em> with that item.</li>
<li>Otherwise, if <em>property</em> equals <code>@graph</code>, compact <em>value</em>
@@ -1325,7 +1325,7 @@
<tref>inverse context</tref>, and <em>property</em> as <tref>active property</tref>
ensuring that the result is an <tref>array</tref>.</li>
<li>Set <tref>active property</tref> to the result of performing
- <a href="#url-compaction-algorithm">URL Compaction</a> on <em>property</em>.</li>
+ <a href="#iri-compaction-algorithm">IRI Compaction</a> on <em>property</em>.</li>
<li>Set the <tref>active property</tref> member of <em>result</em> to <em>value</em>.</li>
<li>Continue with the next <em>property</em>-<em>value</em> pair from <em>element</em>.</li>
</li>
@@ -1334,7 +1334,7 @@
<li>If <em>value</em> is an empty <tref>array</tref>,
<ol class="algorithm">
<li>set <tref>active property</tref> to the result of performing
- <a href="#url-compaction-algorithm">URL Compaction</a> on <em>property</em> with the
+ <a href="#iri-compaction-algorithm">IRI Compaction</a> on <em>property</em> with the
<em>vocabRelative</em> flag set to <code>true</code>.</li>
<li>If <tref>active property</tref> is a <tref>JSON object</tref>, i.e., it is a
<tref>property generator</tref>, set <tref>active property</tref> to the result of performing the
@@ -1349,7 +1349,7 @@
<li>Otherwise perform the following steps for each <em>item</em> of <em>value</em>:
<ol class="algorithm">
<li>Set <tref>active property</tref> to the result of performing
- <a href="#url-compaction-algorithm">URL Compaction</a> on <em>property</em> with the
+ <a href="#iri-compaction-algorithm">IRI Compaction</a> on <em>property</em> with the
<em>vocabRelative</em> flag set to <code>true</code>.</li>
<li>If <tref>active property</tref> is a <tref>JSON object</tref>, i.e., it is a
<tref>property generator</tref>, set <tref>active property</tref> to the result of performing the
@@ -1404,33 +1404,33 @@
<p>If, after the algorithm outlined above is run, the resulting <em>element</em> is an <tref>array</tref>
replace it with a new <tref>JSON object</tref> with a single member whose name is the result of
- compacting the value <code>@graph</code> with the <a href="#url-compaction-algorithm">URL Compaction algorithm</a>
+ compacting the value <code>@graph</code> with the <a href="#iri-compaction-algorithm">IRI Compaction algorithm</a>
and whose value is <em>element</em>. Finally, add a <code>@context</code> property to <em>element</em>
and set it to the initially passed <em>context</em>.</p>
</section>
<section>
- <h2>URL Compaction Algorithm</h2>
+ <h2>IRI Compaction Algorithm</h2>
- <p>This section defines an algorithm for transforming an <tref>URL</tref> to a
- <tref>term</tref> or <tref>compact URL</tref>. If a <em>value</em> is passed
+ <p>This section defines an algorithm for transforming an <tref>IRI</tref> to a
+ <tref>term</tref> or <tref>compact IRI</tref>. If a <em>value</em> is passed
it is used to choose the best matching <tref>term</tref>.</p>
<p>This algorithm takes three mandatory and three optional parameters. The mandatory
- parameters are the <em>url</em> to be compacted, an <tref>active context</tref>,
+ parameters are the <em>iri</em> to be compacted, an <tref>active context</tref>,
and an <tref>inverse context</tref>. Optionally it is possible to pass a <em>value</em>,
- a <em>vocabRelative</em> flag which specifies whether the passed <em>url</em>
+ and a <em>vocabRelative</em> flag which specifies whether the passed <em>iri</em>
should be compacted using the <tref title="active context">active context's</tref>
- <tref>vocabulary mapping</tref>, and a base <tref>URL</tref> which, when passed, is used
- to transform the passed <em>url</em> to a <tref title="relative URL">relative URLs</tref>
+ <tref>vocabulary mapping</tref>, and a base <tref>IRI</tref> which, when passed, is used
+ to transform the passed <em>iri</em> to a <tref title="relative IRI">relative IRIs</tref>
if the <em>vocabRelative</em> flag is set to false (which is its default value).</p>
- <p>The algorithm for generating a <tref>compact URL</tref> is:</p>
+ <p>The algorithm for generating a <tref>compact IRI</tref> is:</p>
<ol class="algorithm">
<li>Initialize a variable <em>result</em> to <tref>null</tref>.</li>
<li>If the <em>vocabRelative</em> flag is set to <code>true</code> and an entry for
- <em>url</em> exists in the <tref>inverse context</tref>, perform the following steps:
+ <em>iri</em> exists in the <tref>inverse context</tref>, perform the following steps:
<ol class="algorithm">
<li>If a <em>value</em> has been passed, perform the following steps:
<ol class="algorithm">
@@ -1505,45 +1505,45 @@
<code>term</code> member, return <em>result</em>.</li>
</ol>
</li>
- <li>Otherwise, if the entry for <em>url</em> in the <tref>inverse context</tref>
+ <li>Otherwise, if the entry for <em>iri</em> in the <tref>inverse context</tref>
has a <code>term</code> member, return its value.</li>
</ol>
</li>
- <li>For each <em>termUrl</em>-<em>termDefinition</em> pair in <tref>inverse context</tref>
- sorted in reverse order by <em>termUrl</em> the (longest <em>termUrl</em> comes first),
+ <li>For each <em>termIri</em>-<em>termDefinition</em> pair in <tref>inverse context</tref>
+ sorted in reverse order by <em>termIri</em> the (longest <em>termIri</em> comes first),
perform the following steps:
<ol class="algorithm">
<li>If <em>termDefinition</em> does not have a <code>term</code> member, i.e., it is
- a property generator, continue with the next <em>termUrl</em>-<em>termDefinition</em>
+ a property generator, continue with the next <em>termIri</em>-<em>termDefinition</em>
pair from <tref>inverse context</tref>.</li>
- <li>Otherwise, if <em>url</em> begins with <em>termUrl</em> and is longer than
- <em>termUrl</em>, generate a <tref>compact URL</tref> by concatenating the value
+ <li>Otherwise, if <em>iri</em> begins with <em>termIri</em> and is longer than
+ <em>termIri</em>, generate a <tref>compact IRI</tref> by concatenating the value
of the <code>term</code> member of <em>termDefinition</em> with a colon
- (<code>:</code>) character and the unmatched part of <em>url</em>.</li>
- <li>If the resulting <tref>compact URL</tref> has an entry in the <tref>active context</tref>
- and the <em>vocabRelative</em> flag is set to <code>true</code> or the <tref>URL mapping</tref>
- does not correspond to <em>url</em>, continue with the next <em>termUrl</em>-<em>termDefinition</em>
- pair from <tref>inverse context</tref> as the <tref>compact URL</tref> cannot be used.</li>
- <li>Otherwise, if result is <tref>null</tref>, return the <tref>compact URL</tref>; if it is
- not null, set the <code>term</code> member of <em>result</em> to the <tref>compact URL</tref>
+ (<code>:</code>) character and the unmatched part of <em>iri</em>.</li>
+ <li>If the resulting <tref>compact IRI</tref> has an entry in the <tref>active context</tref>
+ and the <em>vocabRelative</em> flag is set to <code>true</code> or the <tref>IRI mapping</tref>
+ does not correspond to <em>iri</em>, continue with the next <em>termIri</em>-<em>termDefinition</em>
+ pair from <tref>inverse context</tref> as the <tref>compact IRI</tref> cannot be used.</li>
+ <li>Otherwise, if result is <tref>null</tref>, return the <tref>compact IRI</tref>; if it is
+ not null, set the <code>term</code> member of <em>result</em> to the <tref>compact IRI</tref>
and return <em>result</em>.</li>
</ol>
</li>
- <li>If the <em>vocabRelative</em> flag is set to <code>false</code> and a base <tref>URL</tref> has
- been passed, transform <em>url</em> to a <tref>relative URL</tref>.</li>
+ <li>If the <em>vocabRelative</em> flag is set to <code>false</code> and a base <tref>IRI</tref> has
+ been passed, transform <em>iri</em> to a <tref>relative IRI</tref>.</li>
<li>Otherwise, if the <em>vocabRelative</em> flag is set to <code>true</code>, the
- <tref>active context</tref> has a <tref>vocabulary mapping</tref>, and <em>url</em>
- begins with the URL of the <tref>vocabulary mapping</tref> but is longer
+ <tref>active context</tref> has a <tref>vocabulary mapping</tref>, and <em>iri</em>
+ begins with the IRI of the <tref>vocabulary mapping</tref> but is longer
<ol class="algorithm">
- <li>Set <em>vocabUrl</em> to the unmatched part of <em>url</em>.</li>
- <li>If there does not exist an entry for <em>vocabUrl</em> in the <tref>active context</tref>,
- return <em>vocabUrl</em> if <em>result</em> is <tref>null</tref>; if it is not
+ <li>Set <em>vocabIri</em> to the unmatched part of <em>iri</em>.</li>
+ <li>If there does not exist an entry for <em>vocabIri</em> in the <tref>active context</tref>,
+ return <em>vocabIri</em> if <em>result</em> is <tref>null</tref>; if it is not
<tref>null</tref> set the <code>term</code> member of <em>result</em> to
- <em>vocabUrl</em> and return <em>result</em>.</li>
+ <em>vocabIri</em> and return <em>result</em>.</li>
</ol>
</li>
- <li>If <em>result</em> is <tref>null</tref>, return <em>url</em> as is.</li>
- <li>Otherwise set the <code>term</code> member of <em>result</em> to <em>url</em> and
+ <li>If <em>result</em> is <tref>null</tref>, return <em>iri</em> as is.</li>
+ <li>Otherwise set the <code>term</code> member of <em>result</em> to <em>iri</em> and
return <em>result</em>.</li>
</ol>
</section>
@@ -1553,14 +1553,14 @@
<p>An <tref>active context</tref> as produced by the
<a href="#context-processing">Context Processing</a> algorithm is very
- efficient for <a href="#url-expansion">expanding</a>
- <tref title="term">terms</tref> and <tref title="compact URL">compact URLs</tref>
- to <tref title="URL">URLs</tref> but is of limited use for the opposite
- operation: <a href="#url-compaction-algorithm">URL compaction</a>. Hence,
+ efficient for <a href="#iri-expansion">expanding</a>
+ <tref title="term">terms</tref> and <tref title="compact IRI">compact IRIs</tref>
+ to <tref title="IRI">IRIs</tref> but is of limited use for the opposite
+ operation: <a href="#iri-compaction-algorithm">IRI compaction</a>. Hence,
this algorithm introduces the notion of an <tref>inverse context</tref>
- which brings the same efficiency to <a href="#url-compaction-algorithm">URL compaction</a>.
+ which brings the same efficiency to <a href="#iri-compaction-algorithm">IRI compaction</a>.
An <tdef>inverse context</tdef> is a tree of <tref title="JSON object">JSON objects</tref>
- which allow to efficiently select a <tref>term</tref> for a <tref>URL</tref>-value
+ which allow to efficiently select a <tref>term</tref> for a <tref>IRI</tref>-value
pair. Consider the following <tref>context</tref>:</p>
<pre class="example" data-transform="updateExample"
@@ -1583,7 +1583,7 @@
</pre>
<p>The corresponding <tref>inverse context</tref> looks as shown below. All entries of
- the <tref>context</tref> above are first indexed by <tref>URL</tref>, followed by
+ the <tref>context</tref> above are first indexed by <tref>IRI</tref>, followed by
their <tref>container mapping</tref>, and finally by their
<tref title="language mapping">language</tref> or <tref>type mapping</tref>. If a
specific mapping is not set or <tref>null</tref>, the entry is indexed under the
@@ -1642,7 +1642,7 @@
<p>Please note that the <tref>property generator</tref> <code>gender</code> and the <tref>term</tref>
<code>name</code> are included twice in <tref>inverse context</tref>. While <code>gender</code>
- is included once for each <tref>URL</tref> it is mapped to, <code>name</code> is included
+ is included once for each <tref>IRI</tref> it is mapped to, <code>name</code> is included
twice since it has neither a <tref>type mapping</tref> nor a <tref>language mapping</tref>.
It can thus be used for <tref title="string">strings</tref> without an associated language
(the first entry), or all other (untyped) <tref title="JSON-LD value">values</tref>.</p>
@@ -1656,7 +1656,7 @@
<li>For each <tref>term definition</tref> in the <tref>active context</tref>
perform the following steps:
<ol class="algorithm">
- <li>If the <tref title="term">term's</tref> <tref>URL mapping</tref> is set to
+ <li>If the <tref title="term">term's</tref> <tref>IRI mapping</tref> is set to
<tref>null</tref> continue with the next <tref>term definition</tref>.</li>
<li>Set <em>container</em> to the value of the <tref title="term">term's</tref>
<tref>container mapping</tref> or <code>@null</code> if no such mapping exists.</li>
@@ -1664,22 +1664,22 @@
to <code>propertyGenerators</code>.</li>
<li>Otherwise set set <em>termType</em> to <code>term</code> and append the
<tref>term</tref> to the <code>term</code> member of the <tref>JSON object</tref> for
- the <tref title="term">term's</tref> URL in <tref>inverse context</tref>
- (append <em>term</em> to <code>inverseContext[url]['term']</code>).</li>
- <li>For each <em>url</em> mapped to the <tref>term</tref>, perform the following steps:
+ the <tref title="term">term's</tref> IRI in <tref>inverse context</tref>
+ (append <em>term</em> to <code>inverseContext[iri]['term']</code>).</li>
+ <li>For each <em>iri</em> mapped to the <tref>term</tref>, perform the following steps:
<ol class="algorithm">
<li>If the <tref>term</tref> has a <tref>type mapping</tref> to <em>type</em>,
append the <tref>term</tref> to
- <code>inverseContext[url][container]['@type'][type][termType]</code> (e.g.,
+ <code>inverseContext[iri][container]['@type'][type][termType]</code> (e.g.,
<code>inverseContext['http://...']['@list']['@type']['http://...']['term']</code>).</li>
<li>Otherwise, if the <tref>term</tref> has a <tref>language mapping</tref> store the
associated language in <em>language</em>, replacing <tref>null</tref> with
<code>@null</code>. Then append the <tref>term</tref> to
- <code>inverseContext[url][container]['@language'][language][termType]</code> (e.g.,
+ <code>inverseContext[iri][container]['@language'][language][termType]</code> (e.g.,
<code>inverseContext['http://...']['@list']['@language']['de']['term']</code>).</li>
<li>Otherwise append the <tref>term</tref> to
- <code>inverseContext[url][container]['@null']['@null'][termType]</code> as well as
- <code>inverseContext[url][container]['@language'][defaultLanguage][termType]</code>
+ <code>inverseContext[iri][container]['@null']['@null'][termType]</code> as well as
+ <code>inverseContext[iri][container]['@language'][defaultLanguage][termType]</code>
to take the <tref>default language</tref> into consideration for terms without
explicit <tref>language mapping</tref>.</li>
</ol>
@@ -1701,14 +1701,14 @@
<p>It is possible that multiple <tref title="term">terms</tref> that differ
in their <tref title="container mapping">container</tref>,
<tref title="type mapping">type</tref>, or <tref>language mapping</tref> are
- mapped to the same <tref>URL</tref>. The purpose of this algorithm is to query
+ mapped to the same <tref>IRI</tref>. The purpose of this algorithm is to query
the <tref>inverse context</tref> to return either the best matching <tref>term</tref>,
or a list of potential <tref title="property generator">property generators</tref>
along with a <tref>term</tref> to fall back to if none of the
<tref title="property generator">property generators</tref> can be applied.</p>
<p>This algorithm takes an <em>inverseContextSubtree</em>, a <em>queryPath</em>
- as generated by the <a href="#url-compaction-algorithm">URL Compaction algorithm</a>
+ as generated by the <a href="#iri-compaction-algorithm">IRI Compaction algorithm</a>
and a <em>level</em> parameter which is initialized to <code>0</code> if nothing else
is passed. The algorithm returns either a <tref>string</tref> representing the best matching
<tref>term</tref> or a <tref>JSON object</tref> consisting of a
@@ -1776,7 +1776,7 @@
<tref>container mapping</tref> set to <code>@annotation</code> and <em>value</em>
has an <code>@annotation</code> member which equals <em>containerValue</em>, remove that member.</li>
<li>If <em>value</em> is a <tref>JSON object</tref> having a single member <code>@id</code>,
- return the result of performing <a href="#url-compaction-algorithm">URL Compaction</a> on that
+ return the result of performing <a href="#iri-compaction-algorithm">IRI Compaction</a> on that
member's value.</li>
<li>Otherwise, if <em>value</em> is a <tref>JSON object</tref> having a <code>@value</code>
member, perform the following steps:
@@ -1810,7 +1810,7 @@
<section>
<h2>Find and Remove Property Generator Duplicates</h2>
- <p>This algorithm checks if a specific value exists for all <tref title="URL">URLs</tref>
+ <p>This algorithm checks if a specific value exists for all <tref title="IRI">IRIs</tref>
associated with a <tref>property generator</tref> and if so, it removes them. The
algorithm takes five parameters: <em>element</em>, <em>property</em>, <em>value</em>,
<tref>active context</tref>, <tref>active property</tref>.</p>
@@ -1820,7 +1820,7 @@
value of the <code>propertyGenerators</code> member of <tref>active property</tref> perform
the following steps:
<ol class="algorithm">
- <li>Check that a member exists for each <tref>URL</tref> associated with the
+ <li>Check that a member exists for each <tref>IRI</tref> associated with the
<em>propertyGenerator</em>. If <em>value</em> is not <tref>null</tref> also check
whether each of those members that contains <em>value</em>. Values are considered to be equal
if they are of the same type and have the same value(s); <tref title="node object">node objects</tref>
@@ -1885,7 +1885,7 @@
<p>This algorithm creates a <tref>JSON object</tref> <em>nodeMap</em> holding an indexed
representation of the <tref title="JSON-LD graph">graphs</tref> and <tref title="node">nodes</tref>
represented in the passed, expanded document. All <tref title="node">nodes</tref> that are not
- uniquely identified by an URL get assigned a (new) <tref>blank node identifier</tref>.
+ uniquely identified by an IRI get assigned a (new) <tref>blank node identifier</tref>.
The resulting <em>nodeMap</em> will have a member for every graph in the document whose
value is another object with a member for every <tref>node</tref> represented in the document.
The default graph is stored under the <code>@default</code> member, all other graphs are
@@ -2064,7 +2064,7 @@
</li>
<li id="processing-step-subject">If <em>element</em> has a <code>@id</code> property,
the value MUST be a <tref>string</tref>, set the <tref>active subject</tref> to the previously
- expanded value (either a <tref>blank node</tref> or an <tref>URL</tref>).</li>
+ expanded value (either a <tref>blank node</tref> or an <tref>IRI</tref>).</li>
<li>
Otherwise, if <em>element</em> does not have a <code>@id</code> property, set the <tref>active
subject</tref> to newly generated <tref>blank node</tref>.</li>
@@ -2081,7 +2081,7 @@
and null values for <tref>active subject</tref> and <tref>active property</tref> and then
proceed to next property.</li>
<li>Otherwise, if <em>property</em> is a <tref>keyword</tref>, skip this step.</li>
- <li>Otherwise, set <tref>active property</tref> to the <tref>expanded URL form</tref> of <em>property</em>.</li>
+ <li>Otherwise, set <tref>active property</tref> to the <tref>expanded IRI form</tref> of <em>property</em>.</li>
<li>Process <em>value</em> recursively using this algorithm, passing copies of
<tref>active subject</tref>, <tref>active property</tref> and <tref>graph name</tref>.
</li>
@@ -2098,7 +2098,7 @@
<tref>active subject</tref>, <tref>active property</tref>, and <tref>graph name</tref>.</li>
<li>Otherwise, if <em>element</em> is a <tref>string</tref>, then the <tref>active property</tref>
- must be <code>rdf:type</code> so set the <tref>active object</tref> to an <tref>URL</tref>.</li>
+ must be <code>rdf:type</code> so set the <tref>active object</tref> to an <tref>IRI</tref>.</li>
<li>If any of these steps created an <tref>active object</tref> and neither <tref>active subject</tref>
nor <tref>active property</tref> are <tref>null</tref>, generate a <tref>Quad</tref> using
@@ -2200,16 +2200,16 @@
does not contain an entry for <em>name</em>,
create a new entry for <em>name</em> from a new
<tref>JSON object</tref> with key/value pair of <code>@id</code> and
- <em>name</em> represented in <tref>expanded URL form</tref>.</li>
+ <em>name</em> represented in <tref>expanded IRI form</tref>.</li>
<li>Set <em>value</em> as the entry from <em>graph.nodes</em> for
<em>subject</em>, initializing it to a new
<tref>JSON object</tref> with key/value pair of <code>@id</code> and
- <em>subject</em> represented in <tref>expanded URL form</tref> if necessary.</li>
+ <em>subject</em> represented in <tref>expanded IRI form</tref> if necessary.</li>
<li>If <em>property</em> is <code>rdf:type</code>, <em>object</em> is not a <tref>JSON-LD value</tref>, and the
<code class="idlMemberName"><a href="#widl-JsonLdOptions-useRdfType">useRdfType</a></code>
option is not present or <tref>false</tref>:
<ol class="algorithm">
- <li>Append <em>object</em> represented in <tref>expanded URL form</tref> to the array value for the
+ <li>Append <em>object</em> represented in <tref>expanded IRI form</tref> to the array value for the
key <code>@type</code>, creating an entry in <em>value</em> if necessary.</li>
</ol>
</li>
@@ -2240,14 +2240,14 @@
<li>Otherwise, if <em>object</em> is <code>rdf:nil</code>:
<ol class="algorithm">
- <li>Let <em>key</em> be <em>property</em> expressed in <tref>expanded URL form</tref>.</li>
+ <li>Let <em>key</em> be <em>property</em> expressed in <tref>expanded IRI form</tref>.</li>
<li>Append an empty <code>@list</code> representation to the array value for
<em>key</em>, creating an entry in <em>value</em> if necessary.</li>
</ol>
</li>
<li>Otherwise,
<ol class="algorithm">
- <li>Let <em>key</em> be <em>property</em> expressed in <tref>expanded URL form</tref> and let
+ <li>Let <em>key</em> be <em>property</em> expressed in <tref>expanded IRI form</tref> and let
<em>object representation</em>
be <em>object</em> represented in <tref>expanded form</tref> as described in
<a href="#value-expansion">Value Expansion</a>.</li>
@@ -2392,14 +2392,14 @@
<dl class="parameters">
<dt>(object or object[] or DOMString) input</dt>
<dd>The JSON-LD object or array of JSON-LD objects to perform the expansion upon or an
- <tref>URL</tref> referencing the JSON-LD document to expand.</dd>
+ <tref>IRI</tref> referencing the JSON-LD document to expand.</dd>
<dt>JsonLdCallback callback</dt>
<dd>A callback that is called when processing completed successfully
on the given <code>input</code>, or a fatal error prevented
processing from completing.</dd>
<dt>optional JsonLdOptions? options</dt>
<dd>A set of options to configure the used algorithms such. This allows, e.g.,
- to set the input document's base <tref>URL</tref>.</dd>
+ to set the input document's base <tref>IRI</tref>.</dd>
</dl>
</dd>
@@ -2412,17 +2412,17 @@
<dl class="parameters">
<dt>(object or object[] or DOMString) input</dt>
<dd>The JSON-LD object or array of JSON-LD objects to perform the compaction upon or an
- <tref>URL</tref> referencing the JSON-LD document to compact.</dd>
+ <tref>IRI</tref> referencing the JSON-LD document to compact.</dd>
<dt>(object or DOMString) context</dt>
<dd>The context to use when compacting the <code>input</code>; either in the
- form of an <tref>JSON object</tref> or as <tref>URL</tref>.</dd>
+ form of an <tref>JSON object</tref> or as <tref>IRI</tref>.</dd>
<dt>JsonLdCallback callback</dt>
<dd>A callback that is called when processing completed successfully
on the given <code>input</code>, or a fatal error prevented
processing from completing.</dd>
<dt>optional JsonLdOptions? options</dt>
<dd>A set of options to configure the used algorithms such. This allows, e.g.,
- to set the input document's base <tref>URL</tref>. This also includes
+ to set the input document's base <tref>IRI</tref>. This also includes
the <code>optimize</code> flag, which, if set, will allow processor-specific
optimization.</dd>
</dl>
@@ -2436,11 +2436,11 @@
<dl class="parameters">
<dt>(object or object[] or DOMString) input</dt>
- <dd>The JSON-LD object or array of JSON-LD objects or an <tref>URL</tref>
+ <dd>The JSON-LD object or array of JSON-LD objects or an <tref>IRI</tref>
referencing the JSON-LD document to flatten.</dd>
<dt>(object or DOMString)? context</dt>
<dd>The context to use when compacting the flattened <code>input</code>; either
- in the form of an <tref>JSON object</tref> or as <tref>URL</tref>. If
+ in the form of an <tref>JSON object</tref> or as <tref>IRI</tref>. If
<tref>null</tref> is passed, the result will not be compacted but keept
in expanded form.</dd>
<dt>JsonLdCallback callback</dt>
@@ -2449,7 +2449,7 @@
processing from completing.</dd>
<dt>optional JsonLdOptions? options</dt>
<dd>A set of options to configure the used algorithms such. This allows, e.g.,
- to set the input document's base <tref>URL</tref>.</dd>
+ to set the input document's base <tref>IRI</tref>.</dd>
</dl>
</dd>
</dl>
@@ -2489,14 +2489,14 @@
<p>The <a>JsonLdOptions</a> type is used to pass various options to the <a>JsonLdProcessor</a> methods.</p>
<dl title="dictionary JsonLdOptions" class="idl">
<dt>DOMString base</dt>
- <dd>The Base URL to use when expanding the document. This overrides the value of
- <em>input</em> if it is a <a>URL</a>. If not specified and <em>input</em> is not
- an <a>URL</a>, the base URL defaults to the current document URL if in a browser context,
+ <dd>The Base IRI to use when expanding the document. This overrides the value of
+ <em>input</em> if it is a <a>IRI</a>. If not specified and <em>input</em> is not
+ an <a>IRI</a>, the base IRI defaults to the current document IRI if in a browser context,
or the empty string if there is no document context.
<p class="issue atrisk" title="Feature at risk">The default value of this option
- implies that all URLs that cannot be compacted otherwise are transformed to relative URLs
+ implies that all IRIs that cannot be compacted otherwise are transformed to relative IRIs
during compaction. To avoid that data is being lost, developers thus have to store the
- base URL along with the compacted document. This might be problematic in practice and
+ base IRI along with the compacted document. This might be problematic in practice and
thus the default behavior might be changed in future.</p>
</dd>
<dt>object or DOMString expandContext = null</dt>
@@ -2516,7 +2516,7 @@
</dd>
<dt>boolean useRdfType = false</dt>
<dd>If set to <code>true</code>, the JSON-LD processor will use the
- expanded <code>rdf:type</code> URL as the property instead of
+ expanded <code>rdf:type</code> IRI as the property instead of
<code>@type</code> when <a href="#convert-from-rdf-algorithm">converting from RDF</a>.
</dd>
<dt>boolean useNativeTypes = true</dt>
@@ -2580,18 +2580,18 @@
or <tref>null</tref> and thus invalid.</dd>
<dt>invalid vocab mapping</dt>
<dd>An invalid <tref>vocabulary mapping</tref> has been detected, i.e.,
- it is neither an <tref>absolute URL</tref> nor <tref>null</tref>.</dd>
+ it is neither an <tref>absolute IRI</tref> nor <tref>null</tref>.</dd>
<dt>invalid term definition</dt>
<dd>An invalid <tref>term definition</tref> has been detected.</dd>
- <dt>invalid term URL mapping</dt>
+ <dt>invalid term IRI mapping</dt>
<dd>A <tref>local context</tref> contains a <tref>term</tref> that
- has not been mapped to an <tref>absolute URL</tref>.</dd>
- <dt>cyclic URL mapping</dt>
- <dd>A cycle in <tref title="URL mapping">URL mappings</tref> has been detected.</dd>
+ has not been mapped to an <tref>absolute IRI</tref>.</dd>
+ <dt>cyclic IRI mapping</dt>
+ <dd>A cycle in <tref title="IRI mapping">IRI mappings</tref> has been detected.</dd>
<dt>invalid type mapping</dt>
<dd>An <code>@type</code> member in a <tref>term definition</tref>
was encountered whose value could not be expanded to an
- <tref>absolute URL</tref>.</dd>
+ <tref>absolute IRI</tref>.</dd>
<dt>invalid language mapping</dt>
<dd>An <code>@language</code> member in a <tref>term definition</tref>
was encountered whose value was neither a <tref>string</tref> nor
@@ -2603,14 +2603,14 @@
<dt>invalid property generator</dt>
<dd>A non-<tref>string</tref> value has been detected in a
<tref title="property generator">property generator's</tref>
- <tref>URL mapping</tref>.</dd>
- <dt>invalid property generator URL mapping</dt>
+ <tref>IRI mapping</tref>.</dd>
+ <dt>invalid property generator IRI mapping</dt>
<dd>Expanding all values of a
<tref title="property generator">property generator's</tref>
- <tref>URL mapping</tref> to <tref>absolute URL</tref> failed.</dd>
+ <tref>IRI mapping</tref> to <tref>absolute IRI</tref> failed.</dd>
<dt>property generator in term definition</dt>
<dd>A <tref>property generator</tref> was used in the
- <tref>URL mapping</tref> of another <tref>term</tref> or
+ <tref>IRI mapping</tref> of another <tref>term</tref> or
<tref>property generator</tref>.</dd>
<dt>invalid type value</dt>
<dd>An invalid value for a <code>@type</code> member has been detected,
--- a/spec/latest/json-ld-syntax/index.html Tue Jan 15 17:39:01 2013 +0100
+++ b/spec/latest/json-ld-syntax/index.html Tue Jan 15 18:10:35 2013 +0100
@@ -166,9 +166,9 @@
<p><tdef>Linked Data</tdef> is a technique for creating a network
of inter-connected data across different documents and Web sites. In general,
- Linked Data has four properties: 1) it uses <tref title="URL">URLs</tref>
- to name things; 2) it uses HTTP <tref title="URL">URLs</tref>
- for those names; 3) the name <tref title="URL">URLs</tref>, when dereferenced,
+ Linked Data has four properties: 1) it uses <tref title="IRI">IRIs</tref>
+ to name things; 2) it uses HTTP <tref title="IRI">IRIs</tref>
+ for those names; 3) the name <tref title="IRI">IRIs</tref>, when dereferenced,
provide more information about the name; and 4) the data expresses links
to data on other Web sites. These properties allow data published on the Web
to work much like Web pages do today. One can start at one piece of Linked Data,
@@ -185,9 +185,9 @@
<ul>
<li>a universal identifier mechanism for <tref title="JSON object">JSON objects</tref> via the
- use of <tref title="URL">URLs</tref>,</li>
+ 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 title="URL">URLs</tref> 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>
@@ -330,7 +330,7 @@
<dd>The <tref>null</tref> value. A key-value pair in the
<code>@context</code> where the value, or the <code>@id</code> of the
value, is <tref>null</tref> explicitly decouples a term's association
- with an URL. A key-value pair in the body of a JSON-LD document whose
+ with an IRI. A key-value pair in the body of a JSON-LD document whose
value is <tref>null</tref> has the same meaning as if the key-value pair
was not defined. If <code>@value</code>, <code>@list</code>, or
<code>@set</code> is set to <tref>null</tref> in expanded form, then
@@ -384,12 +384,12 @@
<a href="#data-annotations"></a>.</dd>
<dt><code>@vocab</code></dt>
<dd>Used to expand properties and values in <code>@type</code> with a common prefix
- <tref>URL</tref>. This keyword is described in section <a href="#urls"></a>.</dd>
+ <tref>IRI</tref>. This keyword is described in section <a href="#iris"></a>.</dd>
<dt><code>@graph</code></dt><dd>Used to explicitly label a <tref>JSON-LD graph</tref>.
This keyword is described in <a href="#named-graphs"></a>.</dd>
<dt><code>:</code></dt>
<dd>The separator for JSON keys and values that use
- <tref title="compact URL">compact URLs</tref>.</dd>
+ <tref title="compact IRI">compact IRIs</tref>.</dd>
</dl>
<p>For the avoidance of doubt, all keys, <tref title="keyword">keywords</tref>, and values in JSON-LD are
@@ -416,17 +416,17 @@
<h2>The Context</h2>
<p>In JSON-LD, a <tdef>context</tdef> is used to map <tref title="term">terms</tref>, i.e., properties with associated
- values in an JSON document, to <tref title="URL">URLs</tref>.</p>
-<p>The Web uses <tref title="URL">URLs</tref> for unambiguous identification. The
+ values in an JSON document, to <tref title="IRI">IRIs</tref>.</p>
+<p>The Web uses <tref title="IRI">IRIs</tref> for unambiguous identification. The
idea is that these <tref title="term">terms</tref> 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 <tref title="term">terms</tref> to expand to URLs so that
+ give them an unambiguous identifier. That is, it is useful for <tref title="term">terms</tref> to expand to IRIs so that
developers don't accidentally step on each other's <tdef>vocabulary</tdef> terms and other resources. Furthermore, developers, and
- machines, are able to use this <tref>URL</tref> (by plugging it directly into a web browser, for instance) to go to
+ machines, are able to use this <tref>IRI</tref> (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 analogous to 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. <tref title="URL">URLs</tref> provide a way to
+ Developers and machines need the same sort of definition of terms. <tref title="IRI">IRIs</tref> provide a way to
ensure that these terms are unambiguous. For example, the term <code>name</code> may
- map directly to the URL <code>http://xmlns.com/foaf/0.1/name</code>. This allows JSON-LD documents to be constructed
+ 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.</p>
@@ -436,7 +436,7 @@
</p>
<p>In a JSON-LD document, the mapping between <tref title="term">terms</tref> and
- <tref title="URL">URLs</tref> is typically collected in a <tref>context definition</tref>
+ <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"
@@ -494,9 +494,9 @@
<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 <tref title="URL">URLs</tref>.
-Mapping those keys to URLs gives the data global context. If two
-developers use the same URL to describe a property, they are more than likely
+terms map to <tref title="IRI">IRIs</tref>.
+Mapping those keys to IRIs gives the data global context. If two
+developers use the same IRI 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, language or additional information
@@ -662,48 +662,39 @@
<p class="note">The example above does not use the <code>@id</code> <tref>keyword</tref>
to identify the node being described above. This type of node is called a
<tref>blank node</tref>. It is advised that all <tref title="node object">node objects</tref>
- in JSON-LD are identified by <tref title="URL">URLs</tref> via the <code>@id</code>
+ in JSON-LD are identified by <tref title="IRI">IRIs</tref> via the <code>@id</code>
keyword unless the data is not intended to be linked to from other data sets.</p>
</section>
<section>
-<h2>URLs</h2>
-
-<p>Throughout this specification, the term <tdef>URL</tdef> means
- <abbr title="Internationalized Resource Identifier">IRI</abbr> as defined in [[!RFC3987]].
- The reason we use the term <tref>URL</tref> instead is because it is more familiar
- to Web developers.</p>
-
-<p><tref title="URL">URLs</tref> are fundamental to <tref>Linked Data</tref> as
+<h2>IRIs</h2>
+
+<p><tref title="IRI">IRIs</tref> (Internationalized Resource Identifiers) are fundamental to <tref>Linked Data</tref> as
that is how most <tref title="node">nodes</tref> and <tref title="property">properties</tref>
- are identified. <tref title="URL">URLs</tref> can be expressed in a variety of different ways in JSON-LD:</p>
+ 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
- key position in a <tref>JSON object</tref> that have a mapping in the <tref>active context</tref> expand to an <tref>URL</tref>. If there's a <code>@vocab</code>
+ key position in a <tref>JSON object</tref> that have a mapping in the <tref>active context</tref> expand to an <tref>IRI</tref>. If there's a <code>@vocab</code>
mapping in the active context also <tref title="term">terms</tref> without an explicit mapping
- in the active context are expanded to an <tref>URL</tref>.</li>
- <li>An <tref>URL</tref> is generated for the <tref>string</tref> value specified using
+ in the active context are expanded to an <tref>IRI</tref>.</li>
+ <li>An <tref>IRI</tref> is generated for the <tref>string</tref> value specified using
<code>@id</code> or <code>@type</code>.</li>
- <li>An <tref>URL</tref> is generated for the <tref>string</tref> value of any key for which there
+ <li>An <tref>IRI</tref> is generated for the <tref>string</tref> value of any key for which there
are <tref>coercion</tref> rules in effect that identify the value as an <code>@id</code>.</li>
</ol>
-<p>URLs may be represented as an <tref>absolute URL</tref> or a <tref>relative URL</tref>.</p>
-
-<p>An <tdef>absolute URL</tdef> corresponds to an absolute
- <abbr title="Internationalized Resource Identifier">IRI</abbr> as defined in [[!RFC3987]].
- It consists of a <em>scheme</em> along with <em>path</em> and optional <em>authority</em>,
- <em>query</em> and <em>fragment</em> segments. A <tdef>relative URL</tdef> is a relative
- <abbr title="Internationalized Resource Identifier">IRI</abbr> reference as defined in
- [[!RFC3987]]. In JSON-LD all <tref title="relative URL">relative URLs</tref> are resolved
- relative to the <tdef>base URL</tdef> associated with the document (typically the <tref>URL</tref>
- of the document itself).</p>
-
-<p>URLs can be expressed directly in the key position like so:</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 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>
<pre class="example" data-transform="updateExample"
- title="URL as a key">
+ title="IRI as a key">
<!--
{
...
@@ -714,11 +705,11 @@
</pre>
<p>In the example above, the key <code>http://xmlns.com/foaf/0.1/name</code> is interpreted
- as an <tref>URL</tref> because it contains a colon
+ as an <tref>IRI</tref> because it contains a colon
(<code>:</code>) and the 'http' <tref>prefix</tref> does not exist in
the context.</p>
-<p>Term expansion occurs for URLs if the value matches a <tref>term</tref> defined within the
+<p>Term expansion occurs for IRIs if the value matches a <tref>term</tref> defined within the
<tref>active context</tref>:</p>
<pre class="example" data-transform="updateExample"
@@ -739,13 +730,13 @@
<p><tref title="term">Terms</tref> are case sensitive.</p>
-<p>JSON keys that do not expand to an absolute URL are ignored, or removed
+<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 expand to unambiguous identifiers.</p>
<p><tref title="prefix">Prefixes</tref> are expanded when the form of the value is a
- <tref>compact URL</tref> represented as a <code>prefix:suffix</code>
+ <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>
@@ -764,12 +755,12 @@
-->
</pre>
-<p><code>foaf:name</code> above will automatically expand out to the URL
-<code>http://xmlns.com/foaf/0.1/name</code>. See <a href="#compact-urls"></a> for more details.</p>
+<p><code>foaf:name</code> above will automatically expand out to the IRI
+<code>http://xmlns.com/foaf/0.1/name</code>. See <a href="#compact-iris"></a> for more details.</p>
<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 URL</tref> or an <tref>absolute URL</tref>
+ 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).</p>
<pre class="example" data-transform="updateExample"
@@ -785,11 +776,11 @@
-->
</pre>
-<p>An <tref>URL</tref> is generated when a <tref>JSON object</tref> is used in the
+<p>An <tref>IRI</tref> is generated when a <tref>JSON object</tref> is used in the
value position that contains an <code>@id</code> keyword:</p>
<pre class="example" data-transform="updateExample"
- title="Expanded URL definition">
+ title="Expanded IRI definition">
<!--
{
...
@@ -801,14 +792,14 @@
<p>Specifying a <tref>JSON object</tref> with an
<code>@id</code> key is used to identify that <tref>node</tref> using an
- <tref>URL</tref>. When the object has only the <code>@id</code>, it
+ <tref>IRI</tref>. When the object has only the <code>@id</code>, it
is called a <tref>node object</tref>. This facility may also be used to link to another
<tref>node object</tref> using a mechanism called
<tref>embedding</tref>, which is covered in the section titled
<a href="#embedding"></a>.</p>
<p>If type <tref>coercion</tref> rules are specified in the <code>@context</code> for
-a particular <tref>term</tref> or property URL, an URL is generated:</p>
+a particular <tref>term</tref> or property IRI, an IRI is generated:</p>
<pre class="example" data-transform="updateExample"
title="Type coercion">
@@ -834,7 +825,7 @@
<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 URL when generating the <tref>JSON-LD graph</tref>.</p>
+the value into an IRI when generating the <tref>JSON-LD graph</tref>.</p>
</section>
@@ -842,12 +833,11 @@
<h2>Node Identifiers</h2>
<p>To be able to externally reference nodes in a graph, it is important that each <tref>node</tref> has
- an unambiguous identifier. <tref title="URL">URLs</tref> 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
- (for example, using a URL to retrieve a web page).
- Associating an URL with a node tells an application that the returned
+ de-referencing the identifier should result in a representation of that node.
+ Associating an IRI 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
@@ -877,7 +867,7 @@
-->
</pre>
-<p>The example above contains a <tref>node object</tref> identified by the URL
+<p>The example above contains a <tref>node object</tref> identified by the IRI
<code>http://example.org/people#joebob</code>.</p>
<p>Once defined, the <tref>node</tref>'s unique identifier can be used to refer to
@@ -918,7 +908,7 @@
<p>The type of a particular node can be specified using the <code>@type</code>
<tref>keyword</tref>. In <tref>Linked Data</tref>, types are uniquely
- identified with an <tref>URL</tref>.</p>
+ identified with an <tref>IRI</tref>.</p>
<pre class="example" data-transform="updateExample"
title="Specifying the type for a node">
@@ -1080,7 +1070,7 @@
</p>
<section>
- <h2>Compact URLs</h2>
+ <h2>Compact IRIs</h2>
<p>
<tref title="term">Terms</tref> in <tref>Linked Data</tref> documents may draw from
a number of different <tref title="vocabulary">vocabularies</tref>.
@@ -1091,38 +1081,38 @@
first is the cognitive load on the developer of remembering all 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 URL</tref> is introduced.</p>
+ the concept of a <tref>compact IRI</tref> is introduced.</p>
<p>
- A <tdef>compact URL</tdef> is a way of expressing an <tref>URL</tref>
+ A <tdef>compact IRI</tdef> is a way of expressing an <tref>IRI</tref>
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 [[RDFA-CORE]]. The <tdef>prefix</tdef> is a <tref>term</tref> taken from the
<tref>active context</tref> and is a short string identifying a
- particular <tref>URL</tref> in a JSON-LD document.
+ particular <tref>IRI</tref> 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 URL <code>http://xmlns.com/foaf/0.1/</code>. A developer may append
+ the IRI <code>http://xmlns.com/foaf/0.1/</code>. A developer may append
any of the FOAF <tref>vocabulary</tref> terms to the end of the prefix
- to specify a short-hand version of the <tref>absolute URL</tref> for the
+ to specify a short-hand version of the <tref>absolute IRI</tref> for the
<tref>vocabulary</tref> term. For example, <code>foaf:name</code> would
- be expanded out to the URL <code>http://xmlns.com/foaf/0.1/name</code>.
- Instead of having to remember and type out the entire URL, the developer
+ be expanded out to the IRI <code>http://xmlns.com/foaf/0.1/name</code>.
+ 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 title="compact URL">compact URLs</tref> 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>URL</tref>,
+ <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
occurrence of a colon (<code>:</code>). If the <tref>active context</tref>
- contains a term mapping for <em>prefix</em>, an URL is generated by
+ contains a term mapping for <em>prefix</em>, an IRI 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 <tref>absolute URL</tref>. If the prefix is an underscore
- (<code>_</code>), the URL remains unchanged.
+ as an <tref>absolute IRI</tref>. If the prefix is an underscore
+ (<code>_</code>), the IRI remains unchanged.
</p>
<p>Consider the following example:</p>
<pre class="example" data-transform="updateExample"
- title="Compact URLs">
+ title="Compact IRIs">
<!--
{
"@context":
@@ -1152,9 +1142,9 @@
<p>
In this example, two different <tref title="vocabulary">vocabularies</tref>
are referred to using prefixes. Those prefixes are then used as type and
- property values using the compact URL <code>prefix:suffix</code> notation.
+ property values using the compact IRI <code>prefix:suffix</code> notation.
</p>
- <p>It's also possible to use compact URLs within the context as shown in the
+ <p>It's also possible to use compact IRIs within the context as shown in the
following example:</p>
<pre class="example" data-transform="updateExample"
title="Using vocabularies">
@@ -1183,7 +1173,7 @@
<p>
A value with an associated type, also known as a
<tref>typed value</tref>, is indicated by associating a value with
- an <tref>URL</tref> which indicates the value's type. Typed values may be
+ an <tref>IRI</tref> which indicates the value's type. Typed values may be
expressed in JSON-LD in three ways:
</p>
@@ -1248,7 +1238,7 @@
<p>Both examples above would generate the value
<code>2010-05-29T14:17:39+02:00</code> with the type
<code>http://www.w3.org/2001/XMLSchema#dateTime</code>. Note that it is
- also possible to use a <tref>term</tref> or a <tref>compact URL</tref> to
+ also possible to use a <tref>term</tref> or a <tref>compact IRI</tref> to
express the value of a type.</p>
<p>The <code>@type</code> <tref>keyword</tref> is also used to associate a type
@@ -1417,7 +1407,7 @@
<p>
In order to use an external context with an ordinary JSON document, an author
-MUST specify an <tref>URL</tref> to a valid <tref>JSON-LD document</tref> 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>http://www.w3.org/ns/json-ld#context</code> link relation.
The referenced document MUST have a top-level <tref>node object</tref>. The
@@ -1472,10 +1462,10 @@
<a href="#type-coercion"></a> and
<a href="#sets-and-lists"></a>).</p>
-<p>Instead of using a string representation of an URL, the URL may be
+<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 URL</tref>, or an
-<tref>absolute URL</tref> as value.</p>
+and a <tref>term</tref>, a <tref>compact IRI</tref>, or an
+<tref>absolute IRI</tref> as value.</p>
<pre class="example" data-transform="updateExample"
title="Expanded term definition">
@@ -1529,15 +1519,15 @@
associated with any language code since <code>@language</code> was reset to
<tref>null</tref> in the <tref>expanded term definition</tref>.</p>
-<p>Expanded terms may also be defined using <tref title="compact URL">compact URLs</tref> or
- <tref title="absolute URL">absolute URLs</tref> as keys. If the definition does not include an
- <code>@id</code> key, the expanded URL is determined by performing expansion of the key
+<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 <tref>active context</tref>. This mechanism is mainly used to associate type or language
- information with a <tref>compact URL</tref> or an <tref>absolute URL</tref>.</p>
+ information with a <tref>compact IRI</tref> or an <tref>absolute IRI</tref>.</p>
<p class="note">While it is possible to define a
- <tref>compact URL</tref>, or an absolute URL to expand to some
- other unrelated URL (for example, <code>foaf:name</code> expanding to
+ <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>),
such usage is strongly discouraged.</p>
</section>
@@ -1547,23 +1537,23 @@
<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 title="URL">URLs</tref> to
+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 expands to an <tref>URL</tref>.
+ 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>URL</tref>.</p>
-
-<p><tref title="term">Terms</tref> or <tref title="compact URL">compact URLs</tref> used as the value of a
+ <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
<tref>term</tref> like <code>xsd</code> and then use <code>xsd:integer</code> within the same
context definition.</p>
<p>The example below demonstrates how a JSON-LD author can coerce values to
-<tref title="typed value">typed values</tref>, URLs 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">
@@ -1634,12 +1624,12 @@
</tbody>
</table>
-<p>Terms may also be defined using <tref title="absolute URL">absolute URLs</tref> or <tref title="compact URL">compact URLs</tref>.
+<p>Terms may also be defined using <tref title="absolute iri">absolute IRIs</tref> or <tref title="compact IRI">compact IRIs</tref>.
This allows coercion rules to be applied to keys which are not represented as a simple <tref>term</tref>.
For example:</p>
<pre class="example" data-transform="updateExample"
- title="Term definitions using compact and absolute URLs">
+ title="Term definitions using compact and absolute IRIs">
<!--
{
"@context":
@@ -1666,16 +1656,16 @@
-->
</pre>
-<p>In this case the <code>@id</code> definition in the term definition is optional, but if it does exist, the <tref>compact URL</tref>
- or <tref>URL</tref> is treated as a <tref>term</tref> (not a <code>prefix:suffix</code> construct)
+<p>In this case the <code>@id</code> definition in the term definition is optional, but if it does exist, the <tref>compact IRI</tref>
+ or <tref>IRI</tref> is treated as a <tref>term</tref> (not a <code>prefix:suffix</code> construct)
so that the actual definition of a <tref>prefix</tref> becomes unnecessary. 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>
<p class="note">Keys in the context are treated as <tref title="term">terms</tref> for the purpose of
- expansion and value coercion. At times, this may result in multiple representations for the same expanded URL.
+ expansion and value coercion. At times, this may result in multiple representations for the same expanded IRI.
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 URL</tref> (or even an
- absolute <tref>URL</tref>) to be defined as something else entirely. For example, one could specify that
+ 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
great deal of confusion among developers attempting to understand the JSON-LD document.</p>
@@ -1763,15 +1753,15 @@
</section>
<section>
- <h2>URL Expansion Within a Context</h2>
- <p>In general, normal URL expansion rules apply
- anywhere an URL is expected (see <a href="#urls"></a>). Within
+ <h2>IRI Expansion Within a Context</h2>
+ <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
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"
- title="URL expansion within a context">
+ title="IRI expansion within a context">
<!--
{
"@context":
@@ -1797,11 +1787,11 @@
and used as a <tref>prefix</tref> for the <code>@type</code> coercion
of the <code>age</code> property.</p>
-<p><tref title="term">Terms</tref> may also be used when defining the URL 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"
- title="Using a term to define the URL of another term within a context">
+ title="Using a term to define the IRI of another term within a context">
<!--
{
"@context":
@@ -1825,12 +1815,12 @@
-->
</pre>
-<p><tref title="compact URL">Compact URLs</tref>
- and <tref title="URL">URLs</tref> may be used on the left-hand side of a
+<p><tref title="compact IRI">Compact IRIs</tref>
+ 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"
- title="Using a compact URL as a term">
+ title="Using a compact IRI as a term">
<!--
{
"@context":
@@ -1853,24 +1843,24 @@
</pre>
<p>
-In this example, the <tref>compact URL</tref> form is used in two different
+In this example, the <tref>compact IRI</tref> form is used in two different
ways.
In the first approach, <code>foaf:age</code> declares both the
-<tref>URL</tref> for the <tref>term</tref> (using short-form) as well as the
+<tref>IRI</tref> for the <tref>term</tref> (using short-form) as well as the
<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 full <tref>URL</tref> for
+specified. The full <tref>IRI</tref> for
<code>foaf:homepage</code> is determined by looking up the <code>foaf</code>
<tref>prefix</tref> in the
<tref>context</tref>.
</p>
<p>
-<tref title="absolute URL">Absolute URLs</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"
- title="Associating context definitions with absolute URLs">
+ title="Associating context definitions with absolute IRIs">
<!--
{
"@context":
@@ -1894,7 +1884,7 @@
</pre>
<p>
-In order for the <tref>absolute URL</tref> to match above, the <tref>absolute URL</tref> needs to be used in the <tref>JSON-LD document</tref>. 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, <tref title="term">terms</tref>
@@ -2157,7 +2147,7 @@
</pre>
<p>The example above expresses a <em>named</em> <tref>JSON-LD graph</tref>
- that is identified by the <tref>URL</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. Metadata about the graph itself is also
expressed via the <code>generatedAt</code> property, which specifies when
@@ -2227,7 +2217,7 @@
<p>When <code>@graph</code> is used in a document's top-level object which
has no other <tref title="property">properties</tref> that are mapped
- to an <tref>URL</tref> or a <tref>keyword</tref> it is considered to
+ to an <tref>IRI</tref> or a <tref>keyword</tref> it is considered to
express the otherwise implicit default graph. This mechanism can be useful
when a number of <tref title="node">nodes</tref> thay may not directly
relate to one another through a property or where <tref>embedding</tref>
@@ -2318,7 +2308,7 @@
then be used elsewhere in the JSON-LD document to refer back to the
<tref>blank node</tref>. If a developer finds that they refer to the <tref>blank node</tref>
more than once, they should consider naming the node using a dereferenceable
- <tref>URL</tref> so that it can also be referenced from other documents.</p>
+ <tref>IRI</tref> so that it can also be referenced from other documents.</p>
</section>
<section>
@@ -2496,7 +2486,7 @@
<p>At times, it becomes necessary to explicitly ignore data expressed in JSON
documents because it has no semantic meaning. For example, when the
<code>@vocab</code> keyword is used, every key in a JSON-LD object is
- appended to the vocabulary <tref>URL</tref>. The author may not want that
+ appended to the vocabulary <tref>IRI</tref>. The author may not want that
behavior to apply to every key, and it may be easier to specify just the keys
that they want the JSON-LD processor to ignore. For this purpose, an author
may associate the <tref>null</tref> keyword with a <tref>term</tref> in the
@@ -2520,7 +2510,7 @@
</pre>
<p>In the example above, the author has used <code>@vocab</code> to expand all
- properties to <tref title="URL">URLs</tref> but has expressed that the
+ properties to <tref title="IRI">IRIs</tref> but has expressed that the
<code>databaseId</code> value should not be processed by the JSON-LD processor
by associating it with the <tref>null</tref> keyword in the JSON-LD Context.</p>
</section>
@@ -2530,7 +2520,7 @@
<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
- <code>@context</code> such that all URLs, types, and values
+ <code>@context</code> such that all IRIs, types, and values
are expanded so that the <code>@context</code> is no longer necessary.</p>
<p>For example, assume the following JSON-LD input document:</p>
@@ -2586,7 +2576,7 @@
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
- URLs are rarely used as keys. At times, a JSON-LD document may be received
+ 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>
@@ -2670,27 +2660,27 @@
<tref title="JSON-LD graph">JSON-LD graphs</tref> and comprises exactly one
<tdef>default graph</tdef> and zero or more <tdef title="named graph">named graphs</tdef>.</li>
<li>The default graph does not have a name and MAY be empty.</li>
- <li>Each named graph is a pair consisting of an <tref>URL</tref> or <tref>blank node</tref>
+ <li>Each named graph is a pair consisting of an <tref>IRI</tref> or <tref>blank node</tref>
(the <tdef>graph name</tdef>) and a <tref>JSON-LD graph</tref>. Whenever possible, the
- <tref>graph name</tref> SHOULD be an <tref>URL</tref>.</li>
+ <tref>graph name</tref> SHOULD be an <tref>IRI</tref>.</li>
<li>A <tdef>JSON-LD graph</tdef> is a labeled directed graph, i.e., a set of
<tref title="node">nodes</tref> connected by <tref title="edge">edges</tref>.</li>
<li>Every <tdef>edge</tdef> has a direction associated with it and is labeled with
- an <tref>URL</tref> or a <tref>blank node identifier</tref>. Within the JSON-LD syntax
+ an <tref>IRI</tref> or a <tref>blank node identifier</tref>. Within the JSON-LD syntax
these edge labels are called <tdef title="property">properties</tdef>. Whenever possible, an
- <tref>edge</tref> SHOULD be labeled with an <tref>URL</tref>.</li>
- <li>Every <tdef>node</tdef> is an <tref>URL</tref>, a <tref>blank node</tref>,
+ <tref>edge</tref> SHOULD be labeled with an <tref>IRI</tref>.</li>
+ <li>Every <tdef>node</tdef> is an <tref>IRI</tref>, a <tref>blank node</tref>,
a <tref>JSON-LD value</tref>, or a <tref>list</tref>.</li>
- <li>A node having an outgoing edge MUST be an <tref>URL</tref> or a
+ <li>A node having an outgoing edge MUST be an <tref>IRI</tref> or a
<tref>blank node</tref>.</li>
<li>A <tref>JSON-LD graph</tref> MUST NOT contain unconnected <tref title="node">nodes</tref>,
i.e., nodes which are not connected by an <tref>edge</tref> to any other <tref>node</tref>.</li>
- <li>An <tref>URL</tref> is a string that conforms to the syntax of an absolute
- <abbr title="Internationalized Resource Identifier"> as defined in [[RFC3987]].
- <tref title="URL">URLs</tref> used within a <tref>JSON-LD graph</tref> SHOULD return a
- <tref>Linked Data</tref> document describing the resource denoted by that URL when being
- dereferenced.</li>
- <li>A <tdef>blank node</tdef> is a <tref>node</tref> which is neither an <tref>URL</tref>,
+ <li>An <tdef><abbr title="Internationalized Resource Identifier">IRI</abbr></tdef>
+ (Internationalized Resource Identifier) is a string that conforms to the syntax
+ defined in [[RFC3987]]. <tref title="IRI">IRIs</tref> used within a
+ <tref>JSON-LD graph</tref> SHOULD return a <tref>Linked Data</tref> document describing
+ the resource denoted by that IRI when being dereferenced.</li>
+ <li>A <tdef>blank node</tdef> is a <tref>node</tref> which is neither an <tref>IRI</tref>,
nor a <tref>JSON-LD value</tref>, or a <tref>list</tref>. A blank node MAY be identified
by a <tref>blank node identifier</tref>.</li>
<li>A <tdef>blank node identifier</tdef> is a string that can be used as an identifier
@@ -2699,12 +2689,12 @@
<li>A <tdef>JSON-LD value</tdef> is a <tref>string</tref>, a <tref>number</tref>,
<tref>true</tref> or <tref>false</tref>, a <tref>typed value</tref>, or a
<tref>language-tagged string</tref>.</li>
- <li>A <tdef>typed value</tdef> consists of a value, which is a string, and a type, which is an URL.</li>
+ <li>A <tdef>typed value</tdef> consists of a value, which is a string, and a type, which is an IRI.</li>
<li>A <tdef>language-tagged string</tdef> consists of a string and a non-empty language
tag as defined by [[BCP47]]. The language tag must be well-formed according to section
<a href="http://tools.ietf.org/html/bcp47#section-2.2.9">2.2.9</a> of [[BCP47]], and MUST
be normalized to lowercase.</li>
- <li>A <tdef>list</tdef> is an ordered sequence of <tref title="URL">URLs</tref>,
+ <li>A <tdef>list</tdef> is an ordered sequence of <tref title="IRI">IRIs</tref>,
<tref title="blank node">blank nodes</tref>, and
<tref title="JSON-LD value">JSON-LD values</tref>.</li>
</ul>
@@ -2717,7 +2707,7 @@
represented by the <tref title="JSON-LD data model">data model</tref> defined above.
Unless otherwise specified, such data is ignored when a <tref>JSON-LD document</tref>
is being processed. This means, e.g., that properties which are not mapped to an
- <tref>URL</tref> or <tref>blank node</tref> will be ignored.</p>
+ <tref>IRI</tref> or <tref>blank node</tref> will be ignored.</p>
<p style="text-align: center"><img src="linked-data-graph.png" title="An illustration of JSON-LD's data model"></p>
<p style="text-align: center">Figure 1: An illustration of JSON-LD's data model.</p>
@@ -2774,8 +2764,8 @@
properties of the resulting <tref>node</tref>.</p>
<p>A <tref>node object</tref> MUST be a <tref>JSON object</tref>. All keys
- which are not <tref title="URL">URLs</tref>,
- <tref title="compact URL">compact URLs</tref>, <tref title="term">terms</tref>
+ which are not <tref title="IRI">IRIs</tref>,
+ <tref title="compact IRI">compact IRIs</tref>, <tref title="term">terms</tref>
valid in the <tref>active context</tref>, or one of the following
<tref title="keyword">keywords</tref> MUST be ignored when processed:</p>
@@ -2791,24 +2781,24 @@
key, its value MUST be one of the following:</p>
<ul>
<li><tref>null</tref>,</li>
- <li>an <tref>URL</tref>,</li>
+ <li>an <tref>IRI</tref>,</li>
<li>a <tref>context definition</tref>, or</li>
<li>an <tref>array</tref> composed of any number of the previous two expressions.</li>
</ul>
<p>If the <tref>node object</tref> contains the <code>@id</code> key,
- its value MUST be an <tref>absolute URL</tref>, a <tref>relative URL</tref>,
- or a <tref>compact URL</tref> (including
+ its value MUST be an <tref>absolute IRI</tref>, a <tref>relative IRI</tref>,
+ or a <tref>compact IRI</tref> (including
<tref title="blank node identifier">blank node identifiers</tref>).
- See <a href="#node-identifiers"></a>, <a href="#compact-urls"></a>,
+ See <a href="#node-identifiers"></a>, <a href="#compact-iris"></a>,
and <a href="#identifying-blank-nodes"></a> for further discussion on
<code>@id</code> values.</p>
<p>If the <tref>node object</tref> contains the <code>@type</code>
- key, its value MUST be either an <tref>absolute URL</tref>, a
- <tref>relative URL</tref>, a <tref>compact URL</tref>
+ key, its value MUST be either an <tref>absolute IRI</tref>, a
+ <tref>relative IRI</tref>, a <tref>compact IRI</tref>
(including <tref title="blank node identifier">blank node identifiers</tref>),
- a <tref>term</tref> defined in the <tref>active context</tref> expanding into an <tref>absolute URL</tref>, or
+ a <tref>term</tref> defined in the <tref>active context</tref> expanding into an <tref>absolute IRI</tref>, or
an <tref>array</tref> of any of these.
See <a href="#specifying-the-type"></a> for further discussion on
<code>@type</code> values.</p>
@@ -2836,7 +2826,7 @@
<p>Keys in a <tref>node object</tref> that are not
- <tref title="keyword">keywords</tref> MUST expand to an <tref>absolute URL</tref>
+ <tref title="keyword">keywords</tref> MUST expand to an <tref>absolute IRI</tref>
using the <tref>active context</tref>. The values associated with these keys
MUST be one of the following:</p>
@@ -2859,7 +2849,7 @@
<section id="grammar-term-reference">
<h2>Term</h2>
<p>A <tdef>term</tdef> is a short-hand <tref>string</tref> that expands
- to an <tref>URL</tref> or a <tref>blank node identifier</tref>.</p>
+ to an <tref>IRI</tref> or a <tref>blank node identifier</tref>.</p>
<p>A <tref>term</tref> MUST NOT equal any of the JSON-LD
<tref title="keyword">keywords</tref>.</p>
@@ -2870,8 +2860,8 @@
empty terms (<code>""</code>) is discouraged as not all programming languages
are able to handle empty property names.</p>
- <p>See <a href="#the-context"></a> and <a href="#urls"></a> for further discussion
- on mapping <tref title="term">terms</tref> to <tref title="URL">URLs</tref>.</p>
+ <p>See <a href="#the-context"></a> and <a href="#iris"></a> for further discussion
+ on mapping <tref title="term">terms</tref> to <tref title="IRI">IRIs</tref>.</p>
</section>
<section id="grammar-language-map">
@@ -2936,8 +2926,8 @@
<tref>false</tref> or <tref>null</tref>.</p>
<p>The value associated with the <code>@type</code> key MUST be a
- <tref>term</tref>, a <tref>compact URL</tref>,
- an <tref>absolute URL</tref>, a <tref>relative URL</tref>, or <tref>null</tref>.</p>
+ <tref>term</tref>, a <tref>compact IRI</tref>,
+ an <tref>absolute IRI</tref>, a <tref>relative IRI</tref>, or <tref>null</tref>.</p>
<p>The value associated with the <code>@language</code> key MUST have the
lexical form described in [[!BCP47]], or be <tref>null</tref>.</p>
@@ -2999,7 +2989,7 @@
<p>If the <tref>context definition</tref> has a <code>@language</code> key,
its value MUST have the lexical form described in [[!BCP47]] or be <tref>null</tref>.</p>
<p>If the <tref>context definition</tref> has a <code>@vocab</code> key,
- its value MUST have the lexical form of <tref>absolute URL</tref> or be <tref>null</tref>.</p>
+ its value MUST have the lexical form of <tref>absolute IRI</tref> or be <tref>null</tref>.</p>
<p><tref>Term</tref> values MUST be either a
<tref>string</tref>, <tref>null</tref>, or an <tref>expanded term definition</tref>.</p>
@@ -3013,18 +3003,18 @@
composed of zero or more keys from <code>@id</code>,
<code>@type</code>, <code>@language</code> or <code>@container</code>. An
<tref>expanded term definition</tref> SHOULD NOT contain any other keys.
-<p>If the <tref>term</tref> definition is not <tref>null</tref>, a <tref>compact URL</tref>,
- or an <tref>absolute URL</tref> and the <tref>active context</tref> does not have an
+<p>If the <tref>term</tref> definition is not <tref>null</tref>, a <tref>compact IRI</tref>,
+ or an <tref>absolute IRI</tref> and the <tref>active context</tref> does not have an
<code>@vocab</code> mapping, the <tref>expanded term definition</tref> MUST
include the <code>@id</code> key.</p>
<p>If the <tref>expanded term definition</tref> contains the <code>@id</code> <tref>keyword</tref>,
- its value MUST be <tref>null</tref>, an <tref>absolute URL</tref>, a <tref>blank node identifier</tref>,
- a <tref>compact URL</tref>, a <tref>term</tref> defined in the defining <tref>context definition</tref>
+ its value MUST be <tref>null</tref>, an <tref>absolute IRI</tref>, a <tref>blank node identifier</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 except
<tref>null</tref>.</p>
<p>If the <tref>expanded term definition</tref> contains the <code>@type</code> <tref>keyword</tref>,
- its value MUST be an <tref>absolute URL</tref>, a <tref>compact URL</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>
+ 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>,
@@ -3053,12 +3043,12 @@
<ul>
<li>In JSON-LD <tref title="graph name">graph names</tref> can be
- <tref title="URL">URLs</tref> or <tref title="blank node">blank nodes</tref>
- whereas in RDF graph names have to be <tref title="URL">URLs</tref>.</li>
+ <tref title="IRI">IRIs</tref> or <tref title="blank node">blank nodes</tref>
+ whereas in RDF graph names have to be <tref title="IRI">IRIs</tref>.</li>
<li>In JSON-LD <tref title="property">properties</tref> can be
- <tref title="URL">URLs</tref> or <tref title="blank node">blank nodes</tref>
+ <tref title="IRI">IRIs</tref> or <tref title="blank node">blank nodes</tref>
whereas in RDF properties (predicates) have to be
- <tref title="URL">URLs</tref>.</li>
+ <tref title="IRI">IRIs</tref>.</li>
<li>In JSON-LD lists are part of the data model whereas in RDF they are part of
a vocabulary, namely [[RDF-SCHEMA]].</li>
<li>RDF values are either typed <em>literals</em>
@@ -3353,7 +3343,7 @@
<p>Note that the JSON-LD representation of the Microdata information stays
true to the desires of the Microdata community to avoid contexts and
-instead refer to items by their full <tref>URL</tref>.</p>
+instead refer to items by their full <tref>IRI</tref>.</p>
<pre class="example" data-transform="updateExample"
title="Same book description in JSON-LD (avoiding contexts)">
@@ -3413,14 +3403,14 @@
</dl>
<dl>
<dt><code>profile</code></dt>
- <dd>A whitespace-separated list of URLs identifying specific constraints
+ <dd>A whitespace-separated list of IRIs identifying specific constraints
or conventions that apply to a JSON-LD document. A profile MUST NOT change
the semantics of the resource representation when processed without profile
knowledge, so that clients both with and without knowledge of a profiled
resource can safely use the same representation. The <code>profile</code>
parameter MAY also be used by clients to express their preferences in the
- content negotiation process. It is RECOMMENDED that profile URLs are
- dereferenceable and provide useful documentation at that URL. This
+ content negotiation process. It is RECOMMENDED that profile IRIs are
+ dereferenceable and provide useful documentation at that IRI. This
specification, however, does not define any formats for such profile
descriptions.
</dd>
@@ -3470,7 +3460,7 @@
<p>Fragment identifiers used with <a href="#application-ld-json">application/ld+json</a>
resources MAY identify a node in a <tref>JSON-LD graph</tref> expressed in
the resource. This idiom, which is also used in RDF [[RDF-CONCEPTS]], gives a
- simple way to "mint" new, document-local URLs to label nodes and therefore contributes
+ simple way to "mint" new, document-local IRIs to label nodes and therefore contributes
considerably to the expressive power of JSON-LD.</p>
</section>