今天在 GitHub Trending 上看到一个有意思的项目:Apache Ossie,它试图用一套统一的语义模型规范解决 AI 时代数据碎片化的核心痛点——让 AI Agent、BI 平台和数据工具说同一种"数据语言"。

一、项目概述

Apache Ossie(Open Semantic Interchange,原名 OSI)是 Apache 软件基金会的孵化项目,目标是制定一套供应商无关(vendor-agnostic)的语义模型规范,使数据定义在 AI Agent、BI 平台、分析工具之间流转时保持完全一致。

核心问题解决:

  • 同一个 KPI 在不同工具中定义不同,团队耗费大量时间手动对齐
  • AI Agent 生成的分析结果依赖不一致的业务逻辑,可靠性存疑
  • 数据平台之间的互操作成本极高

Ossie 的答案: 提供一套 JSON/YAML 格式的语义模型规范,任何工具都可以读写,充当跨生态系统的"单一真实数据来源"。

二、技术架构

Ossie 仓库的结构清晰地反映了其设计思路:

core-spec/       — 核心规范文档与机器可读 schema
converters/      — 与 dbt、GoodData、Polaris 等工具的双向转换器
examples/        — 完整的 TPC-DS 示例语义模型
validation/      — 语义模型验证工具
docs/            — 项目文档

核心规范文件

规范核心定义在 core-spec/spec.md 和机器可读的 core-spec/spec.yamlosi-schema.json 中。Ossie 规范本身采用 JSON Schema 构建,这意味着:

// osi-schema.json 中的基础结构示例
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "metrics": {
      "type": "array",
      "items": { "$ref": "#/definitions/Metric" }
    },
    "dimensions": {
      "type": "array",
      "items": { "$ref": "#/definitions/Dimension" }
    }
  }
}

转换器生态

converters/ 目录提供了与主流数据工具的桥接能力,参考实现包括:

  • dbt 转换器:将 dbt 的 schema.yml 模型定义 ↔ Ossie 语义模型互转
  • GoodData 转换器:对接 GoodData 的语义层
  • Polaris 转换器:支持 Salesforce Polaris 分析平台
  • Salesforce 转换器:打通 Salesforce Einstein Analytics

每种转换器都遵循统一的接口模式,使新增工具支持的成本降到最低。

三、快速开始

环境要求

  • Python 3.9+
  • Git

安装与验证

# 克隆仓库
git clone https://github.com/apache/ossie.git
cd ossie

# 安装 Python 验证工具(可选)
pip install -r requirements.txt

# 验证语义模型示例
python -m validation.validate examples/tpc-ds-model.yaml

使用已有转换器

# 假设有一个 dbt 项目,运行 dbt → Ossie 转换
python -m converters.dbt.to_ossie path/to/dbt_project/schema.yml

# 将生成的 .yaml 推送到 BI 平台
python -m converters.gooddata.from_ossie output-model.yaml

四、实战场景

场景一:统一 AI 分析 Agent 的数据定义

当企业部署了多个 AI Agent 分别对接不同 BI 工具时,Ossie 可以作为所有 Agent 的"数据字典标准":

# ossie-semantic-model.yaml
model:
  name: revenue_metrics
  version: "1.0"
  
metrics:
  - name: total_revenue
    description: "含税总收入,按自然月汇总"
    aggregation: SUM
    expression: order_amount + tax_amount
    
  - name: avg_order_value
    description: "客单价,不含退款订单"
    aggregation: AVG
    expression: order_amount / order_count

dimensions:
  - name: product_category
    description: "商品一级分类"
    type: categorical

场景二:跨工具的数据一致性保障

在 dbt + Looker + 自研 AI 分析平台的组合中:

dbt model (schema.yml)
       ↓ dbt → Ossie converter
Ossie Semantic Model (标准 YAML)
       ↓ Ossie → Looker converter
Looker LookML
       ↓ Ossie → Agent converter
AI Agent Prompt Context

三端读取同一套 Ossie 模型定义,从根本上消除"数据打架"的问题。

五、常见问题

Q: Ossie 规范是否与现有的 BI 工具直接兼容? A: 不直接兼容——Ossie 是规范层,需要通过 converters/ 中的适配器与具体工具对接。转换器生态是 Ossie 落地的关键。

Q: 如何贡献新的转换器? A: 参考 CONTRIBUTING.md,主要工作是在 converters/ 下实现两个方向:to_ossie.py(将外部格式转为 Ossie)和 from_ossie.py(将 Ossie 转回外部格式)。

Q: Ossie 规范与 Data Contract(数据契约)有何区别? A: 数据契约通常指 API/表级别的Schema协议,而 Ossie 更侧重于语义层——定义"收入"“用户"等业务概念在计算层面的统一口径,更接近 BI 语义层标准。

六、总结

Apache Ossie 切入了一个非常实在的痛点:数据工具越来越多,但数据定义的一致性保障几乎完全依赖人工。Ossie 用一套开放的、供应商无关的规范来充当"语义层的事实标准”,思路清晰且路线务实。随着 AI Agent 在数据分析领域快速普及,一套能被 AI 可靠理解和使用的语义规范,其战略价值会越来越突出。

如果你正在构建数据平台、AI 分析产品,或需要打通多个 BI 工具的数据定义墙,Apache Ossie 值得关注和参与。