merge
authorSteve Speicher <sspeiche@gmail.com>
Mon, 08 Sep 2014 15:25:47 -0400
changeset 807 04e0b4577e41
parent 806 ff1138b2c53e (current diff)
parent 804 ce3092bffff5 (diff)
child 809 a60f8b94088e
child 810 b2179c3120c4
merge
--- a/ldp.html	Mon Sep 08 15:22:51 2014 -0400
+++ b/ldp.html	Mon Sep 08 15:25:47 2014 -0400
@@ -253,6 +253,10 @@
 	</li>
    <li>The requirement that LDP clients be <a href="#atrisk-paging">paging-aware</a>.
 	</li>
+   <li>JSON-LD as a required <a href="#atrisk-ldpr-jsonld">response representation</a> and <a href="#atrisk-ldpc-jsonld">new member representation</a>.
+	</li>
+   <li>Support for <a href="#atrisk-indirect-containers">indirect containers</a>.
+	</li>
    </ol>
  </section>
  
@@ -589,8 +593,11 @@
 	
 	<section id="ldpr-gen-pubclireqs"><h2 class="normal"><a title="LDP server">LDP servers</a> MUST 
 		publish any constraints on <a title="LDP client">LDP clients’</a> ability to 
-		create or update LDPRs, by adding a Link header with <code>rel='describedby'</code> 
-		[[!RFC5988]] to all responses to requests which fail due to violation of 
+		create or update LDPRs, by adding a Link header with
+		an appropriate context URI,
+		a link relation of <code>http://www.w3.org/ns/ldp#constrainedBy</code>,
+		and a target URI identifying a set of constraints
+		[[!RFC5988]], to all responses to requests that fail due to violation of 
 		those constraints.  For example, a server that refuses resource creation 
 		requests via HTTP PUT, POST, or PATCH would return this <code>Link</code> header on its 
 		4xx responses to such requests.
@@ -598,6 +605,9 @@
 		defines nor constrains the representation of the link's target resource.  Natural language 
 		constraint documents are therefore permitted, 
 		although machine-readable ones facilitate better client interactions.
+		The appropriate context URI can vary based on the request's semantics and method;
+		unless the response is otherwise
+		constrained, the default (the effective request URI) SHOULD be used.
 	</h2></section><!-- Was 4.2.13 / #ldpr-4_2_13 -->
 
 </section>
@@ -657,7 +667,7 @@
 	</h2></section><!-- Was 4.5.1 / #ldpr-4_5_1 -->
 		
 	<section id="ldpr-put-simpleupdate"><h2 class="normal"><a title="LDP server">LDP servers</a> SHOULD allow clients to update resources without
-		requiring detailed knowledge of server-specific constraints.  
+		requiring detailed knowledge of <a href="#ldpr-gen-pubclireqs">server-specific constraints</a>.  
 		This is a consequence of the requirement to enable simple creation and modification of LDPRs.
 	</h2></section><!-- Was 4.5.7 / #ldpr-4_5_7 -->	
 
@@ -791,7 +801,8 @@
 		but there is no requirement to materialize this triple in the LDP-RS representation.
 	</h2></section>
 	
-	<section id="ldprs-gen-atleast1rdftype"><h2 class="normal"><a title="Linked Data Platform RDF Source">LDP-RSs</a> representations SHOULD have at least one <code>rdf:type</code>
+	<section id="ldprs-gen-atleast1rdftype"><h2 class="normal"><a title="Linked Data Platform RDF Source">LDP-RSs</a> representations SHOULD 
+		have at least one <code>rdf:type</code>
 		set explicitly.  This makes the representations much more useful to
 		client applications that don’t support inferencing.
 	</h2></section><!-- Was 4.2.5 / #ldpr-4_2_5 -->
@@ -861,6 +872,7 @@
 	
 	<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>
+	</div>
 	<section id="ldpr-cli-paging"><h2 class="normal">
 		<a title="LDP client">LDP clients</a> SHOULD 
 		be capable of processing successful HTTP <code>GET</code> responses formed by a LDP server
@@ -868,24 +880,35 @@
 		representation [[!LDP-PAGING]].
 	</h2>
 	</section> 
-	</div>
 	
 </section> <!-- ldprs-general -->
 
 <section id="ldprs-HTTP_GET">
 <h2>HTTP GET</h2>
