Create Our First Graph in AgensGraph
Muhammad Farooq
Posted on June 30, 2023
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
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
- 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
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.
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
Posted on June 30, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.