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