问题标签 [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.
javascript - 普通 JSON 转 GraphSON 格式
我有两个问题:
我实际上可以在哪里找到 GraphSON 文件的基本格式,保证由 gremlin 控制台成功加载?我正在尝试将 JSON(大约 10-20 个字段)转换为另一个可由 gremlin 查询的文件,但我实际上找不到任何有关 graphson 格式保留的字段或我应该如何处理 ID 的相关信息等等。我导出了他们提供的现代图形,它甚至不是一个有效的 JSON(多个 JSON 根元素),而是一个 JSON 列表 [1] 我还看到了 outE、inE 等字段...这些字段是我手动必须做的创造?
如果我能够创建 JSON,我在哪里告诉服务器在我启动它时将其加载为基本图?在配置文件中还是在脚本中?
谢谢!阿德里安
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.
datastax - 使用 Graphson 转换 GraphResultSet JSON
我正在尝试将 GraphResultSet 对象转换为类似于 datastax studio 返回的 JSON 格式。我正在尝试使用 Graphson。是否有任何示例代码将结果对象转换为 JSON?
我从 tikerpop 蓝图中尝试了以下操作,但它不起作用
我从 dse 得到一个 GraphResultSet 对象,它有顶点和边。我想以 JSON 格式输出。
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 存在于导出的文件中。
这是不可能的吗?
gremlin - 如何可视化graphson数据?
我需要为提供的数据构建 Graphson 格式,我已经完成了该操作,现在我的问题是,我如何像在 yEd for graphml 中那样可视化graphson。A)是否有任何工具可以执行此操作?B)如果没有,那么我是否需要进行任何更改才能在任何工具中对其进行可视化?
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.
gremlin - 从 gremlin 服务器获取正确数据的问题
我遇到了一系列让我发疯的荒谬问题。我正在努力完成几件事:
我正在尝试设置我的 gremlin 服务器以“加载”某个格式的
json
文件,并在graphson
那里遇到非常奇怪的问题,我将详细介绍。我正在尝试运行一个简单的 ajax 调用来查询该数据,但是 - 我不仅无法获得我想要的数据(这可能是有道理的,因为 gremlin 拒绝加载它),我似乎得到了一些我想要的数据不知道它来自哪里。
我试图弄清楚如何在我的终端上测试 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]
。一个顶点。
当我们将服务器配置为再次使用此文件时会发生什么?
和以前一样的错误。这到底是怎么回事?还有两件事引起了我的注意:
ERROR] GremlinServer - Gremlin Server Error java.lang.IllegalArgumentException: Vertex with id already exists: 1
. 是说只有一个顶点存在,还是 ID 为“1”的顶点存在?因为我的所有顶点的 ID 都不是 1。也就是说,直到...您注意到这甚至没有加载我的文件!
[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
并注释掉这些行:
python - 我如何使用 GraphSON v2 而不是 v3?
我正在尝试在 python 中运行一段代码,它使用来自 Microsoft Azure 的 Cosmos DB。我目前正在使用 gremlinpython 3.2.6 和最新版本的 Cosmos(默认在 microsoft azure 上),但两者之间似乎存在一些兼容性问题。
当我运行我的代码时,出现以下错误;
我已经读到我应该尝试使用 GraphSON v2 而不是 V3,但不知道如何,有人可以帮忙吗?
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_reader
和message_serializer
参数,但我无法克服那个错误。 DriverRemoteConnection
GraphSONSerializersV3d0
如何将上面的示例顶点 GraphSON 读入 Python 的 Gremlin 服务器的图形?