Re: How to publish SPARQL endpoint limits/metadata?

On 10/15/13 5:05 AM, Frans Knibbe | Geodan wrote:
> On 2013-10-14 20:05, Kingsley Idehen wrote:
>>>> Plus:
>>>> 7. query timeout (in milliseconds)  -- which determines how much 
>>>> processing time threshold per query .
>>>> Ideally, you want to use a combination of timeouts, result size 
>>>> (max. results per query), offet, and limit to enable paging through 
>>>> data .
>>> Yes, enabling paging is the main thing I was thinking about. For 
>>> that to work, one needs to know the maximum page size allowed.  
>>> SPARQL ORDER BY, OFFSET and LIMIT  can be used to build requests for 
>>> pages. But how does the query timeout setting of the server come in 
>>> to play?
>> In our case (re., Virtuoso) its the time taken to produce a solution, 
>> bearing in mind the  LIMIT and OFFSET query values. If a complete 
>> query solution isn't produced, you get a partial solution, and the 
>> ability to retry with an extended timeout.
> Ah, I understand, thank you. I can see that this way of handling 
> timeouts has its merits. And now I see that this limit is much like 
> the maximum results per request: The client gets a response, but if it 
> is not aware that the response is partial then it could have 
> undesirable effects.
> Is this behaviour standardized? Or do different flavours of endpoints 
> handle timeouts differently? If the latter is the case, maybe it makes 
> sense to also publish something about how timeouts are handled in the 
> endpoint description.

Yes, we need to standardize how this is incorporated into SPARQL 
endpoint descriptions. Currently, we handle this in a Virtuoso specific 
INI file, but nothing stops that information making its way into the 
endpoint description and HTTP response metadata etc..

> Regards,
> Frans
>>> I assume that if a request for a page of data times out you would 
>>> get a timeout error code (522 probably). 
>> Partial result. The idea is that its like a quiz whereby you have an 
>> answer provided within allotted time, or you attempt to answer in 
>> extended time i.e., you request that or it cycles back to you because 
>> the opponent couldn't provide an answer etc..
>>> What would be gained with prior knowledge of the timeout setting?
>> The timeout is the set time for producing a compete or partial query 
>> solution.
>> What we need to do, which will help others, is get all the HTTP 
>> responses and controls for paging properly returns via HTTP 
>> responses. This matter has been discussed in the past (on this list) 
>> and we are committed to getting the HTTP responses in line, as I've 
>> described.
>> Action item for us: demonstrate what I am describing using RESTful 
>> interaction patterns via cURL. Once in place, we would have the 
>> foundation of a pattern that anyone could *optionally* incorporate etc..
>> Kingsley
>>> Regards,
>>> Frans
>>>> Kingsley
>>>>> On 8-10-2013 17:45, Leigh Dodds wrote:
>>>>>> Hi,
>>>>>> As others have suggested, extending service descriptions would be the
>>>>>> best way to do this. This might make a nice little community project.
>>>>>> It would be useful to itemise a list of the type of limits that might
>>>>>> be faced, then look at how best to model them.
>>>>>> Perhaps something we could do on the list?
>>>>>> Cheers,
>>>>>> L.
>>>>>> On Tue, Oct 8, 2013 at 10:46 AM, Frans Knibbe | Geodan
>>>>>> <>  wrote:
>>>>>>> Hello,
>>>>>>> I am experimenting with running SPARQL endpoints and I notice the need to
>>>>>>> impose some limits to prevent overloading/abuse. The easiest and I believe
>>>>>>> fairly common way to do that is to LIMIT the number of results that the
>>>>>>> endpoint will return for a single query.
>>>>>>> I now wonder how I can publish the fact that my SPARQL endpoint has a LIMIT
>>>>>>> and that is has a certain value.
>>>>>>> I have read the thread Public SPARQL endpoints:managing (mis)-use and
>>>>>>> communicating limits to users, but that seemed to be about how to
>>>>>>> communicate limits during querying. I would like to know if there is a way
>>>>>>> to communicate limits before querying is started.
>>>>>>> It seems to me that a logical place to publish a limit would be in the
>>>>>>> metadata of the SPARQL endpoint. Those metadata could contain all limits
>>>>>>> imposed on the endpoint, and perhaps other things like a SLA or a
>>>>>>> maintenance schedule... data that could help in the proper use of the
>>>>>>> endpoint by both software agents and human users.
>>>>>>> So perhaps my enquiry really is about a standard for publishing SPARQL
>>>>>>> endpoint metadata, and how to access them.
>>>>>>> Greetings,
>>>>>>> Frans



Kingsley Idehen	
Founder & CEO
OpenLink Software
Company Web:
Personal Weblog:
Twitter/ handle: @kidehen
Google+ Profile:
LinkedIn Profile:

Received on Tuesday, 15 October 2013 11:14:01 UTC