The Enterprise Graph

Modeling the fabric of connections within an organization.

Introduction

At Rimeto, our goal is to help people understand their colleagues and their workplace. We build an advanced directory which gives every employee access to this understanding. With the directory as a foundation, we also reveal the Enterprise Graph: the complex fabric of connections between people, entities, and information within an organization.

In this article we provide a brief introduction to:

  1. How we model the Enterprise Graph using semantic networks.
  2. How we construct the Enterprise Graph for our customers.
  3. How we leverage the semantic nature of the Enterprise Graph to answer complex questions about our customers’ organizations.

Modeling the Enterprise

At Rimeto, we spend a lot of time thinking about the Enterprise Graph.

The Enterprise Graph is fundamentally a semantic network representing the complex fabric of connections between people, teams, projects, expertise, institutional knowledge, etc. within a given organization.

To give a concrete example, let’s take a look at a small slice of Rimeto’s own Enterprise Graph. Suppose we have gathered the following description for Neville and his relationship to Rimeto:

  1. Neville is a Software Engineer at Rimeto. He is also one of the co-founders.
  2. Neville is a member of the Engineering team.
  3. Neville works on the “Data Model” project.
  4. Neville is skilled in TypeScript, having worked extensively with the language for the last 2 years. Neville has applied his TypeScript skill to the aforementioned “Data Model” project.
  5. Prior to Rimeto, Neville worked for nine years at Facebook as a member of the Ads Engineering team.
  6. Neville graduated from Harvard with a degree in Physics in 2005.

The corresponding Enterprise Graph representation for this description might look as follows:

With just a small number of defined node and edge types, we begin to compose a complex model for a cross-section of the company!

At Rimeto we have built a data model and a supporting infrastructure that expresses any organization in terms of nodes (representing people, entities, and concepts), edges between these nodes (representing the nature of the relationships between nodes), and properties on both nodes and edges (expressing the nuances of each entity, concept, or relationship). The semantic nature of this model allows us to represent any organizational structure to nearly any level of fidelity.

Moreover, we have incorporated a number of features into our graph infrastructure to make the Rimeto platform easy to deploy to our customers, including:

A schema-less persistence layer

  • Our persistence layer is schema-less, fundamentally operating on generic object and edge types. This gives our engineering team extreme flexibility and speed in adapting and extending our data model to a wide range of use cases. We do not depend on schema deployments to affect changes to our node, edge, or property structure. Instead, these changes are all managed via configuration updates.

Fine-grained access controls

  • Traversal of the graph is governed by access policies defined on each node, edge, and property. This allows Rimeto to accommodate a wide range of customer requirements regarding access to different components of the graph.

An API optimized for the graph

  • We use GraphQL as the primary interface to the graph. GraphQL offers an intuitive and powerful query syntax to declare data requirements in a way that is hierarchical, strongly-typed, version-free, and efficient.

Building the Graph

We build and maintain a unique Enterprise Graph for each of our customers. Our model’s flexibility allows us to accommodate a wide range of organization types and structures. We typically gather the data used to build and maintain each customer’s graph from several sources:

Corporate data

  • Our data synchronization platform ingests structured and unstructured data from a variety of cloud and on-premise data repositories. This platform enables easy transformation and mapping of arbitrarily structured data streams into their corresponding Enterprise Graph representations.

User generated data

  • Data from corporate sources is augmented with content generated by the individual users of Rimeto (employees and other constituents). For example, a person can add education history, skills, and projects directly to their Rimeto profile to augment the base profile that has been built automatically from corporate data sources.

Entity extraction and concept mining

  • We also run entity and concept extraction machine learning (ML) algorithms on ingested data to identify additional entities and relationships, and to fill gaps in the graph.

External data

  • Lastly, we get information from public and proprietary canonical data sets. These data are particularly helpful in identifying well-known entities as a basis for data normalization. We also expect to rely increasingly on external data to improve and optimize our extraction models.

Querying the Graph

Once we have constructed the Enterprise Graph for a given organization, we can execute semantic queries to answer complex questions about the organization.

Exploration

Exploration queries enable us to summarize useful context about specific entities within the graph. For example:

Which schools did Neville attend?

From the node representing the Person “Neville Bowers”, we traverse all “has degree” edges and quickly see that Neville received an undergraduate degree from (“conferred by”) Harvard College in 2005 with a (“majored in”) concentration in Physics.

How did Neville develop his TypeScript expertise?

Starting from the nodes representing the Person “Neville Bowers” and the Skill “TypeScript,” we find the intersecting “Expertise” node, then traverse the “using” edges to identify any linked Project Participation nodes. In this example, we find one corresponding application of Neville’s expertise to the Project Participation corresponding to Project “Data Model.”

Path Finding

Path finding queries allow us to identify opportunities for people to make better use of connected resources. For example:

How can Jane Taylor get in touch with someone who has “Dynamic Pricing” expertise?

We initiate a graph search from the nodes representing the Person “Jane Taylor” and the Skill “Dynamic Pricing.” After a few iterations we find a path between the two via Jane’s colleague “Monica Green,” who is specifically connected to Jane by way of the Project “Market Segmentation,” to which both Jane and Monica belong.

Which Software Engineers at the company have prior Product Management work experience?

We initiate a graph search from the nodes representing the Current Role “Software Engineer” and Experience Role “PM.” After a few iterations we find two paths: one via “Mary Malcolm” and one via “Patrick Savage.” We can further refine this query by filtering on attributes of the Experience nodes. For example, we can restrict our search to paths containing Experience nodes with at least four years of PM experience. In this case only “Mary Malcolm” matches our updated query.

Summary

The Enterprise Graph allows us to encode a wide range of organizational structures, as well as to execute semantic queries against the encoded structures and extract meaning about the people, entities, and concepts contained within each organization. We have barely scratched the surface of what is possible using this foundation, and we are moving quickly to advance our capabilities and to explore new use cases.

We would love to hear your thoughts and feedback!


Interested in working on the Enterprise Graph? We’re hiring!