Change subject definition/reference to node definition/reference and replace many uses of "subject" with "node.
authorGregg Kellogg <gregg@kellogg-assoc.com>
Wed, 29 Aug 2012 17:35:36 -0700
changeset 851 07ed35df8100
parent 850 0b9b6fde3841
child 852 c6b302bded15
Change subject definition/reference to node definition/reference and replace many uses of "subject" with "node.
spec/latest/json-ld-api/index.html
spec/latest/json-ld-framing/index.html
spec/latest/json-ld-syntax/index.html
--- a/spec/latest/json-ld-api/index.html	Wed Aug 29 14:24:38 2012 +0200
+++ b/spec/latest/json-ld-api/index.html	Wed Aug 29 17:35:36 2012 -0700
@@ -576,7 +576,7 @@
   </pre>
 
   <p>
-Transforming the object above back to RDF is as simple as calling the
+Transforming the node above back to RDF is as simple as calling the
 <code>toRDF()</code> method:
   </p>
 
@@ -676,14 +676,14 @@
       within a <tref>context</tref>, it removes any definition associated
       with the key, unless otherwise specified.
     </dd>
-    <dt><tdef>subject definition</tdef></dt><dd>
-      A <tref>JSON object</tref> used to represent a <tref>subject</tref> and
-      one or more properties of that subject. A <tref>JSON object</tref> is a
-      subject definition if it does not contain they keys <code>@value</code>,
+    <dt><tdef>node definition</tdef></dt><dd>
+      A <tref>JSON object</tref> used to represent a <tref>node</tref> and
+      one or more properties of that node. A <tref>JSON object</tref> is a
+      node definition if it does not contain they keys <code>@value</code>,
       <code>@list</code> or <code>@set</code> and it has one or more keys
       other than <code>@id</code>.</dd>
-    <dt><tdef>subject reference</tdef></dt><dd>
-      A <tref>JSON object</tref> used to reference a subject having only the
+    <dt><tdef>node reference</tdef></dt><dd>
+      A <tref>JSON object</tref> used to reference a node having only the
       <code>@id</code> key.</dd>
     <dt><tdef>Linked Data</tdef></dt>
     <dd>A set of documents, each containing a representation of a
@@ -1439,7 +1439,7 @@
       <li>Otherwise, return the sum of the <tref>term rank</tref>s for every entry in the list.</li>
     </ol>
   </li>
-  <li>Otherwise, <em>value</em> MUST be a <tref>subject definition</tref>, <tref>subject reference</tref>,
+  <li>Otherwise, <em>value</em> MUST be a <tref>node definition</tref>, <tref>node reference</tref>,
     or a <tref>JSON object</tref> having a <code>@value</code>.
     <ol class="algorithm">
       <li>If <em>value</em> has a <code>@value</code> property:
@@ -1759,7 +1759,7 @@
     <code>true</code>, the compacted value is that item; otherwise the compacted value is <em>element</em>.</li>
   <li>Otherwise, if <em>element</em> is an object:
     <ol class="algorithm">
-      <li>If <em>element</em> has an <code>@value</code> property or element is a <tref>subject reference</tref>,
+      <li>If <em>element</em> has an <code>@value</code> property or element is a <tref>node reference</tref>,
         return the result of performing
         <a href="#value-compaction">Value Compaction</a> on <em>element</em> using <tref>active property</tref>.</li>
       <li>Otherwise, if the <tref>active property</tref> has a <code>@container</code> mapping to <code>@list</code>
@@ -1882,9 +1882,9 @@
 
 <ol class="algorithm">
   <li>Expand <em>element</em> according the <a href="#expansion-algorithm">Expansion Algorithm</a>.</li>
-  <li>Generate a <em>subjectMap</em> according the <a href="#subject-map-generation">Subject Map Generation Algorithm</a>.</li>
+  <li>Generate a <em>nodeMap</em> according the <a href="#node-map-generation">Node Map Generation Algorithm</a>.</li>
   <li>Initialize an empty array <em>result</em>.</li>
-  <li>If <em>subjectMap</em> has no property <em>graph</em>, return <em>result</em>, otherwise set <em>definitions</em> to its value.</li>
+  <li>If <em>nodeMap</em> has no property <em>graph</em>, return <em>result</em>, otherwise set <em>definitions</em> to its value.</li>
   <li>Foreach <em>property</em> and <em>value</em> of of <em>definitions</em>:
     <ol class="algorithm">
       <li>Add <em>value</em> to <em>result</em>.</li>
@@ -1896,15 +1896,15 @@
 </section>
 
 <section>
-<h3>Subject Map Generation</h3>
-<p>The Subject Map Generation algorithm takes as input an expanded JSON-LD document and results in a <tref>JSON object</tref>
-  <em>subjectMap</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 IRI get assigned a (new) <tref>blank node</tref> identifier. The resulting <em>subjectMap</em>
+<h3>Node Map Generation</h3>
+<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 IRI get assigned a (new) <tref>blank node</tref> identifier. 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="IRI">IRIs</tref>.</p>
 
-<p>The algorithm takes as input the expanded JSON-LD document as <em>element</em>, the initially empty <em>subjectMap</em>,
+<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>, and <tref>null</tref> as <em>list</em>.</p>
 
 <ol class="algorithm">
@@ -1915,56 +1915,56 @@
   <li>If the <code>@id</code> property exists and is an <tref>IRI</tref>, set <em>id</em> to its value, otherwise
     set it to a <tref>blank node</tref> identifier created by the
     <a href="#generate-blank-node-identifier">Generate Blank Node Identifier</a> algorithm.</li>
-  <li>If <em>list</em> is not <tref>null</tref>, append a new <tref>subject reference</tref> to <em>list</em> using
+  <li>If <em>list</em> is not <tref>null</tref>, append a new <tref>node reference</tref> to <em>list</em> using
     <em>id</em> at the value for <code>@id</code>.</li>
-  <li>Let <em>subjects</em> be the value in <em>subjectMap</em> where the key is <em>graph</em>; if no such
+  <li>Let <em>nodes</em> be the value in <em>nodeMap</em> where the key is <em>graph</em>; if no such
     value exists, insert a new <tref>JSON object</tref> for the key <em>graph</em>. If <em>id</em> is not in
