Oracle Labs PGX Downloads

Thank you for downloading this release of the Oracle Labs Parallel Graph Analytics (PGX) toolkit. This toolkit includes the PGX runtime and clients, and runs on Linux or Mac OS X.
You must accept the OTN License Agreement to download this software.
Accept License Agreement | Decline License Agreement

PGX 2.2.1 (current release)
Download Server (suitable for standalone use)
Download Java client
Download Javascript client
Download Zeppelin interpreter (requires Apache Zeppelin)

Previous Releases
PGX 1.2.1
Download Oracle Labs PGX release 1.2.1 (Linux x86)
Download Oracle Labs PGX release 1.2.1 (Linux x86-64)
Download Oracle Labs PGX release 1.2.1 (Mac x86-64)

Getting started instructions are available here.

Supported platforms

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) LTS
  • Ubuntu (x86) 14.04.1 LTS
  • Mint (x86) 17.1
  • ArchLinux (x86) 2011.08.19
  • Mac OS X (x86) 10.10.5 

Preview Release

This software and any accompanying documentation is not generally available and is a preview 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 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 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 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 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-descentkcore 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 centralityand 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: zipjartartgztbz2gzbz2 and ftp(s). All previous formats and protocols (http(s)hdfsclasspath and 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)
    • Added print() statement
  • PGX Shell improvements:
    • better help screen
    • added support to run scripts via pgx /path/to/script.groovy script-arg1 script-arg2
    • add --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 PgxVertex/PgxEdge objects.
  • Transient properties created by the Analyst API now have more meaningful default names.
  • Calls to getVertex(...) and getEdge(...) now verify the given vertex/edge ID exists on the graph.

What's new in 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 with Async
    • 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 (lsmvpwdcp and cat)
    • Built-in 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 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 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 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