SPARQL 1.1 Protocol: HTTP status code for QueryRequestRefused

This is a comment on the latest SPARQL 1.1 Protocol draft [1]. It  
concerns an issue that was already present in the SPARQL 1.0 version  
of the Protocol.

I cannot quite work out what HTTP response code to use in the case of  
a QueryRequestRefused fault. The obvious place to look for this in the  
specification would be here:

Section 2.2.1, “HTTP Bindings for SPARQL Query”:

> In each of these bindings, the two faults described in  
> SparqlProtocol interface, MalformedQuery and QueryRequestRefused,  
> are bound to HTTP status codes 400 Bad Request and 500 Internal  
> Server Error, respectively [HTTP].

The WSDL snippet in this section says the same thing. But elsewhere I  
find:

Section 2.1.1.3.2, “QueryRequestRefused”:

> The QueryRequestRefusedfault [does not] constrain a conformant  
> SPARQL service from returning other HTTP status codes or HTTP  
> headers as appropriate given the semantics of [HTTP].

The problem in my eyes is:

1. The two quotes contradict each other.

2. Any language about HTTP status codes should be in the HTTP Bindings  
section, not in the abstract interface definition section.

Hence I propose to remove that sentence from 2.1.1.3.2, and reduce the  
last sentence of the section to just:

“The QueryRequestRefusedfault message does not indicate whether the  
server may or may not process a subsequent, identical request or  
requests.”

Furthermore, I propose to add the following sentence after the  
sentence starting “In each of these bindings ...” in 2.2.1:

“Despite the use of the 500 status code for QueryRequestRefused in  
this binding, a conformant SPARQL service MAY return other HTTP status  
codes or HTTP headers as appropriate given the semantics of [HTTP].”

Best,
Richard

[1] http://www.w3.org/TR/2010/WD-sparql11-protocol-20100126/

Received on Wednesday, 29 September 2010 12:23:48 UTC