本文介绍了从GraphDB查询详细信息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们正在尝试在Graphdb中实现面向客户的详细信息,我们只需一个查询就可以获取客户的详细信息,如他的地址、电话、电子邮件等。我们已经使用HAD地址构建了它,具有电子邮件边缘。

g.addV('member').property('id','CU10611972').property('CustomerId', 'CU10611972').property('TIN', 'xxxx').property('EntityType', 'Person').property('pk', 'pk')

g.addV('email').property('id','CU10611972E').property('pk', 'pk')

g.addV('primary').property('id','CU10611972EP').property('EmailPreference','Primary').property('EmailType', 'Home').property('EmailAddress', '[email protected]').property('pk', 'pk')

g.V('CU10611972').addE('has Email').to(g.V('CU10611972E'))

g.V('CU10611972E').addE('has Primary Email').to(g.V('CU10611972EP')

这是我们与客户建立电子邮件关系的方式。同样,我们与地址和电话也有关系。因此,现在我们正在使用此命令获取与此客户相关的json以用于电子邮件,

g.V('CU10611972').out('has Email').out('has Primary Email')

对于完整的客户详细信息,我们对每个Vertex、Phone、Emaiul和Address使用联合。

您能否建议是否有有效的方法来查询此详细信息?

推荐答案

这实际上归结为两件事。

  1. 通用图形数据建模
  2. 您正在使用的图形数据库支持和不支持的内容。

使用Gremlin,有几种方法可以为单个顶点建模此数据。

  1. 如果数据库支持,请列出类似[‘home’,‘mobile’]的名称列表,并使用元属性为每个名称附加一个电话号码。
  2. 据我所知,很多Gremlin实现都选择不支持元属性。在这些情况下,您有几个选择。(A)拥有一处‘Home’和另一处‘Mobile’属性。如果其中一个未知,则可以不创建该属性,也可以为其赋值,例如(B)使用前缀字符串,如[";Home:123456789";,";Mobile:123456789],并将它们存储在集合或列表(多属性)中,并使用startingWith谓词在Gremlin中访问它们。如g.V(id).properties('phone').hasValue(startingWith('Mobile')).value()

这篇关于从GraphDB查询详细信息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

11-03 11:52