A non-transitory computer-readable medium comprising executable instructions that, when executed by a programmable processor causes the programmable processor to perform a method of determining the relationship between a plurality of nodes comprised within a graphbase, the graphbase comprising:
- one or more directed acyclic graph (DAGs), each of the one or more DAGs including:
- a main set of nodes, the main set of nodes comprising the plurality of nodes, each of the plurality of nodes representing a data point within the respective DAG and the plurality of nodes comprising a traversal order;
- and
- a plurality of directional edges connecting each of the plurality of nodes, wherein each of the plurality of directional edges represents covering-covered relationship between two nodes;
- each of the plurality of nodes comprising node parameters, the node parameters of each respective node including:
- a NodeNumber representative of a location of the respective node within the respective DAG,
- a NodeValue representative of a unique identity of the respective node,
- a TreeExtent Node,
- a LatestReachable Node,
- an EarliestReachable Node, and
- when the plurality of nodes is represented in the traversal order:
- an interval of nodes between the NodeNumber and the TreeExtent Node defines an OwnTree Interval, wherein a sub-set of the plurality of nodes comprised within the OwnTree Interval are reachable from the respective node, wherein
- reachable is indicative of a path existing from one node to another node in the graphbase,
- an interval of nodes between the EarliestReachable Node and the LatestReachable Node defines a Reachable Interval, wherein a sub-set of the plurality of nodes comprised within the Reachable Interval may be reachable from the respective node, and
- all other nodes of the plurality of nodes not comprised within the OwnTree Interval and the Reachable Interval are not reachable from the respective node;
- and
- the method comprising:
- receiving a selection of a first sub-set of nodes of the main set of nodes, wherein the first sub-set of nodes comprises a first node;
- receiving a selection of a second sub-set of nodes of the main set of nodes, wherein the second sub-set of nodes comprises a second node;
- determining a relationship between the first sub-set of nodes and the second sub-set of nodes based on at least the NodeNumber, the OwnTree Interval, and the Reachable Interval of at least one node comprised within the first sub-set of nodes, wherein determining the relationship between the first sub-set of nodes and the second sub-set of nodes comprises determining if the first node is connected to the second node, wherein determining if the first node is connected to the second node comprises:
- comparing the NodeNumber of the second node to the TreeExtent Node of the first node, wherein:
- if the NodeNumber of the second node is greater than the TreeExtent Node of the first node, determine that the first node is not connected to the second node;
- and
- if the NodeNumber of the second node is not greater than the TreeExtent Node of the first node:
- comparing the NodeNumber of the second node to the NodeNumber of the first node, wherein:
- if the NodeNumber of the second node is not less than the NodeNumber of the second node, determine that the first node is connected to the second node;
- and
- if the NodeNumber of the second node is less than the TreeExtent Node of the first node:
- comparing the NodeNumber of the second node to the LatestReachable Node of the first node, wherein:
- if the NodeNumber of the second node is greater than the LatestReachable Node of the first node, determine that the first node is not connected to the second node;
- and
- if the NodeNumber of the second node is not greater than the LatestReachable Node:
- comparing the NodeNumber of the second node to the EarliestReachable Node of the first node, wherein:
- if the NodeNumber of the second node is less than the EarliestReachable Node of the second node, determine that the first node is not connected to the second node;
- and
- if the NodeNumber of the second node is not less than the EarliestReachable Node of the second node, determine that the first node may be connected to the second node and a further search is needed.