ACTION-120 (complete) Updated LDPC general, GET and POST sections
authorsspeiche
Tue, 04 Feb 2014 23:06:39 -0500
changeset 454 4a28a15ee8fd
parent 453 a70c321daf12
child 455 043ab2b9229b
ACTION-120 (complete) Updated LDPC general, GET and POST sections
ldp.html
--- 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>( &lt;&gt; , foaf:primaryTopic , mypet#Zaza )</var>
+		<var>( &lt;&gt; , 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>