我正在尝试分析 graphDB 作为问题域的 RDBMS 的替代方案。这是我试图解决的问题的类比。
P:Michael 和 P:Angela r:like_to_eat G:Apple 和 G:面包。 G:Apple 和 G:Bread 是 r:available_in S:Walmart 和 S:Whole Foods 。 到目前为止,一切都很简单。这是我认为最能表达该图的图像。
问题是当我尝试指定安吉拉喜欢全食超市的苹果和沃尔玛的面包时。迈克尔喜欢吃沃尔玛的苹果和全食超市的面包。我怎样才能在图表中表示类似的东西?听起来我需要超图的概念才能解决这个问题,但我也听说任何超图问题也可以用属性图来解决。可以使用 Neo4j 或 CosmosDB 等标准图形解决方案来解决这个问题吗?有人可以帮我解决这个问题
最佳答案
您可以在 Person
中“具体化”三向关系(Grocery
、 Store
和 Preference
之间)。节点(比如说),产生这样的数据模型:
在 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/