标签: tinkerpop

用什么机制来确定tinkerpop/titan中顶点的绝对顺序?

执行以下遍历时:

graph.addVertex("a")
graph.addVertex("b")
graph.addVertex("c")

graph.traversal().V().range(0,2)
graph.traversal().V().range(2,3)
Run Code Online (Sandbox Code Playgroud)

在使用范围功能时,是什么决定了我获得这些顶点的顺序?我保证得到所有三个顶点a,b和c吗?

titan tinkerpop

5
推荐指数
1
解决办法
62
查看次数

无法删除/删除Vertex Titan 1.0 Tinkerpop 3上的多个属性键

非常基本的问题,
我刚刚将我的Titan从0.54升级到Titan 1.0 Hadoop 1/TP3 3.01版本.

我遇到删除值的问题

Property key: Cardinality.LIST/SET
Run Code Online (Sandbox Code Playgroud)

也许这是由于升级过程或仅仅是我的TP3误解.

 // ----- CODE ------:

tg = TitanFactory.open(c);

TitanManagement mg = tg.openManagement();

//create KEY (Cardinality.LIST) and commit changes
tm.makePropertyKey("myList").dataType(String.class).cardinality( Cardinality.LIST).make();
mg.commit();

//add vertex with multi properties

Vertex v = tg.addVertex();

v.property("myList", "role1");
v.property("myList", "role2");
v.property("myList", "role3");
v.property("myList", "role4");
v.property("myList", "role4");
Run Code Online (Sandbox Code Playgroud)

现在,我想删除所有值"role1,role2 ...."

// iterate over all values and try to remove the values 
 List<String> values = IteratorUtils.toList(v.values("myList"));
        for (String val : values) {
            v.property("myList", val).remove();
         }
  tg.tx().commit();
Run Code Online (Sandbox Code Playgroud)

// …

gremlin titan tinkerpop tinkerpop3

5
推荐指数
2
解决办法
2129
查看次数

Orientdb Cant从Java打开数据库

我从orientdb控制台创建了一个数据库:

create database plocal:/C:/Development/orientdb/databases/testdb root root plocal graph
Run Code Online (Sandbox Code Playgroud)

我启动了服务器以确保我的数据库已成功创建.我打开了网络界面:

localhost:2480
Run Code Online (Sandbox Code Playgroud)

我使用rootas user和rootpassword 登录testdb .一切都很好.但是,当我现在想要从Java代码连接到我的数据库时:

    OrientGraph graph = null;

    try {
        graph = new OrientGraph("plocal:C:/Development/orientdb/databases/testdb", "root", "root");

        System.out.println("success");
    } catch(OException e) {
        System.out.println("no success - " + e.getMessage());

        e.printStackTrace();
    } finally {
        if(graph != null) {
            graph.shutdown();
        }
    }
Run Code Online (Sandbox Code Playgroud)

我得到以下异常:

Exception in thread "main" com.orientechnologies.orient.core.exception.OSecurityAccessException: User or password not  valid for database: 'testdb'
at com.orientechnologies.orient.core.metadata.security.OSecurityShared.authenticate(OSecurityShared.java:150)
at com.orientechnologies.orient.core.metadata.security.OSecurityProxy.authenticate(OSecurityProxy.java:83)
at com.orientechnologies.orient.core.db.record.ODatabaseRecordAbstract.open(ODatabaseRecordAbstract.java:128)
at com.orientechnologies.orient.core.db.ODatabaseWrapperAbstract.open(ODatabaseWrapperAbstract.java:49)
at com.orientechnologies.orient.core.db.graph.OGraphDatabase.open(OGraphDatabase.java:92)
at de.hof.iisys.relationExtraction.freebase.tinkerpop.DAO.openGraph(DAO.java:30)
at de.hof.iisys.relationExtraction.freebase.main.Main.main(Main.java:44) …
Run Code Online (Sandbox Code Playgroud)

orientdb tinkerpop

4
推荐指数
1
解决办法
2471
查看次数

TitanDB 索引没有改变状态

