Inserting data using Gremlin
This page 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.
The data used in the following steps is from the DSE Graph Quickstart notebook in DataStax Studio.
Two methods are demonstrated: 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 vertexlabelof author. Thenameandgenderkey-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
authorededge 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
amountis 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. Thenameandgenderkey-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
authorededge to the book The French Chef Cookbook. Each vertex is identified by its vertex label and propertyname. The author vertex is labeled asaand 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
amountis stored as an edge property. The recipe and the ingredient vertices must be inserted prior to the edge.