Skip to main content

Implementation Status

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++JavaScalaPython
Boolean✓✓✓✓
Int32✓✓✓✓
Int64✓✓✓✓
Float✓✓✓✓
Double✓✓✓✓
String✓✓✓✓
Date✓
Timestamp✓
Time
Data type (nested)C++JavaScalaPython
List (*)✓
note
  • (*) The data type of List is not supported by the CSV payload file format.

Payload Data File Formats​

FormatC++JavaScalaPython
CSVR/WR (1)R/WR/W (2)
ORCR/WR (1)R/WR/W (2)
ParquetR/WR (1)R/WR/W (2)
JSONRR/WR/W (2)
Avro
HDF5
note
  • R - Read supported
  • W - Write supported

Supported compression methods for the file formats:

CompressionC++JavaScalaPython
ZSTD (*)✓✓✓✓
note
  • (*) Compression is not supported by the CSV payload file format.

Property​

Property featureC++JavaScalaPython
primary key✓✓✓✓
nullable✓✓✓

Supported operations in Property:

Property operationC++JavaScalaPython
create✓✓ (1)✓✓ (2)
get_name✓✓ (1)✓✓ (2)
is_primary_key✓✓ (1)✓✓ (2)
is_nullable✓✓✓ (2)

Property Group​

Property Group (operation)C++Java (1)ScalaPython (2)
create✓✓✓✓
add property✓✓✓✓
remove property✓
get properties✓✓✓✓
check property✓✓
get file type✓✓✓✓
get path prefix✓✓✓✓
check validation✓

Adjacency List​

Adjacency List (type)C++JavaScalaPython
CSR✓✓✓✓
CSC✓✓✓✓
COO✓✓✓✓

Supported operations in Adjacency List:

Adjacency List (operation)C++Java (1)ScalaPython (2)
create✓✓✓
get adjacency type✓✓✓
get file type✓✓✓
get path prefix✓✓✓
check validation✓

Vertex​

Vertex features:

Vertex featureC++JavaScalaPython
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)ScalaPython (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 featureC++JavaScalaPython
label✓✓✓✓
chunk based✓✓✓✓
property group✓✓✓✓
adjacent list✓✓✓✓
directed✓✓✓✓

Supported operations in Edge Info:

Edge Info (operation)C++Java (1)ScalaPython (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​

GraphC++JavaScalaPython
labeled vertex (with property)✓✓✓✓
labeled edge (with property)✓✓✓✓
extra info✓

Supported operations in Graph Info:

Graph Info (operation)C++Java (1)ScalaPython (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++ VersionC++CMakeFormat Version
0.11.x17+2.8+1.0.0
GraphAr Java VersionJavaMavenFormat Version
0.1.01.83.6+1.0.0
GraphAr Spark VersionApache Spark VersionScala VersionJava VersionHadoop VersionFormat Version
0.1.03.2.x-3.3.x2.12.x1.8, 1131.0.0
GraphAr PySpark VersionPython VersionPySpark VersionHadoop VersionFormat Version
0.1.03.8+3.2.x31.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.