Add grammar for @vocab, and allow @vocab to be set to null, erasing it from a previous context.
--- a/spec/latest/json-ld-api/index.html Wed Aug 01 10:28:27 2012 -0700
+++ b/spec/latest/json-ld-api/index.html Sat Aug 04 15:26:17 2012 -0700
@@ -1202,9 +1202,9 @@
<li>If <em>context</em> is a <tref>JSON object</tref>, perform the following steps:
<ol class="algorithm">
<li>If <em>context</em> has a <code>@language</code> property, it MUST have a value of a
- simple <tref>string</tref> or <tref>null</tref>. Add the language to the <tref>local context</tref>.</li>
+ simple <tref>string</tref> with the lexical form described in [[!BCP47]], or <tref>null</tref>. Add the language to the <tref>local context</tref>.</li>
<li>If <em>value</em> has a <code>@vocab</code> key, it MUST have a value of a simple <tref>string</tref>
- with the lexical form of an absolute IRI. Add the vocabulary mapping to the <tref>local context</tref>.</li>
+ with the lexical form of an <tref>absolute IRI</tref>, or <tref>null</tref>. Add the vocabulary mapping to the <tref>local context</tref>.</li>
<li id="object-context">Otherwise, for each property in <em>context</em> perform the following steps:
<ol class="algorithm">
<li>If the property's value is a simple <tref>string</tref>, determine the IRI mapping value by
@@ -1274,7 +1274,7 @@
<h2>IRI Expansion</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 actual IRI.</p>
- <p><tref>IRI</tref>s may be represented as an <tref>absolute IRI</tref>, a <tref>term</tref>,
+ <p><tref title="IRI">IRIs</tref> may be represented as an <tref>absolute IRI</tref>, a <tref>term</tref>,
a <tref>compact IRI</tref>, or as a value relative to <code>@vocab</code>.</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 fragment segments. A <tdef>relative IRI</tdef> is an IRI
--- a/spec/latest/json-ld-syntax/index.html Wed Aug 01 10:28:27 2012 -0700
+++ b/spec/latest/json-ld-syntax/index.html Sat Aug 04 15:26:17 2012 -0700
@@ -2727,12 +2727,15 @@
<section id="grammar-context">
<h2>Context Definition</h2>
<p>A <tdef>context definition</tdef> is a <tref>JSON object</tref>
- containing one or more key/value pairs. Keys are <tref title="string">strings</tref>
- or the <code>@language</code> <tref>keyword</tref>. A <tref>context definition</tref>
+ containing one or more key/value pairs. Keys are non-keyword <tref title="string">strings</tref>
+ or the <code>@language</code> or <code>@vocab</code> <tref title="keyword">keywords</tref>.
+ A <tref>context definition</tref>
SHOULD NOT contain any keys having the lexical form of <tref>keyword</tref> other than
- <code>@language</code>.</p>
+ <code>@language</code> or <code>@vocab</code>.</p>
<p>If the <tref>context definition</tref> has a <code>@language</code> key,
the value MUST have the lexical form described in [[!BCP47]] or <tref>null</tref>.</p>
+<p>If the <tref>context definition</tref> has a <code>@vocab</code> key,
+ the value MUST have the lexical form of <tref>absolute IRI</tref> or <tref>null</tref>.</p>
<p>Other keys are <tref>term</tref> definitions. Their values MUST be either a
<tref>string</tref>, or a <tref>JSON object</tref>. If the value is a
<tref>JSON object</tref>, the <tref>term</tref> has an <tdef>expanded term