Gremlin: How do you find vertices without a particular edge?

I interpret this question several ways, but perhaps this is what you are after. One way would be to do:

gremlin> g = TinkerGraphFactory.createTinkerGraph()    
==>tinkergraph[vertices:6 edges:6]
gremlin> g.V.outE.hasNot('label','knows')
==>e[9][1-created->3]
==>e[12][6-created->3]
==>e[10][4-created->5]
==>e[11][4-created->3]
gremlin> g.V.outE.hasNot('label','knows').inV
==>v[3]
==>v[3]
==>v[5]
==>v[3]

Note that label and id are both recognized as properties:

gremlin> g.V.has('id',"1")
==>v[1]
gremlin> g.E.map("label","id")
==>{id=10, label=created}
==>{id=7, label=knows}
==>{id=9, label=created}
==>{id=8, label=knows}
==>{id=11, label=created}
==>{id=12, label=created}

Another way to consider this question would be to find a list of vertices that don't have a "knows" edge:

gremlin> g.V.filter{!it.bothE('knows').hasNext()}    
==>v[3]
==>v[6]
==>v[5]