- 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