У меня есть общий вопрос о моделировании в базе данных графа, которую я просто не могу обернуть вокруг.
Как вы моделируете этот тип отношений: "Ньютон изобрел Исчисление"?
В простой график вы можете моделировать его следующим образом:
Newton (node) -> invented (relationship) -> Calculus (node)
... поэтому у вас будет куча "изобретенных" графических связей, поскольку вы добавили больше людей и изобретений.
Проблема заключается в том, что вам нужно добавить кучу свойств в отношение:
- invention_date
- influential_concepts
- influential_people
- books_inventor_wrote
... и вы захотите начать создавать отношения между этими свойствами и другими узлами, например:
- influential_people: отношение к узлам пользователя
- books_inventor_wrote: отношение к книжным узлам
Итак, похоже, что "реальные отношения" ( "изобретенные" ) должны быть node на графике, а график должен выглядеть так:
Newton (node) -> (relationship) -> Invention of Calculus (node) -> (relationship) -> Calculus (node)
И чтобы усложнить ситуацию, другие люди также участвуют в изобретении Исчисления, поэтому график теперь становится чем-то вроде:
Newton (node) ->
(relationship) ->
Newton Calculus Invention (node) ->
(relationship) ->
Invention of Calculus (node) ->
(relationship) ->
Calculus (node)
Leibniz (node) ->
(relationship) ->
Leibniz Calculus Invention (node) ->
(relationship) ->
Invention of Calculus (node) ->
(relationship) ->
Calculus (node)
Итак, я задаю вопрос, потому что кажется, что вы не хотите устанавливать свойства в объектах "отношений" фактической базы данных графа, потому что в какой-то момент вам может понадобиться рассматривать их как узлы в графике.
Правильно ли это?
Я изучал Freebase Metaweb Architecture, и они, кажется, рассматривают все как node. Например, у Freebase есть идея Mediator/CVT, где вы можете создать "Производительность" node, которая связывает "Актер", node к фильму node, как здесь: http://www.freebase.com/edit/topic/en/the_last_samurai. Не совсем уверен, что это одна и та же проблема.
Каковы некоторые руководящие принципы, которые вы используете, чтобы выяснить, действительно ли "отношения реального мира" должны быть графом node, а не отношением графа?
Если есть хорошие книги по этой теме, я бы с удовольствием узнал. Спасибо!