Select 递归链接到一个主题的所有内容

Select everything that is recursively linked to one subject

所以,我想 select 以特定方式递归链接到主题的所有内容。我知道 sparql AF​​AIK 中没有递归,所以我希望有其他方法可以解决这个问题。

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX ir: <http://itemrelation.com/ir#>
SELECT ?item
WHERE { ?item a ir:Item .
    { ir:MainItem ir:RelatedTo ?item }
    UNION { ?item ir:RelatedTo ir:MainItem } }

这应该获取项目 ir:MainItem 与项目 "ir:RelatedTo" 具有关系的所有项目,以及与项目 ir:MainItem 具有关系 "ir:RelatedTo" 的所有项目。

但这不是我想要的,我想以与之前相同的方式获取当前 selected 项目以及与当前 selected 项目相关的所有项目与 ir:MainItem 有关。不仅如此,我还想要以相同方式与这些项目相关的项目等...

所以,问题是,我如何按照描述的方式获取所有 "recursively related" 到 ir:MainItem 的项目?

SPARQL 1.1 that's feasible with property paths 喜欢:

PREFIX ir: <http://itemrelation.com/ir#>

SELECT ?item WHERE {
    ir:MainItem (ir:RelatedTo|^ir:RelatedTo)+ ?item.
    ?item a ir:Item.
}

ir:MainItem开始,查询正向或反向递归遍历ir:RelatedTo谓词,选择连接项并将它们过滤为ir:Item类型。