reflected changes proposed by Sandro in http://lists.w3.org/Archives/Public/public-ldp-wg/2014Aug/0070.html ldpatch
authorAlexandre Bertails <bertails@gmail.com>
Tue, 26 Aug 2014 09:35:51 -0400
branchldpatch
changeset 776 503808034312
parent 746 66030a2d0f9f
child 794 8cda216327b8
reflected changes proposed by Sandro in http://lists.w3.org/Archives/Public/public-ldp-wg/2014Aug/0070.html
ldpatch.html
--- a/ldpatch.html	Wed Aug 20 09:58:39 2014 -0400
+++ b/ldpatch.html	Tue Aug 26 09:35:51 2014 -0400
@@ -93,7 +93,7 @@
           specStatus:           "ED",
           
           // the specification's short name, as in http://www.w3.org/TR/short-name/
-          shortName:            "ld-patch",
+          shortName:            "ldpatch",
 
           // if your specification has a subtitle that goes below the main
           // formal title, define it here
@@ -201,15 +201,26 @@
   <body>
     <section id='abstract'>
       <p>
-Linked Data Patch Format (LD Patch) defines a language for expressing a sequence of operations to apply to Linked Data resources; it is suitable for use with the HTTP PATCH method. The "text/ldpatch" media type is used to identify such Patch documents.
+Linked Data Patch Format (LD Patch) defines a language for expressing a sequence of operations to apply to Linked Data resources; it is suitable for use with the HTTP PATCH method. <!-- The "text/ldpatch" media type is used to identify such Patch documents.-->
       </p>
     </section>
     
     <section id='sotd'>
+
+      <p id="alternative-designs">
+ 	Although the Linked Data Platform (LDP) Working Group is currently favoring LD Patch, it seeks more input in deciding which format to promote for use in <a href="http://www.w3.org/TR/ldp/#h4_ldpr-HTTP_PATCH">LDP PATCH</a> [[!LDP]] operations on <a href="http://www.w3.org/TR/ldp/#ldprs">RDF Sources</a>.  Other viable candidates include:</p>
+      
+      <ul>
+	<li><a href="http://www.w3.org/TR/sparql11-http-rdf-update/#http-patch">SPARQL 1.1 Update</a> &mdash; already standardized, but quite complex for LDP scenarios</li>
+	<li><a href="http://www.w3.org/2012/ldp/wiki/LDP_PATCH_Proposals#EricP.27s_proposal">SPARQL Patch</a> &mdash; restricted to a simple subset of SPARQL 1.1 Update</li>
+	<li><a href="http://www.w3.org/2001/sw/wiki/TurtlePatch">TurtlePatch</a> &mdash; uses an even simpler subset, but requires unusual handling of blank nodes</li>
+	<li><a href="http://afs.github.io/rdf-patch/">RDF Patch</a> &mdash; simple, but also requires unusual handling of blank nodes</li>
+      </ul>
+
       <p>
-        @@You need to have a custom SotD paragraph. Maybe give a succinct description of your spec's
-        status.@@
+	At this point, the advantage leans towards LD Patch in terms of simplicity, ease of implementation, and run-time performance on anticipated data.  We welcome data relevant to this decision.
       </p>
+
     </section>
     
     <section class='informative' id='introduction'>
@@ -218,32 +229,16 @@
 Linked Data "describes a method of publishing structured data so that it can be interlinked and become more useful. It builds upon standard Web technologies such as HTTP, RDF and URIs, but rather than using them to serve web pages for human readers, it extends them to share information in a way that can be read automatically by computers. This enables data from different sources to be connected and queried." (source Wikipedia).
       </p>
       <p>
-This document defines the Linked Data Patch Format (LD Patch), a format for describing changes to apply to Linked Data. It is suitable for use with <a href="http://tools.ietf.org/html/rfc5789">HTTP PATCH</a>, a method to perform partial modifications to Web resources. The "text/ldpatch" media type is used to identify such LD Patch documents.
+This document defines the Linked Data Patch Format (LD Patch), a format for describing changes to apply to Linked Data. It is suitable for use with <a href="http://tools.ietf.org/html/rfc5789">HTTP PATCH</a> [[!rfc5789]], a method to perform partial modifications to Web resources. <!-- The "text/ldpatch" media type is prospectively used to identify such LD Patch documents.-->
       </p>
       <p>
-An instance of the LD Patch language (or LD Patch document) defines a list of operations to be performed against a Linked Data resource, namely the addition or removal of RDF triples in this graph.
+An instance of the LD Patch language (or LD Patch document) defines a list of operations to be performed against a Linked Data resource, namely the addition or removal of RDF [[!rdf11-concepts]] triples in this graph.
       </p>
 
       <p id="relation-sparql-update">
