Update syntax spec to include @type: @vocab
authorMarkus Lanthaler <mark_lanthaler@gmx.net>
Thu, 14 Feb 2013 19:31:59 +0100
changeset 1259 20e58aab52ed
parent 1258 a68f8f6c2d0d
child 1260 8c245815f440
Update syntax spec to include @type: @vocab

This addresses #204.
spec/latest/json-ld-syntax/index.html
--- a/spec/latest/json-ld-syntax/index.html	Thu Feb 14 19:03:51 2013 +0100
+++ b/spec/latest/json-ld-syntax/index.html	Thu Feb 14 19:31:59 2013 +0100
@@ -694,7 +694,7 @@
       <code>@id</code> or <code>@type</code>.</li>
     <li>An <tref>IRI</tref> is generated for the <tref>string</tref> value of any key for which there
       are <tref>coercion</tref> rules that contain a <code>@type</code> key that is
-      set to a value of <code>@id</code>.</li>
+      set to a value of <code>@id</code> or <code>@vocab</code>.</li>
   </ol>
 </section>
 
@@ -1097,9 +1097,18 @@
 
 <p>Type coercion is specified within an <tref>expanded term definition</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>IRI</tref>.</p>
+  Alternatively, the <tref title="keyword">keywords</tref> <code>@id</code> or <code>@vocab</code> may be used
+  as value to indicate that within the body of a JSON-LD document, a <tref>string</tref> value of a
+  <tref>term</tref> coerced to <code>@id</code> or <code>@vocab</code> is to be interpreted as an
+  <tref>IRI</tref>. The difference between <code>@id</code> and <code>@vocab</code> is how values are expanded
+  to <tref title="absolute IRI">absolute IRIs</tref>. <code>@vocab</code> first tries to expand the value
+  by interpreting it as <tref>term</tref>. If no matching <tref>term</tref> is found in the
+  <tref>active context</tref>, it tries to expand it as <tref>compact IRI</tref> or <tref>absolute IRI</tref>
+  if there's a colon in the value; otherwise, it will expand the value using the
+  <tref title="active context">active context's</tref> vocabulary mapping, if present, or by interpreting it
+  as <tref>relative IRI</tref>. Values coerced to <code>@id</code> in contrast are expanded as
+  <tref>compact IRI</tref> or <tref>absolute IRI</tref> if a colon is present; otherwise, they are interpreted
+  as <tref>relative IRI</tref>.
 
 <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
@@ -2889,7 +2898,9 @@
   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 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>
+  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>, <tref>null</tref>, or the one of the
+  <tref title="keyword">keywords</tref> <code>@id</code> or <code>@vocab</code>.</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>,