Looking for nodes without a specific relation

person-[:executes]-transaction

sql equivalent would be
select * from person where not exists (select * from transaction where transaction.owner = person.id)

You're looking for a :person node without an :executes relationship to a :transaction?

The simplest form would be:

MATCH (p:person)
WHERE NOT (p)-[:executes]-(:transaction)
RETURN p

If all :executes relationships from :person nodes always connect to :transaction nodes, then you can leave off the :transaction label and the plan will use a degree check of :executes relationships on :person nodes, which will be much more efficient:

MATCH (p:person)
WHERE NOT (p)-[:executes]-()
RETURN p

thx, solved my problem