我试图在Gremlin中以GraphSON的形式输出一个带有JanusGraph的子图。
参考的TinkerPop文档:http://tinkerpop.apache.org/docs/current/reference/#graphson-reader-writer
但是,当我编写完整的图时,当我想编写一个我使用以下命令查询过的子图时,它工作得很好:
gremlin> subGraph = g.V(45240).repeat(__.bothE().subgraph('subGraph').bothV()).times(4).cap('subGraph').next()我使用相同的写命令:
gremlin> subGraph.io(IoCore.graphson()).writeGraph("45240_sub4.json")我知道这个错误:
(was java.lang.IllegalStateException) (通过参考链:java.lang.IllegalStateException)
在四处搜索时,我发现了另一个线程,它说我需要导入一个包才能正确地完成这个任务(对于TitanGraph,但我认为它也适用于JanusGraph ):用gremlin进口包装
但是,每当我试图导入:
gremlin> import com.thinkaurelius.titan.graphdb.tinkerpop.io.graphson.TitanGraphSONModule我知道这个错误:
无效导入定义:'com.thinkaurelius.titan.graphdb.tinkerpop.io.graphson.TitanGraphSONModule';原因:启动失败: import 1494618250861805544050。resolve : 1:无法解析类com.thinkaurelius.titan.graphdb.tinkerpop.io.graphson.TitanGraphSONModule @第1行,第1列,导入com.thinkaurelius.titan.graphdb.tinkerpop.io.graphson.TitanGraphSONModule ^ 1个错误
如何使用GraphSON在Gremlin中以GraphSON的形式输出子图?
发布于 2017-05-16 04:06:40
当您使用subgraph()步骤时,结果是一个TinkerGraph,但是它的顶点和边缘ID是从JanusGraph实例转过来的。特别是,边缘ID是RelationIdentifier类型,需要JanusGraph的自定义序列化程序JanusGraphSONModule才能干净地导出。
下面是一个基于来自泰坦的前面的例子的示例,您可以在Gremlin控制台中运行该示例:
graph = JanusGraphFactory.open('inmemory')
graph.io(graphson()).readGraph('data/tinkerpop-modern.json')
g = graph.traversal()
subGraph = g.E().hasLabel('knows').subgraph('sg').cap('sg').next()
graphsonIO = IoCore.graphson().graph(subGraph).registry(JanusGraphIoRegistry.getInstance()).create()
graphsonIO.writeGraph('/tmp/subgraph.json')发布于 2017-05-15 07:19:57
您可能只需导入泰坦模块的JanusGraph等价物,这个模块应该是:org.janusgraph.graphdb.tinkerpop.io.graphson.JanusGraphSONModule
因此,此导入应该工作:
gremlin> import org.janusgraph.graphdb.tinkerpop.io.graphson.JanusGraphSONModulehttps://stackoverflow.com/questions/43945568
复制相似问题