Hi Eric,

I agree with much of what you are saying but I think the important point is 
that "Construct statements make a graphs of triples". Graphs don't have an 
order. If you imagine that the CONSTRUCT pipeline is

SELECT a set of bindings (which could be ordered) 
  ==> send these to the CONSTRUCT template to be converted into a graph

any ordering would be immediately lost in the second step. 

OTOH, I can see where you might want to be able to use information in the 
SELECTed results in the template. If SPARQL had a SEQUENCE function which 
returned, for example, the next xsd:int starting at 0, you could do something 
like:

CONSTRUCT {
   ?a ex:foo ?b .
   ?a ex:solutionNumber ?seq .
} WHERE {
   ?a ex:bar ?b .
    BIND(SEQUENCE() AS ?seq) 
} ORDER BY ?b

Is this the sort of thing you'd be interested in? I can certainly imagine that 
it would be handy.




On Oct 18, 2012, at 6:45 PM, Erich Bremer <[email protected]> wrote:

> Hi Gary,
> 
> Construct statements make a graphs of triples representing information.  
> Construct statements can be used to manipulate, subset, and create new data 
> derived from existing data.  Temporal and sequential information being 
> important things in this world, it would make perfect sense to be able to do 
> a ORDER BY on a construct statement so that connecting triples can be 
> generated to make linked lists of ordered information. The problem is that 
> there is no way to reference the prior/next solution of the where clause in 
> the construct statement to create the appropriate triple pattern.  
> Triple/quad stores do order information in that triples/quads are indexed by 
> their SPOG components to allow for faster processing of graph patterns.  
> Although what I am looking for could be achieved in code, it would be 
> beneficial to add a SPARQL feature allowing the referencing of a prior/next 
> solution. The use cases exist and I don't see it being particularly difficult 
> to implement -imho.  - Erich
> 
> Erich Bremer
> http://www.ebremer.com
> 
> On 10/17/12 10:22 AM, Gary King wrote:
>> Hi Erich,
>> 
>>> There doesn't seem to be anyway to create a SPARQL construct statement like 
>>> the following:
>>> 
>> I believe that the reasoning is that CONSTRUCT makes a _set_ of triples and 
>> sets don't have an order. I.e., a triple-store is an unordered collection 
>> and that it what CONSTRUCT constructs :-).
>> 
>>> but I did not get anything that would work or seem remotely efficient.  If 
>>> this is the case, why have order by in a construct statement at all if one 
>>> cannot capture this information as triples?
>> 
>> The ORDER clause in your example is essentially a no-op. Obviously, however, 
>> it would be important if you also had a LIMIT.
>> 
>> HTH,
>> --
>> Gary Warren King, metabang.com
>> Cell: (413) 559 8738
>> Fax: (206) 338-4052
>> gwkkwg on Skype * garethsan on AIM * gwking on twitter
>> 
> 
> 

--
Gary Warren King, metabang.com 
Cell: (413) 559 8738
Fax: (206) 338-4052
gwkkwg on Skype * garethsan on AIM * gwking on twitter


Reply via email to