Inserting data using Gremlin
The discussion below describes the detailed view of submitting individual commands to create vertices and edges.
However, due to the sessionless nature of the interaction between the Gremlin console and the remote Gremlin server, all steps must be submitted in a single script.
To load the data shown in the steps below, run the generateRecipe.groovy
script.
Two methods are shown below, using graph methods and using graph traversal methods. The graph methods have been benchmarked as several times faster for insertions in informal testing. The graph traversal methods are useful for on-the-fly insertions during development.
Although DSE Graph will insert data without previously creating schema, it is best practice to create schema prior to data insertion.
If inserted without schema, the data type will often be incorrect.
For instance, in the examples below, ISBN
is a UUID
.
However, if inserted as shown, the data type assigned to ISBN
will be Text
.
-
Using the graph methods
addVertex()
andaddEdge()
-
Add an author vertex using
addVertex()
.juliaChild = graph.addVertex(label,'author', 'name','Julia Child', 'gender','F')
The vertex is given a descriptive name
juliaChild
, and is given a vertexlabel
of author. Thename
andgender
key-value pairs for the property keys are listed. -
Add a book vertex using
addVertex()
.frenchChefCookbook = graph.addVertex(label, 'book', 'name, 'The French Chef Cookbook', 'year' , 1968, 'ISBN', '0-394-40135-2')
A book vertex includes a book name, publishing year, and an ISBN code, if available.
-
Add an edge between an author and a book using
addEdge()
.juliaChild.addEdge('authored', frenchChefCookbook)
The vertex for Julia Child has an
authored
edge to the book The French Chef Cookbook. -
Edges can also have properties, as this example of an edge between a recipe and an ingredient demonstrates.
beefBourguignon.addEdge('includes', beef, 'amount','2 lbs')
The recipe Beef Bourguignon includes 2 pounds of beef. The
amount
is stored as an edge property. The recipe and the ingredient vertices must be inserted prior to the edge. -
Using the graph traversal methods
addV()
andadd()
-
Add an author vertex using
addV()
. andproperty()
. Note the use of multipleproperty()
steps, one for each property set.g.addV('author').property('name','Julia Child').property('gender','F')
A vertex label of author is defined in the
addV()
step. Thename
andgender
key-value pairs for the property keys are created using twoproperty()
steps. -
Add a book vertex using
addV()
.g.addV('book').property('name', 'The French Chef Cookbook').property('year' , 1968).property('ISBN', '0-394-40135-2')
A book vertex includes a book name, publishing year, and an ISBN code, if available.
-
Add an edge between an author and a book using
addE()
.g.V().has('author','name','Julia Child').as('a').V().has('book','name','The French Chef Cookbook').addE('authored').to('a')
The vertex for Julia Child has an
authored
edge to the book The French Chef Cookbook. Each vertex is identified by its vertex label and propertyname
. The author vertex is labeled asa
and used in theto()
step. -
Edges can also have properties, as this example of an edge between a recipe and an ingredient demonstrates.
g.V().has('recipe','name','Beef Bourguignon').as('a'). V().has('ingredient','name','beef'). addE('includes').from('a').property('amount','2 lbs')
The recipe Beef Bourguignon includes 2 pounds of beef. The
amount
is stored as an edge property. The recipe and the ingredient vertices must be inserted prior to the edge.