-        The LD Patch format described in this document should be seen as an "assembly language" for updating <a href="http://www.w3.org/TR/rdf11-concepts/#section-rdf-graph">RDF Graphs</a> in a resource-centric fashion. It is the intention to confine its expressive power to an RDF diff with <a href="#pathological-graph">minimal support for blank nodes</a> and <code>rdf:List</code> manipulations. For more powerful operations on RDF Graphs and Quad Stores, the LDP WG recommends the reader to consider <a href="http://www.w3.org/TR/sparql11-update/">SPARQL Update</a>.
-      </p>
-
-      <h2 id="considered-alternatives">Considered alternatives</h2>
-
-      <p>
-	  While exploring solutions for a <a href="http://www.w3.org/TR/ldp/#h4_ldpr-HTTP_PATCH">PATCH format for the Linked Data Platform</a>, the LDP WG also considered the following approaches:
+        The LD Patch format described in this document should be seen as an "assembly language" for updating <a href="http://www.w3.org/TR/rdf11-concepts/#section-rdf-graph">RDF Graphs</a> in a resource-centric fashion. It is the intention to confine its expressive power to an RDF diff with <a href="#pathological-graph">partial support for blank nodes</a> and <code>rdf:List</code> manipulations. For more powerful operations on RDF Graphs and Quad Stores, the LDP WG recommends the reader to consider <a href="http://www.w3.org/TR/sparql11-update/">SPARQL Update</a> [[sparql11-update]].
       </p>
 
-      <ul>
-	  <li><a href="http://afs.github.io/rdf-patch/">RDF Patch</a></li>
-	  <li><a href="http://www.w3.org/TR/sparql11-http-rdf-update/#http-patch">SPARQL 1.1 Update</a></li>
-	  <li><a href="http://www.w3.org/2001/sw/wiki/TurtlePatch">TurtlePatch</a></li>
-	  <li><a href="http://www.w3.org/2012/ldp/wiki/LDP_PATCH_Proposals#EricP.27s_proposal">SPARQL Patch</a></li>
-      </ul>
-
-      <p>
-	  As for LD Patch, those come with their pros and cons: support for blank nodes, <a href="http://www.w3.org/2013/meeting/ldp/2014-04-17#line0243">skolemization</a>, runtime complexity, <a href="#pathological-graph">pathological graphs</a>, <code>rdf:List</code> manipulations... Even though the group decided to <a href="http://www.w3.org/2013/meeting/ldp/2014-04-17#resolution_2">go ahead</a> with the format discussed in this document, feedback from users and implementers is more that welcome.
-      </p>
 
 
       <h2 id="intro-example">Example</h2>
@@ -261,7 +256,7 @@
   profile:first_name "Tim" ;
   profile:last_name "Berners-Lee" ;
   schema:workLocation [ schema:name "W3C/MIT" ] ;
-  schema:attendee _:b1, _:b2 ;
+  schema:performerIn _:b1, _:b2 ;
   ex:preferredLanguages ( "en" "fr" ).
 
 _:b1 schema:name "F2F5 - Linked Data Platform" ;
@@ -292,7 +287,7 @@
 
 UpdateList &lt;#&gt; ex:preferredLanguages 1..2 ( "fr-CH" ) .
 
-Bind ?event &lt;#&gt; /schema:attendee[/schema:url = &lt;https://www.w3.org/2012/ldp/wiki/F2F5&gt;]  .
+Bind ?event &lt;#&gt; /schema:performerIn[/schema:url = &lt;https://www.w3.org/2012/ldp/wiki/F2F5&gt;]  .
 Add ?event rdf:type schema:Event .
 
 Bind ?ted &lt;http://conferences.ted.com/TED2009/&gt; /^schema:url! .
@@ -304,7 +299,7 @@
 Add _:geo schema:longitude "-118.2054" .
       </pre>
       <p>
-This example introduces most features of the LD Patch format: @prefix and prefixed names, the <tref>Add</tref>, <tref>Delete</tref> and <tref>UpdateList</tref> operations, the <tref>Bind</tref>-ing mechanism and blank node creation.
+        This example introduces most features of the LD Patch format: <code>@prefix</code> and prefixed names, the <tref>Add</tref>, <tref>Delete</tref> and <tref>UpdateList</tref> operations, the <tref>Bind</tref>-ing mechanism and blank node creation. The "text/ldpatch" media type is <a href="#media-registration">prospectively</a> used to identify such LD Patch documents.
       </p>
       <p>
 The following is the resulting (patched) document.
@@ -319,7 +314,7 @@
   profile:first_name "Timothy" ;
   profile:last_name "Berners-Lee" ;
   schema:workLocation [ schema:name "W3C/MIT" ] ;
-  schema:attendee _:b1, _:b2 ;
+  schema:performerIn _:b1, _:b2 ;
   ex:preferredLanguages ( "en" "fr-CH" ).
 
 _:b1 a schema:Event ;
@@ -361,7 +356,7 @@
       <section id="node-matching-semantics">
         <h2><tdef>Node matching semantics</tdef></h2>
         <p>
