graph LR
Homogeneous_Graph_Core["Homogeneous Graph Core"]
Heterogeneous_Graph_Core["Heterogeneous Graph Core"]
Bipartite_Graph_Core["Bipartite Graph Core"]
Internal_Data_Processing_Utilities["Internal Data Processing Utilities"]
Heterogeneous_Schema_Management["Heterogeneous Schema Management"]
Message_Passing_Abstraction["Message Passing Abstraction"]
Homogeneous_Graph_Core -- "interacts with" --> Internal_Data_Processing_Utilities
Homogeneous_Graph_Core -- "provides" --> Message_Passing_Abstraction
Homogeneous_Graph_Core -- "shares logic with" --> Bipartite_Graph_Core
Heterogeneous_Graph_Core -- "utilizes" --> Heterogeneous_Schema_Management
Heterogeneous_Graph_Core -- "provides" --> Message_Passing_Abstraction
Bipartite_Graph_Core -- "relies on" --> Internal_Data_Processing_Utilities
Bipartite_Graph_Core -- "provides" --> Message_Passing_Abstraction
The PGL graph subsystem is built around a core set of graph representations: Homogeneous Graph Core, Heterogeneous Graph Core, and Bipartite Graph Core. These components are responsible for managing distinct graph structures and their associated data. The Internal Data Processing Utilities component provides foundational, low-level data handling and optimization for all graph types, ensuring efficient graph construction and traversal. Heterogeneous Schema Management specifically supports the Heterogeneous Graph Core by organizing and validating diverse node and edge types. Central to the GNN paradigm, the Message Passing Abstraction offers a unified interface for send and recv operations, allowing models to interact with various graph types consistently. This design emphasizes modularity and extensibility, enabling PGL to support a wide range of graph neural network applications.
Manages the fundamental data structures for homogeneous graphs, including nodes, edges, and their associated features. It provides methods for graph initialization, data access, neighborhood operations, and basic message passing primitives. This component is foundational for simpler GNN models and serves as a base for understanding more complex graph types.
Related Classes/Methods:
Manages complex graph structures that contain multiple types of nodes and edges. It handles type-specific data initialization, access, and ensures proper data type conversion across diverse features. This component is crucial for handling real-world, multi-relational datasets, aligning with the "Heterogeneous Graph Support" architectural bias.
Related Classes/Methods:
Manages bipartite graph structures, which are essential for specific GNN applications like recommendation systems or user-item interactions. It provides specialized methods for initialization, data management, and message passing adapted for bipartite relationships.
Related Classes/Methods:
Provides low-level, efficient utilities for initial graph data setup, validation, and optimized indexing and traversal of edges (e.g., _process_graph_info, adj_src_index, adj_dst_index). These are internal helper components that ensure the performance and correctness of the graph data structures.
Related Classes/Methods:
Manages the metadata and schema for different node and edge types within heterogeneous graphs (e.g., edge_types_info, is_tensor). It ensures data consistency and type safety across diverse features, which is critical for the robustness of HeterGraph.
Related Classes/Methods:
Provides a unified send and recv interface for message passing operations, abstracting away the underlying graph structure (homogeneous, heterogeneous, or bipartite). This is a key "Abstraction Layer" that enables GNN models to operate uniformly across different graph types, embodying the "Message Passing Paradigm."
Related Classes/Methods: