diff --git a/protocol.html b/protocol.html index fdd5b3f0..018376d6 100644 --- a/protocol.html +++ b/protocol.html @@ -704,6 +704,20 @@

Writing Resources

When a POST method request targets a resource without an existing representation, the server MUST respond with the 404 status code. [Source]

+

+ When the target resource of a PATCH request is represented by an RDF document [RDF11-CONCEPTS], servers MUST support changing the representation using the request body containing a subset of SPARQL Update as defined in the Appendix. + Servers MAY further support SPARQL 1.1 Update [SPARQL], + except that servers MUST NOT allow a request with a PATCH method to change other resources than the target resource. [Source] + Servers that receives a request body containing a SPARQL query that falls outside of the subset they are able to process MUST respond with a 422 status code [RFC4918] and a message body that explains the error. + +

+ +

+ When the request body of a PATCH request has a SPARQL Update query that contains an INSERT keyword, servers MUST treat the request as an Append operation. + When the query contains a WHERE keyword, servers MUST treat the request as a Read operation. + When the query contains a DELETE keyword, servers MUST treat the request as a Read and Write operation. +

+

When a PUT or PATCH method request targets an auxiliary resource, the server MUST create or update it. When a POST method request with the Slug header targets an auxiliary resource, the server MUST respond with the 403 status code and response body describing the error. [Source]

Servers MUST NOT allow HTTP POST, PUT and PATCH to update a container’s containment triples; if the server receives such a request, it MUST respond with a 409 status code. [Source]

@@ -1045,6 +1059,146 @@

Security and Privacy Review

+
+

Appendix - A subset of SPARQL Update for Solid

+
+
+

Overview

+
+

This section is non-normative.

+ +

The objective of the subset is to identify a subset of SPARQL 1.1 Update [SPARQL] that is relatively easy to implement and contains features that are most commonly used. It thus takes variations of the INSERT and DELETE operations and allows operations on basic triple patterns only. The subset is compatible with SPARQL 1.1 Update and is defined in terms of a grammar. To further examine the definition, see the Yacker validator. +

+
+
+ +
+

Grammar

+
+

Note: Definition of SPARQL Update Subset

+
+

This specification alters the grammar of 8 rules in the original grammar of the SPARQL 1.1 Query Language [SPARQL] grammar and introduces another 10 new rules to accommodate for INSERT DATA and DELETE DATA, which was defined in the language definition but not precisely defined in the grammar. This specification references the original grammar definition where no changes were made. +

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[30p] Update1 ::= Prologue ( InsertData | DeleteData | DeleteWhere | Modify )
[38p] InsertData ::= 'INSERT DATA' '{' TripleData '}'
[39p] DeleteData ::= 'DELETE DATA' '{' TripleData '}'
[40p] DeleteWhere ::= 'DELETE WHERE' '{' TriplesTemplate '}'
[41p] Modify ::= ( DeleteClause InsertClause? | InsertClause ) 'WHERE' '{' TriplesTemplate '}'
[42p] DeleteClause ::= 'DELETE' '{' TriplesTemplate '}'
[43p] InsertClause ::= 'INSERT' '{' TriplesTemplate '}'
[52d] TripleData ::= TriplesDataSameSubject ( '.' TripleData? )?
[75d] TriplesDataSameSubject ::= GraphTerm PropertyDataListNotEmpty | TriplesDataNode PropertyDataList
[76d] PropertyDataList ::= PropertyDataListNotEmpty?
[77d] PropertyDataListNotEmpty ::= Verb ObjectDataList ( ';' ( Verb ObjectDataList )? )*
[78p] Verb ::= iri | 'a'
[79d] ObjectDataList ::= ObjectData ( ',' ObjectData )*
[80d] ObjectData ::= GraphDataNode
[98d] TriplesDataNode ::= CollectionData | BlankNodeDataPropertyList
[99d] BlankNodeDataPropertyList ::= '[' PropertyDataListNotEmpty ']'
[102d] CollectionData ::= '(' GraphDataNode+ ')'
[104d] GraphDataNode ::= GraphTerm | TriplesDataNode
+
+
+
+
+

References

@@ -1070,6 +1224,8 @@

Normative References

Registration Procedures for Message Header Fields. G. Klyne; M. Nottingham; J. Mogul. IETF. September 2004. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc3864
[RFC3986]
Uniform Resource Identifier (URI): Generic Syntax. T. Berners-Lee; R. Fielding; L. Masinter. IETF. January 2005. Internet Standard. URL: https://datatracker.ietf.org/doc/html/rfc3986
+
[RFC4918]
+
HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV). L. Dusseault, Ed.. IETF. June 2007. Proposed Standard. URL: https://datatracker.ietf.org/doc/html/rfc4918
[RFC5023]
The Atom Publishing Protocol. J. Gregorio, Ed.; B. de hOra, Ed.. IETF. October 2007. Proposed Standard. URL: https://datatracker.ietf.org/doc/html/rfc5023
[RFC5789]
@@ -1100,6 +1256,8 @@

Normative References

Web Linking. M. Nottingham. IETF. October 2017. Proposed Standard. URL: https://httpwg.org/specs/rfc8288.html
[SOLID-OIDC]
SOLID-OIDC. Aaron Coburn; elf Pavlik; Dmitri Zagidulin. W3C Solid Community Group. W3C Editor's Draft. URL: https://solid.github.io/solid-oidc/
+
[SPARQL]
+
SPARQL 1.1 Overview. The W3C SPARQL Working Group. W3C. 21 March 2013. W3C Recommendation. URL: https://www.w3.org/TR/sparql11-overview/
[Turtle]
RDF 1.1 Turtle. Eric Prud'hommeaux; Gavin Carothers. W3C. 25 February 2014. W3C Recommendation. URL: https://www.w3.org/TR/turtle/
[W3C-HTML]