/*! * Copyright (c) 2019 by Contributors * @file graph/serialize/graph_serialize.h * @brief Graph serialization header */ #ifndef DGL_GRAPH_SERIALIZE_GRAPH_SERIALIZE_H_ #define DGL_GRAPH_SERIALIZE_GRAPH_SERIALIZE_H_ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "../../c_api_common.h" #include "dglgraph_data.h" #include "heterograph_data.h" using dgl::ImmutableGraph; using dgl::runtime::NDArray; using namespace dgl::runtime; namespace dgl { namespace serialize { enum GraphType : uint64_t { kMutableGraph = 0ull, kImmutableGraph = 1ull, kHeteroGraph = 2ull }; constexpr uint64_t kDGLSerializeMagic = 0xDD2E4FF046B4A13F; class StorageMetaDataObject : public runtime::Object { public: // For saving DGLGraph dgl_id_t num_graph; Value nodes_num_list; Value edges_num_list; Map labels_list; List graph_data; static constexpr const char *_type_key = "graph_serialize.StorageMetaData"; void SetMetaData( dgl_id_t num_graph, std::vector nodes_num_list, std::vector edges_num_list, std::vector labels_list); void SetGraphData(std::vector gdata); void VisitAttrs(AttrVisitor *v) final { v->Visit("num_graph", &num_graph); v->Visit("nodes_num_list", &nodes_num_list); v->Visit("edges_num_list", &edges_num_list); v->Visit("labels", &labels_list); v->Visit("graph_data", &graph_data); } DGL_DECLARE_OBJECT_TYPE_INFO(StorageMetaDataObject, runtime::Object); }; class StorageMetaData : public runtime::ObjectRef { public: DGL_DEFINE_OBJECT_REF_METHODS( StorageMetaData, runtime::ObjectRef, StorageMetaDataObject); /*! @brief create a new StorageMetaData reference */ static StorageMetaData Create() { return StorageMetaData(std::make_shared()); } }; StorageMetaData LoadDGLGraphFiles( const std::string &filename, std::vector idx_list, bool onlyMeta); StorageMetaData LoadDGLGraphs( const std::string &filename, std::vector idx_list, bool onlyMeta); bool SaveDGLGraphs( std::string filename, List graph_data, std::vector labels_list); std::vector LoadHeteroGraphs( const std::string &filename, std::vector idx_list); ImmutableGraphPtr ToImmutableGraph(GraphPtr g); } // namespace serialize } // namespace dgl #endif // DGL_GRAPH_SERIALIZE_GRAPH_SERIALIZE_H_