到目前为止,我想删除现有索引并按照文档中的步骤进行操作。我现在没有配置单独的索引后端。但是,当我到达必须等待索引状态更改的步骤时,m.awaitGraphIndexStatus它会永远等待更改并超时并出现以下错误:

GraphIndexStatusReport[success=false, indexName='usernameComposite', targetStatus=DISABLED, notConverged={username=INSTALLED}, converged={}, elapsed=PT1M0.092S]
Run Code Online (Sandbox Code Playgroud)

当我尝试创建一个新的时,也会发生同样的情况。任何想法可能导致这种情况?

我正在使用以下代码片段创建 indizes:

graph.tx().rollback()
mgmt = graph.openManagement()
name = mgmt.getPropertyKey('username')
mgmt.buildIndex('username-composite', Vertex.class).addKey(name).unique().buildCompositeIndex()
mgmt.commit()
mgmt.awaitGraphIndexStatus(graph, 'username-composite').call()
Run Code Online (Sandbox Code Playgroud)

gremlin titan tinkerpop

4
推荐指数
2
解决办法
1868
查看次数

泰坦Db无视指数

我有一个带有几个索引的图表.它们是两个具有标签限制的综合指数.(两者在不同的属性/标签上完全相同).一个肯定似乎工作,但另一个没有.我已完成以下配置文件()以加倍检查:

一个叫做KeyOnNode:属性uid和标签node:

