Metadata-Version: 2.4
Name: byoe-ontology
Version: 0.1.0
Summary: BYOE 本体核心包——企业系统语义层的格式、校验、版本化存储与 SimRep/SimAct 互通
Author-email: "byoe.net" <hi@byoe.net>
License: MIT
Project-URL: Homepage, https://www.byoe.net
Keywords: ontology,semantic-layer,byoe,simrep,simact
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pydantic>=2.6
Provides-Extra: dev
Requires-Dist: pytest>=8; extra == "dev"
Dynamic: license-file

# byoe-ontology

BYOE 本体核心包——企业系统语义层的**格式、校验、版本化存储与互通**,纯库、零 UI、除 pydantic 外零依赖。

来源:SimAct `simact/ontology/`(schema/store)+ `simact/ontology/simrep_format.py`(SimRep 双向桥)+
`simact/exchange/`(信封)的通用部分,按《BYOE_三版本规划与实施计划.md》Phase 0.2 抽取。
SimRep 侧契约参考:`packages/contracts/src/ontology.ts`(zod);AI 注入器 `ontologyToPromptText` 的 Python 移植在本包 `prompt_text`。

## 安装

```bash
pip install byoe-ontology        # 或 monorepo 内: pip install -e packages/byoe-ontology
```

## 快速开始

```python
from byoe_ontology import Ontology, OntField, OntObject, OntologyStore, validate_ontology
from byoe_ontology.simrep_format import to_shared, from_shared
from byoe_ontology.prompt_text import prompt_text

o = Ontology(system="erp-prod", objects=[OntObject(name="Order", fields=[OntField(name="no")])])
errs = validate_ontology(o)                       # [] = 通过

store = OntologyStore(root, audit=my_audit_sink)  # 显式注入存储根与审计汇(无全局单例)
pending = store.save_draft(o, actor="fde")        # 草稿;返回待确认条目
store.confirm("erp-prod", pending, actor="fde")   # 逐条确认
ver = store.publish("erp-prod", actor="fde")      # 发布为不可变版本 v1
pkg = store.export_package("erp-prod", "fde")     # 交换包:{schemaVersion, kind, ontology, checksum}

shared = to_shared(o)                             # → SimRep OntologySchema 形态(zod 可消费)
back = from_shared(shared)                        # ← SimRep 产物导回(x-simact 无损还原)
text = prompt_text(o)                             # → AI 语义注入串(接 byoe L0 / SimRep aiOntologySuggest)
```

## 设计要点

- **规范格式 + 扩展区**:模型含 `x-byoe`(BYOE 规范扩展)与 `x-simact`(兼容保留);`extra="allow"`
  保证未知键往返不丢。SimAct 专有信息(操作契约/风险/来源/置信度)在 SimRep 共享格式中无损写入
  `x-simact`,SimRep zod 忽略未知键。
- **草稿→确认→发布**:发布要求全部条目确认;版本不可变;`diff(a, b)` 增删对比。
- **导入只进草稿**:交换包 sha256 校验和 + schemaVersion 双重校验,通过后所有条目置 draft 待确认——
  防篡改、防静默覆盖。
- **无全局单例**:root 与审计汇显式注入;宿主(byoe / SimAct)自行管理生命周期。
- **互通即格式**:与 SimRep 只交换 JSON 不共享代码;`envelope.checksum/verify` 提供通用包信封。

## License

MIT(与 byoe 主包一致)
