每天一个开源项目#40 Apache Ossie:1K Stars的AI/BI语义层通用标准

每天一个开源项目#40 Apache Ossie:1K Stars的AI/BI语义层通用标准

GitHub Trending #1 / 17 · 2026-07-17 · ⭐ 1,055 · 🍴 142 · Python 75.1% / Java 24.9% · Apache-2.0

项目地址:apache/ossie 官网:ossie.apache.org


📋 项目概览

属性 详情
项目名 Apache Ossie(incubating,原 Open Semantic Interchange / OSI)
一句话 用一套厂商中立的 YAML/JSON 规范,在 BI、数据平台与 AI Agent 之间交换指标、关系和业务语义
今日排名 GitHub Trending #1 / 17
Stars 1,055(Trending 快照;同日 API 补充核验时为 1,056)
Forks / Open Issues 142 / 57
创建时间 2025-11-18
主语言 Python 75.1%、Java 24.9%(主要来自转换器和验证工具,规范本身是 YAML/JSON/Markdown)
License Apache License 2.0
规范版本 main0.2.0.dev0 Draft ;仓库仅见标签 osi-0.1.1-rc1,暂无 GitHub Release
今日代码状态 cdf95904,最后提交为新增 Semantido vendor;快照日仍在密集开发

口径说明:Stars、Forks、Issues、语言分布和排名以任务提供的 2026-07-17 Trending 快照为历史基准;提交、贡献者、标签及代码统计来自同日 API 与浅克隆后的补充核验。快照没有保留"今日新增 Stars",本文不会用排名反推增量。


🔥 为什么值得关注?

现代数据栈缺的往往不是又一个查询引擎,而是一份能跨工具流通的业务定义。同一个"收入"指标可能在 dbt、Snowflake、Salesforce、Omni 和 AI 问数助手中各写一遍:过滤条件、时间口径或关联路径稍有差异,仪表盘就会互相打架,Agent 也会在冲突上下文中生成看似合理、实际错误的 SQL。Apache Ossie 的目标,是把数据集、字段、关系、指标、SQL 方言以及 AI 上下文放进一个可版本化、可验证的中间表示。

它真正有价值的地方不是"YAML 又多了一种写法",而是试图建立数据语义层的公共交换协议。Parquet/Arrow 统一数据格式,ODBC/JDBC 统一访问接口,Ossie 则瞄准更上层的业务含义与指标逻辑。一旦中间规范被多家工具接受,企业就不必为每两套产品维护一个点对点映射,AI Agent 也能拿到经治理的指标定义、同义词和使用约束,而不是只靠表名猜业务。

不过,今天的 Ossie 仍应被看作快速演化中的 Apache 孵化规范与参考实现 ,而不是已经定型的执行引擎。main 明确标注 0.2.0.dev0 Draft;指标粒度、关系基数、语义查询语言、注册中心和参考 SQL 编译器仍在路线图中。这种"潜力很大、接口未稳"的状态,正是技术团队现在值得跟踪、但生产采用必须小步试点的原因。


🏗️ 核心特性

1. 厂商中立的语义模型:把"数据是什么"变成可交换资产

Ossie 的顶层模型围绕五类对象展开:

  1. datasets:业务数据集及其物理来源、主键、唯一键;
  2. fields:字段或计算字段,可携带维度属性;
  3. relationships:数据集之间的简单键或复合键关系;
  4. metrics:模型级指标,可跨数据集引用字段;
  5. ai_contextcustom_extensions:分别承载 AI 语境和厂商私有信息。

这意味着一份语义模型既能表达机器可执行的计算逻辑,也能表达"营收还叫销售额""回答时只使用认证指标"这类 Agent 需要的上下文。

yaml 复制代码
version: "0.2.0.dev0"
semantic_model:
  - name: sales
    ai_context:
      instructions: "回答收入问题时只使用已认证指标"
      synonyms: ["营收", "销售额"]
    datasets:
      - name: orders
        source: analytics.public.orders
        primary_key: [order_id]
        fields:
          - name: amount
            expression:
              dialects:
                - dialect: ANSI_SQL
                  expression: amount
    metrics:
      - name: revenue
        expression:
          dialects:
            - dialect: ANSI_SQL
              expression: SUM(orders.amount)
        description: 已支付订单收入