-	<section id="ldprs-get-turtle"><h2 class="normal"><a title="LDP server">LDP servers</a> MUST provide a <code>text/turtle</code>
-		representation of the requested <a title="Linked Data Platform RDF Source">LDP-RS</a> whenever HTTP content negotiation
-		does not force another outcome [[!turtle]].  In other words, if the server receives a <code>GET</code> request whose <code>Request-URI</code>
-		identifies a <a title="">LDP-RS</a>, and either <code>text/turtle</code> has the highest relative quality
-		factor (<code>q=</code> value) in the 
-		Accept request header or that header is absent, then an <a title="">LDP server</a> has to respond with Turtle.
+	<section id="ldprs-get-turtle"><h2 class="normal"><a title="LDP server">LDP servers</a> MUST offer a <code>text/turtle</code>
+		representation of the requested <a title="Linked Data Platform RDF Source">LDP-RS</a> [[!turtle]].  
 	</h2></section><!-- Was 4.3.3 / #ldpr-4_3_3 -->
 
-	<section id="ldprs-get-jsonld"><h2 class="normal"><a title="LDP server">LDP servers</a> SHOULD offer a <code>application/ld+json</code>
+	<div class="atrisk" id="atrisk-ldpr-jsonld"><p class="atrisktext">Feature At Risk</p>
+	<p>The LDP Working Group proposes incorporation of the following clause (changed from Should to Must):</p>
+	</div>
+	<section id="ldprs-get-jsonld"><h2 class="normal"><a title="LDP server">LDP servers</a> MUST 
+		offer a <code>application/ld+json</code>
 		representation of the requested <a title="Linked Data Platform RDF Source">LDP-RS</a> [[!JSON-LD]].
 	</h2></section><!-- new -->
 
+	<section id="ldprs-get-conneg"><h2 class="normal"><a title="LDP server">LDP servers</a> MUST provide a <code>text/turtle</code>
+		representation of the requested <a title="Linked Data Platform RDF Source">LDP-RS</a> whenever HTTP content negotiation
+		does not force another outcome and the <code>Accept</code> request header is present.  
+		In other words, if the server receives a <code>GET</code> request whose <code>Request-URI</code>
+		identifies a <a title="">LDP-RS</a>, and <code>text/turtle</code> has the highest relative quality
+		factor (<code>q=</code> value) in the 
+		Accept request header, then an <a title="">LDP server</a> has to respond with Turtle,
+		even if other media types share the highest relative quality factor.
+		If the <code>Accept</code> request header is absent, 
+		then <a title="LDP server">LDP servers</a> SHOULD respond with <code>text/turtle</code>.
+	</h2></section><!-- Was 4.3.3 / #ldpr-4_3_3 -->
+
 </section> <!-- ldprs-HTTP_GET -->
 
 </section> <!-- ldprs RDF Source-->
@@ -1240,6 +1263,10 @@
 	if the client wishes to list the members and/or contained resources.
 	</p>
 
+	<div class="atrisk" id="atrisk-indir-cont-ex"><p class="atrisktext">Feature At Risk</p>
+	<p>The LDP Working Group proposes the REMOVAL of indirect containers, unless more implementation reports arrive shortly.</p>
+	</div>
+	
 	<p>Continuing in the multiple containers direction, we will now extend our net worth example to add a container for
 	advisors (people) that have managed the assets and liabilities.  We have decided
 	to identify these advisors with URLs that contain a fragment (hash) to represent
@@ -1449,6 +1476,11 @@
 		<code>rdf:Seq</code> or <code>rdf:List</code>.
 	</h2></section><!-- Was 5.2.8 / #ldpc-5_2_8 -->
 	
+	<div class="atrisk" id="atrisk-indir-cont-ref1"><p class="atrisktext">Feature At Risk</p>
+	<p>The LDP Working Group proposes the REMOVAL of indirect containers, unless more implementation reports arrive shortly,
+		which would change the contents of the list below.</p>
+	</div>
+	
 	<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
@@ -1461,6 +1493,7 @@
 		The <a href="#ldpr-gen-linktypehdr">notes on the corresponding LDPR constraint</a> apply
 		equally to LDPCs.
 	</h2>
+	<blockquote>
 	<p>Valid container type URIs for <code>rel='type'</code> defined by this document are:
 	<ul>
 	<li><code>http://www.w3.org/ns/ldp#BasicContainer</code> - for <a href="#ldpbc">LDP Basic Containers</a></li>
@@ -1468,6 +1501,7 @@
 	<li><code>http://www.w3.org/ns/ldp#IndirectContainer</code> - for <a href="#ldpic">LDP Indirect Containers</a></li>
 	</ul>
 	</p>
