GEOWIKI中文知识图谱检索⌕
首页 / 术语 / RDFS、OWL、SKOS、SHACL 和 SPARQL 有什么区别?
ENT · VERIFIED

RDFS、OWL、SKOS、SHACL 和 SPARQL 有什么区别?

rdfs owl skos shacl sparql differences

别名:暂无登记别名
DIRECT DEFINITION / 直接定义

RDFS 提供基础类型和层次语义,OWL 表达更丰富的本体公理,SKOS 管理受控词表,SHACL 验证 RDF 数据形状,SPARQL 查询或更新 RDF 图与数据集。它们解决不同层次的问题,可以组合使用。

五种标准快速对比

左右滑动查看完整对比 →
标准核心用途典型构造主要输出
RDFS基础词汇与层次建模Class、subClassOf、domain、range可推导的类型和层次关系
OWL丰富本体与逻辑约束等价、不相交、限制、属性特征逻辑蕴含或不一致判断
SKOS受控词表与分类体系Concept、broader、prefLabel可复用概念方案
SHACL数据图验证NodeShape、PropertyShape、minCountConforms 与验证报告
SPARQL查询和更新SELECT、CONSTRUCT、ASK、UPDATE结果集、RDF 图或数据变更

一套系统可以同时使用五者:RDFS/OWL 描述含义,SKOS 管理术语,SHACL 守住数据入口,SPARQL 提供查询与操作。

RDF 是共同基础

这些标准大多建立在 RDF 数据模型之上。RDF 用 Subject、Predicate、Object 三元组表达事实,并可组成 Graph 或 Dataset。

RDFS、OWL、SKOS 和 SHACL 的词汇自身也能以 RDF 三元组表示;SPARQL 则以图模式匹配这些三元组。序列化为 Turtle、JSON-LD 或 RDF/XML 不改变其抽象语义。

RDFS 是什么

RDF Schema 提供最基础的模式词汇,包括 rdfs:Class、rdfs:subClassOf、rdfs:subPropertyOf、rdfs:domain 和 rdfs:range。它让数据发布者说明资源类别、属性适用范围和层次关系。

例如声明 ex:Engineer rdfs:subClassOf ex:Person 后,一个 Engineer 实例可通过 RDFS 语义被推导为 Person。

RDFS 的 Domain 与 Range

rdfs:domain 和 rdfs:range 主要用于语义推理,不是传统数据库里的拒绝规则。若 ex:worksFor 的 Domain 是 Person,数据出现 ex:robot ex:worksFor ex:company,推理器可能推导 robot 是 Person,而不是报“类型错误”。

因此需要阻止不合格值时,应使用 SHACL 等验证语言,而不是依赖 RDFS Domain/Range。

RDFS 的能力边界

RDFS 能表达类与属性层次,却难以表达“两个类不相交”“恰好一个值”“属性传递”或复杂的类组合。此类需求通常由 OWL 提供。

简单词汇无需为了显得高级而全部升级为复杂 OWL。本体表达能力越强,推理成本和建模要求也越高。

OWL 是什么

OWL 2 是面向 Web 本体的语言,用来定义类、属性、个体及其逻辑关系。它可以表达类等价、不相交、并集、交集、属性限制、逆属性,以及函数型、传递型等属性特征。

OWL 的重点是机器可解释的语义与蕴含。Reasoner 可从显式三元组和公理推导隐含事实,或发现一组公理无法同时满足。

OWL 的开放世界假设

OWL 通常采用 Open World Assumption:图中没有某事实,不等于该事实为假。没有记录某人的邮箱,不能推出此人没有邮箱。

这与许多业务表单的封闭世界校验不同。数据入口要求“每个人必须填写一个邮箱”时,SHACL 的 minCount 更符合预期。

OWL 不使用唯一名称假设

两个不同 IRI 不一定天然表示两个不同个体,除非使用相应公理声明差异。Reasoner 可能通过约束推断它们相同,而不是立即报重复。

数据库式主键唯一和记录去重应由应用、存储约束或 SHACL 管理,不能仅凭 IRI 不同假定 OWL 语义中的个体必然不同。

OWL 中的限制为何不是表单校验

owl:cardinality 1 描述某类成员在模型中的逻辑性质。在开放世界下,缺少显式值可能由未知事实补足;出现多个值也可能导致它们被推断相同,而非生成用户熟悉的字段错误。

若需要逐条指出哪个节点缺字段、值类型错误,应建立 SHACL Shape 并输出 Validation Report。

