Re: Comments on Linked Data Patch Format FWPD

On 2014-09 -26, at 15:31, Alexandre Bertails <alexandre@bertails.org> wrote:

> Hi Tim,
> 
> Thanks for the review. Please find my comments in line.
> 
> On Fri, Sep 26, 2014 at 5:17 AM, Tim Berners-Lee <timbl@w3.org> wrote:
>> Arnaud et al
>> 
>> Here some immediate technical comments on
>> http://www.w3.org/TR/2014/WD-ldpatch-20140918/
>> 
>> 1) " then the server must not apply any of the changes."  What HTTP error code is then returned?  You must spec the little network protocol bits here I think. Or is that in LDP already?
> 
> It may not always be clear in this FPWD but the semantics of the
> request at the HTTP level is already defined in RFC 5789. That phrase
> was actually copied from there.
> 
> Error handling is defined at http://tools.ietf.org/html/rfc5789#section-2.2 .
> 
> I agree that the connection must be made more explicit. We could
> provide a section with examples of HTTP PATCH interactions, including
> failing ones.
> 
>> 
>> 2) - Why do some production names are in bold in the concrete syntax and some not?
> 
> No idea. We will fix that.
> 
>> 
>> 3) Step ::= '/' ( '^' iri | iri | INDEX )         eh?    Do you mean  Step ::=   (  '/'  '^'?    iri )   iri   |   INDEX
> 
> A Step is when you move your pointer. A Step is introduced with '/'.



Sorry ignore my comment (3) .. I missed parsed the spec.

> 
> Then you find the 3 possibilities: StepBackward, StepForward, and
> StepAt. These options are informally introduced in [1].
> 
> [1] http://www.w3.org/TR/2014/WD-ldpatch-20140918/#path-expression
> 
>> 
>> 4) "The Bind operation is used to create a new variable by binding or assigning an RDF Term to the variable."
>> Do you mean one or many?  Happy with either, both have their uses. I thought I saw many allowed somewhere in the document.
>> Probably veer toward many, for consistency with SPARQL.  You have a unicity operator for
> 
> Only one. This will be very clear in the formal semantics (coming
> soon) but could be made more explicit in the informative section.

good


> If you see LD Patch as a diff (you should), a variable being a set of
> nodes (1 node or more, not 0) changes the semantics quite a lot.
> 
>> 
>> 5)   Add s  p o  vs.   insert { ... }   I  prefer the latter I must say
>> --- why be arbitrarily different from SPARQL, turtle, etc?
> 
> Actually, it is arbitrary similar to RDF Patch [2] :-) Pierre-Antoine
> did mention where he was coming from in his proposal.
> 
> As for supporting both "Add" and "A", this is actually from... you!
> Andrei and I were showing you Pierre-Antoine's solution after the last
> F2F in Boston, and you suggested that you would prefer to see the
> entire word if possible :-)

yes by analogy with other languages and readability

> 
> [2] http://afs.github.io/rdf-patch/#further-rdf-patch-examples
> 
>> --- I already have a { stuff } parser as do many people
>> --- it is a pain to have to write a separate line for each
>> -- I'd like to use [] for bnodes in the insert bit.
> 
> That would not change the semantics, but it would make the syntax a
> superset of Turtle. So more work if one is starting with the grammar
> from scratch.

Yes.
I think a significant community is starting with turtle though.

> 
> I am personally not against that, but you have to understand that this
> a departure from the original design: LD Patch started as being syntax
> compatible with RDF Patch, and added just what was needed for the LDP
> use-case (bnode and rdf:list support).

Yes, sorry I have not really followed RDF patch.
I have myself just used N3 without any extra parsing being necessary at all.


> Feel free to insist on that, and I am asking others to voice their
> opinion as well. I would prefer this change to be formally approved by
> the group. But I don't see good reasons for not doing it.
> 

I feel turtle has a lot of mindshare, and software.


>> 6)  The '!' constraint: with the uniqueness constraint,  if the test fails, is that an error and the whole thing is aborted, or that brach of the query is silently abandoned? "Is it select all those people with one home." or "select all people. Assert a person only has one home".   Or is it "Just pick any one and proceed".
> 
> Another example of something that can be improved in the informative
> section, and that will be super explicit in the formal semantics.
> 
> The editors all agreed that silent failure would always be avoided in
> LD Patch. If something doesn't match, then it's an error.
> 
> So in the case of a failing '!' constraint, it is seen as a runtime
> error, so per RFC 5789 the whole query fails.

Ok, so I would send a 409.

I am wondering whether I can get away with the constraint that Bind only bind to one thing
and not needing the intermediate "!" constraint.

Can you give an example of when the overall unicity of Bind is not enough?
It would be useful to turn the path into a pattern though it at an existing query engine, and just check you get one set of bindings back.  Otherwise you have to break out into special LDPATCH code in the middle.


> 
>> 
>> 7) Maybe :: or some thing as a index operator, not just a space.   The conventional [] are overused already, of course.
> 
> Can you please clarify? I am not sure to understand what you mean.
> Maybe an example?

See future comments on Pierre-Antoine's mail 

Tim

> 
> Cheers,
> 
> Alexandre
> 
>> 
>> My 2¢ worth anyway
>> 
>> Tim
>> 
>> Developer hat on
>> Director hat off
>> 
>> 
>> 
>> 
> 

Received on Wednesday, 1 October 2014 14:51:30 UTC