2. Hub-and-Spoke:把转换器复杂度从平方级压到线性级

如果 N 个语义平台都直接互转,按有向转换计算,需要 N × (N - 1) 条转换路径;Ossie 作为中心格式后,每个平台只需提供导入和导出两条路径,总数变成 2 × N

接入平台数 N 点对点转换路径 Ossie Hub 转换路径 理论减少
5 20 10 50.0%
10 90 20 77.8%
20 380 40 89.5%
50 2,450 100 95.92%

这不是运行时性能基准,而是架构复杂度估算。它成立的前提是各平台与 Ossie 的映射足够完整,并且导入、导出能保持 round-trip fidelity;如果核心规范无法覆盖某个平台的独特语义,复杂度会被转移到 custom_extensions 和转换器兼容逻辑中。

3. 多 SQL 方言表达式:同一业务定义保留平台原生写法

字段和指标可以同时携带 ANSI_SQLSNOWFLAKEDATABRICKSBIGQUERYMDXTABLEAUMAQL 等表达式。目标转换器优先选择自己的方言,缺失时回退到 ANSI SQL。

yaml 复制代码
expression:
  dialects:
    - dialect: ANSI_SQL
      expression: LOWER(email)
    - dialect: SNOWFLAKE
      expression: LOWER(email)::VARCHAR
    - dialect: DATABRICKS
      expression: lower(email)

这比在迁移时临时做 SQL 转译更可控,因为每种写法都能在代码评审中显式确认。代价也很直接:多方言副本可能产生漂移。因此项目又在提议 OSSIE_SQL_2026 可移植子集,希望把通用算术、聚合、窗口、空值与过滤语义标准化,并把厂商特性留给扩展方言。

4. AI Context 不是注释,而是语义治理接口

ai_context 可挂在模型、数据集、字段、关系和指标等层级,内容既可以是一段文本,也可以是结构化的 instructionssynonymsexamples。对 Text-to-SQL 或分析 Agent 而言,这提供了三层价值:

  • 消歧:把"GMV、成交额、销售额"等自然语言映射到认证指标;
  • 约束:告诉模型什么场景该用、什么场景不能用某个字段;
  • 示范:用已审核问题或查询给 Agent 提供检索与生成锚点。

需要强调:这些字段只是可传递的上下文元数据,并不自动构成权限控制或防幻觉机制。路线图中的 verified queries、暴露控制、认证与治理钩子尚未完全落地,生产系统仍要在查询网关、数据权限和结果校验层做硬约束。

5. Schema + 语义检查 + SQL 解析的验证链

validation/validate.py 使用 JSON Schema Draft 2020-12、PyYAML 和 sqlglot,当前覆盖:

  • YAML/JSON 结构、类型与枚举;
  • 数据集、字段、指标、关系名称唯一性;
  • 关系两端引用的数据集是否存在;
  • 支持方言的字段与指标 SQL 语法。

MDX、Tableau 和 MAQL 暂不由 sqlglot 解析,会跳过语法检查。代码也尚未成为完整的语义编译器:它不会执行指标,不负责查询规划,关系字段是否真实存在、复合键业务语义和跨数据集指标是否可安全聚合,仍需要更强的 conformance suite 或目标平台验证。

6. 八组参考转换器,Python 与 Java 双栈落地

同日代码树中实际存在 8 个转换器目录:

转换器 主要实现 文件数 测试相关文件 观察重点
dbt Python 13 4 MSI 与 Ossie 双向映射、表达式处理
GoodData Python 15 8 独立模型类型与 round-trip 测试
Honeydew Python 5 1 较轻量的参考实现
Omni Python 33 26 多文件真实布局、属性与往返测试
OrionBelt Python 30 16 OBML、本体映射、无静默丢失测试
Polaris Java 10 1 API Client、Importer、Exporter
Salesforce Java 36 2 配置驱动映射管线与多类 Handler
Snowflake Python 5 2 Ossie 到 Snowflake YAML

