Abodit.Graph 3.23.0

dotnet add package Abodit.Graph --version 3.23.0
                    
NuGet\Install-Package Abodit.Graph -Version 3.23.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Abodit.Graph" Version="3.23.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Abodit.Graph" Version="3.23.0" />
                    
Directory.Packages.props
<PackageReference Include="Abodit.Graph" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Abodit.Graph --version 3.23.0
                    
#r "nuget: Abodit.Graph, 3.23.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Abodit.Graph@3.23.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Abodit.Graph&version=3.23.0
                    
Install as a Cake Addin
#tool nuget:?package=Abodit.Graph&version=3.23.0
                    
Install as a Cake Tool

AboditGraph

Graph library for RDF-like in-memory graphs. Efficient either-direction traversals. Provides depth-first, breadth-first and random-first traversals, topological sort, path finding, and page rank algorithms. Supports Dotgraph for rendering output which is very helpful when debugging.

image

Create a graph using RDF-like predicates on nodes of any type.

    var g = new Graph<string, Relation>();
    g.AddStatement("a", Relation.RDFSType, "b");
    g.AddStatement("a", Relation.RDFSType, "c");
    g.AddStatement("b", Relation.RDFSType, "d");
    g.AddStatement("c", Relation.RDFSType, "e");
    g.AddStatement("d", Relation.RDFSType, "f");
    g.AddStatement("e", Relation.RDFSType, "f");

And then traverse it, union it, intersect it, find paths, topological sorts, page rank, ...

    var sorted = string.Join("", g.TopologicalSortApprox());
    sorted.Should().Be("abcdef");

    var path = g.ShortestPath(a, Relation.RDFSType, e, (r) => 1.0, (x, y) => x + y);
    string result = string.Join(";", path);
    result.Should().Be("a;c;e");

Why create another graph library?

  1. Performance when traversing a graph in both directions.
  2. Full control over Node and Edge type including the ability to use Nodes as Edges in true RDF 'turtles-all-the-way-down' fashion.
  3. Compact in memory representation for very large in-memory graphs.
  4. Immutable data structures wherever possible.
  5. Complete set of algorithms including exploration, path finding, union, topological sort and page rank.
  6. Support for Dotgraph rendering of graphs.

Nuget

Available on nuget as https://www.nuget.org/packages/Abodit.Graph

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Abodit.Graph:

Package Downloads
AboditUnits

Units of measure, TokenExpressions, TemporalSets and other supporting classes for the Abodit NLP Engine.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
3.23.0 215 3/28/2026
3.22.20.4 80,653 1/20/2022
3.22.20.2 615 1/20/2022
3.22.20.1 623 1/20/2022
3.21.152.1 11,057 6/1/2021
3.21.151.5 547 6/1/2021
3.21.151.4 496 6/1/2021
3.21.147.1 549 5/28/2021
3.21.128.2 527 5/9/2021
3.21.86.1 515 4/4/2021
3.21.83.3 519 3/25/2021