Cayley:如何设置限制/深度以显示cayley中的图层次结构?

时间:2017-11-08 12:58:32

标签: cayley

我需要帮助来限制节点以显示cayley中的图层次结构。就像在OrientDB中一样,我们有一个深度函数来将层次结构限制到任何级别,直到同一级别为止。

示例:我的层次结构如下:

A DependsOn B    
B RunsOn C    
C DependsOn D    
D ConnectedTo E    

现在,对于上面的示例,我编写了一个下面的查询来显示图层次结构。

var path = g.M().Both();    
g.V("B").FollowRecursive(path).ForEach( function(v) {  
    g.V(v.id).OutPredicates().ForEach( function(r){    
        g.V(v.id).Out().ForEach(function(t){    
            var node = {    
                source: v.id,    
                relation : r.id    
                target: t.id    
            }    
            g.Emit(node)
        })
    }
})

所以,当我将B传递给查询时,它将返回完整的层次结构,但我只想要A,B和amp;从B显示1级层次结构的C节点,2级层次结构的同一事物我要显示A,B,C& D,因为它应显示B节点2级向上和2级向下。

1 个答案:

答案 0 :(得分:1)

您可以通过将max depth作为第二个参数传递给FollowRecursive函数来限制深度:

<Style TargetType="ListView">
    <Style.Triggers>
        <DataTrigger Binding="{Binding ShowSearchResults}" Value="True">
            <Setter Property="ItemsSource" Value="{Binding SearchResults}" />
        </DataTrigger>
    </Style.Triggers>
</Style>

请注意,您不会在foreach中开始一条新路径,该路径不知道外部函数的最大深度。

关于这个用例的更详细讨论可以在&#39;交叉发布的&#39;在Cayley官方论坛上: https://discourse.cayley.io/t/cayley-0-7-0-depth-function-issue/1066