Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OTW: SPS2003 XML Import-Export “Operation” Attribute - 8 content operations #235

Closed
mwherman2000 opened this issue Feb 12, 2021 · 4 comments

Comments

@mwherman2000
Copy link

Off The Wall: I've been loosely following the discussion about different operators/verbs/operations for working with resources in a Solid pod. In my experience with a lot of content migration and content replication platforms, there's actually 8 different content operations:

  1. operation=”create”
  2. operation=”delete”
  3. operation=”remove”
  4. operation=”replace”
  5. operation=”update”
  6. operation=”add”
  7. operation=”merge”
  8. operation=”ignore”

Are all 8 variations accounted for in the Specification?

Reference: PSN TN0028: SPS2003 XML Import-Export “Operation” Attribute

@csarven
Copy link
Member

csarven commented Feb 14, 2021

re "content operations", the Protocol specification can cover operations on RDF graphs, however not for any data format eg. the Protocol does not specify (or require) how a client can insert 24 frames at t=1978 of a movie object. Servers are free to independently support content operations on any data type.

For strict "content operations" (ie. excluding operations on Web resources), one way is as follows:

Client can use HTTP PATCH (with Content-Type: application/sparql-update) to request RDF graph update operations, ie. to add or remove triple statements, that can be observed in the representation of a resource. The payload of the request follows SPARQL 1.1 Update: https://www.w3.org/TR/sparql11-update/ .

INSERT DATA can be used for "create", "add", "merge", "ignore" operations
DELETE DATA can be used for "delete", "remove", "ignore" operations.
INSERT DATA + DELETE DATA can be used for "replace", "update" operations.

Here "ignore" would entail that the RDF graph didn't change eg. inserting a duplicate statement or there was no matching statement to remove.

Although not yet required but probably will at some point: HTTP POST can be used to merge RDF statements. Servers can optionally support this today.

HTTP PUT could also be used but it is towards creating or replacing Web resources. What constitutes each of the "content operations" there would be processed or interpreted separately by a server. For example, server may reject/ignore a request to change a server-managed statement.


If you're generally satisfied with this answer, can we close this issue? If there are use cases that the Protocol must be able support, issues are most welcome.

@csarven
Copy link
Member

csarven commented Feb 16, 2021

Taking the thumbs up reaction to the comment above as satisfactory. Closing the issue.

@mwherman2000
Copy link
Author

A thumbs up that the issue was acknowledged in detail.

@csarven How can/will the 8 operations be added/encoded into the spec?

@csarven
Copy link
Member

csarven commented Feb 16, 2021

The Solid Protocol most likely will not express each requirement strictly using those 8 operations, although it may use those terms non-normatively as it needs to.

The Solid Protocol for the time being covers/defines the read, write, append operations, and possibly the delete operation soon. Useful enough terms to communicate - not intended to be a 1-1 mapping to all functions. The definitions for the operations are based on existing issues in this repository. The operations are loosely coupled with HTTP verbs (and their affordances) as well as the Web Access Control system. So, the spec is not at all trying to introduce a new "operation" above and beyond what's already well defined and used out there.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants