Skip to main content

A boring semantic layer built with ibis

Project description

Boring Semantic Layer (BSL)

The Boring Semantic Layer (BSL) is a lightweight semantic layer based on Ibis.

Key Features:

  • Lightweight: pip install boring-semantic-layer
  • Ibis-powered: Built on top of Ibis, supporting any database engine that Ibis integrates with (DuckDB, Snowflake, BigQuery, PostgreSQL, and more)
  • MCP-friendly: Perfect for connecting LLMs to structured data sources

Quick Start

pip install 'boring-semantic-layer[examples]'

1. Define your ibis input table

import ibis

# Create a simple in-memory table
flights_tbl = ibis.memtable({
    "origin": ["JFK", "LAX", "JFK", "ORD", "LAX"],
    "carrier": ["AA", "UA", "AA", "UA", "AA"]
})

2. Define a semantic table

from boring_semantic_layer import to_semantic_table
flights = (
    to_semantic_table(flights_tbl, name="flights")
    .with_dimensions(origin=lambda t: t.origin)
    .with_measures(flight_count=lambda t: t.count())
)

3. Query it

result_df = flights.group_by("origin").aggregate("flight_count").execute()

📚 Documentation

→ View the full documentation


This project is a joint effort by xorq-labs and boringdata.

We welcome feedback and contributions!


Freely inspired by the awesome Malloy project. We loved the vision, just took the Python route.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

boring_semantic_layer-0.3.15.tar.gz (1.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

boring_semantic_layer-0.3.15-py3-none-any.whl (625.8 kB view details)

Uploaded Python 3

File details

Details for the file boring_semantic_layer-0.3.15.tar.gz.

File metadata

  • Download URL: boring_semantic_layer-0.3.15.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for boring_semantic_layer-0.3.15.tar.gz
Algorithm Hash digest
SHA256 867662d5d0b531df3ef0de82e4a5699bcfb749024fe71a3d11618a752f65c2fa
MD5 702e10c3666f9421b1e3c1da18a69389
BLAKE2b-256 38e8221d495da3aff8105e599a2fdfc75fe2bd0861544c41626aa310b29d9f6b

See more details on using hashes here.

File details

Details for the file boring_semantic_layer-0.3.15-py3-none-any.whl.

File metadata

  • Download URL: boring_semantic_layer-0.3.15-py3-none-any.whl
  • Upload date:
  • Size: 625.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for boring_semantic_layer-0.3.15-py3-none-any.whl
Algorithm Hash digest
SHA256 33288db94b4343ac7060aa378eb103f7f0b19ccfa99248961bbf2c2afcc4f2a2
MD5 e13fcafd4a699246584ea16dccb1c59d
BLAKE2b-256 188fcdcf8c79f0da72be6b1c9cbb3d211b1937bcb6f54584dd60428e5cf8411d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page