User Tools

Site Tools


01_user_documentation:06_graph

Graph

This section present some basics elements of the graph design in GroIMP. This concern the data graph only. I.e., the graph structure that hold the data of the project. It includes both data nodes such as part of the model, and resources nodes. The data graph can be visited with visitors, which are different from the queries and pattern matching used by the query graph. Most of the objects of the data graph are declared in graph.

Edge

Edges link nodes together. Each edge have exactly one source and one target. The source and target can be the same node. In that case the node has an edge toward itself.

By default, edges cannot hold data other than one integer (the edgebits). The edgebits define which type of edge it is. The type of edge is tested with bit operations. Thus, an edge can be of several type. Additionally there is a specific way of using a Node as an edge (called EdgeNode) in order to hold more information in the edge.

This section presents the different type of edge defined in GroIMP. All standards bit masks for edges can be accessed in the interface de.grogra.graph.Graph as static fields.

→ Read more...

Node

Nodes are the base element of the graphs. The GroIMP implementation of graph define nodes as extending edges. This design enables to save memory as, if two nodes are connected by only one edge, no edge object is required. The information of the edge is hosted in the nodes.

→ Read more...

Graphs

This section present the different type of graphs. Graphs are set of nodes connected by edges. A graph can have several roots, which represents subgraphs that can be either interconnected, or independants.

→ Read more...

Visitor

This section present how the graph is visited.

→ Read more...

Derivation

According to the XL language specification, the XL queries are applied in parallel. In order to make sure the queries and rules are applied in parallel without concurrency access, GroIMP implementation use transactions and queues.

→ Read more...

Extent

A special feature of the graph management is the manipulation of extents. For each used node class in the graph, there exists an Extent which collects all nodes of this class and also has a link to the extent of its superclass and to the extents of its subclasses. This feature is currently used within the RGG plug-in for a fast processing of queries which specify node type patterns like in the rule F(x) ==> F(2*x);. Instead of having to scan the whole graph for nodes of class F, the corresponding extent is used together with its sub-extents to directly iterate over all nodes of class F.

→ Read more...

Persistence

This section present what persistence means in the graph.

→ Read more...

01_user_documentation/06_graph.txt · Last modified: 2025/08/20 09:20 by gaetan