The Idea

HelixQL is strongly typed. That means it stops you traversing edges or accessing properties that don’t exist.

Out

Get the nodes connected by outgoing edges of specific type.

::Out<EdgeType>

Example:

QUERY GetUserFollowing(userID: ID) {
    following <- N<User>(userID)::Out<Follows>
    RETURN following
}

In

Get the nodes connected by incoming edges of specific type.

::In<EdgeType>

Example:

QUERY GetUserFollowers(userID: ID) {
    followers <- N<User>(userID)::In<Follows>
    RETURN followers
}

OutE

Get the edges connected by outgoing edges of specific type.

::OutE<EdgeType>

Example:

QUERY GetFollowingDetails(userID: ID) {
    following <- N<User>(userID)::OutE<Follows>
    RETURN following
}

InE

Get the edges connected by incoming edges of specific type.

::InE<EdgeType>

Example:

QUERY GetFollowersDetails(userID: ID) {
    followers <- N<User>(userID)::InE<Follows>
    RETURN followers
}