Gremlin-Go:树步不可序列化

问题描述 投票:0回答:1

我正在运行一个查询来遍历特定标签后的所有“入”边,稍后我将对“出”边进行类似的查询。我想把它作为一棵树,因为可能有一个具有多条边的顶点要遍历并且需要在我的客户端中反映出来,所以我不能在这里只使用

ToList()

我目前正在使用 Gremlin-Go SDK,但是在调用

Tree()
步骤时出现反序列化错误。这是我的客户代码的片段:

    res, err := g.V(id).
        Emit().
        Repeat(__.In(label)).
        Tree().
        Next() // Other terminal steps produce same issue

这会在数据类型

0x2b
上产生反序列化错误,这是一个 GraphBinary 核心数据类型“Tree”

2023/02/28 12:23:05 Error occurred during operation gremlinServerWSProtocol.readLoop(): 'E0408: unknown data type to deserialize 0x2b'
2023/02/28 12:23:05 Read loop error 'E0408: unknown data type to deserialize 0x2b', closing read loop.
2023/02/28 12:23:05 Connection error callback invoked, closing protocol.

Gremlin-Go 参考文档似乎没有提及任何关于特定序列化支持的内容。根据

gremlin-go
README,它支持所有核心 GraphBinary 数据类型。我已经在 Gremlin 控制台中测试了我的查询以验证查询和服务器:
g.V(<ID>).emit().repeat(__.in(<LABEL>)).tree().next()
.


对于一些额外的上下文,我正在本地针对

gremlin-server:3.5.3
进行开发以进行实验,目的是在支持 AWS Neptune 的情况下完成查询。我知道这些不能完全互换,并且会遵循 Neptune-Gremlin 参考。 Neptune最新版本指定最新支持的Gremlin版本为3.5.3.

go gremlin amazon-neptune
1个回答
0
投票

通常,只有 Java(和其他基于 JVM 的客户端)能够反序列化子图或树等结构。这是因为只有这些 Gremlin 客户端具有当前可用的这些数据结构的本机实现(例如,JVM 客户端具有可用的 TinkerGraph)。

这是 TinkerPop 社区非常了解的项目,并且在需要改进的事项列表中。

一种可能的解决方法(不是很好)是使用 HTTP 端点(以文本形式发送查询)并处理返回的 GraphSON,如果返回这种类型的数据结构是必不可少的。

© www.soinside.com 2019 - 2024. All rights reserved.