首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有一种方法可以在不写入文件的情况下获得内存中TinkerGraph的GraphML表示?

有没有一种方法可以在不写入文件的情况下获得内存中TinkerGraph的GraphML表示?
EN

Stack Overflow用户
提问于 2019-06-12 00:10:36
回答 1查看 228关注 0票数 1

我有一个内存中的TinkerGraph。我想写一个Spring Boot REST控制器来公开这个修补图的序列化(作为GraphML)表示。序列化API (g.io)需要一个字符串文件路径传递给它。目前,我必须写入一个/tmp文件,然后读取该文件以获得序列化的GraphML的字符串表示。

有没有办法直接获得序列化后的GraphML的字符串输出?而不必写入tmp文件并将其读回?

代码语言:javascript
复制
g.io("graph.xml").write().iterate()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-12 00:39:41

在当前的最新版本3.4.2中,恐怕没有办法使用Gremlin语言来实现这一点。它只写入文件而不是像Java这样的东西的原因是,io()步骤是编程语言不可知的。Python和JVM之外的其他语言无法构造或指定这样的对象,因此写入文件使其能够全面工作。我不知道这种情况在未来是否会改变,除非我们想出一个合理的API,可以跨编程语言直观地工作。

由于您使用的是内存中的TinkerGraph,因此您可以绕过Gremlin,回到非常古老的处理方式:

代码语言:javascript
复制
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脚本。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56547836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档