本体建模与知识表示入门

OWL/RDF/RDFS 基础与企业领域建模实战 | 2026-02

一、什么是本体(Ontology)

本体是对某个领域中概念、属性和关系的形式化描述。它回答的核心问题是:"这个领域里有哪些东西?它们之间是什么关系?有什么规则和约束?"

本体与数据库 Schema 的区别:

维度 数据库 Schema 本体
设计目标 数据存储与查询效率 知识表示与推理
表达能力 表/列/外键 类/属性/公理/推理规则
开放性 封闭世界假设 开放世界假设
演化性 变更成本高 支持渐进式扩展
推理能力 支持自动推理

本体的层级:

顶层本体(Upper Ontology)
  |  通用概念:时间、空间、事件、物质
  |  例:SUMO、BFO、DOLCE
  v
领域本体(Domain Ontology)
  |  特定行业:金融、医疗、法律
  |  例:FIBO(金融)、SNOMED(医学)
  v
应用本体(Application Ontology)
  |  特定系统:某公司的风控图谱 Schema
  v

二、RDF:知识表示的基础

2.1 RDF 三元组

RDF(Resource Description Framework)是 W3C 标准的知识表示框架,以"三元组"为基本单位:

(主语 Subject) -- (谓语 Predicate) -- (宾语 Object)
(张三)         -- (工作于)          -- (灵阙科技)

每个元素用 URI 标识:

# Turtle 语法(RDF 最常用的文本格式)
@prefix ex: <http://example.org/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .

ex:zhangsan a foaf:Person ;
    foaf:name "张三" ;
    ex:worksAt ex:lingque_tech ;
    ex:age 30 .

ex:lingque_tech a ex:Company ;
    foaf:name "灵阙科技" ;
    ex:locatedIn ex:chengdu .

2.2 RDF 数据类型

类型 示例 说明
URI 资源 ex:zhangsan 指向一个实体
字面量(Literal) "张三", 30, "2024-01-01"^^xsd:date 具体值
空白节点 _:addr1 匿名中间节点

2.3 常用命名空间

rdf:   http://www.w3.org/1999/02/22-rdf-syntax-ns#
rdfs:  http://www.w3.org/2000/01/rdf-schema#
owl:   http://www.w3.org/2002/07/owl#
xsd:   http://www.w3.org/2001/XMLSchema#
foaf:  http://xmlns.com/foaf/0.1/
skos:  http://www.w3.org/2004/02/skos/core#
dc:    http://purl.org/dc/elements/1.1/

三、RDFS:给 RDF 加上"类型系统"

RDFS(RDF Schema)在 RDF 之上添加了类层级和属性约束:

@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix ex: <http://example.org/> .

# 类定义与继承
ex:Person a rdfs:Class .
ex:Employee a rdfs:Class ;
    rdfs:subClassOf ex:Person .
ex:Manager a rdfs:Class ;
    rdfs:subClassOf ex:Employee .

# 属性的定义域与值域
ex:worksAt a rdf:Property ;
    rdfs:domain ex:Person ;
    rdfs:range ex:Company .

ex:salary a rdf:Property ;
    rdfs:domain ex:Employee ;
    rdfs:range xsd:decimal .

RDFS 核心词汇:

词汇 用途 示例
rdfs:Class 定义类 ex:Person a rdfs:Class
rdfs:subClassOf 类继承 ex:Employee rdfs:subClassOf ex:Person
rdfs:domain 属性的定义域 ex:worksAt rdfs:domain ex:Person
rdfs:range 属性的值域 ex:worksAt rdfs:range ex:Company
rdfs:label 人可读标签 ex:Person rdfs:label "人员"@zh
rdfs:comment 说明注释 ex:Person rdfs:comment "自然人实体"@zh

四、OWL:完整的本体语言

OWL(Web Ontology Language)是 RDFS 的超集,增加了丰富的逻辑表达能力:

4.1 OWL 类构造

@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix ex: <http://example.org/> .

# 等价类
ex:Company owl:equivalentClass ex:Enterprise .

# 不相交类(人和公司不能是同一个实体)
ex:Person owl:disjointWith ex:Company .

# 枚举类
ex:RiskLevel owl:oneOf (ex:Low ex:Medium ex:High ex:Critical) .

# 交集类(成都的员工 = 员工 AND 住在成都的人)
ex:ChengduEmployee owl:intersectionOf (
    ex:Employee
    [ a owl:Restriction ;
      owl:onProperty ex:livesIn ;
      owl:hasValue ex:Chengdu ]
) .

4.2 OWL 属性特征

# 函数属性(一个人只有一个身份证号)
ex:idNumber a owl:FunctionalProperty .

# 逆属性
ex:employs owl:inverseOf ex:worksAt .

# 传递属性(A 是 B 的上级,B 是 C 的上级,则 A 是 C 的上级)
ex:supervises a owl:TransitiveProperty .

# 对称属性
ex:relatedTo a owl:SymmetricProperty .

# 属性基数约束(一个公司必须有且只有一个法人代表)
ex:Company rdfs:subClassOf [
    a owl:Restriction ;
    owl:onProperty ex:legalRepresentative ;
    owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
    owl:onClass ex:Person
] .

4.3 OWL 子语言对比

