MetaExp: Interactive Explanation and Exploration of Large Knowledge Graphs

Motivation

We present MetaExp, a system that assists the user during the exploration of large knowledge graphs, given two sets of initial nodes. At its core, MetaExp presents a small set of meta-paths to the user, which are sequences of relationships among node types. Such meta-paths do not overwhelm the user with complex structures, yet they preserve semantically-rich relationships in a graph. MetaExp engages the user in an interactive procedure, which involves simple meta-paths evaluations to infer a user-specific similarity measure.

Resources

More information can be found in

Demo-Video

MetaExp

Deployment

You can deploy the software with docker-compose. Detailed information and deployment scripts can be found in our metaexp-deployment repository

Requirements

Our deployment is based on several docker containers, please install docker:

Graph Database

Build Extension

In graph-algorithms repository:

mvn clean install
cp algo/target/graph-algorithms-algo-*.jar $NEO_HOME/plugins

# allow low level API access in neo4j.conf
dbms.security.procedures.unrestricted=algo.*

Python

  1. start sockercontainer
  2. deploy redis server
  3. call route test_import

UI

To build your own local code use deployment/build-ui.sh /path/to/code (e.g. deployment/build-ui.sh .), set the environment variable REACT_APP_API_HOST according to you API (e.g. export REACT_APP_API_HOST=[API Endpoint]) and to run a single container deployment/run-ui.sh [PORT] (e.g. ./deployment/run-dev-ui.sh).

System Architecture

system overview

ReactJS UI

Cross-Browser Usablity: Please use Mozilla Firefox.

The input range slider-thumb styling only works with Firefox

Architectural Approach: Flux-Pattern

Following, according to the Flux-Pattern, we describe the API-Communication, the most important stores and components and to which stores, i.e. data changes, they listen to and which actions they trigger.

API-Communication

Stores

Components

Main Parts: Setup page, Explore page, Result page

Setup Page
Explore Page
Result Page

Python Flask API and Algorithmic Backend

Overview

The python backend is structured into several components, each is responsible for either serving the api or part of the algorithmic backbone. The algorithmic parts are in their basic functionality. Work on the individual components is conducted outside of the MetaExp-Project, but might be referenced here in the future.

API

The API is not stateless, the image below describes the process of interating with the API. Users need to login to the system for a specific dataset. This is followed by the input-set selection and then the iterative rating of paths. Finally the user can view the similarity. These phases are sequential. Since this is a prototype, it is likely that the system will crash if they are called arbitrarily.

API_calls

API endpoints

Neo4j Graph Algorithms

The neo4j-graph-algorithms library was extended by a procedure that computes all meta-paths on a given graph.

Neo4j Graph Renderer

Forked and extended third party react component for visualizing neo4j graphs and interact with the nodes.

Contributors

Freya Behrens, Sebastian Bischoff, Pius Ladenburger, Julius Rückin, Laurenz Seidel, Fabian Stolp, Michael Vaichenker and Adrian Ziegler.

Acknowledgments

This work was conducted with our project partners neo4j, helmholz zentrum münchen and knowing health.

License

All work is licensed under MIT License.