--- a/ldp.html Thu Feb 27 16:00:38 2014 -0500
+++ b/ldp.html Fri Feb 28 16:53:05 2014 -0500
@@ -304,31 +304,29 @@
<p></p></dd>
<dt><dfn>Linked Data Platform Container</dfn> (<abbr title="Linked Data Platform Container">LDPC</abbr>)</dt>
- <dd>An LDPR representing a collection of <a title="Membership">member</a> resources and/or <a title="Containment">contained</a>
+ <dd>An LDP-RS representing a collection of linked
documents (<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-document">RDF Document</a> [[!rdf11-concepts]] or information resources [[!WEBARCH]])
- that responds to client requests for creation, modification, and/or enumeration of its members and documents,
+ that responds to client requests for creation, modification, and/or enumeration of its linked members and documents,
and that conforms to the simple lifecycle
patterns and conventions in <a href="#ldpc" class="sectionRef"></a>.
<p></p></dd>
<dt><dfn>Linked Data Platform Basic Container</dfn> (<abbr title="Linked Data Platform Basic Container">LDP-BC</abbr>)</dt>
- <dd>A <a title="Linked Data Platform Container">LDPC</a> that uses a single pre-defined predicate to link to both
- its <a title="Containment">contained</a> and <a title="Membership">member</a> documents (information resources) [[!WEBARCH]].
+ <dd>A <a title="Linked Data Platform Container">LDPC</a> that defines a simple link to both
+ its <a title="Containment">contained</a> documents (information resources) [[!WEBARCH]].
<p></p></dd>
<dt><dfn>Linked Data Platform Direct Container</dfn> (<abbr title="Linked Data Platform Direct Container">LDP-DC</abbr>)</dt>
- <dd>A <a title="Linked Data Platform Container">LDPC</a> that has the flexibility of choosing what form its
+ <dd>A <a title="Linked Data Platform Container">LDPC</a> adds the concept <a title="Membership">membership</a>, allows the flexibility of choosing what form its
<a title="Membership triples">membership triples</a> take, and allows <a title="Membership">members</a> to be
any resources [[!WEBARCH]], not only documents.
<p></p></dd>
- <!-- TODO: Remove LDP-IC definitions
<dt><dfn>Linked Data Platform Indirect Container</dfn> (<abbr title="Linked Data Platform Indirect Container">LDP-IC</abbr>)</dt>
<dd>A <a title="Linked Data Platform Container">LDPC</a> that is similar to a <a title="Linked Data Platform Direct Container">LDP-DC</a>
and is capable of having <a title="Membership">members</a> whose URIs are based
on the content of its <a title="Containment">contained</a> documents rather than the URIs assigned to those documents.
<p></p></dd>
- -->
<dt><dfn>Membership</dfn></dt>
<dd>The relationship linking a LDP-RS (LDPCs are also LDP-RSs) and its member LDPRs.
@@ -408,6 +406,7 @@
<li>1. Introduction: <b>non-normative</b></li>
<li>2. Terminology: <b>normative</b></li>
<li>3. Conformance: <b>normative</b></li>
+ <!-- TODO: section numbering is OFF - LDP clients -->
<li>4. Linked Data Platform Resources: <b>normative</b></li>
<li>5. Linked Data Platform Containers: <b>normative</b></li>
<li>6. HTTP Header Definitions: <b>normative</b></li>
@@ -469,11 +468,9 @@
<a title="LDP client">LDP clients</a> MUST
be capable of processing responses formed by an LDP server that ignores hints,
including LDP-defined hints.
- </h2></section>
-
+ </h2></section>
<section id="ldpr-cli-paging"><h2 class="normal">
-
<div class="atrisk" id="atrisk-paging"><p class="atrisktext">Feature At Risk</p>
<p>The LDP Working Group proposes incorporation of the following clause to make LDP clients paging aware:</p>
<a title="LDP client">LDP clients</a> SHOULD
@@ -833,8 +830,13 @@
</ol>
<p>
This document defines the representation and behavior of containers
- that address these issues. The set of members of a container is
+ that address these issues. There are multiple types of containers defined
+ to supported a variety of use cases, all that support a base set of capabilities.
+ The contents of a container is
defined by a set of triples in its representation (and state) called
+ the <a title="Containment triples">containment triples</a> that follow a fixed pattern.
+ Additional types of containers allow for the set of members of a container to be
+ defined by a set of triples in its representation called
the <a title="Membership triples">membership triples</a> that follow a consistent pattern
(see the linked-to definition for the possible patterns).
The membership triples of a container all
@@ -849,7 +851,7 @@
</p>
<p>This document includes a set of guidelines for
creating new resources and adding them to the list of
- members of a container. It goes on to explain how to learn about a set of related
+ resources linked to a container. It goes on to explain how to learn about a set of related
resources, regardless of how they were created or added to the container's membership.
It also defines behavior when resources created using a container are later deleted;
deleting containers removes membership information and
@@ -867,7 +869,7 @@
@prefix ldp: <http://www.w3.org/ns/ldp#>.
<>
- a ldp:Container, ldp:BasicContainer;
+ a ldp:BasicContainer;
dcterms:title "A very simple container";
ldp:contains <r1>, <r2>, <r3>.</pre>
@@ -876,14 +878,13 @@
<figcaption>Sample of Linked Data Platform Basic Container</figcaption>
</figure>
- <p>This example is very straightforward - the
- membership and containment predicate are both <code>ldp:contains</code> and the other
- consistent membership value is the container's
- URI, occurring in the subject position of the triples.
+ <p>This example is very straightforward - there is the containment triple
+ with subject of the container, predicate of
+ <code>ldp:contains</code> and objects indicating the URIs of the contained resources.
A POST to this container will create a new resource
- and add it to the list of members by adding a new membership triple
+ and add it to the list of contained resources by adding a new containment triple
to the container. This type of container is also refered to as
- <a title="Linked Data Platform Basic Container">LDP Basic Container</a>.</p>
+ <a title="">Linked Data Platform Basic Container</a>.</p>
<p>Sometimes it is useful to use a subject
other than the container itself as the consistent membership value, and/or to use
@@ -942,7 +943,7 @@
@prefix dcterms: <http://purl.org/dc/terms/>.
@prefix o: <http://example.org/ontology/>.
<>
- a ldp:Container, ldp:DirectContainer;
+ a ldp:DirectContainer;
dcterms:title "The assets of JohnZSmith";
ldp:membershipResource <http://example.org/netWorth/nw1/>;
ldp:hasMemberRelation o:asset;
@@ -957,7 +958,7 @@
@prefix dcterms: <http://purl.org/dc/terms/>.
@prefix o: <http://example.org/ontology/>.
<>
- a ldp:Container, ldp:DirectContainer;
+ a ldp:DirectContainer;
dcterms:title "The liabilities of JohnZSmith";
ldp:membershipResource <http://example.org/netWorth/nw1/>;
ldp:hasMemberRelation o:liability;
@@ -980,10 +981,9 @@
and <code>http://example.org/netWorth/nw1/liabilityContainer/</code> container
resources allows both assets and liabilities to be created.
</p>
- <p>This type of container is refered to as an <a title="Linked Data Platform Direct Container">LDP Direct Container</a>. An
- <a title="Linked Data Platform Basic Container">LDP Basic Container</a> is a constrained form of
- <a title="Linked Data Platform Direct Container">LDP Direct Container</a> where the
- membership predicate is <code>ldp:contains</code> and the container resource is the container itself.
+ <p>This type of container is refered to as an <a title="Linked Data Platform Direct Container">LDP Direct Container</a>.
+ <a title="Linked Data Platform Direct Container">LDP Direct Container</a> adds the concept of <a title="Membership">membership</a>
+ and flexibilty on how to specify the <a title="Membership triples">membership triples</a>.
</p>
<p>As seen in the <a href="#ldpc-ex-membership-subj"><code>assetContainer/</code> example</a>,
@@ -1022,7 +1022,7 @@
<advisorContainer/marsha#me>.
<advisorContainer/>
- a ldp:Container;
+ a ldp:IndirectContainer;
dcterms:title "The asset advisors of JohnZSmith";
ldp:membershipResource <>;
ldp:hasMemberRelation o:advisor;
@@ -1037,7 +1037,7 @@
form <code>(<>, foaf:primaryTopic, topic-URI)</code> to inform the server which URI to use
(<code>topic-URI</code>) in the new membership triple.</p>
- <p>This type of container is also referred to as a <a title="Linked Data Platform Container">LDP Container</a>.
+ <p>This type of container is also referred to as a <a title="Linked Data Platform Indirect Container">LDP Indirect Container</a>.
It is similar to a an <a title="Linked Data Platform Direct Container">LDP Direct Container</a>
but it provides an indirection to add (via a create request) as member any resource,
such as a URI representing a real-world object,
@@ -1047,13 +1047,10 @@
with their class relationship to types of LDPRs.</p>
<figure id="fig-ldpc-types">
- <img src="images/ldpc1.png" alt="Types of Linked Data Platform Containers" />
+ <img src="images/ldpc-hierarchy.png" alt="Types of Linked Data Platform Containers" />
<figcaption>Class relationship of types of Linked Data Platform Containers</figcaption>
</figure>
-<div class="ldp-issue-pending">
-<p>PENDING -- table work in progress, if found valuable...we'll keep.</p>
-
<p>The following table illustrates some differences between <a title="membership">membership</a> and
<a title="containment">containment</a> triples. For details on the normative behavior, see appropriate sections
below.
@@ -1064,15 +1061,15 @@
<tr><td>LDPR created in LDP-BC</td><td>New triple: (LDPC, ldp:contains, LDPR)</td><td>Same</td></tr>
<tr><td>LDPR created in LDP-DC</td><td>New triple links LDP-RS to created LDPR. LDP-RS URI may be same as LDP-DC</td>
<td>New triple: (LDPC, ldp:contains, LDPR)</td></tr>
- <tr><td>LDPR created in LDPC</td><td>New triple links LDP-RS to content indicated URI</td>
+ <tr><td>LDPR created in LDP-IC</td><td>New triple links LDP-RS to content indicated URI</td>
<td>New triple: (LDPC, ldp:contains, LDPR)</td></tr>
- <tr><td>LDPR is deleted</td><td>Triples may be removed</td><td>Triples are removed
+ <tr><td>LDPR is deleted</td><td>Membership triple may be removed</td><td>(LDPC, ldp:contains, LDPR) triple is removed
</td></tr>
<tr><td>LDPC is deleted</td><td>Triples and member resources may be removed</td><td>Triples of form
(LDPC, ldp:contains, LDPR) and contained LDPRs may be removed</td></tr>
</table>
-</div>
- <section id="ldpc-get_empty-container_props"><h2 class="normal">Retrieving Only Empty-Container Triples
+
+<section id="ldpc-get_empty-container_props"><h2 class="normal">Retrieving Only Empty-Container Triples
</h2><!-- Was 5.1.1 / #ldpc-get_empty-container_props -->
<p>The representation of a container
that has many members will be large. There are several important
@@ -1117,7 +1114,7 @@
@prefix ldp: <http://www.w3.org/ns/ldp#>.
<http://example.org/container1/>
- a ldp:Container, ldp:DirectContainer;
+ a ldp:DirectContainer;
dcterms:title "A Linked Data Platform Container of Acme Resources";
ldp:membershipResource <http://example.org/container1/>;
ldp:hasMemberRelation ldp:member;
@@ -1132,22 +1129,25 @@
</section>
+<section id="ldpc-container">
+<h2>Container</h2>
+<p>The following section contains normative clauses for <a title="">Linked Data Platform Container</a>.</p>
+
<section id="ldpc-general">
<h2>General</h2>
<p>The Linked Data Platform does not define how clients
discover <dfn><abbr title="Linked Data Platform Containers">LDPCs</abbr></dfn>.</p>
- <section id="ldpc-isldpr"><h2 class="normal">Each Linked Data Platform Container MUST also be
- a conforming <a title="">Linked Data Platform RDF Source</a>.
+ <section id="ldpc-isldpr"><h2 class="normal">Each <a title="">Linked Data Platform Container</a> MUST also be
+ a conforming <a title="">Linked Data Platform RDF Source</a>. <a title="">LDP client</a>s MAY infer the following triple:
+ whose subject is <code>ldp:Container</code>,
+ whose predicate is <code>rdfs:subClassOf</code>,
+ and whose object is <code>ldp:RDFSource</code>,
+ but there is no requirement to materialize this triple in the LDPC representation.
</h2></section><!-- Was 5.2.1 / #ldpc-5_2_1 -->
- <section id="ldpc-typecontainer"><h2 class="normal">The representation of a LDPC MUST have an <code>rdf:type</code>
- of only one of:
- <ul>
- <li><code>ldp:Container</code> for <a title="">Linked Data Platform Container</a></li>
- <li><code>ldp:DirectContainer</code> for <a title="">Linked Data Platform Direct Container</a></li>
- <li><code>ldp:BasicContainer</code> for <a title="">Linked Data Platform Basic Container</a></li>
- </ul>
+ <section id="ldpc-typecontainer"><h2 class="normal">The representation of a LDPC MAY have an <code>rdf:type</code>
+ of only one of <code>ldp:Container</code> for <a title="">Linked Data Platform Container</a>.
Non-normative note: <a href="#ldp-rdfconcepts-extra-triples-types">LDPCs
might have additional types</a>, like any <a title="Linked Data Platform RDF Source">LDP-RS</a>.
</h2></section><!-- Was 5.2.7 / #ldpc-5_2_7 -->
@@ -1156,113 +1156,6 @@
<code>rdf:Seq</code> or <code>rdf:List</code>.
</h2></section><!-- Was 5.2.8 / #ldpc-5_2_8 -->
- <section id="ldpc-mbrpred"><h2 class="normal">
- <a title="Linked Data Platform Direct Container">LDP Direct Containers</a>
- and <a title="Linked Data Platform Container">LDP Containers</a>
- SHOULD use the <code>ldp:member</code> predicate as an LDPC's <a title="Membership predicate">membership predicate</a>
- if there is no obvious predicate from an application vocabulary to use
- (<a title="Linked Data Platform Basic Container">LDP-BCs</a> <a href="#ldpc-containtriple-basic">always use <code>ldp:contains</code></a>).
- The state of an LDPC includes information about which
- resources are its members, in the form of <a title="Membership triples">membership triples</a> that
- follow a consistent pattern. The LDPC's state contains enough information for clients to discern
- the <a title="Membership predicate">membership predicate</a>, the other consistent membership
- value used in the container's membership triples (<var>membership-constant-URI</var>),
- and the position (subject or object) where those URIs
- occurs in the <a title="Membership triples">membership triples</a>.
- Member resources can be
- any kind of resource identified by a URI, LDPR or otherwise.
- </h2></section><!-- Was 5.2.3 / #ldpc-5_2_3 -->
-
- <section id="ldpc-containres"><h2 class="normal">Each <a title="Linked Data Platform Direct Container">LDP Direct Container</a>
- and <a title="Linked Data Platform Container">LDP Container</a> representation MUST contain exactly one triple
- whose subject is the LDPC URI,
- whose predicate is the <code>ldp:membershipResource</code>,
- and whose object is the LDPC's <var>membership-constant-URI</var>.
- Commonly the LDPC's URI is the <var>membership-constant-URI</var>, but LDP does not require this.
- </h2>
- <section id="ldpc-containres-basic"><h2 class="normal"><a title="Linked Data Platform Basic Container">LDP-BCs</a> MUST
- behave as if their state contains the triple
- whose subject is the LDPC URI,
- whose predicate is <code>ldp:membershipResource</code>,
- and whose object is the LDPC URI (subject and object are the same URI),
- but there is no requirement to materialize this triple in LDP-BC representations.
- </h2></section>
- </section><!-- Was 5.2.4 / #ldpc-5_2_4 -->
-
- <section id="ldpc-containtriples"><h2 class="normal">Each <a title="Linked Data Platform Direct Container">LDP Direct Container</a>
- and <a title="Linked Data Platform Container">LDP Container</a> representation MUST contain exactly one triple
- whose subject is the LDPC URI,
- and whose predicate is either <code>ldp:hasMemberRelation</code> or <code>ldp:isMemberOfRelation</code>.
- The object of the triple is constrained by other sections, such as
- <a href="#ldpc-containtriple-relation" class="sectionRef">ldp:hasMemberRelation</a> or
- <a href="#ldpc-containtriple-byrelation" class="sectionRef">ldp:isMemberOfRelation</a>, based on the
- <a title="Membership triples">membership triple</a>
- pattern used by the container.
- </h2><!-- Was 5.2.5 / #ldpc-5_2_5 -->
-
- <section id="ldpc-containtriple-relation"><h2 class="normal">LDPCs (<a title="Linked Data Platform Direct Container">LDP Direct Containers</a>
- and <a title="Linked Data Platform Container">LDP Containers</a> only)
- whose <a title="Membership triples">membership triple</a>
- pattern is <var>( membership-constant-URI , membership-predicate , member-derived-URI )</var> MUST
- contain exactly one triple
- whose subject is the LDPC URI,
- whose predicate is <code>ldp:hasMemberRelation</code>,
- and whose object is the URI of <var>membership-predicate</var>.
- </h2>
- <section id="ldpc-containtriple-basic"><h2 class="normal"><a title="Linked Data Platform Basic Container">LDP-BCs</a> MUST
- behave as if their state contains the triple
- whose subject is the LDPC URI,
- whose predicate is <code>ldp:hasMemberRelation</code>,
- and whose object is <code>ldp:contains</code>,
- but there is no requirement to materialize this triple in LDP-BC representations.
- </h2></section>
- </section><!-- Was 5.2.5.1 / #ldpc-5_2_5_1 -->
-
- <section id="ldpc-containtriple-byrelation"><h2 class="normal">LDPCs (<a title="Linked Data Platform Direct Container">LDP Direct Containers</a>
- and <a title="Linked Data Platform Container">LDP Containers</a> only)
- whose <a title="Membership triples">membership triple</a>
- pattern is <var>( member-derived-URI , membership-predicate , membership-constant-URI )</var> MUST
- contain exactly one triple
- whose subject is the LDPC URI,
- whose predicate is either <code>ldp:isMemberOfRelation</code>,
- and whose object is the URI of <var>membership-predicate</var>.
- </h2></section><!-- Was 5.2.5.2 / #ldpc-5_2_5_2 -->
- </section>
-
- <section id="ldpc-indirectmbr"><h2 class="normal">
- <a title="Linked Data Platform Container">LDP Containers</a>
- MUST contain exactly one triple whose
- subject is the LDPC URI,
- whose predicate is <code>ldp:insertedContentRelation</code>, and
- whose object <var>ICR</var> describes how the <var>member-derived-URI</var> in
- the container's <a title="Membership triples">membership triples</a> is chosen.
- The <var>member-derived-URI</var> is taken from some triple
- <var>( S, P, O )</var> in the document supplied by the client as input to the create request;
- if <var>ICR</var>'s value is <var>P</var>, then the <var>member-derived-URI</var> is
- <var>O</var>. LDP does not define the behavior when more than one triple containing
- the predicate <var>P</var> is present in the client's input.
- For example, if the client POSTs RDF content to a container
- that causes the container to create a new LDPR, and that content contains the triple
- <var>( <> , foaf:primaryTopic , bob#me )</var>
- <code>foaf:primaryTopic</code> says
- that the <var>member-derived-URI</var> is <var>bob#me</var>.
- </h2>
-
- <section id="ldpc-indirectmbr-basic"><h2 class="normal">
- LDP
- <a title="Linked Data Platform Basic Container">Basic</a> and
- <a title="Linked Data Platform Direct Container">Direct</a> Containers
- MUST behave as if they
- have a <var>( LDPC URI, <code>ldp:insertedContentRelation</code> , <code>ldp:MemberSubject</code> )</var>
- triple, but LDP imposes no requirement to materialize such a triple in representations.
- The value <code>ldp:MemberSubject</code> means that the
- <var>member-derived-URI</var> is the URI assigned by the server to a
- document it creates; for example, if the client POSTs content to a container
- that causes the container to create a new LDPR, <code>ldp:MemberSubject</code> says
- that the <var>member-derived-URI</var> is the URI assigned to the newly created LDPR.
- </h2></section>
- </section><!-- Was 5.2.10 / #ldpc-5_2_10 -->
-
<section id="ldpc-linktypehdr"><h2 class="normal"><a title="LDP server">LDP servers</a>
exposing LDPCs
MUST advertise their LDP support by exposing a HTTP <code>Link</code> header
@@ -1324,14 +1217,6 @@
removed by other methods.
</h2></section>
- <section id="ldpc-post-createdmbr-member"><h2 class="normal">
- When a successful HTTP <code>POST</code> request to a LDPC results in the creation of an LDPR,
- the LDPC MUST update its membership triples to reflect that addition, and the resulting
- membership triple MUST be consistent with any LDP-defined predicates it exposes.
- A <a title="Linked Data Platform Direct Container">LDP Direct Container</a> or <a title="Linked Data Platform Container">LDP Container</a>'s membership triples MAY also be modified via
- through other means.
- </h2></section><!-- Was 5.4.2 / #ldpc-5_4_2 -->
-
<section id="ldpc-post-createbins"><h2 class="normal"><a title="LDP server">LDP servers</a> MAY accept an HTTP <code>POST</code> of non-RDF representations
<a title="Linked Data Platform Non-RDF Source">(LDP-NRs)</a> for
creation of any kind of resource, for example binary resources. See <a href="#ldpc-post-acceptposthdr">the Accept-Post section</a> for
@@ -1421,19 +1306,6 @@
whose object is the newly created member resource's URI;
it MAY add other triples as well.
</h2></section><!-- Was 5.4.14 / #ldpc-5_4_14 -->
-
- <section id="ldpc-post-indirectmbrrel"><h2 class="normal">LDPCs
- whose <code>ldp:insertedContentRelation</code> triple has an object
- <strong>other than</strong> <code>ldp:MemberSubject</code>
- and that create new resources
- MUST add a triple to the container
- whose subject is the container's URI,
- whose predicate is <code>ldp:contains</code>, and
- whose object is the newly created resource's URI (which will be different from
- the <var><a href="#ldpc-indirectmbr">member-derived URI</a></var> in this case).
- This <code>ldp:contains</code> triple can be the only link from the container to the newly created
- resource in certain cases.
- </h2></section><!-- Was 5.4.15 / #ldpc-5_4_15 -->
</section>
@@ -1456,7 +1328,7 @@
(Conflict) status code.
</h2></section><!-- Was 5.5.1 / #ldpc-5_5_1 -->
- <section id="ldpc-put-create"><h2 class="normal"><a title="LDP server">LDP servers</a> that allow member creation via <code>PUT</code>
+ <section id="ldpc-put-create"><h2 class="normal"><a title="LDP server">LDP servers</a> that allow LDPR creation via <code>PUT</code>
SHOULD NOT re-use URIs. For RDF representations (LDP-RSs),the created resource
can be thought of as a RDF <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-named-graph">named graph</a> [[!rdf11-concepts]].
</h2></section><!-- Was 5.5.4 / #ldpc-5_5_4 -->
@@ -1472,9 +1344,9 @@
this specification imposes the following new requirements for LDPCs.
</p>
- <section id="ldpc-del-contremovesmbrtriple"><h2 class="normal">
+ <section id="ldpc-del-contremovesconttriple"><h2 class="normal">
When a LDPR identified by the object of a <a title="containment triples">containment triple</a> is deleted, the LDPC server MUST also remove
- the LDPR from the containing LDPC by removing the corresponding containment and membership triples.
+ the LDPR from the containing LDPC by removing the corresponding containment triple.
</h2>
<blockquote>
Non-normative note: The <a>LDP server</a> might perform additional actions,
@@ -1484,7 +1356,7 @@
</blockquote>
</section><!-- Was 5.6.1 / #ldpc-5_6_1 -->
- <section id="ldpc-del-contremovesmbrres"><h2 class="normal">
+ <section id="ldpc-del-contremovescontres"><h2 class="normal">
When a LDPR identified by the object of a <a title="containment triples">containment triple</a> is deleted, and the LDPC server
created an associated LDP-RS (see the <a href="#ldpc-post-createbinlinkmetahdr">LDPC POST section</a>), the LDPC server MUST also remove the associated LDP-RS it created.
</h2></section><!-- Was 5.6.4 / #ldpc-5_6_4 -->
@@ -1528,8 +1400,8 @@
</p>
<section id="ldpc-options-linkmetahdr"><h2 class="normal">When a LDPC server creates a
- <a title="Linked Data Platform Non-RDF Source">LDP-NR</a> member (for example, one whose
- representation was HTTP <code>POST</code>ed to the LDPC and then referenced by a membership triple)
+ <a title="Linked Data Platform Non-RDF Source">LDP-NR</a> (for example, one whose
+ representation was HTTP <code>POST</code>ed to the LDPC)
the LDP server might create an associated <a title="Linked Data Platform RDF Source">LDP-RS</a>
to contain data about the non-LDPR (see <a href="#ldpc-post-createbinlinkmetahdr">LDPC POST section</a>).
For LDP-NRs that have this associated LDP-RS, an LDPC server MUST provide an HTTP <code>Link</code>
@@ -1537,6 +1409,220 @@
<code>describedby</code> [[!RFC5988]].
</h2></section><!-- Was 5.9.2 / #ldpc-5_9_2 -->
</section> <!-- h2 -->
+</section> <!-- ldpc-container -->
+
+<section id="ldpbc">
+<h2>Basic</h2>
+
+<p>The following section contains normative clauses for <a title="">Linked Data Platform Basic Container</a>.</p>
+
+
+<section id="ldpbc-general">
+<h2>General</h2>
+
+<section id="ldpbc-are-ldpcs"><h2 class="normal">Each <a title="Linked Data Platform Basic Container">LDP Basic Container</a> MUST also be
+ a conforming <a title="Linked Data Platform Container">LDP Container</a> in <a href="#ldpc-container" class="sectionRef"></a> along the
+ following restrictions in this section. <a title="">LDP client</a>s MAY infer the following triple:
+ whose subject is <code>ldp:BasicContainer</code>,
+ whose predicate is <code>rdfs:subClassOf</code>,
+ and whose object is <code>ldp:Container</code>,
+ but there is no requirement to materialize this triple in the LDP-BC representation.
+</h2></section>
+
+<!-- TODO: Consider removing the following 2 sections, they are informative but not really needed -->
+
+<section id="ldpbc-containres"><h2 class="normal"><a title="Linked Data Platform Basic Container">LDP Basic Containers</a> MUST
+ behave as if their state contains the triple
+ whose subject is the LDPC URI,
+ whose predicate is <code>ldp:membershipResource</code>,
+ and whose object is the LDPC URI (subject and object are the same URI),
+ but there is no requirement to materialize this triple in LDP-BC representations.
+</h2></section>
+
+<section id="ldpbc-containtriple"><h2 class="normal"><a title="Linked Data Platform Basic Container">LDP Basic Containers</a> MUST
+ behave as if their state contains the triple
+ whose subject is the LDPC URI,
+ whose predicate is <code>ldp:hasMemberRelation</code>,
+ and whose object is <code>ldp:contains</code>,
+ but there is no requirement to materialize this triple in LDP-BC representations.
+</h2></section>
+
+</section> <!-- ldpbc General -->
+
+<section id="ldpbc-HTTP_POST">
+<h2>HTTP POST</h2>
+</section>
+
+</section> <!-- ldpbc Basic -->
+
+
+<section id="ldpc-direct">
+<h2>Direct</h2>
+<!-- TODO: membership triples definitions? -->
+
+<p>The following section contains normative clauses for <a title="">Linked Data Platform Direct Container</a>.</p>
+
+<section id="ldpdc-general">
+<h2>General</h2>
+
+<section id="ldpdc-are-ldpcs"><h2 class="normal">Each <a title="Linked Data Platform Direct Container">LDP Direct Container</a> MUST also be
+ a conforming <a title="Linked Data Platform Container">LDP Container</a> in <a href="#ldpc-container" class="sectionRef"></a> along the following
+ restrictions. <a title="">LDP client</a>s MAY infer the following triple:
+ whose subject is <code>ldp:BasicContainer</code>,
+ whose predicate is <code>rdfs:subClassOf</code>,
+ and whose object is <code>ldp:Container</code>,
+ but there is no requirement to materialize this triple in the LDP-DC representation.
+</h2></section>
+
+<section id="ldpdc-mbrpred"><h2 class="normal">
+ <a title="Linked Data Platform Direct Container">LDP Direct Containers</a>
+ SHOULD use the <code>ldp:member</code> predicate as an LDPC's <a title="Membership predicate">membership predicate</a>
+ if there is no obvious predicate from an application vocabulary to use..
+ The state of an LDPC includes information about which
+ resources are its members, in the form of <a title="Membership triples">membership triples</a> that
+ follow a consistent pattern. The LDPC's state contains enough information for clients to discern
+ the <a title="Membership predicate">membership predicate</a>, the other consistent membership
+ value used in the container's membership triples (<var>membership-constant-URI</var>),
+ and the position (subject or object) where those URIs
+ occurs in the <a title="Membership triples">membership triples</a>.
+ Member resources can be
+ any kind of resource identified by a URI, LDPR or otherwise.
+</h2></section><!-- Was 5.2.3 / #ldpc-5_2_3 -->
+
+<section id="ldpdc-containres"><h2 class="normal">Each <a title="Linked Data Platform Direct Container">LDP Direct Container</a>
+ representation MUST contain exactly one triple
+ whose subject is the LDPC URI,
+ whose predicate is the <code>ldp:membershipResource</code>,
+ and whose object is the LDPC's <var>membership-constant-URI</var>.
+ Commonly the LDPC's URI is the <var>membership-constant-URI</var>, but LDP does not require this.
+</h2>
+</section><!-- Was 5.2.4 / #ldpc-5_2_4 -->
+
+<section id="ldpdc-containtriples"><h2 class="normal">Each <a title="Linked Data Platform Direct Container">LDP Direct Container</a>
+ representation MUST contain exactly one triple
+ whose subject is the LDPC URI,
+ and whose predicate is either <code>ldp:hasMemberRelation</code> or <code>ldp:isMemberOfRelation</code>.
+ The object of the triple is constrained by other sections, such as
+ <a href="#ldpdc-containtriple-relation" class="sectionRef">ldp:hasMemberRelation</a> or
+ <a href="#ldpdc-containtriple-byrelation" class="sectionRef">ldp:isMemberOfRelation</a>, based on the
+ <a title="Membership triples">membership triple</a>
+ pattern used by the container.
+</h2><!-- Was 5.2.5 / #ldpc-5_2_5 -->
+
+<section id="ldpdc-containtriple-relation"><h2 class="normal"><a title="Linked Data Platform Direct Container">LDP Direct Containers</a>
+ whose <a title="Membership triples">membership triple</a>
+ pattern is <var>( membership-constant-URI , membership-predicate , member-derived-URI )</var> MUST
+ contain exactly one triple
+ whose subject is the LDPC URI,
+ whose predicate is <code>ldp:hasMemberRelation</code>,
+ and whose object is the URI of <var>membership-predicate</var>.
+</h2>
+</section><!-- Was 5.2.5.1 / #ldpc-5_2_5_1 -->
+
+<section id="ldpdc-containtriple-byrelation"><h2 class="normal"><a title="Linked Data Platform Direct Container">LDP Direct Containers</a>
+ whose <a title="Membership triples">membership triple</a>
+ pattern is <var>( member-derived-URI , membership-predicate , membership-constant-URI )</var> MUST
+ contain exactly one triple
+ whose subject is the LDPC URI,
+ whose predicate is either <code>ldp:isMemberOfRelation</code>,
+ and whose object is the URI of <var>membership-predicate</var>.
+</h2></section><!-- Was 5.2.5.2 / #ldpc-5_2_5_2 -->
+</section>
+
+<section id="ldpdc-indirectmbr-basic"><h2 class="normal">
+ <a title="Linked Data Platform Direct Container">LDP Direct Containers</a>
+ MUST behave as if they
+ have a <var>( LDPC URI, <code>ldp:insertedContentRelation</code> , <code>ldp:MemberSubject</code> )</var>
+ triple, but LDP imposes no requirement to materialize such a triple in the LDP-DC representation.
+ The value <code>ldp:MemberSubject</code> means that the
+ <var>member-derived-URI</var> is the URI assigned by the server to a
+ document it creates; for example, if the client POSTs content to a container
+ that causes the container to create a new LDPR, <code>ldp:MemberSubject</code> says
+ that the <var>member-derived-URI</var> is the URI assigned to the newly created LDPR.
+</h2></section>
+
+</section> <!-- ldpdc-general -->
+
+<section id="ldpdc-HTTP_POST">
+<h2>HTTP POST</h2>
+ <section id="ldpdc-post-createdmbr-member"><h2 class="normal">
+ When a successful HTTP <code>POST</code> request to a LDPC results in the creation of an LDPR,
+ the LDPC MUST update its membership triples to reflect that addition, and the resulting
+ membership triple MUST be consistent with any LDP-defined predicates it exposes.
+ A <a title="Linked Data Platform Direct Container">LDP Direct Container</a>'s membership triples MAY also be modified via
+ through other means.
+ </h2></section><!-- Was 5.4.2 / #ldpc-5_4_2 -->
+</section> <!-- ldpdc-HTTP_POST -->
+
+<section id="ldpdc-HTTP_DELETE">
+<h2>HTTP DELETE</h2>
+
+ <section id="ldpdc-del-contremovesmbrtriple"><h2 class="normal">
+ When a LDPR identified by the object of a <a title="membership triples">membership triple</a> which was
+ originally created by the LDP-DC is deleted, the LDPC server MUST also remove
+ the corresponding membership triple..
+ </h2>
+ </section><!-- Was 5.6.1 / #ldpc-5_6_1 -->
+
+</section> <!-- ldpdc-HTTP_DELETE -->
+
+</section> <!-- ldpdc Direct -->
+
+<section id="ldpic">
+<h2>Indirect</h2>
+
+<p>The following section contains normative clauses for <a title="">Linked Data Platform Indirect Container</a>.</p>
+
+<section id="ldpic-general">
+<h2>General</h2>
+
+<section id="ldpic-are-ldpcs"><h2 class="normal">Each <a title="Linked Data Platform Indirect Container">LDP Indirect Container</a> MUST also be
+ a conforming <a title="Linked Data Platform Direct Container">LDP Direct Container</a> in <a href="#ldpdc" class="sectionRef"></a> along the following
+ restrictions. <a title="">LDP client</a>s MAY infer the following triple:
+ whose subject is <code>ldp:IndirectContainer</code>,
+ whose predicate is <code>rdfs:subClassOf</code>,
+ and whose object is <code>ldp:Container</code>,
+ but there is no requirement to materialize this triple in the LDP-IC representation.
+</h2></section>
+
+<section id="ldpic-indirectmbr"><h2 class="normal">
+ <a title="Linked Data Platform Indirect Container">LDP Indirect Containers</a>
+ MUST contain exactly one triple whose
+ subject is the LDPC URI,
+ whose predicate is <code>ldp:insertedContentRelation</code>, and
+ whose object <var>ICR</var> describes how the <var>member-derived-URI</var> in
+ the container's <a title="Membership triples">membership triples</a> is chosen.
+ The <var>member-derived-URI</var> is taken from some triple
+ <var>( S, P, O )</var> in the document supplied by the client as input to the create request;
+ if <var>ICR</var>'s value is <var>P</var>, then the <var>member-derived-URI</var> is
+ <var>O</var>. LDP does not define the behavior when more than one triple containing
+ the predicate <var>P</var> is present in the client's input.
+ For example, if the client POSTs RDF content to a container
+ that causes the container to create a new LDP-RS, and that content contains the triple
+ <var>( <> , foaf:primaryTopic , bob#me )</var>
+ <code>foaf:primaryTopic</code> says
+ that the <var>member-derived-URI</var> is <var>bob#me</var>.
+ </h2>
+</section><!-- Was 5.2.10 / #ldpc-5_2_10 -->
+</section> <!-- ldpic General -->
+
+<section id="ldpic-HTTP_POST">
+<h2>HTTP POST</h2>
+ <section id="ldpic-post-indirectmbrrel"><h2 class="normal">LDPCs
+ whose <code>ldp:insertedContentRelation</code> triple has an object
+ <strong>other than</strong> <code>ldp:MemberSubject</code>
+ and that create new resources
+ MUST add a triple to the container
+ whose subject is the container's URI,
+ whose predicate is <code>ldp:contains</code>, and
+ whose object is the newly created resource's URI (which will be different from
+ the <var><a href="#ldpic-indirectmbr">member-derived URI</a></var> in this case).
+ This <code>ldp:contains</code> triple can be the only link from the container to the newly created
+ resource in certain cases.
+ </h2></section><!-- Was 5.4.15 / #ldpc-5_4_15 -->
+</section> <!-- ldpic HTTP_POST -->
+
+</section> <!-- ldpic Indirect -->
</section> <!-- h1 LDPC -->
@@ -2078,6 +2164,7 @@
<!-- <blockquote><em><a href="http://www.w3.org/TR/2013/WD-ldp-20130930/">Candidate Recommendation Draft</a></em></blockquote> wah -->
<!-- <blockquote><em><a href="http://www.w3.org/TR/2013/WD-ldp-20130730/">Last Call Draft</a></em></blockquote> -->
<ul>
+ <li>2014-02-28 - Split out different kinds of LDPCs into their own subsection (SS)</li>
<li>2014-02-24 - Corrected rel=meta to be rel=describedby (SS) </li>
<li>2014-02-24 - Adjusted term membership triples and membership predicate (SS) </li>
<li>2014-02-24 - Removed 6.3.1 LDPC GET requirement and put in general clause (SS) </li>