- From: Andy Seaborne <andy.seaborne@epimorphics.com>
- Date: Tue, 01 May 2012 09:10:52 +0100
- To: public-rdf-dawg@w3.org
On 30/04/12 18:02, Steve Harris wrote:
> On 30 Apr 2012, at 13:27, Andy Seaborne wrote:
>
>>
>>
>> On 30/04/12 13:12, Eric Prud'hommeaux wrote:
>>
>>> This seems like a balance between consistency and convenience. It's
>>> grammatically distinguishable in LL/LALR(1) with this patch:
>>>
>>> -[29] DataBlock ::= Var* '{' ( '(' DataBlockValue* ')' | NIL )* '}'
>>> +[29] DataBlock ::= '(' Var* ')' '{' ( '(' DataBlockValue* ')' | NIL )* '}'
>>> | Var '{' DataBlockValue* '}'
>>>
>>> IMO, it actually adds some consistency by sticking parens around the
>>> var list.
>>
>>
>> Rest assured that the worked example is also a working example! I added the feature as an extension to ARQ and it parses OK (including for the GraphPatternNotTriples which is the more senstive-to-change area).
>>
>> (Speculative thoughts from here)
>>
>>> One problem with "DATA" is that SPARQL's data is RDF triples, not
>>> variable bindings. Practically, we may some day want to add premises
>>> like:
>>
>> Using the FROM clause would seem good here:
>>
>>> DATA { :Fido a :Dog }
>>> SELECT ?mammal { ?mammal a :Mammal }
>>
>> SELECT ?mammal { ?mammal a :Mammal }
>> FROM DATA { :Fido a :Dog }
>>
>> or
>>
>> SELECT ?mammal { ?mammal a :Mammal }
>> FROM { :Fido a :Dog }
>
> I agree with Eric, I think DATA is a bad choice of word here.
>
> I prefer BINDINGS to DATA - BINDINGS is more similar to BIND () than it is to DATA { … }, which should help people trying to learn.
>
> If we want to avoid strings starting lexically with BIND, then maybe VALUES? À la SQL.
VALUES works for me.
Just for completeness, we could use syntax and
splash out [*] on new delimiter tokens e.g. "{|" "|}"
{| ?x <a> <b> <c> |}
{| (?x ?y)
(<a> 123)
(<b> 456)
(<c> 789)
|}
Andy
[*] Sorry about that - to say it's raining here at the moment is
understatement.
>
> - Steve
>
Received on Tuesday, 1 May 2012 08:11:21 UTC