I think your StackOverflow question was answered, but I'll answer again here:
MATCH (n:Owner),(v:Vehicles) creates a cartesian product, so you will get rows for every possible combination of an :Owner node with a :Vehicles node. If you had 50 :Owner nodes and 20 :Vehicles nodes then this would produce 1000 rows for this cartesian product.
For each of those rows (each distinct combination of one of the :Owner nodes and one of the :Vehicles nodes) your WHERE clause would filter WHERE (or WHERE NOT) that specific owner for that row owns that specific vehicle for that row.
That is a completely different thing than filtering based upon whether or not an owner owns ANY vehicle.
And if that's the question you really intend to ask, then you need to change your query to avoid the cartesian product like so, and fit the pattern that you actually intend to include (or exclude):
WHERE NOT (n)-[:OWNS]-(:Vehicles)
RETURN DISTINCT n.email