-    <em>subjects</em>, create a new <tref>JSON object</tref> <em>subject</em> with <em>id</em> as the value
-    for <code>@id</code>. Let <em>subject</em> be the value of <em>id</em> in <em>subjects</em>.</li>
+    <em>nodes</em>, create a new <tref>JSON object</tref> <em>node</em> with <em>id</em> as the value
+    for <code>@id</code>. Let <em>node</em> be the value of <em>id</em> in <em>nodes</em>.</li>
   <li>For each <em>property</em> that is not <code>@id</code> and each <em>value</em> in <em>element</em> ordered
     by <em>property</em>:
     <ol class="algorithm">
       <li>If <em>property</em> is <code>@graph</code>, recursively call this algorithm passing <em>value</em>
-        for <em>element</em>, <em>subjectMap</em>, <tref>null</tref> for <em>list</em> and if <em>graph</em>
+        for <em>element</em>, <em>nodeMap</em>, <tref>null</tref> for <em>list</em> and if <em>graph</em>
         is <code>@merged</code> use <em>graph</em>, otherwise use <em>id</em> for <em>graph</em> and then continue.</li>
       <li>If <em>property</em> is not <code>@type</code> and is a keyword, merge <code>property</code> and
-        <code>value</code> into <code>subject</code> and then continue.</li>
+        <code>value</code> into <code>node</code> and then continue.</li>
       <li>For each value <em>v</em> in the array <em>value</em>:
         <ol class="algorithm">
-          <li>If <em>v</em> is a <tref>subject definition</tref> or <tref>subject reference</tref>:
+          <li>If <em>v</em> is a <tref>node definition</tref> or <tref>node reference</tref>:
             <ol class="algorithm">
               <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>
-                to avoid collisions. If one does not already exist, add a <tref>subject reference</tref> for
-                <em>v</em> into <em>subject</em> for <em>property</em>.</li>
-              <li>Recursively call this algorithm passing <em>v</em> for <em>value</em>, <em>subjectMap</em>,
+                to avoid collisions. If one does not already exist, add a <tref>node reference</tref> for
+                <em>v</em> into <em>node</em> for <em>property</em>.</li>
+              <li>Recursively call this algorithm passing <em>v</em> for <em>value</em>, <em>nodeMap</em>,
                 <em>graph</em>, and <tref>null</tref> for <em>list</em>.</li>
             </ol>
           </li>
           <li>Otherwise if <em>v</em> has the property <code>@list</code> then recursively call this algorithm
-            with the value of <code>@list</code> as <em>element</em>, <em>subjectMap</em>, <em>graph</em>, and
+            with the value of <code>@list</code> as <em>element</em>, <em>nodeMap</em>, <em>graph</em>, and
             a new array <em>flattenedList</em> as <em>list</em>. Create a new <tref>JSON object</tref> with the
-            property <code>@list</code> set to <em>flattenedList</em> and add it to <em>subject</em> for
+            property <code>@list</code> set to <em>flattenedList</em> and add it to <em>node</em> for
             <em>property</em>.</li>
           <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>subject</em> for <em>property</em>.</li>
-          <li>Otherwise, add <em>v</em> to <em>subject</em> for <em>property</em>.</li>
+            to <em>node</em> for <em>property</em>.</li>
+          <li>Otherwise, add <em>v</em> to <em>node</em> for <em>property</em>.</li>
         </ol>
       </li>
     </ol>
   </li>
 </ol>
 
-<p>After the above outlined algorithm has been executed, the subject map for all graphs including the default graph are contained in
-  <em>subjectMap</em>. To also create the subject map for the merged graph, execute the algorithm again, but pass <code>@merged</code>
+<p>After the above outlined algorithm has been executed, the node map for all graphs including the default graph are contained in
+  <em>nodeMap</em>. To also create the node map for the merged graph, execute the algorithm again, but pass <code>@merged</code>
   for <em>graph</em>.</p>
 
 </section>
 
 <section>
 <h3>Generate Blank Node Identifier</h3>
-<p>This algorithm is used by the <a href="#subject-map-generation">Subject Map Generation Algorithm</a> to
+<p>This algorithm is used by the <a href="#node-map-generation">Node Map Generation Algorithm</a> to
   deterministically name <tref>blank node</tref> identifiers. It uses a <em>identifier map</em>
   and <em>prefix</em> and takes a possibly <tref>null</tref> identifier and returns a new identifier based
   on <em>prefix</em>.</p>
@@ -2081,12 +2081,12 @@
 </pre>
 
   <p>The process of translating this to RDF then operates over each
-    <tref>subject definition</tref> to find a subject,
+    <tref>node definition</tref> to find a subject,
     each <tref>property</tref> to find an RDF <em>predicate</em>,
     and each value of that property to find an <tref>object</tref>.
     In this case, each property has just a single object:
     <code>foaf:name</code> identifies a <tref>literal</tref>, and
-    <code>foaf:knows</code> identifies a second <tref>subject definition</tref>
+    <code>foaf:knows</code> identifies a second <tref>node definition</tref>
     similar to Turtle's <code>blankNodePropertyList</code>.</p>
 
   <p>After expansion, JSON-LD <tref title="number">numbers</tref>,
@@ -2299,7 +2299,7 @@
 
   <ol class="algorithm">
     <li id="new_graph">Construct <em>defaultGraph</em> as a <tref>JSON object</tref>
-      containing <em>subjects</em> and <em>listMap</em>, each an empty <tref>JSON object</tref>.</li>
+      containing <em>nodes</em> and <em>listMap</em>, each an empty <tref>JSON object</tref>.</li>
     <li>Construct <em>graphs</em> as a <tref>JSON object</tref> containing <em>defaultGraph</em>
       identified by
       an empty <tref>string</tref>.</li>
@@ -2325,12 +2325,12 @@
             <li>Skip to the next quad.</li>
           </ol>
         </li>