特性 OWL Lite OWL DL OWL Full
类层级
属性约束 基础 完整 完整
逻辑表达 有限 描述逻辑 无限制
推理可判定性
推理复杂度 中-高 不保证终止
适用场景 简单分类 企业本体 学术研究

实际项目中,OWL DL 是最佳平衡点:表达能力足够,且推理可判定。

五、Protege 工具实战

Protege 是斯坦福大学开发的开源本体编辑器,是本体建模的事实标准工具。

5.1 安装与启动

# 下载(https://protege.stanford.edu/)
# macOS
brew install --cask protege

# 或直接下载 zip 解压运行

5.2 建模工作流

Step 1: 创建项目
  File -> New Ontology -> 设置 IRI (http://example.org/finance-risk)

Step 2: 定义类层级
  Classes Tab -> 右键 owl:Thing -> Add Subclass
  构建层级:
    Thing
    ├── Agent
    │   ├── Person
    │   └── Organization
    │       ├── Company
    │       └── Government
    ├── FinancialInstrument
    │   ├── Loan
    │   ├── Bond
    │   └── Equity
    └── Event
        ├── Transaction
        └── RiskEvent

Step 3: 定义属性
  Object Properties Tab -> 添加对象属性
    hasLegalRep: Company -> Person
    guarantees: Agent -> Agent
    invests: Agent -> Company

  Data Properties Tab -> 添加数据属性
    hasName: Agent -> xsd:string
    hasAmount: FinancialInstrument -> xsd:decimal
    hasDate: Event -> xsd:dateTime

Step 4: 添加约束
  选择 Company -> Description -> 添加 Restriction
    hasLegalRep exactly 1 Person
    hasName min 1

Step 5: 推理验证
  Reasoner -> HermiT -> Start Reasoner
  检查:不一致类、推断的子类关系

5.3 导出格式

格式 扩展名 用途
RDF/XML .owl 标准交换格式
Turtle .ttl 人可读性最佳
JSON-LD .jsonld Web 友好
Manchester Syntax .omn 最接近自然语言

六、Schema 设计方法论对比

方法 代表 优点 缺点 适用场景
RDF/OWL W3C 语义 Web 标准化、可推理 学习曲线高 跨组织数据集成
Property Graph Neo4j/LPG 直觉、高性能 无标准推理 应用级知识图谱
JSON Schema OpenAPI 开发者友好 无关系语义 API 契约
ER Model 关系数据库 成熟、工具丰富 关系表达弱 传统数据建模

实际项目建议:

  • 若需要跨组织数据共享或标准化推理 -> OWL/RDF
  • 若是单一组织内的应用级图谱 -> Property Graph(Neo4j Cypher)
  • 折中方案:用 OWL 做概念建模,用 Property Graph 做存储实现

七、企业领域建模实战示例

以"供应链合规"领域为例:

@prefix scm: <http://example.org/supply-chain#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

# 核心类
scm:Supplier a owl:Class ;
    rdfs:subClassOf scm:Organization ;
    rdfs:label "供应商"@zh ;
    rdfs:comment "提供原材料或服务的组织实体"@zh .

scm:Product a owl:Class ;
    rdfs:label "产品"@zh .

scm:Contract a owl:Class ;
    rdfs:label "合同"@zh .

scm:ComplianceCertification a owl:Class ;
    owl:oneOf (scm:ISO9001 scm:ISO14001 scm:ISO27001 scm:GDPR) .

# 属性定义
scm:supplies a owl:ObjectProperty ;
    rdfs:domain scm:Supplier ;
    rdfs:range scm:Product ;
    rdfs:label "供货"@zh .

scm:hasCertification a owl:ObjectProperty ;
    rdfs:domain scm:Supplier ;
    rdfs:range scm:ComplianceCertification .

scm:contractValue a owl:DatatypeProperty, owl:FunctionalProperty ;
    rdfs:domain scm:Contract ;
    rdfs:range xsd:decimal .

# 业务规则:关键供应商必须至少持有一项合规认证
scm:CriticalSupplier a owl:Class ;
    rdfs:subClassOf scm:Supplier ;
    rdfs:subClassOf [
        a owl:Restriction ;
        owl:onProperty scm:hasCertification ;
        owl:minCardinality "1"^^xsd:nonNegativeInteger
    ] .

八、从本体到知识图谱的桥梁

本体(T-Box / Schema 层)        知识图谱(A-Box / 实例层)
  |                                |
  | 定义类、属性、约束              | 存储具体实体和关系
  | Person, Company, worksAt       | 张三, 灵阙科技, 张三-worksAt->灵阙
  |                                |
  | OWL/RDFS 描述                  | RDF 三元组 或 Property Graph
  |                                |
  └────────── 推理引擎 ────────────┘
               |
    推断隐含知识(如:张三是 Employee 的实例,
    因为 Employee subClassOf Person 且张三有 worksAt 关系)

本体设计检查清单:

  1. 是否覆盖了目标场景的核心概念和关系
  2. 类层级是否清晰,避免多重继承导致的歧义
  3. 属性的定义域和值域是否准确
  4. 关键业务规则是否用约束表达
  5. 是否复用了已有的标准本体(FOAF、Dublin Core、FIBO)
  6. 是否在 Protege 中通过推理器验证了一致性

Maurice | maurice_wen@proton.me