SPARQL functions in CONSTRUCT/WHERE

后端 未结 2 2091
别跟我提以往
别跟我提以往 2020-12-02 02:23

I mostly use SPARQL SELECT while working on a query for debugging purposes but in the end I want to use the final result it in a CONSTRUCT way; as I want to work with a grap

相关标签:
2条回答
  • 2020-12-02 02:33

    Yes this is possible

    You can't use expressions directly in a CONSTRUCT template but you can assign the variable in the WHERE clause either via a SELECT expression in a sub-query or using BIND.

    In your case as GROUP_CONCAT is an aggregate it can only be a SELECT expression so you just need to put your entire SELECT as a sub-query e.g.

    PREFIX dc: <http://purl.org/dc/elements/1.1/>    
    
    CONSTRUCT
    {
      <http://data.staatsarchiv-bs.ch/id/archivalresource/CH-000027-1/pa-633c-a-312-fasc-163> <http://fancyTitle> ?fancytitle
    }
    WHERE
    {
      SELECT (group_concat(?title ; separator = " ") AS ?fancytitle) WHERE { 
        GRAPH ?graph {
          <http://data.staatsarchiv-bs.ch/id/archivalresource/CH-000027-1/pa-633c-a-312-fasc-163>  dc:relation+ ?relation .
          ?relation dc:title ?title .
        }
      }
    }
    

    The above works fine on your endpoint

    0 讨论(0)
  • 2020-12-02 02:47

    With the help of my colleague we got it to work, UNION and GROUP BY are essential. This query puts the string together for all locah:ArchivalResource in the graphs:

    CONSTRUCT
    {
      ?archresource skos:hiddenLabel ?supertitle
    }
    WHERE
    {
      SELECT ?archresource  (group_concat(?title ; separator = ", ") AS ?supertitle) WHERE {
        GRAPH ?graph {
          {
            SELECT ?title ?archresource WHERE {
              GRAPH ?graph {
                {
                  ?archresource a locah:ArchivalResource ;
                  dc:title ?title .
                } UNION
                {
                  ?archresource dc:relation+ ?relation .
                  ?relation dc:title ?title .
                }
              }
            }
          }
        }
      } GROUP BY ?archresource
    }
    
    0 讨论(0)
提交回复
热议问题