-        <li>If <em>name</em> is not <tref>null</tref>, and <em>defaultGraph.subjects</em>
+        <li>If <em>name</em> is not <tref>null</tref>, and <em>defaultGraph.nodes</em>
           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
           a string representation of <em>name</em>.</li>
-        <li>Set <em>value</em> as the entry from <em>graph.subjects</em> for
+        <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
           a string representation of <em>subject</em> if necessary.</li>
@@ -2410,13 +2410,13 @@
       </ol>
     </li>
     <li>Create <em>array</em> as an empty <tref>array</tref>.</li>
-    <li>For each <em>subject</em> and <em>entry</em> in <em>defaultGraph.subjects</em>
+    <li>For each <em>subject</em> and <em>entry</em> in <em>defaultGraph.nodes</em>
       ordered by <em>subject</em>:
       <ol class="algorithm">
         <li>Add <em>entry</em> to <em>array</em>.</li>
         <li>If <em>graphs</em> has an entry for <em>subject</em>, add a property
           <code>@graph</code> in <em>entry</em> containing the ordered entries
-          from <em>graphs[subject].subjects</em>.</li>
+          from <em>graphs[subject].nodes</em>.</li>
       </ol>
     </li>
     <li>Return <em>array</em> as the result.</li>
--- a/spec/latest/json-ld-framing/index.html	Wed Aug 29 14:24:38 2012 +0200
+++ b/spec/latest/json-ld-framing/index.html	Wed Aug 29 17:35:36 2012 -0700
@@ -344,12 +344,12 @@
     <dt><tdef>null</tdef></dt><dd>
       The use of the <tref>null</tref> value within JSON-LD is used to ignore or reset values.
     </dd>
-    <dt><tdef>subject definition</tdef></dt><dd>
-      A <tref>JSON object</tref> used to represent a <tref>subject</tref> and one or more properties
-      of that subject. A <tref>JSON object</tref> is a subject definition if it does not contain the keys
+    <dt><tdef>node definition</tdef></dt><dd>
+      A <tref>JSON object</tref> used to represent a <tref>node</tref> and one or more properties
+      of that node. A <tref>JSON object</tref> is a node definition if it does not contain the keys
       <code>@value</code>, <code>@list</code> or <code>@set</code> and it has one or more keys other than <code>@id</code>.</dd>
-    <dt><tdef>subject reference</tdef></dt><dd>
-      A <tref>JSON object</tref> used to reference a subject having only the <code>@id</code> key.</dd>
+    <dt><tdef>node reference</tdef></dt><dd>
+      A <tref>JSON object</tref> used to reference a node having only the <code>@id</code> key.</dd>
   </dl>
 </p>
 </section>
@@ -555,7 +555,7 @@
   <dt><code>@graph</code></dt><dd>Used to explicitly express a <tref>linked data graph</tref>.</dd>
   <dt><code>:</code></dt><dd>The separator for JSON keys and values that use <tref title="compact_iri">compact IRIs</tref>.</dd>
   <dt><code>@default</code></dt><dd>Used in <a href="#framing">Framing</a> to set the default value for
-    an output property when the framed <tref>subject definition</tref> does not include such a property.</dd>
+    an output property when the framed <tref>node definition</tref> does not include such a property.</dd>
   <dt><code>@explicit</code></dt><dd>Used in <a href="#framing">Framing</a> to override the
     value of <tref>explicit inclusion flag</tref> within a specific frame.</dd>
   <dt><code>@omitDefault</code></dt><dd>Used in <a href="#framing">Framing</a> to override the
@@ -692,7 +692,7 @@
 <p class="issue" data-number="118">This algorithm is a work in progress. Presently, it only works
   for documents without named graphs.</p>
 
-<p class="issue" data-number="110">Currently, framing allows just to select subject definitions based
+<p class="issue" data-number="110">Currently, framing allows just to select node definitions based
   on <code>@type</code> matching or duck typing for included properties. It allows value properties to
   be explicitly matched based on defining the property and excluding things that are undefined, but it
   does not allow to be more specific about the types of values selected. Allowing this is currently
@@ -725,12 +725,12 @@
     the <tref>map of flattened subjects</tref> against <em>frame</em>:
     <ol class="algorithm">
       <li>If <em>frame</em> has a <code>@type</code> property containing
-        one or more <tref title="iri">IRIs</tref> match any <tref>subject definition</tref>
+        one or more <tref title="iri">IRIs</tref> match any <tref>node definition</tref>
         with a <code>@type</code> property including any of those <tref title="iri">IRIs</tref>.</li>
       <li>Otherwise, if <em>frame</em> has a <code>@type</code> property only
-        a empty <tref>JSON object</tref>, matches any <tref>subject definition</tref>
+        a empty <tref>JSON object</tref>, matches any <tref>node definition</tref>
         with a <code>@type</code> property, regardless of the actual values.</li>
-      <li>Otherwise, match if the <tref>subject definition</tref> contains all of the
+      <li>Otherwise, match if the <tref>node definition</tref> contains all of the
         non-<tref>keyword</tref> properties in <em>frame</em>.</li>
     </ol>
   </li>
@@ -752,10 +752,10 @@
           <li>If <em>existing</em> has a <em>parent</em> which is an <tref>array</tref> containing a
             <tref>JSON object</tref> with <code>@id</code> equal to <em>id</em>, <em>element</em> has
             already been embedded and can be overwritten, so set <em>embedOn</em> to <tref>true</tref>.</li>
-          <li>Otherwise, <em>existing</em> has a <em>parent</em> which is a <tref>subject definition</tref>.
+          <li>Otherwise, <em>existing</em> has a <em>parent</em> which is a <tref>node definition</tref>.
             Set <em>embedOn</em> to <tref>true</tref> if any of the items in <em>parent</em> <em>property</em>
-            is a <tref>subject definition</tref>
-            or <tref>subject reference</tref> for <em>id</em> because the embed can be overwritten.
+            is a <tref>node definition</tref>
+            or <tref>node reference</tref> for <em>id</em> because the embed can be overwritten.
           </li>
           <li>If <em>embedOn</em> is <tref>true</tref>, <em>existing</em> is already embedded but
             can be overwritten, so <a href="#remove-embed">Remove Embedded Definition</a> for <em>id</em>.
