获取传递关系中的所有节点 - 扩展

时间:2013-12-11 12:17:54

标签: java sparql jena

这是Get all nodes in a transitive relation

的扩展

是否可以使用SPARQL在两个传递节点之间获取所有传递节点?我试图从这个网站挖掘出来并回答-semanticweb,但是如果路径的长度没有像Can JENA ARQ show property path details中所建议的那样定义,那么它似乎是不可能的。但是我从Joshua Taylor answer到第一个问题看到了一线希望。

[已编辑]我提供了我的数据样本图片,以显示问题的严重程度:

Data Sample

[已编辑]我想找到:a:h之间的路径,这应该会产生四个结果:
a -> b -> c -> d -> h
a -> b -> c -> e -> h
a -> f -> h
a -> g -> h

[已编辑]在评论中使用Joshua Taylor中的解决方案,我将每个节点分组为单个结果,这是迄今为止我遇到此问题的最接近的解决方案。

1 个答案:

答案 0 :(得分:1)

我不认为这在纯SPARQL中是可行的。相关问题解决方案的关键是group by有不同行的结果。一般来说,我不知道每条路径是否都有一些独特的东西group by,以便每条路径获得一个结果行。

但是,在您的特定数据中(这是您的特定数据的一个属性,而不是一般的图形),有一个区分不同路径的属性:每个路径包含一个该路径唯一的节点。也就是说,对于每个节点defg,只有一个路径包含该节点。这意味着,对于此特定示例,如果您可以找到识别查询中唯一节点的方法,则可能能够执行此操作。但是,我不相信可能,因为它相当于问同一个问题:“?startx之间有多少条路径(其中{{}}在这种情况下,1}}是xdef之一?“