我们可以在JanusGraph中找到图表中的所有标签吗?

时间:2018-03-21 07:50:51

标签: gremlin janusgraph

我想获取图表中所有可用标签的列表,但我不知道架构。有没有办法找出所有标签的清单?

我尝试了以下内容:

g.V().Label().values()
g.V().hasLabel().values()

但他们没有工作。

2 个答案:

答案 0 :(得分:4)

在格雷姆林你会这样做:

g.V().label().dedup()

但是这需要扫描图中的所有顶点,这将是昂贵的。 JanusGraph具有可以使用JanusGraphManagement类查询的模式。

JanusGraphManagement mgmt = graph.openManagement();
Iterable<VertexLabel> labels = mgmt.getVertexLabels();

答案 1 :(得分:0)

在Scala中,如果您仅有的是JanusGraph中的GraphTraversalSource,则可以执行以下操作:

import org.janusgraph.core.JanusGraph

val graph: JanusGraph = g.getGraph.asInstanceOf[JanusGraph]
val mgmt: JanusGraphManagement = graph.openManagement()

然后从那里得到顶点标签的可迭代项:

 val vLabels: Iterable[VertexLabel] = mgmt.getVertexLabels.asScala

(。asScala仅在您导入gremlin-scala的情况下才起作用;否则,您可以省略它而获得Java迭代器。)