DSE 绘制两个顶点标签的相同顶点部分?
DSE graph same vertex part of two vertex labels?
在我的例子中有两个顶点标签:用户、卖家。
注册用户使用自定义顶点 ID 创建新顶点:
g.addV(label,'User', 'id', '123456789', 'name', 'User1').next();
当用户登录时,如果他注册了一家新公司,他就会成为卖家。
现在我希望相同的顶点 ID 成为卖方标签的一部分,这是无法实现的。
如果我创建带有卖家标签的新顶点,那么针对用户顶点存储的整个图(hasmobile、hasaddress)将无法通过卖家顶点访问。
有没有办法在 DSE 图中实现这个?
TinkerPop 和 DSE Graph(以及大多数图形实现 - Neo4j 是我能想到的唯一例外)的语义不允许一个顶点有多个标签。您可能认为原因是为什么 SQL 数据库的多个表中不存在一行。
您可以通过多种方式解决此问题。创建一个 "Person" 顶点(而不是 "User" 或 "Seller")然后:
从与他们相关的数据的某个方面推断他们是"User"还是"Seller"。也许这是用 "isSeller" 或 "isUser" 属性 完成的。然后您将使用
查询卖家
g.V().hasLabel('Person').has('isSeller',true)
创建一个子类型系统,将 "Person" 顶点连接到 "User" 顶点或 "Seller" 顶点。然后你可以用
做"find a user only if they are a seller"之类的事情
g.V().hasLabel('User').has('someid','12345').
filter(__.in('isAPerson').out('isASeller'))
在我的例子中有两个顶点标签:用户、卖家。
注册用户使用自定义顶点 ID 创建新顶点:
g.addV(label,'User', 'id', '123456789', 'name', 'User1').next();
当用户登录时,如果他注册了一家新公司,他就会成为卖家。 现在我希望相同的顶点 ID 成为卖方标签的一部分,这是无法实现的。
如果我创建带有卖家标签的新顶点,那么针对用户顶点存储的整个图(hasmobile、hasaddress)将无法通过卖家顶点访问。
有没有办法在 DSE 图中实现这个?
TinkerPop 和 DSE Graph(以及大多数图形实现 - Neo4j 是我能想到的唯一例外)的语义不允许一个顶点有多个标签。您可能认为原因是为什么 SQL 数据库的多个表中不存在一行。
您可以通过多种方式解决此问题。创建一个 "Person" 顶点(而不是 "User" 或 "Seller")然后:
从与他们相关的数据的某个方面推断他们是"User"还是"Seller"。也许这是用 "isSeller" 或 "isUser" 属性 完成的。然后您将使用
查询卖家g.V().hasLabel('Person').has('isSeller',true)
创建一个子类型系统,将 "Person" 顶点连接到 "User" 顶点或 "Seller" 顶点。然后你可以用
做"find a user only if they are a seller"之类的事情g.V().hasLabel('User').has('someid','12345'). filter(__.in('isAPerson').out('isASeller'))