Table of Contents
- Title and Copyright Information
- Preface
- Changes in This Release for This Guide
- Part I Getting Started with Oracle Property Graphs
- Introduction to Property Graphs
- What Are Property Graphs?
- About the Property Graph Feature
- Running Graph Queries and Graph Analytics in the Database
- Learn About the Graph Server (PGX)
- Developing Applications Using Graph Server Functionality as a Library
- Security Best Practices with Graph Data
- About Oracle Graph Server and Client Accessibility
- Running Oracle Graph Quickstart Container Image
- Using Oracle Graph with the Autonomous AI Database
- Introduction to Property Graphs
- Part II SQL Property Graphs
- Introduction to SQL Property Graphs
- SQL DDL Statements for Property Graphs
- Creating a SQL Property Graph
- About Vertex and Edge Graph Element Tables
- About Vertex and Edge Table Keys
- About Labels and Properties
- Using Graph Options to Create SQL Property Graphs
- Granting System and Object Privileges for SQL Property Graphs
- Retrieving Metadata for SQL Property Graphs
- Retrieving SQL Creation DDL Using the DBMS_METADATA Package
- Creating a SQL Property Graph Using Database Views
- Special Instructions for Creating SQL Property Graphs with Advanced Table Features
- Limitations of Creating a SQL Property Graph
- Adding a Comment to a SQL Property Graph
- Revalidating a SQL Property Graph
- Renaming a SQL Property Graph
- Dropping a SQL Property Graph
- JSON Support in SQL Property Graphs
- Creating a SQL Property Graph
- SQL Graph Queries
- About Graph Pattern
- Variable Length Path Patterns
- Complex Path Patterns
- Vertex and Edge Identifiers
- Using ONE ROW PER Clause in a SQL Graph Query
- Using Aggregate Functions in SQL Graph Queries
- Selecting All Properties in the COLUMNS Clause
- Using the SOURCE and DESTINATION Predicates
- Running SQL Graph Queries at a Specific SCN
- Privileges to Query a SQL Property Graph
- Examples for SQL Graph Queries
- Supported Features and Limitations When Querying a SQL Property Graph
- Tuning SQL Property Graph Queries
- Type Compatibility Rules for Determining Property Types
- Viewing and Querying SQL Property Graphs Using SQL Developer
- Running Graph Algorithm Functions in SQL Graph Queries
- Loading a SQL Property Graph into the Graph Server (PGX)
- Loading a SQL Property Graph Using the readGraphByName API
- Loading a SQL Property Graph from a Different Schema
- Loading a SQL Property Graph Using PropertyLoadingMode Options
- Loading a SQL Property Graph Using Graph Optimization Options
- Loading a SQL Property Graph Using OnMissingVertex Options
- Loading a SQL Property Graph with Properties Mapped to CLOB Data Type Columns
- Loading a Subgraph Using PGQL Queries
- Expanding a Subgraph
- Handling Vertex and Edge Identifiers in the Graph Server (PGX)
- Mapping Oracle Data Types to PGX Types
- Privileges to Load a SQL Property Graph
- Loading Graphs with Unsupported Key Types
- Loading SQL Property Graphs with Composite Keys
- Loading a SQL Property Graph Using the readGraphByName API
- Executing PGQL Queries Against SQL Property Graphs
- Visualizing SQL Graph Queries Using the APEX Graph Visualization Plug-in
- Getting Started with the Graph Visualization Extension for VS Code
- Getting Started with the Graph Visualization Extension in Jupyter Environments
- Using the Autonomous AI Database Graph Client in OCI Data Science Notebooks
- Part III PGQL Property Graphs
- About PGQL Property Graphs
- Loading a PGQL property graph into the Graph Server (PGX)
- Quick Starts for Using PGQL Property Graphs
- Getting Started with the Client Tools
- Property Graph Query Language (PGQL)
- Creating a Property Graph Using PGQL
- Pattern Matching with PGQL
- Edge Patterns Have a Direction with PGQL
- Vertex and Edge Labels with PGQL
- Variable-Length Paths with PGQL
- Aggregation and Sorting with PGQL
- Executing PGQL Queries Against PGQL Property Graphs
- Part IV Installing Oracle Graph Server (PGX) and Client
- Oracle Graph Server and Client Installation
- Before You Begin
- Oracle Graph Server Installation
- System Requirements for Installing Oracle Graph Server
- Using the RPM Installation
- Deploying Oracle Graph Server to a Web Server
- User Authentication and Authorization
- Basic Steps for Using a Database for Authentication
- Prepare the Graph Server for Database Authentication
- Store the Database Password in a Keystore
- Adding Permissions to Publish the Graph
- Token Expiration
- Customizing Roles and Permissions
- Revoking Access to the Graph Server
- Examples of Custom Authorization Rules
- Oracle Graph Client Installation
- Setting Up Transport Layer Security
- Getting Started with the Graph Server (PGX)
- Oracle Graph Server and Client Installation
- Part V Using the Graph Server (PGX)
- Developing Applications with Graph Analytics
- About Vertex and Edge IDs
- Graph Management in the Graph Server (PGX)
- Keeping a Database Graph Synchronized with the Graph Server
- Optimizing Graphs for Read Versus Updates in the Graph Server (PGX)
- Executing Built-in Algorithms
- Using Custom PGX Graph Algorithms
- User-Defined Functions (UDFs) in PGX
- Using the Graph Server (PGX) as a Library
- Using the Machine Learning Library (PgxML) for Graphs
- Using the DeepWalk Algorithm
- Loading a Graph
- Building a Minimal DeepWalk Model
- Building a Customized DeepWalk Model
- Training a DeepWalk Model
- Getting the Loss Value For a DeepWalk Model
- Computing Similar Vertices for a Given Vertex
- Computing Similar Vertices for a Vertex Batch
- Getting All Trained Vertex Vectors
- Storing a Trained DeepWalk Model
- Loading a Pre-Trained DeepWalk Model
- Destroying a DeepWalk Model
- Using the Supervised GraphWise Algorithm (Vertex Embeddings and Classification)
- Loading a Graph
- Building a Minimal GraphWise Model
- Advanced Hyperparameter Customization
- Building a GraphWise Model Using Partitioned Graphs
- Supported Property Types for Supervised GraphWise Model
- Classification Versus Regression Models on Supervised GraphWise Models
- Setting a Custom Loss Function and Batch Generator (for Anomaly Detection)
- Training a Supervised GraphWise Model
- Getting the Loss Value For a Supervised GraphWise Model
- Getting the Training Log for a Supervised GraphWise Model
- Inferring the Vertex Labels for a Supervised GraphWise Model
- Evaluating the Supervised GraphWise Model Performance
- Inferring Embeddings for a Supervised GraphWise Model
- Storing a Trained Supervised GraphWise Model
- Loading a Pre-Trained Supervised GraphWise Model
- Destroying a Supervised GraphWise Model
- Explaining a Prediction of a Supervised GraphWise Model
- Using the Supervised EdgeWise Algorithm (Edge Embeddings and Classification)
- Loading a Graph
- Building a Minimal Supervised EdgeWise Model
- Advanced Hyperparameter Customization
- Applying EdgeWise for Partitioned Graphs
- Supported Property Types for Supervised EdgeWise Model
- Classification Versus Regression on Supervised EdgeWise Models
- Setting a Custom Loss Function and Batch Generator (for Anomaly Detection)
- Setting the Edge Embedding Production Method
- Training a Supervised EdgeWise Model
- Getting the Loss Value for a Supervised EdgeWise Model
- Getting the Training Log for a Supervised EdgeWise Model
- Inferring Edge Labels for a Supervised EdgeWise Model
- Evaluating Model Performance
- Inferring Embeddings for a Supervised EdgeWise Model
- Storing a Supervised EdgeWise Model
- Loading a Pre-Trained Supervised EdgeWise Model
- Destroying a Supervised EdgeWise Model
- Example: Predicting Ratings on the Movielens Dataset
- Using the Unsupervised GraphWise Algorithm (Vertex Embeddings)
- Loading a Graph
- Building a Minimal Unsupervised GraphWise Model
- Advanced Hyperparameter Customization
- Supported Property Types for Unsupervised GraphWise Model
- Building an Unsupervised GraphWise Model Using Partitioned Graphs
- Training an Unsupervised GraphWise Model
- Getting the Loss Value for an Unsupervised GraphWise Model
- Getting the Training Log for an Unsupervised GraphWise Model
- Inferring Embeddings for an Unsupervised GraphWise Model
- Classifying the Vertices Using the Obtained Embeddings
- Storing an Unsupervised GraphWise Model
- Loading a Pre-Trained Unsupervised GraphWise Model
- Destroying an Unsupervised GraphWise Model
- Explaining a Prediction for an Unsupervised GraphWise Model
- Using the Unsupervised EdgeWise Algorithm
- Loading a Graph
- Building a Minimal Unsupervised EdgeWise Model
- Advanced Hyperparameter Customization
- Supported Property Types for Unsupervised EdgeWise Model
- Applying Unsupervised EdgeWise for Partitioned Graphs
- Setting the Edge Combination Production Method
- Training an Unsupervised EdgeWise Model
- Getting the Loss Value for an Unsupervised EdgeWise Model
- Getting the Training Log for an Unsupervised EdgeWise Model
- Inferring Embeddings for an Unsupervised EdgeWise Model
- Classifying the Edges Using the Obtained Embeddings
- Storing an Unsupervised EdgeWise Model
- Loading a Pre-Trained Unsupervised EdgeWise Model
- Destroying an Unsupervised EdgeWise Model
- Example: Computing Edge Embeddings on the Movielens Dataset
- Using the Unsupervised Anomaly Detection GraphWise Algorithm (Vertex Embeddings and Anomaly Scores)
- Loading a Graph
- Building a Minimal Unsupervised Anomaly Detection GraphWise Model
- Advanced Hyperparameter Customization
- Building an Unsupervised Anomaly Detection GraphWise Model Using Partitioned Graphs
- Training an Unsupervised Anomaly Detection GraphWise Model
- Getting the Loss Value for an Unsupervised Anomaly Detection GraphWise Model
- Inferring Embeddings for an Unsupervised Anomaly Detection GraphWise Model
- Inferring Anomalies
- Storing an Unsupervised Anomaly Detection GraphWise Model
- Loading a Pre-Trained Unsupervised Anomaly Detection GraphWise Model
- Destroying an Unsupervised Anomaly Detection GraphWise Model
- Using the Pg2vec Algorithm
- Loading a Graph
- Building a Minimal Pg2vec Model
- Building a Customized Pg2vec Model
- Training a Pg2vec Model
- Getting the Loss Value For a Pg2vec Model
- Computing Similar Graphlets for a Given Graphlet
- Computing Similars for a Graphlet Batch
- Inferring a Graphlet Vector
- Inferring Vectors for a Graphlet Batch
- Storing a Trained Pg2vec Model
- Loading a Pre-Trained Pg2vec Model
- Destroying a Pg2vec Model
- Model Repository and Model Stores
- Using the DeepWalk Algorithm
- Executing PGQL Queries Against the Graph Server (PGX)
- Getting Started with PGQL
- Creating Property Graphs Using Options
- Supported PGQL Features and Limitations on the Graph Server (PGX)
- Support for Selecting All Properties
- Unnesting of Variable-Length Path Queries
- Using INTERVAL Literals in PGQL Queries
- Using Path Modes with PGQL
- Support for PGQL Lateral Subqueries
- Support for PGQL GRAPH_TABLE Operator
- OPTIONAL MATCH Clause
- Limitations on Quantifiers
- Limitations on WHERE and COST Clauses in Quantified Patterns
- Java APIs for Executing CREATE PROPERTY GRAPH Statements
- Python APIs for Executing CREATE PROPERTY GRAPH Statements
- Executing PGQL Queries Using the PGX JDBC Driver
- Java APIs for Executing SELECT Queries
- Java APIs for Executing UPDATE Queries
- Python APIs for Executing UPDATE Queries
- PGQL Queries with Partitioned IDs
- Security Tools for Executing PGQL Queries
- Best Practices for Tuning PGQL Queries
- Graph Server REST API Version 2
- Developing Applications with Graph Analytics
- Part VI User-Managed Graph Studio
- About User-Managed Graph Studio
- Graph Explorer
- Graph Explorer User Interface
- Querying and Visualizing SQL Property Graphs
- Visualizing the Schema of a SQL Property Graph in Graph Explorer
- Querying and Visualizing PGQL Property Graphs
- Visualizing the Schema of a PGQL Property Graph in Graph Explorer
- Querying and Visualizing Graphs Loaded Into the Graph Server (PGX)
- Viewing Query Results in a Table
- About the Graph Visualization Toolbar and Visualization Modes
- About the Graph Visualization Legend Panel
- Using Search in a Graph Visualization
- Displaying Implied Edges for Hidden Vertices
- Managing the Display Size of the Graph
- Query Visualization Settings
- Visualizing Clusters in Graph Explorer
- Using the Geographical Layout
- Using Network Evolution in Graph Visualization
- Embedding the Graph Visualization Library in a Web Application
- Graph Visualization Application
- About the Graph Visualization Application
- Using the Graph Visualization Application
- Using the Graph Server Administrator Dashboard
- Part VII Graph Server (PGX) Advanced User Guide
- Graph Server (PGX) Configuration Options
- Memory Consumption by the Graph Server (PGX)
- Deploying Oracle Graph Server Behind a Load Balancer
- Namespaces and Sharing
- PGX Programming Guides
- Design of the Graph Server (PGX) API
- Data Types and Collections in the Graph Server (PGX)
- Handling Asynchronous Requests in Graph Server (PGX)
- Graph Client Sessions
- Graph Mutation and Subgraphs
- Graph Builder and Graph Change Set
- Managing Transient Data
- Graph Versioning
- Labels and Properties
- Filter Expressions
- Advanced Task Scheduling Using Execution Environments
- Admin API
- PgxFrames Tabular Data-Structure
- Converting PgqlResultSet to a PgxFrame
- Storing a PgxFrame to a Database
- Storing a PgxFrame to a CSV File
- Union of PGX Frames
- Joining PGX Frames
- Printing the Content of a PgxFrame
- Destroying a PgxFrame
- Loading and Storing Vector Properties
- Flattening Vector Properties
- PgxFrame Helpers
- Converting a PgxFrame to PgqlResultSet
- PgxFrame to Pandas DataFrame Conversions
- Loading a PgxFrame from a Database
- Loading a PgxFrame from a CSV File
- Loading a PgxFrame from Client-Side Data
- Creating a Graph from Multiple PgxFrame Objects
- Working with Files Using the Graph Server (PGX)
- Log Management in the Graph Server (PGX)
- Supplementary Information for Property Graph Support