ArcFlow
Company
Managed Services
Markets
  • News
  • LOG IN
  • GET STARTED

OZ brings Visual Intelligence to physical venues, a managed edge layer that lets real-world environments see, understand, and act in real time.

Talk to us

ArcFlow

  • World Models
  • Sensors

Managed Services

  • OZ VI Venue 1
  • Case Studies

Markets

  • Sports
  • Broadcasting
  • Robotics

Company

  • About
  • Technology
  • Careers
  • Contact

Ready to see it live?

Talk to the OZ team about deploying at your venues, from a single pilot match to a full regional rollout.

Schedule a deployment review

© 2026 OZ. All rights reserved.

LinkedIn
ArcFlow Docs
Start
  • Quickstart
  • Installation
  • Bindings
  • Platforms
  • Get Started
Concepts
  • World Model
  • Graph Model
  • Evidence Model
  • Observations
  • Confidence & Provenance
  • Proof Artifacts & Gates
  • SQL vs GQL
  • Graph Patterns
  • Parameters
  • Query Results
  • Persistence & WAL
  • Snapshot-Pinned Reads
  • Error Handling
  • Execution Models
  • Causal Edges
  • Adapter Discipline
  • Time Decay
  • Layers
  • 1. Perception Lake
  • 2. World Graph
  • 3. Query Engine
  • 4. Live Surface
  • 5. Event Bus
  • 6. Behavior Engine
  • 7. Algorithm Library
WorldCypher
  • Overview
  • Statements
  • MATCH
  • WHERE
  • RETURN
  • OPTIONAL MATCH
  • CREATE
  • SET
  • MERGE
  • DELETE
  • REMOVE
  • Composition
  • WITH
  • UNION
  • UNWIND
  • CASE
  • Schema
  • Schema Overview
  • Indexes
  • Constraints
  • Functions
  • Built-in Functions
  • Aggregations
  • Procedures
  • Shortest Path
  • EXPLAIN
  • PROFILE
  • Temporal Queriesfacet
  • Spatial Queriesfacet
  • Algorithmsfacet
  • Triggers
Capabilities
  • Live Queries
  • Vector Search
  • Trusted RAG
  • Spatial Knowledge
  • Temporal
  • Behavior Graphs
  • Graph Algorithms
  • Skills
  • CREATE SKILL
  • PROCESS NODE
  • REPROCESS EDGES
  • Sync
  • Programs
  • GPU Acceleration
  • Agent-Native
  • MCP Server
  • Event Sourcing
  • Intent Relay
  • Event Bus
Use Cases
  • Agent Tooling
  • Trusted RAG
  • Knowledge Management
  • Behavior Graphs
  • Autonomous Systems
  • Physical AI
  • Digital Twins
  • Robotics & Perception
  • Sports Analytics
  • Grounded Neural Objects
  • Fraud Detection
Walkthroughs
    Guides
  • Agent Integration
  • Building a World Model
  • Modeling a Social Graph
  • Build a RAG Pipeline
  • Using Skills
  • Behavior Graphs
  • Swarm & Multi-Agent
  • Fleet Coordination
  • Migrate from Cypher / Neo4j
  • From SQL to GQL
  • Filesystem Workspace
  • Data Quality
  • Code Intelligence
  • Scale Patterns
  • v0.7 → v0.8 Lakehouse Fast-Path
  • Tutorials
  • Knowledge Graph
  • Entity Linking
  • Vector Search
  • Graph Algorithms
  • Recipes
  • CRUD
  • Multi-MATCH
  • MERGE (Upsert)
  • Full-Text Search
  • Batch Projection
  • Multi-Source Observation
  • Sports Analytics
Operations
  • CLI
  • REPL Commands
  • Snapshot & Restore
  • Filesystem Projection
  • Server Modes & PG Wire
  • Persistence (ops)
  • Import & Export
  • Deployment
  • Daemon (UDS)
  • Architecture
  • Engine Architecture
  • Cloud Architecture
  • Sync Protocol (Deep Dive)
  • World Graph Substrate (Preview)
Reference
  • TypeScript API
  • Glossary
  • Naming & Domain Map
  • Data Types
  • Operators
  • Error Codes
  • GQL Reference
  • Known Issues
  • Versioning
  • Licensing
  • Conformance
  • GQL Conformance
  • openCypher TCK
  • Extension Regressions