仓库共检出 175 个非 Git 文件、约 42,568 行文本,其中 converters/ 占约 35,778 行;另有 61 个 Python 文件、38 个 Java 文件和 28 个测试文件。GitHub 显示的"Python 75.1% / Java 24.9%"主要反映这些参考适配器,不能把语言占比误读为核心规范的运行时架构


🔬 技术架构深度解析

当前架构:Ossie 是中间表示,不是查询引擎

text 复制代码
                 ┌──────────────────── 作者/来源 ────────────────────┐
                 │ dbt / Omni / Salesforce / Snowflake / 手写 YAML │
                 └────────────────────────┬─────────────────────────┘
                                          │ Import Converter
                                          ▼
┌──────────────────────────────────────────────────────────────────────┐
│                    Apache Ossie 中间语义模型                         │
│  version                                                             │
│  ├─ datasets ─ fields ─ physical source                              │
│  ├─ relationships ─ simple/composite keys                            │
│  ├─ metrics ─ multi-dialect expressions                              │
│  ├─ ai_context ─ instructions/synonyms/examples                      │
│  └─ custom_extensions ─ vendor metadata                              │
└───────────────────────────────┬──────────────────────────────────────┘
                                │
               ┌────────────────┼────────────────┐
               │                │                │
               ▼                ▼                ▼
       JSON Schema        语义引用检查       sqlglot 语法检查
               └────────────────┬────────────────┘
                                │ Valid Model
                                ▼
                Git / Catalog / CI / Sync Pipeline
                                │ Export Converter
          ┌─────────────────────┼──────────────────────┐
          ▼                     ▼                      ▼
       BI 平台              数据/指标平台            AI Agent

这个边界很关键:Ossie 解决的是定义、交换与验证,不负责连接数据库执行查询。当前采用者应把它放在 GitOps/CI 管线与平台适配层,而不是把它当作 Cube、MetricFlow 或 BI 查询服务的直接替代品。

数据流:一次导入,验证后向多端发布

text 复制代码
Vendor A Model
    │
    ├─ 1. 导入:标准字段直接映射
    │         厂商特性写入 custom_extensions
    ▼
Ossie YAML/JSON
    │
    ├─ 2. 结构校验:JSON Schema
    ├─ 3. 语义校验:唯一名、关系端点
    ├─ 4. 表达式校验:按方言交给 sqlglot
    ▼
Versioned Semantic Asset
    │
    ├─ 5. 目标方言选择:目标方言 > ANSI_SQL > 警告/失败
    ├─ 6. 还原目标厂商扩展
    ▼
Vendor B / BI / Agent Context

在这个流程里,最难的不是序列化,而是信息损失管理 。Ossie 用 custom_extensions 保存核心规范无法表达的厂商设置;转换器测试则要验证 A → Ossie → A 后的结构和语义等价。Omni、GoodData、OrionBelt 已出现专门的 round-trip/property/no-silent-loss 测试,这是比"能导出一个 YAML"更有意义的成熟度指标。

当前规范与目标架构之间的缺口

层面 当前 0.2.0.dev0 可见能力 路线图目标 采用风险
表达式 多厂商方言并存,sqlglot 做部分语法检查 OSSIE_SQL_2026 可移植子集、明确执行边界 同一指标的多方言版本可能漂移
指标 顶层 metric + SQL 表达式 粒度、聚合方法、派生/累计指标、指标树 跨粒度聚合可能语义不一致
关系 数据集端点、简单/复合键 基数、Join 类型、复杂关系 Fan-out 与重复聚合风险尚需平台处理
本体 已有 ontology 草案与 Flights 示例 概念层、物理映射、非表格模型 结构互通不等于概念互通
执行 无内置查询执行 语义查询语言、参考编译器、SQL 计划 当前不能独立完成问数闭环
治理 Schema、版本字段、Apache 流程 Registry、访问控制、认证、稳定 ID 企业级治理能力仍需外围系统

