--- a/ldp.html Tue Feb 04 20:50:06 2014 -0500
+++ b/ldp.html Tue Feb 04 23:06:39 2014 -0500
@@ -595,11 +595,15 @@
<section id="ldpr-gen-linktypehdr"><h2 class="normal"><a title="LDP server">LDP servers</a>
exposing LDPRs
MUST advertise their LDP support by exposing a HTTP <code>Link</code> header
- with a target URI of <code>http://www.w3.org/ns/ldp#RDFResource</code>, and
+ with a target URI of <code>http://www.w3.org/ns/ldp#Resource</code>, and
a link relation type of <code>type</code> (that is, <code>rel='type'</code>)
in all responses to requests made
to the LDPR's HTTP <code>Request-URI</code>.
</h2></section><!-- Was 4.2.10 / #ldpr-4_2_10 -->
+
+ <!-- TODO: Is this RDFResource or just Resource? Language gets odd in section #ldpc-post-createrdf , where it says "then the server MUST create
+ an LDPR". If client sent a JPEG and type=#RDFResource, what should the server do? If the more generic #Resource, seems to catch
+ what is intended -->
<blockquote>
<p>
Note:
@@ -1441,6 +1445,23 @@
<section id="ldpc-isldpr"><h2 class="normal">Each Linked Data Platform Container MUST also be
a conforming <a title="">Linked Data Platform RDF Resource</a>.
</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:BasicContainer</code> for <a title="">Linked Data Platform Basic Container</a></li>
+ <li><code>ldp:DirectContainer</code> for <a title="">Linked Data Platform Direct Container</a></li>
+ <li><code>ldp:IndirectContainer</code> for <a title="">Linked Data Platform Indirect Container</a></li>
+ </ul>
+ Informative note: <a href="#ldp-rdfconcepts-extra-triples-types">LDPCs
+ might have additional types</a>, like any RDF resource.
+ </h2></section><!-- Was 5.2.7 / #ldpc-5_2_7 -->
+
+ <!-- TODO: For LDP-BC, are the non-member props still needed or infered? -->
+
+ <section id="ldpc-nordfcontainertypes"><h2 class="normal">LDPC representations SHOULD NOT use RDF container types <code>rdf:Bag</code>,
+ <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="LDP server">LDP servers</a>
SHOULD use the <code>ldp:member</code> predicate as an LDPC's <a title="Membership predicate">membership predicate</a>
@@ -1456,14 +1477,24 @@
any kind of resource identified by a URI, LDPR or otherwise.
</h2></section><!-- Was 5.2.3 / #ldpc-5_2_3 -->
+ <!-- TODO: Leaving this as-is, refining others as-needed. Do we need an explicit clause for "ldp:contains"?
+ I'm in favor of just leaving and adjust ldp:contains where we currently have ldp:created. -->
+
<section id="ldpc-containres"><h2 class="normal">An LDPC representation MUST contain exactly one triple
whose subject is the LDPC URI,
whose predicate is the <code>ldp:containerResource</code>,
and whose object is the LDPC's membership-constant-URI.
- Commonly the LDPC's URI is the membership-constant-URI, but LDP does not require this.
- </h2></section><!-- Was 5.2.4 / #ldpc-5_2_4 -->
+ Commonly the LDPC's URI is the membership-constant-URI, but LDP does not require this except for <a title="Linked Data Platform Basic Container">LDP-BCs</a>.
+ </h2>
+ <section id="ldpc-containres-basic"><h2 class="normal">For <a title="Linked Data Platform Basic Container">LDP-BCs</a>, the triple MUST be
+ where the subject is the LDPC URI,
+ whose predicate is the <code>ldp:containerResource</code>,
+ and whose object is the LDPC URI itself.
+ </h2></section>
+ </section><!-- Was 5.2.4 / #ldpc-5_2_4 -->
- <section id="ldpc-containtriples"><h2 class="normal">An LDPC representation MUST contain exactly one triple
+ <section id="ldpc-containtriples"><h2 class="normal">An <a title="Linked Data Platform Direct Container">LDP Direct Container</a>
+ and <a title="Linked Data Platform Inirect Container">LDP Indirect Container</a> representation MUST contain exactly one triple
whose subject is the LDPC URI,
and whose predicate is either <code>ldp:containsRelation</code> or <code>ldp:containedByRelation</code>.
The object of the triple is constrained by other sections, such as
@@ -1473,7 +1504,9 @@
pattern used by the container.
</h2><!-- Was 5.2.5 / #ldpc-5_2_5 -->
- <section id="ldpc-containtriple-relation"><h2 class="normal">LDPCs whose <a title="Membership triples">membership triple</a>
+ <section id="ldpc-containtriple-relation"><h2 class="normal">LDPCs (<a title="Linked Data Platform Direct Container">Direct</a>
+ and <a title="Linked Data Platform Indirect Container">Indirect</a> Containers 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,
@@ -1481,7 +1514,9 @@
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="ldpc-containtriple-byrelation"><h2 class="normal">LDPCs whose <a title="Membership triples">membership triple</a>
+ <section id="ldpc-containtriple-byrelation"><h2 class="normal">LDPCs (<a title="Linked Data Platform Direct Container">Direct</a>
+ and <a title="Linked Data Platform Indirect Container">Indirect</a> Containers 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,
@@ -1489,24 +1524,16 @@
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-typecontainer"><h2 class="normal">The representation of a LDPC MUST have an <code>rdf:type</code>
- of <code>ldp:Container</code>. Informative note: <a href="#ldp-rdfconcepts-extra-triples-types">LDPCs
- might have additional types</a>, like any RDF resource.
- </h2></section><!-- Was 5.2.7 / #ldpc-5_2_7 -->
-
- <section id="ldpc-nordfcontainertypes"><h2 class="normal">LDPC representations SHOULD NOT use RDF container types <code>rdf:Bag</code>,
- <code>rdf:Seq</code> or <code>rdf:List</code>.
- </h2></section><!-- Was 5.2.8 / #ldpc-5_2_8 -->
- <section id="ldpc-indirectmbr"><h2 class="normal">LDPCs MUST contain one triple whose
+ <section id="ldpc-indirectmbr"><h2 class="normal">LDPCs (<a title="Linked Data Platform Direct Container">Direct</a>
+ and <a title="Linked Data Platform Indirect Container">Indirect</a> Containers only) MUST contain 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.</h2>
<ul>
<li>
- LDP defines the URI <code>ldp:MemberSubject</code> for the common case where
+ For <a title="Linked Data Platform Direct Container">LDP Direct Containers</a>, the URI <code>ldp:MemberSubject</code> the
<var>member-derived-URI</var> is simply the URI assigned by the server to a
document it creates; for example, if the client POSTs RDF content to a container
that causes the container to create a new LDPR, <code>ldp:MemberSubject</code> says
@@ -1515,52 +1542,29 @@
is chosen in this way.
</li>
<li>
- In other cases, the <var>member-derived-URI</var> is taken from some triple
+ For <a title="Linked Data Platform Direct Container">LDP Indirect Containers</a>, 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 , mypet#Zaza )</var>
+ <var>( <> , foaf:primaryTopic , bob#me )</var>
<code>foaf:primaryTopic</code> says
- that the <var>member-derived-URI</var> is <var>mypet#Zaza</var>.
+ that the <var>member-derived-URI</var> is <var>bob#me</var>.
</li>
</ul>
</section><!-- Was 5.2.10 / #ldpc-5_2_10 -->
- <!-- NOTE: Saving this sample to help with future editing/understanding or possible insertion directly.
-
- Let's say this LDPC has a containerResource of </people/roger> and containsRelation of pets:has_pet. If I POST the following to the LDPC:
-
- <> foaf:primaryTopic <#this> .
- <#this>
- a animal:Cat;
- foaf:name "Zaza".
-
- ... a new resource is created and there is a new membership triple of
-
- </people/roger> pets:has_pet </people/roger/zaza>.
-
- but the desired one is:
-
- </people/roger> pets:has_pet </people/roger/zaza#this>.
-
- To do this, you'd have to use ldp:insertedContentRelation such as:
-
- pets:has_pet
- a ldp:Container;
- ldp:containsRelation pets:has_pet;
- ldp:containerResource </people/roger>;
- ldp:insertedContentRelation foaf:primaryTopic .
- -->
<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
- with a target URI of <code>http://www.w3.org/ns/ldp/Container</code>, and
+ with a target URI of <code>http://www.w3.org/ns/ldp#Container</code>, and
a link relation type of <code>type</code> (that is, <code>rel='type'</code>)
in all responses to requests made
to the LDPC's HTTP <code>Request-URI</code>.
+ <a title="LDP server">LDP servers</a> MAY provide additional HTTP <code>Link: rel='type'</code> headers
+ to advertise their support for <a href="#ldpc-typecontainer">specific LDPC types</a>.
The <a href="#ldpr-gen_linktypehdr">notes on the corresponding LDPR constraint</a> apply
equally to LDPCs.
</h2></section><!-- Was 5.2.11 / #ldpc-5_2_11 -->
@@ -1669,20 +1673,24 @@
</h2></section><!-- Was 5.4.1 / #ldpc-5_4_1 -->
<section id="ldpc-post-createdmbr"><h2 class="normal">After a successful HTTP <code>POST</code> request to a LDPC, the new resource MUST
- appear as a member of the LDPC until the new resource is deleted or
+ appear as a member of the contained resource until the new resource is deleted or
removed by other methods. An LDPC MAY also contain resources that were
added through other means - for example through the user interface of
the site that implements the LDPC.
</h2></section><!-- Was 5.4.2 / #ldpc-5_4_2 -->
+ <!-- TODO: "contained resource" is not the right term here, an example of where ldp:containedResource would be better
+ labeled ldp:membershipResource (maybe)-->
+ <!-- TODO: Do we need a rule for creation of ldp:contians here? Steve's answer, no...leave to ldp:created rule. -->
+
<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 Binary Resource">(LDP-BR)</a> for
creation of any kind of resource, for example binary resources. See <a href="#ldpc-post-acceptposthdr">AcceptPost section</a> for
details on how clients can discover whether a LDPC supports this behavior.
</h2></section><!-- Was 5.4.3 / #ldpc-5_4_3 -->
- <section id="ldpc-post-createrdf"><h2 class="normal"><a title="LDP server">LDP servers</a> that successfully create a new resource from a
- RDF representation in the request entity body MUST honor the client's requested interaction model(s).
+ <section id="ldpc-post-createrdf"><h2 class="normal"><a title="LDP server">LDP servers</a> that successfully create a resource from a
+ RDF representation in the request entity body MUST honor the client's requested interaction model(s).
If any model cannot be honored, the server MUST fail the request.
</h2><!-- Was 5.4.4 / #ldpc-5_4_4 -->
<ul>
@@ -2208,6 +2216,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-04 - ACTION-120 (complete) Updated LDPC general, GET and POST sections (SS)</li>
<li>2014-02-04 - ACTION-120 (Part 3) Added ldp:member (SS)</li>
<li>2014-02-04 - ACTION-120 (Part 2) Added concepts of containers (basic, direct and indirect) to LDPC intro (SS)</li>
<li>2014-01-30 - ACTION-120 (Part 1) Added concepts of containers (basic, direct and indirect) (SS)</li>