+	</blockquote>
 	</section><!-- Was 5.2.11 / #ldpc-5_2_11 -->
 	
 	<section id="ldpc-prefer"><h2 class="normal"><a title="LDP server">LDP servers</a>
@@ -1529,6 +1563,7 @@
 		RDF representation in the request entity body MUST honor the client's requested interaction model(s). 
 		If any requested interaction model cannot be honored, the server MUST fail the request.
 	</h2><!-- Was 5.4.4 / #ldpc-5_4_4 -->
+	<blockquote>
 	<ul>
 	<li>If the request header specifies <a href="#ldpr-gen-linktypehdr">a LDPR interaction model</a>, then the server MUST handle subsequent 
 	requests to the newly created resource's URI as if it is a LDPR
@@ -1542,20 +1577,25 @@
 		when creating a resource as servers use to advertise it on responses.
 	</p>
 	<p>Note: A consequence of <a href="#ldpc-post-createrdf">this</a> is that LDPCs can be used to create LDPCs, if the server supports doing so.</p>
+	</blockquote>
 	</section>
 	
-	<section id="ldpc-post-turtle"><h2 class="normal"><a title="LDP server">LDP servers</a> MUST accept a request entity body with a request header
-	    of <code>Content-Type</code> with value of <code>text/turtle</code> [[!turtle]].
+	<section id="ldpc-post-turtle"><h2 class="normal"><a title="LDP server">LDP servers</a> 
+		that allow creation of <a title="Linked Data Platform RDF Source">LDP-RSs</a> via POST MUST 
+		allow clients to create new members by enclosing a request entity body with a 
+	    <code>Content-Type</code> request header whose value is <code>text/turtle</code> [[!turtle]].
 	</h2></section><!-- Was 5.4.5 / #ldpc-5_4_5 -->
 	
 	<section id="ldpc-post-contenttype"><h2 class="normal"><a title="LDP server">LDP servers</a> SHOULD use the <code>Content-Type</code> request header 
-		to determine the representation format when the request has an entity body. 
+		to determine the request representation's format when the request has an entity body. 
 	</h2></section><!-- Was 5.4.6 / #ldpc-5_4_6 -->
 	
-	<section id="ldpc-post-rdfnullrel"><h2 class="normal">In RDF representations, <a title="LDP server">LDP servers</a> MUST interpret the null relative
-		URI for the subject of triples in the LDPR representation in the
+	<section id="ldpc-post-rdfnullrel"><h2 class="normal"><a title="LDP server">LDP servers</a>  
+		creating a <a title="Linked Data Platform RDF Source">LDP-RS</a> via POST MUST 
+		interpret the null relative
+		URI for the subject of triples in the LDP-RS representation in the
 		request entity body as identifying the entity in the request body.
-		Commonly, that entity is the model for the “to be created” LDPR, so
+		Commonly, that entity is the model for the "to be created" LDPR, so
 		triples whose subject is the null relative URI result in
 		triples in the created resource whose subject is the created
 		resource.  
@@ -1586,9 +1626,12 @@
 	<a title="Linked Data Platform Non-RDF Source">LDP-NR</a> (HTTP status code of 
 	201-Created and URI indicated by <code>Location</code> response header), <a title="LDP server">LDP servers</a> MAY create an associated 
 	<a title="Linked Data Platform RDF Source">LDP-RS</a>
-	to contain data about the newly created LDP-NR.  If a LDP server creates this associated <a title="Linked Data Platform RDF Source">LDP-RS</a> it MUST indicate
-	its location on the HTTP response using the HTTP <code>Link</code> response header with link relation <code>describedby</code>
-	and <code>href</code> to be the URI of the associated LDP-RS resource [[!RFC5988]].
+	to contain data about the newly created LDP-NR.  
+	If a LDP server creates this associated <a title="Linked Data Platform RDF Source">LDP-RS</a>, it MUST indicate
+	its location in the response by adding a HTTP <code>Link</code> header with 
+	a context URI identifying the newly created <a title="Linked Data Platform Non-RDF Source">LDP-NR</a> (instead of the effective request URI),
+	a link relation value of <code>describedby</code>,
+	and a target URI identifying the associated LDP-RS resource [[!RFC5988]].
 	</h2></section><!-- Was 5.4.12 / #ldpc-5_4_12 -->
 	
 	<section id="ldpc-post-acceptposthdr"><h2 class="normal"><a title="LDP server">LDP servers</a> that support <code>POST</code> MUST
