W3C home > Mailing lists > Public > public-lod@w3.org > October 2013

Re: How to publish SPARQL endpoint limits/metadata?

From: Kingsley Idehen <kidehen@openlinksw.com>
Date: Tue, 15 Oct 2013 07:13:39 -0400
Message-ID: <525D2363.5080308@openlinksw.com>
To: public-lod@w3.org
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..

Kingsley
>
> 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
>>>>>> <frans.knibbe@geodan.nl>  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
>>>>>>>
>


-- 

Regards,

Kingsley Idehen	
Founder & CEO
OpenLink Software
Company Web: http://www.openlinksw.com
Personal Weblog: http://www.openlinksw.com/blog/~kidehen
Twitter/Identi.ca handle: @kidehen
Google+ Profile: https://plus.google.com/112399767740508618350/about
LinkedIn Profile: http://www.linkedin.com/in/kidehen







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

This archive was generated by hypermail 2.3.1 : Wednesday, 7 January 2015 15:16:42 UTC