Click to see more!
Installation
jupyter_nebulagraph
could be installed either via pip or from this git repo itself.
Install via pip
pip install jupyter_nebulagraph
Install inside the repo
git clone git@github.com:wey-gu/jupyter_nebulagraph.git
cd jupyter_nebulagraph
python setup.py install
Load it in Jupyter Notebook or iPython
%load_ext ngql
Connect to NebulaGraph
Arguments as below are needed to connect a NebulaGraph DB instance:
Argument | Description |
---|
--address or -addr | IP address of the NebulaGraph Instance |
--port or -P | Port number of the NebulaGraph Instance |
--user or -u | User name |
--password or -p | Password |
Below is an exmple on connecting to 127.0.0.1:9669
with username: "user" and password: "password".
%ngql --address 127.0.0.1 --port 9669 --user user --password password
Make Queries
Now two kind of iPtython Magics are supported:
Option 1: The one line stype with %ngql
:
%ngql USE basketballplayer;
%ngql MATCH (v:player{name:"Tim Duncan"})-->(v2:player) RETURN v2.player.name AS Name;
Option 2: The multiple lines stype with %%ngql
%%ngql
SHOW TAGS;
SHOW HOSTS;
Query String with Variables
jupyter_nebulagraph
supports taking variables from the local namespace, with the help of Jinja2 template framework, it's supported to have queries like the below example.
The actual query string should be GO FROM "Sue" OVER owns_pokemon ...
, and "{{ trainer }}"
was renderred as "Sue"
by consuming the local variable trainer
:
In [8]: vid = "player100"
In [9]: %%ngql
...: MATCH (v)<-[e:follow]- (v2)-[e2:serve]->(v3)
...: WHERE id(v) == "{{ vid }}"
...: RETURN v2.player.name AS FriendOf, v3.team.name AS Team LIMIT 3;
Out[9]: RETURN v2.player.name AS FriendOf, v3.team.name AS Team LIMIT 3;
FriendOf Team
0 LaMarcus Aldridge Trail Blazers
1 LaMarcus Aldridge Spurs
2 Marco Belinelli Warriors
Draw query results
Draw Last Query
Just call %ng_draw
after queries with graph data.
%ngql GET SUBGRAPH 2 STEPS FROM "player101" YIELD VERTICES AS nodes, EDGES AS relationships;
%ng_draw
%ngql match p=(:player)-[]->() return p LIMIT 5
%ng_draw

Draw a Query
Or %ng_draw <one_line_query>
, %%ng_draw <multiline_query>
instead of drawing the result of the last query.
One line query:
%ng_draw GET SUBGRAPH 2 STEPS FROM "player101" YIELD VERTICES AS nodes, EDGES AS relationships;
Multiple lines query:
%%ng_draw
MATCH path_0=(n)--() WHERE id(n) == "p_0"
OPTIONAL MATCH path_1=(n)--()--()
RETURN path_0, path_1
Draw Graph Schema
%ng_draw_schema

Load Data from CSV
It's supported to load data from a CSV file into NebulaGraph with the help of ng_load_csv
magic.
For example, to load data from a CSV file actor.csv
into a space basketballplayer
with tag player
and vid in column 0
, and props in column 1
and 2
:
"player999","Tom Hanks",30
"player1000","Tom Cruise",40
"player1001","Jimmy X",33
Just run the below line:
%ng_load --source actor.csv --tag player --vid 0 --props 1:name,2:age --space basketballplayer
Some other examples:
%ng_load --source https://github.com/wey-gu/jupyter_nebulagraph/raw/main/examples/actor.csv --tag player --vid 0 --props 1:name,2:age --space demo_basketballplayer
%ng_load --source follow_with_rank.csv --edge follow --src 0 --dst 1 --props 2:degree --rank 3 --space basketballplayer
%ng_load --source follow.csv --edge follow --src 0 --dst 1 --props 2:degree --space basketballplayer
Tweak Query Result
By default, the query result is a Pandas Dataframe, and we could access that by read from variable _
.
In [1]: %ngql MATCH (v:player{name:"Tim Duncan"})-->(v2:player) RETURN v2.player.name AS Name;
In [2]: df = _
It's also configurable to have the result in raw ResultSet, to enable handy NebulaGraph Python App Development.
See more via Docs: Result Handling
CheatSheet
If you find yourself forgetting commands or not wanting to rely solely on the cheat sheet, remember this one thing: seek help through the help command!
%ngql help