W3C home > Mailing lists > Public > public-rdf-dawg@w3.org > April to June 2009

Re: Lee's feature proposal

From: Steve Harris <steve.harris@garlik.com>
Date: Tue, 5 May 2009 14:43:21 +0100
Cc: "Seaborne, Andy" <andy.seaborne@hp.com>, Lee Feigenbaum <lee@thefigtrees.net>, SPARQL Working Group <public-rdf-dawg@w3.org>
Message-Id: <74E62E95-C398-4726-8691-7B8165040EA0@garlik.com>
To: Axel Polleres <axel.polleres@deri.org>
On 5 May 2009, at 14:23, Axel Polleres wrote:
> I think the ASK subquery in FILTER solution is more intuitive than the
> OPTIONAL/!BOUND or OPTIONAL/boundchecker.ttl
> I personally would be perfectly fine with moving it there.
> Now my question should rather be: If we had ASK subqueries in  
> FILTERs, would we still need some extra surface syntax UNSAID or  
> isn't FILTER( !ASK ) sufficient alone?

Personally, I don't like having multiple syntaxes for the same thing.  
It's one of the things that makes SQL difficult to learn (and debug),  
as people are often taught the "," join syntax first, then they hit  
the JOIN syntax when they're taught left joins.

So, I'd prefer to have FILTER(!ASK ...) and not UNSAID.

You could argue for UNSAID and not subqueries in FILTER, but I can  
think of other uses for FILTER(ASK). Also, I may have got the wrong  
end of the stick, but it sounds like UNSAID { ... } would have  
unexpected scope behaviour from what Andy S. said in email when we  
discussed it briefly.

> Indeed, in order to avoid that, I am trying to identify concrete  
> parts of the currently discussed features that could be subsumed here.
> I think before we agree about the feature "surface syntax" we should  
> have these "sub-features" clearly identified and prioritised, that  
> is where I am trying to get.
>
> At the moment I think we have the following candidates, seen from  
> the discussions and from the feature description:
>
> - Surface syntax for Negation (translated into subqueries)
> - Surface syntax for LimitPerReseource (translated into subqueries)
> - Surface syntax for ProjectExpressions (translated into assignments)
> - Surface Syntax for disjunctions in FILTERs (IN ( ... ), BETWEEN  )
> - Surface Syntax for paths (operators for concatentation "/", reverse
>   path "^" and alternation "|")
> - Surface Syntax for expression lists (commas in SELECT ?a, ?b, ?c)

Some of these are sensitive to what we standardise, eg. "Surface  
syntax for ProjectExpressions (translated into assignments)" would  
make more sense as "Surface syntax for assignments (translated into  
ProjectExpressions)" - though that said, I still think an assignment  
syntax is a fantastically bad idea, even if it's just a macro ontop of  
a projection.

> If we opt for Surface syntax we should agree on whether and which of  
> these we want. Are there more candidates I forgot here?

Surely it depends on how far we get down the list of required/optional  
features, and what the syntax looks like.

If the subquery syntax is sufficiently horrible then we may want an  
UNSAID or LimitPerResource type notation, but if it's reasonable  
enough then there's no need. There is an educational cost to sugar, as  
above, which is all too easy to forget when you spend a lot of time  
with the language, so lets not decide now that were going to add sugar  
that we may not need after all.

- Steve
Received on Tuesday, 5 May 2009 13:43:55 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 16:15:38 GMT