OBSL is an RDF-based exchange format for semantic-layer models.
It represents data objects, columns, joins, dimensions, measures and metrics,
and since Core 0.2 the model's business rules and its
links into external ontologies (SKOS mapping relations with provenance),
in a graph form suitable for interoperability, governance and knowledge exchange.
Every model loaded into the OrionBelt Semantic Layer
is exported in this vocabulary and answers read-only SPARQL.
| Class | Description |
obsl:SemanticModel | Top-level container representing a complete semantic-layer model. |
obsl:DataObject | A physical data source (table or view) referenced by the semantic model. |
obsl:Column | A column within a data object. |
obsl:Join | A join path between two data objects, defined by source/target columns and cardinality. |
obsl:NestedSource | Where a nested data object's rows come from: an array column on a parent data object, unnested. |
obsl:RefreshPolicy | Freshness contract describing how the physical table behind a DataObject refreshes. |
obsl:Dimension | A grouping or filtering attribute exposed to analysts. |
obsl:Measure | An aggregated numeric value derived from a source column or expression. |
obsl:WithinGroup | Ordering clause for ordered-set aggregates (LISTAGG). |
obsl:Metric | A derived, cumulative, or period-over-period calculation built on top of one or more measures. |
obsl:CumulativeMetric | A metric that applies a time-windowed aggregation over a base measure. Subclass of obsl:Metric. |
obsl:PeriodOverPeriodMetric | A metric that compares a measure's value across consecutive time periods using a date spine. Subclass of obsl:Metric. |
obsl:WindowMetric | A metric that applies a single-row-output SQL window function (RANK, DENSE_RANK, ROW_NUMBER, NTILE, LAG, LEAD, FIRST_VALUE, LAST_VALUE) optionally partitioned and ordered. Subclass of obsl:Metric. |
obsl:Rule | A declarative business rule over the model's dimensions, measures and metrics: a classification, eligibility, validation or constraint with a Boolean condition tree (comparisons, all/any/not, references to other rules). |
obsl:ExternalConceptMapping | A qualified link from a modeling element (SemanticModel, DataObject, Dimension, Measure, Metric) to a concept in an external ontology, with the SKOS mapping relation and its provenance (justification, source, ontology version, confidence). |
obsl:ModelExample | A canonical example query authored alongside the semantic model so agents can discover what kinds of questions the model is designed to answer. |
obsl:CustomExtension | Vendor-keyed opaque metadata attached to any modeling element. |
Grouped by the class they describe. Every property carries its full definition in obsl.ttl.
| Property | Description |
obsl:countLabelPattern | Name/label template for synthesized count measures (the count's id is its label). |
obsl:exposeCounts | When true (default), synthesize a row-count measure for every countable data object. |
obsl:hasDataObject | Links a semantic model to one of its data objects. |
obsl:hasDimension | Links a semantic model to one of its dimensions. |
obsl:hasExample | Links a semantic model to one of its canonical example queries. |
obsl:hasMeasure | Links a semantic model to one of its measures. |
obsl:hasMetric | Links a semantic model to one of its metrics. |
obsl:hasRule | Links a semantic model to one of its business rules. |
obsl:countLabel | Optional name/label for a data object's synthesized count measure (the count's id is its label); overrides the model-level countLabelPattern. |
obsl:countable | When true (default), the model synthesizes a grain-anchored row-count measure for this data object (name == label, e.g. |
obsl:hasColumn | Links a data object to one of its columns. |
obsl:hasJoin | Links a data object to a join path originating from it. |
obsl:hasRefreshPolicy | Links a data object to the freshness contract for its physical source table. |
obsl:nestedIn | The nested source a data object takes its rows from instead of, or in addition to, a table. |
obsl:numClass | Optional classification of a numeric column controlling aggregation behavior: categorical, additive, non-additive. |
obsl:primaryKey | When true, this column is part of the data object's primary key (composite keys order-preserving). |
obsl:columnFrom | Source column (in the originating data object) used in the join condition. |
obsl:columnTo | Target column (in the joined data object) used in the join condition. |
obsl:joinRequired | When true, a row without a match on the other side of this join does not survive it: the join is compiled as an INNER JOIN rather than the default LEFT JOIN. |
obsl:joinTo | Target data object of a join path. |
obsl:nestedInColumn | The parent's array column. |
obsl:nestedInObject | The parent data object whose array column supplies a nested object's rows. |
obsl:maxStaleness | Required for mode='heartbeat'. |
obsl:refreshAnchor | Optional 'HH:MM' time-of-day anchor for interval mode. |
obsl:refreshInterval | Required for mode='interval'. |
obsl:refreshMode | Refresh mode: 'interval' (fixed cadence), 'heartbeat' (irregular, ETL pings), or 'static' (never changes). |
obsl:refreshTimezone | IANA timezone name used to interpret refreshAnchor. |
| Property | Description |
obsl:via | Forces a dimension's join path through a specific intermediate data object (role-playing dimensions). |
obsl:anchorGrain | Data object whose grain a measure's expression is evaluated at, when that expression reads independent facts no join path reaches together. |
obsl:anchoredTo | Data object whose grain a column-less measure is anchored to when it aggregates over the object rather than a column (e.g. |
obsl:delimiter | Separator string used by LISTAGG / string_agg aggregations between concatenated values. |
obsl:filterContextExclude | Dimension name whose query filter is excluded from this measure's context. |
obsl:filterContextInclude | Static filter condition added to this measure's context, as a human-readable expression string (e.g. |
obsl:filterContextKeepOnly | Dimension name whose query filter is kept (all others are excluded). |
obsl:filterContextMode | Filter context override mode for a measure: FIXED (ignore all query filters) or RELATIVE (inherit and modify). |
obsl:filterExpression | Human-readable expression string describing the measure's filter conditions (e.g. |
obsl:grainExclude | Dimension name excluded from inherited grain (RELATIVE mode). |
obsl:grainInclude | Dimension name added to grain. |
obsl:grainKeepOnly | Adaptive grain dimension name (FIXED mode): effective grain = keepOnly ∩ query_dims. |
obsl:grainMode | Grain override mode for a measure: FIXED (start empty) or RELATIVE (inherit query dimensions). |
obsl:hasWithinGroup | Links a LISTAGG-style ordered-set aggregate measure to its within-group ordering clause. |
obsl:sourceColumn | Column that a measure aggregates over (when the measure is column-based, not expression-based). |
obsl:withinGroupOrder | Sort direction for the within-group ordering clause: ASC or DESC. |
obsl:baseMeasure | Measure that a cumulative metric is computed from (used when metricType is cumulative). |
obsl:referencesMeasure | Measure referenced in a metric's expression. |
obsl:timeDimension | Dimension used as the time axis for cumulative or period-over-period metrics. |
obsl:cumulativeType | Aggregation function for the cumulative window: sum, avg, min, max, count. |
obsl:grainToDate | Grain-to-date reset boundary for a cumulative metric: year, quarter, month, week. |
obsl:window | Rolling window size in periods for a cumulative metric. |
obsl:comparison | Comparison type for a period-over-period metric: ratio, difference, previousValue, percentChange. |
obsl:offset | Period offset for a period-over-period comparison (typically -1). |
obsl:offsetGrain | Grain of the offset period: day, week, month, quarter, year. |
obsl:orderDirection | ORDER BY direction for the window OVER clause: asc or desc. |
obsl:windowBuckets | Bucket count for NTILE window metrics (>= 2). |
obsl:windowDefaultValue | Default value to substitute when LAG / LEAD would return NULL (the three-argument form). |
obsl:windowFunction | Window function family for a window metric: rank, dense_rank, row_number, ntile, lag, lead, first_value, last_value. |
obsl:windowOffset | Row offset for LAG / LEAD window metrics (>= 1). |
| Property | Description |
obsl:dependsOnRule | A rule this rule's condition references. |
obsl:ruleCondition | The condition tree as a serialized JSON document in the OBML shape (field/op/value comparisons, all/any/not, rule references). |
obsl:ruleGrain | A dimension an aggregate rule is evaluated at (one triple per dimension). |
obsl:ruleLevel | 'row' when the rule reads dimensions only (a WHERE predicate), 'aggregate' when it reads a measure or metric (a HAVING predicate at the rule's grain). |
obsl:ruleReads | A dimension, measure or metric the rule's condition compares, references through other rules included. |
obsl:ruleSeverity | For validation and constraint rules: 'info', 'warning' or 'error'. |
obsl:ruleType | One of 'classification', 'eligibility' (members: rows or groups the condition holds for), 'validation', 'constraint' (an invariant: evaluation reports where it does not hold). |
| Property | Description |
obsl:authoredConcept | The concept exactly as written in OBML: a compact IRI such as 'corp:NetRevenue' or a full IRI. |
obsl:confidence | Confidence in the mapping, a decimal between 0 and 1. |
obsl:mappingComment | Free-text note on the mapping (approval, caveat, rationale). |
obsl:mappingJustification | How the mapping came to exist: 'curated', 'imported', 'generated', 'inferred' or 'lexical'. |
obsl:mappingRelation | How the source object relates to the target concept, read source-first in the SKOS direction: 'exact' (skos:exactMatch), 'close' (skos:closeMatch), 'broader' (skos:broadMatch --- the external concept is the broader one), 'narrower' (skos:narrowMatch --- the external concept is the narrower one), 'related' (skos:relatedMatch). |
obsl:mappingSource | Where the mapping comes from: a catalog, ontology or process name. |
obsl:ontologyVersion | Version of the external ontology the target concept was taken from. |
obsl:sourceObject | The modeled element an ExternalConceptMapping describes (the subject of the skos mapping triple). |
obsl:targetConcept | The external concept the mapping points at, as an absolute IRI (the authored compact IRI expanded with the model's ontology prefixes). |
| Property | Description |
obsl:aggregation | Aggregation function applied to the measure. |
obsl:allowFanOut | When true, permits this measure to be queried along fan-out join paths (bypasses fan-trap prevention). |
obsl:belongsToModel | Inverse convenience link from any model element back to its parent semantic model. |
obsl:cardinality | Join cardinality between data objects: many-to-one, one-to-one, many-to-many. |
obsl:code | Machine-readable identifier or physical name (e.g., SQL column name, table name). |
obsl:column | Column that a dimension or measure is bound to. |
obsl:dataObject | Data object that a dimension draws its values from. |
obsl:dataType | Explicit data type for CAST wrapping (e.g. |
obsl:database | Database or catalog name where the data object resides. |
obsl:defaultValue | Value to report when there is nothing to compute from: an aggregate over no rows, or a window function with no row at the offset it asks for. |
obsl:distinct | When true, the measure applies DISTINCT to its aggregation (e.g., COUNT DISTINCT). |
obsl:expressionSource | Expression string defining a computed column, a calculated measure, or a metric. |
obsl:format | Display format pattern (e.g. |
obsl:hasCustomExtension | Links any modeled element (SemanticModel, DataObject, Column, Dimension, Measure, Metric) to a vendor-keyed opaque metadata block. |
obsl:hasExternalConceptMapping | Links a modeled element (SemanticModel, DataObject, Dimension, Measure, Metric, Rule) to one of its external concept mappings. |
obsl:metricType | Kind of metric calculation: derived, cumulative, period_over_period. |
obsl:owner | Responsible team or person for this element. |
obsl:partitionBy | Dimension label used as a PARTITION BY key for a cumulative or window metric. |
obsl:pathName | Named join path used when a dimension reaches its data object through a non-default route. |
obsl:physicalName | Physical SQL name when it differs from the code value. |
obsl:referencesColumn | Column referenced by a formula — an expression-based measure's, or a computed column's. |
obsl:resultType | Abstract data type of the value: string, int, float, date, time, timestamp, boolean, json, time_tz, timestamp_tz. |
obsl:schema | Database schema containing the data object. |
obsl:secondary | When true, marks a join as a secondary join path (not the default path between two data objects). |
obsl:synonym | Alternative name for an element, used for natural-language search and LLM disambiguation. |
obsl:timeGrain | Time granularity. |
obsl:total | When true, the measure computes a grand total across all dimension values (ignores GROUP BY). |
© RALFORION d.o.o. · OBSL-Core 0.2