簡體   English   中英

CONSTRUCT/WHERE 中的 SPARQL 函數

[英]SPARQL functions in CONSTRUCT/WHERE

我主要在處理查詢時使用 SPARQL SELECT 進行調試,但最后我想以 CONSTRUCT 方式使用最終結果; 因為我想使用圖形而不是鍵/值查詢結果。

我還沒有得到(並且似乎無法通過搜索引擎/文檔找到)是我是否也可以以這種方式使用函數。 例如,我使用屬性路徑將標題連接到“超字符串”中,稍后我將使用它來構建 Lucene 索引以提高純文本搜索質量:

PREFIX dc: <http://purl.org/dc/elements/1.1/>    

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 .
  }
}

現在我想擁有相同的?fancytitle作為一個新的三元組

<http://data.staatsarchiv-bs.ch/id/archivalresource/CH-000027-1/pa-633c-a-312-fasc-163> <fancytitle> ?fancytitle .

所以我可以直接將它存儲在一個新的圖表中。 這可能嗎? 我嘗試了一些查詢,但無法讓 SPARQL 處理器接受它。 僅供參考,我正在使用 Fuseki。

您可以在我的SPARQL Endpoint 上試用

是的,這是可能的

您不能直接在CONSTRUCT模板中使用表達式,但可以通過子查詢中的SELECT表達式或使用BINDWHERE子句中分配變量。

在您的情況下, GROUP_CONCAT是一個聚合,它只能是一個SELECT表達式,因此您只需要將整個SELECT作為子查詢,例如

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 .
    }
  }
}

以上在您的端點上運行良好

在我同事的幫助下,我們開始工作, UNIONGROUP BY是必不可少的。 此查詢將圖中所有locah:ArchivalResource的字符串放在一起:

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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM