title: Is there a need to create bi-directional relationship in Neo4j graph?
body: <p>For example, </p>
  
  <pre><code>iPhone productOf Apple
  Apple  produces iPhone
  </code></pre>
  
  <p>I can create such two relations between the two nodes. I can query like this:</p>
  
  <p>1) Which company's product is iPhone?</p>
  
  <pre><code>MATCH (Product {name:"iPhone"}) - [r:productOf] -&gt; (company) return company
  </code></pre>
  
  <p>2) What products does Apple product? </p>
  
  <pre><code>MATCH (company {name:"Apple"}) - [r:produces] -&gt; (products) return products
  </code></pre>
  
  <p>However, even without the 2nd relation "produces", I can still answer the 2nd question:</p>
  
  <pre><code>MATCH (products) - [r:productOf] -&gt; (company {name:"Apple"}) return products
  </code></pre>
  
  <p>So it seems there is no need to create semantically equivalent relations between two nodes in data modelling. Is that true? </p>