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 Introduction to Property Graphs
- 2 Using Oracle Graph with the Autonomous Database
-
Part II SQL Property Graphs
- 3 Introduction to SQL Property Graphs
-
4
SQL DDL Statements for Property
Graphs
-
4.1
Creating a SQL Property Graph
- 4.1.1 About Vertex and Edge Graph Element Tables
- 4.1.2 About Vertex and Edge Table Keys
- 4.1.3 About Labels and Properties
- 4.1.4 Using Graph Options to Create SQL Property Graphs
- 4.1.5 Granting System and Object Privileges for SQL Property Graphs
- 4.1.6 Retrieving SQL Creation DDL Using the DBMS_METADATA Package
- 4.1.7 Limitations of Creating a SQL Property Graph
- 4.2 Revalidating a SQL Property Graph
- 4.3 Dropping a SQL Property Graph
- 4.4 JSON Support in SQL Property Graphs
-
4.1
Creating a SQL Property Graph
-
5
SQL GRAPH_TABLE Queries
- 5.1 About Graph Patterns
- 5.2 Variable-Length Path Patterns
- 5.3 Complex Path Patterns
- 5.4 Vertex and Edge Identifiers
- 5.5 Running GRAPH_TABLE Queries at a Specific SCN
- 5.6 Privileges to Query a SQL Property Graph
- 5.7 Examples for SQL Property Graph Queries
- 5.8 Supported Features and Limitations for Querying a SQL Property Graph
- 5.9 Tuning SQL Property Graph Queries
- 5.10 Type Compatibility Rules for Determining Property Types
- 6 Executing PGQL Queries Against SQL Property Graphs
-
Part III Property Graph Views
- 7 About Property Graph Views
- 8 Loading a PG View into the Graph Server (PGX)
- 9 Quick Starts for Using Property Graph Views
- 10 Getting Started with the Client Tools
-
11
Property Graph Query Language (PGQL)
- 11.1 Creating a Property Graph Using PGQL
- 11.2 Pattern Matching with PGQL
- 11.3 Edge Patterns Have a Direction with PGQL
- 11.4 Vertex and Edge Labels with PGQL
- 11.5 Variable-Length Paths with PGQL
- 11.6 Aggregation and Sorting with PGQL
- 11.7 Executing PGQL Queries Against Property Graph Views
-
Part IV Installing Oracle Graph Server
(PGX) and Client
-
12
Oracle Graph Server and Client Installation
- 12.1 Before You Begin
-
12.2
Oracle Graph Server
Installation
- 12.2.1 Using the RPM Installation
- 12.2.2 Deploying Oracle Graph Server to a Web Server
-
12.2.3
User Authentication and Authorization
- 12.2.3.1 Privileges and Roles in Oracle Database
- 12.2.3.2 Basic Steps for Using an Oracle Database for Authentication
- 12.2.3.3 Prepare the Graph Server for Database Authentication
- 12.2.3.4 Store the Database Password in a Keystore
- 12.2.3.5 Adding Permissions to Publish the Graph
- 12.2.3.6 Token Expiration
- 12.2.3.7 Advanced Access Configuration
- 12.2.3.8 Customizing Roles and Permissions
- 12.2.3.9 Revoking Access to the Graph Server
- 12.2.3.10 Examples of Custom Authorization Rules
- 12.2.3.11 Kerberos Enabled Authentication for the Graph Server (PGX)
-
12.3
Oracle Graph Client
Installation
- 12.3.1 Graph Clients
- 12.3.2 Graph Visualization Web Client
- 12.4 Setting Up Transport Layer Security
- 13 Getting Started with the Graph Server (PGX)
-
12
Oracle Graph Server and Client Installation
-
Part V Using the Graph Server (PGX)
-
14
Developing Applications with Graph
Analytics
- 14.1 About Vertex and Edge IDs
-
14.2
Graph Management in the Graph
Server (PGX)
-
14.2.1
Reading Graphs from Oracle Database into the
Graph Server (PGX)
- 14.2.1.1 Reading Entity Providers at the Same SCN
- 14.2.1.2 Progress Reporting and Estimation for Graph Loading
- 14.2.1.3 API for Loading Graphs into Memory
- 14.2.1.4 Graph Configuration Options
- 14.2.1.5 Data Loading Security Best Practices
- 14.2.1.6 Data Format Support Matrix
- 14.2.1.7 Immutability of Loaded Graphs
- 14.2.2 Storing a Graph Snapshot on Disk
- 14.2.3 Publishing a Graph
- 14.2.4 Deleting a Graph
-
14.2.1
Reading Graphs from Oracle Database into the
Graph Server (PGX)
- 14.3 Keeping the Graph in Oracle Database Synchronized with the Graph Server
- 14.4 Optimizing Graphs for Read Versus Updates in the Graph Server (PGX)
- 14.5 Executing Built-in Algorithms
- 14.6 Using Custom PGX Graph Algorithms
- 14.7 Creating Subgraphs
-
14.8
Using Automatic Delta Refresh to Handle Database Changes
- 14.8.1 Configuring the Graph Server (PGX) for Auto-Refresh
- 14.8.2 Configuring Basic Auto-Refresh
- 14.8.3 Reading the Graph Using the Graph Server (PGX) or a Java Application
- 14.8.4 Checking Out a Specific Snapshot of the Graph
- 14.8.5 Advanced Auto-Refresh Configuration
- 14.8.6 Special Considerations When Using Auto-Refresh
- 14.9 User-Defined Functions (UDFs) in PGX
- 14.10 Using the Graph Server (PGX) as a Library
-
15
Using the Machine Learning Library (PgxML) for Graphs
-
15.1
Using the DeepWalk Algorithm
- 15.1.1 Loading a Graph
- 15.1.2 Building a Minimal DeepWalk Model
- 15.1.3 Building a Customized DeepWalk Model
- 15.1.4 Training a DeepWalk Model
- 15.1.5 Getting the Loss Value For a DeepWalk Model
- 15.1.6 Computing Similar Vertices for a Given Vertex
- 15.1.7 Computing Similar Vertices for a Vertex Batch
- 15.1.8 Getting All Trained Vertex Vectors
- 15.1.9 Storing a Trained DeepWalk Model
- 15.1.10 Loading a Pre-Trained DeepWalk Model
- 15.1.11 Destroying a DeepWalk Model
-
15.2
Using the Supervised GraphWise Algorithm (Vertex Embeddings and
Classification)
- 15.2.1 Loading a Graph
- 15.2.2 Building a Minimal GraphWise Model
- 15.2.3 Advanced Hyperparameter Customization
- 15.2.4 Building a GraphWise Model Using Heterogeneous Graphs
- 15.2.5 Classification Versus Regression Models on Supervised GraphWise Models
- 15.2.6 Setting a Custom Loss Function and Batch Generator (for Anomaly Detection)
- 15.2.7 Training a Supervised GraphWise Model
- 15.2.8 Getting the Loss Value For a Supervised GraphWise Model
- 15.2.9 Inferring the Vertex Labels for a Supervised GraphWise Model
- 15.2.10 Evaluating the Supervised GraphWise Model Performance
- 15.2.11 Inferring Embeddings for a Supervised GraphWise Model
- 15.2.12 Storing a Trained Supervised GraphWise Model
- 15.2.13 Loading a Pre-Trained Supervised GraphWise Model
- 15.2.14 Destroying a Supervised GraphWise Model
- 15.2.15 Explaining a Prediction of a Supervised GraphWise Model
-
15.3
Using the Unsupervised GraphWise Algorithm
- 15.3.1 Loading a Graph
- 15.3.2 Building a Minimal Unsupervised GraphWise Model
- 15.3.3 Advanced Hyperparameter Customization
- 15.3.4 Building an Unsupervised GraphWise Model Using Heterogeneous Graphs
- 15.3.5 Training an Unsupervised GraphWise Model
- 15.3.6 Getting the Loss Value for an Unsupervised GraphWise Model
- 15.3.7 Inferring Embeddings for an Unsupervised GraphWise Model
- 15.3.8 Storing an Unsupervised GraphWise Model
- 15.3.9 Loading a Pre-Trained Unsupervised GraphWise Model
- 15.3.10 Destroying an Unsupervised GraphWise Model
- 15.3.11 Explaining a Prediction for an Unsupervised GraphWise Model
-
15.4
Using the Supervised EdgeWise
Algorithm (Edge Embeddings and Classification)
- 15.4.1 Loading a Graph
- 15.4.2 Building a Minimal Supervised EdgeWise Model
- 15.4.3 Advanced Hyperparameter Customization
- 15.4.4 Applying EdgeWise for Partitioned Graphs
- 15.4.5 Classification Versus Regression on Supervised EdgeWise Models
- 15.4.6 Setting a Custom Loss Function and Batch Generator (for Anomaly Detection)
- 15.4.7 Setting the Edge Embedding Production Method
- 15.4.8 Training the Supervised EdgeWise Model
- 15.4.9 Getting the Loss Value for a Supervised EdgeWise Model
- 15.4.10 Inferring Edge Labels for a Supervised EdgeWise Model
- 15.4.11 Evaluating Model Performance
- 15.4.12 Inferring Embeddings for a Supervised EdgeWise Model
- 15.4.13 Storing a Supervised EdgeWise Model
- 15.4.14 Loading a Pre-Trained Supervised EdgeWise Model
- 15.4.15 Destroying a Supervised EdgeWise Model
- 15.4.16 Example: Predicting Ratings on the Movielens Dataset
-
15.5
Using the Pg2vec Algorithm
- 15.5.1 Loading a Graph
- 15.5.2 Building a Minimal Pg2vec Model
- 15.5.3 Building a Customized Pg2vec Model
- 15.5.4 Training a Pg2vec Model
- 15.5.5 Getting the Loss Value For a Pg2vec Model
- 15.5.6 Computing Similar Graphlets for a Given Graphlet
- 15.5.7 Computing Similars for a Graphlet Batch
- 15.5.8 Inferring a Graphlet Vector
- 15.5.9 Inferring Vectors for a Graphlet Batch
- 15.5.10 Storing a Trained Pg2vec Model
- 15.5.11 Loading a Pre-Trained Pg2vec Model
- 15.5.12 Destroying a Pg2vec Model
- 15.6 Model Repository and Model Stores
-
15.1
Using the DeepWalk Algorithm
-
16
Executing PGQL Queries Against the Graph
Server (PGX)
- 16.1 Getting Started with PGQL
- 16.2 Creating Property Graphs Using Options
- 16.3 Supported PGQL Features and Limitations on the Graph Server (PGX)
- 16.4 Java APIs for Executing CREATE PROPERTY GRAPH Statements
- 16.5 Python APIs for Executing CREATE PROPERTY GRAPH Statements
- 16.6 Java APIs for Executing SELECT Queries
- 16.7 Java APIs for Executing UPDATE Queries
- 16.8 PGQL Queries with Partitioned IDs
- 16.9 Security Tools for Executing PGQL Queries
- 16.10 Best Practices for Tuning PGQL Queries
- 17 REST Endpoints for the Graph Server
-
14
Developing Applications with Graph
Analytics
-
Part VI Graph Visualization Application
- 18 About the Graph Visualization Application
-
19
Using the Graph Visualization Application
- 19.1 Visualizing PGQL Queries on Graphs Loaded Into the Graph Server (PGX)
- 19.2 Visualizing PGQL and SQL Graph Queries on Graphs in the Database
- 19.3 Graph Visualization Modes
- 19.4 Graph Visualization Settings
- 19.5 Using the Geographical Layout
- 19.6 Using Live Search
- 19.7 Using URL Parameters to Control the Graph Visualization Application
-
Part VII Graph Server (PGX) Advanced User
Guide
- 20 Configuring the Graph Server (PGX) and the Graph Client
- 21 Deploying Oracle Graph Server Behind a Load Balancer
- 22 Namespaces and Sharing
-
23
PGX Programming Guides
- 23.1 Design of the Graph Server (PGX) API
- 23.2 Data Types and Collections in the Graph Server (PGX)
- 23.3 Handling Asynchronous Requests in Graph Server (PGX)
- 23.4 Graph Client Sessions
-
23.5
Graph Mutation and Subgraphs
- 23.5.1 Altering Graphs
- 23.5.2 Simplifying and Copying Graphs
- 23.5.3 Transposing Graphs
- 23.5.4 Undirecting Graphs
- 23.5.5 Advanced Multi-Edge Handling
- 23.5.6 Creating a Subgraph
- 23.5.7 Creating a Bipartite Subgraph
- 23.5.8 Creating a Sparsified Subgraph
- 23.6 Graph Builder and Graph Change Set
- 23.7 Managing Transient Data
- 23.8 Graph Versioning
- 23.9 Labels and Properties
-
23.10
Filter Expressions
- 23.10.1 Syntax
- 23.10.2 Type System
- 23.10.3 Path Finding Filters
- 23.10.4 Subgraph Filters
-
23.10.5
Operations on Filter Expressions
- 23.10.5.1 Defining Filter Expressions
- 23.10.5.2 Defining Result Set Filters
- 23.10.5.3 Creating a Subgraph from PGQL Result Set
- 23.10.5.4 Defining Collection Filters
- 23.10.5.5 Creating a Subgraph from Collection Filters
- 23.10.5.6 Combining Filter Expressions
- 23.10.5.7 Creating a Subgraph Using Filter Expressions with Partitioned IDs
- 23.11 Advanced Task Scheduling Using Execution Environments
- 23.12 Admin API
-
23.13
PgxFrames Tabular Data-Structure
- 23.13.1 Converting PgqlResultSet to a PgxFrame
- 23.13.2 Storing a PgxFrame to a Database
- 23.13.3 Storing a PgxFrame to a CSV File
- 23.13.4 Union of PGX Frames
- 23.13.5 Joining PGX Frames
- 23.13.6 Printing the Content of a PgxFrame
- 23.13.7 Destroying a PgxFrame
- 23.13.8 Loading and Storing Vector Properties
- 23.13.9 Flattening Vector Properties
- 23.13.10 PgxFrame Helpers
- 23.13.11 Converting a PgxFrame to PgqlResultSet
- 23.13.12 PgxFrame to Pandas DataFrame Conversions
- 23.13.13 Loading a PgxFrame from a Database
- 23.13.14 Loading a PgxFrame from a CSV File
- 23.13.15 Loading a PgxFrame from Client-Side Data
- 23.13.16 Creating a Graph from Multiple PgxFrame Objects
-
24
Working with Files Using the Graph Server (PGX)
- 24.1 Loading Graph Data from Files
- 24.2 Loading Graph Data in Parallel from Multiple Files
- 24.3 Exporting Graphs Into a File
- 24.4 Exporting a Graph into Multiple Files
- 25 Log Management in the Graph Server (PGX)
-
Supplementary Information for Property Graph Support
-
A
Using the Property Graph Schema
- A.1 Property Graph Schema Objects for Oracle Database
- A.2 Data Access Layer
- A.3 Getting Started with Property Graphs
-
A.4
Using Java APIs for Property Graph Data
- A.4.1 Overview of the Java APIs
- A.4.2 Parallel Retrieval of Graph Data
- A.4.3 Using an Element Filter Callback for Subgraph Extraction
- A.4.4 Using Optimization Flags on Reads over Property Graph Data
- A.4.5 Adding and Removing Attributes of a Property Graph Subgraph
- A.4.6 Getting Property Graph Metadata
- A.4.7 Merging New Data into an Existing Property Graph
- A.4.8 Opening and Closing a Property Graph Instance
- A.4.9 Creating Vertices
- A.4.10 Creating Edges
- A.4.11 Deleting Vertices and Edges
- A.4.12 Reading a Graph from a Database into an Embedded Graph Server (PGX)
- A.4.13 Specifying Labels for Vertices
- A.4.14 Building an In-Memory Graph
- A.4.15 Dropping a Property Graph
- A.4.16 Executing PGQL Queries
- A.5 Access Control for Property Graph Data (Graph-Level and OLS)
- A.6 SQL-Based Property Graph Query and Analytics
- A.7 Creating Property Graph Views on an RDF Graph
- A.8 Quick Start: Interactively Analyze Graph Data Stored in Property Graph Schema Objects
- A.9 Working with Property Graph Objects in SQL Developer
-
A.10
Executing PGQL Queries Against Property Graph
Schema Tables
- A.10.1 PGQL Features Supported in Property Graph Schema
- A.10.2 Creating Property Graphs through CREATE PROPERTY GRAPH Statements
- A.10.3 Dropping Property Graphs through DROP PROPERTY GRAPH Statements
-
A.10.4
Using the oracle.pg.rdbms.pgql Java Package to Execute PGQL Queries
- A.10.4.1 Basic Query Execution
- A.10.4.2 Security Techniques for PGQL Queries
- A.10.4.3 Using a Text Index with PGQL Queries
- A.10.4.4 Obtaining the SQL Translation for a PGQL Query
- A.10.4.5 Additional Options for PGQL Translation and Execution
- A.10.4.6 Querying Another User’s Property Graph
- A.10.4.7 Using Query Optimizer Hints with PGQL
- A.10.4.8 Modifying Property Graphs through INSERT, UPDATE, and DELETE Statements
- A.10.5 Using the Python Client to Execute PGQL Queries
- A.10.6 Performance Considerations for PGQL Queries
-
A.11
OPG_APIS Package Subprograms
- A.11.1 OPG_APIS.ANALYZE_PG
- A.11.2 OPG_APIS.CF
- A.11.3 OPG_APIS.CF_CLEANUP
- A.11.4 OPG_APIS.CF_PREP
- A.11.5 OPG_APIS.CLEAR_PG
- A.11.6 OPG_APIS.CLEAR_PG_INDICES
- A.11.7 OPG_APIS.CLONE_GRAPH
- A.11.8 OPG_APIS.COUNT_TRIANGLE
- A.11.9 OPG_APIS.COUNT_TRIANGLE_CLEANUP
- A.11.10 OPG_APIS.COUNT_TRIANGLE_PREP
- A.11.11 OPG_APIS.COUNT_TRIANGLE_RENUM
- A.11.12 OPG_APIS.CREATE_EDGES_TEXT_IDX
- A.11.13 OPG_APIS.CREATE_PG
- A.11.14 OPG_APIS.CREATE_PG_SNAPSHOT_TAB
- A.11.15 OPG_APIS.CREATE_PG_TEXTIDX_TAB
- A.11.16 OPG_APIS.CREATE_STAT_TABLE
- A.11.17 OPG_APIS.CREATE_SUB_GRAPH
- A.11.18 OPG_APIS.CREATE_VERTICES_TEXT_IDX
- A.11.19 OPG_APIS.DROP_EDGES_TEXT_IDX
- A.11.20 OPG_APIS.DROP_PG
- A.11.21 OPG_APIS.DROP_PG_VIEW
- A.11.22 OPG_APIS.DROP_VERTICES_TEXT_IDX
- A.11.23 OPG_APIS.ESTIMATE_TRIANGLE_RENUM
- A.11.24 OPG_APIS.EXP_EDGE_TAB_STATS
- A.11.25 OPG_APIS.EXP_VERTEX_TAB_STATS
- A.11.26 OPG_APIS.FIND_CC_MAPPING_BASED
- A.11.27 OPG_APIS.FIND_CLUSTERS_CLEANUP
- A.11.28 OPG_APIS.FIND_CLUSTERS_PREP
- A.11.29 OPG_APIS.FIND_SP
- A.11.30 OPG_APIS.FIND_SP_CLEANUP
- A.11.31 OPG_APIS.FIND_SP_PREP
- A.11.32 OPG_APIS.GET_BUILD_ID
- A.11.33 OPG_APIS.GET_GEOMETRY_FROM_V_COL
- A.11.34 OPG_APIS.GET_GEOMETRY_FROM_V_T_COLS
- A.11.35 OPG_APIS.GET_LATLONG_FROM_V_COL
- A.11.36 OPG_APIS.GET_LATLONG_FROM_V_T_COLS
- A.11.37 OPG_APIS.GET_LONG_LAT_GEOMETRY
- A.11.38 OPG_APIS.GET_LATLONG_FROM_V_COL
- A.11.39 OPG_APIS.GET_LONGLAT_FROM_V_T_COLS
- A.11.40 OPG_APIS.GET_OPG_VERSION
- A.11.41 OPG_APIS.GET_SCN
- A.11.42 OPG_APIS.GET_VERSION
- A.11.43 OPG_APIS.GET_WKTGEOMETRY_FROM_V_COL
- A.11.44 OPG_APIS.GET_WKTGEOMETRY_FROM_V_T_COLS
- A.11.45 OPG_APIS.GRANT_ACCESS
- A.11.46 OPG_APIS.IMP_EDGE_TAB_STATS
- A.11.47 OPG_APIS.IMP_VERTEX_TAB_STATS
- A.11.48 OPG_APIS.PR
- A.11.49 OPG_APIS.PR_CLEANUP
- A.11.50 OPG_APIS.PR_PREP
- A.11.51 OPG_APIS.PREPARE_TEXT_INDEX
- A.11.52 OPG_APIS.RENAME_PG
- A.11.53 OPG_APIS.SPARSIFY_GRAPH
- A.11.54 OPG_APIS.SPARSIFY_GRAPH_CLEANUP
- A.11.55 OPG_APIS.SPARSIFY_GRAPH_PREP
- A.12 OPG_GRAPHOP Package Subprograms
- B Mapping Graph Server Roles to Default Privileges
- C Disabling Transport Layer Security (TLS) in Graph Server
- D Migrating Property Graph Applications from Before Release 21c
- E Upgrading From Graph Server and Client 20.4.x to 21.x
- F Third-Party License Information for Oracle Graph Server and Client
-
A
Using the Property Graph Schema
- Index