apache / apache/incubator-graphar

[Feat][Format] Distinguish the concepts of vertex/edge label and vertex/edge type

Open
#166 0 comments 1 reaction 0 assignees View on GitHub
improvement
Dominant language
C++
Stars
373
Forks
93
Avg merge
7d 21h
Merged PRs (30d)
7

Description

**Is your feature request related to a problem? Please describe.**
In GraphAr, we use vertex/edge `label` to represent the `type` of vertices or edges, which is a single string. Vertices/edges of the same type have the same schema. However, in some other graph systems, such as Neo4j, the `label` is a concept different with the `type`, which could include arbitrary number of strings, and used for filtering vertices/edges. To cooperate with these systems, we need to distinguish the concepts of `label` and `type` in GraphAr.

**Describe the solution you'd like**
- replace `label` in the GraphAr file format (specifically, the Vertex/Edge info Yaml files) with `type`
- update all related interfaces in GraphAr C++/Spark to use `type` instead of `label`
- when the data type of the property is required, use `data_type` instead of simply `type`
- update the documentation of the file format design and API reference
- `labels` could be stored in a separate column as an array of strings, or a sparse matrix, as mentioned in issue #96

Contributor guide

Open the contributing guide

Research direction

Start by locating the Vertex/Edge info YAML definitions and the related GraphAr C++ and Spark interfaces that use label. Read the file-format design and API reference documentation, then review issue #96 for the proposed label-storage context. Done requires consistent type/data_type terminology across the format, interfaces, and documentation, with the label representation decided.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, spark
Domain
backend-api-design, data, documentation
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.