---
title: `nexyron.split_policy_register`
url: https://nexyron.tech/docs/cypher/procedures/abstraction-platform/registry/nexyron-split-policy-register
description: nexyron.split policy register register or replace one dataset split policy
---

# `nexyron.split_policy_register`

## Generic Description

`nexyron.split_policy_register` register or replace one dataset split policy

```cypher
CALL nexyron.procedures()
YIELD name, description, parameters, output_columns
WHERE name = 'nexyron.split_policy_register'
RETURN name, description, parameters, output_columns
```

Abstraction-platform registry procedures create, list, read, and inspect named contracts such as abstractions, features, datasets, snapshots, models, policies, interventions, scenarios, and split policies.

## Consumer-Level Explanation

This procedure is part of the abstraction catalog contract layer. Use it when you want to define or inspect named abstraction assets that other runtime procedures will consume later.

### Parameters

-   `name`: Split policy name Required.

### Output Columns

-   `name`
-   `strategy`
-   `config`
-   `tags`

## Example Contract Prerequisite

The executable Cypher blocks on this page query `nexyron.procedures()` so they work in an empty database and stay synchronized with the live procedure registry. A direct `CALL nexyron.split_policy_register(...)` requires the named abstraction contracts, artifacts, features, snapshots, datasets, models, or policies referenced by that call to exist first; otherwise the runtime correctly fails with an unknown-contract error rather than inventing state.

## Conceptual Explanation

The important thing about `nexyron.split_policy_register` is that it stays inside the same Cypher and abstraction-contract runtime as the rest of Nexyron. That means it can compose with named abstractions, time-aware snapshot contracts, document-style payloads, graph-native identity, and later model or policy layers without forcing you to move into a separate tool first.

## 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 abstraction procedures, the executable examples on these pages intentionally inspect procedure metadata unless the required named artifacts are created in the same example.

## Advanced Example

```cypher
CALL nexyron.procedures()
YIELD name, parameters, output_columns
WHERE name = 'nexyron.split_policy_register'
RETURN name,
       [p IN parameters | p.name] AS parameter_names,
       output_columns
ORDER BY name
```

## Real Use Cases

-   Register reusable train/validation split contracts once, then let datasets, model training, and evaluation jobs reuse the same balancing rule.
-   Use `strategy: 'balanced_random'` when a dataset must keep equal-sized target or feature cohorts. Boolean targets become true/false cohorts, categorical values become one cohort per value, and numeric values can be grouped with a `numeric_threshold`.
-   Keep admin and product teams aligned around one shared abstraction contract for members, households, facilities, interventions, and churn labels during quarterly retraining cycles.

## Real Limitations And Tradeoffs

-   This surface is contract-driven. If the registered feature, snapshot, dataset, model, or policy definition is weak, the procedure will faithfully execute that weak contract rather than silently repairing it.
-   Catalog procedures define or expose metadata. The balancing itself is applied when `nexyron.dataset_build` or `nexyron.dataset_materialize` executes the dataset contract.
-   Balanced splits choose the smallest non-null cohort size and sample that many rows from every cohort before assigning train, validation, and test. That makes the split fairer for the selected clustering condition, but it can intentionally discard majority-cohort rows.
