1. Display database schema
1. Basically displaying all types of nodes and relationships between each type of node
2. `CALL db.schema.visualization();`
2. Data import
1. See the stackoverflow sample dataset for JSON import from url
2. [Data Import - Developer Guides (neo4j.com)](https://neo4j.com/developer/data-import/)
## Basic Queries
### Find labels and their frequencies
Label is basically node name/type.
```
MATCH (n)
RETURN labels(n) as label, count(*) as freq
ORDER BY freq DESC;
```
### Find all relationship types and their frequencies
```
MATCH ()-[r]->()
RETURN type(r) as type, count(*) as freq
ORDER BY freq DESC;
```
`()-[r]->()` is used to express relationship. The middle term is relationship.
Left and right of the relationship are both nodes.
`(A)-[reads]->(B)` means A reads B. The relation is the same as the direction of the arrow.
### Sorting by Attribute Count
What are the most popular tags?
```
MATCH (q:Question)-[:TAGGED]->(t:Tag)
RETURN t.name, count(q) AS questions
ORDER BY questions DESC
LIMIT 5;
```
Find all question tags, and count question for each tag.
## Path Finding
Find all shortest paths between 2 users with whatever relationships in between.
```
MATCH path = allShortestPaths(
(u1:User {display_name:"alexanoid"})-[*]-(u2:User {display_name:"InverseFalcon"}))
RETURN path LIMIT 1;
```
## Reference
- [Cypher Cheat Sheet - Neo4j Documentation Cheat Sheet](https://neo4j.com/docs/cypher-cheat-sheet/current/)