Графическое моделирование (Социальная сеть) - PullRequest
0 голосов
/ 30 января 2020

Я изучаю графы, создающие социальную сеть. Я застрял, пытаясь представить отношение трех узлов, позвольте мне объяснить.

У меня есть (user_a), кто приглашает (user_b) на (событие). Я могу смоделировать это следующим образом: (user_a) - [invites] -> (user_b) - [wasInvitedTo] -> (событие)

Но с этой моделью я не могу знать весь путь, потому что user_b собирается быть приглашенным от многих пользователей на многие мероприятия. Я знаю, что (user_a) приглашает (user_b), но я не знаю, на какое событие, а с другой стороны, я знаю, что (user_b) был приглашен на (событие), но я не знаю, кто его пригласил. Тематическое исследование - это когда я пытаюсь уведомить (пользователя a), что (user_b) пригласил (событие).

Я объясняю себя? Трудно объяснить это и труднее объяснить это не на моем основном языке.

Единственное решение, к которому я могу обратиться, это установить идентификаторы в отношениях: (user_a) - [invites {to: event_id}] -> (user_b) - [wasInvitedTo {от: user_a_id] -> (событие) Но я не думаю, что это хорошее решение.

Спасибо за ваше время!

1 Ответ

0 голосов
/ 30 января 2020

Добро пожаловать в переполнение стека!

В этом случае я бы, вероятно, хотел бы вывести концепцию «Приглашения» в качестве узла на вашем графике (здесь, зеленый номерный узел):

MERGE (a: User { name: 'Anne' })
MERGE (b: User { name: 'Bob' })
MERGE (c: User { name: 'Chris' })
MERGE (d: User { name: 'Diane' })
MERGE (e: Event { name: 'The Big Party' })
MERGE (i: Invitation)
MERGE (a)-[:CREATED]->(i)
MERGE (i)-[:SENT_TO]->(b)
MERGE (i)-[:SENT_TO]->(c)
MERGE (i)-[:SENT_TO]->(d)
MERGE (i)-[:RELATES_TO]->(e)
RETURN *

enter image description here

Один Пользователь может пригласить нескольких других пользователей на несколько событий , создав Новые Пригласительные узлы. Они могли бы реально создать несколько приглашений для одного и того же события , если, например, они хотели использовать другой текст или изображения для некоторого набора пользователей , чем другие.

Вы также можете повесить метаданные на само приглашение, например, дату отправки, текст / изображения и т. Д. c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...