Skip to content
This repository was archived by the owner on Jul 6, 2020. It is now read-only.
This repository was archived by the owner on Jul 6, 2020. It is now read-only.

Lightweight semaphore mechanism #3

@kjetilk

Description

@kjetilk

@timbl suggested in his RWW Design Issue that DELETE INSERT WHERE queries could be used for a semaphore mechanism, so that if the DELETE part fails, a conflict flag should be raised.

I think the mechanism can be illustrated with simpler DELETE DATA/INSERT DATA queries, so here's my description:

Say that client 1 goes:

DELETE DATA { <foo> <baz> "Dahut" } ;
INSERT DATA { <foo> <baz> "Bar" }

independently, client 2 goes

DELETE DATA { <foo> <baz> "Dahut" } ;
INSERT DATA { <foo> <baz> "Foobar" }

before the first client as finished. In that case, the Solid implementation
would return a 409 Conflict to the second client.

There are a few problems, as noted in solid/solid-spec#193 it is a willful violation of the SPARQL 1.1 specification, which says:

Deleting triples that are not present, or from a graph that is not present will have no effect and will result in success.

Moreover, reporting a success or failure status to DELETE queries are problematic from a confidentiality perspective, as is the topic of #2 .

Metadata

Metadata

Assignees

No one assigned

    Labels

    HTTP PATCH bodySPARQL UPDATE query used as body of HTTP PATCH request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions