- From: Gregg Kellogg <gregg@greggkellogg.net>
- Date: Sat, 15 Jun 2013 14:13:15 -0700
- To: Andy Seaborne <andy@apache.org>
- Cc: RDF-WG <public-rdf-wg@w3.org>
On Jun 15, 2013, at 12:54 PM, Andy Seaborne <andy@apache.org> wrote:
> The TriG showed up one issue with the TriG grammar.
>
> In "traditional" TriG, and in SPARQL and N3, the final DOT in a {...} is optional making this legal:
>
> { :s :p :o }
>
> It is illegal by the current TriG grammar which requires a trailing DOT
>
> Two bad syntax tests show this:
>
> ** trig-syntax-bad-struct-08
> ----
> # No DOT
> {<http://example/s> <http://example/p> <http://example/o>}
> ----
>
> ** trig-syntax-bad-struct-11
> ----
> # Trailing ;
> {<http://example/s> <http://example/p> <http://example/o> ;}
> ----
> because in Turtle
>
> <s> <p> <o>; .
>
> is legal turtle (it's quite useful for repeated lines to always terminate with ";" and not have to worry about the last line being special -- the Turtle test manifest uses this).
>
>
> The grammar rule affected is TriG [3g]
>
> Currently:
> [3g] graph ::= graphIri? '{' (triples '.')* '}'
>
> A change would be:
>
> [3g] graph ::= graphIri? '{' triplesBlock? '}'
> [] triplesBlock ::= triples ('.' triplesBlock?)?
>
> which is recursive; it is at least contained to a single rule -- it's how SPARQL 1.0 writes it so it should be reasonable for everyone.
>
> Andy
+1
I also did a minor update to allow BlankNode graph names:
[3g] graph ::= graphName "{" (triples ".")* "}" | "{" (triples ".")* "}"
[4g] graphName ::= iri | BlankNode
Gregg
> PS This not not new - see also, from Gregg:
>
> http://lists.w3.org/Archives/Public/public-rdf-comments/2011Dec/0012.html
>
> there, [6] allows multiple adjacent DOTs:
>
> [6] triples ::=
> subject predicateObjectList ( "." ( subject predicateObjectList)? )*
>
> matches
>
> :s :p :o1 .... :s :p :o2 ..
Wow, I had forgotten about this.
Received on Saturday, 15 June 2013 21:13:45 UTC