Rogas(https://github.com/CornucopiaRG/Rogas) is a project for Network Analytics
Rogas (Relational-Oriented Graph Analytic System) not only can provides a high-level declarative query language to
formulate analysis queries, but also can unify different graph algorithms
within the relational environment for query processing.
The Rogas has three main components: (1) a hybrid data model, which integrates graphs with relations so that we have these two types of data structures respectively for network analysis and relational analysis; (2) a SQL-like query language, which extends standard SQL with graph constructing, ranking, clustering, and path finding operations; (3) a query engine, which is built upon PostgreSQL and can efficiently process network analysis queries using various graph systems and their supporting algorithms.
- Database info panel can show the schema information of relations and graphs in the database
- Query input panel can be extended to a larger space for complicated queries
- Show queries and their results as browser-tab style
- Asynchronous execution with loading animation
- Support regular relational queries and graph queries with graph operations (RANK, CLUSTER and PATH)
- Show the result of a large table in pages
- Support visualisation for graph queries with graph operations (RANK, CLUSTER and PATH)
- Support interactive operations on graphs (drag, double click, zoom in/out)
- Support relation - graph data mapping
Process of Graph Visualization
Graph Rank Operation
- Get targeted nodes based on the RANK result
- Find nodes on the shortest path among the selected nodes
- Find nodes around the selected nodes
Graph Cluster Operation
- Rescale the size of each cluster according to the proportion
- Score each node according to the inner-cluster edges, cluster-cluster edges and target node's degree
- Find the max connected component in each cluster
- Get certain amount (be specified in setting) of nodes in the max connected component from high score to low score
- Find neighbor nodes around the selected nodes
Graph Path Operation
- Get targeted nodes based on the PATH result
- Find nodes around the selected nodes
- Python 2.7
- Tornado: http://www.tornadoweb.org/en/stable/
- Postgresql: https://www.postgresql.org/
- Psycopg: http://initd.org/psycopg/
- Graph-tool: http://graph-tool.skewed.de/
- SNAP: http://snap.stanford.edu/snappy/index.html
- NetworkX: http://networkx.github.io/
Note: If you use Mac OS, the Graph-tool installed doesn't support OpenMP by default, you can change the IS_GRAPH_TOOL_OPENMP = False in rogas/config.py.
We also make use of Bootstrap(http://getbootstrap.com/), D3.js(https://d3js.org) and ExpandingTextareas(https://github.com/bgrins/ExpandingTextareas), which are integrated into the system so you don't need install them by yourself.
How to Run
- Set up your database information in rogas.config.py to connect to Postgresql
- Python run.py
- Open the browser by entering http://localhost:12345/
- find a more informative naming strategy for different query tabs
- improve the graph visualisation for large graphs (million or billion nodes), including implementing good layouts and improving the efficiency
- make the visualisation for PATH operations more informative, in particular of dealing with multiple paths
- add more functions about user interaction, such as the content of graphs can correspondingly change when doing zoom-in/out
- build an algorithm store that includes different types of algorithms for network analysis
More details about the Rogas, please refer to the thesis "Towards a Unified Framework for Network Analytics" collected in Australian National University (http://users.cecs.anu.edu.au/~u5170295/publications/thesis-minjian.pdf). You can also contact email@example.com or firstname.lastname@example.org for more information.
Qing Wang (email@example.com)
- Minjian Liu (firstname.lastname@example.org): design the system framework, the query language and the Rogas logo; construct the relation-graph hybrid data model; implement the query processing; implement the prototype GUI (the GUI shown in the VLDB2016 demo paper -- Rogas: A Declarative Framework for Network Analytics ), supervise the work of GSoC2016-ShallYan.
- Yan Xiao (email@example.com): design and implement the Web GUI (the work of GSoC2016-ShallYan), design and implement the visualisation of graph operations(CREATE, RANK, PATH, CLUSTER), design and implement the backend server and modify the Rogas' query engine in order to fitting the front-end.
- Omid Rezvani (firstname.lastname@example.org): implement the local community search functionality.
- Chong Feng (email@example.com): implment the node-tree data structure and query caches for optimisation.