Rdf 构造/WHERE中的SPARQL函数

Rdf 构造/WHERE中的SPARQL函数,rdf,sparql,fuseki,Rdf,Sparql,Fuseki,我在处理查询时主要使用SPARQL SELECT进行调试,但最终我希望以构造方式使用最终结果;因为我希望使用图形,而不是键/值查询结果 我还不知道(在搜索引擎/文档中似乎找不到)我是否也能以这种方式使用函数。例如,我使用一个属性路径将我得到的标题连接到一个“超级字符串”中,稍后我将使用它构建Lucene索引以提高纯文本搜索质量: 前缀dc: 选择(group_concat(?title;separator=“”)作为?fancytitle),其中{ 图?图{ dc:关系+?关系。 关系dc:标题

我在处理查询时主要使用SPARQL SELECT进行调试,但最终我希望以构造方式使用最终结果;因为我希望使用图形,而不是键/值查询结果

我还不知道(在搜索引擎/文档中似乎找不到)我是否也能以这种方式使用函数。例如,我使用一个属性路径将我得到的标题连接到一个“超级字符串”中,稍后我将使用它构建Lucene索引以提高纯文本搜索质量:

前缀dc:
选择(group_concat(?title;separator=“”)作为?fancytitle),其中{
图?图{
dc:关系+?关系。
关系dc:标题?标题。
}
}
现在我想要一个与新的三元组相同的
?fancytle

<http://data.staatsarchiv-bs.ch/id/archivalresource/CH-000027-1/pa-633c-a-312-fasc-163> <fancytitle> ?fancytitle .
?幻想。
所以我可以直接将它存储在一个新的图表中。这可能吗?我处理了一些查询,但无法让SPARQL处理器接受。仅供参考,我正在使用Fuseki

您可以在my

上试用。是的,这是可能的

不能在
构造
模板中直接使用表达式,但可以通过子查询中的
选择
表达式或使用
绑定
WHERE
子句中分配变量

在您的情况下,作为
组\u CONCAT
是一个聚合,它只能是一个
SELECT
表达式,因此您只需将整个
SELECT
作为子查询,例如

前缀dc:
建筑
{
?幻想
}
哪里
{
选择(group_concat(?title;separator=“”)作为?fancytitle),其中{
图?图{
dc:关系+?关系。
关系dc:标题?标题。
}
}
}

在我同事的帮助下,上述方法在您的端点上运行良好,
UNION
groupby
是必不可少的。此查询将图形中所有
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
}

当我已经在其他情况下使用子查询时,我没有想到这一点,非常感谢!对于非聚合函数,
BIND
看起来如何?接下来的问题是,在这个查询中,我仍然可以用变量替换资源的URI吗?像
?资源a locah:ArchivalResource-我像这样得到零结果。我想在所有ArchivalResource上执行此操作