SKOS 是什么

SKOS 是 Simple Knowledge Organization System,用于表达 Thesaurus、Taxonomy、Subject Heading 和其他 Knowledge Organization System。核心对象是 skos:Concept 与 skos:ConceptScheme。

它提供首选标签、备选标签、隐藏标签,以及 broader、narrower、related 等概念关系,适合管理受控词汇和导航分类。

SKOS Concept 与 OWL Class 的区别

SKOS Concept 是知识组织中的概念资源,OWL Class 是逻辑上由成员构成的类。主题“人工智能”可以是 SKOS Concept,用于标引文章;ex:Person 则可能是 OWL Class,用于描述个体类型。

有些领域会建立二者映射,但不能默认每个分类节点都是需要逻辑实例化的 OWL Class。

SKOS 标签如何使用

skos:prefLabel 表示某语言下的首选名称,skos:altLabel 表示同义或替代写法,skos:hiddenLabel 可用于检索拼写变体但不面向常规展示。

语言标签很重要。同一 Concept 可以分别有中文和英文首选标签,但同一语言中的标签一致性仍应通过数据治理或 SHACL 规则检查。

broader 与 broaderTransitive 的区别

skos:broader 表示直接或常规的上位概念关联,skos:broaderTransitive 用于其传递闭包语义。展示树形导航时通常应区分直接父级与所有祖先。

SKOS 概念结构也不保证天然是一棵树:一个概念可以有多个 broader 关系,甚至错误数据可能形成环,需要额外验证。

SHACL 是什么

SHACL 即 Shapes Constraint Language,用于描述并验证 RDF Graph。Shape 指定哪些节点是目标,以及这些节点或其属性值需要满足的条件。

验证结果包含是否 Conforms,以及焦点节点、结果路径、约束组件、严重级别和消息等诊断信息,适合数据导入、API 契约和质量流水线。

NodeShape 与 PropertyShape

NodeShape 主要约束 Focus Node 本身,PropertyShape 通过 sh:path 约束可达属性值。例如 Person NodeShape 可包含 email PropertyShape,并要求 sh:minCount 1、特定 Datatype 或 Pattern。

把形状分开复用,可以让同一属性规则应用于多个数据入口,同时保持验证报告定位明确。

SHACL Core 与 SHACL-SPARQL

SHACL Core 提供常用约束组件,例如数量、类型、正则、允许值、闭合形状和逻辑组合。SHACL-SPARQL 则用 SPARQL 查询表达 Core 无法覆盖的高级规则。

优先使用 Core 通常更易移植和优化。只有跨节点聚合或领域逻辑确实需要时,再引入 SPARQL-based Constraint。

SHACL 不负责自动修复

SHACL Validator 识别不符合项并生成报告,但规范本身不保证自动把错误数据变正确。修复策略仍需应用定义,例如拒绝写入、转入隔离区或请求人工补全。

验证前后应保存 Data Graph、Shapes Graph 和引擎版本,避免规则升级后无法解释旧报告。

SPARQL 是什么

SPARQL 是 RDF Query Language 与相关协议集合。它使用 Triple Pattern 和 Graph Pattern 从 RDF Graph 或 Dataset 中匹配数据。

它既能返回表格结果,也能构造 RDF 图、回答布尔条件或执行更新。SPARQL 本身不是本体,也不会自动赋予查询中术语新的逻辑语义。

SELECT、CONSTRUCT、ASK 与 DESCRIBE

SELECT 返回变量绑定表;CONSTRUCT 按模板生成 RDF Graph;ASK 返回是否存在匹配;DESCRIBE 返回关于资源的 RDF 图,但具体描述范围可能依实现而异。

数据交换需要稳定结构时,优先使用显式 CONSTRUCT,而不是假设不同 SPARQL Endpoint 的 DESCRIBE 结果完全一致。

SPARQL Update 是什么

SPARQL 1.1 Update 包括 INSERT、DELETE、LOAD、CLEAR 等图数据操作。它改变 Dataset,而普通 Query 只读取或构造结果。

生产 Endpoint 必须分别控制查询与更新权限,并限制资源、超时和图范围。允许 SELECT 不应自动意味着允许 UPDATE。

SPARQL 查询是否自动包含推理结果

取决于 Triple Store 是否配置 Entailment Regime、物化推理或查询重写。裸 SPARQL 只对 Endpoint 暴露的数据集求值,不保证自动执行 RDFS 或 OWL 推理。

同一查询在原始图和推理闭包上可能返回不同结果,API 文档必须说明推理模式。

