@Test public void find_movies_johns_friends_have_seen() { ExecutionEngine engine = new ExecutionEngine(graphDb); String cql = "start john=node:users(name = \"John Johnson\") match john-[:IS_FRIEND_OF]->(user)-[:HAS_SEEN]->(movie) return movie;\n"; ExecutionResult result = engine.execute(cql); logger.info("Execution result:" + result.dumpToString()); }
@Test public void find_movies_johns_friends_have_seen_but_john_hasnt_seen_CORRECT() { ExecutionEngine engine = new ExecutionEngine(graphDb); String cql = "start john=node:users(name = \"John Johnson\")\n" + "match john-[:IS_FRIEND_OF]->(user)-[:HAS_SEEN]->(movie) \n" + "optional match john-[r:HAS_SEEN]->(movie)\n" + "where r is null\n" + "return movie.name;\n"; ExecutionResult result = engine.execute(cql); logger.info("Execution result:" + result.dumpToString()); }
@Test // shown for completeness // this query does not return expected results - see next test for correct solution public void find_movies_johns_friends_have_seen_but_john_hasnt_seen_INCORRECT() { ExecutionEngine engine = new ExecutionEngine(graphDb); String cql = "start john=node:users(name = \"John Johnson\")\n" + "match\n" + "john-[:IS_FRIEND_OF]->(user)-[:HAS_SEEN]->(movie),\n" + "john-[r:HAS_SEEN]->(movie)\n" + "return movie;\n"; ExecutionResult result = engine.execute(cql); logger.info("Execution result:" + result.dumpToString()); }