GQL Conformance
  • Conformance Dashboard
  • openCypher TCK Results
  • Extension Regressions
GQL Features
  • MATCH Basic
  • CREATE Nodes Edges
  • SET REMOVE Properties
  • DELETE Detach DELETE
  • RETURN WITH WHERE
  • Order BY Limit Skip
  • Order BY Nulls First Last
  • UNWIND
  • Aggregate Functions
  • OPTIONAL MATCH
  • Variable Length Paths
  • Label OR AND NOT Expressions
  • Label Wildcard
  • Quantified Path Sugar
  • Path Modes Walk Trail Simple Acyclic
  • Shortest Path Variants
  • IS Labeled Predicate
  • Element ID Function
  • IS Type Predicate
  • Binary Literals
  • Line Comments Solidus
  • Line Comments Minus
  • GQLSTATUS Result Codes
  • GQL Error Code Mapping
  • Transaction Control Syntax
  • SET Session
  • Conditional Execution WHEN THEN ELSE
  • RETURN NEXT Pipeline
  • Primary Key Constraint
  • Unique Constraint
  • Deterministic MERGE Via PK
  • Undirected Edge MATCH
  • Cast Type Conversion
  • GQL Directories
  • Multiple Labels Per Node
  • GQL Flagger
  • NEXT Linear Composition
  • Cardinality Function
  • INT64 BIGINT Type Names
  • FLOAT64 Double Type Names
  • Log10 Log2 Functions
  • Trim Leading Trailing Both
  • FILTER Clause
  • LET Statement
  • Group BY Explicit
  • EXCEPT SET Operations
  • INTERSECT SET Operations
  • ALL Different Predicate
  • Same Predicate
  • Property Exists Function
  • Path Variable Binding
  • USE Graph Clause
  • FOR IN List
  • Typed Temporal Literals
  • Session SET Value Params
  • Typed List Annotations
  • arcflow.cosine() function
  • arcflow.embed() function
  • arcflow.similar() procedure
  • arcflow.graphrag() procedure
ArcFlow Extensions
  • LIVE Queries
  • Triggered Write-Back Views
  • Evidence Algebra
  • Relationship Skills
  • AI Function Namespace
  • Graph Embedding Algorithms
  • ASOF JOIN
  • Durable Workflows
  • Incremental Z-Set Engine
  • GPU GraphBLAS
  • Triggers
  • HNSW Vector Index
  • Extensions Moat

Scale Patterns

A workload that fits comfortably on a workstation often grows. Sensor capture rate climbs from kilohertz to megahertz, partition counts grow from hundreds to thousands, spatial predicates start dominating the plan cost, and queries that worked unchanged need help.

This guide documents the four primitives an agent reaches for as those pressures show up:

  1. Named arguments on fusion procedures — keep call sites readable as the parameter list grows.
  2. R-tree spatial indexes — make geometry-bound predicates an index probe, not a scan.
  3. Sharded fan-out — run an analytical query in parallel across partitions, with typed partial results.
  4. Spatial primitives — cone_intersection, kth_nearest_with_velocity, occlusion_area — the building blocks for domain-specific spatial reasoning.

Each primitive is independent. Together they cover the shape of high-throughput perception, identity, and spatial-analysis pipelines.

1. Named arguments on fusion procedures#

Procedures in the arcflow.fusion.* family — spatialGraph, vectorGraph, graphAggregate — accept a NamedArgs value alongside their positional arguments. Positional calls work unchanged; the named-arguments lane makes the call site self-documenting as the parameter count grows.

-- Named-argument form
CALL arcflow.fusion.spatialGraph(
  source: 'detections',
  radius: 5.0,
  metric: 'euclidean',
  min_confidence: 0.7,
  max_neighbours: 32
) YIELD node, score

The same call positionally is parser-equivalent — but at a real call site with five-to-eight parameters, the named form is what an agent will reach for. Use it whenever you have more than two arguments or whenever a reader needs to know what an argument means without looking up the signature.

2. R-tree spatial indexes#

