Consistently name blank nodes blank nodes instead of unlabeled nodes
authorMarkus Lanthaler <mark_lanthaler@gmx.net>
Tue, 04 Dec 2012 18:19:29 +0100
changeset 981 dba621025620
parent 980 07d2f008677c
child 982 b84a657f139e
Consistently name blank nodes blank nodes instead of unlabeled nodes
spec/latest/json-ld-api/index.html
spec/latest/json-ld-syntax/index.html
--- a/spec/latest/json-ld-api/index.html	Tue Dec 04 17:51:07 2012 +0100
+++ b/spec/latest/json-ld-api/index.html	Tue Dec 04 18:19:29 2012 +0100
@@ -529,7 +529,7 @@
     <dd>A technique for creating a network of inter-connected data across different documents and Web sites.</dd>
     <dt><tdef>JSON-LD graph</tdef></dt>
     <dd>An unordered labeled directed graph, where <tref title="node">nodes</tref> are
-      <tref title="IRI">IRIs</tref> or <tref title="Blank Node">Blank Nodes</tref>, or other values.
+      <tref title="IRI">IRIs</tref> or <tref title="blank node">blank nodes</tref>, or other values.
       A <tref>JSON-LD graph</tref> is a generalized representation of a
       <cite><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-graph">RDF graph</a></cite>
       as defined in [[!RDF-CONCEPTS]].</dd>
@@ -559,8 +559,10 @@
     <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
-      linked to from outside of the JSON-LD graph. A blank node is assigned an identifier starting with
-      the prefix <code>_:</code>.</dd>
+      linked to from outside of the JSON-LD graph.</dd>
+    <dt><tdef>blank node identifier</tdef></dt>
+    <dd>A blank node identifier is a string that can be used as an identifier for a <tref>blank node</tref> within
+      the scope of a JSON-LD document. Blank node identifiers begin with <code>_:</code>.
     <dt><tdef>property</tdef></dt>
     <dd>The <tref>IRI</tref> label of an edge in a <tref>JSON-LD graph</tref>.</dd>
     <dt><tdef>subject</tdef></dt>
@@ -978,13 +980,13 @@
     <h3>Blank Node</h3>
 
     <p>A <tref>node</tref> in a <tref>JSON-LD graph</tref> that
-    does not contain a de-reference-able identifier because it is either
+    does not contain a dereferenceable identifier because it is either
     ephemeral in nature or does not contain information that needs to be linked
     to from outside of a <tref>JSON-LD graph</tref>.
-    A blank node is assigned an identifier starting
+    A <tref>blank node</tref> is assigned a <tref>blank node identifier</tref> starting
     with the prefix <code>_:</code> and an implementation dependent,
     auto-generated suffix that is unique to all information associated with the
-    particular blank node.
+    particular <tref>blank node</tref>.
     </p>
 
     <dl title="[NoInterfaceObject] interface BlankNode : Node" class="idl">
@@ -1812,7 +1814,7 @@
 <h1>Flattening</h1>
 
 <p>Flattening is the process of taking a JSON-LD document, <a href="#expansion">expanding</a>
-  it, labeling all unlabeled nodes with a <tref>blank node</tref> identifier, and returning
+  it, labeling all <tref title="blank node">blank nodes</tref> with a <tref>blank node identifier</tref>, and returning
   an array of the <tref title="node">nodes</tref> defined in the document.</p>
 
 <p>For example, assume the following JSON-LD input document:</p>
@@ -1879,7 +1881,7 @@
 <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>
+  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="IRI">IRIs</tref>.</p>
@@ -1894,7 +1896,7 @@
     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>IRI</tref>, set <em>id</em> to its value,
-    otherwise set it to a <tref>blank node</tref> identifier created by the
+    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>
   <li>If <em>list</em> is not <tref>null</tref>, append a new <tref>node object</tref> to <em>list</em> using
@@ -1949,7 +1951,7 @@
 <section>
 <h3>Generate Blank Node Identifier</h3>
 <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>
