I have been developing a rule-based graph transformation engine on top of Neo4J (Grape).
Think of it as a declarative, rule-based language for defining and executing sub-graph replacements.
With the rule-based engine you can define and solve certain "search" problems, based on a "forward-chaining" of graph replacement rules. Backtracking is needed for this mechanism. The backtracking mechanism needs the ability to "reset" the graph database state to previous states. I currently have a version of it implemented that uses neo4j flat (nested) transactions, but it is slow, since every backtracking point resets the entire database to its original graph and then "redos" all transformations up to the point where the backtracking happened. It would be much faster to use some "save and restore" mechanism - if that was available in Neo4J at all.
Thanks
Jens