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.
Example chạy được
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
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ạ.
Project layout
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.ymlChạy thử
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| File | Vai trò |
|---|---|
| objects/customer.yaml | ObjectType Customer, attributes và LinkType loans. |
| objects/loan.yaml | ObjectType Loan, attributes và LinkType borrower. |
| actions / policies / events | Ba atom kinetic được khai như contract. |
| data/customer-invalid.yaml | Fixture cố ý sai để chứng minh schema còn bắt được lỗi. |