Apache GraphAr (Incubating)
Copyright 2024-2025 The Apache Software Foundation

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).

This product includes software from Apache Arrow project (Apache 2.0)
  * Apache Arrow
  * Copyright 2016-2019 The Apache Software Foundation

--------------------------------------------------------------------------------

This product includes code from Apache Spark, which includes the following in
its NOTICE file:

  Apache Spark
  Copyright 2014 and onwards The Apache Software Foundation.

--------------------------------------------------------------------------------

This product includes code from https://github.com/alibaba/GraphScope (Apache 2.0),
which includes the following in its NOTICE file:

  GraphScope
  Copyright 2020 Alibaba Group Holding Limited. 

--------------------------------------------------------------------------------

This product includes code from https://github.com/alibaba/fastFFI (Apache 2.0),
which includes the following in its NOTICE file:

  fastFFI 
  Copyright 1999-2021 Alibaba Group Holding Ltd.

--------------------------------------------------------------------------------

This product includes code from Apache OpenDAL, which includes the following in
its NOTICE file:

  Apache OpenDAL
  Copyright 2022 and onwards The Apache Software Foundation.
