我有一个内存中的TinkerGraph。我想写一个Spring Boot REST控制器来公开这个修补图的序列化(作为GraphML)表示。序列化API (g.io)需要一个字符串文件路径传递给它。目前,我必须写入一个/tmp文件,然后读取该文件以获得序列化的GraphML的字符串表示。
有没有办法直接获得序列化后的GraphML的字符串输出?而不必写入tmp文件并将其读回?
g.io("graph.xml").write().iterate()发布于 2019-06-12 00:39:41
在当前的最新版本3.4.2中,恐怕没有办法使用Gremlin语言来实现这一点。它只写入文件而不是像Java这样的东西的原因是,io()步骤是编程语言不可知的。Python和JVM之外的其他语言无法构造或指定这样的对象,因此写入文件使其能够全面工作。我不知道这种情况在未来是否会改变,除非我们想出一个合理的API,可以跨编程语言直观地工作。
由于您使用的是内存中的TinkerGraph,因此您可以绕过Gremlin,回到非常古老的处理方式:
Graph graph = TinkerFactory.createModern();
try (OutputStream os = new FileOutputStream("tinkerpop-modern.xml")) {
graph.io(IoCore.graphml()).writer().normalize(true).create().writeGraph(os, graph);
}您只需将FileOutputStream替换为您想使用的任何类型的OutputStream即可。这个approach使用的是旧的Graph API,我认为它在新的版本中已经过时了,所以你应该仍然可以使用这个选项。请注意,如果您不在JVM上,那么返回字符串的唯一方法就是向Gremlin Server提交一个Gremlin脚本。
https://stackoverflow.com/questions/56547836
复制相似问题