yes this is the preferred way, WITH allows you to chain queries.
each of the queries can be a read-or a modifying query.
with two read-queries you can create constructs like having.
#2
- you would normally index start-nodes with the properties that you want to look up, then you can query them directly in the start-clause
- other ways would be category nodes that e.g. an apps-category linked to your "app-nodes" from which you then iterate the attached nodes and find the app-node
- if you need this specific app-node very often it might be sensible to store it in your app and use it directly in app=node({appNode})
Please try to use parameters {param} wherever possible so that you can enjoy cypher's query caching and you create reusable queries anyway.
Michael