找出遍历的Vertex和边缘

all*_*lts 0 gremlin janusgraph

我有以下图表

在此输入图像描述

如果我写一个Query gV('A').Out(),我怎样才能得到遍历的边的值和在几个中遇到的顶点?

ste*_*tte 5

你需要告诉Gremlin不要跳过边缘.g.V().out()是简写g.V().outE().inV().在这种情况下,当您明确告诉Gremlin遍历它们时,您可以与边缘的值进行交互.我将用几个例子演示使用"现代"玩具图:

gremlin> g = TinkerFactory.createModern().traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
Run Code Online (Sandbox Code Playgroud)

首先,您可能希望过滤特定的边缘属性,然后遍历到相邻的顶点:

gremlin> g.V().outE().has('weight',gt(0.5)).inV()
==>v[4]
==>v[5]
Run Code Online (Sandbox Code Playgroud)

您在问题中提到过,您可能希望查看边缘值和遇到的顶点.一种方法是使用path():

gremlin> g.V().outE().has('weight',gt(0.5)).inV().path()
==>[v[1],e[8][1-knows->4],v[4]]
==>[v[4],e[10][4-created->5],v[5]]
Run Code Online (Sandbox Code Playgroud)

您可能也会更明确地从边缘获取特定属性:

gremlin> g.V().outE().has('weight',gt(0.5)).inV().path().by().by('weight')
==>[v[1],1.0,v[4]]
==>[v[4],1.0,v[5]]
Run Code Online (Sandbox Code Playgroud)