Re: ISSUE-100: Should ld-patch use a slash like sparql does, instead of as it currently does?

On 08/18/2014 09:30 AM, Alexandre Bertails wrote:
> On Mon, Aug 18, 2014 at 12:00 PM, Sandro Hawke <sandro@w3.org> wrote:
>> On 08/18/2014 08:17 AM, Alexandre Bertails wrote:
>>> Just to be more precise, this concerns the path expressions [1]. There
>>> are already slashes being used there.
>>>
>>> So I guess Sandro's proposal is to make LD path expressions *look
>>> like* SPARQL property paths.
>>
>> That's not my proposal.
>>
>> In general my view is that when the semantics are the same, the syntax
>> should be the same, and when the semantics are different, the syntax should
>> be different.  I hope we would all agree with that, in principle.
>>
>> After that, it's details.   Important details, like whether the semantics
>> are the same.
>>
>> SPARQL as a path expression language and LD-Patch has path expression
>> language.   There is no question they have different expressiveness.    I
>> would argue that when they are saying the same thing, however, they should
>> use the same syntax.
>>
>> For example, "start with node <a> then follow the <p1> property twice, then
>> the <p2> property once".
>>
>> In SPARQL that looks like:
>>
>> <a> <p1>/<p1>/<p2>
>>
>> in LD-Patch that looks like:
>>
>> <a> /<p1>/<p1>/<p2>
> Let me give you the rationale behind that. Also note that you may
> understand better what's going on if you forget SPARQL for a moment
> and start with a fresh mind.

That's a pretty awkward place to start.     Is the spec going to say "if 
you already know SPARQL Property Paths (SPP), do your best to forget 
them before you read on"?

>
> If you look at the syntax and the abstract model, a path expression is
> a list of path elements (either steps or constraints). There are meant
> to be applied *to a set of nodes* (possibly with one element eg. the
> starting node in a Bind), from left to right, and recursively when
> nested.

I don't see this being different from SPP.

> In that context, / is an infix operator, the left hand side being a
> set of nodes, and right hand side being a step.

I think I understand, but it seems like a gratuitous change from SPP.

> The intuition is that when you see `node(s) / p1 / p2`, it means that
> you start with the current nodes and try to follow p1, this gives you
> a new set of nodes, on which you can now apply p2.

Same with SPP.

> Then you may object that this seems to not work anymore when used in
> constraints eg. `node(s) / p1 / p2 [ / p3 ]`. Actually, the set of
> nodes when in a constraint is there *implicitly*, a constraint being
> exactly like a higher-order function, whose argument is the set of
> nodes before getting into the constraint.

I'm not concerned with constraints for the purposes of issue-100.

> / is used consistently in the whole path, including its semantics.

I'm not saying it's internally inconsistent, just that it's gratuitously 
different from SPP, as far as I can tell.

I think it's very important that we borrow whichever bits of SPP work 
reasonably well for LD-Patch.

> Now again, same argument as last email, changing that would be a -0.9 for me.
>
>> The semantics are (arguably) the same; the syntax is extremely similar,
>> differing only in the leading slash.
>>
>> To me that difference is a show-stopper.  That's ISSUE-100.
> A show-stopper? As in -1 or -0.9 ?

I'm not going to -1 any design decisions here, but I think it's critical 
to answer the questions I raise above.  I'm entirely confident we'll 
have to answer them later with this design, and at that point it'll be 
much harder.

        - s

> Alexandre
>
>>        -- Sandro
>>
>>
>>
>>> But unlike SPARQL, LD path expressions can be nested, and include
>>> constraints. SPARQL does that with FILTER and new constraints in the
>>> BGP. The grouping in SPARQL (using parenthesis) is very different from
>>> the constraints (square brackets and exclamation mark).
>>>
>>> I think it's a bad idea to make them feel like they behave the same,
>>> which could be induced by the choice of the syntax.
>>>
>>> I don't want to stop the group with syntactical questions thought, so
>>> just a -0.9 for me.
>>>
>>> Alexandre
>>>
>>> [1]
>>> https://dvcs.w3.org/hg/ldpwg/raw-file/ldpatch/ldpatch.html#path-expression
>>>
>>> On Mon, Aug 18, 2014 at 10:59 AM, Linked Data Platform  Working Group
>>> Issue Tracker <sysbot+tracker@w3.org> wrote:
>>>> ISSUE-100: Should ld-patch use a slash like sparql does, instead of as it
>>>> currently does?
>>>>
>>>> http://www.w3.org/2012/ldp/track/issues/100
>>>>
>>>> Raised by:
>>>> On product:
>>>>
>>>>
>>>>
>>>>
>>>>

Received on Monday, 18 August 2014 16:55:12 UTC