我们能否在 JanusGraph 中找到图中可用的所有标签?
Can we find all the labels available in a graph in JanusGraph?
我想获取图表中所有可用标签的列表,但我不知道架构。有没有办法找出所有标签的列表?
我试过以下方法:
g.V().Label().values()
g.V().hasLabel().values()
但它们不起作用。
在 Gremlin 中你会做:
g.V().label().dedup()
但这需要扫描图中的所有顶点,这会很昂贵。 JanusGraph 具有您可以使用 JanusGraphManagement
class 查询的架构。
JanusGraphManagement mgmt = graph.openManagement();
Iterable<VertexLabel> labels = mgmt.getVertexLabels();
在 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 迭代器。)
我想获取图表中所有可用标签的列表,但我不知道架构。有没有办法找出所有标签的列表?
我试过以下方法:
g.V().Label().values()
g.V().hasLabel().values()
但它们不起作用。
在 Gremlin 中你会做:
g.V().label().dedup()
但这需要扫描图中的所有顶点,这会很昂贵。 JanusGraph 具有您可以使用 JanusGraphManagement
class 查询的架构。
JanusGraphManagement mgmt = graph.openManagement();
Iterable<VertexLabel> labels = mgmt.getVertexLabels();
在 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 迭代器。)