@@ -788,25 +788,25 @@
                     the value of an empty array. Append <em>list</em> to <em>property</em> in
                     <em>output</em>. Process each <em>listitem</em> in the <code>@list</code> array as follows:
                     <ol class="algorithm">
-                      <li>If <em>listitem</em> is a <tref>subject reference</tref>
+                      <li>If <em>listitem</em> is a <tref>node reference</tref>
                         process <em>listitem</em> recursively using this algorithm passing a new map of
                         <em>subjects</em> that contains the <code>@id</code> of <em>listitem</em> as the key
-                        and the <tref>subject definition</tref> from the original <tref>map of flattened subjects</tref>
+                        and the <tref>node definition</tref> from the original <tref>map of flattened subjects</tref>
                         as the value. Pass the first value from
                         <em>frame</em> for <em>property</em> as <em>frame</em>, <em>list</em>
                         as <em>parent</em>, and <code>@list</code> as <tref>active property</tref>.</li>
                       <li>Otherwise, append a copy of <em>listitem</em> to <code>@list</code> in <em>list</em>.</li>
                     </ol>
                   </li>
-                  <li>If <em>item</em> is a <tref>subject reference</tref>
+                  <li>If <em>item</em> is a <tref>node reference</tref>
                     process <em>item</em> recursively using this algorithm passing a new map as
                     <em>subjects</em> that contains the <code>@id</code> of <em>item</em> as the key and
-                    the <tref>subject definition</tref> from the original <tref>map of flattened subjects</tref>
+                    the <tref>node definition</tref> from the original <tref>map of flattened subjects</tref>
                     as the value. Pass the first value from
                     <em>frame</em> for <em>property</em> as <em>frame</em>, <em>output</em>
                     as <em>parent</em>, and <em>property</em> as <tref>active property</tref>.
-                  <div class="issue">Passing a <tref>subject reference</tref> doesn't work if this map
-                    is used recursively. Presently pass <tref>subject definition</tref> from original
+                  <div class="issue">Passing a <tref>node reference</tref> doesn't work if this map
+                    is used recursively. Presently pass <tref>node definition</tref> from original
                     <tref>map of flattened subjects</tref>.</div></li>
                   <li>Otherwise, append a copy of <em>item</em> to <tref>active property</tref> in
                     <em>output</em>.</li>
@@ -840,7 +840,7 @@
 </ol>
 
 <p>At the completion of the recursive algorithm, <em>results</em> will contain the top-level
-  <tref>subject definition</tref>s.</p>
+  <tref>node definition</tref>s.</p>
 <p>The final two steps of the framing algorithm require
   <em>results</em> to be compacted according to the
   <a href="../json-ld-api/index.html#compaction-algorithm">Compaction Algorithm</a> by using the
@@ -857,9 +857,9 @@
 
 <section id="remove-embed">
 <h3>Remove Embedded Definition</h3>
-<p>This algorithm replaces an already embedded <tref>subject definition</tref> with a
-  <tref>subject reference</tref>. It then recursively removes any entries in the
-  <tref>map of embeds</tref> that had the removed <tref>subject definition</tref> in
+<p>This algorithm replaces an already embedded <tref>node definition</tref> with a
+  <tref>node reference</tref>. It then recursively removes any entries in the
+  <tref>map of embeds</tref> that had the removed <tref>node definition</tref> in
   their parent chain.</p>
 <p class="issue">About as clear as mud</p>
 <p class="issue" data-number="119">The current behaviour avoids embedding the same data
@@ -869,23 +869,23 @@
 <ol class="algorithm">
   <li>Find <em>embed</em> from <tref>map of embeds</tref> for <em>id</em>.</li>
   <li>Let <em>parent</em> and <em>property</em> be from <em>embed</em>.</li>
-  <li>If <em>parent</em> is an array, replace the <tref>subject definition</tref> that matches
-    <em>id</em> with a <tref>subject reference</tref>. If parent is a <tref>JSON object</tref>,
-    replace the <tref>subject definition</tref> for <em>property</em> that matches <em>id</em>
-    with a <tref>subject reference</tref>.</li>
+  <li>If <em>parent</em> is an array, replace the <tref>node definition</tref> that matches
+    <em>id</em> with a <tref>node reference</tref>. If parent is a <tref>JSON object</tref>,
+    replace the <tref>node definition</tref> for <em>property</em> that matches <em>id</em>
+    with a <tref>node reference</tref>.</li>
   <li>Remove dependents for <em>id</em> in <tref>map of embeds</tref>
     by scanning the map for entries with <em>parent</em> that have an <code>@id</code> of <em>id</em>,
     removing that definition from the map, and then removing the dependents for the <em>parent</em> id
     recursively by repeating this step. This step will terminate when there are no more embed
-    entries containing the removed <tref>subject definition</tref>'s <code>@id</code> in their
+    entries containing the removed <tref>node definition</tref>'s <code>@id</code> in their
     parent chain.</li>
 </ol>
 </section>
 
 <section id="embed-values">
 <h3>Embed Values</h3>
-<p>This algorithm recursively embeds property values in <tref>subject definition</tref> <em>output</em>, given a
-  <tref>framing context</tref>, input <tref>subject definition</tref> <em>element</em>, <tref>active property</tref>,
+<p>This algorithm recursively embeds property values in <tref>node definition</tref> <em>output</em>, given a
+  <tref>framing context</tref>, input <tref>node definition</tref> <em>element</em>, <tref>active property</tref>,
   and <em>output</em>.</p>
 <ol class="algorithm">
   <li>For each <em>item</em> in <tref>active property</tref> of <em>element</em>:
@@ -896,15 +896,15 @@
         is an array, and appending to <tref>active property</tref> otherwise. Recursively call this
         algorithm passing <em>item</em> as <em>element</em>, <code>@list</code> as <tref>active property</tref>,
         and the new array as <em>output</em>. Continue to the next <em>item</em>.</li>