@@ -1607,9 +1650,15 @@
 		specifications such as LDP.
 	</h2></section><!-- Was 5.4.13 / #ldpc-5_4_13 -->
 	
-	<section id="ldpc-post-jsonld"><h2 class="normal"><a title="LDP server">LDP servers</a> SHOULD accept a request entity body with a request header
-	    of <code>Content-Type</code> with value of <code>application/ld+json</code> [[!JSON-LD]].
+	<div class="atrisk" id="atrisk-ldpc-jsonld"><p class="atrisktext">Feature At Risk</p>
+	<p>The LDP Working Group proposes incorporation of the following clause (changed from Should to Must):</p>
+	</div>
+	<section id="ldpc-post-jsonld"><h2 class="normal"><a title="LDP server">LDP servers</a> 
+		that allow creation of <a title="Linked Data Platform RDF Source">LDP-RSs</a> via POST MUST 
+		allow clients to create new members by enclosing a request entity body with a 
+	    <code>Content-Type</code> request header whose value is <code>application/ld+json</code> [[!JSON-LD]].
 	</h2></section><!-- new -->
+
 	
 </section>
 
@@ -1810,6 +1859,12 @@
 </h2></section><!-- Was 5.2.5.2 / #ldpc-5_2_5_2 -->
 </section>
 
+	<div class="atrisk" id="atrisk-indir-cont-ref2"><p class="atrisktext">Feature At Risk</p>
+	<p>The LDP Working Group proposes the REMOVAL of indirect containers, unless more implementation reports arrive shortly.</p>
+	<p>If it is removed, ldp:insertedContentRelation will be removed as well; its only function currently is to distinguish
+	   creation behavior between direct and indirect containers.</p>
+	</div>
+	
 <section id="ldpdc-indirectmbr-basic"><h2 class="normal">
 	<a title="Linked Data Platform Direct Container">LDP Direct Containers</a>  
 	MUST behave as if they
@@ -1852,6 +1907,10 @@
 <section id="ldpic">
 <h2>Indirect</h2>
 
+	<div class="atrisk" id="atrisk-indirect-containers"><p class="atrisktext">Feature At Risk</p>
+	<p>The LDP Working Group proposes the REMOVAL of indirect containers, unless more implementation reports arrive shortly.</p>
+	</div>
+	
 <p>The following section contains normative clauses for <a title="">Linked Data Platform Indirect Container</a>.</p>
 
 <section id="ldpic-general">
