Inserting data with graph traversal API
The Traversal API can be used to insert data into DataStax Graph (DSG).
Procedure
-
Add a vertex:
g.addV('person'). property('person_id', 'adb8744c-d015-4d78-918a-d7f062c59e8f' as UUID). property('name', 'Simone BECK'). property('gender','F'). property('nickname', ['Simca', 'Simone'] as Set). property('country', [['France', '1904-07-07' as LocalDate, '1991-12-20' as LocalDate] as Tuple])
The
addV()
step must identify the previously created vertex label, and can be followed by key and value pairs inproperty()
steps for any properties that are added. -
A property can also be added to an existing vertex, like
person
:g.V('dseg:/person/e1388dd1-1af8-481b-8504-c1e1457072cf'). property('name', 'Jamie OLIVER'). property('gender', 'M')
A
property()
value can also be modified by doing a similar traversal with a different value. -
Add an edge using two existing vertices:
g.V('dseg:/person/e7cd5752-bc0d-4157-a80f-7523add8dbcd').as('a'). V('dseg:/book/1001').as('b'). addE('authored').from('a').to('b')
The outgoing vertex, Julia CHILD, is connected to the incoming vertex, The Art of French Cooking, with
from()
andto()
steps to create anauthored
edge withaddE()
.If the edge has properties, the key and value pairs are appended to the
addE()
statement, similar to theaddV()
statement withproperty()
:g.V().has('person', 'person_id', 'daa02698-df4f-4436-8855-941774f4c3e0' as UUID).as('a'). V().has('recipe', 'recipe_id', 2001).as('b'). addE('reviewed'). property('time', '12:00:00' as LocalTime). property('year', '2015-12-31' as LocalDate). property('stars', 3). property('comment', 'It was okay.'). from('a').to('b')
-
A property can also be added to an existing edge by constructing a query that finds the edge and changes or adds the property with
property()
:g.V('dseg:/person/e7cd5752-bc0d-4157-a80f-7523add8dbcd'). outE('created'). has('create_date', '1956-01-10' as LocalDate). property('create_date', '1956-09-09' as LocalDate)
Altenatively:
g.E(). hasLabel('created'). has('create_date', '1961-01-01' as LocalDate). property('create_date', '1956-09-09' as LocalDate)
The first query starts with a vertex and traverses to edges to find the matching edge property
create_date
. The second query starts with the edges and matches the edge propertycreate_date
. Compare theprofile()
of each query and the structure of your data to determine which query to use.