代码实测:三类示例通过验证

本文在提交 cdf95904 上实际运行验证器,结果为:

输入 Schema 实测结果
examples/tpcds_semantic_model.yaml core-spec/osi-schema.json Validation PASSED
examples/flights.yaml ontology/ontology.json Validation PASSED
本文最小 Sales 模型 core-spec/osi-schema.json Validation PASSED

验证环境为 Python 3.11,依赖 PyYAML、jsonschema 与 sqlglot。由于当前 Hermes 进程已有虚拟环境变量,实测时需清理 VIRTUAL_ENV/PYTHONPATH 后使用隔离的 uv 环境;普通独立终端可按下方虚拟环境方式运行。


📖 README 核心内容摘要

项目要解决的四类碎片化

README 与项目文档把问题归纳得很清楚:

  • Metric Drift:不同工具里的同名 KPI 算法不同;
  • Manual Translation:团队人工迁移、对账语义定义;
  • AI Hallucinations:Agent 面对冲突或缺失的业务逻辑时生成不可靠答案;
  • Integration Debt:每引入一套工具,就多一组脆弱的点对点连接。

对应的解法是把 Ossie 作为单一交换源,通过 Hub-and-Spoke 转换器分发到各平台,并用 ai_context 为 AI 提供业务说明。文档列出了 50+ 参与组织,覆盖 Databricks、dbt Labs、GoodData、Mistral AI、Salesforce、Snowflake、ThoughtSpot 等;这里应理解为项目文档声明的生态参与名单,不等同于每家都已提供生产级兼容实现。

设计哲学

  1. 标准化但可扩展 :核心对象尽量厂商中立,私有能力装入 custom_extensions
  2. 人可读、机可验:用 YAML 方便评审,用 JSON Schema 方便 IDE、CI 和程序验证;
  3. 逻辑与执行解耦:规范描述业务含义,不强制绑定某个数据库或查询引擎;
  4. 渐进采用:先选一个成熟模型试点,不要求一次重写所有平台;
  5. Apache 治理 :重要规范变更要公开讨论、至少 7 天评审,并需要三个绑定 +1 且无否决。

版本与成熟度必须分开看

项目文档称当前开发版本为 0.2.0.dev0、latest released 为 0.1.1,但同日 GitHub API 没有返回正式 Release,标签列表只看到 osi-0.1.1-rc1。这可能是发布流程与仓库页面尚未同步,也可能意味着正式发布仍处在 Apache 孵化流程中。生产采用时应锁定具体 schema 文件与 commit SHA,而不要只依赖 README 中的"latest"措辞。

生态集成现状

README 主清单明确提到 dbt、GoodData、Polaris、Salesforce 等;代码树还包含 Omni、OrionBelt、Honeydew、Snowflake。需要逐个审计方向覆盖度:有的实现双向 import/export,有的只有单向导出;有的测试 round-trip,有的测试量仍较少。因此"目录存在"只能证明参考代码已开始落地,不能直接等价为完整兼容认证。


🚀 快速上手

1. 克隆并准备验证环境

bash 复制代码
git clone https://github.com/apache/ossie.git
cd ossie
python3 -m venv .venv
source .venv/bin/activate
python -m pip install 'pyyaml>=6.0.3' 'jsonschema>=4.26.0' 'sqlglot>=30.12.0'

2. 验证仓库自带的 TPC-DS 模型

bash 复制代码
python validation/validate.py examples/tpcds_semantic_model.yaml
# Validation PASSED: tpcds_semantic_model.yaml

3. 建立一个最小模型

保存为 sales.yaml

yaml 复制代码
version: "0.2.0.dev0"
semantic_model:
  - name: sales
    datasets:
      - name: orders
        source: analytics.public.orders
        primary_key: [order_id]
        fields:
          - name: amount
            expression:
              dialects:
                - dialect: ANSI_SQL
                  expression: amount
    metrics:
      - name: revenue
        expression:
          dialects:
            - dialect: ANSI_SQL
              expression: SUM(orders.amount)
        ai_context:
          synonyms: ["营收", "销售额"]
