Create Our First Graph in AgensGraph
Tags: agensgraph, apacheage, agcloud, graphdatabase
Published: 2023-06-30 13:07:03

to create your first Graph in AgensGraph you should know the basics of Graph Database and cypher.

If you don't know you can learn from this blog post: [Understanding Graph Database and Cypher](https://dev.to/farooquememon385/understanding-graph-database-and-cypher-25gm)

## Introduction
AgensGraph is a multi-model database, which supports the relational and graph data model at the same time that enables developers to integrate the legacy relational data model and the flexible graph data model in one database. AgensGraph supports ANSI-SQL and openCypher

## Creating the project on AGCloud

To create a new project follow these steps

- Go to [AGCloud Website](https://agcloud.bitnine.net/main)
- Sign Up if you don't already have the account otherwise sign in
- after sign in the main page will appear
- Now **Create a new Project**
- Select "Understanding Graph Database and Cypher" option
- The Project will be created as shown below


![Image showing created project](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3xl3kfsxl4ju3x7mr6rz.png)


## Understand AGViewer

 to create a graph, you need to open AGViewer
- Click on "Launch AGViewer" from the project you have created as shown in above image

AGViewer will be opened in new tab and the screen will appear like this.


![AGViewer image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wxo4np0fa4iswae71oiy.png)

in query editor you can write or paste queries and can execute queries using **triangle Icon** as shown in above image.

## Create Graph

_Here is the code that creates our small social network._

> CREATE
(a :Male {Name: 'Adam', Age: 25}),
(b :Male {Name: 'Bert', Age: 26, Eyes: 'Brown'}),
(c :Male {Name: 'Carl', Age: 27}),
(d :Female {Name: 'Dee', Age: 25}),
(e :Female {Name: 'Eve', Age: 25}),
(f :Female {Name: 'Fia', Age: 28}),
(a)-[:follows { Duration: 5}]->(b),
(b)-[:follows]->(a),
(b)-[:follows]->(c),
(b)-[:follows]->(d),
(d)-[:follows]->(a),
(c)-[:follows]->(d),
(c)-[:follows]->(e),
(c)-[:follows]->(f),
(f)-[:follows]->(d),
(e)-[:follows]->(b);

### Explanation.
The `CREATE` statement creates **nodes** and **edges**, and gives them **labels** and **properties**. The objects to create are separated by `,` comma and the whole block ends with a `;` semi-colon.
Extra spaces and line feeds are ignored and everything is case insensitive (except string values - so 'Ava' is different from 'ava')
You can see the first node to be created is `**(a :Male {Name: 'Adam', Age: 25})**`. This is a node with Label :Male and with 2 `properties, Name: and Age`: with values as shown.
The `a` is a variable name to refer to that node while inside that code block as a convenient way to refer to that node later.
All other nodes are created similarly before we create the relationships.
The `CREATE (a)-[:follows { Duration: 5}]->(b)` creates an edge with Label **:follows** from the node referred to as** a (Adam's node)**, to the node referred to as** b (Bert's node).**

You should now copy that code block, and paste into the query box of the viewer, and hit the play button on the right hand side.

_(Note - sometime paste Ctrl-V or CMD-V on mac does not work in Query Editor and you may have to right click and choose Paste option.)_

You should see the message **'Successfully ran the query!'** 

If something goes wrong and you want to start from scratch in AG Viewer with an empty graph you can enter the following command

### Comments in AgensGraph

> /*
This is a multi-line comment
To delete the graph if you need to start again you can enter the following command...
*/
-- WARNING Deletes entire graph. Only do it if you want to re-start
; MATCH (n) DETACH DELETE n ; -- This is also a comment, from double dash to the end of line.

### Displaying the Graph

to display the all nodes and edges run the following query

> MATCH my_path = ()-[]->() RETURN my_path;

The above query matches every path in the graph and will show the entire graph.
The paths are given the name my_path and the RETURN part of the query will display the paths.
Copy the query and paste it into the query editor in AGViewer. You should get something like this

to show only nodes run the following query
> MATCH (n) return n;

I'll show you more examples in my upcoming Blog

## Visit Apache AGE
- [Apache AGE official Website](https://age.apache.org)
- [Apache AGE Github](https://github.com/apache/age)