Paragraphs on blank node scopes and merging re-written for clarity.
authorPat Hayes <phayes@ihmc.us>
Wed, 13 Mar 2013 00:52:37 -0500
changeset 650 b33bd696ceaa
parent 649 62aa1af4fa95
child 651 c7d0e2d56b4a
Paragraphs on blank node scopes and merging re-written for clarity.
rdf-mt/index.html
--- a/rdf-mt/index.html	Tue Mar 12 21:51:54 2013 -0500
+++ b/rdf-mt/index.html	Wed Mar 13 00:52:37 2013 -0500
@@ -190,6 +190,15 @@
   instance, which differ only in the identity of their blank nodes, are considered 
   to be <dfn>equivalent</dfn>.  Equivalent graphs are mutual instances with an invertible instance 
   mapping. As blank nodes have no particular identity beyond their location in a graph, we treat such equivalent graphs as identical.</p>
+
+<p>Blank nodes may be identified in a surface (document) syntax for RDF using blank node identifiers. Each surface syntax MUST specify an unambiguous notion of the <dfn>scope</dfn> of such identifiers, such that any graph defined by this syntax will be inside a single scope. Two graphs not in the same scope do not share any blank nodes. Each combination of a blank node identifier and a surrounding scope is understood to define a unique blank node, local to the graphs described by the surface syntax. A blank node can occur in only one scope. The same blank node identifier used in different scopes identifies a different blank node in each scope in which it occurs. Scope boundaries are defined by the surface syntax used to encode RDF. For example, in RDF/XML [[!RDF-SYNTAX-GRAMMAR]] and NTriples [[!RDF-TESTCASES]], the scope is defined by the document. In TriG, [[a trig reference]] a syntax for RDF datastores, the scope is the entire datastore. </p>
+
+<p>The set of all triples in a given scope is an RDF graph, called a <dfn>scoped graph</dfn>. (The scoped graph may be an abstraction, e.g. for a dataset it is the set of all triples which occur in any graph in the dataset, which might not be represented explicitly in the dataset itself.) Every RDF graph described by a surface syntax for RDF must be a subgraph of a scoped graph. </p>
+
+<p>An RDF graph is <dfn>complete</dfn> when, for every blank node in the graph, the graph contains all triples in the scoped graph which contain that blank node. That is, for every blank node in the scope, the graph either does not contain the blank node, or else it contains all triples in the scoped graph which contain that blank node. Scoped graphs and ground graphs are always complete. Non-complete graphs may fail to give enough information to reconstruct the information contained in their union.</p>
+
+<p>Any set of graphs can be treated as a single graph simply by taking the union of the sets of triples. If two or more of the graphs are in the same scope, then the same blank node might occur in more than one of them, and will retain its identity when the union graph is formed. If the graphs in a set are from different scopes they cannot share blank nodes, so if they are represented by a notation which uses blank node identifiers then care should be taken to change the identifiers to avoid name clashes between blank node identifiers used in graphs from different scopes. Once this is done &minus; that is, when graphs from different scopes are not represented using the same blank node identifier &minus; then the union graph can be formed by taking the union of the triples in the various graphs in S, and treating this set as the scoped graph of a single blank node scope. We will refer to this process of forming the union of graphs as <dfn>merging</dfn>, and to the union graph as the <dfn>merge</dfn> of the original graphs. A merge may be represented by a new document or datastructure, or may be treated as a conceptual entity when processing RDF.</p>
+
 <p >An RDF graph is <dfn>lean</dfn> if it has no instance which is 
   a proper subgraph of the graph. Non-lean graphs have internal redundancy 
   and express the same content as their lean subgraphs. For example, the graph</span></p>
@@ -200,15 +209,9 @@
   _:x &lt;ex:p&gt; _:x .</code></p>
 <p >is lean. </p>
 
-<p>Blank nodes in RDF graphs are restricted to a single <a class="externalDFN">scope</a> of blank node identifiers. Each blank node can occur in only one scope. The same blank node identifier used in a several scopes identifies a different blank node in each scope in which it occurs. Scope boundaries are defined by the surface syntax used to encode RDF. For example, in RDF/XML [[!RDF-SYNTAX-GRAMMAR]] and NTriples [[!RDF-TESTCASES]], the scope is defined by the document. In TriG, [[a trig reference]] a syntax for RDF datastores, the scope is the entire datastore. Two graphs not in the same scope do not share any blank nodes.</p>
-
-<p>The set of all triples in a given scope is an RDF graph, called a <dfn>scoped graph</dfn>. (The scoped graph may be an abstraction, e.g. for a dataset it is the set of all triples which occur in any graph in the dataset, which might not be represented explicitly in the dataset itself.) Every RDF graph must be a subgraph of a scoped graph. </p>
 
-<p>An RDF graph is <dfn>complete</dfn> when, for every blank node in the graph, the graph contains all triples in the scoped graph which contain that blank node. That is, for every blank node in the scope, the graph either does not contain the blank node, or else it contains all triples in the scoped graph which contain that blank node. Scoped graphs and ground graphs are always complete. Non-complete graphs may fail to give enough information to reconstruct the information contained in their union.</p>
 
-<p>Any set of graphs can be treated as a single graph simply by taking the union of the sets of triples. If two or more of the graphs are in the same scope, then the same blank node might occur in more than one of them, and will retain its identity when the union graph is formed. If the graphs in a set are from different scopes they cannot share blank nodes, so if they are represented by a notation which uses blank node identifiers then care should be taken to change the identifiers to avoid name clashes between blank node identifiers used in graphs from different scopes. Once this is done &minus; that is, when graphs from different scopes do not use the same blank node identifier &minus; then the union graph can be formed by taking the union of the triples in the various graphs in S, and treating this as the scoped graph of a single blank node scope. We will refer to this process of forming the union of graphs as <dfn>merging</dfn>, and to the union graph as the <dfn>merge</dfn> of the original graphs. </p>
-
-<ul><li><p class="changenote"> The 2004 RDF 1.0 specification did not define a notion of blank node scope, so allowed the possibility of two graphs 'accidentally' sharing a blank node. It was therefore obliged to define a process of 'standardizing apart' blank nodes, and to distinguish graph unions from graph merges. Requiring each RDF graph to be in a single blank node scope simplifies the basic syntax and renders this distinction unnecessary. Standardizing apart blank node identifiers may still be needed at a concrete syntax level, but is not part of the underlying conceptual model of RDF. The earlier terminology is retained to avoid confusion, but now 'merging' simply means 'taking the union' at the graph syntax level. Since 2004, in subsequent practice, the term "RDF graph" is widely used to mean what is here defined as a scoped graph. </p>
+<ul><li><p class="changenote"> The 2004 RDF 1.0 specification did not define a notion of blank node scope, so allowed the possibility of two graphs 'accidentally' sharing a blank node. It was therefore obliged to define a process of 'standardizing apart' blank nodes, and to distinguish graph unions from graph merges. Requiring each RDF graph to be in a single blank node scope simplifies the basic syntax and renders this distinction unnecessary. Standardizing apart blank node identifiers may still be needed at a concrete syntax level, but is not part of the underlying conceptual model of RDF. The earlier terminology is retained to avoid confusion, but now 'merging' simply means 'taking the union' at the graph syntax level. <br/>Since 2004, in subsequent practice, the term "RDF graph" is widely used to mean what is here defined as a scoped graph. </p>
 </li></ul>
 
 <p class="issue">The Concepts document does not yet define blank node scopes.</p>