I recently added a semantic layer to a small dbt project: four metrics, each defined once, with a description and an owner. Then the obvious question came up. Those definitions live in dbt's format. If the clinic also used a BI tool, a warehouse with its own semantic views and an AI assistant, would each of them need its own copy?
Today the answer is mostly yes. Every tool has its own way of describing a metric, so the same "new patients" gets written three or four times, and sooner or later one copy drifts. Apache Ossie is the attempt to stop that.
What it is
Ossie is a specification, not a product. It describes a semantic model in YAML or JSON: datasets, the fields in them, the relationships between them and the metrics on top. Any tool that can read and write that format can, in principle, receive a definition from another tool instead of having it rebuilt by hand.
It started in September 2025 as the Open Semantic Interchange, launched by Snowflake with dbt Labs, Salesforce and other companies. The first version of the specification was published in January 2026 under an Apache 2.0 licence. In July 2026 the project entered the Apache Incubator and changed its name to Apache Ossie, partly because "OSI" was already taken by the Open Source Initiative. The specification didn't change with the name.
Being in the incubator matters more than the name. The project is now run under the Apache Software Foundation's rules, not by one vendor, which is what you want from a format that competing vendors are supposed to share.
What I checked
I didn't want to write about it from the press releases, so I read the specification and the reference converter for dbt, with my four metrics in mind. I haven't run the converter yet, so this is what the documentation and the code say, not a test.
A metric in Ossie has
- a name,
- a SQL expression,
- a description,
- a data type and
- an ai_context field
where you can add synonyms, instructions and example questions for AI tools. That last field fits my case well. I could tell an assistant that "new patients" means people, not forms, in the definition itself, and not in a prompt someone has to remember to write.
Ratios come through. The converter writes my readmission rate as one expression, the numerator divided by the denominator. What's lost is the link: in Ossie a metric can't refer to another metric, so the rate no longer knows it's built from readmissions_30d and eligible_discharges. If someone changes one of those, nothing tells the rate.
Some things don't come through at all. Conversion funnel metrics are dropped, as are metrics that depend on time windows or offsets. Time dimensions arrive without their granularity. The converter records each loss as a warning, which I appreciate: it says what it dropped instead of failing silently.
The gap I care about most is ownership. The specification has no field for an owner. In my project each metric belongs to a team through a dbt group, and the converter doesn't carry groups across. It carries a metric's meta as a vendor extension, so the owner could travel there, but then it depends on the tool at the other end reading dbt's extension. A definition that arrives without saying who agreed it is only half governed.
Is it ready?
Not for production, and the project says so. The released version is 0.1.1, from December 2025. The next one, 0.2.0, is still a draft with breaking changes, and the specification itself warns not to depend on it in production. The roadmap lists what's still open: derived and cumulative metrics, grain, reusable filters, and versioning and access control through catalogues.
There is a lot of support around it, though. The converters repository already has converters for more than twenty tools, including dbt, Snowflake, Databricks, BigQuery, Power BI, Sigma, ThoughtSpot and Cube.
What I'd do now
I wouldn't migrate anything to Ossie yet. But I'd write metric definitions as if they were going to travel. That means a description on every metric that says what it counts and what it doesn't, owners kept in the catalogue and in meta, and as few tool-specific tricks as possible in the expressions. Those habits pay off today, inside one tool, and they'll make the move easier when the format settles.
The next step for me is to run the converter on the clinic project and compare what comes out with what I've written here. I'll update this post with the result.