我有一个关于在图形数据库中建模的一般性问题,我似乎无法理解。
你如何模拟这种类型的关系:“牛顿发明了微积分”?
在一个简单的 graph 中,你可以这样建模:
Newton (node) -> invented (relationship) -> Calculus (node)
...因此,当您添加更多人和发明时,您将拥有一堆“发明”的图形关系。
问题是,您开始需要向关系中添加一堆属性:
- 发明日期
- 有影响力的概念
- 有影响力的人
- books_inventor_write
...并且您将要开始在这些属性和其他节点之间创建关系,例如:
- 影响人:与人节点的关系
- books_inventor_wrote:与书节点的关系
所以现在看起来“现实世界的关系”(“发明”)实际上应该是图中的一个节点,并且该图应该如下所示:
Newton (node) -> (relationship) -> Invention of Calculus (node) -> (relationship) -> Calculus (node)
更复杂的是,其他人也参与了微积分的发明,所以现在的图形变成了这样:
Newton (node) ->
(relationship) ->
Newton's Calculus Invention (node) ->
(relationship) ->
Invention of Calculus (node) ->
(relationship) ->
Calculus (node)
Leibniz (node) ->
(relationship) ->
Leibniz's Calculus Invention (node) ->
(relationship) ->
Invention of Calculus (node) ->
(relationship) ->
Calculus (node)
所以我问这个问题是因为您似乎不想在实际的图形数据库“关系”对象上设置属性,因为您可能希望在某些时候将它们视为图中的节点。
它是否正确?
我一直在研究Freebase Metaweb Architecture,他们似乎将一切都视为一个节点。例如,Freebase 有一个Mediator/CVT的想法,您可以在其中创建一个“Performance”节点,将“Actor”节点链接到“Film”节点,如下所示:http ://www.freebase.com/edit /topic/en/the_last_samurai。不太确定这是否是同一个问题。
您使用哪些指导原则来确定“现实世界的关系”是否实际上应该是图节点而不是图关系?
如果有任何关于这个主题的好书,我很想知道。谢谢!