Metadata-Version: 2.5
Name: katalyst-core
Version: 0.2.1a3
Summary: katalyst-core — the LinkML module every Katalyst schema module imports
Author: eSimplicity
License: Proprietary
Requires-Python: >=3.12
Requires-Dist: linkml-map>=0.5.4
Requires-Dist: linkml-runtime<2,>=1.12
Requires-Dist: linkml<2,>=1.12
Requires-Dist: pint<0.26,>=0.25
Requires-Dist: pyoxigraph>=0.5.12
Requires-Dist: pyshacl>=0.30
Requires-Dist: pyyaml>=6
Requires-Dist: rdflib>=7
Description-Content-Type: text/markdown

# katalyst-core

The LinkML module every Katalyst schema module imports
(`src/katalyst_core/schema/katalyst_core.yaml`):

- `Node`: the base node. Identity (`id`, a URI under a declared prefix; core itself is `https://w3id.org/katalyst/core/`, prefix `kc:`), `kind`, `name`, `description`.
- Lifecycle: `lifecycle_state` with a `retired` state, which is the default delete.
- Provenance: `source`, `activity`, `derived_from`.
- Two times: valid time (`valid_from`/`valid_to`) and recorded time (`recorded_from`/`recorded_to`).
- `Relation`: a reified relationship (`subject`, `predicate`, `object`) with a `confidence`
  and its own provenance and times.
- The extension bag (`extensions`): data no loaded module defines, kept and never deleted.
- `DeletePolicy` (block, cascade, detach, redirect): every relationship slot carries one
  as its `delete_policy` annotation.
- `parent`: the structural parent edge (`child_of`). A class lists it under `slots:` and
  names its parent kinds under `slot_usage: parent:`. No module defines `parent` again;
  one that does is refused when it loads.

A module imports it as `katalyst_core`:

```yaml
imports:
  - linkml:types
  - katalyst_core
```

The Python package defines no schema. It opens modules (`open_module`), holds them to the
core contract (`contract.check_contract`, `kata core check`), and moves records between
YAML and RDF (`graph.to_graph` / `graph.from_graph`, `kata core save` / `kata core load`).

Lint the schema with the LinkML linter: `just core-lint`. The full `linkml` toolchain is a runtime dependency, so validation and linting are available wherever core is.
