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

Top comments (0)