--- a/rdf-layers/index.html Tue May 01 23:38:50 2012 -0400
+++ b/rdf-layers/index.html Wed May 02 09:23:47 2012 -0400
@@ -101,41 +101,23 @@
<section id="abstract">
<p>This specification introduces the notion of RDF <i>data
- layers</i>—places to store RDF triples—and defines a
- set of languages for expressing information about them. Examples of
+ layers</i>—places to store RDF triples—and defines a set
+ of languages for expressing information about them. Examples of
data layers include: an HTML page with embedded RDFa or microdata, a
file containing RDF/XML or Turtle data, and a SQL database viewable
as RDF using R2RML. The term "layer" is a metaphor: we imagine a
layer as transparent surfaces on which RDF graphs can be drawn and
then easily combined, still retaining their own identity and
properties. RDF data layers are a generalization of SPARQL's named
- graphs, bringing standard semantics to systems which manage multiple
- collections of RDF data. </p>
+ graphs, providing a standard model with formal semantics for systems
+ which manage multiple collections of RDF data. </p>
</section>
<section class="informative">
<h2>Introduction</h2>
-
- <p>An RDF data layer is a collection of RDF Triples, or a place to
- store triples. This trivial concept is an important building
- block for the Semantic Web. RDF Layers are what some people have
- called Named Graphs, but they are different from both RDF Graphs
- and Named Graphs as those terms are defined in existing W3C
- specifications.</p>
-
- <p>The difference between RDF Layers and RDF Graphs is that while
- they are both sets of triples, RDF Layers can conceptually change
- over time and have an identity separate from their contents. RDF
- Graphs, in contrast, are pure mathematical sets, so it makes no
- sense to talk about them "changing", and two graphs which contain
- the same triples are by definition the same graph. RDF layers are
- different; they keep their own identify even when the happen to
- contain exactly the same triples. This distinction is important
- when there is data (or metadata) about the set of triples; if the
- metadata is about a set with its own identity, an RDF Layer should
- be used instead of a Graph.</p>
+ <p>@@@ background, context, and general motivation ... </p>
<p>The name "layer" is chosen to evoke the image of a transparent
surface on which an RDF Graph can be temporarily drawn and then
@@ -156,60 +138,221 @@
</section>
<section>
- <h2>Terminology</h2>
-
- <p>TBD</p>
+ <h2>Terminology and Concepts</h2>
- <p>A "Layer Switch" is a resource which acts as a different layer
- based on some client context, such as the user identity. Systems
- which use layer switches SHOULD also define working URLs for each of
- the layers the switch can act as, and SHOULD provide the URL of the
- layer used during any http transaction using the Content-Location
- header. For example <tt>http://example.org/my-account-balance</tt>
- might return the account balance of the logged-in user. If the user
- is logged in as "alice", the system might return a Content-Location
- of <tt>http://example.org/my-account-balance?user=alice</tt>. For
- alice, that later URL would work as well; for other users it would
- give <tt>403 Forbidden</tt>.
+ <section>
+ <h2>Layer</h2>
+ <p class="issue">The term "Layer" is a placeholder. The final
+ term has not yet been selected by the Working Group. Other
+ candidates include "G-Box", "(Data) Surface", "(Data) Space". The
+ Editors do not consider <a
+ href="http://www.w3.org/2011/rdf-wg/meeting/2011-10-12#resolution_1">F2F2
+ Resolultion 1</a> still binding, given the degree to which the concept
+ and its role has shifted since that meeting.</p>
+
+ <p>An RDF <dfn>data layer</dfn> or just <dfn>layer</dfn> is a
+ conceptual place where RDF triples can stored. Examples include:
+ </p>
+
+ <ul>
+
+ <li>a human-readable Web page, such as an HTML page containing
+ RDFa markup, microdata markup, or embedded turtle.</li>
+
+ <li>a file, in a computer's filesystem, containing RDF data
+ expressed in RDF/XML, N-Triples, Turtle, etc.</li>
+
+ <li>a machine-readable Web page containing RDF data expressed in
+ RDF/XML, N-Triples, Turtle, etc.</li>
+
+ <li>a SQL database which provides an RDF view of its data,
+ perhaps using R2RML</li>
+
+ <li>the default graph or any of the named graphs available via a
+ SPARQL endpoint</li>
+ </ul>
+
+ <p>Formally, a layer is a function from points in time to RDF
+ Graphs. This matches the notion of a container or a place or a
+ writing surface: at any given point in time (for which the
+ function is defined), there is a set of RDF triples in that spot.
+ Since an RDF Graph is defined as a set of RDF triples, the triples
+ there at time t form the graph which is the output of the function
+ for input t.</p>
+
+ <p>Web resources which do not behave as a function of time —
+ such as pages which provide different data to different users at
+ the exact same time — are not layers. See also <a>static
+ layer</a> and <a>layer switch</a>.</p>
+
+ </section>
+
+ <section>
+ <h2>Dataset</h2>
+
+ <p>A <dfn>dataset</dfn> is defined by <a
+ href="http://www.w3.org/TR/sparql11-query/#rdfDataset">SPARQL
+ 1.1</a> as a structure consisting of:</p>
+
+ <ol>
+
+ <li>A distinguished RDF Graph called the <dfn>default graph</dfn></li>
+
+ <li>A set of (<i>name</i>, <i>graph</i>) pairs, where
+ <i>name</i> is an IRI and the <i>graph</i> is an RDF Graph. No
+ two pairs in a dataset may have the same <i>name</i>.</li>
+
+ </ol>
+
+ <p>This definition forms the basis of the SPARQL Query semantics;
+ each query is performed against the information in a specific
+ dataset.</p>
+
+ <p>A dataset is a pure mathematical structure, like an RDF Graph
+ or a set of integers, with no identity apart from its contents.
+ Two datasets with the same contents are in fact the same dataset,
+ and one dataset cannot change over time. Logically, a dataset
+ cannot have different contents tomorrow; if it is changed, it is a
+ different dataset. By analogy, one cannot change the set of prime
+ numbers or the set {1,3,5}; datasets, like these sets of integers,
+ are immutable, eternal concepts.</p>
+
+ <p>The word <strong>"default"</strong> in the term "default graph"
+ refers to the fact that in SPARQL, this is the graph a server uses
+ to perform a query when the client does not specify the name of a
+ graph to use. The term is not related to the idea of a graph
+ containing default (overridable) information. Logically, the role
+ of the default graph is such that it could reasonably be thought
+ of as containing the dataset's metadata.</p>
+
+ </section>
+
+ <section>
+ <h2>Graph Store</h2>
+
+ <p>SPARQL 1.1 Update defines a mutable (time-dependent) structure
+ corresponding to a <a>dataset</a>, called <dfn>graph store</dfn>.
+ It is defined as:</p>
+
+ <ol>
+
+ <li>A distinguished slot for an RDF Graph</li>
+
+ <li>A set of (<i>name</i>, <i>slot</i>) pairs, where the slot holds an RDF Graph
+ and the name is an IRI. No two pairs in a graph store may have the same <i>name</i>.</li>
+
+ </ol>
+
+ <p>The term "slot" is synonymous with "layer".</p>
+
+ <p>Formally, a graph store can be seen as a function from points
+ in time to <a>dataset</a>s.</p>
+
+ </section>
+
+ <section>
+ <h2>Named Graph</h2>
+
+ <p>SPARQL formally defines the term <dfn>named graph</dfn>,
+ following [Carroll], as one of the (name, graph) pairs in a
+ <a>dataset</a>.</p>
+
+ <p>In practice, the term is used more loosely to refer to the
+ graph part of those pairs or to the slot part of the pairs
+ in a graph store. <a
+ href="http://www.w3.org/TR/2012/WD-sparql11-update-20120105/">SPARQL
+ 1.1 Update</a> does this, for example, with phrases like, "This
+ example copies triples from one named graph to another named
+ graph".</p>
+
+ <p>We continue that practice, using "named graph" to refer
+ to either the graph part of the (name, graph) pairs of a dataset,
+ or the corresponding slot part of graph store. Note that even in
+ this loose usage, the default graph of a dataset and its
+ corresponding slot in a graph store are never called named
+ graphs.</p>
+
+ </section>
+
+ <section>
+ <h2>Quad</h2>
+
+ <p>We define an RDF <dfn>quad</dfn> as the 4-tuple
+ (<i>subject</i>, <i>predicate</i>, <i>object</i>,
+ <i>layer</i>).</p>
+
+ <p>Informally, a quad should be understand as a statement that the
+ RDF triple (<i>subject</i>, <i>predicate</i>, <i>object</i>) is in
+ the <a>layer</a> <i>layer</i>.</p>
+
+ </section>
+
+ <section>
+ <h2>Quadset</h2>
+
+ <p>We define an RDF <dfn>quadset</dfn> as a set containing (zero or more) RDF Quads and (zero or more) RDF Triples.</p>
+
+ <p>Quadsets and <a>dataset</a>s are isomorphic and semantically
+ equivalent:</p>
+
+ <ul>
+
+ <li>the triples in the quadset correspond to the triples in default
+ graph of the dataset;</li>
+
+ <li>each quad corresponds to a triple in a named graph: the quad (S P
+ O L) corresponds to the triple (S P O) in the graph with the name
+ L.</li>
+
+ </ul>
+
+ <p>Datasets and quadsets can thus be used interchangeably, with
+ the more appropriate one being use in any particular context.</p>
+
+ </section>
+
+ <section>
+ <h2>Static Layer</h2>
+
+ <p>A <dfn>static layer</dfn> is a <a>layer</a> which, by definition,
+ contains the same triples at all points in time.</p>
+
+ </section>
+
+
+ <section>
+ <h2>Layer Switch</h2>
+
+ <p>A <dfn>layer switch</dfn> is a Web Resource which acts as a
+ different <a>layer</a> when responding to different client
+ information, such as the value of a cookie or the client IP
+ address.</p>
+
+ <p>Systems which use layer switches SHOULD also define working
+ URLs for each of the layers the switch can act as, and they SHOULD
+ provide that URL to the client via the Content-Location
+ header.</p>
+
+ <p>For example, the URL
+ <tt>http://example.org/my-account-balance</tt> might return the
+ account balance of the logged-in user. If the user is logged in
+ as "alice", the system might return a Content-Location of
+ <tt>http://example.org/my-account-balance?user=alice</tt>. The
+ system could reasonably be designed to allow Alice to use that URL as
+ well; for other users it would give <tt>403 Forbidden</tt>.</p>
+
+ </section>
</section>
<section>
<h2>Use Cases</h2>
- <p>TBD. See <a href="#detailed-example">Detailed Example</a> for now.</p>
+ <p>TBD. See <a href="#detailed-example" class="sectionRef"></a> for now.</p>
</section>
-<section>
- <h2>Datasets</h2>
-
- <section id="section-multigraph">
- <h3>Formal Definition</h3>
-
- <p class="note">Should this quote or replace this text from RDF
- Concepts?</p>
-
- <p>An <dfn>RDF Dataset</dfn> is a collection of
- <a>RDF graphs</a> and comprises:</p>
-
- <ul>
- <li>Exactly one <dfn>default graph</dfn>, being an <a>RDF graph</a>.
- The default graph does not have a name and MAY be empty.</li>
- <li>Zero or more <dfn>named graphs</dfn>.
- Each named graph is a pair consisting of an <a>IRI</a>
- (the <dfn>graph name</dfn>), and an <a>RDF graph</a>.
- Graph names are unique within an RDF dataset.</li>
- </ul>
-
- <div class="issue">
- <p>The design presented here should be considered a straw man proposal at this point. It is based on RDF Datasets as <a href="http://www.w3.org/TR/sparql11-query/#rdfDataset">defined in SPARQL 1.1</a>.</p>
- </div>
-
-</section>
-</section>
-
<section id="syntax">
<h2>Dataset Languages</h2>
@@ -252,23 +395,18 @@
<section>
<h2>Semantics</h2>
- <p>Formally, a layer is a function from points in time to RDF
- Graphs. At any given point in time, there is one RDF Graph "in"
- that layer, or the layer is undefined at that point in time.</p>
+ <p>formalize what's been said above.</p>
- <p>SPARQL defines a <a
- href="http://www.w3.org/TR/sparql11-query/#rdfDataset">Dataset</a>
- as a structure consisting of a "default" graph and a set of (name,
- graph) pairs. We now give this structure declarative semantics,
- allowing dataset to be used as logical statements, like RDF Graphs.
- We define a dataset as being true if and only if (1) its default
- graph is true, and (2) for every (<i>name</i>, <i>graph</i>) pair in
- the dataset, the layer denoted by <i>name</i> contains every triple
- in <i>graph</i>.</p>
+ <p>We now give <a>dataset</a>s declarative semantics, allowing
+ dataset to be used as logical statements (like RDF Graphs). We
+ define a dataset as being true if and only if (1) its default graph
+ is true, and (2) for every (<i>name</i>, <i>graph</i>) pair in the
+ dataset, the layer denoted by <i>name</i> contains every triple in
+ <i>graph</i>.</p>
</section>
-<section>
+<section> <!-- I don't like what respec does with id=conformance -->
<h2>Conformance</h2>
<p>Something like: If a layer has a URL, and you get a 200 response
@@ -283,11 +421,12 @@
<section class="informative">
<h2>Detailed Example</h2>
- <p>This section shows, with some detail, several ways layers can be
- used to help build a federated information system.</p>
+ <p>This section presents a design for using layers in constructing a
+ federated information system. It is intended to help explain and
+ motivate RDF <a>data layer</a>s.</p>
<section>
- <h3>A Federated Phonebook, in Layers</h3>
+ <h3>A Federated Phonebook</h3>
<p>As a first example of how to use layers, consider an
organization which has 25 different divisions around the world,
@@ -635,6 +774,7 @@
<section class="appendix informative" id="changes">
<h2>Changes</h2>
<ul>
+ <li>2012-05-02: Removed obsolete text from the introduction, removed the section on datasets borrowed from RDF Concepts, and added many entries to Terminology and Concepts.</li>
<li>2012-05-01: Starting with a little text from RDF Concepts, a few ideas, and the text from <a href="http://www.w3.org/2011/rdf-wg/wiki/Layers">Layers</a></li>
</ul>
</section>