## 21. Example Query in Cypher (Neo4j) ```cypher MATCH (a:ResourceFlow {type:'heat', direction:'output'})-[:LOCATED_AT]->(srcSite:Site), (b:ResourceFlow {type:'heat', direction:'input'})-[:LOCATED_AT]->(dstSite:Site), (srcSite)<-[:OPERATES_AT]-(srcBiz:Business), (dstSite)<-[:OPERATES_AT]-(dstBiz:Business) WHERE distance(srcSite.location, dstSite.location) < 5000 AND abs(a.quality.temperature_celsius - b.quality.temperature_celsius) < 10 AND overlap(a.time_profile.availability, b.time_profile.availability) > 0.6 WITH srcBiz, dstBiz, srcSite, dstSite, a, b, (b.economic_data.cost_in - a.economic_data.cost_out - 0.0005*distance(srcSite.location, dstSite.location)) AS savings WHERE savings > 0 RETURN srcBiz.name, dstBiz.name, srcSite.name, dstSite.name, savings ORDER BY savings DESC LIMIT 20; ``` ---