graph-databases - 图数据库 : Node as a property of a relationship

标签 graph-databases

我正在尝试分析 graphDB 作为问题域的 RDBMS 的替代方案。这是我试图解决的问题的类比。

P:MichaelP:Angela r:like_to_eat G:AppleG:面包。 G:AppleG:Breadr:available_in S:WalmartS:Whole Foods 。 到目前为止,一切都很简单。这是我认为最能表达该图的图像。

Graph database

问题是当我尝试指定安吉拉喜欢全食超市的苹果和沃尔玛的面包时。迈克尔喜欢吃沃尔玛的苹果和全食超市的面包。我怎样才能在图表中表示类似的东西?听起来我需要超图的概念才能解决这个问题,但我也听说任何超图问题也可以用属性图来解决。可以使用 Neo4j 或 CosmosDB 等标准图形解决方案来解决这个问题吗?有人可以帮我解决这个问题

最佳答案

您可以在 Person 中“具体化”三向关系(GroceryStorePreference 之间)。节点(比如说),产生这样的数据模型:

enter image description here

在 neo4j 中,您可以使用此 Cypher 查询来表示“Angela 喜欢 Whole Foods 的苹果和 Walmart 的面包”:

MERGE (angela:Person {name: 'Angela'})
MERGE (apple:Grocery {name: 'Apple'})
MERGE (bread:Grocery {name: 'Bread'})
MERGE (wf:Store {name: 'Whole Foods'})
MERGE (wm:Store {name: 'Walmart'})
CREATE
  (angela)-[:LIKES]->(pref1:Preference),
  (pref1)-[:ITEM]->(apple),
  (pref1)-[:AT_STORE]->(wf),
  (angela)-[:LIKES]->(pref2:Preference),
  (pref2)-[:ITEM]->(bread),
  (pref2)-[:AT_STORE]->(wm)

关于graph-databases - 图数据库 : Node as a property of a relationship,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61395285/

相关文章:

Neo4j:查询以查找关系最多的节点及其连接的节点

graph - 是否可以在 orientdb 图形数据库中创建子图?

http - ArangoDB - 图创建基础

ibm-cloud - BlueMix 中的 IBM Graph 出现 "POST is not allowed"错误

database - Neo4j - 查找从未与其他节点有任何关系的节点

elasticsearch - 图形,文本和分析组合搜索

nosql - 如何组织图数据库中的节点

c++ - 是否有带有 C++ 语言绑定(bind)的图形数据库?

python - 无法在Python中重现灯泡/py2neo来创建边缘(关系)

neo4j - 在neo4j中创建两个节点之间的多重关系