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)
Avro
HDF5
JSON
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
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.