This is actually really cool and something I have played around with using Neo4j