SPARQL group by and order by: not ordered

前端 未结 2 1508
伪装坚强ぢ
伪装坚强ぢ 2021-01-23 14:08

I follow up on query where the schema.org database is used to find the number of children of a class - as a simpler database than my application. I want to get the names of the

相关标签:
2条回答
  • 2021-01-23 14:16

    18.5.1.7 GroupConcat:

    The order of the strings is not specified.


    From the horse's mouth:

    On 2011-04-22, at 19:01, Steve Harris wrote:

    On 2011-04-22, at 06:18, Jeen Broekstra wrote:

    However, looking at the SPARQL 1.1 query spec, I think this is not a guaranteed result: as far as I can tell the solution modifier ORDER BY should be applied to the solution sequence after grouping and aggregation, so it can not influence the order of the input for the GROUP_CONCAT.

    That's correct.

    0 讨论(0)
  • 2021-01-23 14:24

    An additional select subquery is required to push the order inside the groups:

    prefix schema:  <http://schema.org/>
    prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#>
    
    select    ?child  (group_concat (?string) as ?strings) 
    
    where {
        select * 
        {
         ?child  rdfs:subClassOf schema:Event .
         ?grandchild rdfs:subClassOf ?child .
         bind (strafter(str(?grandchild), "http://schema.org/") as ?string)
        } order by asc(?string)
    }   group by ?child  
    limit 20 
    
    0 讨论(0)
提交回复
热议问题