我想使用 SPARQL 构造查询生成一个 RDF 集合(即rdf:first
/rdf:rest
链表),将变量的所有分组绑定放入一个集合中。
所以对于数据
@prefix ex: <https://example.com/ns#> .
ex:example1 a ex:Example ;
ex:name "Example1" ;
ex:even false .
ex:example2 a ex:Example ;
ex:name "Example2" ;
ex:even true .
ex:example3 a ex:Example ;
ex:name "Example3" ;
ex:even false .
ex:example4 a ex:Example ;
ex:name "Example4" ;
ex:even true .
ex:example5 a ex:Example ;
ex:name "Example5" ;
ex:even false .
如果 SELECT 查询
PREFIX ex: <https://example.com/ns#>
select (group_concat(?name) as ?names) where {
?a ex:even ?even;
ex:name ?name
} group by ?even
产量
names
Example1 Example3 Example5
Example2 Example4
包含作为 rdf 集合的绑定的相应CONSTRUCT
查询会是什么样?names
子,即类似于
( "Example1" "Example3" "Example5" )
( "Example2" "Example4")
(假设上面的TTL解释)
背景:我想使用 SHACL-AF SPARQLRules 生成 SHACL 形状,而我正在努力解决的一件事是生成sh:in (...)
列表作为多个查询解决方案的聚合生成的位置。