ToolUp.Graph.Core 0.20.0

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet add package ToolUp.Graph.Core --version 0.20.0
                    
NuGet\Install-Package ToolUp.Graph.Core -Version 0.20.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="ToolUp.Graph.Core" Version="0.20.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ToolUp.Graph.Core" Version="0.20.0" />
                    
Directory.Packages.props
<PackageReference Include="ToolUp.Graph.Core" />
                    
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 ToolUp.Graph.Core --version 0.20.0
                    
#r "nuget: ToolUp.Graph.Core, 0.20.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 ToolUp.Graph.Core@0.20.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=ToolUp.Graph.Core&version=0.20.0
                    
Install as a Cake Addin
#tool nuget:?package=ToolUp.Graph.Core&version=0.20.0
                    
Install as a Cake Tool

ToolUp.Graph.Core

The graph-data substrate contract for the ToolUp platform SDK: the IGraphStore interface plus its Fable-compatible value model.

IGraphStore is the graph-shaped peer of IEntityStore. Where the entity store answers relational-algebra lookups over indexed records, IGraphStore answers traversal queries — variable-length paths, neighbourhood expansion, reachability — that the relational layer cannot express without N round-trips.

The portability seam is openCypher

Every store — the zero-dependency in-memory default, an embedded engine, a distributed cluster — answers the same openCypher query text. A consumer develops against the in-memory default and deploys against an engine companion with no domain-code change. CypherQuery is parameterised ($name bindings supplied as data, never string-concatenated into the query text), closing the injection-class hazard.

Value model

Type Purpose
NodeId / EdgeId String-wrapped value identities — never live handles
GraphNode Id + label Set + property Map
GraphEdge Id + Label + From/To endpoints + property Map
PropertyValue PString / PInt (int64) / PFloat / PBool / PDateTime — precision floor, no decimal
Direction Outgoing / Incoming / Both
CypherQuery Text + Parameters
GraphResultSet ordered Columns + Rows of Map<string, GraphValue>
GraphError failure as data (rule 3); CypherSubsetException for out-of-subset queries

Portability contract (GP 12 — six rules)

IGraphStore satisfies all six portability rules, so an engine companion is a drop-in replacement validated against the same IGraphStoreContract conformance pack:

  1. Identity by valueNodeId / EdgeId / scopeId: string.
  2. Async at every boundary — every method returns Async<_>.
  3. Retry/supervision as data — transient faults are GraphError.TransientFailure; no callbacks.
  4. Stateless between calls — results derive from scopeId + backing store.
  5. No cross-shard ordering — row order promised only under ORDER BY.
  6. Precision at lower boundint64 / float ceiling, no decimal.

Scope isolation (GP 4) is structural: every method takes scopeId, so a cross-tenant read is unrepresentable.

Provider tiers

  • In-memory default (ToolUp.Graph.InMemory) — zero-dependency, the GP-2 default; interprets a documented openCypher subset (the portability floor).
  • Engine companions — opt-in packages that bring full Cypher over an embedded or distributed engine; each runs the shared conformance pack unchanged.

Licensed under Apache-2.0.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  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 (4)

Showing the top 4 NuGet packages that depend on ToolUp.Graph.Core:

Package Downloads
ToolUp.Graph.InMemory

ToolUp.Graph in-memory default — the zero-dependency IGraphStore (GP 2 floor). Per-scope immutable adjacency-list snapshots plus a bounded openCypher subset interpreter (MATCH / WHERE / variable-length paths / RETURN / ORDER BY / LIMIT) that throws CypherSubsetException for anything beyond the documented portability floor. For development, tests, and small single-instance deployments; engine companions (Kùzu / Neo4j / AGE) bring durable / distributed storage and full Cypher.

ToolUp.Graph.Projection

ToolUp.Graph entity→graph projection bridge — projects IEntityStore records and their declarative relationship edges into an IGraphStore, so a consumer who models their domain as entities + relationships gets graph-traversal queries for free without maintaining two parallel data models. Opt-in: entities are the system of record, the graph is a derived read-model kept in sync by the entity-store lifecycle signal, plus a one-shot rebuild for bootstrapping / drift healing. Server-only companion.

ToolUp.Graph.AGE

ToolUp.Graph AGE companion — the Postgres-colocated openCypher IGraphStore over Apache AGE (an Apache-2.0 PostgreSQL extension), reached through the managed Npgsql driver (no native binding). Graph data lives in the same PostgreSQL instance as the consumer's relational data — same backups, same connection pool, same transaction boundary — with an opt-in shared-transaction seam that enlists graph writes in the same NpgsqlTransaction as relational writes. Graph-per-tenant isolation (AGE namespaces graphs) with a property-partition fallback; Postgres transients surfaced as the IGraphStore retryable-result contract. Binds the shared IGraphStoreContract unchanged — a query developed against the in-memory default runs unchanged here. Server-only companion.

ToolUp.Graph.Neo4j

ToolUp.Graph Neo4j companion — the distributed-tier IGraphStore over the Apache-2.0-licensed Neo4j .NET driver, talking to an externally-operated Neo4j server (single instance or causal cluster). Full openCypher, horizontal read scale-out, multi-database (database-per-tenant) tenant isolation with a property-partition fallback, and cluster transients surfaced as the IGraphStore retryable-result contract. Binds the shared IGraphStoreContract unchanged — a query developed against the in-memory default runs unchanged here. Server-only companion.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.22.0 210 8/27/2026
0.21.0 270 8/26/2026
0.20.1 1,040 8/20/2026
0.20.0 1,014 8/19/2026