W3C home > Mailing lists > Public > public-rdf-comments@w3.org > November 2013

Re: Bare collections in Turtle and TriG

From: Andy Seaborne <andy@apache.org>
Date: Mon, 18 Nov 2013 10:24:15 +0000
Message-ID: <5289EACF.30902@apache.org>
To: public-rdf-comments@w3.org
Richard,

Thank you for your comment.  I've recorded this as RDF WG Issue 173.

https://www.w3.org/2011/rdf-wg/track/issues/173

We'll get back to you as we can.

	Andy

On 17/11/13 17:49, Richard Smith wrote:
>
> The following is not a valid Turtle document, per the candidate
> recommendation:
>
>    ( :foo :bar ) .
>
> This is because a collection can only appear as the subject of a
> statement in Turtle.
>
> The same document is a valid TriG document as it matches the triples2
> production in the grammar.
>
> It seems desirable that both TriG and Turtle should do the same thing
> here, and in general that any valid TriG document that does not use the
> { ... } construct should be a valid Turtle document.
>
> SPARQL 1.0 allows bare collections that are not the subject of a
> statement, and that is now a stable recommendation.  It therefore seems
> best to conform to that by allowing bare collections in both TriG and
> Turtle.
>
>
> In TriG, if it the collection is placed inside a wrapped graph in TriG,
> it is no longer valid:
>
>    GRAPH { ( :foo :bar ) }
>
> This is directly incompatible with SPARQL 1.0, and for that reason
> should be fixed.  It also introduces a surprising difference between
> implicit and explicit use of the default graph.
>
>
> Bare collections are potentially useful as they do generate RDF
> statements.  So I think the right solution is to allow bare collections
> in both languages, inside and outside of wrapped graphs.  The simplest
> way of fixing this seems to me to be to redefine the following grammar
> productions:
>
> Currently in Turtle:
>
>    [6]   triples     ::= subject predicateObjectList
>                            | blankNodePropertyList predicateObjectList?
>    [10]  subject     ::= iri | BlankNode | colection
>
>
> Proposed in Turtle:
>
>    [6]   triples     ::= subject predicateObjectList
>                            | triplesNode predicateObjectList?
>    [10]  subject     ::= iri | BlankNode
>    [NN]  triplesNode ::= blankNodePropertyList | collection
>
> The name 'triplesNode' is chosen because the corresponding grammar
> production in SPARQL is called TriplesNode.
>
> The same change to the same grammar productions will fix TriG.  However
> it may be desirable at the same time to:
>
>    1) change [4g] triples2 to reference the new triplesNode
>       production;
>
>    2) delete production [7g] labelOrSubject and replace its
>       use with subject, as the two are now identical; and
>
>    3) delete production [14] blank and expand its sole use
>       in [12] object because (i) it has a misleading name,
>       (ii) it causes the definition of object to differ
>       (albeit cosmetically) between TriG and Turtle, and
>       (iii) it is misnumbered (it should have a 'g' suffix)
>       and throws out the correspondence between production
>       numbers in Turtle and TriG.
>
>
> Richard
>
Received on Monday, 18 November 2013 10:24:45 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 20:29:58 UTC