Frames
Frames are the structure of Noemata’s semantic layer. A frame models a thing you observe — a service, a host, an HTTP endpoint, a namespace, even a user or a group of services — by holding a view: what data is relevant, and what it’s called. How to visualize it is a page, authored as a *.page.json at the same route id. A frame with no page beside it renders nothing; it exists to be imported by other views or borrowed by other pages.
A view lets you define once what data you capture and what it means. Its closest equivalent is a SQL view, but with more metadata — for example, which formatting to use when displaying a value, or how to query a metric.
A page consists of blocks and expressions. Blocks are components that display your data; expressions define what data should be displayed.
When you open a frame, the app server compiles its blocks’ queries — plus the view they read from — into SQL, binding the frame’s parameters and the current time range and filters from context, and runs that against the database. Change a control and only the affected queries re-run, because expressions are observable.
For more, see:
For the full file format — the *.frame.json and *.page.json shapes, scope, and how frames compose — see the frame schema reference.