Example chạy được

Nova Lending walkthrough

Nova Lending là domain cho vay giả lập, ẩn danh, minh hoạ đủ 6 atom với root schema, data fixture và CI validate.

Domain ẩn danh

Nova Lending minh hoạ đủ 6 atom

Ví dụ này là nền cho vay giả lập. README nguồn nhấn rõ đây không phải tổ chức thật; mọi entity và dữ liệu chỉ phục vụ minh hoạ.

Object · Attribute · Link

Semantic layer

  • Customer có customer_id, full_name, tier và link loans.
  • Loan có loan_id, principal, status và link borrower.
  • Link sống trong object dưới dạng native LinkML slot.

Action · Policy · Event

Kinetic layer

  • ActionType khai action_id, applies_to, function_ref, validation_rule, emits_event.
  • PolicyType khai rule và enforcement.
  • EventType khai subject, from_state, to_state, triggered_by.

Project layout

Một atom, một thư mục

Root schema `ontology/nova-lending.ontology.yaml` không khai class trực tiếp. Nó dùng LinkML imports để ráp shared enums, objects, actions, policies và events thành một schema trước khi validate.

nova-lending/
  ontology/
    _shared/enums.yaml
    objects/customer.yaml
    objects/loan.yaml
    actions/action-type.yaml
    policies/policy-type.yaml
    events/event-type.yaml
    nova-lending.ontology.yaml
  data/
    customer-valid.yaml
    customer-invalid.yaml
    kinetic-instances.yaml
  .github/workflows/validate.yml

Chạy thử

Validate PASS, expect-FAIL và codegen smoke

Workflow nguồn cài Python 3.12, `pip install linkml`, validate dữ liệu đúng, đảo logic cho dữ liệu sai, rồi sinh ER diagram và Pydantic để kiểm codegen.

pip install linkml

linkml-validate -s ontology/nova-lending.ontology.yaml \
  -C Customer data/customer-valid.yaml

if linkml-validate -s ontology/nova-lending.ontology.yaml \
  -C Customer data/customer-invalid.yaml; then
  echo "Should have failed"; exit 1
fi

gen-erdiagram ontology/nova-lending.ontology.yaml > /tmp/er.mmd
gen-pydantic ontology/nova-lending.ontology.yaml > /tmp/models.py
FileVai trò
objects/customer.yamlObjectType Customer, attributes và LinkType loans.
objects/loan.yamlObjectType Loan, attributes và LinkType borrower.
actions / policies / eventsBa atom kinetic được khai như contract.
data/customer-invalid.yamlFixture cố ý sai để chứng minh schema còn bắt được lỗi.