语义不被存储绑架
建模层产出的是与存储无关的语义契约。换存储、换引擎,本体资产依然完整可迁移——不用把业务定义重新写一遍。
业务分析师在建模层定义「一个订单必须关联至少一个客户」,数据库工程师在映射层决定这条约束用图索引还是约束校验实现—— 两者互不阻塞。这就是解耦要解决的问题。
架构不是画出来的分层图,而是被具体冲突逼出来的取舍。下面三条决定了 OntoL 为什么这样分层。
建模层产出的是与存储无关的语义契约。换存储、换引擎,本体资产依然完整可迁移——不用把业务定义重新写一遍。
推演在数据副本上进行,结果确认后再决定是否回写。任何一次「如果这样会怎样」的假设,都不该留下副作用。
每条结论都要能回答「怎么推出来的」。不可解释的推理在生产环境里等于不可用,尤其是在合规与工程校验场景。
自下而上:映射层对齐物理存储,建模层定义语义,服务层对外发布,应用层消费能力。每一层只依赖下一层的契约,不依赖实现。
| 层级 | 负责什么 | 不负责什么 |
|---|---|---|
| 应用层 | 面向具体业务的交互形态:问答、检索、编目、推演界面 | 不定义概念与约束 |
| 服务层 Service | 本体的发布、版本、权限、API 与增量 diff 消费 | 不做语义推理 |
| 建模层 Modeling | 类、关系、属性的定义与约束规则,OWL / Turtle 序列化 | 不关心数据存在哪、怎么存 |
| 映射层 Mapping | 把语义契约落到具体后端:表、字段、外键与索引 | 不修改语义定义 |
为什么要解耦? 语义定义不该被存储技术绑架。建模层产出的是与存储无关的语义契约, 映射层负责把它落到具体后端;换存储、换引擎,本体资产依然完整可迁移。
以「工程变更影响评估」为例:设计表某一处条件变化后,系统沿关系传播状态,最终给出一份带推理链路的结论清单。
变更被表达为一次本体层的条件修改,而不是散落在若干张表里的字段更新。变更点唯一、可定位。
推理机在数据副本上沿对象属性与约束规则逐跳传播。传播范围由本体定义,而不是由人工圈定。
每一跳都触发相关约束校验。逻辑一致性冲突会在此暴露,而不是等到下游工序返工。
结论附带完整推理链路:为什么不过、错在哪一环、经过哪些中间对象。确认后再决定是否回写源数据。
传统做法是「写一段脚本核对两张表」,范围靠人圈、覆盖靠自觉,出了问题只能整段重跑。 本体做法的差别在于:范围由语义定义推导,每条结论都带链路,所以可以精确回答「为什么不过」。
我们主张分层协作:OWL 本体负责语义层定义与一致性验证,属性图数据库负责存储计算层的高性能查询。选型时先想清楚要解决的是「说清楚」还是「查得快」。
| 维度 | OntoL · 本体论路线 | 图数据库规则引擎(如 Neo4j) |
|---|---|---|
| 核心能力 | 逻辑一致性检测、概念约束验证、开放世界假设 | 高性能图查询、时序规则、实时风控 |
| 推理方式 | 演绎推理,完备且可预期 | 产生式规则,依赖人工覆盖 |
| 适用场景 | 跨系统语义对齐、复杂概念继承、知识不完备场景 | 百亿级边实时查询、毫秒级响应 |
| 标准化 | W3C 标准栈(RDF / OWL / SPARQL) | 厂商语法异构(Cypher / GSQL / Gremlin) |
| 角色定位 | 语义层 · 定义「是什么」与「为什么」 | 存储层 · 负责「查得快」 |
| 典型问题 | 「这两个系统的『客户』是不是同一个东西?」 | 「这个客户关联了多少层股权?」 |
面向政企客户的私有化交付,同时支持云原生部署。产品采用内存图数据库,应用与数据库均支持水平扩展。
部署在客户自有环境,数据不出域
已适配主流国产操作系统、数据库与芯片架构
RESTful API 全量开放,SSO / LDAP 统一认证
应用与内存图数据库均可横向扩容
30 分钟场景与口径梳理,给出本体结构草案建议,以及一份可落地的 PoC 验证方案与选型参考。