blob: 7eb281e82e6d67ffb1ea19120e8186fe79b98b31 [file] [view]
---
title: Implementation Status
sidebar_position: 2
---
The following tables summarize the features available in the various official GraphAr libraries.
All libraries currently follow version 1.0.0 of the GraphAr format.
## Data Types
| Data type (primitive) | C++ | Java | Scala | Python |
| --------------------- | --- | ---- | ----- | ------ |
| Boolean | | | | |
| Int32 | | | | |
| Int64 | | | | |
| Float | | | | |
| Double | | | | |
| String | | | | |
| Date | | | | |
| Timestamp | | | | |
| Time | | | | |
| Data type (nested) | C++ | Java | Scala | Python |
| --------------------- | --- | ---- | ----- | ------ |
| List (*) | | | | |
:::note
- \(\*) The data type of List is not supported by the CSV payload file format.
:::
## Payload Data File Formats
| Format | C++ | Java | Scala | Python |
|-----------------------------|---------|---------|-------|------------|
| CSV | R/W | R (1) | R/W | R/W (2) |
| ORC | R/W | R (1) | R/W | R/W (2) |
| Parquet | R/W | R (1) | R/W | R/W (2) |
| JSON | R | | R/W | R/W (2) |
| Avro | | | | |
| HDF5 | | | | |
:::note
- *R* - Read supported
- *W* - Write supported
:::
Supported compression methods for the file formats:
| Compression | C++ | Java | Scala | Python |
|-----------------------------|---------|---------|-------|------------|
| ZSTD (*) | | | | |
:::note
- \(\*) Compression is not supported by the CSV payload file format.
:::
## Property
| Property feature | C++ | Java | Scala | Python |
|-------------------|-------|-------|-------|------------|
| primary key | | | | |
| nullable | | | | |
Supported operations in Property:
| Property operation| C++ | Java | Scala | Python |
|-------------------|-------|-------|-------|------------|
| create | | (1) | | (2) |
| get_name | | (1) | | (2) |
| is_primary_key | | (1) | | (2) |
| is_nullable | | | | (2) |
## Property Group
| Property Group (operation) | C++ |Java (1)| Scala | Python (2)|
|-------------------|-------|--------|-------|------------|
| create | | | | |
| add property | | | | |
| remove property | | | | |
| get properties | | | | |
| check property | | | | |
| get file type | | | | |
| get path prefix | | | | |
| check validation | | | | |
## Adjacency List
| Adjacency List (type) | C++ | Java | Scala | Python |
|-------------------|-------|-------|-------|------------|
| CSR | | | | |
| CSC | | | | |
| COO | | | | |
Supported operations in Adjacency List:
| Adjacency List (operation) | C++ |Java (1)| Scala | Python (2)|
|-------------------|-------|--------|-------|------------|
| create | | | | |
| get adjacency type| | | | |
| get file type | | | | |
| get path prefix | | | | |
| check validation | | | | |
## Vertex
Vertex features:
| Vertex feature | C++ | Java | Scala | Python |
|-------------------|-------|-------|-------|------------|
| label | | | | |
| tag | | | | |
| chunk based | | | | |
| property group | | | | |
| multi-label | | | | |
| multi-property | | | | |
:::note
- *label* is the vertex label, which is a unique identifier for the vertex.
- *tag* is the vertex tag, which is tag or category for the vertex.
:::
Supported operations in Vertex Info:
| Vertex Info (operation) | C++ |Java (1)| Scala | Python (2) |
|-------------------|-------|--------|-------|------------|
| create | | | | |
| add group | | | | |
| remove group | | | | |
| get label | | | | |
| get chunk size | | | | |
| get groups | | | | |
| get path prefix | | | | |
| check property | | | | |
| check validation | | | | |
| serialize | | | | |
| deserialize | | | | |
## Edge
Edge features:
| Edge feature | C++ | Java | Scala | Python |
|-------------------|-------|-------|-------|------------|
| label | | | | |
| chunk based | | | | |
| property group | | | | |
| adjacent list | | | | |
| directed | | | | |
Supported operations in Edge Info:
| Edge Info (operation) | C++ |Java (1)| Scala | Python (2) |
|-------------------|-------|--------|-------|------------|
| create | | | | |
| add group | | | | |
| remove group | | | | |
| add adj list | | | | |
| remove adj list | | | | |
| get label | | | | |
| get source label | | | | |
| get dest label | | | | |
| get chunk size | | | | |
| get source chunk size | | | | |
| get dest chunk size | | | | |
| get groups | | | | |
| check adj list | | | | |
| check property | | | | |
| get file type | | | | |
| get path prefix | | | | |
| is directed | | | | |
| check validation | | | | |
| serialize | | | | |
| deserialize | | | | |
:::note
- *\<source label, label, dest label\>* is the unique identifier for the edge type.
:::
## Graph
| Graph | C++ | Java | Scala | Python |
|-------------------|-------|-------|-------|------------|
| labeled vertex (with property) | | | | |
| labeled edge (with property) | | | | |
| extra info | | | | |
Supported operations in Graph Info:
| Graph Info (operation) | C++ |Java (1)| Scala | Python (2) |
|-------------------|-------|--------|-------|------------|
| create | | | | |
| add vertex | | | | |
| remove vertex | | | | |
| add edge | | | | |
| remove edge | | | | |
| get name | | | | |
| get vertex | | | | |
| get edge | | | | |
| add extra info | | | | |
| remove extra info | | | | |
| get extra info | | | | |
| check validation | | | | |
| serialize | | | | |
| deserialize | | | | |
:::note
- \(1) Through fastFFI bindings to the GraphAr C++ library.
- \(2) Through py4j bindings to the GraphAr Spark library.
:::
## Libraries Version Compatibility
| GraphAr C++ Version | C++ | CMake | Format Version |
|---------------------|-----|-------|----------------|
| 0.11.x | 17+ | 2.8+ | 1.0.0 |
| GraphAr Java Version | Java | Maven | Format Version |
|----------------------|------|-------|----------------|
| 0.1.0 | 1.8 | 3.6+ | 1.0.0 |
| GraphAr Spark Version | Apache Spark Version | Scala Version | Java Version | Hadoop Version | Format Version |
|-----------------------|----------------------|---------------|--------------|----------------|----------------|
| 0.1.0 | 3.2.x-3.3.x | 2.12.x | 1.8, 11 | 3 | 1.0.0 |
| GraphAr PySpark Version | Python Version | PySpark Version | Hadoop Version | Format Version |
|-------------------------|----------------|-----------------|----------------|----------------|
| 0.1.0 | 3.8+ | 3.2.x | 3 | 1.0.0 |
:::note
- Since the GraphAr PySpark library is bindings to the GraphAr Spark library,
the PySpark version should be compatible with the Spark version.
:::