- From: Andy Seaborne <andy@apache.org>
- Date: Mon, 18 Nov 2013 15:01:08 +0000
- To: public-rdf-wg@w3.org
On 18/11/13 10:22, RDF Working Group Issue Tracker wrote: > RDF-ISSUE-173 (TriG Collections): Bare collections in Turtle and TriG > > http://www.w3.org/2011/rdf-wg/track/issues/173 > > http://lists.w3.org/Archives/Public/public-rdf-comments/2013Nov/0041.html > > > This is a bug in the TriG grammar. The fix to align with Turtle is: [4g] triples2 ::= (blankNodePropertyList | collection) predicateObjectList? '.' ==> [4g] triples2 ::= blankNodePropertyList predicateObjectList? '.' | collection predicateObjectList '.' that is, makes predicateObjectList mandatory after a collection. The biggest problem in the area is that () is a legal 'collection' in Turtle/TriG. We want to allow: (1 2 3) :p "XYZ" . () :p "XYZ" . but not () . It is open as to whether (1 2 3) . is allowable (it is not in Turtle, it is in SPARQL - we knew this). NB - if you are looking at the SPARQL grammar, the 'collection' rule is one or more items, and in Turtle it's zero or more. SPARQL handles () as a token NIL. I am inclined to follow Turtle here. It is too late to add free standing collections -- (1 2 3) . -- to Turtle. It's not a trivial change. SPARQL, being about patterns, is not quite in the same situation. The SPARQL collection rule requires at least one element and the case of () is handled specially via the token NIL. This means that the use of triplesNode works and still excludes () . as a document. Directly using triplesNode in Turtle/TriG would allow () . The NIL / empty collection has repercussions throughout SPARQL 1.1 grammar -- the urtle grammar would have to grow to do the same. Andy Proposed response: ------------------------------------------- Richard, Thank you for your comment regarding collections in Turtle and TriG. The Working Group agrees that it is desirable that Turtle and TriG be aligned here and the Working Group wishes to avoid: () . being a legal document. There is a bug in the TriG grammar and the following change has been made to rule 4g of TriG: [4g] triples2 ::= (blankNodePropertyList | collection) predicateObjectList? '.' ==> [4g] triples2 ::= blankNodePropertyList predicateObjectList? '.' | collection predicateObjectList '.' A collection must be followed by a predicate-object-list as in Turtle. This removes ( 1 2 3 ) . as a legal TriG document. It also removes () . as a legal document. The 'collection' in TriG and Turtle rule allows the empty collection () which is no triples. To go further and to keep alignment, requires significant changes to Turtle which the working group does not have the time to execute on even if there were general agreement it is desirable change to the language. If this addresses your comment, please reply with the subject prefixed by "[RESOLVED]". Andy on behalf of the RDF Working Group (also involved in the development of the SPARQL Grammar)
Received on Monday, 18 November 2013 15:01:39 UTC