title: Filtering a Gremlin Traversal by edge label
body: <p>I am trying to use Gremlin to traverse outwards from a starting node to all connected nodes within <strong>X</strong> degrees of connection. The direction of the connection does not matter, so I am using the <code>both()</code> function. I also want to be able to prevent the traversal from crossing edges with specific labels. Here's a sample graph.</p>
  
  <pre><code>gremlin&gt; g.addV().property(id,1).as('1').
  ......1&gt;   addV().property(id,2).as('2').
  ......2&gt;   addV().property(id,3).as('3').
  ......3&gt;   addV().property(id,4).as('4').
  ......4&gt;   addV().property(id,5).as('5').
  ......5&gt;   addV().property(id,6).as('6').
  ......6&gt;   addV().property(id,7).as('7').
  ......7&gt;   addE('edge1').from('1').to('2').
  ......8&gt;   addE('edge2').from('1').to('3').
  ......9&gt;   addE('edge2').from('2').to('4').
  .....10&gt;   addE('edge3').from('3').to('5').
  .....11&gt;   addE('edge3').from('4').to('6').
  .....12&gt;   addE('edge4').from('7').to('6').iterate()
  </code></pre>
  
  <p>The traversal that I have so far looks like this:</p>
  
  <pre><code>gremlin&gt; g.V(1).
  ......1&gt;   repeat(both().filter(not(inE('edge3')))).
  ......2&gt;   times(4).
  ......3&gt;   emit().
  ......4&gt;   simplePath().
  ......5&gt;   dedup()
  </code></pre>
  
  <p>However this is not quite what I am looking for. I want something which will actually prevent the traverser from hitting a vertex if it has to cross the specified edge. My current implementation filters vertices which have the incoming edge, but in some cases I may still want that vertex to appear in the results if the traverser crossed a different edge to get there. </p>
  
  <p>Does this make sense? In short, I am trying to specifically filter on an edge rather than on a vertex's relationship to its edges.</p>