Skip to content

Graph

Graph contains multiple nodes interconnected via edges. These edges also tell us what relation nodes have with each other. A graph can either be directed or undirected. For our implementation we save hashmaps of for child and parent objects. We also save a hashmap for for child and parent. We can perform different operations in our graph such as add/delete edges, find all the nodes below a certain node, Find a edge, find the relation between two nodes & save/load edges.

Node

Nodes in the graph are represented by IKBObjects. These objects are explained in more detail in kb.md, for our purposes the IKBObjects (or nodes) have a name (among other properties) and are passed to the Edge objects in pairs(as each edge has 2 nodes).

Edge

Edges link two nodes in graph. An Edge object contains the UUID of the child and parent node of the edge (the term child and parent applies only for directed graphs) Edges also contain a label which tells us what relation the two nodes in the Edge have between each other.

Small note: We save the UUID's of the nodes instead of the node objects to avoid circular references when saving edges in JSON files.