Skip to main content
A canonic project whose context comes entirely from an Apache Ossie semantic model. One SQLite connection holds the data of a small coffee retailer. One ossie connection reads the model and binds every dataset to that SQLite connection. Every file under semantics/, contracts/ and knowledge/ was drafted by canonic ingest and accepted with canonic apply.

Schema

Seed data: 6 orders (4 shipped, 1 placed, 1 cancelled) with 9 order lines, 4 customers, 3 stores, 3 products. Revenue is 284.00 in total, small enough to check every number by hand.

Setup

The two warnings are intentional. The model contains objects the connector cannot import, and it names each one instead of dropping it.

Configuration

Ossie has no notion of a connection, so target_connection is required. It decides the semantics/<connection>/ directory, the SQL dialect expressions are transpiled to, and the live schema column types come from.

What the model became

Bindings and knowledge pages enter at inferred and never auto-apply. They become part of the project only through review.

Queries

revenue lives on order_items, while region lives on stores. The query reaches it through the Ossie relationships order_items_to_orders and orders_to_stores, both many_to_one, so no row is counted twice.

Rebuild from the model

Bootstrap writes only what is deterministic and unflagged. order_items waits for review because of the AVG measure, and so does everything under contracts/ and knowledge/. A further canonic ingest over the result is a no-op for all 16 files.

Gate Ossie changes in CI

Once a source or binding is curated, a changed Ossie model that contradicts it fails a strict run:
Change detection covers the measures, dimensions and joins Ossie contributed, through meta.definition_fingerprint on each semantic source. An existing binding is never changed by an import, so a curated binding stays as it is.