Graph 图形数据库边缘是否可以有多个起始节点?

Graph 图形数据库边缘是否可以有多个起始节点?,graph,neo4j,hypergraph,nosql,Graph,Neo4j,Hypergraph,Nosql,我正在为资格规则设计一个图形数据库。一些资格规则要求用户选择两种特定产品(产品a和产品B)以符合产品C的资格 是否可以创建具有2个起始节点的图形边 我认为这将打破我认为是图db的基本构造块——它的邻接列表。但如果这是可能的,它将是非常强大的我的应用程序 2016年6月更新 更具体地说,我希望创建一条有2个起始节点和1个结束节点的定向边。因此,在商业规则术语中:如果Node=A和Node=B,则Node=C。现实世界的关系是:如果客户购买产品A和产品B,则客户符合产品C的资格。是的,您可以在Neo

我正在为资格规则设计一个图形数据库。一些资格规则要求用户选择两种特定产品(产品a和产品B)以符合产品C的资格

是否可以创建具有2个起始节点的图形边

我认为这将打破我认为是图db的基本构造块——它的邻接列表。但如果这是可能的,它将是非常强大的我的应用程序

2016年6月更新


更具体地说,我希望创建一条有2个起始节点和1个结束节点的定向边。因此,在商业规则术语中:如果Node=A和Node=B,则Node=C。现实世界的关系是:如果客户购买产品A和产品B,则客户符合产品C的资格。

是的,您可以在Neo4j中有多个起始节点,但不确定其他图形数据库

START a=node(0), b=node(1)
RETURN a,b
有关更多详细信息,请参阅。从Neo4j 2.0开始节点是可选的,Cypher将尝试根据label和where子句从查询中推断出起始点

编辑

我已经根据更新的问题编辑了答案。你需要的是一份工作。正如Wes Freeman所提到的,要对hypergraph Neo4j建模,您需要创建一个中间节点,连接其他两个节点和第三个节点。在您的场景中,用户将与两个产品(a和B)建立购买关系,有点像
(:user{Id:1})-[:PURCHASED]>(:Product{Name:a})
。然后您必须创建一个中间节点,比如ProductQualifier(我很不擅长命名东西),它与像
(:user{Id:1})-[:QUALIFIES]>(:ProductQualifier{Id:1})
这样的用户有关系。产品限定符将有3个关系,两个分别与产品A和B有关,第三个与产品C有关

(:Product{Name:'B'})(:Product{Name:'A'})

(ProductQualifier{Id:1}-[:qualified]->(:Product{Name:'C'})

这应该是你想要的

第二种方法是使用一个天生支持超图的数据库,比如,这样就可以省去创建额外节点的负担。虽然我想尝试它已经有一段时间了,但我没有机会使用它,所以我不知道关于它的API或它的限制的太多细节,但是它是相当清楚的n图形数据库


注意:如前所述,我不擅长命名。您可能应该更改标签名称,使其更适合您的业务模型。

通常,要在Neo4j中对hypergraph建模,您需要创建一个中间“组节点”连接所有要连接的节点,然后从该节点桥接到另一个节点。它不是真正的hypergraph,而是使用提供的工具表示hypergraph

下面是一个例子:

我认为这不是他想要的。他说的是边,而不是查询。@WesFreeman我也很困惑,但遗憾的是,我没有足够的声誉来评论和澄清他的问题。我以“创建一个具有两个起始节点的图边”回答了我的最佳理解。我假设他想要找到两个节点并在它们之间创建一条边。感谢您的澄清。是的,更具体地说(我将更新问题),我正在寻找一条有2个起始节点的定向边。换句话说:如果节点a和节点B,那么节点C。