我有一个内存TinkerGraph。我想编写一个Spring Boot REST控制器来公开此Tinkergraph的序列化表示形式(如GraphML)。序列化API(g.io)需要将String文件路径传递给它。当前,我必须先写入/ tmp文件,然后读取该文件以获得序列化GraphML的String表示形式。
有没有一种方法可以直接获取序列化GraphML的String输出?无需写入tmp文件并重新读回?
>>> sht.range('A1').value = [[1,2], [3,4]]
>>> rng1 = sht.range('A1').options(expand='table', transpose=True).value
[[1.0, 3.0], [2.0, 4.0]]
答案 0 :(得分:1)
从最新的最新版本3.4.2开始,恐怕没有办法使用Gremlin语言来做到这一点。它仅写入文件而不是Java OutputStream
之类的原因是,io()
步骤旨在与程序设计语言无关。 JVM之外的Python和其他语言无法构造或指定这样的对象,因此写入文件可以使其全面工作。我不知道这种情况将来是否会改变,除非我们提出一种合理的API,该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上,则返回String的唯一方法是将Gremlin脚本提交给Gremlin Server。