diff --git a/cpp/src/arrow/ipc/CMakeLists.txt b/cpp/src/arrow/ipc/CMakeLists.txt index 056e7dba538..d6ee9309b44 100644 --- a/cpp/src/arrow/ipc/CMakeLists.txt +++ b/cpp/src/arrow/ipc/CMakeLists.txt @@ -114,6 +114,7 @@ set(FBS_SRC ${CMAKE_SOURCE_DIR}/../format/Message.fbs ${CMAKE_SOURCE_DIR}/../format/File.fbs ${CMAKE_SOURCE_DIR}/../format/Schema.fbs + ${CMAKE_SOURCE_DIR}/../format/Tensor.fbs ${CMAKE_CURRENT_SOURCE_DIR}/feather.fbs) foreach(FIL ${FBS_SRC}) diff --git a/format/Message.fbs b/format/Message.fbs index 2cb60953c6a..f4a95713cea 100644 --- a/format/Message.fbs +++ b/format/Message.fbs @@ -16,6 +16,7 @@ // under the License. include "Schema.fbs"; +include "Tensor.fbs"; namespace org.apache.arrow.flatbuf; @@ -82,7 +83,7 @@ table DictionaryBatch { /// which may include experimental metadata types. For maximum compatibility, /// it is best to send data using RecordBatch union MessageHeader { - Schema, DictionaryBatch, RecordBatch + Schema, DictionaryBatch, RecordBatch, Tensor } table Message { diff --git a/format/Tensor.fbs b/format/Tensor.fbs new file mode 100644 index 00000000000..bc5b6d1289b --- /dev/null +++ b/format/Tensor.fbs @@ -0,0 +1,60 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +/// EXPERIMENTAL: Metadata for n-dimensional arrays, aka "tensors" or +/// "ndarrays". Arrow implementations in general are not required to implement +/// this type + +include "Schema.fbs"; + +namespace org.apache.arrow.flatbuf; + +/// Shape data for a single axis in a tensor +table TensorDim { + /// Length of dimension + size: long; + + /// Name of the dimension, optional + name: string; +} + +enum TensorOrder : byte { + /// Higher dimensions vary first when traversing data in byte-contiguous + /// order, aka "C order" + ROW_MAJOR, + + /// Lower dimensions vary first when traversing data in byte-contiguous + /// order, aka "Fortran order" + COLUMN_MAJOR +} + +table Tensor { + /// The type of data contained in a value cell. Currently only fixed-width + /// value types are supported, no strings or nested types + type: Type; + + /// The dimensions of the tensor, optionally named + shape: [TensorDim]; + + /// The memory order of the tensor's data + order: TensorOrder; + + /// The location and size of the tensor's data + data: Buffer; +} + +root_type Tensor; diff --git a/java/format/pom.xml b/java/format/pom.xml index e7a58a4172f..98a113a30cf 100644 --- a/java/format/pom.xml +++ b/java/format/pom.xml @@ -110,8 +110,9 @@ -o ${flatc.generated.files} ../../format/Schema.fbs - ../../format/Message.fbs + ../../format/Tensor.fbs ../../format/File.fbs + ../../format/Message.fbs