title: Simple social network design flaw with graph database
body: <p>I was looking at graph databases and Neo4j. As suggested, I tried to draw a simple social networking graph on white paper and after a few sketches I stucked at some similar points.</p>
  
  <p>At first I designed a social network where "user"s can "like" "post"s.</p>
  
  <pre><code>(u1:User)-[:LIKED]-&gt;(p:Post)&lt;-[:POSTED]-(u2:User)
  </code></pre>
  
  <p>Now I want to notify user2 about the like action and draw this on the white paper.</p>
  
  <pre><code>(u1:User)-[:LIKED]-&gt;(p:Post)&lt;-[:POSTED]-(u2:User)
                |                            ^
                |__________[:NOTIFY]_________|
  </code></pre>
  
  <p>I am not sure if it is clear but I just drew a relationship between a node and another relationship which is not possible for graph databases, at least for Neo4j. So I decided, a <code>Like</code> should be a node instead of a relationship. Then my graph turned into this.</p>
  
  <pre><code>(u1:User)-[:CREATAD]-&gt;(l:Like)-[:BELONGS_TO]-&gt;(p:Post)&lt;-[:POSTED]-(u2:User)
                            |                                           ^
                            |__________________[:NOTIFY]________________|
  </code></pre>
  
  <p>Now everything is OK. Then I added Comments feature to the system as a relationship but when notifications involved, again it turned into a node. And same happened when I added "Liking comments" feature, "Likes to Comments" first seemed they are relationships but once again they turned into nodes when notifications involved.</p>
  
  <p>In general, at some point I find myself drawing a relationship between a node and another relationship. My solution to that feels like I am turning entities, which naturally look like relationships, into nodes. And this makes me think of I have some problems with deciding what should be a node and what should be a relationship.</p>
  
  <p>So my question is, does anyone else other than me fall into this <strong>"relationship between a node and another relationship"</strong> issue and if so how do you solve that?</p>