nexyron.temporal_geo_dbscan_many

Generic Description

Cluster temporal geographic histories from many nodes together using DBSCAN.

Simple example:

CALL nexyron.temporal_geo_dbscan_many([42, 43, 44], 'position', 0, 10000, 75.0, 3)
YIELD node_id, ts, lat, lon, cluster_id, is_noise
RETURN node_id, ts, lat, lon, cluster_id, is_noise

Temporal and streaming procedures inspect registered temporal history, rollups, time ranges, and global event timelines.

Consumer-Level Explanation

Use this when the clustering question is shared across many entities rather than one subject at a time.

Typical examples:

Conceptual Explanation

This is the multi-subject companion to nexyron.temporal_geo_dbscan.

It still uses the same architecture:

  1. read temporal property history for each requested node
  2. normalize each value to a WGS84 point
  3. run one in-memory DBSCAN over the combined sample set
  4. return the cluster label plus the owning node for each sample

More Detailed Explanation

In practical queries, start by deciding the row grain you want after the call: one row per node, one row per path, one row per registry object, one row per artifact, or one row per summary. Then keep that grain explicit with YIELD and named projections. That is the difference between a useful planner-facing example and a vague call that downstream tooling cannot safely compose. For contract-driven procedures, the executable examples on these pages intentionally inspect procedure metadata unless the required named artifacts are created in the same example.

Advanced Example

MATCH (r:Runner)
WHERE r.team = 'north'
WITH collect(id(r)) AS runner_ids
CALL nexyron.temporal_geo_dbscan_many(runner_ids, 'position', 1710000000000, 1710086400000, 60.0, 4)
YIELD node_id, ts, lat, lon, cluster_id, is_noise
RETURN node_id, ts, lat, lon, cluster_id, is_noise
ORDER BY ts, node_id

Real Use Cases

Real Limitations And Tradeoffs