Я хотел бы создать коллекцию RDF (например, rdf:first
/ rdf:rest
связанный список), используя запрос конструкции SPARQL, поместив все сгруппированные привязки для переменной в одну коллекцию.
Итак, для данных
@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
, как будет выглядеть соответствующий запрос CONSTRUCT
, содержащий привязки для ?names
в виде коллекции rdf, ie что-то вроде
( "Example1" "Example3" "Example5" )
( "Example2" "Example4")
(в предположении TTL-интерпретации приведенного выше)
Фон: я хотел бы сгенерировать формы SHACL, используя SHACL-AF SPARQLRules, и один вещь, с которой я борюсь, - это сгенерировать sh:in (...)
, где список создается как совокупность по нескольким решениям запроса.