Documentation Index Fetch the complete documentation index at: https://docs.helix-db.com/llms.txt
Use this file to discover all available pages before exploring further.
HelixQL is deprecated in HelixDB v2. Queries are now written with the Rust DSL and dispatched as JSON — see the Querying guide. This section is kept as a reference for legacy HelixQL projects.
For the complete documentation index optimized for AI agents, see llms.txt .
Create Edges using AddE
Create connections between nodes in your graph.
AddE<Type>::From(v1)::To(v2)
AddE<Type>({properties})::From(v1)::To(v2)
When using the SDKs or curling the endpoint, the query name must match what is defined in the queries.hx file exactly.
Example 1: Creating a simple follows relationship
QUERY CreateRelationships (user1_id: ID, user2_id: ID) =>
follows <- AddE<Follows>::From(user1_id)::To(user2_id)
RETURN follows
QUERY CreateUser (name: String, age: U8, email: String) =>
user <- AddN<User>({
name: name,
age: age,
email: email
})
RETURN user
Here’s how to run the query using the SDKs or curl
Python
Rust
Go
TypeScript
Curl
from helix.client import Client
client = Client( local = True , port = 6969 )
alice_id = client.query( "CreateUser" , {
"name" : "Alice" ,
"age" : 25 ,
"email" : "alice@example.com" ,
})[ 0 ][ "user" ][ "id" ]
bob_id = client.query( "CreateUser" , {
"name" : "Bob" ,
"age" : 28 ,
"email" : "bob@example.com" ,
})[ 0 ][ "user" ][ "id" ]
print (client.query( "CreateRelationships" , {
"user1_id" : alice_id,
"user2_id" : bob_id,
}))
See all 20 lines
Example 2: Creating a detailed friendship with properties
QUERY CreateFriendship (user1_id: ID, user2_id: ID) =>
friendship <- AddE<Friends>({
since: "2024-01-15",
strength: 0.85
})::From(user1_id)::To(user2_id)
RETURN friendship
QUERY CreateUser (name: String, age: U8, email: String) =>
user <- AddN<User>({
name: name,
age: age,
email: email
})
RETURN user
Here’s how to run the query using the SDKs or curl
Python
Rust
Go
TypeScript
Curl
from helix.client import Client
client = Client( local = True , port = 6969 )
user1_id = client.query( "CreateUser" , {
"name" : "Charlie" ,
"age" : 31 ,
"email" : "charlie@example.com" ,
})[ 0 ][ "user" ][ "id" ]
user2_id = client.query( "CreateUser" , {
"name" : "Dana" ,
"age" : 29 ,
"email" : "dana@example.com" ,
})[ 0 ][ "user" ][ "id" ]
print (client.query( "CreateFriendship" , {
"user1_id" : user1_id,
"user2_id" : user2_id,
}))
See all 20 lines
Example 3: Traversal Example
QUERY CreateRelationships (user1_id: ID, user2_name: String) =>
user2 <- N<User>::WHERE(_::{name}::EQ(user2_name))
follows <- AddE<Follows>::From(user1_id)::To(user2)
RETURN follows
QUERY CreateUser (name: String, age: U8, email: String) =>
user <- AddN<User>({
name: name,
age: age,
email: email
})
RETURN user
Here’s how to run the query using the SDKs or curl
Python
Rust
Go
TypeScript
Curl
from helix.client import Client
client = Client( local = True , port = 6969 )
user1 = client.query( "CreateUser" , {
"name" : "Eve" ,
"age" : 33 ,
"email" : "eve@example.com" ,
})
user1_id = user1[ 0 ][ "user" ][ "id" ]
client.query( "CreateUser" , {
"name" : "Frank" ,
"age" : 35 ,
"email" : "frank@example.com" ,
})
print (client.query( "CreateRelationships" , {
"user1_id" : user1_id,
"user2_name" : "Frank" ,
}))
See all 21 lines