bash 复制代码
python validation/validate.py sales.yaml
# Validation PASSED: sales.yaml

4. 接入 CI

yaml 复制代码
# .github/workflows/validate-ossie.yml
name: Validate Ossie Model
on: [push, pull_request]
jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.11"
      - run: pip install pyyaml jsonschema sqlglot
      - run: python ossie/validation/validate.py semantic-models/sales.yaml \
             --schema ossie/core-spec/osi-schema.json

更稳妥的企业试点方式是:先把 Ossie 仓库或 schema 固定到特定 commit,在 PR 中评审语义变更;验证通过后再调用目标平台转换器,并对导出物执行平台原生校验与关键指标回归测试。


📊 增长速度与社区热度

增长速度评估

指标 数据 解读
Trending 排名 #1 / 17 当日关注度极高,但不能等同于长期采用率
快照 Stars 1,055 同日 API 补充核验已变为 1,056
今日新增 Stars 未保留 不根据排名或前后 API 差值伪造全天增量
项目年龄 240.02 天 从 2025-11-18 创建时间算至快照日
生命周期平均 4.40 Stars/天 仅是累计基线,不能代表当日增长速度
Fork / Star 13.46% 142 Forks,参与/二次开发信号较强
Open Issues 57 每千 Star 约 54.03 个,反映规范仍在快速讨论与打磨
Commits 210 完整历史核验值
近 7 / 30 天提交 44 / 50 88% 的近 30 天提交集中在最近 7 天,开发显著加速
贡献者 API 分页约 30 Git 历史识别到 36 个 author identity,口径不同

从绝对 Star 看,Ossie 还不是大众级项目;从协作结构看,它更像一个正在进入标准化窗口的行业工程。Top Contributors 中 khush-bhatia 36 次、kurtStirewalt 31 次、karanasher 19 次、sfc-gh-kbhatia 16 次、baruchoxman 15 次,贡献并非完全由单一账号承担。最近提交覆盖 Omni、OrionBelt、dbt、表达式语言、许可证与 ASF 模板,说明热度背后有真实的规范和适配器推进,而不只是 README 宣传。

风险同样明显:57 个 Open Issues、Draft 版本、没有正式 GitHub Release,以及大量核心语义仍在路线图中,意味着接口和模型可能继续变化。综合判断为:短期增长动能高,行业影响潜力高,规范稳定性中低,生产成熟度处于早期试点阶段。

排名来自任务快照;Stars 与语言为同日 GitHub API 补充核验,快照未保留各项目"今日新增 Stars"。列表严格按抓取顺序排列。

# 项目 同日 Stars 主语言 一句话定位
1 apache/ossie 1,056 Python AI、分析与 BI 的厂商中立语义交换规范
2 Nutlope/hallmark 11,393 CSS 面向编码 Agent 的反 AI 同质化设计 Skill
3 OpenCut-app/OpenCut 74,362 TypeScript 开源 CapCut 替代品
4 PostHog/posthog 35,980 Python 分析、回放、实验、日志与 AI 可观测平台
5 openinterpreter/openinterpreter 66,132 Rust 面向开放模型的本地 Coding Agent
6 PrismML-Eng/Bonsai-demo 1,617 Shell PrismML Bonsai 演示项目
7 hasaneyldrm/exercises-dataset 15,231 HTML 1,324 个动作、六语言说明的健身数据集
8 Shubhamsaboo/awesome-llm-apps 123,226 Python 可运行的 Agent 与 RAG 应用合集
9 lobehub/lobehub 80,333 TypeScript AI 团队编排与持续运营平台
10 YimMenu/YimMenuV2 1,532 C++ GTA 5 Enhanced 实验性菜单
11 HKUDS/DeepTutor 27,082 Python 终身个性化 AI 教学系统
12 mattpocock/skills 174,841 Shell 工程师编码 Skills 集合
13 github/copilot-sdk 9,716 Java 将 Copilot Agent 集成到应用的多平台 SDK
14 ibelick/ui-skills 4,503 TypeScript 面向设计工程师的 UI Skills
15 Graphify-Labs/graphify 89,509 Python 把代码、文档与媒体构造成可查询知识图谱
16 codecrafters-io/build-your-own-x 526,623 Markdown 从零重建技术系统的学习资源
17 ossu/computer-science 206,732 HTML 免费、自学型计算机科学课程路径