gremlin> g.V().hasLabel("node").has("uid", "xxxxxxxx").profile().cap(...)
==>Traversal Metrics
Step                                                               Count  Traversers       Time (ms)    % Dur
=============================================================================================================
TitanGraphStep([~label.eq(node), uid.eq(dammit_...                     1           1           2.565    96.84
  optimization                                                                                 1.383
  backend-query                                                        1                       0.231
SideEffectCapStep([~metrics])                                          1           1           0.083     3.16
                                            >TOTAL                     -           -           2.648        -
Run Code Online (Sandbox Code Playgroud)

以上是完全可以接受的,效果很好.我假设魔术线是backend-query.

另一种叫做NameOnSuperNode:属性name和标签supernode:

gremlin> g.V().hasLabel("supernode").has("name", "xxxxxxxx").profile().cap(...)
==>Traversal Metrics
Step                                                               Count  Traversers       Time (ms)    % Dur
=============================================================================================================
TitanGraphStep([~label.eq(supernode), name.eq(n...                     1           1        5763.163   100.00
  optimization                                                                                 2.261
  scan                                                                                         0.000
SideEffectCapStep([~metrics])                                          1           1           0.073     0.00 …
Run Code Online (Sandbox Code Playgroud)

gremlin titan tinkerpop tinkerpop3

4
推荐指数
1
解决办法
1977
查看次数

Gremlin - 遍历树图中的叶节点

我的图中有树形数据结构,如下图所示。每种颜色代表具有不同标签的节点,其关系如员工 -> 应用程序 -> 项目 -> pv -> 扫描)。

问题#1:

我想找到顶部节点 0 的所有叶节点(绿色的)。

我尝试了下面的循环代码,它返回带有标签员工的所有节点。不仅仅是叶节点。

g.V().has('person', 'id', '0').repeat(__.in('reportsTo')).emit().values('id')
Run Code Online (Sandbox Code Playgroud)

示例图可以在gremlinbin中找到。

如何找到所有绿色叶子节点?

更新#1:

正如评论中提到的,我尝试了树模式。但它不允许我在树上调用 getLeafObjects() 。不确定缺少什么。另外,我再次只能创建员工节点树。如何遍历扫描节点?

> tree = g.V().has('person', 'id', '0').repeat(__.in('reportsTo')).emit().tree()
>  tree.getLeafObjects()
No signature of method: org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal.getLeafObjects() is applicable for argument types: () values: []
Run Code Online (Sandbox Code Playgroud)

问题2:

如何根据 max(id) 检索每个父项下的子项中的子顶点?因此,在我的示例图中,每个黑色顶点可以有一个或多个绿色子顶点。我想找到每个黑色顶点下具有 max(property) 的绿色顶点。

在此输入图像描述

gremlin tinkerpop janusgraph

4
推荐指数
1
解决办法
3675
查看次数

如何使用gremlin python在gremlin服务器上提交更改

我正在编写一个脚本,使用gremlin-python库在gremlin-server上创建一个图形.我找不到任何关于图书馆的好文档.

这是我正在尝试的代码结构:

from    gremlin_python                                  import statics
from    gremlin_python.structure.graph                  import Graph
from    gremlin_python.process.graph_traversal          import __
from    gremlin_python.process.strategies               import *
from    gremlin_python.driver.driver_remote_connection  import DriverRemoteConnection

graph = Graph()

g = graph.traversal().withRemote(DriverRemoteConnection('ws://localhost:8182/gremlin','try1'))

# Drop all vertices in the graph to create a new one
g.V().drop().iterate()

a = g.addV('person').property('name', 'Tushar').property('pronoun', 'me')
b = g.addV('person').property('name', 'Avi').property('pronoun','you')

e1 = a.addE('knows').to(b).property('relation','self')

c = g.addV('subject').property('name','maths')

e2 = a.addE('studies').to(c)

e3 = b.addE('studies').to(c)
e3.next()

v = g.V().toList()
e = g.E().toList()

print(v)
print(e)
Run Code Online (Sandbox Code Playgroud)

这段代码只给我2个顶点和1个边.

我的一些尝试:

  • 当我尝试不使用代码时.next(),图表上没有提交数据.
  • 当我给e1一个.next() …

python gremlin tinkerpop gremlin-server

4
推荐指数
1
解决办法
1237
查看次数

如何列出正在运行的gremlin查询?如何取消慢速或长时间运行的查询?

大多数数据库为用户提供了列出正在运行的查询的机制,并在需要时取消它们 这对于终止花费大量时间的查询特别有用.例如,在MySQL中你会做这样的事情:

mysql>show processlist;
mysql> kill <pid>;
Run Code Online (Sandbox Code Playgroud)

我怎样才能在gremlin服务器上做类似的事情?到目前为止,唯一可用的旋钮是scriptEvaluationTimeoutyaml配置,它允许您在超时时终止请求.我对能够列出所有正在运行的查询的API以及可以让我按ID删除查询的API感兴趣.如果不支持,tinkerpop是否有计划在较新版本中支持它?就像是:

g.query()
g.query('123')
g.query('123').cancel()
Run Code Online (Sandbox Code Playgroud)

graph-databases gremlin tinkerpop tinkerpop3 gremlin-server

4
推荐指数
1
解决办法
290
查看次数

Gremlin:在单个 gremlin 查询中添加一条边并删除一条边

如何在单个 gremlin 查询中向相同顶点类型添加边和删除边。

假设我们有两种类型的顶点类型 A --is--> B 现在我有一个顶点连接到 B 的其他顶点。

我想将 A 的顶点更新为 B 的其他顶点。

目前,我正在删除当前的 B 顶点,然后添加新的顶点。

gremlin datastax-enterprise tinkerpop datastax datastax-enterprise-graph

4
推荐指数
1
解决办法
1357
查看次数

变量 - 海王星上的 Gremlin

我位于 Gremlin 控制台并连接到 AWS Neptune 数据库

g.V().hasLabel('Risk').toList()

提供了预期的结果,但是当我尝试将结果分配给变量时

risks = g.V().hasLabel('Risk').toList()

我收到下面的消息 - 令牌识别错误显然会出现在变量名称上,因为当我更改变量名称时,消息的位置和“at”部分会发生变化。

{"requestId":"650d7c4b-44d1-43f8-b9a3-fbf085cc3ead","code":"MalformedQueryException","detailedMessage":"Query parsing failed at line 1, character position at 3, error message : token recognition error at: 'ks'"}

我在 Tinkerpop 数据库上尝试了同样的操作,并且变量分配有效。我缺少什么?

gremlin tinkerpop amazon-neptune

4
推荐指数
1
解决办法
1864
查看次数