- From: Sandro Hawke <sandro@w3.org>
- Date: Mon, 18 Aug 2014 09:55:04 -0700
- To: Alexandre Bertails <alexandre@bertails.org>
- CC: Linked Data Platform Working Group <public-ldp-wg@w3.org>
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