-      <li>If <em>item</em> is a <tref>subject reference</tref>:
+      <li>If <em>item</em> is a <tref>node reference</tref>:
         <ol class="algorithm">
           <li>If <tref>map of embeds</tref> does not contain an entry for the <code>@id</code> of <em>item</em>:
             <ol class="algorithm">
               <li>Initialize <em>embed</em> with <em>output</em> as <em>parent</em> and
                 <tref>active property</tref> as <em>property</em>
                 and add to <tref>map of embeds</tref>.</li>
-              <li>Initialize a new <tref>subject definition</tref> <em>o</em> to act as the
-                embedded <tref>subject definition</tref>.</li>
+              <li>Initialize a new <tref>node definition</tref> <em>o</em> to act as the
+                embedded <tref>node definition</tref>.</li>
               <li>For each <em>property</em> and <em>value</em> in the expanded definition for
                 <em>item</em> in <em>subjects</em>:
                 <ol class="algorithm">
--- a/spec/latest/json-ld-syntax/index.html	Wed Aug 29 14:24:38 2012 +0200
+++ b/spec/latest/json-ld-syntax/index.html	Wed Aug 29 17:35:36 2012 -0700
@@ -416,14 +416,14 @@
       If a previous definition doesn't exist, the entire key-value is ignored.
       If a previous definition of the key does exist, the previous
       definition is undefined.</dd>
-    <dt><tdef>subject definition</tdef></dt><dd>
-      A <tref>JSON object</tref> used to represent a <tref>subject</tref> and
-      one or more properties of that subject. A <tref>JSON object</tref> is a
-      subject definition if it does not contain they keys <code>@value</code>,
+    <dt><tdef>node definition</tdef></dt><dd>
+      A <tref>JSON object</tref> used to represent a <tref>node</tref> and
+      one or more properties of that node. A <tref>JSON object</tref> is a
+      node definition if it does not contain they keys <code>@value</code>,
       <code>@list</code> or <code>@set</code> and it has one or more keys other
       than <code>@id</code>.</dd>
-    <dt><tdef>subject reference</tdef></dt><dd>
-      A <tref>JSON object</tref> used to reference a subject having only the
+    <dt><tdef>node reference</tdef></dt><dd>
+      A <tref>JSON object</tref> used to reference a node having only the
       <code>@id</code> key.</dd>
   </dl>
 </p>
@@ -616,7 +616,7 @@
   language of a JSON-LD document. This keyword is described in the section titled
   <a href="#string-internationalization"></a>.</dd>
 <dt><code>@type</code></dt>
-<dd>Used to set the data type of a <tref>subject</tref> or
+<dd>Used to set the data type of a <tref>node</tref> or
   <tref>typed value</tref>. This keyword is described in the section titled
   <a href="#typed-values"></a>.</dd>
 <dt><code>@container</code></dt>
@@ -756,8 +756,8 @@
 -->
 </pre>
 
-<p>Contexts MAY be used at any time a <tref>subject definition</tref> is defined.
-  A <tref>subject definition</tref> MAY specify multiple contexts, using an
+<p>Contexts MAY be used at any time a <tref>node definition</tref> is defined.
+  A <tref>node definition</tref> MAY specify multiple contexts, using an
   <tref>array</tref>, which is processed in order. This is useful
   when an author would like to use an existing context and add
   application-specific terms to the existing context. Duplicate context
@@ -765,7 +765,7 @@
   mechanism.</p>
 
 <pre class="example" data-transform="updateExample"