+  deterministically name <tref title="blank node identifier">blank node identifiers</tref>. 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>
 <p>The variable <em>next identifier</em> is initialized to <em>prefix</em> appended with <code>0</code>. The
--- a/spec/latest/json-ld-syntax/index.html	Tue Dec 04 17:51:07 2012 +0100
+++ b/spec/latest/json-ld-syntax/index.html	Tue Dec 04 18:19:29 2012 +0100
@@ -638,40 +638,34 @@
 </section>
 
 <section>
-<h2>From JSON to JSON-LD</h2>
-
-<p>If a set of <tref title="term">terms</tref> such as, <strong>name</strong>,
-<strong>homepage</strong>, and <strong>depiction</strong>,
-are defined in a <tref>context</tref>, and that context is used to resolve the
-names in <tref title="JSON object">JSON objects</tref>, machines are able to automatically expand the terms to
-something unambiguous like this:</p>
-
-<pre class="example" data-transform="updateExample"
-     title="Expanded terms">
-<!--
-{
-  "****http://xmlns.com/foaf/0.1/name****": "Manu Sporny",
-  "****http://xmlns.com/foaf/0.1/homepage****": "http://manu.sporny.org"
-  "****http://xmlns.com/foaf/0.1/depiction****": "http://twitter.com/account/profile_image/manusporny"
-}
- -->
-</pre>
-
-<p>Doing this allows JSON to be unambiguously machine-readable without
-requiring developers to drastically change their workflow.</p>
-
-<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 an
-<tref>unlabeled node</tref>. It is advised that all nodes described in JSON-LD are
-given unique identifiers via the <code>@id</code> keyword unless the data is not
-intended to be linked to from other data sets.</p>
-
-<p>A <tref>JSON object</tref> used to define property values is called a
-  <tref>node object</tref>. <tref title="node object">node objects</tref>
-  do not require an <code>@id</code>.
-  <tref title="node object">node objects</tref> that do not
-  contain an <code>@id</code> are known as <tref title="unlabeled node">unlabeled nodes</tref>.</p>
-
+  <h2>From JSON to JSON-LD</h2>
+
+  <p>If a set of <tref title="term">terms</tref> such as, <strong>name</strong>,
+    <strong>homepage</strong>, and <strong>depiction</strong>,
+    are defined in a <tref>context</tref>, and that context is used to resolve the
+    names in <tref title="JSON object">JSON objects</tref>, machines are able to automatically expand the terms to
+    something unambiguous like this:</p>
+
+  <pre class="example" data-transform="updateExample"
+       title="Expanded terms">
+  <!--
+  {
+    "****http://xmlns.com/foaf/0.1/name****": "Manu Sporny",
+    "****http://xmlns.com/foaf/0.1/homepage****": "http://manu.sporny.org"
+    "****http://xmlns.com/foaf/0.1/depiction****": "http://twitter.com/account/profile_image/manusporny"
+  }
+   -->
+  </pre>
+
+  <p>Doing this allows JSON to be unambiguously machine-readable without
+    requiring developers to drastically change their workflow. A <tref>JSON object</tref>
+     used to define property values of a <tref>node</tref> is called a <tref>node object</tref>.</p>
+
+  <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="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>
@@ -876,15 +870,9 @@
 -->
 </pre>
 
-<p>The example above contains a node identified by the IRI
+<p>The example above contains a <tref>node object</tref> identified by the IRI
   <code>http://example.org/people#joebob</code>.</p>
 
-<p>A <tref>JSON object</tref> used to define property values of a <tref>node</tref> is called a
-  <tref>node object</tref>. <tref title="node object">node objects</tref>
-  do not require an <code>@id</code>. A <tref>node object</tref>
-  that does not contain an <code>@id</code> property defines properties of an
-  <tref>unlabeled node</tref>.</p>
-
 <p>Once defined, the <tref>node</tref>'s unique identifier can be used to refer to
   it from other parts of the document or from external documents, using
   a <tref>node object</tref> that only contains an <code>@id</code> key:</p>
