ToolUp.Graph.Core
0.20.0
Prefix Reserved
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
<PackageReference Include="ToolUp.Graph.Core" Version="0.20.0" />
<PackageVersion Include="ToolUp.Graph.Core" Version="0.20.0" />
<PackageReference Include="ToolUp.Graph.Core" />
paket add ToolUp.Graph.Core --version 0.20.0
#r "nuget: ToolUp.Graph.Core, 0.20.0"
#:package ToolUp.Graph.Core@0.20.0
#addin nuget:?package=ToolUp.Graph.Core&version=0.20.0
#tool nuget:?package=ToolUp.Graph.Core&version=0.20.0
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:
- Identity by value —
NodeId/EdgeId/scopeId: string. - Async at every boundary — every method returns
Async<_>. - Retry/supervision as data — transient faults are
GraphError.TransientFailure; no callbacks. - Stateless between calls — results derive from
scopeId+ backing store. - No cross-shard ordering — row order promised only under
ORDER BY. - Precision at lower bound —
int64/floatceiling, nodecimal.
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 | Versions 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. |
-
net10.0
- FSharp.Core (>= 10.1.300)
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.