首页 > 解决方案 > CONSTRUCT 查询保留列表结构

问题描述

我有一个这样的三个元素的列表:

<Employee#1> <hasOrderedTasks> [ a rdf:List ; rdf:first <FirstTask> ;
                                 rdf:rest [ rdf:first <SecondTask> ;
                                 rdf:rest [ rdf:first <ThirdTask> ;
                                 rdf:rest rdf:nil ] ] ] .

我的问题是:如何使用CONSTRUCT类型查询返回列表(及其结构)? 请注意,列表可能具有可变数量的元素,并且查询需要对此进行概括。我可以使用类似的东西:

CONSTRUCT {
 ?employee <hasOrderedTasks> ?list .
 ?list <hasElement> ?element 
 }
WHERE {
 ?employee <hasOrderedTasks> ?list .
 ?list rdf:rest*/rdf:first ?element .
 }

但是,这会破坏我列表的顺序。我当然可以在子查询中使用一些聚合来计算列表中元素的索引,但即使这样也不会按原样重新创建我的列表。是否有其他功能可以帮助我?或者这在 SPARQL 中是不可能的?

标签: sparqlrdf

解决方案


推荐阅读