从我看过的文章中,Neo4j实现了apache tinkerpop,这使我认为我可以使用gremlin python,而不是连接到gremlin服务器,我可以将python代码指向neo4j服务器,并将其视为gremlin服务器。
但是,我在网上找不到任何信息来显示如何执行此操作,因此我认为我可能误解了一些信息。
谢谢
亚历克斯
Is it possible to generate gremlin script from the bytecode?
I am working on a POC in which I need to query graph Azure CosmosDB database via Gremlin API.
Currently, Azure CosmosDB does not support bytecode. Azure development team has started working on this but no release timeline has been published so far.
I would like to prepare working code which would require minimum refactoring in future when bytecode support will be generally available.
Based on the Apache TinkerPop docs …
python bytecode gremlin azure-cosmosdb-gremlinapi gremlinpython
TinkerPop 文档描述了 Python 的 GLV。但是,那里提供的示例是围绕同步代码构建的。有一个aiogremlin库,旨在支持在 Python 的 asyncio 代码中使用 Gremlin。不幸的是,该项目似乎已停止。
官方 GLV 是否支持 asyncio 或者有没有办法在异步 Python 应用程序中使用 Gremlin?
我创建了一个长 Gremlin 链接命令作为字符串。在 NodeJS 或 Python 中执行它的最佳方法是什么?
g.addV("person").
property(id, 1).
property("name", "marko").
property("age", 29).as("1").
addV("person").
property(id, 2).
property("name", "vadas").
property("age", 27).as("2").
addV("software").
property(id, 3).
property("name", "lop").
property("lang", "java").as("3").
addV("person").
property(id, 4).
property("name", "josh").
property("age", 32).as("4").
addV("software").
property(id, 5).
property("name", "ripple").
property("lang", "java").as("5").
addV("person").
property(id, 6).
property("name", "peter").
property("age", 35).as("6").
addE("created").from("1").to("3").
property(id, 9).
property("weight", 0.4).
addE("knows").from("1").to("2").
property(id, 7).
property("weight", 0.5).
addE("knows").from("1").to("4").
property(id, 8).
property("weight", 1.0).
addE("created").from("3").to("4").
property(id, 11).
property("weight", 0.4).
addE("created").from("3").to("6").
property(id, 12).
property("weight", 0.2).
addE("created").from("4").to("5").
property(id, 10).
property("weight", 1.0)
Run Code Online (Sandbox Code Playgroud)
上面给出的命令在 …
我有一个 python flask web 应用程序,它使用gremlin_python. 一个基本问题是初始化图遍历对象的正确方法。
g = traversal().withRemote(DriverRemoteConnection(...)并g跨请求保留遍历变量吗?(所有请求都针对同一个图表。我尝试了这个并开始tornado.iostream.StreamClosedError断断续续。谢谢你
假设我想从数据库中获取一些顶点:
g.V(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)
然后我有另一组顶点:
g.V(4, 5, 6)
Run Code Online (Sandbox Code Playgroud)
想象一下,这不仅仅是g.V(),而是一些更复杂的遍历来获取我的顶点。但遍历必须从 开始V(),因为我想从所有节点中进行选择。
我们还假设我想多次这样做。所以我可能想合并 7 个不同的结果集。每一种方法都可以采用完全不同的方式来获得结果。
现在我想将这两个结果合并到一个结果集中。我的第一个想法是:
g.V(1, 2, 3).fold().as('x').V(4, 5, 6).fold().as('x').select(all, 'x').unfold()
Run Code Online (Sandbox Code Playgroud)
但这行不通。第二次调用fold将清除我的“局部变量”,因为这是一个障碍步骤。
我目前的尝试是这样的:
g.V(1, 2, 3).fold().union(identity(), V(4, 5, 6).fold()).unfold()
Run Code Online (Sandbox Code Playgroud)
这可行,但看起来有点太复杂了。如果我想重复 7 次,这将是一个非常复杂的查询。
有没有更好的方法来完成两个不同查询结果的简单合并?
这可能很容易,但我真的很难解决这个问题。我使用 gremlin python lib 和 aws neptune db。我知道顶点id,我只想获取顶点属性之一的值(python中的字符串类型),并更新它。
我尝试这样做:
print(g.V(event['securityEventManagerId']).values('sourceData'))
print(g.V(event['securityEventManagerId']).property('sourceData'))
print(g.V(event['securityEventManagerId']).property('sourceData').valueMap())
.....
Run Code Online (Sandbox Code Playgroud)
但我只是打印一些 python gremlin 对象GraphTraversal,例如,无法检索该值string
谁能帮我吗?
我正在尝试在Docker(v1.13.0)中设置Titan/Cassandra/Gremlin-Server堆栈.我面临的问题是,尝试连接到默认端口上的Gremlin-Server的应用程序8182报告错误(详情如下).
首先,这是一些相关的版本信息:
设置在a Dockerfile中进行,以便可重现.它假定一个卡桑德拉容器已经存在,在运行cassandra.yaml中start_rpc已设置为true.
该Dockerfile如下:
FROM openjdk:alpine
ENV TITAN 'titan-1.0.0-hadoop1'
RUN apk update && apk add bash unzip && rm -rf /var/cache/apk/* \
&& adduser -S -s /bin/bash -D srg \
&& wget -O /tmp/$TITAN.zip http://s3.thinkaurelius.com/downloads/titan/$TITAN.zip \
&& unzip /tmp/$TITAN.zip -d /opt && ln -s /opt/$TITAN /opt/titan \
&& rm /tmp/*.zip \
&& chown -R srg /opt/$TITAN/ \
&& /opt/titan/bin/gremlin-server.sh -i …Run Code Online (Sandbox Code Playgroud) 使用 gremlin 时,next() 和 iterate() 之间有什么区别?为什么调用 时 next() 返回添加的顶点g.addV(),而 iterate() 不返回?什么时候应该使用next(),什么时候应该使用iterate()?
我将图表中的所有值提取到名为节点的列表中:
\n\nnodes = g.V().valueMap(True).toList()\nRun Code Online (Sandbox Code Playgroud)\n\n对于每个节点,我想获取 id 但我不知道如何获取。例如我有一个名为 的字段'name'。要获取第一个顶点的名称,我会执行以下操作:
nodes[0][\xe2\x80\x98name\xe2\x80\x99]\nRun Code Online (Sandbox Code Playgroud)\n\n但我无法使用相同的方式获取第一个节点的 id。我不知道为什么。也许因为它是自动分配的而不是用户创建的字段,所以有不同的方式来获取它?
\ngremlinpython ×10
gremlin ×9
python ×5
tinkerpop ×3
tinkerpop3 ×2
bytecode ×1
janusgraph ×1
neo4j ×1
node.js ×1
python-3.x ×1
titan ×1