Getting started instructions are available here .
You will need a Linux x86 system (kernel >= 2.6) or Mac OS X installed
Examples of such systems include (but are not limited to):
- Oracle Linux Server (x86) Release 6.5
- Ubuntu (x86) 18.104.22.168 LTS
- Ubuntu (x86) 14.04.1 LTS
- Mint (x86) 17.1
- ArchLinux (x86) 2011.08.19
- Mac OS X (x86) 10.10.5
This software and any accompanying documentation is not generally available and is a non-production version for informational sharing purposes only. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality provided in the software or described in the documentation, if any, remains at the sole discretion of Oracle.
What's New in PGX
For complete details and feature examples, see the What's New Documentation - a synopsis is provided below.
What's new in PGX 19.1.0, released on March 7, 2019
Distributed execution mode:
PGX 19.1.0 reintroduces distributed execution mode functionality and adds several new features
- PGQL 1.1 support
- Server-side data structure support
- Two Tables RDBMS support
- Partial support for graph build API
- Support for graph cloning as well as sharing/publishing of graphs
Shared-memory execution mode:
PGX 19.1.0 introduces several new features also for the shared-memory execution mode.
- PGQL 1.2 support
- New API to execute multiple tasks from the same sessionconcurrently
- BETA: Support for heterogenous graphs
- BETA: Support for updating existing vertex and edgeproperties through PGQL
- BETA: New API to execute PGQL queries that modify the graph
- BETA: External Stores for offloading graph properties toe.g. Elasticsearch and enabling specialized operations ofthese stores, e.g. text search
A detailed list of new features can be found here
What's new in PGX 3.2.0, released on January 21, 2019
- Updated client / server REST API, to comply with Oracle standards. NB: older PGX clients will not work with PGX server version 3.2.0 or later.
- PGX now supports loading from and storing data to CSV files.
- Introducing several beta functionalities:
- PGX.ML : a toolkit for graph-enhanced machine learning.
- The PGX Algorithm API, for writing efficient graph algorithms directly in Java.
- PgxFrames: a tabular data type allowing to load / store CSV data.
- Now supporting subgraph creation from a PGQL result set and TOP k SHORTEST PATH queries.
- The distributed, scale-out runtime is not available in this release; it will be released again soon.
- Some features to connect PGX to external systems (e.g., hdfs, yarn, hbase) are not available in the OTN distribution any more.
What's new in PGX 2.7.0, released on May 15, 2018
- Extended API with support for scalar collections
- New Topological Sort and Topological Schedule algorithms, extended algorithm support when executed on multiple machines.
- Extended PGQL 1.1 support with existential subqueries and subqueries inside the PATH clause
- Support for creating vertex and edge sets from a PGQL result set
- Ability to share graphs by name across sessions
What's new in PGX 2.6.1, released on December 21, 2017
- Introduced support for PGQL 1.1
- It is now possible to export a graph into multiple files
- PGX.D (PGX's distributed, scale-out runtime) now supports loading graphs with edge labels
- A new community-detection algorithm is available as a built-in: Infomap.
What's new in PGX 2.5.0
- New built-in algorithms for cycle detection
- Support for temporal data types that directly map to SQL types
- Support for a spatial data type for 2D coordinates
- User API improvements
- New features in PGQL: prepared statements, undirected edge queries, and more
- Support for Spark 2.x and other improvements in the graph loaders
- Improvements for PGX.D: support for top-k and bottom-k, support for string properties and extended support of the user API
- Fixed a bug concering NULL values in PGX.D (Oracle bug #25491165)
- Extended functionality for the R client
What's new in PGX 2.4.1
- Backported support for Zeppelin 0.7.0 (previously 0.6.2)
- Fixed bug in vertex label creation if the number of distinct vertex labels is larger than 64 (Oracle Bug #25791120)
What's new in PGX 2.4.0
- Support type Casting in PGQL
- Support transpose mutation of graphs
- Performance Improvements
- Algorithm Updates; added PRIM, more options for SALSA
- Spark Support Improvements
- API Improvements for the Node.js and Java
- Support of String properties in the distributed engine
- Introduction of an R Client
What's new in PGX 2.3.1
- Green-Marl compiler now supports code generation for edge properties of undirected graphs
What's new in PGX 2.3.0
- Added built-in algorithms: periphery; center; local clustering coefficient; personalized weighted pagerank
- Added built-in algorithms to the distributed engine: personalized SALSA; weighted pagerank
- Support for first-class undirected graphs
- Filter expressions now support arithmetic expressions
- New enterprise scheduler is the default scheduler
- Abbreviated named arguments in PGX shell
- Support for writing back from PGX into Apache Spark RDDs
- Misc API usability improvements
- PGX shell launcher scripts for Windows
- Performance improvements, particularly working with partition objects and distributed loader
- API to create a bipartite subgraph of vertices with in-degree = 0 being the left set
- Apache Zeppelin PGX interpreter improvements: Cancellation, error messages and UI improvements
- Improved error messages from file loaders
- Added normalization option to Pagerank and its variants
- PGB loader improvements for 64 bit ids
- API to retrieve a PGQL result set by ID
- API and PGX shell command line option to attach to an existing session
- Support for edge keys in the distributed runtime
- Support for retrieval of edge property values via REST in the distributed runtime
What's new in PGX 2.2.1
- Load data directly from Apache Spark
- Arbitrary-length path topology constraints in PGQL
- Apache Zeppelin notebook interpreter
- Export compiled Green-Marl algorithms as JAR files
- NodeJS client
- Named arguments in PGX shell
What's new in PGX 2.2.0
- Delta-update and auto-refresh to incrementally update graphs from database sources
- Apply subgraph filter when loading a graph
- Graph loading from Oracle RDF
What's new in PGX 2.0
- Distributed execution engine (in addition to the existing single-node engine)
- Vertex- and edge-label support to add "type" information to edges and vertices and query using it from PGQL
- GraphBuilder and ChangeSet APIs
What's new in PGX 1.2.0
- Added basic graph query support - queries can be expressed in PGQL , an SQL-like graph query language specifically designed for property-graph queries.
- Added in-memory support for vector-type properties and vector scalars.
- New built-in algorithms: stochastic-gradient-descent , kcore and approximate pagerank .
- New recommendation API.
- Added batch breadth-first search optimization: Green-Marl programs which do a BFS search from every vertex in the graph now run up 100x faster on certain graphs. This optimization is applied to two built-in algorithms vertex betweenness centrality and closeness centrality .
- Added support for new text-based file formats: flat-file format
- Added support for administering a PGX server instance remotely. Users who want to access the administrative interface require special server-side authorization.
- Added support for more archive formats and protocols:
ftp(s) . All previous formats and protocols (
res ) are still supported, but have a new implementation.
- New Green-Marl compiler features:
- Performance improvements
- Added support for edge collections (edge set and edge sequence)
- PGX Shell improvements:
- better help screen
- added support to run scripts via
pgx /path/to/script.groovy script-arg1 script-arg2
--max-output-lines parameter to limit the maximum amount of elements printed if an iterable is returned
- New case studies:
- Added support for one session to point to multiple snapshots of the same graph.
- Added support for renaming existing transient properties.
- Performance improvement when setting/getting property values directly on
- Transient properties created by the
Analyst API now have more meaningful default names.
- Calls to
getEdge(...) now verify the given vertex/edge ID exists on the graph.
What's new in PGX 1.1.0
- Improved Java API
- Methods in Core interface are now abstracted into object-oriented classes. Core interface is now internal
- Analyst no longer session-bound
- You can now use the same Analyst to analyze multiple different graphs (or multiple snapshots of the same graph).
- Added blocking version of every API method. Asynchronous methods returning a future are now suffixed withAsync
- Updated all tutorials to reflect new API
- New shell based on Groovy 1.8 now included in download package.
- No more separate installation of Groovy needed.
- Use blocking Java API directly in shell. No more inconsistency between Java API and shell commands
- Support for basic UNIX commands (
javadoc command which prints the Javadocs of shell variables, class names and methods directly in the shell
- Improved filter expressions: you can now specify both vertex and edge filters.
- Added more built-in algorithms: degree centrality, degree distribution, filtered Dijkstra, bidirectional Dijkstra, Bellman Ford, hop distance, weakly and strongly connected components
- Support to point at multiple snapshots of the same graph within the same session
- Added support for new database format: two-tables format
- Added support for new text-based file format: two-files format
- Released an experimental preview version of PGX.DIST, a new distributed back-end for PGX which leverages more than one machine. See the
experimental/dist/doc directory for documentation
- fixed bug: Java client doing wrong request when trying to delete a transient property
- fixed bug: crash on reverse edge creation and sorting for huge graphs with single thread
What's new in PGX 1.0.0
- Compiler optimization: improved performance by merging properties
- Compiler robustness: better dead-code and return statement checks
- Reduced memory consumption of date properties
- Reduced download package size
- Improved Javadocs
What's new in PGX 0.9.1
- Improved documentation
- Fixed bug which led to array index out of bounds error when undirecting a certain type of graph
- Fixed bug which wrongfully rejected list of given edge properties when requesting a bipartite subgraph in the remote case
What's new in PGX 0.9.0
- 64bit support: ability to load more than 2^32 edges
- Added remote support
- Deploy PGX as a web application
- Core interface exposed via REST
- Connect to running web application via HTTP, client PGX shell or client Java application
- Added Hadoop support
- Load/Store graph data from/to HDFS
- Run PGX as YARN application (single-node only)
- New built-in algorithm: Fattest path
- Allow modification of the PGX runtime configuration values
- Added support for PGX-managed scalars
- New APIs to modify PGX-managed maps
- Added support to load graph data from Oracle NoSQL
- Added support to load graph data from Apache HBase
- Create subgraphs from filter expressions
- Updated Groovy dependency to 2.4.0
- Support for Green-Marl specification 0.6.2
- Placeholder in group assignments
- Read-only input arguments
- Removed @-syntax for reductions
- Date/time type and edge built-ins
- Simplified sparsification APIs
- Added more Green-Marl compiler optimizations
- Decreased the size of the Green-Marl compiler binary
- Added Green-Marl compiler support for 32bit Linux platforms
- Improved binary format loader: use memory mapping for better performance
- Refactored text-based graph loaders
- Load file-based graph data from classpath
- Improved graph configuration handling
- Added support for inheritance of configuration schemas
- Added schema-specific graph factories and builders
- Added support to load configuration files from classpath
- Added support for configuration files in the Java properties format
- Analysis timeout is now called task timeout and also applies to loading tasks
- Added constants "Properties.ALL" and "Properties.NONE" to fix inconsistencies between "null" and empty lists