Table of Contents
- List of Figures
- List of Tables
- Title and Copyright Information
- Preface
- Changes in This Release for This Guide
-
Part I Getting Started with Oracle Property Graphs
-
1
Property Graph Support Overview
- 1.1 Introduction to Property Graphs
- 1.2 Before You Begin with Oracle Property Graphs
-
1.3
Oracle Graph Server and Client Installation
- 1.3.1 Installing Oracle Graph Server
- 1.3.2 Deploying Oracle Graph Server to a Web Server
- 1.3.3 Upgrading Oracle Graph Server
- 1.3.4 Uninstalling Oracle Graph Server
-
1.3.5
Installing Oracle Graph
Client
- 1.3.5.1 Installing the Java Client
- 1.3.5.2 Installing the Python Client
- 1.3.5.3 Uninstalling the Python Client
- 1.3.5.4 Enabling the Graph Visualization Application
- 1.3.5.5 Deploying the Graph Visualization Application
- 1.3.5.6 Installing the Graph Zeppelin Interpreter Client
- 1.4 Setting Up Transport Layer Security
- 1.5 Adding Permissions to Publish the Graph
- 1.6 Security Best Practices with Graph Data
- 1.7 Interactive Graph Shell CLIs
- 1.8 Developing Applications Using Graph Server Functionality as a Library
- 1.9 Storing Graphs in Oracle Database and Loading Graphs into Memory
- 1.10 Using Oracle Graph with the Autonomous Database
- 1.11 Migrating Property Graph Applications from Before Release 21c
- 1.12 Upgrading From Graph Server and Client 20.4.x to 21.x
- 1.13 Using the Graph Zeppelin Interpreter Client
- 1.14 About Oracle Graph Server and Client Accessibility
-
2
Quick Starts for Using Oracle
Property Graph
- 2.1 Quick Start: Interactively Analyze Graph Data
- 2.2 QuickStart: Run Graph Analytics Using the Python Shell
- 2.3 Quick Start: Using the Python Client as a Module
- 2.4 Oracle LiveLabs Workshops for Graphs
- 3 Property Graph Views on Oracle Database Tables
-
4
Using the In-Memory Graph Server (PGX)
- 4.1 Overview of the In-Memory Graph Server (PGX)
-
4.2
User Authentication and Authorization
- 4.2.1 Privileges and Roles in Oracle Database
- 4.2.2 Basic Steps for Using an Oracle Database for Authentication
- 4.2.3 Prepare the Graph Server for Database Authentication
- 4.2.4 Store the Database Password in a Keystore
- 4.2.5 Token Expiration
- 4.2.6 Advanced Access Configuration
- 4.2.7 Customizing Roles and Permissions
- 4.2.8 Revoking Access to the Graph Server
- 4.2.9 Examples of Custom Authorization Rules
- 4.2.10 Kerberos Enabled Authentication
- 4.3 About Vertex and Edge IDs
- 4.4 Reading Graphs from Oracle Database into the Graph Server (PGX)
- 4.5 Keeping the Graph in Oracle Database Synchronized with the Graph Server
- 4.6 Optimizing Graphs for Read Versus Updates in the In-Memory Graph Server (PGX)
- 4.7 Storing a Graph Snapshot on Disk
- 4.8 Executing Built-in Algorithms
- 4.9 Using Custom PGX Graph Algorithms
- 4.10 Creating Subgraphs
-
4.11
Using Automatic Delta Refresh to Handle Database Changes
- 4.11.1 Configuring the In-Memory Server for Auto-Refresh
- 4.11.2 Configuring Basic Auto-Refresh
- 4.11.3 Reading the Graph Using the In-Memory Graph Server (PGX) or a Java Application
- 4.11.4 Checking Out a Specific Snapshot of the Graph
- 4.11.5 Advanced Auto-Refresh Configuration
- 4.11.6 Special Considerations When Using Auto-Refresh
- 4.12 Starting the In-Memory Graph Server (PGX)
- 4.13 Connecting to the In-Memory Graph Server (PGX)
- 4.14 Using Graph Server (PGX) as a Library
- 4.15 User-Defined Functions (UDFs) in PGX
- 4.16 Using HAProxy for PGX Load Balancing and High Availability
-
5
Using the Property Graph Schema
- 5.1 Property Graph Schema Objects for Oracle Database
- 5.2 Data Access Layer
- 5.3 Getting Started with Property Graphs
-
5.4
Using Java APIs for Property Graph Data
- 5.4.1 Overview of the Java APIs
- 5.4.2 Parallel Retrieval of Graph Data
- 5.4.3 Using an Element Filter Callback for Subgraph Extraction
- 5.4.4 Using Optimization Flags on Reads over Property Graph Data
- 5.4.5 Adding and Removing Attributes of a Property Graph Subgraph
- 5.4.6 Getting Property Graph Metadata
- 5.4.7 Merging New Data into an Existing Property Graph
- 5.4.8 Opening and Closing a Property Graph Instance
- 5.4.9 Creating Vertices
- 5.4.10 Creating Edges
- 5.4.11 Deleting Vertices and Edges
- 5.4.12 Reading a Graph from a Database into an Embedded In-Memory Analyst
- 5.4.13 Specifying Labels for Vertices
- 5.4.14 Building an In-Memory Graph
- 5.4.15 Dropping a Property Graph
- 5.4.16 Executing PGQL Queries
-
5.5
Managing Text Indexing for Property Graph Data
- 5.5.1 Configuring a Text Index for Property Graph Data
- 5.5.2 Using Automatic Indexes for Property Graph Data
- 5.5.3 Using Manual Indexes for Property Graph Data
- 5.5.4 Executing Search Queries Over a Property Graph’s Text Indexes
- 5.5.5 Handling Data Types
- 5.5.6 Updating Configuration Settings on Text Indexes for Property Graph Data
- 5.5.7 Using Parallel Query on Text Indexes for Property Graph Data
- 5.6 Access Control for Property Graph Data (Graph-Level and OLS)
- 5.7 SQL-Based Property Graph Query and Analytics
- 5.8 Creating Property Graph Views on an RDF Graph
-
6
Property Graph Query Language (PGQL)
- 6.1 Creating a Property Graph using PGQL
- 6.2 Pattern Matching with PGQL
- 6.3 Edge Patterns Have a Direction with PGQL
- 6.4 Vertex and Edge Labels with PGQL
- 6.5 Variable-Length Paths with PGQL
- 6.6 Aggregation and Sorting with PGQL
- 6.7 Supported PGQL Features and Limitations
-
6.8
Executing PGQL Queries Against the In-Memory
Graph Server (PGX)
- 6.8.1 Getting Started with PGQL
- 6.8.2 PGQL Features Supported in the Graph Server (PGX)
- 6.8.3 Java APIs for Executing CREATE PROPERTY GRAPH Statements
- 6.8.4 Python APIs for Executing CREATE PROPERTY GRAPH Statements
- 6.8.5 Java APIs for Executing SELECT Queries
- 6.8.6 Java APIs for Executing UPDATE Queries
- 6.8.7 PGQL Queries with Partitioned IDs
- 6.8.8 Security Tools for Executing PGQL Queries
- 6.8.9 Best Practices for Tuning PGQL Queries
-
6.9
Executing PGQL Queries Directly
Against Oracle Database
-
6.9.1
Executing PGQL Queries Against Property Graph
Schema Tables
- 6.9.1.1 PGQL Features Supported in Property Graph Schema
- 6.9.1.2 Creating Property Graphs through CREATE PROPERTY GRAPH Statements
- 6.9.1.3 Dropping Property Graphs through DROP PROPERTY GRAPH Statements
-
6.9.1.4
Using the oracle.pg.rdbms.pgql Java Package to Execute PGQL Queries
- 6.9.1.4.1 Basic Query Execution
- 6.9.1.4.2 Executing PGQL Queries Using JDBC Driver
- 6.9.1.4.3 Security Techniques for PGQL Queries
- 6.9.1.4.4 Using a Text Index with PGQL Queries
- 6.9.1.4.5 Obtaining the SQL Translation for a PGQL Query
- 6.9.1.4.6 Additional Options for PGQL Translation and Execution
- 6.9.1.4.7 Querying Another User’s Property Graph
- 6.9.1.4.8 Using Query Optimizer Hints with PGQL
- 6.9.1.4.9 Modifying Property Graphs through INSERT, UPDATE, and DELETE Statements
- 6.9.1.5 Using the Python Client to Execute PGQL Queries
- 6.9.1.6 Performance Considerations for PGQL Queries
- 6.9.2 Executing PGQL Queries Against Property Graph Views
-
6.9.1
Executing PGQL Queries Against Property Graph
Schema Tables
- 7 Graph Visualization Application
-
8
Using the Machine Learning Library (PgxML) for Graphs
-
8.1
Using the DeepWalk Algorithm
- 8.1.1 Loading a Graph
- 8.1.2 Building a Minimal DeepWalk Model
- 8.1.3 Building a Customized DeepWalk Model
- 8.1.4 Training a DeepWalk Model
- 8.1.5 Getting the Loss Value For a DeepWalk Model
- 8.1.6 Computing Similar Vertices for a Given Vertex
- 8.1.7 Computing Similar Vertices for a Vertex Batch
- 8.1.8 Getting All Trained Vertex Vectors
- 8.1.9 Storing a Trained DeepWalk Model
- 8.1.10 Loading a Pre-Trained DeepWalk Model
- 8.1.11 Destroying a DeepWalk Model
-
8.2
Using the Supervised GraphWise Algorithm
- 8.2.1 Loading a Graph
- 8.2.2 Building a Minimal GraphWise Model
- 8.2.3 Advanced Hyperparameter Customization
- 8.2.4 Setting a Custom Loss Function and Batch Generator (for Anomaly Detection)
- 8.2.5 Training a Supervised GraphWise Model
- 8.2.6 Getting the Loss Value For a Supervised GraphWise Model
- 8.2.7 Inferring the Vertex Labels for a Supervised GraphWise Model
- 8.2.8 Evaluating the Supervised GraphWise Model Performance
- 8.2.9 Inferring Embeddings for a Supervised GraphWise Model
- 8.2.10 Storing a Trained Supervised GraphWise Model
- 8.2.11 Loading a Pre-Trained Supervised GraphWise Model
- 8.2.12 Destroying a Supervised GraphWise Model
- 8.2.13 Explaining a Prediction of a Supervised GraphWise Model
-
8.3
Using the Unsupervised GraphWise Algorithm
- 8.3.1 Loading a Graph
- 8.3.2 Building a Minimal Unsupervised GraphWise Model
- 8.3.3 Advanced Hyperparameter Customization
- 8.3.4 Training a Unsupervised GraphWise Model
- 8.3.5 Getting the Loss Value for a Unsupervised GraphWise Model
- 8.3.6 Inferring Embeddings for a Unsupervised GraphWise Model
- 8.3.7 Storing a Unsupervised GraphWise Model
- 8.3.8 Loading a Pre-Trained Unsupervised GraphWise Model
- 8.3.9 Destroying a Unsupervised GraphWise Model
- 8.3.10 Explaining a Prediction for an Unsupervised GraphWise Model
-
8.4
Using the Pg2vec Algorithm
- 8.4.1 Loading a Graph
- 8.4.2 Building a Minimal Pg2vec Model
- 8.4.3 Building a Customized Pg2vec Model
- 8.4.4 Training a Pg2vec Model
- 8.4.5 Getting the Loss Value For a Pg2vec Model
- 8.4.6 Computing Similar Graphlets for a Given Graphlet
- 8.4.7 Computing Similars for a Graphlet Batch
- 8.4.8 Inferring a Graphlet Vector
- 8.4.9 Inferring Vectors for a Graphlet Batch
- 8.4.10 Storing a Trained Pg2vec Model
- 8.4.11 Loading a Pre-Trained Pg2vec Model
- 8.4.12 Destroying a Pg2vec Model
-
8.1
Using the DeepWalk Algorithm
-
9
OPG_APIS Package Subprograms
- 9.1 OPG_APIS.ANALYZE_PG
- 9.2 OPG_APIS.CF
- 9.3 OPG_APIS.CF_CLEANUP
- 9.4 OPG_APIS.CF_PREP
- 9.5 OPG_APIS.CLEAR_PG
- 9.6 OPG_APIS.CLEAR_PG_INDICES
- 9.7 OPG_APIS.CLONE_GRAPH
- 9.8 OPG_APIS.COUNT_TRIANGLE
- 9.9 OPG_APIS.COUNT_TRIANGLE_CLEANUP
- 9.10 OPG_APIS.COUNT_TRIANGLE_PREP
- 9.11 OPG_APIS.COUNT_TRIANGLE_RENUM
- 9.12 OPG_APIS.CREATE_EDGES_TEXT_IDX
- 9.13 OPG_APIS.CREATE_PG
- 9.14 OPG_APIS.CREATE_PG_SNAPSHOT_TAB
- 9.15 OPG_APIS.CREATE_PG_TEXTIDX_TAB
- 9.16 OPG_APIS.CREATE_STAT_TABLE
- 9.17 OPG_APIS.CREATE_SUB_GRAPH
- 9.18 OPG_APIS.CREATE_VERTICES_TEXT_IDX
- 9.19 OPG_APIS.DROP_EDGES_TEXT_IDX
- 9.20 OPG_APIS.DROP_PG
- 9.21 OPG_APIS.DROP_PG_VIEW
- 9.22 OPG_APIS.DROP_VERTICES_TEXT_IDX
- 9.23 OPG_APIS.ESTIMATE_TRIANGLE_RENUM
- 9.24 OPG_APIS.EXP_EDGE_TAB_STATS
- 9.25 OPG_APIS.EXP_VERTEX_TAB_STATS
- 9.26 OPG_APIS.FIND_CC_MAPPING_BASED
- 9.27 OPG_APIS.FIND_CLUSTERS_CLEANUP
- 9.28 OPG_APIS.FIND_CLUSTERS_PREP
- 9.29 OPG_APIS.FIND_SP
- 9.30 OPG_APIS.FIND_SP_CLEANUP
- 9.31 OPG_APIS.FIND_SP_PREP
- 9.32 OPG_APIS.GET_BUILD_ID
- 9.33 OPG_APIS.GET_GEOMETRY_FROM_V_COL
- 9.34 OPG_APIS.GET_GEOMETRY_FROM_V_T_COLS
- 9.35 OPG_APIS.GET_LATLONG_FROM_V_COL
- 9.36 OPG_APIS.GET_LATLONG_FROM_V_T_COLS
- 9.37 OPG_APIS.GET_LONG_LAT_GEOMETRY
- 9.38 OPG_APIS.GET_LATLONG_FROM_V_COL
- 9.39 OPG_APIS.GET_LONGLAT_FROM_V_T_COLS
- 9.40 OPG_APIS.GET_SCN
- 9.41 OPG_APIS.GET_VERSION
- 9.42 OPG_APIS.GET_WKTGEOMETRY_FROM_V_COL
- 9.43 OPG_APIS.GET_WKTGEOMETRY_FROM_V_T_COLS
- 9.44 OPG_APIS.GRANT_ACCESS
- 9.45 OPG_APIS.IMP_EDGE_TAB_STATS
- 9.46 OPG_APIS.IMP_VERTEX_TAB_STATS
- 9.47 OPG_APIS.PR
- 9.48 OPG_APIS.PR_CLEANUP
- 9.49 OPG_APIS.PR_PREP
- 9.50 OPG_APIS.PREPARE_TEXT_INDEX
- 9.51 OPG_APIS.RENAME_PG
- 9.52 OPG_APIS.SPARSIFY_GRAPH
- 9.53 OPG_APIS.SPARSIFY_GRAPH_CLEANUP
- 9.54 OPG_APIS.SPARSIFY_GRAPH_PREP
- 10 OPG_GRAPHOP Package Subprograms
-
1
Property Graph Support Overview
-
Part II In-Memory Graph Server (PGX) Advanced User Guide
- 11 Configuring the In-Memory Graph Server (PGX)
- 12 Graphs Management
- 13 Namespaces and Sharing
-
14
PGX Programming Guides
- 14.1 Design of the Graph Server (PGX) API
- 14.2 Data Types and Collections in the Graph Server (PGX)
- 14.3 Handling Asynchronous Requests in Graph Server (PGX)
- 14.4 Graph Client Sessions
-
14.5
Graph Mutation and Subgraphs
- 14.5.1 Altering Graphs
- 14.5.2 Simplifying and Copying Graphs
- 14.5.3 Transposing Graphs
- 14.5.4 Undirecting Graphs
- 14.5.5 Advanced Multi-Edge Handling
- 14.5.6 Creating a Subgraph
- 14.5.7 Creating a Bipartite Subgraph
- 14.5.8 Creating a Sparsified Subgraph
- 14.6 Graph Builder and Graph Change Set
- 14.7 Managing Transient Data
- 14.8 Graph Versioning
- 14.9 Labels and Properties
-
14.10
Filter Expressions
- 14.10.1 Syntax
- 14.10.2 Type System
- 14.10.3 Path Finding Filters
- 14.10.4 Subgraph Filters
-
14.10.5
Operations on Filter Expressions
- 14.10.5.1 Defining Filter Expressions
- 14.10.5.2 Defining Result Set Filters
- 14.10.5.3 Creating a Subgraph from PGQL Result Set
- 14.10.5.4 Defining Collection Filters
- 14.10.5.5 Creating a Subgraph from Collection Filters
- 14.10.5.6 Combining Filter Expressions
- 14.10.5.7 Creating a Subgraph Using Filter Expressions with Partitioned IDs
- 14.11 Advanced Task Scheduling Using Execution Environments
- 14.12 Admin API
-
14.13
PgxFrames Tabular Data-Structure
- 14.13.1 Loading a PgxFrame from a Database
- 14.13.2 Loading a PgxFrame from Client-Side Data
- 14.13.3 Printing the Content of a PgxFrame
- 14.13.4 Destroying a PgxFrame
- 14.13.5 Storing a PgxFrame to a Database
- 14.13.6 Loading and Storing Vector Properties
- 14.13.7 Flattening Vector Properties
- 14.13.8 Union of PGX Frames
- 14.13.9 Joining PGX Frames
- 14.13.10 PgxFrame Helpers
- 14.13.11 PgxFrame-PgqlResultSet Conversions
- 14.13.12 Creating a Graph from Multiple PgxFrame Objects
-
15
Working with Files Using the Graph Server (PGX)
- 15.1 Loading Graph Data from Files
- 15.2 Loading Graph Data in Parallel from Multiple Files
- 15.3 Exporting Graphs Into a File
- 15.4 Exporting a Graph into Multiple Files
- 16 Log Management in the Graph Server (PGX)
- Supplementary Information for Property Graph Support
- Index