推理与验证的关键区别

推理回答“根据语义还能推出什么”,验证回答“指定节点是否满足数据形状”。RDFS/OWL 可以补充隐含类型,SHACL 可以指出 email 缺失。

常见流水线会先应用预期的推理,再对扩展后的 Data Graph 执行 SHACL;也可能只验证显式数据。顺序不同会改变结果,必须固定并测试。

本体与词表的区别

本体通常用 RDFS/OWL 精确定义领域实体和关系语义;SKOS 词表强调概念标引、标签与较轻量的上下位导航。

一个医疗系统可以用 OWL 表达疾病与病理关系,同时用 SKOS 管理面向搜索的同义词和分类入口,两者通过清晰映射协作。

Shape 与 Schema 的区别

“Schema”一词可能指 RDFS 语义词汇、数据库结构或 API Schema;SHACL Shape 则明确描述 RDF 节点需要符合的约束和目标。

不要仅看到名称中有 Schema 就认为 RDFS 会拒绝坏数据。RDFS 更接近语义声明,SHACL 更接近可执行验证契约。

典型组合架构

先用 SKOS 维护术语与多语言标签;用 RDFS 定义基础类和属性;需要丰富逻辑时加入 OWL;数据摄入前后用 SHACL 验证;应用通过 SPARQL 查询或更新 Dataset。

推理结果、验证报告和业务数据可放在不同 Named Graph 中,便于追踪来源和避免把诊断结果混成领域事实。

示例:人员知识图谱

RDFS 声明 Employee 是 Person 子类;OWL 声明 hasManager 是 Employee 间的关系并加入逻辑特征;SKOS 管理职位分类;SHACL 要求员工恰有一个 employeeId;SPARQL 查询某部门的员工和职位标签。

五种技术没有谁“取代”谁,它们分别处理含义、分类、质量和访问。

示例:内容知识库

SKOS Concept 表示主题标签与同义词;RDFS/OWL 表示 Article、Author、Organization 关系;SHACL 验证每篇文章必须有标题、语言和来源;SPARQL CONSTRUCT 生成搜索索引所需子图。

若分类结构不允许环,可用 SHACL-SPARQL 检测,而不是假设 SKOS broader 自然形成合法树。

版本与兼容性如何管理

为 Ontology、Concept Scheme 和 Shapes Graph 分配独立版本 IRI 或发布版本。数据记录自己使用的词汇版本,验证报告记录对应 Shape 版本。

新增 Subclass 可能改变推理结果,收紧 minCount 会让旧数据失败;两者都属于需要回归测试的语义变更。

测试方法

为推理建立正向与反向 Entailment 用例,为 SHACL 建立应通过与应失败的数据图,为 SPARQL 保存期望结果集,为 SKOS 检查标签语言和层次完整性。

还要在实际 Triple Store 和 Reasoner 上测试,因为支持的 OWL Profile、推理方式与 SHACL 扩展可能不同。

常见错误

用 RDFS Range 当输入类型校验、用 OWL Cardinality 当必填字段、把每个 SKOS Concept 都建成 OWL Class、把 SPARQL ASK 当持久约束,以及验证时不记录 Shapes Graph 版本,都是常见错误。

另一个问题是把 Inference 生成的三元组写回原始图却不标记来源,导致后续无法区分声明事实与推导事实。

选型结论

只需基础类型和层次,用 RDFS;需要形式化本体与逻辑推理,用 OWL;管理受控词表和分类概念,用 SKOS;需要可执行数据质量规则和报告,用 SHACL;需要读取、构图或更新 RDF 数据,用 SPARQL。

系统最重要的是明确每层的语义假设、执行顺序和版本,而不是选一个标准承担所有职责。

W3C 标准资料

  • W3C:RDF Schema 1.1 — https://www.w3.org/TR/rdf-schema/
  • W3C:OWL 2 Overview — https://www.w3.org/TR/owl2-overview/
  • W3C:OWL 2 Primer — https://www.w3.org/TR/owl2-primer/
  • W3C:SKOS Reference — https://www.w3.org/TR/skos-reference/
  • W3C:Shapes Constraint Language — https://www.w3.org/TR/shacl/
  • W3C:SPARQL 1.1 Overview — https://www.w3.org/TR/sparql11-overview/
  • W3C:RDF 1.1 Concepts — https://www.w3.org/TR/rdf11-concepts/

参考资料

当前词条的独立参考资料仍待补充;正文中的可核验规范链接已保留。