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 Metadata for SQL Property Graphs
- 4.1.7 Retrieving SQL Creation DDL Using the DBMS_METADATA Package
- 4.1.8 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 Queries
- 5.1 About Graph Pattern
- 5.2 Variable Length Path Patterns
- 5.3 Complex Path Patterns
- 5.4 Vertex and Edge Identifiers
- 5.5 Using Aggregate Functions in SQL Graph Queries
- 5.6 Running SQL Graph Queries at a Specific SCN
- 5.7 Privileges to Query a SQL Property Graph
- 5.8 Examples for SQL Graph Queries
- 5.9 Supported Features and Limitations for Querying a SQL Property Graph
- 5.10 Tuning SQL Property Graph Queries
- 5.11 Type Compatibility Rules for Determining Property Types
- 5.12 Viewing and Querying SQL Property Graphs Using SQL Developer
-
6
Loading a SQL Property Graph into the Graph
Server (PGX)
- 6.1 Loading a SQL Property Graph Using the readGraphByName API
- 6.2 Loading a Subgraph Using PGQL Queries
- 6.3 Expanding a Subgraph
- 6.4 Handling Vertex and Edge Identifiers in the Graph Server (PGX)
- 6.5 Mapping Oracle Database Types to PGX Types
- 6.6 Privileges to Load a SQL Property Graph
- 6.7 Restriction on Key Types
- 6.8 Loading SQL Property Graphs with Unsupported Key Types
- 7 Executing PGQL Queries Against SQL Property Graphs
- 8 Visualizing SQL Graph Queries Using the APEX Graph Visualization Plug-in
-
Part III PGQL Property Graphs
- 9 About PGQL Property Graphs
- 10 Loading a PGQL property graph into the Graph Server (PGX)
- 11 Quick Starts for Using PGQL Property Graphs
- 12 Getting Started with the Client Tools
-
13
Property Graph Query Language (PGQL)
- 13.1 Creating a Property Graph Using PGQL
- 13.2 Pattern Matching with PGQL
- 13.3 Edge Patterns Have a Direction with PGQL
- 13.4 Vertex and Edge Labels with PGQL
- 13.5 Variable-Length Paths with PGQL
- 13.6 Aggregation and Sorting with PGQL
- 13.7 Executing PGQL Queries Against PGQL Property Graphs
-
Part IV Installing Oracle Graph Server
(PGX) and Client
-
14
Oracle Graph Server and Client Installation
- 14.1 Before You Begin
-
14.2
Oracle Graph Server
Installation
- 14.2.1 System Requirements for Installing Oracle Graph Server
- 14.2.2 Using the RPM Installation
- 14.2.3 Deploying Oracle Graph Server to a Web Server
-
14.2.4
User Authentication and Authorization
- 14.2.4.1 Basic Steps for Using an Oracle Database for Authentication
- 14.2.4.2 Prepare the Graph Server for Database Authentication
- 14.2.4.3 Store the Database Password in a Keystore
- 14.2.4.4 Adding Permissions to Publish the Graph
- 14.2.4.5 Token Expiration
- 14.2.4.6 Customizing Roles and Permissions
- 14.2.4.7 Revoking Access to the Graph Server
- 14.2.4.8 Examples of Custom Authorization Rules
- 14.2.4.9 Kerberos Enabled Authentication for the Graph Server (PGX)
- 14.3 Oracle Graph Client Installation
- 14.4 Setting Up Transport Layer Security
- 15 Getting Started with the Graph Server (PGX)
-
14
Oracle Graph Server and Client Installation
-
Part V Using the Graph Server (PGX)
-
16
Developing Applications with Graph
Analytics
- 16.1 Using the Graph Server Administrator Dashboard
- 16.2 About Vertex and Edge IDs
- 16.3 Graph Management in the Graph Server (PGX)
- 16.4 Keeping the Graph in Oracle Database Synchronized with the Graph Server
- 16.5 Optimizing Graphs for Read Versus Updates in the Graph Server (PGX)
- 16.6 Executing Built-in Algorithms
- 16.7 Using Custom PGX Graph Algorithms
- 16.8 Creating Subgraphs
- 16.9 User-Defined Functions (UDFs) in PGX
- 16.10 Using Graph Server (PGX) as a Library
-
17
Using the Machine Learning Library (PgxML) for Graphs
-
17.1
Using the DeepWalk Algorithm
- 17.1.1 Loading a Graph
- 17.1.2 Building a Minimal DeepWalk Model
- 17.1.3 Building a Customized DeepWalk Model
- 17.1.4 Training a DeepWalk Model
- 17.1.5 Getting the Loss Value For a DeepWalk Model
- 17.1.6 Computing Similar Vertices for a Given Vertex
- 17.1.7 Computing Similar Vertices for a Vertex Batch
- 17.1.8 Getting All Trained Vertex Vectors
- 17.1.9 Storing a Trained DeepWalk Model
- 17.1.10 Loading a Pre-Trained DeepWalk Model
- 17.1.11 Destroying a DeepWalk Model
-
17.2
Using the Supervised GraphWise Algorithm (Vertex Embeddings and
Classification)
- 17.2.1 Loading a Graph
- 17.2.2 Building a Minimal GraphWise Model
- 17.2.3 Advanced Hyperparameter Customization
- 17.2.4 Building a GraphWise Model Using Partitioned Graphs
- 17.2.5 Supported Property Types for Supervised GraphWise Model
- 17.2.6 Classification Versus Regression Models on Supervised GraphWise Models
- 17.2.7 Setting a Custom Loss Function and Batch Generator (for Anomaly Detection)
- 17.2.8 Training a Supervised GraphWise Model
- 17.2.9 Getting the Loss Value For a Supervised GraphWise Model
- 17.2.10 Inferring the Vertex Labels for a Supervised GraphWise Model
- 17.2.11 Evaluating the Supervised GraphWise Model Performance
- 17.2.12 Inferring Embeddings for a Supervised GraphWise Model
- 17.2.13 Storing a Trained Supervised GraphWise Model
- 17.2.14 Loading a Pre-Trained Supervised GraphWise Model
- 17.2.15 Destroying a Supervised GraphWise Model
- 17.2.16 Explaining a Prediction of a Supervised GraphWise Model
-
17.3
Using the Supervised EdgeWise
Algorithm (Edge Embeddings and Classification)
- 17.3.1 Loading a Graph
- 17.3.2 Building a Minimal Supervised EdgeWise Model
- 17.3.3 Advanced Hyperparameter Customization
- 17.3.4 Applying EdgeWise for Partitioned Graphs
- 17.3.5 Supported Property Types for Supervised EdgeWise Model
- 17.3.6 Classification Versus Regression on Supervised EdgeWise Models
- 17.3.7 Setting a Custom Loss Function and Batch Generator (for Anomaly Detection)
- 17.3.8 Setting the Edge Embedding Production Method
- 17.3.9 Training the Supervised EdgeWise Model
- 17.3.10 Getting the Loss Value for a Supervised EdgeWise Model
- 17.3.11 Inferring Edge Labels for a Supervised EdgeWise Model
- 17.3.12 Evaluating Model Performance
- 17.3.13 Inferring Embeddings for a Supervised EdgeWise Model
- 17.3.14 Storing a Supervised EdgeWise Model
- 17.3.15 Loading a Pre-Trained Supervised EdgeWise Model
- 17.3.16 Destroying a Supervised EdgeWise Model
- 17.3.17 Example: Predicting Ratings on the Movielens Dataset
-
17.4
Using the Unsupervised GraphWise
Algorithm (Vertex Embeddings)
- 17.4.1 Loading a Graph
- 17.4.2 Building a Minimal Unsupervised GraphWise Model
- 17.4.3 Advanced Hyperparameter Customization
- 17.4.4 Supported Property Types for Unsupervised GraphWise Model
- 17.4.5 Building an Unsupervised GraphWise Model Using Partitioned Graphs
- 17.4.6 Training an Unsupervised GraphWise Model
- 17.4.7 Getting the Loss Value for an Unsupervised GraphWise Model
- 17.4.8 Inferring Embeddings for an Unsupervised GraphWise Model
- 17.4.9 Classifying the Vertices Using the Obtained Embeddings
- 17.4.10 Storing an Unsupervised GraphWise Model
- 17.4.11 Loading a Pre-Trained Unsupervised GraphWise Model
- 17.4.12 Destroying an Unsupervised GraphWise Model
- 17.4.13 Explaining a Prediction for an Unsupervised GraphWise Model
-
17.5
Using the Unsupervised EdgeWise
Algorithm
- 17.5.1 Loading a Graph
- 17.5.2 Building a Minimal Unsupervised EdgeWise Model
- 17.5.3 Advanced Hyperparameter Customization
- 17.5.4 Supported Property Types for Unsupervised EdgeWise Model
- 17.5.5 Applying Unsupervised EdgeWise for Partitioned Graphs
- 17.5.6 Setting the Edge Combination Production Method
- 17.5.7 Training the Unsupervised EdgeWise Model
- 17.5.8 Getting the Loss Value for an Unsupervised EdgeWise Model
- 17.5.9 Inferring Embeddings for an Unsupervised EdgeWise Model
- 17.5.10 Classifying the Edges Using the Obtained Embeddings
- 17.5.11 Storing an Unsupervised EdgeWise Model
- 17.5.12 Loading a Pre-Trained Unsupervised EdgeWise Model
- 17.5.13 Destroying an Unsupervised Anomaly Detection GraphWise Model
- 17.5.14 Example: Computing Edge Embeddings on the Movielens Dataset
-
17.6
Using the Unsupervised Anomaly
Detection GraphWise Algorithm (Vertex Embeddings and Anomaly Scores)
- 17.6.1 Loading a Graph
- 17.6.2 Building a Minimal Unsupervised Anomaly Detection GraphWise Model
- 17.6.3 Advanced Hyperparameter Customization
- 17.6.4 Building an Unsupervised Anomaly Detection GraphWise Model Using Partitioned Graphs
- 17.6.5 Training an Unsupervised Anomaly Detection GraphWise Model
- 17.6.6 Getting the Loss Value for an Unsupervised Anomaly Detection GraphWise Model
- 17.6.7 Inferring Embeddings for an Unsupervised Anomaly Detection GraphWise Model
- 17.6.8 Inferring Anomalies
- 17.6.9 Storing an Unsupervised Anomaly Detection GraphWise Model
- 17.6.10 Loading a Pre-Trained Unsupervised Anomaly Detection GraphWise Model
- 17.6.11 Destroying an Unsupervised Anomaly Detection GraphWise Model
-
17.7
Using the Pg2vec Algorithm
- 17.7.1 Loading a Graph
- 17.7.2 Building a Minimal Pg2vec Model
- 17.7.3 Building a Customized Pg2vec Model
- 17.7.4 Training a Pg2vec Model
- 17.7.5 Getting the Loss Value For a Pg2vec Model
- 17.7.6 Computing Similar Graphlets for a Given Graphlet
- 17.7.7 Computing Similars for a Graphlet Batch
- 17.7.8 Inferring a Graphlet Vector
- 17.7.9 Inferring Vectors for a Graphlet Batch
- 17.7.10 Storing a Trained Pg2vec Model
- 17.7.11 Loading a Pre-Trained Pg2vec Model
- 17.7.12 Destroying a Pg2vec Model
- 17.8 Model Repository and Model Stores
-
17.1
Using the DeepWalk Algorithm
-
18
Executing PGQL Queries Against the Graph
Server (PGX)
- 18.1 Getting Started with PGQL
- 18.2 Creating Property Graphs Using Options
-
18.3
Supported PGQL Features and Limitations on the
Graph Server (PGX)
- 18.3.1 Support for Selecting All Properties
- 18.3.2 Unnesting of Variable-Length Path Queries
- 18.3.3 Using INTERVAL Literals in PGQL Queries
- 18.3.4 Using Path Modes with PGQL
- 18.3.5 Support for PGQL Lateral Subqueries
- 18.3.6 Support for PGQL GRAPH_TABLE Operator
- 18.3.7 Limitations on Quantifiers
- 18.3.8 Limitations on WHERE and COST Clauses in Quantified Patterns
- 18.4 Java APIs for Executing CREATE PROPERTY GRAPH Statements
- 18.5 Python APIs for Executing CREATE PROPERTY GRAPH Statements
- 18.6 Executing PGQL Queries Using the PGX JDBC Driver
- 18.7 Java APIs for Executing SELECT Queries
- 18.8 Java APIs for Executing UPDATE Queries
- 18.9 Python APIs for Executing UPDATE Queries
- 18.10 PGQL Queries with Partitioned IDs
- 18.11 Security Tools for Executing PGQL Queries
- 18.12 Best Practices for Tuning PGQL Queries
- 19 REST Endpoints for the Graph Server
-
16
Developing Applications with Graph
Analytics
-
Part VI Graph Visualization Application
- 20 About the Graph Visualization Application
-
21
Using the Graph Visualization Application
- 21.1 Visualizing PGQL Queries on Graphs Loaded Into the Graph Server (PGX)
- 21.2 Visualizing PGQL Queries on PGQL Property Graphs
- 21.3 Visualizing Graph Queries on SQL Property Graphs
- 21.4 Graph Visualization Modes
- 21.5 Graph Visualization Settings
- 21.6 Using the Geographical Layout
- 21.7 Using Live Search
-
Part VII Graph Server (PGX) Advanced User
Guide
- 22 Graph Server (PGX) Configuration Options
- 23 Memory Consumption by the Graph Server (PGX)
- 24 Deploying Oracle Graph Server Behind a Load Balancer
- 25 Namespaces and Sharing
-
26
PGX Programming Guides
- 26.1 Design of the Graph Server (PGX) API
- 26.2 Data Types and Collections in the Graph Server (PGX)
- 26.3 Handling Asynchronous Requests in Graph Server (PGX)
- 26.4 Graph Client Sessions
-
26.5
Graph Mutation and Subgraphs
- 26.5.1 Altering Graphs
- 26.5.2 Simplifying and Copying Graphs
- 26.5.3 Transposing Graphs
- 26.5.4 Undirecting Graphs
- 26.5.5 Advanced Multi-Edge Handling
- 26.5.6 Creating a Subgraph
- 26.5.7 Creating a Bipartite Subgraph
- 26.5.8 Creating a Sparsified Subgraph
- 26.6 Graph Builder and Graph Change Set
- 26.7 Managing Transient Data
- 26.8 Graph Versioning
- 26.9 Labels and Properties
-
26.10
Filter Expressions
- 26.10.1 Syntax
- 26.10.2 Type System
- 26.10.3 Path Finding Filters
- 26.10.4 Subgraph Filters
-
26.10.5
Operations on Filter Expressions
- 26.10.5.1 Defining Filter Expressions
- 26.10.5.2 Defining Result Set Filters
- 26.10.5.3 Creating a Subgraph from PGQL Result Set
- 26.10.5.4 Defining Collection Filters
- 26.10.5.5 Creating a Subgraph from Collection Filters
- 26.10.5.6 Combining Filter Expressions
- 26.10.5.7 Creating a Subgraph Using Filter Expressions with Partitioned IDs
-
26.11
Advanced Task Scheduling Using Execution Environments
- 26.11.1 Prerequisites for Using the Enterprise Scheduler
- 26.11.2 Enabling Enterprise Scheduler Features
- 26.11.3 Retrieving and Inspecting the Execution Environment
- 26.11.4 Modifying and Submitting Tasks Under an Updated Environment
- 26.11.5 Using Lambda Syntax
- 26.11.6 Enterprise Scheduler Configuration Guide
- 26.12 Admin API
-
26.13
PgxFrames Tabular Data-Structure
- 26.13.1 Converting PgqlResultSet to a PgxFrame
- 26.13.2 Storing a PgxFrame to a Database
- 26.13.3 Storing a PgxFrame to a CSV File
- 26.13.4 Union of PGX Frames
- 26.13.5 Joining PGX Frames
- 26.13.6 Printing the Content of a PgxFrame
- 26.13.7 Destroying a PgxFrame
- 26.13.8 Loading and Storing Vector Properties
- 26.13.9 Flattening Vector Properties
- 26.13.10 PgxFrame Helpers
- 26.13.11 Converting a PgxFrame to PgqlResultSet
- 26.13.12 PgxFrame to Pandas DataFrame Conversions
- 26.13.13 Loading a PgxFrame from a Database
- 26.13.14 Loading a PgxFrame from a CSV File
- 26.13.15 Loading a PgxFrame from Client-Side Data
- 26.13.16 Creating a Graph from Multiple PgxFrame Objects
-
27
Working with Files Using the Graph Server (PGX)
- 27.1 Loading Graph Data from Files
- 27.2 Loading Graph Data in Parallel from Multiple Files
- 27.3 Exporting Graphs Into a File
- 27.4 Exporting a Graph into Multiple Files
- 28 Log Management in the Graph Server (PGX)
- Supplementary Information for Property Graph Support
- Index