У меня есть общий вопрос о моделировании в базе данных графов, который я просто не могу понять.
Как вы смоделируете этот тип отношений: «Ньютон изобрел исчисление»?
В простом графике вы можете смоделировать его следующим образом:
Newton (node) -> invented (relationship) -> Calculus (node)
... куча «изобретенных» графических отношений по мере того, как вы добавляете больше людей и изобретений.
Проблема в том, что вам нужно добавить к взаимосвязи несколько свойств:
... отношения между этими свойствами и другими узлами, такие как:
Итак, теперь кажется, что «отношения реального мира» («изобретенные») должны на самом деле быть узлом в графе, и граф должен выглядеть так:
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. Не совсем уверен, что это та же проблема.
Какие руководящие принципы вы используете, чтобы выяснить, должны ли «отношения реального мира» быть на самом деле узлами графа, а не отношениями графа?
Если есть какие-нибудь хорошие книги по этой теме, я хотел бы знать . Спасибо!