@@ -2300,38 +2288,35 @@
 </section>
 
 <section>
-<h2>Identifying Unlabeled Nodes</h2>
-
-<p>At times, it becomes necessary to be able to express information without
-being able to specify the node. Typically, this type of node is called
-an <tdef>unlabeled node</tdef> or a <tdef>blank node</tdef> (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 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
-document, but makes it impossible to reference the node from an
-external document. The <tref>unlabeled node</tref> identifier is scoped to the
-document in which it is used.</p>
-
-<pre class="example" data-transform="updateExample"
-     title="Specifying a local unlabeled node identifier">
-<!--
-{
-...
-  "@id": "****_:foo****",
-...
-}
- -->
-</pre>
-
-<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
-<tref>IRI</tref> so that it can be referenced also from other documents.
-</p>
-
+  <h2>Identifying Blank Nodes</h2>
+
+  <p>At times, it becomes necessary to be able to express information without
+    being able to specify the node. This type of node is called a <tref>blank node</tref>
+    (see <cite><a href="http://www.w3.org/TR/rdf11-concepts/#section-blank-nodes">Section 3.4: Blank Nodes</a></cite>
+    of [[!RDF-CONCEPTS]]). In JSON-LD, <tref title="blank node identifier">blank node identifiers</tref> are
+    automatically created if a node is not specified using the <code>@id</code> <tref>keyword</tref>.
+    However, authors may provide identifiers for <tref title="blank node">blank nodes</tref>
+    by using the special <code>_</code> (underscore) <tref>prefix</tref>. This allows one
+    to reference the node locally within the document, but makes it impossible to reference
+    the node from an external document. The <tref>blank node identifier</tref> is scoped
+    to the document in which it is used.</p>
+
+  <pre class="example" data-transform="updateExample"
+       title="Specifying a local blank node identifier">
+  <!--
+  {
+  ...
+    "@id": "****_:foo****",
+  ...
+  }
+   -->
+  </pre>
+
+  <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>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>IRI</tref> so that it can also be referenced from other documents.</p>
 </section>
 
 <section>
@@ -2567,7 +2552,7 @@
       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 blank node is a <tref>node</tref> which is neither an <tref>IRI</tref>,
+    <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
@@ -2665,20 +2650,19 @@
   <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
+<p>If the <tref>node object</tref> contains the <code>@id</code> key, its value MUST be
   an <tref>IRI</tref>,
-  a <tref>compact IRI</tref> (including <tref>unlabeled node</tref> identifiers), or
+  a <tref>compact IRI</tref> (including <tref title="blank node identifier">blank node identifiers</tref>), or
   a <tref>term</tref> defined in the <tref>active context</tref> expanding
-  into an <tref>IRI</tref> or an <tref>unlabeled node</tref> identifier.
+  into an <tref>IRI</tref> or a <tref>blank node identifier</tref>.
   See <a href="#node-identifiers"></a>, <a href="#compact-iris"></a>,
-  and <a href="#identifying-unlabeled-nodes"></a> for further discussion on
+  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 IRI</tref>,
-  a <tref>compact IRI</tref> (excluding <tref>unlabeled node</tref> identifiers),
+  a <tref>compact IRI</tref> (excluding <tref title="blank node identifier">blank node identifier</tref>),
   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
@@ -2730,7 +2714,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>IRI</tref> or an <tref>unlabeled node</tref> identifier.</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>
@@ -2965,7 +2949,7 @@
 <section>
 <h4>Embedding</h4>
 <p>Both Turtle and JSON-LD allow embedding, although Turtle only allows embedding of
-  <tref title="unlabeled node">unlabeled nodes</tref>.</p>
+  <tref title="blank node">blank nodes</tref>.</p>
 </section>
 
 <pre class="example" data-transform="updateExample"