What is a Graph Platform?

July 31st, 2018
 One of our developers, Amanda Castonguay, has a gift for making complicated tech concepts easy to understand so we asked her to explain graph technology.
xGraph is a graph platform. Right now you’re probably thinking about line graphs or coordinate graphs, but that’s not the type of graph we’re talking about. In mathematics, a graph is a structure that models things and the relations between these things. For instance, we could have a group of people as things, and we could model the different friendships between these people as graphs.
graph1
In graph theory, the things are called nodes or vertices, and the relations are called edges. In xGraph, the modules and systems are nodes, and the commands get sent along the edges. A module or system that sends a command relates to another module or system that can respond to that command. If you try to send a command to a module or system that does not relate to that command, it will not get completed and an edge does not exist between the two nodes.
In our previous example, relations go both ways. Two people are either friends, or they are not. This type of relationship is known as undirected, and the edges on these graphs are undirected edges. This means that if Bob is friends with Sue than Sue is friends with Bob.
If we want to get more precise with our graph, we can identify relations from one node to another in one way only. These relations are known as directed, and the edges on these graphs are directed edges. You will notice that in the directed graph the relation does not go both ways. So if you want to have a relationship that goes both ways, you need to have two edges.
graph2xGraph graphs are directed. A command is sent from one part to another directed by a Pid. This relation is a directed edge in the graph.

This free-form graph structure is what gives xGraph it’s powerful flexibility. Typical software platforms rely on a rigid control of flow. This often results in complicated architectures that are built to avoid issues with object-oriented design and programming languages. A graph architecture provides the flexibility to model complicated real-world objects and their relations without worrying about the limitations of traditional object-oriented programming.

By harnessing the flexibility of a graph architecture, you can use xGraph to model all sorts of complex real-world problems.