graph - 如何在 gremlin 中输出当前顶点及其邻居?

标签 graph gremlin titan nosql

我正在尝试对图表进行复杂的查询,并且成功地完成了。在该查询中输出的顶点也有一些别名顶点通过别名关系连接到这些顶点。

现在我希望输出所有以前的顶点及其别名顶点,但我可以做/或(原始顶点或每个顶点的别名顶点)。

如果有人知道输出特定顶点的相邻顶点并在同一查询中输出该顶点的方法,我想我的问题就可以解决。

有什么建议吗?

最佳答案

让我们考虑以下示例:

[AliasUser1] <---'别名'--- [User1] ---'喜欢'---> [ItemA] <---'喜欢'--- [User2] ---'别名'---> [AliasUser2]

使用以下代码:

result = [] as Set;
user1.out('likes')  // we are at ItemA
     .in('likes')   // we are at User2 but also back at User1
     .store(result) // store the users vertices
     .out('alias')  // we are at the alias vertices 
     .store(result) // store the alias vertices
     .iterate()     // run

你得到:

gremlin> result.name
==>User2
==>AliasOfUser2
==>User1
==>AliasOfUser1

所以我想 store 是解决问题的关键。

以下是示例的示例图:

g = new TinkerGraph()

user1 = g.addVertex()
user1.name ='User1'
user2 = g.addVertex()
user2.name ='User2'
itemA = g.addVertex()
itemA.name ='ItemA'
myAlias1 = g.addVertex()
myAlias1.name ='AliasOfUser1'
myAlias2 = g.addVertex()
myAlias2.name ='AliasOfUser2'

g.addEdge(user1, itemA, 'likes')
g.addEdge(user2, itemA, 'likes')
g.addEdge(user1, myAlias1, 'alias')
g.addEdge(user2, myAlias2, 'alias')

关于graph - 如何在 gremlin 中输出当前顶点及其邻居?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25004544/

相关文章:

c++ - 图中的路径数

java - TinkerPop 图中的深度优先树遍历

java - 在 Titan 数据库中使用 kryo 序列化对象

java - Peapod : Impl is not abstract and does not override abstract method start() in peapod. FramedVertexTraversal

r - 在 igraph 中查找顶点的第 n 级邻居

graph - Neo4j:合并重复节点

python - 删除轴上选定的刻度

python - 如何使用 gremlin python 连接到远程 Neo4j 数据库?

java - 在 gremlin 服务器脚本文件中使用自定义库

titan - 通过 has Step 检索图中信息的最佳方法是什么