Your repository
Why a repository
A semantic model is code: it gets reviewed, versioned, branched and reverted. Keeping it in a SaaS database turns it into something you can only look at from inside that SaaS. In a repository you can look at it from anywhere, and it still exists the day you stop paying.
So in qontexta the Semantic Repository is the source of truth. The application keeps an index so it can list and search quickly, but that is a cache: it is rebuilt by reading the Semantic Repository and it is never the authority.
What it looks like
It is the standard Cube project layout. Nothing proprietary:
model/
cubes/ # the technical entities: table or SQL, joins, measures, dimensions
orders.yml
customers.yml
views/ # the business semantic views: the curated layer people query
revenue.yml
cube.js # configuration; qontexta serves it over the API
README.mdA cube and a semantic view, abridged:
cubes:
- name: orders
sql_table: analytics.orders
title: Orders
description: A confirmed order. Excludes abandoned carts.
measures:
- name: total_amount
sql: amount
type: sum
title: Total amount
description: Net revenue excluding tax, recognised on the order date.
meta:
unit: "€"
owner: Financeviews:
- name: revenue
title: Revenue
description: What the company bills, by region and by month.
cubes:
- join_path: orders
includes:
- total_amount
- region
- order_dateBoth halves of every definition live in the same file: the SQL and the meaning, in
Cube’s own fields (title, description, meta). Validation state goes in
meta.qontexta, so the sign-off travels with the definition: clone the
repository and you know what is signed and what is not.
Every change is a commit
Saving in the application is committing. The message says what changed and who
changed it, and the model’s history is Git’s history — git blame included.
And it works both ways: if someone edits the YAML from their terminal or merges a pull request, qontexta hears about it through a webhook, reindexes that branch and the semantic engine starts serving the new version. Going through the application is not required.
What is stored outside the Semantic Repository
Only what cannot live in a public repository: your Data Platform credentials (encrypted), plus the pointer to the Semantic Repository itself. Nothing of the model.
Unlinking
Unlinking deletes the pointer and the credentials. The repository and everything in it stay yours.