- From: <SOURIPRIYA.DAS@ORACLE.COM>
- Date: Thu, 22 Feb 2007 01:43:14 +0000 (GMT)
- To: andy.seaborne@hp.com
- Cc: public-rdf-dawg@w3.org
> > ? One way to fix the instances of illegal use (enumerated below) probably
> > would be to allow use of ?.? optionally as a terminator for (the last triple
> > of) a <Bgp>.
>
> These uses aren't illegal as noted.
>
> > o I am okay with that workaround. However, for simplicity, my preferred
> > solution would be to require use of ?.? as a (mandatory) terminator for each
> > triple (thus requiring a ?.? at the end of each <Bgp> as well unlike the R1
> > rule above used currently) and maybe also for each <NonTriplesgp> (thus
> > requiring, unlike the optional nature of rule R3 above, a ?.? at the end of
> > each <constraint>, <OPTIONALgp>, etc.).
> >
The workaround I was suggesting was already present. I somehow managed to skip that :-). Thanks for poining that out.
Regarding the preferred solution I had mentioned, I am not sure if you got a chance to consider it. In terms of Revision 1.18 grammar, it would roughly translate to:
- adding a (mandatory) '.' after RHS of rules 32,23,24,25,26
[32] TriplesSameSubject ::= (VarOrTerm PropertyListNotEmpty | TriplesNode PropertyList) '.'
[23] OptionalGraphPattern ::= 'OPTIONAL' GroupGraphPattern '.'
[24] GraphGraphPattern ::= 'GRAPH' VarOrIRIref GroupGraphPattern '.'
[25] GroupOrUnionGraphPattern ::= GroupGraphPattern ( 'UNION' GroupGraphPattern )* '.'
[26] Filter ::= 'FILTER' Constraint '.'
- removing the corresponding uses of '.' as separator or optional terminator from the relevant rules (e.g., rules 20, 21, 31).
I feel that this could make the where-clause a bit simpler both for composing and understanding because the '.' will appear like the end-marker of an English sentence.
Thanks,
- Souri.
--- Original Message ---
>
>
> Seaborne, Andy wrote:
> > (text version - not everyone can easily work with doc files)
> >
> > SOURIPRIYA.DAS@ORACLE.COM wrote:
> >> I have attached a few review comments on rq25. Thanks. -- Souri.
>
> Thanks for the comments
>
> >
> > I looked at the syntax of GroupGraphPattern (<Ggp>, for short) and its use in
> > the examples in the ?Revision 1.13? (Date 2007/02/16, 18:06:24 hrs) version of
> > ?SPARQL Query Language for RDF? document. Here are my comments:
> >
> > Summary:
> > ? Based on the current grammar, <Ggp> probably can be expressed as a regular
> > expression:
> >
> > <Ggp> := `{` <Bgp>? (<NonTriplesgp> ?.?? <Bgp>?)* ?}?
> >
> > or equivalently (using some self-explanatory notations and with grammar rule
> > [32] for GroupOrUniongp broken up for using Ggp and UNIONgp)
>
> The SPARQL grammar is LL(1) so that it can be used by the
> widest possible set
> of compiler tools. LL(1) allows simple tools, more sophisticated
> LL and
> hybrid tools, as well as LALR(1) tools to use the grammar.
>
> A consequence of this is there sometimes needs to be a technical,
> intermediate
> extra parser state - this is GroupOrUnionGraphPattern. Just
> written
> straight, it needs a lookahead of 2 for LL.
>
> The GroupOrUnionGraphPattern is a rule that means a parser
> does not have to
> look over the first {}-group to see if there is a UNION to
> determine whether a
> UNION or just a Group has been encountered. Instead it ends
> an intermediate
> rule that covers both cases. This is a standard way to reduce
> to LL(1).
>
> >
> > <Ggp> := `{` <Bgp>?
> > (
> > (<constraint> | <OPTIONALgp> | <UNIONgp> | <GRAPHgp> | <Ggp>)
> > ?.??
> > <Bgp>?
> > )*
> > ?}?
>
> Changes in progress:
>
> 1/ The BasicGraphPattern rule name will change to TriplesBlock
> because of the
> WG decision that filters don't break up a BGP anymore.
> 2/ Filter is not in GraphPatternNotTriples because it does not
> break up a BGP
> anymore.
>
> Removing the recursion would be good. I've taken your rewrite
> and put it into
> the development version of grammar, along with the other changes
> in progress
> and get:
>
> GroupGraphPattern ::= '{'
> TriplesBlock?
> (
> ( GraphPatternNotTriples | Filter
> ) '.'?
> TriplesBlock?
> )*
> '}'
>
>
> I have also removed rcursion for ObjectList and PropertyList.
>
> I haven't worked out a way for TriplesBlock without it allowing
> adjacent DOTs
> between triples of different subjects (ditto ConstructTriples).
> Suggestions
> welcome!
>
> The development grammar passes the current set of 192 syntax
> tests.
>
> > ? Separator vs. Terminator: Based on the current grammar, rules for use (or
> > non-use) of ?.? are the following:
> >
> > o [R1] Mandatory use as a separator between triples in a <Bgp>
> > o [R2] Must not be used as a terminator for the last triple in a <Bgp> (or as
> > a separator between the last triple of a <Bgp> and an immediately following
> > <NonTriplesgp>).
>
> This is legal. We follow Turtle/N3 - the final dot of a BGP
> is optional.
>
> TriplesBlock ::= TriplesSameSubject ( '.' TriplesBlock? )?
>
> Tests show this:
>
> http://www.w3.org/2001/sw/DataAccess/tests/data-r2/syntax-sparql1/syntax-basic-05.rq
> http://www.w3.org/2001/sw/DataAccess/tests/data-r2/syntax-sparql1/syntax-basic-06.rq
>
> http://www.w3.org/2001/sw/DataAccess/tests/data-r2/syntax-sparql1/syntax-struct-03.rq
> http://www.w3.org/2001/sw/DataAccess/tests/data-r2/syntax-sparql1/syntax-struct-05.rq
> http://www.w3.org/2001/sw/DataAccess/tests/data-r2/syntax-sparql1/syntax-struct-06.rq
>
> > o [R3] Optional use as a terminator for <NonTriplesgp>.
> > ? One way to fix the instances of illegal use (enumerated below) probably
> > would be to allow use of ?.? optionally as a terminator for (the last triple
> > of) a <Bgp>.
>
> These uses aren't illegal as noted.
>
> > o I am okay with that workaround. However, for simplicity, my preferred
> > solution would be to require use of ?.? as a (mandatory) terminator for each
> > triple (thus requiring a ?.? at the end of each <Bgp> as well unlike the R1
> > rule above used currently) and maybe also for each <NonTriplesgp> (thus
> > requiring, unlike the optional nature of rule R3 above, a ?.? at the end of
> > each <constraint>, <OPTIONALgp>, etc.).
> >
> > Instances of illegal use of ?.? in GroupGraphPatterns used in examples [NOTE:
> > All of these instances are violations of rule R2 above]:
> > ? The example in Sec 2.1 (on page 7) uses ?.? as a terminator.
>
> That is in the Turtle data. The query does not have a tailing
> dot on the BGP
> (but it would be legal).
>
> > ? The example in Sec 3.2 (on page 11) uses ?.? as a separator between a triple
> > and a non-triple (FILTER, in this case).
> > ? The example in Sec 3.2 (on page 11) uses ?.? as a terminator (for the last
> > triple).
> > ? Both the examples in Sec 5.2 (on page 18) use ?.? as terminator (for the
> > respective last triples).
> > ? The three examples in Sec 5.4 (on page 19) use ?.? as terminator and/or as
> > separator between a triple and an immediately following non-triple.
> > ? Same problem with the examples in Sec 5.5 (on page 19).
> > ? Same problem with the query in Sec 6.1 (on page 21).
> > ? Same problem with the example in Sec 6.2 (on page 21). The problem exists
> > inside the <OPTIONALgp> as well.
> > ? Same problem with the example in Sec 6.3 (on page 22).
> > ? Same problem with the example in Sec 6.4 (on page 22).
> > ? Same problem with the example in Sec 8.2.3 (on page 28).
> > ? The example in Sec 8.3.3 (on page 30) uses ?.? as terminator for the last
> > triple in the first <GRAPHgp>.
> > ? The example in Sec 8.3.4 (on page 31) uses ?.? as separator between <Bgp>
> > and <GRAPHgp>.
> > ? The example in Sec 10.1 (on page 35) uses ?.? as separator between <Bgp> and
> > <OPTIONALgp>.
> > ? The example in Sec 10.2.3 (on page 38) uses ?.? as terminator for the last
> > triple in the <Bgp>.
> > ? The example in Sec 11 (on page 41, before Sec 11.1) uses ?.? as a separator
> > between <Bgp> and <constraint>.
> > ? Same problem with the examples in Sec 11.4 and Sec 11.6.
>
> Thanks for comments and suggestion for removing the recursion,
> Andy
>
Received on Thursday, 22 February 2007 01:43:23 UTC