-LD Patch borrows much of its syntax to <a href="http://www.w3.org/TR/turtle/">Turtle</a> and <a href="http://www.w3.org/TR/sparql11-query/">SPARQL</a> for describing nodes. IRIs (either abbreviated or not) and literals represent the corresponding node in the graph being patched. Blank nodes, on the other hand, pose a problem, as they have no global identifier. Indeed, blank node identifiers have their scope limited to the document in which they appear. As a consequence, whenever a blank node identifiers appears in an LD Patch document, it is understood to denote a <em>fresh</em> blank node, that needs to be created in the patched RDF graph. They cannot interfere with existing blank nodes in the graph.
+LD Patch borrows much of its syntax to <a href="http://www.w3.org/TR/turtle/">Turtle</a> [[turtle]] and <a href="http://www.w3.org/TR/sparql11-query/">SPARQL</a> [[sparql11-query]] for describing nodes. IRIs (either abbreviated or not) and literals represent the corresponding node in the graph being patched. Blank nodes, on the other hand, pose a problem, as they have no global identifier. Indeed, blank node identifiers have their scope limited to the document in which they appear. As a consequence, whenever a blank node identifiers appears in an LD Patch document, it is understood to denote a <em>fresh</em> blank node, that needs to be created in the patched RDF graph. They cannot interfere with existing blank nodes in the graph.
         </p>
         <p>
           In order to be able to address blank nodes already present in the graph, LD Patch has two mechanisms: <tref>Bind</tref>ing a variable to a blank node reachable with a <tref>path expression</tref>, and <tref>UpdateList</tref> to deal with those blank nodes that constitute RDF collections. There are cases where those mechanisms will not be able to unambiuously adress a given blank node, but those cases are deemed <a href="#pathological-graph">pathological</a>, and out of the scope of this specification.
@@ -408,7 +403,7 @@
       </p>
 
       <p>
-        Therefore, ambiguous blank nodes are considered a pathological case in the context of LDP, and so the fact that they cannot be coped with in LD Patch is deemed acceptable. Furthermore, their presence in a graph does not prevent the other nodes of that graph to be handled by LD Patch.
+        Therefore, ambiguous blank nodes are considered a pathological case in the context of Linked Data, and so the fact that they cannot be coped with in LD Patch is deemed acceptable. Furthermore, their presence in a graph does not prevent the other nodes of that graph to be handled by LD Patch.
       </p>
 
       </section>
@@ -437,7 +432,7 @@
         <p>
 The path below (taken from our running example) will look for all the events attended by the starting node, and keep only those  having <code>&lt;http://conferences.ted.com/TED2009/&gt;</code> as their URL.
         <pre class='example'>
-/schema:attendee[/schema:url = &lt;http://conferences.ted.com/TED2009/&gt;]
+/schema:performerIn[/schema:url = &lt;http://conferences.ted.com/TED2009/&gt;]
         </pre>
         </p>
 
@@ -451,9 +446,9 @@
       <section id="bind-statement">
         <h2><tdef>Bind</tdef></h2>
         <p>
-The Bind operation is used to create a new variable by binding or assigning an RDF Term to the variable. The bound variable has a global scope. Use of a given variable name anywhere in an LD Patch document identifies the same variable, although variables can be overriden in subsequent Bound statements. Following the example above, the Bind operation creates a new variable called <code>event</code>, starting from the RDF Term <code>&lt;#&gt;</code> and following the path expression <code>/schema:attendee[/schema:url = &lt;http://conferences.ted.com/TED2009/&gt;]</code> in order to identify the RDF Term to which this variable will be bound to -- i.e. <code>_:b2</code>.
+The Bind operation is used to create a new variable by binding or assigning an RDF Term to the variable. The bound variable has a global scope. Use of a given variable name anywhere in an LD Patch document identifies the same variable, although variables can be overriden in subsequent Bound statements. Following the example above, the Bind operation creates a new variable called <code>event</code>, starting from the RDF Term <code>&lt;#&gt;</code> and following the path expression <code>/schema:performerIn[/schema:url = &lt;http://conferences.ted.com/TED2009/&gt;]</code> in order to identify the RDF Term to which this variable will be bound to -- i.e. <code>_:b2</code>.
         <pre class='example'>
-Bind ?event &lt;#&gt; /schema:attendee[/schema:url = &lt;http://conferences.ted.com/TED2009/&gt;] .
+Bind ?event &lt;#&gt; /schema:performerIn[/schema:url = &lt;http://conferences.ted.com/TED2009/&gt;] .
         </pre>
         </p>
         <p>
@@ -678,7 +673,21 @@
 
         </pre-->
     </section>
-    
+
+    <section id="acknowledgements" class="appendix informative">
+      <h2>Acknowledgements</h2>
+     
+      <p>TODO</p>
+
+    </section>
+
+
+    <section class="appendix" id="media-registration">
+      <h2>Internet Media Type, File Extension and Macintosh File Type</h2>
+
+      <p>TODO: here comes the section about "text/ldpatch" registration.</p>
+
+    </section>
 
   </body>
 </html>