我有一个关于在图形数据库中建模的一般性问题,我似乎无法理解。
如何建模这种关系:“牛顿发明了微积分”?
在简单图中,您可以这样建模:
Newton (node) -> invented (relationship) -> Calculus (node)
...所以随着你添加更多的人和发明,你会有一堆“虚构”的图形关系。
问题是,你开始需要添加大量的关系属性:
- invention_date
- influential_concepts
- influential_people
- books_inventor_wrote
...然后你会想要开始在这些属性和其他节点之间创建关系,例如:
- influential_people:与人物节点相关联的关系
- 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。不太确定这是否是同一个问题。
您用来确定"真实世界关系"是否应该成为图形节点而不是图形关系的一些指导原则是什么?
如果有关于这个主题的好书籍,我很想知道。谢谢!