Select 递归链接到一个主题的所有内容
Select everything that is recursively linked to one subject
所以,我想 select 以特定方式递归链接到主题的所有内容。我知道 sparql AFAIK 中没有递归,所以我希望有其他方法可以解决这个问题。
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
类型。
所以,我想 select 以特定方式递归链接到主题的所有内容。我知道 sparql AFAIK 中没有递归,所以我希望有其他方法可以解决这个问题。
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
类型。