--- a/spec/latest/json-ld-api/index.html Tue Dec 18 18:41:40 2012 +0100
+++ b/spec/latest/json-ld-api/index.html Tue Dec 18 19:12:56 2012 +0100
@@ -557,7 +557,9 @@
from the result that would be obtained by the specification's algorithms.</p>
<p>This specification does not define how JSON-LD Implementations or Processors handle
- non-conforming input documents.</p>
+ non-conforming input documents. This implies that JSON-LD Implementations or Processors
+ 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
@@ -810,8 +812,7 @@
nor <tref>null</tref> trigger an <code class="error">INVALID_VALUE_OBJECT_VALUE</code> error.</li>
<li>If <em>expanded property</em> equals <code>@language</code>, set the <code>@language</code>
member of <em>result</em> to the lowercased <em>value</em>. If <em>value</em> is not
- a valid language tag according [[!BCP47]], trigger an
- <code class="error">INVALID_LANGUAGE_VALUE</code> error.</li>
+ a <tref>string</tref>, trigger an <code class="error">INVALID_LANGUAGE_VALUE</code> error.</li>
<li>If <em>expanded property</em> equals <code>@annotation</code>, set the <code>@annotation</code>
member of <em>result</em> to <em>value</em>. If <em>value</em> is not a <tref>string</tref>
trigger an <code class="error">INVALID_ANNOTATION_VALUE</code> error.</li>
@@ -840,9 +841,7 @@
consisting of two members: <code>@value</code> set to the currently
processed item and <code>@language</code> set to the lowercased <em>key</em>.
If <em>val</em> is not a <tref>string</tref>, trigger a
- <code class="error">LANGUAGE_MAP_INVALID_VALUE</code> error; if <em>key</em>
- is not a valid language tag according [[!BCP47]], trigger an
- <code class="error">LANGUAGE_MAP_INVALID_KEY</code> error. Otherwise append
+ <code class="error">LANGUAGE_MAP_INVALID_VALUE</code> error. Otherwise append
the object to <em>language map values</em>.</li>
</ol>
</li>
@@ -985,13 +984,14 @@
<code class="error">INVALID_LOCAL_CONTEXT</code> error.</li>
<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 not
- a valid <tref>absolute IRI</tref> or <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> member from <em>context</em>.</li>
- <li>If <em>context</em> has a <code>@language</code> member: if its value is not
- a valid language tag according [[!BCP47]] or <tref>null</tref> trigger an
+ <li>If <em>context</em> has a <code>@vocab</code> member: if its value is neither
+ 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>
+ member from <em>context</em>.</li>
+ <li>If <em>context</em> has a <code>@language</code> member: if its value is neither
+ a <tref>string</tref> nor <tref>null</tref>, trigger an
<code class="error">INVALID_DEFAULT_LANGUAGE</code> error; otherwise set the
<tref title="active context">active context's</tref> <tref>default language</tref> to
its value and remove the <code>@language</code> member from <em>context</em>.</li>
@@ -1005,11 +1005,9 @@
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="#iri-expansion">IRI Expansion algorithm</a>. If the result is neither a
- <tref>keyword</tref> nor a valid <tref>absolute IRI</tref>, trigger an
- <code class="error">INVALID_TERM_DEFINITION</code> error. Otherwise 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>IRI mapping</tref> set to the expanded <em>value</em> and 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>
@@ -1019,9 +1017,8 @@
<li>If <em>value</em> has an <code>@id</code> member with a value <em>val</em>
<ol class="algorithm">
<li>and <em>val</em> is an <tref>array</tref>, expand each item according the
- <a href="#iri-expansion">IRI Expansion algorithm</a>. If an item does not expand to
- a valid <tref>absolute IRI</tref>, raise an
- <code class="error">INVALID_PROPERTY_GENERATOR</code> error; otherwise sort
+ <a href="#iri-expansion">IRI Expansion algorithm</a>. If an item is not a <tref>string</tref>,
+ raise an <code class="error">INVALID_PROPERTY_GENERATOR</code> error; otherwise sort
<em>val</em> and store it as <tref>IRI mapping</tref> in <em>definition</em>.</li>
<li>Otherwise, if <em>val</em> is a <tref>string</tref>, expand it according the
<a href="#iri-expansion">IRI Expansion algorithm</a>. Set the <tref>IRI mapping</tref> of
@@ -1035,14 +1032,14 @@
<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 <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 absolute IRI using the
+ 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>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 valid language tag according [[!BCP47]] 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 not a valid language tag or <tref>null</tref>, raise an
+ 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
+ <tref>string</tref> nor <tref>null</tref>, raise an
<code class="error">INVALID_LANGUAGE_MAPPING</code> error.</li>
<li>f <em>value</em> has an <code>@container</code> member with a value <em>val</em> that
equals <code>@list</code>, <code>@set</code>, or <code>@annotation</code>, set the