🎯 适用场景

场景 为什么适合 Ossie 落地建议
多 BI 平台指标治理 用同一份指标、字段和关系定义减少口径漂移 先选收入、活跃用户等少量核心指标试点
dbt / Warehouse / BI 迁移 Hub 格式减少重复手写映射 对转换前后模型做 round-trip 与结果回归
企业 Text-to-SQL / 数据 Agent ai_context 提供同义词、说明与示例 与权限网关、认证指标、查询审核共同使用
数据目录与语义资产管理 YAML 可进 Git,Schema 可进 CI 固定 schema commit,建立 Owner 和 PR 审批规则
软件厂商增加互操作能力 接入一套 Ossie import/export 即可连接更多生态 明确不支持能力与 custom_extensions 策略
行业标准与研究评估 Apache 治理、公开路线图,适合参与规范讨论 重点跟踪粒度、关系基数、表达式语言与 Registry

暂不建议直接采用的情况

  • 需要开箱即用的指标查询 API 或 SQL 执行引擎;
  • 强依赖复杂粒度、累计指标、非等值 Join、权限策略而无法接受自建扩展;
  • 无法锁定 schema 版本,却要求长期稳定兼容;
  • 只使用单一 BI 平台,且不存在跨工具语义迁移问题。

💡 总结

Apache Ossie 的野心,是成为"语义层的 Parquet":不是替代数据库、BI 或指标平台,而是让它们能交换同一套业务意义。它把数据集、关系、指标、多 SQL 方言、AI 上下文和厂商扩展组织成可审查、可验证、可版本化的中间模型,并用 Hub-and-Spoke 把 N 个工具之间的连接复杂度从平方级降为线性级。

今天最值得关注的是方向与生态协作,而不是版本号。八组转换器、50+ 组织名单、近 7 天 44 次提交和 Apache 治理证明项目正在加速;0.2.0.dev0 Draft、缺失的执行引擎、尚未定型的粒度与关系语义,则提醒我们不要把愿景当成完成度。对多平台数据团队,最佳策略不是立即全量迁移,而是锁定 commit,从一个高价值语义模型开始,建立验证、转换和结果回归闭环。


数据来源:GitHub Trending 快照(2026-07-17)、GitHub REST API、Apache Ossie README / docs / core spec / roadmap,以及对提交 cdf95904 的本地代码树与验证器实测。

相关推荐
逛逛GitHub3 小时前
终于有一个蒸馏 Apple 风格的 Skill 了,GitHub 上有 10.5K 人点赞。
github
dong_junshuai7 小时前
# 每天一个开源项目#39 Hallmark:9.5K Stars,58道门禁拒绝AI设计味
github
小弥儿8 小时前
GitHub今日热榜 | 2026-07-16:AI知识库与反AI味设计成今日双主线
人工智能·学习·github
不加糖4358 小时前
CI/CD 与 GitHub Actions 入门
ci/cd·github
gis开发之家8 小时前
《Vue3 从入门到大神32篇》Vue3 源码详解(二):从 GitHub Clone 到断点调试,手把手搭建源码阅读环境
vue.js·前端框架·github·vue3·vue3源码
xiezhr10 小时前
官方文档像天书?这本开源的 WorkBuddy"蓝皮书",或许更适合小白入门
ai·github·开源软件·ai agent·workbuddy
wangruofeng18 小时前
8 小时 10000 星,xAI 把内部编码 Agent 开源了:Grok Build 的架构拆解
开源·github·aigc
胡萝卜术19 小时前
RAG 的知识炼油厂:从原始网页到可检索知识块的工程化之路
面试·架构·github