DEV Community

Abhi-Kmr2046
Abhi-Kmr2046

Posted on

Entities in Apache AGE

An entity has a unique, comparable identity which defines whether or not two entities are equal.

An entity is assigned a set of properties, each of which are uniquely identified in the set by the irrespective property keys.

Simple Entities

  • GraphId: Simple entities are assigned a unique graphid. A graphid is a unique composition of the entity’s label id and a unique sequence assigned to each label. Note that there will be overlap in ids when comparing entities from different graphs.

  • Labels: A label is an identifier that classifies vertices and edges into certain categories. Edges are required to have a label, but vertices do not. The names of labels between vertices and edges cannot overlap.

  • Properties: Both vertices and edges may have properties. Properties are attribute values, and each attribute name should be defined only as a string type.

  • Vertex: A vertex is the basic entity of the graph, with the unique attribute of being able to exist in and of itself.

# typecasting a map to vertex
SELECT *
FROM cypher('graph', $$
    WITH {id: 0, label: "label_name", properties: {i: 0}}::vertex as v
    RETURN v
$$) AS (v agtype);

Enter fullscreen mode Exit fullscreen mode
  • Edge: An edge is an entity that encodes a directed connection between exactly two nodes, the source node and the target node. An edge is assigned exactly one edge type.
# typecasting a map to vertex
SELECT *
FROM cypher('graph', $$
    WITH {id: 2, start_id: 0, end_id: 1, label: "label_name", properties: {i: 0}}::edge as e
    RETURN e
$$) AS (e agtype);

Enter fullscreen mode Exit fullscreen mode

Composite Entities

It is combination of multiple simple entities.

  • Path: A path is a series of alternating vertices and edges. A path must start with a vertex, and have at least one edge.
# typecasting a list to path
SELECT *
FROM cypher('graph', $$
    WITH [{id: 0, label: "label_name_1", properties: {i: 0}}::vertex,
            {id: 2, start_id: 0, end_id: 1, label: "edge_label", properties: {i: 0}}::edge,
           {id: 1, label: "label_name_2", properties: {}}::vertex
           ]::path as p
    RETURN p
$$) AS (p agtype);

Enter fullscreen mode Exit fullscreen mode

Sentry image

Hands-on debugging session: instrument, monitor, and fix

Join Lazar for a hands-on session where you’ll build it, break it, debug it, and fix it. You’ll set up Sentry, track errors, use Session Replay and Tracing, and leverage some good ol’ AI to find and fix issues fast.

RSVP here →

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay