Algorithm Types
In Cypher
MATCH (will:Person {name:"Will"})-[:PURCHASED]->(b:Book)<-[:PURCHASED]-(o:Person) MATCH (o)-[:PURHCASED]->(rec:BooK) WHERE NOT exists((will)-[:PURCHASED]->(rec)) RETURN rec
Basic initial approach. Improvements:
In Cypher
MATCH (will:Person {name:"Will})-[:PURCHASED]->(b:Book)<-[:HAS_TAG]-(t:Tag) MATCH (t)<-[:HAS_TAG]-(other:Book) WHERE NOT exists((will)-[:PURCHASED]->(other)) RETURN other