In order to consider Fedora's REST API functionally complete, we need to have built-in support for adding, modifying, and removing RDF relationships.

h1. Notes from 11/3 Committer Meeting

HTTP PUT/POST to RELS-EXT/INT.
SPARQL Update
URL Parameter, "kind of update" (possibly could be trigger)
....could be alternative to mime type (some clients can't control headers well)
Validation would happen.
Have it use fedora-system:sdef...accept a POST.
Doesn't require that we do it in the general case.
PUT should be idempotent (to replace the entire datastream)
POST has no such requirement (so to add/delete specific relationships)
Important: Make sense of it for users

h1. Strawman Proposal

Define a generic method (or set of methods) for applying partial changes to datastreams.

Implement it for RELS-EXT and RELS-INT so that additions and deletions can be made via SPARQL update.

Example:
* HTTP Verb: PUT
* URL: /objects/{pid}/fedora-system:/updateDatastream?dsID={dsID}&type=sparql-update
* Body: A SPARQL/Update document (UTF-8?) to apply to the datastream
* Successful response:
** Code: 201
** Location: URL to datastream
* Failed response:
** If datastream doesn't exist: TBD
** If input document is malformed: TBD
**