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:
- cluster all couriers near one district during one hour
- cluster all runner stop positions during one event window
- find shared dense dwell zones across several devices
Conceptual Explanation
This is the multi-subject companion to nexyron.temporal_geo_dbscan.
It still uses the same architecture:
- read temporal property history for each requested node
- normalize each value to a WGS84 point
- run one in-memory DBSCAN over the combined sample set
- 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
- discover shared hotspots across many moving entities
- compare whether several users converged into the same dense area
- build cluster-labeled temporal training rows across a cohort
- compose the procedure output with
YIELD,WITH, andRETURNrather than hiding follow-up logic outside Cypher
Real Limitations And Tradeoffs
- This is still bounded-window in-memory clustering, not a distributed geo analytics engine.
- The caller chooses the node set explicitly.
- It currently clusters WGS84 point data only.
- procedure calls are explicit contracts; missing state, unsupported parameters, or absent artifacts should fail rather than silently falling back