今天在 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.yaml 及 osi-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 值得关注和参与。