When a query predicate filters by geometry — within a polygon, inside a radius, intersecting a bounding box — the engine can take it from a scan to an index probe with one DDL statement.

CREATE INDEX detection_xy FOR (n:Detection) ON (n.position)
  WITH OPTIONS { method: 'rtree' };

Subsequent spatial predicates against Detection.position are evaluated against the R-tree. The planner picks the index automatically; an agent does not need to hint.

R-tree indexes are most useful when:

  • The query touches a region, not a single point.
  • The region is bounded — a polygon, a circle, a bounding box.
  • The label has many rows where the region selects a small fraction.

For full-table point-distance queries against small graphs, the scan is fine.

3. Sharded fan-out — execute_fan_out#

An analytical query that scans many partitions can be dispatched in parallel. execute_fan_out divides the work across shards, evaluates each piece independently, and emits typed ShardFanOutPartial records that compose into the final result.

CALL arcflow.execute_fan_out(
  query: 'MATCH (d:Detection) WHERE d.score > 0.9 RETURN count(*) AS n, avg(d.score) AS s',
  partition_by: 'game_key'
) YIELD partial
RETURN sum(partial.n) AS total, avg(partial.s) AS overall_score

The interesting property is that each partial is typed. The agent gets back a stream of ShardFanOutPartial values it composes with ordinary aggregations. No string parsing, no manual sharding bookkeeping, no per-shard error-handling skeleton.

Sharded fan-out is the right call when:

  • The query is analytical — predominantly aggregations or counts, not high-fanout traversal.
  • The data partitions naturally — by time, by source, by region.
  • A single-shard run would touch more partitions than fit in the working set.

For traversals that hop frequently between partitions, the single-shard executor is usually faster — the fan-out overhead is real and is not always worth it.

4. Domain-agnostic spatial primitives#

Three spatial primitives compose into a wide range of domain-specific operations:

PrimitiveWhat it computes
cone_intersection(origin, direction, half_angle, points)The subset of points that lies inside a cone whose tip is at origin, axis along direction, half-angle half_angle.
kth_nearest_with_velocity(point, candidates, k, velocity_field)The k-th nearest candidate to point, ranked by a distance metric that incorporates the candidate's velocity.
occlusion_area(viewer, obstacles, target_plane)The area on target_plane that is hidden from viewer by obstacles.

These primitives are deliberately domain-agnostic. An agent working on autonomous navigation, sports analytics, or industrial inspection composes them into the operation it actually needs. The domain-specific name — release point at throw, catch radius, shadowed-by — lives in the agent's adapter layer, not in the engine.

This split exists for a reason. Domain primitives in the engine would force every downstream consumer to share a vocabulary; primitives at the level of geometry let each consumer name them in its own terms. See Adapter Discipline for the rule that makes this split load-bearing.

Composition example#

A perception pipeline asks: which of these tracked objects are inside the camera's field of view, ranked by closest-approach time, accounting for occluders? That's a one-statement composition:

WITH $camera AS cam, $tracks AS tracks, $obstacles AS obs
WITH cone_intersection(cam.position, cam.heading, cam.fov_half_angle, tracks) AS in_view, cam, obs
UNWIND in_view AS t
RETURN
  t,
  kth_nearest_with_velocity(cam.position, in_view, 1, 'velocity') AS closest,
  occlusion_area(cam.position, obs, t.plane) AS occluded

The three primitives compose under the existing Cypher syntax — no new DSL, no string parsing, no domain dialect.

When to reach for which#

PressureReach for
Call site has too many positional arguments to read at a glanceNamed arguments on the fusion procedures.
Spatial-predicate cost dominates the planR-tree spatial index.
Analytical scan over many partitions blows the working setexecute_fan_out.
A domain-specific spatial operation is neededCompose the three primitives in the adapter.

These primitives are independent and ship in the engine — an agent can adopt them one at a time, without committing to a redesign.

See also#

  • Algorithms — the full catalogue of built-in graph operations.
  • Spatial Knowledge — the spatial data model these primitives operate on.
  • Adapter Discipline — why domain-specific names stay in the adapter.
  • WorldCypher Indexes — the full index DDL reference.
← PreviousCode IntelligenceNext →v0.7 → v0.8 Lakehouse Fast-Path