Static page for TR. Passes pubrules and Validator suite. ldpatch
authorAndrei Sambra <andrei.sambra@gmail.com>
Thu, 11 Sep 2014 16:39:11 -0400
branchldpatch
changeset 822 357f87969c82
parent 794 8cda216327b8
child 823 a71b734bdce3
Static page for TR. Passes pubrules and Validator suite.
ldpatch-20141018.html
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ldpatch-20141018.html	Thu Sep 11 16:39:11 2014 -0400
@@ -0,0 +1,723 @@
+<!DOCTYPE html>
+<!-- saved from url=(0029)http://localhost/ldpatch.html -->
+<html lang="en" dir="ltr" typeof="bibo:Document " about="" property="dcterms:language" content="en" prefix="bibo: http://purl.org/ontology/bibo/ w3p: http://www.w3.org/2001/02pd/rec54#" style=""><head>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    <title>Linked Data Patch Format</title>
+    <meta charset="utf-8">
+    <link rel="stylesheet" type="text/css" href="http://www.w3.org/StyleSheets/TR/W3C-WD"/>
+    <style type="text/css">
+div.example-title {
+    min-width: 7.5em;
+    color: #b9ab2d;
+}
+div.example-title span {
+    text-transform: uppercase;   
+}
+aside.example, div.example, div.illegal-example {
+    padding: 0.5em;
+    margin: 1em 0;
+    position: relative;
+    clear: both;
+}
+div.illegal-example { color: red }
+div.illegal-example p { color: black }
+aside.example, div.example {
+    padding: .5em;
+    border-left-width: .5em;
+    border-left-style: solid;
+    border-color: #e0cb52;
+    background: #fcfaee;    
+}
+
+aside.example div.example {
+    border-left-width: .1em;
+    border-color: #999;
+    background: #fff;
+}
+aside.example div.example div.example-title {
+    color: #999;
+}
+.atrisk {
+  padding:    1em;
+  margin: 1em 0em 0em;
+  border: 1px solid #f00;
+  background: #ffc;
+}
+.atrisktext {
+  /* content:    "Feature At Risk"; */
+  display:    block;
+  width:  150px;
+  margin: -1.5em 0 0.5em 0;
+  font-weight:    bold;
+  border: 1px solid #f00;
+  background: #fff;
+  padding:    3px 1em;
+}
+
+div.rule {padding-top: 1em;}
+div.ldp-issue {
+  border-color: #E05252;
+  background: #FBE9E9;
+  padding: 0.5em;
+  margin: 1em 0;
+  position: relative;
+  clear: both;
+  border-left-width: .5em;
+  border-left-style: solid;
+}
+div.ldp-issue-title {
+  color: #E05252;
+  padding-right: 1em;
+  min-width: 7.5em;
+}
+
+em.rfc2119 { 
+    text-transform:     lowercase;
+    font-variant:       small-caps;
+    font-style:         normal;
+    color:              #900;
+}
+
+h1 acronym, h2 acronym, h3 acronym, h4 acronym, h5 acronym, h6 acronym, a acronym,
+h1 abbr, h2 abbr, h3 abbr, h4 abbr, h5 abbr, h6 abbr, a abbr {
+    border: none;
+}
+
+dfn {
+    font-weight:    bold;
+}
+
+a.internalDFN {
+    color:  inherit;
+    border-bottom:  1px solid #99c;
+    text-decoration:    none;
+}
+
+a.externalDFN {
+    color:  inherit;
+    border-bottom:  1px dotted #ccc;
+    text-decoration:    none;
+}
+
+a.bibref {
+    text-decoration:    none;
+}
+
+cite .bibref {
+    font-style: normal;
+}
+
+code {
+    color:  #C83500;
+}
+
+/* --- TOC --- */
+.toc a, .tof a {
+    text-decoration:    none;
+}
+
+a .secno, a .figno {
+    color:  #000;
+}
+
+ul.tof, ol.tof {
+    list-style: none outside none;
+}
+
+.caption {
+    margin-top: 0.5em;
+    font-style:   italic;
+}
+
+/* --- TABLE --- */
+table.simple {
+    border-spacing: 0;
+    border-collapse:    collapse;
+    border-bottom:  3px solid #005a9c;
+}
+
+.simple th {
+    background: #005a9c;
+    color:  #fff;
+    padding:    3px 5px;
+    text-align: left;
+}
+
+.simple th[scope="row"] {
+    background: inherit;
+    color:  inherit;
+    border-top: 1px solid #ddd;
+}
+
+.simple td {
+    padding:    3px 10px;
+    border-top: 1px solid #ddd;
+}
+
+.simple tr:nth-child(even) {
+    background: #f0f6ff;
+}
+
+/* --- DL --- */
+.section dd > p:first-child {
+    margin-top: 0;
+}
+
+.section dd > p:last-child {
+    margin-bottom: 0;
+}
+
+.section dd {
+    margin-bottom:  1em;
+}
+
+.section dl.attrs dd, .section dl.eldef dd {
+    margin-bottom:  0;
+}
+
+@media print {
+    .removeOnSave {
+        display: none;
+    }
+}
+</style><!--[if lt IE 9]><script src='https://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]--></head>
+  <body class="h-entry" data-pinterest-extension-installed="cr1.3.4" data-feedly-mini="yes" role="document" id="respecDocument"><div class="head" role="contentinfo" id="respecHeader">
+  <p>
+    
+      <a href="http://www.w3.org/"><img height="48" width="72" alt="W3C" src="http://www.w3.org/Icons/w3c_home"/></a>
+    
+  </p>
+  <h1 class="title p-name" id="title" property="dcterms:title">Linked Data Patch Format</h1>
+  
+  <h2 property="dcterms:issued" datatype="xsd:dateTime" content="2014-09-11T23:43:05.000Z" id="w3c-editor-s-draft-11-september-2014"><abbr title="World Wide Web Consortium">W3C</abbr> Working Draft <time class="dt-published" datetime="2014-10-18">18 October 2014</time></h2>
+  <dl>
+    
+      <dt>This version:</dt>
+      <dd><a href="http://www.w3.org/TR/2014/WD-ldpatch-20141018/">http://www.w3.org/TR/2014/WD-ldpatch-20141018/</a></dd>
+      <dt>Latest version:</dt>
+      <dd><a href="http://www.w3.org/TR/ldpatch/">http://www.w3.org/TR/ldpatch/</a></dd>
+      <dt>Previous version:</dt>
+      <dd><a href="https://dvcs.w3.org/hg/ldpwg/raw-file/ldpatch/ldpatch.html">https://dvcs.w3.org/hg/ldpwg/raw-file/ldpatch/ldpatch.html</a></dd>
+
+    <dt>Editors:</dt>
+    <dd class="p-author h-card vcard" rel="bibo:editor" inlist=""><span typeof="foaf:Person"><a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Alexandre Bertails" href="http://bertails.org/">Alexandre Bertails</a>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://www.pellucid.com/">Pellucid Analytics</a>, <span class="ed_mailto"><a class="u-email email" rel="foaf:mbox" href="mailto:alexandre@bertails.org">alexandre@bertails.org</a></span></span>
+</dd>
+<dd class="p-author h-card vcard" rel="bibo:editor" inlist=""><span typeof="foaf:Person"><a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Pierre-Antoine Champin" href="http://liris.cnrs.fr/~pchampin/en/">Pierre-Antoine Champin</a>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://www.universite-lyon.fr/">Université de Lyon</a>, <span class="ed_mailto"><a class="u-email email" rel="foaf:mbox" href="mailto:pchampin@liris.cnrs.fr">pchampin@liris.cnrs.fr</a></span></span>
+</dd>
+<dd class="p-author h-card vcard" rel="bibo:editor" inlist=""><span typeof="foaf:Person"><a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Andrei Sambra" href="https://deiu.rww.io/profile/card#me">Andrei Sambra</a>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://web.mit.edu/"><abbr title="Massachusetts Institute of Technology">MIT</abbr></a>, <span class="ed_mailto"><a class="u-email email" rel="foaf:mbox" href="mailto:asambra@mit.edu">asambra@mit.edu</a></span></span>
+</dd>
+
+  </dl>
+      <p class="copyright">
+        <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> ©
+        2014
+        
+        <a href="http://www.w3.org/"><abbr title="World Wide Web Consortium">W3C</abbr></a><sup>®</sup>
+        (<a href="http://www.csail.mit.edu/"><abbr title="Massachusetts Institute of Technology">MIT</abbr></a>,
+        <a href="http://www.ercim.eu/"><abbr title="European Research Consortium for Informatics and Mathematics">ERCIM</abbr></a>,
+        <a href="http://www.keio.ac.jp/">Keio</a>, <a href="http://ev.buaa.edu.cn/">Beihang</a>), 
+        
+        All Rights Reserved.
+        
+        <abbr title="World Wide Web Consortium">W3C</abbr> <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
+        <a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a> and
+        
+          <a href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a>
+        
+        rules apply.
+      </p>
+  
+  <hr>
+</div>
+    <section id="abstract" class="introductory" property="dcterms:abstract" datatype="" typeof="bibo:Chapter" resource="#abstract" rel="bibo:Chapter"><h2 aria-level="1" role="heading" id="h2_abstract">Abstract</h2>
+      <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.-->
+      </p>
+    </section><section id="sotd" class="introductory" typeof="bibo:Chapter" resource="#sotd" rel="bibo:Chapter"><h2 aria-level="1" role="heading" id="h2_sotd">Status of This Document</h2>
+
+        <p>
+          <em>This section describes the status of this document at the time of its publication.
+          Other documents may supersede this document. A list of current <abbr title="World Wide Web Consortium">W3C</abbr> publications and the
+          latest revision of this technical report can be found in the <a href="http://www.w3.org/TR/"><abbr title="World Wide Web Consortium">W3C</abbr> technical reports index</a> at
+          http://www.w3.org/TR/.</em>
+        </p>
+        
+
+      <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> [<cite><a class="bibref" href="http://localhost/ldpatch.html#bib-LDP">LDP</a></cite>] 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> — already standardized, but quite complex for LDP scenarios</li>
+	<li><a href="http://www.w3.org/2001/sw/wiki/SparqlPatch">SparqlPatch</a> — restricted to a simple subset of SPARQL 1.1 Update</li>
+	<li><a href="http://www.w3.org/2001/sw/wiki/TurtlePatch">TurtlePatch</a> — 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> — simple, but also requires unusual handling of blank nodes</li>
+      </ul>
+
+      <p>
+	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>
+
+    
+        <p>
+          This document was published by the <a href="http://www.w3.org/2012/ldp">Linked Data Platform Working Group</a> as an Editor's Draft.
+          
+          
+            If you wish to make comments regarding this document, please send them to 
+            <a href="mailto:public-ldp-comments@w3.org">public-ldp-comments@w3.org</a> 
+            (<a href="mailto:public-ldp-comments-request@w3.org?subject=subscribe">subscribe</a>,
+            <a href="http://lists.w3.org/Archives/Public/public-ldp-comments/">archives</a>).
+
+            All comments are welcome.
+          
+        </p>
+        
+          <p>
+            Publication as a Working Draft does not imply endorsement by the <abbr title="World Wide Web Consortium">W3C</abbr>
+            Membership. This is a draft document and may be updated, replaced or obsoleted by other
+            documents at any time. It is inappropriate to cite this document as other than work in
+            progress.
+          </p>
+
+        
+        <p> This document was produced by a group operating under the <a id="sotd_patent" about="" rel="w3p:patentRules" href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February 2004 W3C Patent Policy</a>. W3C maintains a <a href="http://www.w3.org/2004/01/pp-impl/55082/status" rel="disclosure">public list of any patent disclosures</a> made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential Claim(s)</a> must disclose the information in accordance with <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section 6 of the W3C Patent Policy</a>. </p>
+     
+        
+          <p>This document is governed by the <a id="w3c_process_revision" href="http://www.w3.org/2005/10/Process-20051014/">14 October 2005 W3C Process Document</a>. </p>
+        
+
+</section><section id="toc"><h2 class="introductory" aria-level="1" role="heading" id="h2_toc">Table of Contents</h2><ul class="toc" role="directory" id="respecContents"><li class="tocline"><a href="http://localhost/ldpatch.html#introduction" class="tocxref"><span class="secno">1. </span>Introduction</a></li><li class="tocline"><a href="http://localhost/ldpatch.html#language-features" class="tocxref"><span class="secno">2. </span>LD Patch format</a><ul class="toc"><li class="tocline"><a href="http://localhost/ldpatch.html#prefixes" class="tocxref"><span class="secno">2.1 </span><span title="Prefixes">Prefixes</span></a></li><li class="tocline"><a href="http://localhost/ldpatch.html#node-matching-semantics" class="tocxref"><span class="secno">2.2 </span><span title="Node_matching_semantics">Node matching semantics</span></a></li><li class="tocline"><a href="http://localhost/ldpatch.html#pathological-graph" class="tocxref"><span class="secno">2.3 </span><span title="Pathological_graph">Pathological graph</span></a></li><li class="tocline"><a href="http://localhost/ldpatch.html#path-expression" class="tocxref"><span class="secno">2.4 </span><span title="Path_expression">Path expression</span></a></li><li class="tocline"><a href="http://localhost/ldpatch.html#bind-statement" class="tocxref"><span class="secno">2.5 </span><span title="Bind">Bind</span></a></li><li class="tocline"><a href="http://localhost/ldpatch.html#add-statement" class="tocxref"><span class="secno">2.6 </span><span title="Add">Add</span></a></li><li class="tocline"><a href="http://localhost/ldpatch.html#delete-statement" class="tocxref"><span class="secno">2.7 </span><span title="Delete">Delete</span></a></li><li class="tocline"><a href="http://localhost/ldpatch.html#update-list-statement" class="tocxref"><span class="secno">2.8 </span><span title="UpdateList">UpdateList</span></a></li></ul></li><li class="tocline"><a href="http://localhost/ldpatch.html#concrete-syntax" class="tocxref"><span class="secno">3. </span>Concrete Syntax</a></li><li class="tocline"><a href="http://localhost/ldpatch.html#abstract-syntax" class="tocxref"><span class="secno">4. </span>Abstract Syntax</a></li><li class="tocline"><a href="http://localhost/ldpatch.html#operational-semantics" class="tocxref"><span class="secno">5. </span>Operational Semantics</a></li><li class="tocline"><a href="http://localhost/ldpatch.html#acknowledgements" class="tocxref"><span class="secno">A. </span>Acknowledgements</a></li><li class="tocline"><a href="http://localhost/ldpatch.html#media-registration" class="tocxref"><span class="secno">B. </span>Internet Media Type, File Extension and Macintosh File Type</a></li><li class="tocline"><a href="http://localhost/ldpatch.html#references" class="tocxref"><span class="secno">C. </span>References</a><ul class="toc"><li class="tocline"><a href="http://localhost/ldpatch.html#normative-references" class="tocxref"><span class="secno">C.1 </span>Normative references</a></li><li class="tocline"><a href="http://localhost/ldpatch.html#informative-references" class="tocxref"><span class="secno">C.2 </span>Informative references</a></li></ul></li></ul></section>
+    
+    
+    
+    <section class="informative" id="introduction" typeof="bibo:Chapter" resource="#introduction" rel="bibo:Chapter">
+      <!--OddPage--><h2 aria-level="1" role="heading" id="h2_introduction"><span class="secno">1. </span>Introduction</h2><p><em>This section is non-normative.</em></p>
+      <p>
+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> [<cite><a class="bibref" href="http://localhost/ldpatch.html#bib-rfc5789">rfc5789</a></cite>], 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 [<cite><a class="bibref" href="http://localhost/ldpatch.html#bib-rdf11-concepts">rdf11-concepts</a></cite>] 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="http://localhost/ldpatch.html#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> [<cite><a class="bibref" href="http://localhost/ldpatch.html#bib-sparql11-update">sparql11-update</a></cite>].
+      </p>
+
+
+
+      <h2 id="intro-example">Example</h2>
+
+      <p>
+        The following RDF Graph will be used as an example through this specification. It describes the relation between a person named Tim Berners-Lee (denoted by <code>&lt;http://example.org/timbl#&gt;</code>) and two events he attended.
+      </p>
+      <div class="example"><div class="example-title"><span>Example 1</span></div><pre class="example">@prefix schema: &lt;http://schema.org/&gt; .
+@prefix profile: &lt;http://ogp.me/ns/profile#&gt; .
+@prefix ex: &lt;http://example.org/vocab#&gt; .
+@prefix rdf: &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&gt; .
+&lt;http://example.com/timbl#&gt; a schema:Person ;
+  schema:alternateName "TimBL" ;
+  profile:first_name "Tim" ;
+  profile:last_name "Berners-Lee" ;
+  schema:workLocation [ schema:name "W3C/MIT" ] ;
+  schema:performerIn _:b1, _:b2 ;
+  ex:preferredLanguages ( "en" "fr" ).
+
+_:b1 schema:name "F2F5 - Linked Data Platform" ;
+  schema:url &lt;https://www.w3.org/2012/ldp/wiki/F2F5&gt; .
+
+_:b2 a schema:Event ;
+  schema:name "TED 2009" ;
+  schema:startDate "2009-02-04" ;
+  schema:url &lt;http://conferences.ted.com/TED2009/&gt; .</pre></div>
+      <p>
+The following is an example HTTP Patch request, conveying an LD Patch document:
+      </p>
+      <div class="example"><div class="example-title"><span>Example 2</span></div><pre class="example">PATCH /timbl HTTP/1.1
+Host: example.org
+Content-Length: 478
+Content-Type: text/ldpatch
+If-Match: "abc123"
+
+@prefix rdf: &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&gt; .
+@prefix schema: &lt;http://schema.org/&gt; .
+@prefix profile: &lt;http://ogp.me/ns/profile#&gt; .
+@prefix ex: &lt;http://example.org/vocab#&gt; .
+
+Delete &lt;#&gt; profile:first_name "Tim" .
+Add    &lt;#&gt; profile:first_name "Timothy" .
+
+UpdateList &lt;#&gt; ex:preferredLanguages 1..2 ( "fr-CH" ) .
+
+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! .
+Delete ?ted schema:startDate "2009-02-04".
+Add ?ted schema:location _:loc .
+Add _:loc schema:name "Long Beach, California" .
+Add _:loc schema:geo _:geo .
+Add _:geo schema:latitude "33.7817" .
+Add _:geo schema:longitude "-118.2054" .</pre></div>
+      <p>
+        This example introduces most features of the LD Patch format: <code>@prefix</code> and prefixed names, the <a class="tref internalDFN" title="Add" href="http://localhost/ldpatch.html#dfn-add">Add</a>, <a class="tref internalDFN" title="Delete" href="http://localhost/ldpatch.html#dfn-delete">Delete</a> and <a class="tref internalDFN" title="UpdateList" href="http://localhost/ldpatch.html#dfn-updatelist">UpdateList</a> operations, the <a class="tref internalDFN" title="Bind" href="http://localhost/ldpatch.html#dfn-bind">Bind</a>-ing mechanism and blank node creation. The "text/ldpatch" media type is <a href="http://localhost/ldpatch.html#media-registration">prospectively</a> used to identify such LD Patch documents.
+      </p>
+      <p>
+The following is the resulting (patched) document.
+      </p>
+      <div class="example"><div class="example-title"><span>Example 3</span></div><pre class="example">@prefix schema: &lt;http://schema.org/&gt; .
+@prefix profile: &lt;http://ogp.me/ns/profile#&gt; .
+@prefix ex: &lt;http://example.org/vocab#&gt; .
+
+&lt;http://example.com/timbl#&gt; a schema:Person ;
+  schema:alternateName "TimBL" ;
+  profile:first_name "Timothy" ;
+  profile:last_name "Berners-Lee" ;
+  schema:workLocation [ schema:name "W3C/MIT" ] ;
+  schema:performerIn _:b1, _:b2 ;
+  ex:preferredLanguages ( "en" "fr-CH" ).
+
+_:b1 a schema:Event ;
+  schema:name "F2F5 - Linked Data Platform" ;
+  schema:url &lt;https://www.w3.org/2012/ldp/wiki/F2F5&gt; .
+
+_:b2 a schema:Event ;
+  schema:name "TED 2009" ;
+  schema:url &lt;http://conferences.ted.com/TED2009/&gt; ;
+  schema:location [
+    schema:name "Long Beach, California";
+    schema:geo [ schema:latitude "33.7817" ; schema:longitude "-118.2054" ]
+  ] .</pre></div>
+
+
+    </section>
+
+
+       
+    <section class="informative" id="language-features" typeof="bibo:Chapter" resource="#language-features" rel="bibo:Chapter">
+      <!--OddPage--><h2 aria-level="1" role="heading" id="h2_language-features"><span class="secno">2. </span>LD Patch format</h2><p><em>This section is non-normative.</em></p>
+      <p>
+A LD Patch document is made of a prologue and a list of statements, where the order is relevant. The prologue declares a numver of <a class="tref internalDFN" title="prefixes" href="http://localhost/ldpatch.html#dfn-prefixes">prefixes</a> used to abbreviate URIs. Then each statement either binds a variable to a matching node, or defines a modification on the graph.
+      </p>
+      <p>
+
+      </p>
+      <section id="prefixes" typeof="bibo:Chapter" resource="#prefixes" rel="bibo:Chapter">
+        <h3 aria-level="2" role="heading" id="h3_prefixes"><span class="secno">2.1 </span><dfn title="Prefixes" id="dfn-prefixes">Prefixes</dfn></h3>
+        <p>
+LD Patch offers the possibility to abbreviate URIs by using Turtle's <i>@prefix</i> directive that allows declaring a short prefix name for a long prefix of repeated URIs. This is useful for many RDF vocabularies that are all defined in nearby namespace URIs, possibly using XML's namespace mechanism that works in a similar fashion.
+        </p>
+        <p>
+Once a prefix such as <code>@prefix foo: &lt;http://example.org/ns#&gt;</code> is defined, any mention of a URI later in the document may use a <a class="tref internalDFN" title="PrefixedName" href="http://localhost/ldpatch.html#dfn-prefixedname">PrefixedName</a> that starts with <code>foo:</code> to stand for the longer URI. So for example, the <a class="tref internalDFN" title="PrefixedName" href="http://localhost/ldpatch.html#dfn-prefixedname">PrefixedName</a> <code>foo:bar</code> is a shorthand for the URI <code>&lt;http://example.org/ns#bar&gt;</code>.
+        </p>
+      </section>
+
+      <section id="node-matching-semantics" typeof="bibo:Chapter" resource="#node-matching-semantics" rel="bibo:Chapter">
+        <h3 aria-level="2" role="heading" id="h3_node-matching-semantics"><span class="secno">2.2 </span><dfn title="Node_matching_semantics" id="dfn-node_matching_semantics">Node matching semantics</dfn></h3>
+        <p>
+LD Patch borrows much of its syntax to <a href="http://www.w3.org/TR/turtle/">Turtle</a> [<cite><a class="bibref" href="http://localhost/ldpatch.html#bib-turtle">turtle</a></cite>] and <a href="http://www.w3.org/TR/sparql11-query/">SPARQL</a> [<cite><a class="bibref" href="http://localhost/ldpatch.html#bib-sparql11-query">sparql11-query</a></cite>] 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: <a class="tref internalDFN" title="Bind" href="http://localhost/ldpatch.html#dfn-bind">Bind</a>ing a variable to a blank node reachable with a <a class="tref internalDFN" title="path_expression" href="http://localhost/ldpatch.html#dfn-path_expression">path expression</a>, and <a class="tref internalDFN" title="UpdateList" href="http://localhost/ldpatch.html#dfn-updatelist">UpdateList</a> 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="http://localhost/ldpatch.html#pathological-graph">pathological</a>, and out of the scope of this specification.
+        </p>
+      </section>
+
+
+      <section id="pathological-graph" typeof="bibo:Chapter" resource="#pathological-graph" rel="bibo:Chapter">
+        <h3 aria-level="2" role="heading" id="h3_pathological-graph"><span class="secno">2.3 </span><dfn title="Pathological_graph" id="dfn-pathological_graph">Pathological graph</dfn></h3>
+        <p>
+          Given an RDF graph <em>G</em>, a blank node <em>b</em> is said to be unambiguous in <em>G</em> if there exists a couple <em>(n, p)</em> where
+        </p><ul>
+          <li><em>n</em> is a URI or a literal</li>
+          <li><em>p</em> is an LD Path expression</li>
+        </ul>
+        such that applying <em>p</em> to <em>n</em> results in a unique <em>{b}</em>.
+        <p></p>
+
+        <p>
+It is easy to see that only the unambiguous blank nodes of a graph can be handled in LD Patch.
+        </p>
+
+        <p>
+Consider for example the following graph:
+        </p>
+
+      <div class="example"><div class="example-title"><span>Example 4</span></div><pre class="example">&lt;#&gt; foaf:name "Alice" ; foaf:knows _:b1, _:b2 .
+_:b1 a foaf:Person .
+_:b2 a foaf:Person ; schema:workLocation _:b3 .
+_:b3 schema:name "W3C/MIT" .</pre></div>
+
+      <p>
+        The blank nodes <code>_:b2</code> and <code>_:b3</code> are unambiguous (they can for example be reached unambiguoulsy from the literal <code>"<abbr title="World Wide Web Consortium">W3C</abbr>/<abbr title="Massachusetts Institute of Technology">MIT</abbr>"</code>). The blank node <code>_:b1</code>, on the other hand, is ambigious as all path expressions that can can match it would also match <code>_:b2</code>.
+      </p>
+
+      <!-- p>
+        This kind of node is not particularly interesting in RDF, as its presence does not change the semantics of the graph. Indeed, if we remove <code>_:b2</code> and all its triples from the graph above, the resulting graph would be semantically equivalent to the original graph.
+      </p-->
+
+      <p>
+        Another example is a graph containing only blank nodes. All its nodes are therefore ambiguous as they can not be reached from a URI or a literal. Such a graph is not interesting in the context of linked data as it contains no URI to link to or from it.
+      </p>
+
+      <p>
+        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>
+
+      <section id="path-expression" typeof="bibo:Chapter" resource="#path-expression" rel="bibo:Chapter">
+        <h3 aria-level="2" role="heading" id="h3_path-expression"><span class="secno">2.4 </span><dfn title="Path_expression" id="dfn-path_expression">Path expression</dfn></h3>
+        <p>
+LD Patch uses path expressions to describe possible routes through a graph between two graph nodes. The main goal is to allow addressing a blank node by “walking” the arcs of the graph from an already identified node. A path is composed by a number of steps, which can be of three kinds:
+        </p>
+        <ul>
+          <li>A <a class="tref internalDFN" title="StepForward" href="http://localhost/ldpatch.html#dfn-stepforward">StepForward</a> is defined by a URI, and consists in following outgoing arcs having that URI as their predicate.</li>
+          <li>A <a class="tref internalDFN" title="StepBackward" href="http://localhost/ldpatch.html#dfn-stepbackward">StepBackward</a> is defined by a URI preceded with the caret ("<code>^</code>") sign, and consists in following incoming arcs having that URI as their predicate.</li>
+          <li>A <a class="tref internalDFN" title="StepAt" href="http://localhost/ldpatch.html#dfn-stepat">StepAt</a> is defined by an integer <i>n</i>, and consists in following <i>n</i> <code>rdf:rest</code> arcs and one <code>rdf:first</code> arc in order to reach the corresponding member of an RDF collection.</li>
+        </ul>
+        <p>
+Note that each step can, in general, result in <em>several</em> matching nodes, as a given node can have several (incoming or outgoing) arcs with the same predicate.
+        </p>
+        <p>
+A Path may also contains <a class="tref internalDFN" title="Constraint" href="http://localhost/ldpatch.html#dfn-constraint">Constraint</a>s, which are of two kinds:
+        </p>
+        <ul>
+          <li>A unicity constraint, described by the <em>bang</em> ("<code>!</code>") character, ensures that the result of the path so far contains exactly one node.</li>
+          <li>A <a class="tref internalDFN" title="filter" href="http://localhost/ldpatch.html#dfn-filter">filter</a>, consisting of a path in square brackets ("<code>[</code>", "<code>]</code>"), keeps only from the matching nodes so far those that “satisfy” the enclosed path, i.e. those from which the enclosed path reaches at least one node.</li>
+          <li>Additionally, the path in a <a class="tref internalDFN" title="filter" href="http://localhost/ldpatch.html#dfn-filter">filter</a> can be followed by the equal ("<code>=</code>") sign and a <a class="tref internalDFN" title="Value" href="http://localhost/ldpatch.html#dfn-value">Value</a>. In that case, only the node for which that particular value is reached through the enclosed path are kept.</li>
+        </ul>
+        <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.
+        </p><div class="example"><div class="example-title"><span>Example 5</span></div><pre class="example">/schema:performerIn[/schema:url = &lt;http://conferences.ted.com/TED2009/&gt;]</pre></div>
+        <p></p>
+
+	<div class="ldp-issue">
+	    <div class="ldp-issue-title"><a href="http://www.w3.org/2012/ldp/track/issues/100">ISSUE-100</a></div>
+	    Should ld-patch use a slash like sparql does, instead of as it currently does?
+	</div>
+
+      </section>
+
+      <section id="bind-statement" typeof="bibo:Chapter" resource="#bind-statement" rel="bibo:Chapter">
+        <h3 aria-level="2" role="heading" id="h3_bind-statement"><span class="secno">2.5 </span><dfn title="Bind" id="dfn-bind">Bind</dfn></h3>
+        <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: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>.
+        </p><div class="example"><div class="example-title"><span>Example 6</span></div><pre class="example">Bind ?event &lt;#&gt; /schema:performerIn[/schema:url = &lt;http://conferences.ted.com/TED2009/&gt;] .</pre></div>
+        <p></p>
+        <p>
+The Bind operation is defined by three components: <a class="tref internalDFN" title="Var" href="http://localhost/ldpatch.html#dfn-var">Var</a>, <a class="tref internalDFN" title="Value" href="http://localhost/ldpatch.html#dfn-value">Value</a> and <a class="tref internalDFN" title="Path" href="http://localhost/ldpatch.html#dfn-path">Path</a>, the last component being optional.
+        </p>
+        <p>
+<a class="tref internalDFN" title="Var" href="http://localhost/ldpatch.html#dfn-var">Var</a> contains a unique name for the new variable. Variables are prefixed by "<code>?</code>"; the "<code>?</code>" character is not part of the variable name.
+        </p>
+        <p>
+<a class="tref internalDFN" title="Value" href="http://localhost/ldpatch.html#dfn-value">Value</a> is the RDF Term that will be used as starting point when following the path expression.
+        </p>
+        <p>
+<a class="tref internalDFN" title="Path" href="http://localhost/ldpatch.html#dfn-path">Path</a> is the expression that is used to identify the RDF Term to which the Variable will be bound. It is comprised of <a class="tref internalDFN" title="Step" href="http://localhost/ldpatch.html#dfn-step">Step</a>(s) and/or <a class="tref internalDFN" title="Constraint" href="http://localhost/ldpatch.html#dfn-constraint">Constraint</a>(s).
+        </p>
+      </section>
+
+      <section id="add-statement" typeof="bibo:Chapter" resource="#add-statement" rel="bibo:Chapter">
+        <h3 aria-level="2" role="heading" id="h3_add-statement"><span class="secno">2.6 </span><dfn title="Add" id="dfn-add">Add</dfn></h3>
+        <p>
+The Add operation is used to add or append new RDF triples to the existing graph. To add new RDF triple, the operation requires a <a class="tref internalDFN" title="Subject" href="http://localhost/ldpatch.html#dfn-subject">Subject</a>, a <a class="tref internalDFN" title="Predicate" href="http://localhost/ldpatch.html#dfn-predicate">Predicate</a> and either an <a class="tref internalDFN" title="Object" href="http://localhost/ldpatch.html#dfn-object">Object</a> or a <a class="tref internalDFN" title="List" href="http://localhost/ldpatch.html#dfn-list">List</a>.
+        </p><div class="example"><div class="example-title"><span>Example 7</span></div><pre class="example">Add &lt;#&gt; profile:first_name "Timothy" .
+
+Add ?event rdf:type schema:Event .</pre></div>
+When the third component is an <a class="tref internalDFN" title="Object" href="http://localhost/ldpatch.html#dfn-object">Object</a>, then a single statement will be added. On the other hand, when it is a <a class="tref internalDFN" title="List" href="http://localhost/ldpatch.html#dfn-list">List</a>, all the intermediate blank nodes and corresponding statements will be added to construct a well formed <a href="http://www.w3.org/TR/rdf-schema/#ch_collectionvocab">RDF collection</a> (in addition to the triple with the given <a class="tref internalDFN" title="Subject" href="http://localhost/ldpatch.html#dfn-subject">Subject</a>, <a class="tref internalDFN" title="Predicate" href="http://localhost/ldpatch.html#dfn-predicate">Predicate</a> and that collection as the object).
+        <p></p>
+      </section>
+
+      <section id="delete-statement" typeof="bibo:Chapter" resource="#delete-statement" rel="bibo:Chapter">
+        <h3 aria-level="2" role="heading" id="h3_delete-statement"><span class="secno">2.7 </span><dfn title="Delete" id="dfn-delete">Delete</dfn></h3>
+        <p>
+The Delete operation is used to remove a single RDF triple from the existing graph. The syntax for the Delete operation requires a <a class="tref internalDFN" title="Subject" href="http://localhost/ldpatch.html#dfn-subject">Subject</a>, a <a class="tref internalDFN" title="Predicate" href="http://localhost/ldpatch.html#dfn-predicate">Predicate</a> and an <a class="tref internalDFN" title="Object" href="http://localhost/ldpatch.html#dfn-object">Object</a>.
+        </p><div class="example"><div class="example-title"><span>Example 8</span></div><pre class="example">Delete &lt;#&gt; profile:first_name "Tim" .
+
+Delete ?ted schema:startDate "2009-02-04".</pre></div>
+        <p></p>
+      </section>
+
+      <section id="update-list-statement" typeof="bibo:Chapter" resource="#update-list-statement" rel="bibo:Chapter">
+        <h3 aria-level="2" role="heading" id="h3_update-list-statement"><span class="secno">2.8 </span><dfn title="UpdateList" id="dfn-updatelist">UpdateList</dfn></h3>
+        <p>
+The UpdateList operation is used to update the members of an <a href="http://www.w3.org/TR/rdf-schema/#ch_collectionvocab">RDF collection</a>. That collection is supposed to be the object of a triple, specified by its <a class="tref internalDFN" title="Subject" href="http://localhost/ldpatch.html#dfn-subject">Subject</a> and <a class="tref internalDFN" title="Predicate" href="http://localhost/ldpatch.html#dfn-predicate">Predicate</a>. A <a class="tref internalDFN" title="Slice" href="http://localhost/ldpatch.html#dfn-slice">Slice</a> specification then describes which members (if any) of the collections are affected by the operation, and then a <a class="tref internalDFN" title="List" href="http://localhost/ldpatch.html#dfn-list">List</a> of new members is provided. In the example below, UpdateList is used to replace the second member of a collection by the literal "fr-CH".
+        </p><div class="example"><div class="example-title"><span>Example 9</span></div><pre class="example">UpdateList &lt;#&gt; ex:preferredLanguages 1..2 ( "fr-CH" ) .</pre></div>
+        <p></p>
+        <p>
+UpdateList works in a similar way to <a href="https://docs.python.org/3/reference/expressions.html#slicings">slicing in Python</a> or similar languages. In general, it replaces a part (“slice”) of a list by another list. To remove members, one can replace them by an empty list. To insert new values between two members, one can set a non empty list to the empty slice comprised between those two members.
+        </p>
+
+        <p>
+In LD Patch, a slice is described by two positive integers separated by "<code>..</code>". The second integer can be omitted, in that case it denotes the end of the list. If both integers are omitted (i.e. "<code>..</code>" alone), this denotes by convention the empty slice at the end of the list. Indexes start at 0.
+        </p>
+
+        <p>
+          The following example shows the syntax for appending elements to a list:
+        </p>
+
+        <div class="example"><div class="example-title"><span>Example 10</span></div><pre class="example">UpdateList &lt;#&gt; ex:preferredLanguages .. ( "fr-CH" ) .</pre></div>
+
+        <p>
+          In this final example, we replace all the elements after index 2 with the provided list:
+        </p>
+
+        <div class="example"><div class="example-title"><span>Example 11</span></div><pre class="example">UpdateList &lt;#&gt; ex:preferredLanguages 2.. ( "fr-CH" ) .</pre></div>
+
+
+      </section>
+
+    </section>
+
+
+    <section id="concrete-syntax" typeof="bibo:Chapter" resource="#concrete-syntax" rel="bibo:Chapter">
+      <!--OddPage--><h2 aria-level="1" role="heading" id="h2_concrete-syntax"><span class="secno">3. </span>Concrete Syntax</h2>
+      <p>
+      </p>
+      <pre><dfn title="LDPatch" id="dfn-ldpatch">LDPatch</dfn> ::= Prologue Statement*
+<dfn title="Prologue" id="dfn-prologue">Prologue</dfn> ::= <a class="tref internalDFN" title="prefixID" href="http://localhost/ldpatch.html#dfn-prefixid">prefixID</a>*
+<dfn title="Statement" id="dfn-statement">Statement</dfn> ::= <a class="tref internalDFN" title="Bind" href="http://localhost/ldpatch.html#dfn-bind">Bind</a> | <a class="tref internalDFN" title="Add" href="http://localhost/ldpatch.html#dfn-add">Add</a> | <a class="tref internalDFN" title="Delete" href="http://localhost/ldpatch.html#dfn-delete">Delete</a> | <a class="tref internalDFN" title="UpdateList" href="http://localhost/ldpatch.html#dfn-updatelist">UpdateList</a>
+<a class="tref internalDFN" title="Bind" href="http://localhost/ldpatch.html#dfn-bind">Bind</a> ::= ("Bind" | "B") <a class="tref internalDFN" title="Var" href="http://localhost/ldpatch.html#dfn-var">Var</a> <a class="tref internalDFN" title="Value" href="http://localhost/ldpatch.html#dfn-value">Value</a> <a class="tref internalDFN" title="Path" href="http://localhost/ldpatch.html#dfn-path">Path</a>? "."
+<a class="tref internalDFN" title="Add" href="http://localhost/ldpatch.html#dfn-add">Add</a> ::= ("Add" | "A") <a class="tref internalDFN" title="Subject" href="http://localhost/ldpatch.html#dfn-subject">Subject</a> <a class="tref internalDFN" title="Predicate" href="http://localhost/ldpatch.html#dfn-predicate">Predicate</a> ( <a class="tref internalDFN" title="Object" href="http://localhost/ldpatch.html#dfn-object">Object</a> | <a class="tref internalDFN" title="List" href="http://localhost/ldpatch.html#dfn-list">List</a> ) "."
+<a class="tref internalDFN" title="Delete" href="http://localhost/ldpatch.html#dfn-delete">Delete</a> ::= ("Delete" | "D") <a class="tref internalDFN" title="Subject" href="http://localhost/ldpatch.html#dfn-subject">Subject</a> <a class="tref internalDFN" title="Predicate" href="http://localhost/ldpatch.html#dfn-predicate">Predicate</a> <a class="tref internalDFN" title="Object" href="http://localhost/ldpatch.html#dfn-object">Object</a> "."
+<a class="tref internalDFN" title="UpdateList" href="http://localhost/ldpatch.html#dfn-updatelist">UpdateList</a> ::= ("UpdateList" | "UL") <a class="tref internalDFN" title="Subject" href="http://localhost/ldpatch.html#dfn-subject">Subject</a> <a class="tref internalDFN" title="Predicate" href="http://localhost/ldpatch.html#dfn-predicate">Predicate</a> <a class="tref internalDFN" title="Slice" href="http://localhost/ldpatch.html#dfn-slice">Slice</a> <a class="tref internalDFN" title="List" href="http://localhost/ldpatch.html#dfn-list">List</a> "."
+
+<dfn title="Subject" id="dfn-subject">Subject</dfn> ::= <a class="tref internalDFN" title="iri" href="http://localhost/ldpatch.html#dfn-iri">iri</a> | <a class="tref internalDFN" title="BlankNode" href="http://localhost/ldpatch.html#dfn-blanknode">BlankNode</a> | <a class="tref internalDFN" title="Var" href="http://localhost/ldpatch.html#dfn-var">Var</a>
+<dfn title="Predicate" id="dfn-predicate">Predicate</dfn> ::= <a class="tref internalDFN" title="iri" href="http://localhost/ldpatch.html#dfn-iri">iri</a>
+<dfn title="Object" id="dfn-object">Object</dfn> ::= <a class="tref internalDFN" title="iri" href="http://localhost/ldpatch.html#dfn-iri">iri</a> | <a class="tref internalDFN" title="BlankNode" href="http://localhost/ldpatch.html#dfn-blanknode">BlankNode</a> | <a class="tref internalDFN" title="literal" href="http://localhost/ldpatch.html#dfn-literal">literal</a> | <a class="tref internalDFN" title="Var" href="http://localhost/ldpatch.html#dfn-var">Var</a>
+<dfn title="Value" id="dfn-value">Value</dfn> ::= <a class="tref internalDFN" title="iri" href="http://localhost/ldpatch.html#dfn-iri">iri</a> | <a class="tref internalDFN" title="literal" href="http://localhost/ldpatch.html#dfn-literal">literal</a> | <a class="tref internalDFN" title="Var" href="http://localhost/ldpatch.html#dfn-var">Var</a>
+<dfn title="List" id="dfn-list">List</dfn> ::= '(' <a class="tref internalDFN" title="Object" href="http://localhost/ldpatch.html#dfn-object">Object</a>* ')'
+
+<a class="tref internalDFN" title="Path" href="http://localhost/ldpatch.html#dfn-path">Path</a> ::= ( <a class="tref internalDFN" title="Step" href="http://localhost/ldpatch.html#dfn-step">Step</a> | <a class="tref internalDFN" title="Constraint" href="http://localhost/ldpatch.html#dfn-constraint">Constraint</a> )*
+<dfn title="Step" id="dfn-step">Step</dfn> ::= '/' ( '^' <a class="tref internalDFN" title="iri" href="http://localhost/ldpatch.html#dfn-iri">iri</a> | <a class="tref internalDFN" title="iri" href="http://localhost/ldpatch.html#dfn-iri">iri</a> | <a class="tref internalDFN" title="INDEX" href="http://localhost/ldpatch.html#dfn-index">INDEX</a> )
+<dfn title="Constraint" id="dfn-constraint">Constraint</dfn> ::= '[' <a class="tref internalDFN" title="Path" href="http://localhost/ldpatch.html#dfn-path">Path</a> ( '=' <a class="tref internalDFN" title="Value" href="http://localhost/ldpatch.html#dfn-value">Value</a> )? ']' | '!'
+
+<dfn title="Slice" id="dfn-slice">Slice</dfn> ::= <a class="tref internalDFN" title="INDEX" href="http://localhost/ldpatch.html#dfn-index">INDEX</a>? '..' <a class="tref internalDFN" title="INDEX" href="http://localhost/ldpatch.html#dfn-index">INDEX</a>?
+<dfn title="INDEX" id="dfn-index">INDEX</dfn> ::= [0-9]+
+
+// copied from SPARQL
+
+// supposed to be `Var ::= VAR1 | VAR2` but here only VAR1
+<a class="tref internalDFN" title="Var" href="http://localhost/ldpatch.html#dfn-var">Var</a> ::= '?' <a class="tref internalDFN" title="VARNAME" href="http://localhost/ldpatch.html#dfn-varname">VARNAME</a>
+<dfn title="VARNAME" id="dfn-varname">VARNAME</dfn> ::= ( <a class="tref internalDFN" title="PN_CHARS_U" href="http://localhost/ldpatch.html#dfn-pn_chars_u">PN_CHARS_U</a> | [0-9] ) ( <a class="tref internalDFN" title="PN_CHARS_U" href="http://localhost/ldpatch.html#dfn-pn_chars_u">PN_CHARS_U</a> | [0-9] | #x00B7 | [#x0300-#x036F] | [#x203F-#x2040] )*
+
+// copied from Turtle
+
+<dfn title="prefixID" id="dfn-prefixid">prefixID</dfn> ::= "@prefix" PNAME_NS IRIREF "."
+<a class="tref internalDFN" title="Literal" href="http://localhost/ldpatch.html#dfn-literal">Literal</a> ::= <a class="tref internalDFN" title="RDFLiteral" href="http://localhost/ldpatch.html#dfn-rdfliteral">RDFLiteral</a> | <a class="tref internalDFN" title="NumericLiteral" href="http://localhost/ldpatch.html#dfn-numericliteral">NumericLiteral</a> | <a class="tref internalDFN" title="BooleanLiteral" href="http://localhost/ldpatch.html#dfn-booleanliteral">BooleanLiteral</a>
+<dfn title="NumericLiteral" id="dfn-numericliteral">NumericLiteral</dfn> ::= <a class="tref internalDFN" title="INTEGER" href="http://localhost/ldpatch.html#dfn-integer">INTEGER</a> | <a class="tref internalDFN" title="DECIMAL" href="http://localhost/ldpatch.html#dfn-decimal">DECIMAL</a> | <a class="tref internalDFN" title="DOUBLE" href="http://localhost/ldpatch.html#dfn-double">DOUBLE</a>
+<dfn title="RDFLiteral" id="dfn-rdfliteral">RDFLiteral</dfn> ::= <a class="tref internalDFN" title="String" href="http://localhost/ldpatch.html#dfn-string">String</a> (<a class="tref internalDFN" title="LANGTAG" href="http://localhost/ldpatch.html#dfn-langtag">LANGTAG</a> | '^^' <a class="tref internalDFN" title="iri" href="http://localhost/ldpatch.html#dfn-iri">iri</a>)?
+<dfn title="BooleanLiteral" id="dfn-booleanliteral">BooleanLiteral</dfn> ::= 'true' | 'false'
+<a class="tref internalDFN" title="String" href="http://localhost/ldpatch.html#dfn-string">String</a> ::= <a class="tref internalDFN" title="STRING_LITERAL_QUOTE" href="http://localhost/ldpatch.html#dfn-string_literal_quote">STRING_LITERAL_QUOTE</a> | <a class="tref internalDFN" title="STRING_LITERAL_SINGLE_QUOTE" href="http://localhost/ldpatch.html#dfn-string_literal_single_quote">STRING_LITERAL_SINGLE_QUOTE</a> | <a class="tref internalDFN" title="STRING_LITERAL_LONG_SINGLE_QUOTE" href="http://localhost/ldpatch.html#dfn-string_literal_long_single_quote">STRING_LITERAL_LONG_SINGLE_QUOTE</a> | <a class="tref internalDFN" title="STRING_LITERAL_LONG_QUOTE" href="http://localhost/ldpatch.html#dfn-string_literal_long_quote">STRING_LITERAL_LONG_QUOTE</a>
+<a class="tref internalDFN" title="iri" href="http://localhost/ldpatch.html#dfn-iri">iri</a> ::= <a class="tref internalDFN" title="IRIREF" href="http://localhost/ldpatch.html#dfn-iriref">IRIREF</a> | <a class="tref internalDFN" title="PrefixedName" href="http://localhost/ldpatch.html#dfn-prefixedname">PrefixedName</a>
+<dfn title="PrefixedName" id="dfn-prefixedname">PrefixedName</dfn> ::= <a class="tref internalDFN" title="PNAME_LN" href="http://localhost/ldpatch.html#dfn-pname_ln">PNAME_LN</a> | <a class="tref internalDFN" title="PNAME_NS" href="http://localhost/ldpatch.html#dfn-pname_ns">PNAME_NS</a>
+<a class="tref internalDFN" title="BlankNode" href="http://localhost/ldpatch.html#dfn-blanknode">BlankNode</a> ::= <a class="tref internalDFN" title="BLANK_NODE_LABEL" href="http://localhost/ldpatch.html#dfn-blank_node_label">BLANK_NODE_LABEL</a> | <a class="tref internalDFN" title="ANON" href="http://localhost/ldpatch.html#dfn-anon">ANON</a>
+<dfn title="IRIREF" id="dfn-iriref">IRIREF</dfn> ::= '&lt;' ([^#x00-#x20&lt;&gt;"{}|^`\] | <a class="tref internalDFN" title="UCHAR" href="http://localhost/ldpatch.html#dfn-uchar">UCHAR</a>)* '&gt;' /* #x00=NULL #01-#x1F=control codes #x20=space */
+<dfn title="PNAME_NS" id="dfn-pname_ns">PNAME_NS</dfn> ::= <a class="tref internalDFN" title="PN_PREFIX" href="http://localhost/ldpatch.html#dfn-pn_prefix">PN_PREFIX</a>? ':'
+<dfn title="PNAME_LN" id="dfn-pname_ln">PNAME_LN</dfn> ::= <a class="tref internalDFN" title="PNAME_NS" href="http://localhost/ldpatch.html#dfn-pname_ns">PNAME_NS</a> <a class="tref internalDFN" title="PN_LOCAL" href="http://localhost/ldpatch.html#dfn-pn_local">PN_LOCAL</a>
+<dfn title="BLANK_NODE_LABEL" id="dfn-blank_node_label">BLANK_NODE_LABEL</dfn> ::= '_:' (<a class="tref internalDFN" title="PN_CHARS_U" href="http://localhost/ldpatch.html#dfn-pn_chars_u">PN_CHARS_U</a> | [0-9]) ((<a class="tref internalDFN" title="PN_CHARS" href="http://localhost/ldpatch.html#dfn-pn_chars">PN_CHARS</a> | '.')* <a class="tref internalDFN" title="PN_CHARS" href="http://localhost/ldpatch.html#dfn-pn_chars">PN_CHARS</a>)?
+<dfn title="LANGTAG" id="dfn-langtag">LANGTAG</dfn> ::= '@' [a-zA-Z]+ ('-' [a-zA-Z0-9]+)*
+<dfn title="INTEGER" id="dfn-integer">INTEGER</dfn> ::= [+-]? [0-9]+
+<dfn title="DECIMAL" id="dfn-decimal">DECIMAL</dfn> ::= [+-]? [0-9]* '.' [0-9]+
+<dfn title="DOUBLE" id="dfn-double">DOUBLE</dfn> ::= [+-]? ([0-9]+ '.' [0-9]* <a class="tref internalDFN" title="EXPONENT" href="http://localhost/ldpatch.html#dfn-exponent">EXPONENT</a> | '.' [0-9]+ <a class="tref internalDFN" title="EXPONENT" href="http://localhost/ldpatch.html#dfn-exponent">EXPONENT</a> | [0-9]+ <a class="tref internalDFN" title="EXPONENT" href="http://localhost/ldpatch.html#dfn-exponent">EXPONENT</a>)
+<dfn title="EXPONENT" id="dfn-exponent">EXPONENT</dfn> ::= [eE] [+-]? [0-9]+
+<dfn title="STRING_LITERAL_QUOTE" id="dfn-string_literal_quote">STRING_LITERAL_QUOTE</dfn> ::= '"' ([^#x22#x5C#xA#xD] | <a class="tref internalDFN" title="ECHAR" href="http://localhost/ldpatch.html#dfn-echar">ECHAR</a> | <a class="tref internalDFN" title="UCHAR" href="http://localhost/ldpatch.html#dfn-uchar">UCHAR</a>)* '"'      /* #x22=" #x5C=\ #xA=new line #xD=carriage return */
+<dfn title="STRING_LITERAL_SINGLE_QUOTE" id="dfn-string_literal_single_quote">STRING_LITERAL_SINGLE_QUOTE</dfn> ::= "'" ([^#x27#x5C#xA#xD] | <a class="tref internalDFN" title="ECHAR" href="http://localhost/ldpatch.html#dfn-echar">ECHAR</a> | <a class="tref internalDFN" title="UCHAR" href="http://localhost/ldpatch.html#dfn-uchar">UCHAR</a>)* "'"      /* #x27=' #x5C=\ #xA=new line #xD=carriage return */
+<dfn title="STRING_LITERAL_LONG_SINGLE_QUOTE" id="dfn-string_literal_long_single_quote">STRING_LITERAL_LONG_SINGLE_QUOTE</dfn> ::= "'''" (("'" | "''")? ([^'\] | <a class="tref internalDFN" title="ECHAR" href="http://localhost/ldpatch.html#dfn-echar">ECHAR</a> | <a class="tref internalDFN" title="UCHAR" href="http://localhost/ldpatch.html#dfn-uchar">UCHAR</a>))* "'''"
+<dfn title="STRING_LITERAL_LONG_QUOTE" id="dfn-string_literal_long_quote">STRING_LITERAL_LONG_QUOTE</dfn> ::= '"""' (('"' | '""')? ([^"\] | <a class="tref internalDFN" title="ECHAR" href="http://localhost/ldpatch.html#dfn-echar">ECHAR</a> | <a class="tref internalDFN" title="UCHAR" href="http://localhost/ldpatch.html#dfn-uchar">UCHAR</a>))* '"""'
+<dfn title="UCHAR" id="dfn-uchar">UCHAR</dfn> ::= '\\u' <a class="tref internalDFN" title="HEX" href="http://localhost/ldpatch.html#dfn-hex">HEX</a> <a class="tref internalDFN" title="HEX" href="http://localhost/ldpatch.html#dfn-hex">HEX</a> <a class="tref internalDFN" title="HEX" href="http://localhost/ldpatch.html#dfn-hex">HEX</a> <a class="tref internalDFN" title="HEX" href="http://localhost/ldpatch.html#dfn-hex">HEX</a> | '\\U' <a class="tref internalDFN" title="HEX" href="http://localhost/ldpatch.html#dfn-hex">HEX</a> <a class="tref internalDFN" title="HEX" href="http://localhost/ldpatch.html#dfn-hex">HEX</a> <a class="tref internalDFN" title="HEX" href="http://localhost/ldpatch.html#dfn-hex">HEX</a> <a class="tref internalDFN" title="HEX" href="http://localhost/ldpatch.html#dfn-hex">HEX</a> <a class="tref internalDFN" title="HEX" href="http://localhost/ldpatch.html#dfn-hex">HEX</a> <a class="tref internalDFN" title="HEX" href="http://localhost/ldpatch.html#dfn-hex">HEX</a> <a class="tref internalDFN" title="HEX" href="http://localhost/ldpatch.html#dfn-hex">HEX</a> <a class="tref internalDFN" title="HEX" href="http://localhost/ldpatch.html#dfn-hex">HEX</a>
+<dfn title="ECHAR" id="dfn-echar">ECHAR</dfn> ::= '\' [tbnrf"'\]
+<dfn title="WS" id="dfn-ws">WS</dfn> ::= #x20 | #x9 | #xD | #xA /* #x20=space #x9=character tabulation #xD=carriage return #xA=new line */
+<dfn title="ANON" id="dfn-anon">ANON</dfn> ::= '[' <a class="tref internalDFN" title="WS" href="http://localhost/ldpatch.html#dfn-ws">WS</a>* ']'
+<dfn title="PN_CHARS_BASE" id="dfn-pn_chars_base">PN_CHARS_BASE</dfn> ::= [A-Z] | [a-z] | [#x00C0-#x00D6] | [#x00D8-#x00F6] | [#x00F8-#x02FF] | [#x0370-#x037D] | [#x037F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
+<dfn title="PN_CHARS_U" id="dfn-pn_chars_u">PN_CHARS_U</dfn> ::= <a class="tref internalDFN" title="PN_CHARS_BASE" href="http://localhost/ldpatch.html#dfn-pn_chars_base">PN_CHARS_BASE</a> | '_'
+<dfn title="PN_CHARS" id="dfn-pn_chars">PN_CHARS</dfn> ::= <a class="tref internalDFN" title="PN_CHARS_U" href="http://localhost/ldpatch.html#dfn-pn_chars_u">PN_CHARS_U</a> | '-' | [0-9] | #x00B7 | [#x0300-#x036F] | [#x203F-#x2040]
+<dfn title="PN_PREFIX" id="dfn-pn_prefix">PN_PREFIX</dfn> ::= <a class="tref internalDFN" title="PN_CHARS_BASE" href="http://localhost/ldpatch.html#dfn-pn_chars_base">PN_CHARS_BASE</a> ((<a class="tref internalDFN" title="PN_CHARS" href="http://localhost/ldpatch.html#dfn-pn_chars">PN_CHARS</a> | '.')* <a class="tref internalDFN" title="PN_CHARS" href="http://localhost/ldpatch.html#dfn-pn_chars">PN_CHARS</a>)?
+<dfn title="PN_LOCAL" id="dfn-pn_local">PN_LOCAL</dfn> ::= (<a class="tref internalDFN" title="PN_CHARS_U" href="http://localhost/ldpatch.html#dfn-pn_chars_u">PN_CHARS_U</a> | ':' | [0-9] | <a class="tref internalDFN" title="PLX" href="http://localhost/ldpatch.html#dfn-plx">PLX</a>) ((<a class="tref internalDFN" title="PN_CHARS" href="http://localhost/ldpatch.html#dfn-pn_chars">PN_CHARS</a> | '.' | ':' | <a class="tref internalDFN" title="PLX" href="http://localhost/ldpatch.html#dfn-plx">PLX</a>)* (<a class="tref internalDFN" title="PN_CHARS" href="http://localhost/ldpatch.html#dfn-pn_chars">PN_CHARS</a> | ':' | <a class="tref internalDFN" title="PLX" href="http://localhost/ldpatch.html#dfn-plx">PLX</a>))?
+<dfn title="PLX" id="dfn-plx">PLX</dfn> ::= <a class="tref internalDFN" title="PERCENT" href="http://localhost/ldpatch.html#dfn-percent">PERCENT</a> | <a class="tref internalDFN" title="PN_LOCAL_ESC" href="http://localhost/ldpatch.html#dfn-pn_local_esc">PN_LOCAL_ESC</a>
+<dfn title="PERCENT" id="dfn-percent">PERCENT</dfn> ::= '%' <a class="tref internalDFN" title="HEX" href="http://localhost/ldpatch.html#dfn-hex">HEX</a> <a class="tref internalDFN" title="HEX" href="http://localhost/ldpatch.html#dfn-hex">HEX</a>
+<dfn title="HEX" id="dfn-hex">HEX</dfn> ::= [0-9] | [A-F] | [a-f]
+<dfn title="PN_LOCAL_ESC" id="dfn-pn_local_esc">PN_LOCAL_ESC</dfn> ::= '\' ('_' | '~' | '.' | '-' | '!' | '$' | '&amp;' | "'" | '(' | ')' | '*' | '+' | ',' | ';' | '=' | '/' | '?' | '#' | '@' | '%')
+      </pre>
+    </section>
+
+    <section id="abstract-syntax" typeof="bibo:Chapter" resource="#abstract-syntax" rel="bibo:Chapter">
+      <!--OddPage--><h2 aria-level="1" role="heading" id="h2_abstract-syntax"><span class="secno">4. </span>Abstract Syntax</h2>
+      <p>
+The LD Patch data model makes use of the commonly defined <a href="http://en.wikipedia.org/wiki/Abstract_data_type">Abstract Data Types</a> <a href="http://en.wikipedia.org/wiki/Set_(computer_science)">Set</a>, <a href="http://en.wikipedia.org/wiki/List_(computer_science)">List</a> and <a href="http://en.wikipedia.org/wiki/Option_type">Option</a>, used here as type constructors. For example, <code>Set(A)</code> denotes the type for the sets of elements of type <code>A</code>. <!--We assume that they come with their common operations, such as the function <code>size&nbsp;:&nbsp;Set&nbsp;→&nbsp;Int</code>.-->				
+      </p>
+      <pre><a class="tref internalDFN" title="LDPatch" href="http://localhost/ldpatch.html#dfn-ldpatch">LDPatch</a> ::= <a class="tref internalDFN" title="List" href="http://localhost/ldpatch.html#dfn-list">List</a>(<a class="tref internalDFN" title="Statement" href="http://localhost/ldpatch.html#dfn-statement">Statement</a>)
+
+<a class="tref internalDFN" title="Statement" href="http://localhost/ldpatch.html#dfn-statement">Statement</a> ::= <a class="tref internalDFN" title="Add" href="http://localhost/ldpatch.html#dfn-add">Add</a> | <a class="tref internalDFN" title="AddList" href="http://localhost/ldpatch.html#dfn-addlist">AddList</a> | <a class="tref internalDFN" title="Delete" href="http://localhost/ldpatch.html#dfn-delete">Delete</a> | <a class="tref internalDFN" title="Bind" href="http://localhost/ldpatch.html#dfn-bind">Bind</a> | <a class="tref internalDFN" title="UpdateList" href="http://localhost/ldpatch.html#dfn-updatelist">UpdateList</a>
+<a class="tref internalDFN" title="Add" href="http://localhost/ldpatch.html#dfn-add">Add</a>       ::= (<a class="tref internalDFN" title="Subject" href="http://localhost/ldpatch.html#dfn-subject">Subject</a>, <a class="tref internalDFN" title="Predicate" href="http://localhost/ldpatch.html#dfn-predicate">Predicate</a>, <a class="tref internalDFN" title="Object" href="http://localhost/ldpatch.html#dfn-object">Object</a>)
+<dfn title="AddList" id="dfn-addlist">AddList</dfn>   ::= (<a class="tref internalDFN" title="Subject" href="http://localhost/ldpatch.html#dfn-subject">Subject</a>, <a class="tref internalDFN" title="Predicate" href="http://localhost/ldpatch.html#dfn-predicate">Predicate</a>, <a class="tref internalDFN" title="List" href="http://localhost/ldpatch.html#dfn-list">List</a>(<a class="tref internalDFN" title="Object" href="http://localhost/ldpatch.html#dfn-object">Object</a>))
+<a class="tref internalDFN" title="Delete" href="http://localhost/ldpatch.html#dfn-delete">Delete</a>    ::= (<a class="tref internalDFN" title="Subject" href="http://localhost/ldpatch.html#dfn-subject">Subject</a>, <a class="tref internalDFN" title="Predicate" href="http://localhost/ldpatch.html#dfn-predicate">Predicate</a>, <a class="tref internalDFN" title="Object" href="http://localhost/ldpatch.html#dfn-object">Object</a>)
+<a class="tref internalDFN" title="Bind" href="http://localhost/ldpatch.html#dfn-bind">Bind</a>      ::= (<a class="tref internalDFN" title="Var" href="http://localhost/ldpatch.html#dfn-var">Var</a>, <a class="tref internalDFN" title="Value" href="http://localhost/ldpatch.html#dfn-value">Value</a>, <a class="tref internalDFN" title="Path" href="http://localhost/ldpatch.html#dfn-path">Path</a>)
+<a class="tref internalDFN" title="UpdateList" href="http://localhost/ldpatch.html#dfn-updatelist">UpdateList</a>   ::= (<a class="tref internalDFN" title="Subject" href="http://localhost/ldpatch.html#dfn-subject">Subject</a>, <a class="tref internalDFN" title="Predicate" href="http://localhost/ldpatch.html#dfn-predicate">Predicate</a>, <a class="tref internalDFN" title="Slice" href="http://localhost/ldpatch.html#dfn-slice">Slice</a>, <a class="tref internalDFN" title="List" href="http://localhost/ldpatch.html#dfn-list">List</a>(<a class="tref internalDFN" title="Object" href="http://localhost/ldpatch.html#dfn-object">Object</a>))
+
+<dfn title="Path" id="dfn-path">Path</dfn>         ::= <a class="tref internalDFN" title="List" href="http://localhost/ldpatch.html#dfn-list">List</a>(<a class="tref internalDFN" title="PathElement" href="http://localhost/ldpatch.html#dfn-pathelement">PathElement</a>)
+<dfn title="PathElement" id="dfn-pathelement">PathElement</dfn>  ::= <a class="tref internalDFN" title="Step" href="http://localhost/ldpatch.html#dfn-step">Step</a> | <a class="tref internalDFN" title="Constraint" href="http://localhost/ldpatch.html#dfn-constraint">Constraint</a>
+<a class="tref internalDFN" title="Step" href="http://localhost/ldpatch.html#dfn-step">Step</a>         ::= <a class="tref internalDFN" title="StepForward" href="http://localhost/ldpatch.html#dfn-stepforward">StepForward</a> | <a class="tref internalDFN" title="StepBackward" href="http://localhost/ldpatch.html#dfn-stepbackward">StepBackward</a> | <a class="tref internalDFN" title="StepAt" href="http://localhost/ldpatch.html#dfn-stepat">StepAt</a>
+<a class="tref internalDFN" title="Constraint" href="http://localhost/ldpatch.html#dfn-constraint">Constraint</a>   ::= <a class="tref internalDFN" title="Filter" href="http://localhost/ldpatch.html#dfn-filter">Filter</a> | UNICITY_CONSTRAINT
+<dfn title="StepForward" id="dfn-stepforward">StepForward</dfn>  ::= <a class="tref internalDFN" title="IRI" href="http://localhost/ldpatch.html#dfn-iri">IRI</a>
+<dfn title="StepBackward" id="dfn-stepbackward">StepBackward</dfn> ::= <a class="tref internalDFN" title="IRI" href="http://localhost/ldpatch.html#dfn-iri">IRI</a>
+<dfn title="StepAt" id="dfn-stepat">StepAt</dfn>       ::= <a class="tref internalDFN" title="Integer" href="http://localhost/ldpatch.html#dfn-integer">Integer</a>
+<dfn title="Filter" id="dfn-filter">Filter</dfn>       ::= (<a class="tref internalDFN" title="Path" href="http://localhost/ldpatch.html#dfn-path">Path</a>, Option(<a class="tref internalDFN" title="Value" href="http://localhost/ldpatch.html#dfn-value">Value</a>))
+
+<a class="tref internalDFN" title="Slice" href="http://localhost/ldpatch.html#dfn-slice">Slice</a>            ::= <a class="tref internalDFN" title="Range" href="http://localhost/ldpatch.html#dfn-range">Range</a> | <a class="tref internalDFN" title="EverythingAfter" href="http://localhost/ldpatch.html#dfn-everythingafter">EverythingAfter</a> | END
+<dfn title="Range" id="dfn-range">Range</dfn>            ::= (<a class="tref internalDFN" title="Integer" href="http://localhost/ldpatch.html#dfn-integer">Integer</a>, <a class="tref internalDFN" title="Integer" href="http://localhost/ldpatch.html#dfn-integer">Integer</a>)
+<dfn title="EverythingAfter" id="dfn-everythingafter">EverythingAfter</dfn>  ::= <a class="tref internalDFN" title="Integer" href="http://localhost/ldpatch.html#dfn-integer">Integer</a>
+
+<a class="tref internalDFN" title="Subject" href="http://localhost/ldpatch.html#dfn-subject">Subject</a>   ::= <a class="tref internalDFN" title="IRI" href="http://localhost/ldpatch.html#dfn-iri">IRI</a> | <a class="tref internalDFN" title="BlankNode" href="http://localhost/ldpatch.html#dfn-blanknode">BlankNode</a> | <a class="tref internalDFN" title="Var" href="http://localhost/ldpatch.html#dfn-var">Var</a>
+<a class="tref internalDFN" title="Predicate" href="http://localhost/ldpatch.html#dfn-predicate">Predicate</a> ::= <a class="tref internalDFN" title="IRI" href="http://localhost/ldpatch.html#dfn-iri">IRI</a>
+<a class="tref internalDFN" title="Object" href="http://localhost/ldpatch.html#dfn-object">Object</a>    ::= <a class="tref internalDFN" title="IRI" href="http://localhost/ldpatch.html#dfn-iri">IRI</a> | <a class="tref internalDFN" title="BlankNode" href="http://localhost/ldpatch.html#dfn-blanknode">BlankNode</a> | <a class="tref internalDFN" title="Literal" href="http://localhost/ldpatch.html#dfn-literal">Literal</a> | <a class="tref internalDFN" title="Var" href="http://localhost/ldpatch.html#dfn-var">Var</a>
+<a class="tref internalDFN" title="Value" href="http://localhost/ldpatch.html#dfn-value">Value</a>     ::= <a class="tref internalDFN" title="IRI" href="http://localhost/ldpatch.html#dfn-iri">IRI</a> | <a class="tref internalDFN" title="Literal" href="http://localhost/ldpatch.html#dfn-literal">Literal</a> | <a class="tref internalDFN" title="Var" href="http://localhost/ldpatch.html#dfn-var">Var</a>
+
+<dfn title="Var" id="dfn-var">Var</dfn>       ::= <a class="tref internalDFN" title="String" href="http://localhost/ldpatch.html#dfn-string">String</a>
+<dfn title="IRI" id="dfn-iri">IRI</dfn>       ::= RDF URI-reference http://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/#section-IRIs as subsequently restricted by SPARQL http://www.w3.org/TR/rdf-sparql-query/#docTerminology
+<dfn title="BlankNode" id="dfn-blanknode">BlankNode</dfn> ::= RDF blank node http://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/#section-blank-nodes
+<dfn title="Literal" id="dfn-literal">Literal</dfn>   ::= RDF Literal http://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/#section-Graph-Literal
+<dfn title="String" id="dfn-string">String</dfn>    ::= a Unicode String
+      </pre>
+
+    </section>
+    
+    <section id="operational-semantics" typeof="bibo:Chapter" resource="#operational-semantics" rel="bibo:Chapter">
+      <!--OddPage--><h2 aria-level="1" role="heading" id="h2_operational-semantics"><span class="secno">5. </span>Operational Semantics</h2>
+
+      <p>
+        LD Patch abides to the semantics of the <a href="http://tools.ietf.org/html/rfc5789" target="_blank">HTTP PATCH method</a>, in that the server <em class="rfc2119" title="MUST">MUST</em> apply the entire set of changes atomically and never provide (e.g., in response to a GET during this operation) a partially modified representation. If the entire patch document cannot be successfully applied (e.g., one of the instructions has failed), then the server <em class="rfc2119" title="MUST NOT">MUST NOT</em> apply any of the changes.
+      </p>
+
+      <p>
+      </p>
+
+      
+    </section>
+
+    <section id="acknowledgements" class="appendix informative" typeof="bibo:Chapter" resource="#acknowledgements" rel="bibo:Chapter">
+      <!--OddPage--><h2 aria-level="1" role="heading" id="h2_acknowledgements"><span class="secno">A. </span>Acknowledgements</h2><p><em>This section is non-normative.</em></p>
+     
+      <p>TODO</p>
+
+    </section>
+
+
+    <section class="appendix" id="media-registration" typeof="bibo:Chapter" resource="#media-registration" rel="bibo:Chapter">
+      <!--OddPage--><h2 aria-level="1" role="heading" id="h2_media-registration"><span class="secno">B. </span>Internet Media Type, File Extension and Macintosh File Type</h2>
+
+      <p>TODO: here comes the section about "text/ldpatch" registration.</p>
+
+    </section>
+
+  
+
+<div id="respec-ui" class="removeOnSave" style="position: fixed; top: 20px; right: 20px; width: 202px; text-align: right;"><button style="font-weight: bold; border: 1px solid rgb(204, 204, 204); border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; background: rgb(255, 255, 255);">ReSpec</button><div style="border: 1px solid rgb(0, 0, 0); width: 200px; text-align: left; margin-top: 5px; margin-right: 5px; display: none; background: rgb(255, 255, 255);"><button style="border-style: none none solid; border-bottom-width: 1px; border-bottom-color: rgb(204, 204, 204); width: 100%; text-align: left; font-size: inherit; background: rgb(255, 255, 255);">Save Snapshot</button><button style="border-style: none none solid; border-bottom-width: 1px; border-bottom-color: rgb(204, 204, 204); width: 100%; text-align: left; font-size: inherit; background: rgb(255, 255, 255);">About ReSpec</button><button style="border-style: none none solid; border-bottom-width: 1px; border-bottom-color: rgb(204, 204, 204); width: 100%; text-align: left; font-size: inherit; background: rgb(255, 255, 255);">Search Specref DB</button></div></div><section id="references" class="appendix" typeof="bibo:Chapter" resource="#references" rel="bibo:Chapter"><!--OddPage--><h2 aria-level="1" role="heading" id="h2_references"><span class="secno">C. </span>References</h2><section id="normative-references" typeof="bibo:Chapter" resource="#normative-references" rel="bibo:Chapter"><h3 aria-level="2" role="heading" id="h3_normative-references"><span class="secno">C.1 </span>Normative references</h3><dl class="bibliography" about=""><dt id="bib-LDP">[LDP]</dt><dd rel="dcterms:requires">Steve Speicher; John Arwe; Ashok Malhotra. <a href="http://www.w3.org/TR/ldp/"><cite>Linked Data Platform 1.0</cite></a>. 19 June 2014. W3C Candidate Recommendation. URL: <a href="http://www.w3.org/TR/ldp/">http://www.w3.org/TR/ldp/</a>
+</dd><dt id="bib-rdf11-concepts">[rdf11-concepts]</dt><dd rel="dcterms:requires">Richard Cyganiak; David Wood; Markus Lanthaler. <a href="http://www.w3.org/TR/rdf11-concepts/"><cite>RDF 1.1 Concepts and Abstract Syntax</cite></a>. 25 February 2014. W3C Recommendation. URL: <a href="http://www.w3.org/TR/rdf11-concepts/">http://www.w3.org/TR/rdf11-concepts/</a>
+</dd><dt id="bib-rfc5789">[rfc5789]</dt><dd rel="dcterms:requires">L. Dusseault; J. Snell. <a href="http://www.ietf.org/rfc/rfc5789.txt"><cite>PATCH Method for HTTP</cite></a>. March 2010. Proposed Standard. URL: <a href="http://www.ietf.org/rfc/rfc5789.txt">http://www.ietf.org/rfc/rfc5789.txt</a>
+</dd></dl></section><section id="informative-references" typeof="bibo:Chapter" resource="#informative-references" rel="bibo:Chapter"><h3 aria-level="2" role="heading" id="h3_informative-references"><span class="secno">C.2 </span>Informative references</h3><dl class="bibliography" about=""><dt id="bib-sparql11-query">[sparql11-query]</dt><dd rel="dcterms:references">Steven Harris; Andy Seaborne. <a href="http://www.w3.org/TR/sparql11-query/"><cite>SPARQL 1.1 Query Language</cite></a>. 21 March 2013. W3C Recommendation. URL: <a href="http://www.w3.org/TR/sparql11-query/">http://www.w3.org/TR/sparql11-query/</a>
+</dd><dt id="bib-sparql11-update">[sparql11-update]</dt><dd rel="dcterms:references">Paul Gearon; Alexandre Passant; Axel Polleres. <a href="http://www.w3.org/TR/sparql11-update/"><cite>SPARQL 1.1 Update</cite></a>. 21 March 2013. W3C Recommendation. URL: <a href="http://www.w3.org/TR/sparql11-update/">http://www.w3.org/TR/sparql11-update/</a>
+</dd><dt id="bib-turtle">[turtle]</dt><dd rel="dcterms:references">Eric Prud'hommeaux; Gavin Carothers. <a href="http://www.w3.org/TR/turtle/"><cite>RDF 1.1 Turtle</cite></a>. 25 February 2014. W3C Recommendation. URL: <a href="http://www.w3.org/TR/turtle/">http://www.w3.org/TR/turtle/</a>
+</dd></dl></section></section></body></html>
\ No newline at end of file