SPARQL CONSTRUCT для генерации RDF-коллекции из привязок GROUP BY - PullRequest
0 голосов
/ 26 мая 2020

Я хотел бы создать коллекцию 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 (...), где список создается как совокупность по нескольким решениям запроса.

...