Algorithm Basic

Ultipa offers an ever-growing rich set of algorithms for graph analytics purposes, including various centralities, rankings, similarities, community-detections (such as LPA, Louvain, etc.), graph embeddings (random walks, Node2Vec, Struc2Vec, etc.), and graph traversals. This document will explain the concepts of these algorithms and the details of their invocations.

No More T+1!

All Ultipa graph algorithms are optimized with maximum concurrency by leveraging the underpinning hardware parallel computing capabilities, which greatly reduce the execution time (latency). Running graph algorithms with Ultipa system is often dozens of or even thousands of times faster than with other graph systems.

Whole-graph algorithms like Louvain, Struc2Vec, LPA, Triangle Counting that are usually done in T+1 fashion on large graphs (graph with hundreds of millions of nodes and edges), now are mostly completed in T+0; per-node algorithms or any algorithms running on a reasonably sized graph (i.e., graph sized around millions of nodes and edges) are usually done in a real-time fashion.

Great performance is a unique competitive edge of Ultipa Graph, its liberates graph analysts from the nightmare of T+1!

Ultipa uses 3 categories plus 2 special annotations to mark the characteristics of each graph algorithm: if an algorithm is potentially very resource-intensive and time-consuming (expensiveness) or if it can be done in genuinely real-time:

Category Tag
Basic Algorithm   Basic  
Advanced Algorithm   Advanced  
AI Algorithm   AI  
Special Annotations   Real-time     Very Expensive  

Ultipa graph algorithms are offered to users in a pluggable fashion - users have the flexibility to customize their own collection of algorithms. For more details, contact Ultipa Support Team.

listAlgo()

To list currently active algorithms:

listAlgo()

algo()

algo() launches a certain algorithm:

algo(<algorithm_name>)
  .params(<configuration>)
  .force?().write_back?().visualization?()

Values of parameter:

Name Data Type Specification Description
params obj / To configure algorithm with item:value pairs, see later chapters for the details of configuration of each algorithm
force / / (Optional) To force the algorithm to be launched regardless of the limit on the number of algorithms allowed to run simultaneously
write_back / / (Optional) To write back the algorithm result to database (into a node or edge property as #<algo_name>) or to disk file (to RPC port, e.g., a csv file in a task in Ultipa Manager). Not all the algorithms support write_back()
visualization / / (Optional) To pre-process data for visualization and keep the data in the task, needed by a subsequent algo_dv() operation; only applicable against algorithms that support visualization, such as Louvain
stats / / (Optional) Execute the algorithm but without returning the result

Where:

  • usage of write_back(), visualization() or stats() will launch the algorithm as a task and return the task id to the client terminal (SDKs/API or Ultipa Manager) instead of streaming the algorithm results;
  • for task management on algo() operations, please refer to Task chapter in the UQL handbook - UQL Graph Query Language.

algo_dv()

algo_dv() launches the visualization process of a certain algorithm:

algo_dv(<algorithm_name>)
  .params(<configuration>)
  .id(<task_id>)

Values of parameter:

Name Data Type Specification Description
params obj / To configure algorithm with item:value pairs, see later chapters for the details of configuration of each algorithm
id int / The id of task launched by an earlier algo().visualization() operation. The <algorithm_name> in the algo_dv() must be identical with the name of this task.