问题标签 [graphson]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4182 浏览

javascript - 普通 JSON 转 GraphSON 格式

我有两个问题:

  1. 我实际上可以在哪里找到 GraphSON 文件的基本格式,保证由 gremlin 控制台成功加载?我正在尝试将 JSON(大约 10-20 个字段)转换为另一个可由 gremlin 查询的文件,但我实际上找不到任何有关 graphson 格式保留的字段或我应该如何处理 ID 的相关信息等等。我导出了他们提供的现代图形,它甚至不是一个有效的 JSON(多个 JSON 根元素),而是一个 JSON 列表 [1] 我还看到了 outE、inE 等字段...这些字段是我手动必须做的创造?

  2. 如果我能够创建 JSON,我在哪里告诉服务器在我启动它时将其加载为基本图?在配置文件中还是在脚本中?

谢谢!阿德里安

[1] https://pastebin.com/drwXhg5k

0 投票
1 回答
419 浏览

json - Get vertex properties information in simple format

Let's say I have two nodes 'A' and 'B' in graph with each node having 'name' (string) and 'roll-no' (int) properties. How can I write the query to get the node properties information in below format. Please note that I don't need data type information and nested json structure in the output.

I think I'm asking for how to convert GraphSON to normal JSON.

0 投票
2 回答
848 浏览

datastax - 使用 Graphson 转换 GraphResultSet JSON

我正在尝试将 GraphResultSet 对象转换为类似于 datastax studio 返回的 JSON 格式。我正在尝试使用 Graphson。是否有任何示例代码将结果对象转换为 JSON?

我从 tikerpop 蓝图中尝试了以下操作,但它不起作用

我从 dse 得到一个 GraphResultSet 对象,它有顶点和边。我想以 JSON 格式输出。

0 投票
1 回答
71 浏览

tinkerpop - 将 GraphSON 数据加载到具有自定义顶点 ID 的 DSE 图中时出错

我创建了一个带有自定义顶点 ID 的模式,例如:

schema.vertexLabel('foo').partitionKey('_id').ifNotExists().create()

然后我用数据填充了一个图表。现在我想通过 GraphSON 将该数据传输到另一个图表。新图实例具有相同的架构。

为此,我首先从填充的图表中导出数据:

graph.io(graphson()).writeGraph('/integration-data/flex-test-data.json')

但是,当我尝试将数据导入空图形实例时:

graph.io(graphson()).readGraph('/integration-data/flex-test-data.json')

我收到错误消息“具有自定义 ID 的顶点必须在创建时指定其 ID。” 这在我切换到自定义 ID 之前有效。我已确认 id 存在于导出的文件中。

这是不可能的吗?

0 投票
1 回答
649 浏览

gremlin - 如何可视化graphson数据?

我需要为提供的数据构建 Graphson 格式,我已经完成了该操作,现在我的问题是,我如何像在 yEd for graphml 中那样可视化graphson。A)是否有任何工具可以执行此操作?B)如果没有,那么我是否需要进行任何更改才能在任何工具中对其进行可视化?

0 投票
2 回答
865 浏览

python - Adding a Graph Vertex directly to CosmosDB in GraphSON format using gremlinpython

I am using gremlinpython to connect to a CosmosDB graph and would like to be able to directly add a vertex using a GraphSON formatted dictionary. Specifically, I would like to avoid having to dynamically build a gremlin query such as:

and instead run something like:

Or something to that effect. The Azure portal has a JSON representation of vertices from a query I run (e.g. "g.V()"), but I would like to be able to get that into Python using gremlinpython, make updates, then send the JSON dict back to update or add a vertex. I can't seem to find any documentation on how to convert between a GraphSON dict and gremlin objects or queries.

0 投票
1 回答
111 浏览

azure-cosmosdb - 格式化 CosmosDB Gremlin 查询

我是 Gremlin 和 CosmosDB 的新手。我一直在关注 tinkerpop 教程,并且正在使用 TinkerFactory.createModern() 测试图。

在此处输入图像描述

我正在寻找的是从 cosmosdb 返回一个与此类似的 graphson 对象。

我的想法是尝试

我真正得到的是下面的图片。我希望拥有单个用户对象,以及一系列已知对象和软件对象。

如果可能的话,您能否解释一下需要使用哪些步骤来获得这种格式。

在此处输入图像描述

希望我的问题很清楚,感谢任何可以提供帮助的人=)

0 投票
1 回答
1016 浏览

gremlin - 从 gremlin 服务器获取正确数据的问题