-     title="Scoped contexts within subject definitions">
+     title="Scoped contexts within node definitions">
 <!--
 {
   ****"@context":
@@ -795,7 +795,7 @@
   rules associated with the previous definition are removed. A <tref>term</tref> defined
   in a previous context MUST be removed, if it is re-defined to <code>null</code>.</p>
 
-<p>The set of contexts defined within a specific <tref>subject definition</tref> are
+<p>The set of contexts defined within a specific <tref>node definition</tref> are
   referred to as <tdef>local context</tdef>s. Setting the context to <code>null</code>
   effectively resets the <tref>active context</tref> to an empty context. The
   <tdef>active context</tdef> refers to the accumulation of <tref>local context</tref>s
@@ -871,9 +871,9 @@
 from other data sets.</p>
 
 <p>A <tref>JSON object</tref> used to define property values is called a
-  <tref>subject definition</tref>. <tref title="subject definition">Subject definitions</tref>
+  <tref>node definition</tref>. <tref title="node definition">Node definitions</tref>
   do not require an <code>@id</code>.
-  <tref title="subject definition">Subject definitions</tref> that do not
+  <tref title="node definition">Node definitions</tref> that do not
   contain an <code>@id</code> are known as an <tref title="unlabeled node">unlabeled nodes</tref>.</p>
 
 </section>
@@ -882,8 +882,8 @@
 <h2>IRIs</h2>
 
 <p><tref>IRI</tref>s are fundamental to <tref>Linked Data</tref>
-as that is how most <tref>subject</tref>s, all
-<tref title="property">properties</tref> and many <tref>object</tref>s are
+as that is how most <tref>nodes</tref>s and all
+<tref title="property">properties</tref> are
 identified. <tref>IRI</tref>s can be expressed in a variety of different ways
 in JSON-LD.</p>
 
@@ -1013,9 +1013,9 @@
 <p class="note">Specifying a <tref>JSON object</tref> with an
   <code>@id</code> key is used to identify that object using an
   <tref>IRI</tref>. When the object has only the <code>@id</code>, it
-  is called a <tref>subject reference</tref>.
+  is called a <tref>node reference</tref>.
   This facility MAY also be used to link to another
-  <tref>subject definition</tref> using a mechanism called
+  <tref>node definition</tref> using a mechanism called
   <tref>embedding</tref>, which is covered in the section titled
   <a href="#embedding"></a>.</p>
 
@@ -1098,9 +1098,9 @@
 </p>
 
 <p>A <tref>JSON object</tref> used to define property values is called a
-  <tref>subject definition</tref>. <tref title="subject definition">Subject definitions</tref>
+  <tref>node definition</tref>. <tref title="node definition">Node definitions</tref>
   do not require an <code>@id</code>. A
-  <tref>subject definition</tref>
+  <tref>node definition</tref>
   that does not contain an <code>@id</code> property defines properties of an
   <tref>unlabeled node</tref>.</p>
 
@@ -1121,14 +1121,14 @@
 <section>
 <h2>Specifying the Type</h2>
 
-<p>The type of a particular subject can be specified using the
+<p>The type of a particular node can be specified using the
 <code>@type</code> <tref>keyword</tref>. Specifying the type in this way will
 generate a triple of the form (subject, type, type-IRI). To be considered
 <tref>Linked Data</tref>, types MUST be uniquely identified by
 an <tref>IRI</tref>.</p>
 
 <pre class="example" data-transform="updateExample"
-     title="Specifying the type for a subject">
+     title="Specifying the type for a node">
 <!--
 {
 ...
@@ -1139,11 +1139,11 @@
 -->
 </pre>
 
-<p>A subject can be assigned more than one type by using the following markup
+<p>A node can be assigned more than one type by using the following markup
 pattern:</p>
 
 <pre class="example" data-transform="updateExample"
-     title="Specifying multiple types for a subject">
+     title="Specifying multiple types for a node">
 <!--
 {
 ...
@@ -1272,7 +1272,7 @@
     describes a specific syntax to use for expressing Linked Data. This
     includes the use of specific keywords, as identified in <a
     href="#syntax-tokens-and-keywords"></a> for
-    expressing <a title="subject definition">subject definitions</a>, values,
+    expressing <a title="node definition">node definitions</a>, values,
     and the <a>context</a>. See <a
     href="#json-ld-grammar"></a> for authoring
     guidelines and a BNF description of JSON-LD.</p>
@@ -1464,7 +1464,7 @@
 express the value of a type.</p>
 
 The <code>@type</code> <tref>keyword</tref> is also used to associate a type
-with a <tref>subject</tref>. The concept of an <tdef>subject type</tdef> and
+with a <tref>node</tref>. The concept of an <tdef>node type</tdef> and
 a <tdef>value type</tdef> are different. This is similar to object-oriented
 programming languages where both scalar and structured types use the same
 class inheritance mechanism, even though scalar types and structured types are
@@ -1488,8 +1488,8 @@
 </pre>
 
 <p>
-The first use of <code>@type</code> associates a <tref>subject type</tref>
-(<code>http://schema.org/BlogPosting</code>) with the <tref>subject</tref>,
+The first use of <code>@type</code> associates a <tref>node type</tref>
+(<code>http://schema.org/BlogPosting</code>) with the <tref>node</tref>,
 which is expressed using the <code>@id</code> <tref>keyword</tref>.
 The second use of <code>@type</code> associates a <tref>value type</tref>
 (<code>http://www.w3.org/2001/XMLSchema#dateTime</code>) with the
@@ -1498,7 +1498,7 @@
 <code>@type</code> are used in the same <tref>JSON object</tref>
 in JSON-LD data, the <code>@type</code> <tref>keyword</tref> is expressing a
 <tref>value type</tref>. Otherwise, the <code>@type</code>
-<tref>keyword</tref> is expressing a <tref>subject type</tref>.
+<tref>keyword</tref> is expressing a <tref>node type</tref>.
 </p>
 
 </section>
@@ -1635,10 +1635,10 @@
 MUST specify an <tref>IRI</tref> to a valid JSON-LD document in an HTTP Link
 Header [[!RFC5988]] using the <code>describedby</code> link relation.
 
-The referenced document MUST have a top-level <tref>subject definition</tref>. The
+The referenced document MUST have a top-level <tref>node definition</tref>. The
 <code>@context</code> subtree within that object is added to the top-level
-<tref>subject definition</tref> of the referencing document. If an <tref>array</tref> is at the top-level of the
-referencing document and its items are <tref title="subject definition">subject definitions</tref>, the <code>@context</code>
+<tref>node definition</tref> of the referencing document. If an <tref>array</tref> is at the top-level of the
+referencing document and its items are <tref title="node definition">node definitions</tref>, the <code>@context</code>
 subtree is added to all <tref>array</tref> items. All extra information located outside
 of the <code>@context</code> subtree in the referenced document MUST be
 discarded.
@@ -1687,7 +1687,7 @@
 specified using a <tref>JSON object</tref> having an <code>@id</code> key.
 The value of the <code>@id</code> key MUST be either a <tref>term</tref>, a
 <tref>compact IRI</tref>, or an <tref>absolute IRI</tref>. Such
-an object is called a <tref>subject reference</tref>.</p>
+an object is called a <tref>node reference</tref>.</p>
 
 <pre class="example" data-transform="updateExample"
      title="Expanded term definition">
@@ -2121,7 +2121,7 @@
 </pre>
 
 <p>The markup shown above would result in three triples being generated,
-  each relating the subject to an individual <tref>object</tref>, with no inherent order:</p>
+  each relating the node to an individual <tref>object</tref>, with no inherent order:</p>
 <pre class="example" data-transform="updateExample">
 <!--
 <http://example.org/people#joebob>
@@ -2238,10 +2238,10 @@
   <h2>Embedding</h2>
   <p>
     Object <tdef>embedding</tdef> is a JSON-LD feature that allows an author to
-    use <tref title="subject definition">subject definitions</tref> as
+    use <tref title="node definition">node definitions</tref> as
     <tref>property</tref> values. This is a commonly used mechanism for
-    creating a parent-child relationship between two <tref>subject</tref>s.</p>
-  <p>The example shows two subjects related by a property from the first subject:</p>
+    creating a parent-child relationship between two <tref>node</tref>s.</p>
+  <p>The example shows two nodes related by a property from the first node:</p>
 
   <pre class="example" data-transform="updateExample">
   <!--
@@ -2259,14 +2259,14 @@
   </pre>
 
   <p>
-    A <tref>subject definition</tref>, like the one used above, MAY be used in
+    A <tref>node definition</tref>, like the one used above, MAY be used in
     any value position in the body of a JSON-LD document.</p>
 </section>
 
 <section>
   <h2>Named Graphs</h2>
   <p>The <code>@graph</code> <tref>keyword</tref> is used to express a set of
-    JSON-LD <tref>subject definition</tref>s that may not be directly related
+    JSON-LD <tref>node definition</tref>s that may not be directly related
     to one another through a property. The mechanism may also be used where
     <tref>embedding</tref> is not desirable to the application. For example:</p>
 
@@ -2294,14 +2294,14 @@
   </pre>
 
   <p>In this case, embedding doesn't work as each
-    <tref>subject definition</tref> references the other. Using the
+    <tref>node definition</tref> references the other. Using the
     <code>@graph</code> <tref>keyword</tref> allows multiple resources to be
     defined within an <tref>array</tref>, and allows the use of a shared
     <tref>context</tref>. When used in a <tref>JSON object</tref> that is not otherwise
-    a <tref>subject definition</tref>, this describes resources in the <em>default graph</em>.
+    a <tref>node definition</tref>, this describes resources in the <em>default graph</em>.
     This is equivalent to using multiple <tref
-    title="subject definition">subject definitions</tref> in array and defining
-    the <code>@context</code> within each <tref>subject definition</tref>:</p>
+    title="node definition">node definitions</tref> in array and defining
+    the <code>@context</code> within each <tref>node definition</tref>:</p>
 
   <pre class="example" data-transform="updateExample">
   <!--
@@ -2331,7 +2331,7 @@
     <tref>keyword</tref> by pairing it with an <code>@id</code>
     <tref>keyword</tref>. This enables the developer to make statements
     about a <tref>linked data graph</tref> itself,
-    rather than just a single <tref>subject</tref>.</p>
+    rather than just a single <tref>node</tref>.</p>
 
   <pre class="example" data-transform="updateExample">
   <!--
@@ -2374,10 +2374,10 @@
 <h2>Identifying Unlabeled Nodes</h2>
 
 <p>At times, it becomes necessary to be able to express information without
-being able to specify the subject. Typically, this type of node is called
+being able to specify the node. Typically, this type of node is called
 an <tdef>unlabeled node</tdef> or a blank node (see [[!RDF-CONCEPTS]] <cite><a href="http://www.w3.org/TR/rdf11-concepts/#section-blank-nodes">Section 3.4: Blank Nodes</a></cite>).
 In JSON-LD, <tref>unlabeled node</tref> identifiers are
-automatically created if a subject is not specified using the
+automatically created if a node is not specified using the
 <code>@id</code> <tref>keyword</tref>. However, authors may provide identifiers for
 <tref title="unlabeled node">unlabeled nodes</tref> by using the special <code>_</code> (underscore)
 <tref>prefix</tref>. This allows one to reference the node locally within the
@@ -2395,7 +2395,7 @@
  -->
 </pre>
 
-<p>The example above would set the subject to <code>_:foo</code>, which can
+<p>The example above would set the node to <code>_:foo</code>, which can
 then be used elsewhere in the JSON-LD document to refer back to the
 <tref>unlabeled node</tref>. If a developer finds that they refer to the unlabeled
 node more than once, they should consider naming the node using a de-referenceable
@@ -2597,11 +2597,11 @@
   context processing.</p>
 
 <p>A JSON-LD document is either a
-  a single <tref>subject definition</tref>
+  a single <tref>node definition</tref>
   or a JSON <tref>array</tref> containing a set of
-  one or more <tref title="subject definition">subject definitions</tref>.</p>
+  one or more <tref title="node definition">node definitions</tref>.</p>
 <pre class="example" data-transform="updateExample"
-     title="Simple subject definition">
+     title="Simple node definition">
 <!--
 {
   "name": "Manu Sporny",
@@ -2611,7 +2611,7 @@
 -->
 </pre>
 <pre class="example" data-transform="updateExample"
-     title="Array of subject definitions">
+     title="Array of node definitions">
 <!--
 [
   {
@@ -2627,9 +2627,9 @@
 -->
 </pre>
 
-<section id="grammar-subject-definition">
-<h3>Subject Definition</h3>
-<p>A <tref>subject definition</tref> is a <tref>JSON object</tref>
+<section id="grammar-node-definition">
+<h3>Node Definition</h3>
+<p>A <tref>node definition</tref> is a <tref>JSON object</tref>
   containing one or more key/value pairs. Keys are <tref>IRI</tref>s,
   <tref>compact IRI</tref>s,
   <tref>term</tref>s defined within the <tref>active context</tref>, or one of the
@@ -2640,7 +2640,7 @@
   <li><code>@id</code>, or</li>
   <li><code>@type</code></li>
 </ul>
-<p>If the <tref>subject definition</tref> contains the <code>@context</code>
+<p>If the <tref>node definition</tref> contains the <code>@context</code>
   key, it's value MUST be one of the following:</p>
 <ul>
   <li>a <tref>string</tref> with the lexical form of <tref>IRI</tref>,</li>
@@ -2649,7 +2649,7 @@
   <li>an <tref>array</tref> composed of any number of the previous two expressions.</li>
 </ul>
 <pre class="example" data-transform="updateExample"
-     title="Subject definition with external context">
+     title="Node definition with external context">
 <!--
 {
   ****"@context": "http://json-ld.org/contexts/person.jsonld"****,
@@ -2663,7 +2663,7 @@
   and <a href="#identifying-unlabeled-nodes"></a> for further discussion on
   <code>@id</code> values.</p>
 
-<p>If the <tref>subject definition</tref> contains the <code>@id</code>
+<p>If the <tref>node definition</tref> contains the <code>@id</code>
   key, it's value
   MUST be a <tref>string</tref> having the lexical form of <tref>IRI</tref>,
   <tref>compact IRI</tref> (including <tref>unlabeled node</tref>), or a
@@ -2671,7 +2671,7 @@
   into an <tref>IRI</tref> or an <tref>unlabeled node</tref>.</p>
 
 <pre class="example" data-transform="updateExample"
-     title="Subject definition with @id">
+     title="Node definition with @id">
 <!--
 {
   "@context": "http://json-ld.org/contexts/person.jsonld",
@@ -2683,7 +2683,7 @@
 -->
 </pre>
 
-<p>If the <tref>subject definition</tref> contains the <code>@type</code>
+<p>If the <tref>node definition</tref> contains the <code>@type</code>
   key, it's value
   MUST be either a <tref>string</tref> having the lexical form of
   <tref>absolute IRI</tref>, <tref>compact IRI</tref>, a <tref>term</tref> defined in the
@@ -2691,12 +2691,12 @@
   or an <tref>array</tref> of any of these.</p>
 
 <p class="note">A JSON-LD processor SHOULD process non-conforming documents
-  having <code>@type</code> values including <tref>subject definition</tref> or
-  <tref>subject reference</tref> entries but MUST
+  having <code>@type</code> values including <tref>node definition</tref> or
+  <tref>node reference</tref> entries but MUST
   discard everything except for the value of the <code>@id</code> key.</p>
 
 <pre class="example" data-transform="updateExample"
-     title="Subject definition with @type">
+     title="Node definition with @type">
 <!--
 {
   "@context": "http://json-ld.org/contexts/person.jsonld",
@@ -2711,25 +2711,25 @@
 <p>See <a href="#specifying-the-type"></a> for further discussion on
   <code>@type</code> values.</p>
 
-<p>If the <tref>subject definition</tref> contains the <code>@graph</code>
+<p>If the <tref>node definition</tref> contains the <code>@graph</code>
   key, it's value MUST
-  be a <tref>subject definition</tref> or an <tref>array</tref> of zero or more
-  <tref title="subject definition">subject definitions</tref>. If the
-  <tref>subject definition</tref> contains an <code>@id</code> keyword,
+  be a <tref>node definition</tref> or an <tref>array</tref> of zero or more
+  <tref title="node definition">node definitions</tref>. If the
+  <tref>node definition</tref> contains an <code>@id</code> keyword,
   its value is used as the label of a named graph.</p>
 
 <p class="note">As a special case, if the <tref>JSON object</tref> contains no
   keys other than <code>@graph</code> and <code>@context</code>, and the
   <tref>JSON object</tref> is the root of the JSON-LD document, the
-  <tref>JSON object</tref> is not treated as a <tref>subject definition</tref>; this
-  is used as a way of defining <tref title="subject definition">subject
+  <tref>JSON object</tref> is not treated as a <tref>node definition</tref>; this
+  is used as a way of defining <tref title="node definition">node
   definitions</tref> that may not form a connected graph. This allows a
   <tref>context</tref> to be defined which is shared by all of the constituent
-  <tref title="subject definition">subject definitions</tref>.</p>
+  <tref title="node definition">node definitions</tref>.</p>
 
 
 <pre class="example" data-transform="updateExample"
-     title="Multiple subject definitions with a single context using @graph">
+     title="Multiple node definitions with a single context using @graph">
 <!--
 {
   "@context": ...,
@@ -2768,8 +2768,8 @@
   <li><tref>true</tref>,</li>
   <li><tref>false</tref>,</li>
   <li><tref>null</tref>,</li>
-  <li><tref>subject reference</tref>,</li>
-  <li><tref>subject definition</tref>,</li>
+  <li><tref>node reference</tref>,</li>
+  <li><tref>node definition</tref>,</li>
   <li><tref>typed value</tref>,</li>
   <li><tref>language-tagged value</tref>,</li>
   <li><code>@set</code> or <code>@list</code>
@@ -2780,14 +2780,14 @@
 
 </section>
 
-<section id="grammar-subject-reference">
-<h2>Subject Reference</h2>
+<section id="grammar-node-reference">
+<h2>Node Reference</h2>
 <p>A <tref>JSON object</tref> containing only the <code>@id</code> (or alias)
-  is a <tref>subject reference</tref> and not a
-  <tref>subject definition</tref>.
+  is a <tref>node reference</tref> and not a
+  <tref>node definition</tref>.
 </p>
 <pre class="example" data-transform="updateExample"
-     title="Explicit subject reference">
+     title="Explicit node reference">
 <!--
 {
   "@context": ...,
@@ -2817,7 +2817,7 @@
 <section id="grammar-language-map">
 <h2>Language Map</h2>
 <p>A <tref>language map</tref> may be used as a term value within a
-  <tref>subject definition</tref> if the term is defined with
+  <tref>node definition</tref> if the term is defined with
   <code>@container</code> set to <code>@language</code>.</p>
 <p>The keys of a <tref>language map</tref> MUST be a [[BCP47]] string
   with an associated value that is any of the following types:</p>
@@ -2827,8 +2827,8 @@
   <li><tref>true</tref>,</li>
   <li><tref>false</tref>,</li>
   <li><tref>null</tref>,</li>
-  <li><tref>subject reference</tref>,</li>
-  <li><tref>subject definition</tref>,</li>
+  <li><tref>node reference</tref>,</li>
+  <li><tref>node definition</tref>,</li>
   <li><tref>typed value</tref>,</li>
   <li><tref>language-tagged value</tref>,</li>
   <li><code>@set</code> or <code>@list</code>
@@ -2895,8 +2895,8 @@
   <tref>keyword</tref>. Its value MUST be an <tref>array</tref> of any of the following:</p>
 <ul>
   <li><tref>string</tref>,</li>
-  <li><tref>subject reference</tref>,</li>
-  <li><tref>subject definition</tref>,</li>
+  <li><tref>node reference</tref>,</li>
+  <li><tref>node definition</tref>,</li>
   <li><tref>typed value</tref>, or</li>
   <li><tref>language-tagged value</tref>.</li>
 </ul>
@@ -2904,8 +2904,8 @@
   <tref>keyword</tref>. Its value MUST be an <tref>array</tref> of any of the following:</p>
 <ul>
   <li><tref>string</tref>,</li>
-  <li><tref>subject reference</tref>,</li>
-  <li><tref>subject definition</tref>,</li>
+  <li><tref>node reference</tref>,</li>
+  <li><tref>node definition</tref>,</li>
   <li><tref>typed value</tref>,</li>
   <li><tref>language-tagged value</tref>,</li>
   <li><code>@set</code> or <code>@list</code>