
如何用Apache Ossie本体定义企业业务概念Person与Salary案例【免费下载链接】ossieApache Ossie, industry wide specification effort to standardize how we exchange semantic metadata across analytics, AI and BI platforms, providing a vendor neutral, single source of truth for semantic data项目地址: https://gitcode.com/GitHub_Trending/osi1/ossieApache Ossie 是一个厂商中立的开源语义标准它的**本体Ontology**能力让你可以用统一的语言定义企业业务概念。本文用官方规格中最经典的Person人与 Salary薪资案例手把手演示如何把某位员工挣多少钱这类业务规则变成一份任何 BI 平台和 AI 工具都能读懂的本体定义。全程只需理解 4 个核心字段无需写一行 SQL 也能上手 如上图所示Ossie 将数据语义分为三层底部的物理层由各数据库的原生 SQL 承载中间的逻辑层由 Ossie 核心语义模型定义数据集与指标而最顶层的**本体层Ontological Layer**正是本文主角——它用概念、关系和业务规则描述企业业务世界。为什么需要本体层告别语义碎片化同一个 KPI 在不同工具里定义不同、AI 因业务口径不一致而幻觉……这些是数据团队的日常痛点。Ossie 本体层提供了一套企业范围内的概念词汇表痛点本体层如何解决指标口径不一致概念Concept给出唯一业务定义AI 理解偏差verbalizes口头化模式 ai_context让大模型可靠解读跨系统翻译成本高本体可映射ontology mappings到任意逻辑模型官方对它的定义是本体是对企业数据的概念化模型用概念、关系和业务规则来描述企业。完整说明见 ontology/ontology.md。30秒入门概念只有两种Ossie 本体中的所有业务名词都叫概念Concept只有两种类型EntityType实体类型现实世界中需要用其他信息来指认的对象比如Person、Company、Order。所有实体隐式继承内置概念Any。ValueType值类型带有业务语义的数据类型比如SocialSecurityNr社保号本质是 9 位整数继承内置的Integer。每个概念声明时只需两个必填字段字段说明例子concept概念唯一名称PersontypeEntityType或ValueTypeEntityType可选字段则赋予概念业务能力extends继承、identify_by首选标识、derived_by派生规则、requires业务约束。案例实操建模Person earns Salary第一步声明概念并建立关系官方规格中的示例片段是这样的ontology/ontology.mdontology: - concept: Person type: EntityType identify_by: [ nr ] relationships: - name: nr roles: - concept: SocialSecurityNr verbalizes: [ {Person} is identified by {SocialSecurityNr} ] multiplicity: OneToOne - name: earns roles: - concept: Salary multiplicity: ManyToOne verbalizes: [ {Person} earns {Salary} ]读懂这段 YAML 的 4 个关键点关系挂在概念下earns声明在Person名下关系全名即Person.earns这种点连接命名和面向对象语言一脉相承。roles 决定关系形状Person自动扮演第一个角色Salary扮演第二个角色形成二元关系。verbalizes 是给 AI 的翻译器每个数据链接都会被口头化为 Person earns Salary 这样的自然语言句式AI 代理据此可靠地生成和解读查询。multiplicity 表达基数约束ManyToOne声明每个人最多挣一份薪资——这正是业务规则的声明式写法。OneToOne则用于Person.nr每人最多一个社保号且每个社保号只对应一人。第二步用表达式注入业务规则本体不只是结构图还能声明约束与派生。例如限定社保号取值范围- concept: SocialSecurityNr type: ValueType extends: [Integer] requires: [ 0 SocialSecurityNr, SocialSecurityNr 999999999 ]更妙的是派生概念。想区分有收入的人一行搞定- concept: Employee type: EntityType extends: [Person] derived_by: [ EXISTS ( Person.earns ) ]含义即凡是有薪资链接的Person自动归入Employee概念——就像数据库视图只是用业务语言书写。同理derived_by也能定义派生关系比如基于收入与申报状态推导出Person.taxed_at适用税率的链接。第三步把本体映射到真实数据定义完天上的概念还要落到地上的表。本体映射concept mappings用 SQL 表达式把逻辑模型的字段填充到概念中concept_mappings: - concept: Person object_mappings: - expression: PERSONS.SSN这行声明把PERSONS表的SSN字段映射为Person对象——因为Person已声明identify_by: [ nr ]系统自动通过标识关系完成对象定位。对复合标识的实体如订单行项还可嵌套referent_mappings逐层引用细节参见 ontology/ontology.md 的 Ontology mappings 章节。规格、校验与工具文件都在这内容路径用途本体规格说明ontology/ontology.md概念/关系/映射的完整定义与示例本体 JSON Schemaontology/ontology.json机器可读的校验模式核心语义模型规格core-spec/spec.md逻辑层的 dataset/field/metric 定义校验脚本validation/validate.py校验你的模型是否符合规格本体转换器converters/ontology/Palantir 等格式与 Ossie 本体互转完整语义模型示例examples/tpcds_semantic_model.yamlTPC-DS 完整模型可对照学习本体转换器还支持将 Palantir 本体导出zip 包一键转为 Ossie 合规的 YAML用法见 converters/ontology/README.md。小结4步写出你的第一个企业本体选概念圈定核心业务名词判断每个是实体还是值类型建关系用rolesverbalizesmultiplicity把名词连成业务句子加规则用requires声明约束用derived_by声明派生逻辑落数据用concept_mappings把概念对接到真实表字段再跑 validation/validate.py 校验。当你的Person与Salary被写成一份厂商中立的 Ossie YAML 后BI 工具、AI 代理与数据平台将共享同一份业务真相——这就是 Apache Ossie 本体层的全部价值 ✨【免费下载链接】ossieApache Ossie, industry wide specification effort to standardize how we exchange semantic metadata across analytics, AI and BI platforms, providing a vendor neutral, single source of truth for semantic data项目地址: https://gitcode.com/GitHub_Trending/osi1/ossie创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考