TriG compatibility with N-Quads

Has any consideration been given to making N-Quads a subset 
of TriG?  Given the effort that seems to have been gone to 
to make TriG compatible with Turtle and SPARQL, it seems a 
little surprising that it is not also compatible with 
N-Quads.

Making TriG compatible with the current N-Quads isn't 
complicated.  Just allow another labelOrSubject after the 
predicateOnjectList in production [3g] triplesOrGraph. 
I.e. change it to read:

   [3g]  triplesOrGraph  ::=  labelOrSubject (wrappedGraph
                | predicateObjectList labelOrSubject? '.')

And for symmetry, something similar should perhaps be done 
in [4g] triples2, though it is not required for N-Quads 
compatibility and involves a disambiguation between a verb 
and a label:

   [ a foaf:Person ] <graph1> .
   [ a foaf:Person ] dc:name "John" .

That's entirely do-able while remaining LALR(1) and LL(1): 
it's the same problem as disambiguating labelOrSubject.


Changing N-Quads would have been cleaner, but I assume is 
not feasible as N-Quads has been in use five years since the 
publication of <http://sw.deri.org/2008/07/n-quads/>.  With 
a free reign, I would have suggested moving the graph label 
to the start of the quad and wrapping the triple in braces, 
per TriG.  Or alternatively, use some symbol like ':=' to 
separate the label from the subject.  But I accept that 
isn't possible.


Richard

Received on Sunday, 17 November 2013 19:32:45 UTC