我遇到了一系列让我发疯的荒谬问题。我正在努力完成几件事:

  1. 我正在尝试设置我的 gremlin 服务器以“加载”某个格式的json文件,并在graphson那里遇到非常奇怪的问题,我将详细介绍。

  2. 我正在尝试运行一个简单的 ajax 调用来查询该数据,但是 - 我不仅无法获得我想要的数据(这可能是有道理的,因为 gremlin 拒绝加载它),我似乎得到了一些我想要的数据不知道它来自哪里。

  3. 我试图弄清楚如何在我的终端上测试 gremlin 服务器,但我无法运行查询,因为即使它 100% 运行并且我的 ajax 调用可以看到它也会./gremlin-server.sh status返回。Server not running

Gremlin 没有加载文件

首先,我正在运行 Gremlin v.3.4.3,可以在此处找到。我用来运行 gremlin 的命令是

bin/gremlin-server.sh data/gremlin-server-rest-modern.yaml

Gremlin Server 下载附带 yaml 文件,其内容为:

现在,据我了解,要注意的重要一点是graph导致properties文件的组件。我正在加载的属性文件是tinkergraph-empty.properties,其内容是:

文件名 ,tinkergraph-empty暗示了一些重要的事情:gremlin 服务器不会加载图表。很酷 - 当我启动 gremlin 服务器时,它会正常加载我可以预期的结果:

具体来说,这条线很有希望:[INFO] ServerGremlinExecutor - A GraphTraversalSource is now bound to [g] with graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]

它“加载”的图(我假设它必须初始化一个图)的顶点和边为零。

当我运行我的 ajax 调用时,正如我所承诺的,我稍后会进入,我成功地 POST 到服务器。它已启动并正在运行。一切都很好。

然而...

当我更改tinkerpop-empty.properties文件夹以加载图表时,事情变得非常奇怪。我要这样改变它:

我现在加载了一个名为的数据文件夹tinkerpop-crew.json并添加了一个graphFormat: graphson. 这应该是正确的。json 文件可以在这里找到,属性文件遵循这个文件的格式。

现在,当我运行它时,我得到了一个截然不同的结果:

嗯?顶点已经存在?这不可能。我什至从来没有运行过这个文件,为什么会有任何记忆呢?就 gremlin 而言,我什至从未加载过图表。也许它会启动一个图表并忘记从内存中删除它或其他东西,对吧?

好吧,让我们创建我们自己的文件并只初始化一个 Vertex 和一些奇怪的素数并且没有边。让我们称之为tinkerpop-crew2.json

{"id":{"@type":"g:Int64","@value":47284629},"label":"person"}.

可能不是素数。任何。好的,太棒了,成功了!

注意这里:[INFO] ServerGremlinExecutor - A GraphTraversalSource is now bound to [g] with graphtraversalsource[tinkergraph[vertices:1 edges:0], standard]。一个顶点。

当我们将服务器配置为再次使用此文件时会发生什么?

和以前一样的错误。这到底是怎么回事?还有两件事引起了我的注意:

  1. ERROR] GremlinServer - Gremlin Server Error java.lang.IllegalArgumentException: Vertex with id already exists: 1. 是说只有一个顶点存在,还是 ID 为“1”的顶点存在?因为我的所有顶点的 ID 都不是 1。也就是说,直到...

  2. 您注意到这甚至没有加载我的文件![INFO] ServerGremlinExecutor - A GraphTraversalSource is now bound to [g] with graphtraversalsource[tinkergraph[vertices:7 edges:6], standard]. 我的文件没有 7 个顶点和 6 个边。它有 1 个顶点和 0 个边。这实际上看起来很可疑,就像它正在加载原始tinkerpop-crew.json文件或类似的东西,即使当我们最初加载它时,INFO 消息说:[INFO] ServerGremlinExecutor - A GraphTraversalSource is now bound to [g] with graphtraversalsource[tinkergraph[vertices:6 edges:14], standard].

好的,所以我不知道这里发生了什么。

运行我的 ajax 查询以查看发生了什么

我有一个非常非常简单的查询,我使用 AJAX 调用运行和发布:

好的,有几件重要的事情。该q变量是我发送到 Gremlin 服务器以返回一些数据的查询,它看起来像这样:

q = 'nodes = g.V().limit(15).toList();edges = g.V(nodes).aggregate('node').outE().as('edge').inV().where(within('node')).select('edge').toList();[nodes,edges]'

