W3C home > Mailing lists > Public > public-sparql-dev@w3.org > October to December 2015

Re: CONSTRUCT an RDF Datest

From: Andy Seaborne <andy@apache.org>
Date: Sun, 29 Nov 2015 21:27:55 +0000
To: public-sparql-dev@w3.org
Message-ID: <565B6DDB.60802@apache.org>
On 29/11/15 19:24, james anderson wrote:
> good evening;
>
>> On 2015-11-29, at 16:04, Andy Seaborne <andy@apache.org
>> <mailto:andy@apache.org>> wrote:
>>
>> On 29/11/15 11:33, james anderson wrote:
>>> good morning;
>>>
>>>> On 2015-11-29, at 11:33, Andy Seaborne <andy@apache.org
>>>> <mailto:andy@apache.org>> wrote:
>>>> […]
>>>>
>>>>>
>>>>> Is there any theoretical or technical obstacle to this?
>>>>
>>>> There's no obstacle.  A Google Summer of Code project added this to
>>>> Apache Jena this year and it'll be in the next release.
>>>>
>>>> It follows the design you gave:
>>>>
>>>> https://jena.apache.org/documentation/query/construct-quad.html
>>>
>>> while a quite reasonable extension proposal and one which leads one
>>> to wonder why it was left out of the 1.1 recommendation, there are
>>> questions.
>>
>> Many reasons:
>>
>> No standardized syntax and MIME type.
>>  SPARQL 1.1 predates standardized Trig and N-quads - indeed,
>>  "RDF Dataset" was not in RDF - it was only in SPARQL.
>>
>> Limited resources. Limited time.  Limited interest.
>> http://www.w3.org/TR/sparql-features/
>>
>>> - what identifier does arq intend to us in the service description to
>>> indicate its support
>>> - as a matter of interoperability, is the elided graph case in the
>>> “complete form” example really in instance of the grammar which
>>> appears later in the document? given the example, this reader would
>>> have expected a production of the form
>>>    ( 'GRAPH’ )? VarOrIri '{' TriplesTemplate? ‘}’
>>
>> i.e. "TriG-with-variables", rather than SPARQL Update quad blocks.
>
> should i take the absence of a response on the question of the actual
> grammar to mean that my correction, above, is actually correct?

As implemented currently in Jena, the grammar is right, the example in 
the main jena web site looks iffy.

What you describe is a step towards "TriG-with-variables".  TriG 
post-dates the SPARQL grammar.  IIRC TriG was standardised to cover 
SPARQL-like and it's own traditional form usage.

In TriG, the default graph can be inside {} hence the superset of TriG 
and of SPARQL Update quad blocks is something like: (untested)

ConstructBraceBlock
   ::= ( ('GRAPH')? VarOrIriOrBlankNode )? '{' TriplesTemplate? '}'

TriG [2g] and [3g] seem to unwind that into something easier but that 
would need the more extensive changes to the SPARQL grammar which has 
consequences making beyond the project possibilities.

>>
>>> - which end does the elision serve?
>>
>> Thank you to Google for funding the work of Qihong Lin.
>>
>> Getting the project finished in time matters. GSoC projects are fixed
>> length.
>>
>> It is also desirable for it to be a simple extension for everyone but
>> it is not incremental to add and remain LL(1) AKA easy parsing (it's 3
>> separate additional local LL(2) changes I think); obviously it is
>> possible to do convert LL(2) to LL(1) but it needs rewriting all the
>> template rules, making it not a just local change in one rule.
>>
>> Not everyone is using the same parser generator (ARQ uses javacc so
>> lots of bells and whistles here like variable local lookahead).  The
>> GRAPH implementation is a local change in one part of the grammar.
>>
>> When in standards mode (default), the grammar remains what is in the
>> spec, not something supposedly equivalent.
>
> those are all circumstantial contingencies.
>
> should i understand from that list that there was the only function
> motivation was the “trig with variables”, above?
>
> best regards, from berlin,
> ---
> james anderson | james@dydra.com <mailto:james@dydra.com> | http://dydra.com
>
>
>
>
>
Received on Sunday, 29 November 2015 21:28:28 UTC

This archive was generated by hypermail 2.3.1 : Sunday, 29 November 2015 21:28:29 UTC