SPARQL: graph syntax should be N3 subset

Reading the 2004/10/13 draft of SPARQL.

The grammar for SPARQL frequently involves graph patterns.   These 
should use the N3 grammar, specifically a subset at a level to the 
subset known as Turtle.

There advantages to the languages overlapping.

- Cuts the learning curve for people learning SPARQL and N3.
- Allows code sharing for those implementing both languages
- Allows data to be searched for to be pasted into a query.
- Allows one to create some example data, view it as N3, and then paste 
it into the 'construct' clause, replacing a few values with variables.

N3 is a very suitable syntax for this:

- N3 has commonly used subsets Turtle and NTriples which are widely 
- N3 is a syntax which meets exactly the same goals as SPARQL, in being 
concise and human-friendly representation of a graph with variables;
- N3 has been used in the SPARQL document itself for readability for 
the data.
- N3 has evolved in response to community needs in the RDF Interest 
Group and SW Interest Group.

N3 has come a long way since it started as a triples language:

- The comma and semicolon were added very early on a shortcuts making 
both reading and writing easier when subject [and predicate] are 
repeated.   While it is true that SPARQL's current individual triples 
form is simpler, I strongly believe that the users would tired of it 
once they become familiar with it.  (Similarly, the list construct for 
collections makes it possible to actually use lists in practice, where 
elaborations in terms of rdf:first and rdf:rest are impractically 

- The grammar of the language is now defined in a context-free grammar 
in RDF itself.

- Much of the actual nitty-gritty questions about the language involved 
details of tokenizing, sets of characters allowed for identifiers, and 
escaping.  The hassle comes from coordinating the XML, and N3 at the 
NTriples, Turtle and N3 levels, and all the parsers involved.  To have 
to add another randomly different language to this mix will make it 
more difficult.

- The only significant change which has been proposed is to add syntax 
for unordered sets similar to that for ordered collections.

This is a strong suggestion.  I believe that the community will be best 
served in making this change, and doing so as soon as possible.

It may be that at the same time we should plan for the standardization 
of N3 itself, with spcific view to keeping Ntriples Turtle SqarQL and 
N3 full in sync.

Tim Berners-Lee


If this is done, the N3 syntax could be extended to include the 
keyword-style which the group seems to prefer for SPARQL. Assuming an 
N3 semantics for SPARQL exists, then the sparql keywords could be 
deemed to add extra syntactic shortcuts to the language.

@keywords select, from, where, prefix, option.

prefix   soc: <whatever>.
select   ?x, ?y, ?z
from     <mydata.rdf>
	?x    a soc:Person;
		phone:number   "+1 781 555 1212";
		fam:sister	?y.
        ?y   phone:number ?z.

Making SPARQL a subset of N3 would allow a SPARQL query to be quoted in 
an N3 document, which would allow it to be carried as a payload in more 
complex things, which might for example provide extra metadata about a 

Received on Monday, 29 November 2004 20:36:43 UTC