Update:
We’ve introduced imbSCI.Graph, a library dedicated to graph structures and conversion between different graph types.
The library adds: DirectedGraph (implementation of the Microsoft’s DGML format), DOT Graph (exportable to DOT graph language) and FreeGraph with weighted nodes and links and powerful reporting and queering capabilities.
Graph structures in imbSCI.Core:
Universal graph structures:
Basic directed graph-tree structure
Directed tree-graphs are clear parent-children hierarchy collections, where a node can have only parent and none, one or more children nodes.
- graphNode
- Namespace: imbSCI.Data.collection.graph (API)
- graphWrapNode<T> and graph<T>
- Namespace: imbSCI.Data.collection.graph (API)
graphWrapNode<T> is a generic type, allowing you to have instance of the custom class (T) at each graph node.
Important extensions:
Universal free graph structure:
Free graphs are consisted of nodes that are not in directed hierarchy, nodes may have links to multiple other nodes. Such graphs are usually data-structures behind flow-diagrams or world wide web representations.
- diagramModel
- Namespace: imbSCI.DataComplex.diagram (API)
diagramModel comes with some built-in builders:
- diagramBuilderForType<T>
- it builds the diagram model about specified Type, using Type reflection information.
- diagramBuilderUniversalTree
- it builds the diagram from any class implementing IObjectWithPathAndChildSelector Interface, like: graphNode, graphWrapNode<T>, graph and other graph structures.
Specialized graph structures:
- propertyExpression
- Namespace: imbSCI.Core.data (API)
- linknodeElement
- Namespace: imbSCI.DataComplex.linknode (API)
- folderNode
- Namespace: imbSCI.Core.files.folders (API)