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
  • Cookbook
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. World Store
  • 1a. World Store · Smart Reader
  • 2. Perception Lake
  • 3. World Graph
  • 4. Query Engine
  • 5. Live Surface
  • 6. Event Bus
  • 7. Behavior Engine
  • 8. Algorithm Library
  • Virtual Computed Columns
  • Threading Model
  • Typed ID Contract
WorldCypher
  • Overview
  • Execution Options
  • 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
  • Plugin Management
  • Agent Governance
  • Server Modes & PG Wire
  • Persistence (ops)
  • Import & Export
  • Deployment
  • Deployment Modes
  • Daemon (UDS)
  • Why not Docker
  • 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 Reference
    Conformance
  • Conformance Dashboard
  • openCypher TCK Results
  • Extension Regressions
  • 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

Use Case: Sports Analytics

Sports analytics is fundamentally an operational world model problem — the persistence and query layer, not the prediction layer. 22 players tracked at 50Hz. Formations that emerge from spatial relationships. Events detected from position history. Historical queries at any moment in the match. Neural world model outputs (pose estimates, trajectory predictions) arrive as _observation_class: 'predicted' facts alongside camera-confirmed positions. ArcFlow stores all of it, versions all of it, and makes all of it queryable with one syntax.

The problem#

A sports world model requires all of these simultaneously:

  • Spatial tracking — player positions at 50Hz (22 players, 90 minutes = 5.94M data points)
  • Temporal queries — "Where was player X at minute 35?" — AS OF seq N on the world model
  • Graph relationships — team membership, passing networks, marking assignments
  • Real-time algorithms — nearest player to ball, formation detection, offside detection
  • Confidence scoring — distinguishing high-accuracy optical tracking from radar estimates

Why ArcFlow#

One world model engine handles spatial, temporal, graph, and real-time computation. No separate databases for positions, events, and relationships. The spatial-temporal graph is the single source of truth.

What becomes possible: formation patterns across 90 minutes become a graph query, not a video review task. Pressure networks emerge from player spatial relationships without manual annotation. Offside detection runs on the live graph during play, not post-hoc. And temporal replay means you can reconstruct any moment of the match — exact positions, exact events, exact confidence scores — for coaching analysis or broadcast enhancement.

Implementation#

import { open } from '@ozinc/arcflow'
 
const db = open('./match-data')
 
// Create players with positions
db.batchMutate([
  "CREATE (p:Player {id: 'p1', name: 'Player-10', team: 'home', number: 10, position: point({x: 52.3, y: 34.1}), speed: 7.2})",
  "CREATE (p:Player {id: 'p2', name: 'Player-07', team: 'home', number: 7, position: point({x: 65.0, y: 20.5}), speed: 4.1})",
  "CREATE (ball:Ball {id: 'ball', position: point({x: 50.0, y: 33.5}), speed: 12.4})",
])
 
// Spatial: nearest players to ball (ArcFlow Spatial Index, ≥ 2000/s at 22 entities)
db.query("CALL algo.nearestNodes(ball.position, 'Player', 5) YIELD node, distance RETURN node.name, distance")
 
// Spatial: offside check — attacking players ahead of last defender
db.query(`
  MATCH (defender:Player)-[:PLAYS_FOR]->(defending:Team {side: 'defending'})
  WITH max(defender.position.x) AS last_defender_x
  MATCH (attacker:Player)-[:PLAYS_FOR]->(attacking:Team {side: 'attacking'})
  WHERE attacker.position.x > last_defender_x
  RETURN attacker.name, attacker.position.x AS attacker_x, last_defender_x
`)
 
// Live geofence: fires the instant a player enters or leaves the penalty area
db.subscribe(
  `MATCH (p:Player)
   WHERE p.position.x >= 83 AND p.position.x <= 105
     AND p.position.y >= 13 AND p.position.y <= 55
   RETURN p.name, p.team`,
  (event) => {
    for (const row of event.added)   console.log(`${row.get('name')} entered penalty area`)
    for (const row of event.removed) console.log(`${row.get('name')} left penalty area`)
  }
)
 
// Algorithms: passing network centrality
db.query("CALL algo.pageRank()")
 
// Algorithms: player clusters (formation detection)
db.query("CALL algo.louvain()")

50fps Tracking Loop#

// Update position each frame — spatial index auto-updates in O(log N)
function onPositionUpdate(playerId: string, x: number, y: number) {
  db.mutate(
    "MATCH (p:Player {id: $id}) SET p.position = point({x: $x, y: $y})",
    { id: playerId, x, y }
  )
  // Live geofences fire automatically — no polling needed
}

See Also#

  • Spatial Queries — full spatial primitives reference
  • Programs — bundle YOLO detectors, player trackers, and PTZ controllers into installable manifests with hardware validation
  • Triggers — fire a skill automatically when a new :Frame or :Event node enters the graph
  • Live Queries — standing queries for real-time formation and zone tracking
  • Multi-Stream Spatiotemporal World Model — runnable, CI-tested cookbook (Python) covering the multi-camera spatial + temporal pattern
Try it
Open ↗⌘↵ to run
Loading engine…
← PreviousRobotics & PerceptionNext →Grounded Neural Objects