@@ -1883,6 +1942,9 @@
 	<var>( &lt;&gt; , foaf:primaryTopic , bob#me )</var>
 	<code>foaf:primaryTopic</code> says
 	that the <var>member-derived-URI</var> is <var>bob#me</var>.  
+	One consequence of this definition is that indirect container member creation is only 
+	well-defined by LDP when the document supplied by the client as input to the create request
+	has an RDF media type.
 	</h2>
 </section><!-- Was 5.2.10 / #ldpc-5_2_10 -->
 </section> <!-- ldpic General -->
@@ -2496,7 +2558,12 @@
 reviews, content, criticism and input in the creation of this specification:</p>
 
   <p style="margin-left: 3em;">
-  Alexandre Bertails, Andrei Sambra, Andy Seaborne, Antonis Loizou,  Arnaud Le Hors, Ashok Malhotra, Bart van Leeuwen, Cody Burleson, David Wood, Eric Prud'hommeaux, Erik Wilde, Henry Story, John Arwe, Kevin Page, Kingsley Idehen, Mark Baker, Martin P. Nally, Miel Vander Sande, Miguel Esteban Gutiérrez, Nandana Mihindukulasooriya, Olivier Berger, Pierre-Antoine Champin, Raúl García Castro, Reza B'Far, Richard Cyganiak, Roger Menday, Ruben Verborgh, Sandro Hawke, Serena Villata, Sergio Fernandez, Steve Battle, Steve Speicher, Ted Thibodeau, Tim Berners-Lee, Yves Lafon
+  Alexandre Bertails, Andrei Sambra, Andy Seaborne, Antonis Loizou,  Arnaud Le Hors, Ashok Malhotra, 
+  Bart van Leeuwen, Cody Burleson, David Wood, Eric Prud'hommeaux, Erik Wilde, Henry Story, John Arwe, 
+  Kevin Page, Kingsley Idehen, Mark Baker, Martin P. Nally, Miel Vander Sande, Miguel Esteban Gutiérrez, 
+  Nandana Mihindukulasooriya, Olivier Berger, Pierre-Antoine Champin, Raúl García Castro, Reza B'Far, 
+  Richard Cyganiak, Rob Sanderson, Roger Menday, Ruben Verborgh, Sandro Hawke, Serena Villata, Sergio Fernandez, 
+  Steve Battle, Steve Speicher, Ted Thibodeau, Tim Berners-Lee, Yves Lafon
   </p>
 
 </section>
@@ -2509,26 +2576,29 @@
 </p>
 
 <h2>Summary</h2>
-<p>Summary of notable changes from the <a href="http://www.w3.org/TR/2014/WD-ldp-20140311/">previous public working draft</a>.</p>
+<p>Summary of notable changes from the <a href="http://www.w3.org/TR/2014/CR-ldp-20140619/">previous public working draft</a>.</p>
 <ul>
-	<li>Resolved Last Call 2 comments</li>
-	<li>Removed references to RDF named graphs</li>
-	<li>Rename empty-container triples to minimal-container triples</li>
-	<li>Duplication (with intent to supersede) of the <code>describedby</code> relation type IANA registration, incorporating POWDER's relevant errata</li>
-	<li>Clarify definitions of membership and containment triples to avoid impression that they must be (stored as) part of the LDP-RS's state.</li>
-	<li>Servers should offer/accept JSON-LD representations of LDP-RSs</li>
-	<li>Updated all HTTP and Prefer-draft references to newly assigned RFC numbers, with associated BNF hits</li>
+	<li>Indirect containers are AT RISK for removal</li>
+	<li>Turtle is no longer required for an LDP-RS when the Accept header is absent</li>
+	<li>JSON-LD is required for an LDP-RS and LDPC create via POST, AT RISK</li>
+	<li>Changed the link relation used to articulate request constraints that a client has likely violated</li>
 </ul>
 
 <h2>Detailed history</h2>
 <!-- <blockquote><em><a href="http://www.w3.org/TR/2013/WD-ldp-20130930/">Candidate Recommendation Draft</a></em></blockquote> -->
 <ul>
-	<li>2014-07-20 - Added test coverage utility to annotate spec with test cases covering them, to be removed before publishing (SS)</li>
 </ul>
 
-<blockquote><em><a href="http://www.w3.org/TR/2014/CR-ldp-20140619">Candidate Recommendation Draft</a></em></blockquote> -->
+<blockquote><em><a href="http://www.w3.org/TR/2014/WD-ldp-20140916">Last Call Working Draft 3</a></em></blockquote> -->
 <ul>
+	<li>2014-09-08 - Indirect containers (at risk) (JA) </li>
+	<li>2014-09-08 - Should return Turtle if Accept is absent, JSON-LD required (at risk), clarify creates  (JA) </li>
+	<li>2014-09-08 - Changed the constraints link relation to ldp#constrainedBy, per today's mtg resolution  (JA) </li>
+	<li>2014-09-08 - Clarify that Turtle/JSON-LD on LDPC POST are required only when the semantic is "create new member" (JA) </li>
+	<li>2014-09-08 - Constraints 4xx responses remind them to choose context URI consciously (JA) </li>
+	<li>2014-09-08 - LDP-NR creation clarify context URI needed is not the default, per today's mtg resolution (JA) </li>
 	<li>2014-08-04 - Fuss with o:value in examples for Sandro to remain consistent with Paging spec (JA) </li>
+	<li>2014-07-20 - Added test coverage utility to annotate spec with test cases covering them, to be removed before publishing (SS)</li>
 </ul>
 
 <blockquote><em><a href="http://www.w3.org/TR/2014/CR-ldp-20140619">Candidate Recommendation Draft</a></em></blockquote> -->
--- a/ldp.ttl	Mon Sep 08 15:22:51 2014 -0400
+++ b/ldp.ttl	Mon Sep 08 15:25:47 2014 -0400
@@ -171,4 +171,13 @@
 	vs:term_status "unstable";
 	rdfs:isDefinedBy :;
 	rdfs:label "PreferMinimalContainer".
-	
\ No newline at end of file
+
+:constrainedBy
+	a rdf:Property;
+	rdfs:comment "Links a resource with constraints that the server requires requests like creation and update to conform to.";
+	vs:term_status "unstable";
+	rdfs:domain :Resource;
+	rdfs:isDefinedBy :;
+	rdfs:label "constrainedBy";
+	rdfs:range rdfs:Resource.
+