DSE图两个顶点标签的相同顶点部分?

时间:2017-05-24 06:02:18

标签: graph datastax-enterprise gremlin datastax-enterprise-graph

在我的情况下,有两个顶点标签:User,Seller。

使用自定义顶点id注册用户创建新顶点:

  g.addV(label,'User', 'id', '123456789', 'name', 'User1').next();

当用户登录并且他注册新业务时,他就成了卖方。    现在我希望相同的顶点id成为卖方标签的一部分,这是不可取的。

如果我使用卖家标签创建新顶点,那么卖家顶点将无法访问存储在用户顶点上的整个图表(hasmobile,hasaddress)。

有没有办法在DSE图中实现这一点?

1 个答案:

答案 0 :(得分:1)

TinkerPop和DSE Graph的语义(以及大多数图形实现 - Neo4j是我能想到的唯一例外)不允许顶点具有多个标签。您可能会想到这样的原因,即您在SQL数据库中的多个表中不存在行的原因。

有多种方法可以解决这个问题。做个人"顶点(而不是"用户"或"卖方")然后:

  1. 推断他们是否是"用户"或"卖方"从与他们相关的数据的某些方面。也许这是通过" isSeller"或"是用户"属性。然后你会用

    查询卖家

    g.V().hasLabel('Person').has('isSeller',true)

  2. 创建一个子类型系统,您可以在其中连接" Person"顶点到"用户"顶点或"卖方"顶点。然后,您可以执行类似"只有当他们是卖家时才能找到用户"与

    g.V().hasLabel('User').has('someid','12345'). filter(__.in('isAPerson').out('isASeller'))