我主要使用SPARQL SELECT的查询工作调试目的,但最终当我想用最后的结果是在一个结构方式; 因为我想用一个图表,而不是键/值查询结果的工作。
我不明白,但(似乎并不能与搜索引擎/文档找到)是,如果我可以使用的功能以及这种方式。 举个例子,我使用了一个属性路径来连接标题我进入了“超弦”,这是我后来用于构建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处理器所接受。 仅供参考我使用定式。
你可以在我试一下SPARQL端点
是的,这是可能的
您不能直接使用表达式CONSTRUCT
模板,但您可以指定在变量WHERE
或者通过一个条款, SELECT
在一个子查询或使用表达式BIND
。
在你的情况下, 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 .
}
}
}
上述工作在端点罚款
我的同事的帮助下,我们得到它的工作, UNION
和GROUP 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
}