apache / apache/incubator-graphar
[Feat][Format] Distinguish the concepts of vertex/edge label and vertex/edge type
- 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
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