Moh*_*nIT 2 java gremlin tinkerpop3
我想在图中找到所有节点和边缘属性.如何列出图中存在的节点(或边)属性?
例如,如果节点有3个非保留属性,例如NAME,education,gender.我想要一个类似的方法
g.V().schema().toList();
// result: [ID, LABEL, NAME, GENDER, EDUCATION]
Run Code Online (Sandbox Code Playgroud)
Gremlin本身没有架构的概念.这是一个深思熟虑的设计选择,因为模式API的功能和行为与一个图形系统实现完全不同,并且在Apache TinkerPop中形成适当的抽象是非常困难的.通过这种方式,它与TinkerPop 2.x尝试构建通用索引API非常类似,后者最终过于通用而无法对任何人有用,并且添加了更多复杂性,更多是大多数情况下所需要的.最后,像索引API一样,TinkerPop 3.x省略了概括模式的想法.
如果您使用允许架构定义的图形,如JanusGraph或DSE Graph,您应该只使用该图形系统的基础Schema API来获取所有架构值.如果你没有使用那种类型的图形,那么你需要按照迄今为止在其他答案中提供的内容做一些事情,并遍历所有顶点(或边)并获得唯一的属性键.这是我的版本:
gremlin> graph = TinkerFactory.createModern()
==>tinkergraph[vertices:6 edges:6]
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V().properties().key().dedup()
==>name
==>age
==>lang
Run Code Online (Sandbox Code Playgroud)
这里的问题是,要进行这种类型的遍历,您将需要完整的图形扫描,如果您有一个大图,这将是有问题的.在这些情况下,您将需要使用Spark等基于OLAP的遍历.
| 归档时间: |
|
| 查看次数: |
1875 次 |
| 最近记录: |