Sparql 构造保留查询的列表结构

Sparql 构造保留查询的列表结构,sparql,rdf,Sparql,Rdf,我有一个由以下三个元素组成的列表: <Employee#1> <hasOrderedTasks> [ a rdf:List ; rdf:first <FirstTask> ; rdf:rest [ rdf:first <SecondTask> ; rdf:rest [ rdf:first <ThirdTask&g

我有一个由以下三个元素组成的列表:

<Employee#1> <hasOrderedTasks> [ a rdf:List ; rdf:first <FirstTask> ;
                                 rdf:rest [ rdf:first <SecondTask> ;
                                 rdf:rest [ rdf:first <ThirdTask> ;
                                 rdf:rest rdf:nil ] ] ] .
但是这会破坏我名单的顺序。当然,我可以在子查询中使用一些聚合来计算列表中元素的索引,但即使这样也无法按原样重新创建列表。
也许还有其他功能可以帮助我吗?或者这在SPARQL中是不可能的?

这是行不通的,RDF只是一组三元组。必须保持列表元素之间的顺序,即必须在元素之间添加三元组。将
作为关系。因此,在基于属性路径的三重模式中需要一个中间变量。我仍然不完全清楚添加中间变量和
会有什么帮助。查询头如何知道将中间变量放在哪里?
CONSTRUCT {
 ?employee <hasOrderedTasks> ?list .
 ?list <hasElement> ?element 
 }
WHERE {
 ?employee <hasOrderedTasks> ?list .
 ?list rdf:rest*/rdf:first ?element .
 }