- From: Andy Seaborne <andy.seaborne@epimorphics.com>
- Date: Thu, 30 Sep 2010 11:57:27 +0100
- To: SPARQL Working Group <public-rdf-dawg@w3.org>
Following a jena-dev question, I wondered what do implementations do with the following? # Duplicate select variable - SPARQL 1.0 SELECT ?s ?s ?p ?o { ?s ?p ?o } # Duplicate group by variable SELECT ?s { ?s ?p ?o } GROUP BY ?s ?s In result sets: two cases, the same binding duplicated in a row and an attempt to provide different bindings (the latter IMHO is an error because it's nonsensical in the design). # Duplicate in result set (XML) - SPARQL 1.0 <?xml version="1.0"?> <sparql xmlns="http://www.w3.org/2005/sparql-results#"> <head> <variable name="s"/> <variable name="p"/> <variable name="s"/> <variable name="o"/> </head> <results> <result> <binding name="s"> <!-- First --> <uri>http://example/s</uri> </binding> <binding name="p"> <uri>http://example/p</uri> </binding> <binding name="s"> <!-- Second (here, the same value) --> <uri>http://example/s</uri> </binbding> <binding name="o"> <uri>http://example/o</uri> </binding> </result> </results> </sparql> # Duplicate in result set (JSON) - SPARQL 1.0 { "head": { "vars": [ "s" , "p" , "s" , "o" ] } , "results": { "bindings": [ { "s": { "type": "uri" , "value": "http://example/s" } , # First "p": { "type": "uri" , "value": "http://example/p" } , "s": { "type": "uri" , "value": "http://example/s" } , # Second "o": { "type": "uri" , "value": "http://example/o" } } ] } } Andy Appendix: JSON and duplicate keys: The JSON description on json.org does not ban this [[ An object is an unordered set of name/value pairs. ]] and RFC 4627 [[ An object is an unordered collection of zero or more name/value pairs, where a name is a string and a value is a string, number, boolean, null, object, or array. ... The names within an object SHOULD be unique. ]] which means ("x", 1) ("x", 2) is a legal as a set of two different pairs and ("x", 1) , ("x", 1) is a set of one pair but an unordered list or bag of two pairs. The org.json Java implementation throws an exception.
Received on Thursday, 30 September 2010 10:58:50 UTC