这个查询本质上应该返回一个节点和边的列表。现在,我想回顾三个案例:

tinkerpop-empty.properties(实际上是空的):

第一种情况是使用未更改的 tinkerpop-empty.properties 文件。请记住,当我加载它时,我得到的输出是:

[INFO] ServerGremlinExecutor - A GraphTraversalSource is now bound to [g] with graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]

这意味着修补图中不应该有任何信息。我应该收到一个空列表。但是,当我打电话时,我得到了这个:

这是开发人员控制台中的输出(来自 console.log(retrvData))。有各种各样的数据。看,节点的长度是 7,边是 6。听起来很熟悉?为什么 gremlin 加载这些数据?为什么将它发送到我的 ajax 查询?

tinkergraph-empty.properties(修改为使用 tinkerpop-crew.json)

好吧都可以。让我们运行下一个properties文件。请记住,我们tinkerpop-crew.json现在使用的 graphFormat 设置为 graphson。

当然,我得到了与以前相同的错误,即java.lang.IllegalArgumentException: Vertex with id already exists: 1. 我的服务器也关闭了:

让我们转到我的 AJAX 查询,看看我们得到了什么。

没什么,当然。我的 gremlin 服务器崩溃了。看起来它可能正在加载正确的文件,因为 INFO 日志说A GraphTraversalSource is now bound to [g] with graphtraversalsource[tinkergraph[vertices:6 edges:14], standard]. 我还没有验证这是否正确......这并不容易。

tinkerpop-empty.properties 加载 tinkerpop-crew2.json

我们第一次跑tinkerpop-crew2.json,一切都很顺利。我们将 ID 更改为一些奇怪的数字并且没有抛出异常。此外,图表似乎加载了正确的内容。现在让我们再次运行它,并将 ID 更改为4724729456382.

好的,哇,我边走边打字,看看我刚刚找到了什么:

这是我现在的内容tinkerpop-crew2.json!这里发生了什么?为什么 gremlin-server 将信息转储到该文件?如果您看到最后一行,它包含文件的原始内容:

{"id":{"@type":"g:Int64","@value":47284629},"label":"person"}

好吧,真的,@tinkerpop,到底是什么?

我想现在是有道理的,为什么当我第二次运行文件时,它再次抛出该错误并说 id 为 1 的顶点已经存在!

可笑的是,我离题了!让我们删除该文件的非原始部分并运行它:

{"id":{"@type":"g:Int64","@value":47284629},"label":"person"}

好的,使用我应该期待的正确 INFO 运行良好:[INFO] ServerGremlinExecutor - A GraphTraversalSource is now bound to [g] with graphtraversalsource[tinkergraph[vertices:1 edges:0], standard].

现在,让我们运行 AJAX 调用...

啊!!一样!!

请注意节点列表的长度为 7,边的长度为 6!例如,假设它正在加载某些东西附加我的文件,它应该是节点长度 8 和边长 7!这里发生了什么?

接受的答案

解决方案是进入scripts/generate-modern.groovy并注释掉这些行:

0 投票
5 回答
1066 浏览

python - 我如何使用 GraphSON v2 而不是 v3?

我正在尝试在 python 中运行一段代码,它使用来自 Microsoft Azure 的 Cosmos DB。我目前正在使用 gremlinpython 3.2.6 和最新版本的 Cosmos(默认在 microsoft azure 上),但两者之间似乎存在一些兼容性问题。

当我运行我的代码时,出现以下错误;

我已经读到我应该尝试使用 GraphSON v2 而不是 V3,但不知道如何,有人可以帮忙吗?

0 投票
1 回答
607 浏览

python - 如何在 Python Gremlin 中添加 g:Vertex GraphSON?

我将 a 的示例顶点 GraphSONg:Vertex放在一个文件中:

尝试将其读入 Python Gremlin Server:

产生错误:

GremlinServerError: 500: org.apache.tinkerpop.shaded.jackson.databind.JsonMappingException: 无法按要求反序列化 JSON 值。嵌套异常:java.lang.InstantiationException:无法将 JSON ('g:Vertex') 中包含的检测类型的值反序列化为对象映射器参数中指定的类型(接口 java.util.Map)。这些类型是不兼容的。在 [来源:(ByteArrayInputStream);行:1,列:36]

我试过弄乱要指定的graphson_readermessage_serializer参数,但我无法克服那个错误。 DriverRemoteConnectionGraphSONSerializersV3d0

如何将上面的示例顶点 GraphSON 读入 Python 的 Gremlin 服务器的图形?