SHACL 1.2 配置文件化

W3C 首次公开工作草案

关于本文档的更多详细信息
本版本:
https://www.w3.org/TR/2026/WD-shacl12-profiling-20260702/
最新发布版本:
https://www.w3.org/TR/shacl12-profiling/
最新编辑草案:
https://w3c.github.io/data-shapes/shacl12-profiling/
历史:
https://www.w3.org/standards/history/shacl12-profiling/
提交历史
编辑:
(KurrawongAI)
(美国国家标准与技术研究院)
(Inria)
(JPMorgan Chase & Co.)
(Corning)
反馈:
GitHub w3c/data-shapes (拉取请求新建议题未关闭议题)

摘要

本文档定义了 SHACL 配置文件化

SHACL,即形状约束语言,是一种用于描述 RDF 图结构的语言。 SHACL 可用于多种用途,例如验证、推理、 领域建模、生成本体以告知其他代理、构建用户 界面、生成代码,以及集成数据。

SHACL 配置文件化定义了 SHACL 形状约束语言中的元素,这些元素用于支持 SHACL 的 配置文件 以及使用 SHACL 进行配置文件化。本文档的范围限于 RDF 图的配置文件化,包括 包含 SHACL 形状的图。

本规范由 数据形状工作组发布。

本文档的状态

本节描述了本文档在发布时的状态。 当前 W3C 出版物列表以及本技术报告的最新修订版本可在 W3C 标准和草案 索引中找到。

本文档由 数据形状工作组作为 首次公开工作草案发布,并使用 推荐标准 轨道

作为 首次公开工作草案发布,并不意味着获得 W3C 及其会员的认可。

这是一份草案文档,随时可能被其他文档更新、替换或废弃。 除作为进行中的工作引用之外,不应以其他方式引用本文档。

本文档由一个遵循 W3C 专利 政策运作的小组制作。 W3C 维护着一份 与该小组交付成果相关的任何专利 披露的公开列表; 该页面还包括 披露专利的说明。任何实际知晓某项专利,并认为该专利包含 必要权利要求的个人, 必须根据 W3C 专利政策第 6 节 披露相关信息。

本文档受 2025 年 8 月 18 日 W3C 流程文档约束。

SHACL 规范

本规范是 SHACL 1.2 规范系列的一部分。有关这些规范的更详细 介绍,请参见 SHACL 1.2 概览

这些规范如下:

工作草案:

SHACL 1.2 Core
定义 SHACL 的核心
SHACL 1.2 SPARQL 扩展
定义 SHACL 中与 SPARQL 相关的扩展
SHACL 1.2 节点表达式
定义在 SHACL 中用于确定焦点节点的图表达式
SHACL 1.2 规则
定义 SHACL 基于规则的推理方法
SHACL 1.2 UI
定义 SHACL 在用户界面生成中的使用
SHACL 1.2 配置文件化
定义使用 SHACL 对数据(包括 SHACL 数据)进行配置文件化

工作组说明草案:

SHACL 1.2 概览
概述 SHACL 规范集合
SHACL 1.2 紧凑语法
定义一种用于表达 SHACL 概念的 RDF 语法

实现者可以通过成功通过 SHACL 1.2 测试套件 的测试用例,部分检查其对上述规范的一致性级别。 但请注意,通过测试套件中的所有测试,并不意味着完全符合这些 规范。 它仅表示该实现符合测试套件所测试的那些方面。

文档大纲

引言提供了配置文件化的背景概念,并说明了本规范的范围。它还 提供 术语定义并描述文档约定。

第 2 节涵盖用于管理的 SHACL 打包。

第 3 节和第 4 节在打包的基础上,涵盖使用 SHACL 进行配置文件化的两种主要模式。

1. 引言

1.1 什么是配置文件化?

配置文件化是为某物创建“配置文件”的行为。

一般而言,在英语中,某物的“profile”如下:

物理对象或特征的轮廓,或对此的表示

- 《牛津英语词典》,自 17 世纪以来对 “profile” 一词的用法

在数据领域中,与上述含义一致的“profile”派生定义为:

摘要或提取

在这个定义中,保留了该英语词的核心含义,因为对一个数据 对象的摘要或提取可能是它的轮廓;例如,三维空间对象的二维表示,或 对具有许多部分的数据集进行的统计 摘要。

警告:引言中截至此处的配置文件化背景内容,可能会被上游纳入 The Profiles Vocabulary 的更新 版本。

根据定义,SHACL 约束 RDF 数据。因此,任何根据 形状图 有效的数据,都将是该 数据 图的一个配置文件。如果某个 形状图 验证了 数据 图的所有元素,则得到的有效数据将是该 数据 图的“空”配置文件,这意味着它与原始数据 图相同。

The Profiles Vocabulary规范的上下文中,将 配置文件定义为:

一种规范,它约束、扩展、组合或提供有关 使用 其他规范的指导或说明

如果一个 形状图被视为 “规范”,那么不仅根据该 形状图有效的数据是 被验证的 数据图的配置文件,而且 该 形状图本身也 充当用于该 数据 图的数据模型的配置文件。

在本文档中,我们描述如何打包 SHACL 信息以实现最佳配置文件化,并通过对 每个 SHACL 规范所创建的 SHACL 形状进行打包来举例说明。

1.2 范围

结合上一节的概念,本规范定义如下内容:

  1. 打包 SHACL
  2. SHACL 的配置文件
  3. 使用 SHACL 进行配置文件化

1.3 术语

本规范通篇使用的术语,要么在此定义,要么取自若干 来源之一。这些 其他来源包括:

The Profiles Vocabulary
通用配置文件化术语和配置文件化本体术语
SHACL 1.2 Core
SHACL 技术术语
RDF 1.2 概念与抽象数据模型
RDF 术语

取自其他来源的术语会在文本中链接到其定义。

此处定义的术语包括:

空配置文件

某个规范的配置文件,其中实现了该规范的一些规则,并且很可能实现了全部 规则,但明确没有任何附加规则。

空配置文件的目的,是在被配置文件化的规范本身没有提供时, 提供配置文件化制品,例如可执行的 验证器。

SHACL 元素

由某个 SHACL 规范定义的 RDF/OWL 类或属性。

警告:空配置文件的定义可能会被上游纳入 The Profiles Vocabulary 的更新版本。参见 议题 dx-prof/56

本规范中使用的所有已定义术语都列在索引中。

1.4 文档约定

在本规范中,使用以下命名空间前缀定义:

前缀 命名空间
dcterms: http://purl.org/dc/terms/
ex: http://example.com/ns#
owl: http://www.w3.org/2002/07/owl#
prof: http://www.w3.org/ns/dx/prof/
rdfs: http://www.w3.org/2000/01/rdf-schema#
role: http://www.w3.org/ns/dx/prof/role/
sh: http://www.w3.org/ns/shacl#
shpr: http://www.w3.org/ns/shpr#

在本规范中,使用以下 JSON-LD 上下文:

{
  "@context": {
    "dcterms": "http://purl.org/dc/terms/",
    "ex": "http://example.com/ns#",
    "owl": "http://www.w3.org/2002/07/owl#",
    "prof": "http://www.w3.org/ns/dx/prof/" ,
    "rdfs": "http://www.w3.org/2000/01/rdf-schema#",
    "role": "http://www.w3.org/ns/dx/prof/role/" ,
    "sh": "http://www.w3.org/ns/shacl#",
    "shpr": "http://www.w3.org/ns/shpr#"
  }
}

请注意,定义 SHACL 词汇表本身的图的 URI 等同于 上述命名空间,也就是说,它包含 #。 对 SHACL 词汇表的引用,例如通过 owl:imports,应包含 #

在整个规范中,将出现带有颜色编码的框,其中包含 Turtle 和 JSON-LD 形式的 RDF 图。 框的颜色和标题指示它是 形状 图数据 图,还是其他 内容。 Turtle 规范片段使用上文给出的前缀绑定。 只有 Turtle 规范会有部分内容被高亮显示。

# 此框以 Turtle 语法展示 RDF 数据 <s> <p> <o> .

图中的约定由以下图例说明:

图示图例
1 图例

1.5 一致性

除标记为非规范性的各节之外,本规范中的所有编写指南、图示、示例和注释均为 非规范性内容。本规范中的其他所有内容均为规范性内容。

本文档中的关键词 MAYMUSTMUST NOTRECOMMENDEDSHOULDSHOULD NOT 应按 BCP 14 [RFC2119] [RFC8174] 中的说明解释,且仅当它们如这里所示以全 大写形式出现时才如此解释。

本文档为配置文件化目的,定义了对 SHACL Core 规范 [shacl12-core] 数据模型的扩展。

除标记为非规范性的各节之外,本规范中的所有编写指南、图示、示例和注释均为 非规范性内容。本规范中的其他所有内容均为规范性内容。

此处规定的语法规则以英语给出,并使用关键词 MAYMUSTMUST NOTRECOMMENDEDSHOULDSHOULD NOT;这些关键词应按 BCP 14 [RFC2119] [RFC8174] 中的说明解释,且 仅当它们如这里所示以全大写形式出现时才如此解释。

数据对本规范规则的一致性声明,可以通过使用 SHACL Overview 规范 [shacl12-overview]SHACL-SHACL 附录的 SHACL-SHACL Profiling 验证器进行验证来测试。

2. 打包 SHACL

SHACL 的打包是将 SHACL 元素相对于容器 对象进行呈现。

2.1 动机

人们可能出于多种原因,希望标识 SHACL 元素组,并 了解组与单个 SHACL 元素之间的关系。 这些原因包括想要理解一个组的目的、一个组中的变更如何影响 另一个组,以及如何创建新的组。 对此已经阐明了三个用例:

  1. 标识 SHACL 元素
  2. 找出某个组所依赖的所有 SHACL 元素
  3. 找出某个组所依赖的所有 SHACL 元素
议题 624:标识 SHACL 元素的分组 ProfilesUCR

标识为某个既定目的而组合在一起的 SHACL 元素。

议题 622:找出某个分组所依赖的所有 SHACL 元素 ProfilesUCR

找出某个配置文件所依赖的所有形状。

议题 623:找出某个分组所依赖的所有 SHACL 元素分组 ProfilesUCR

找出某个配置文件所依赖的所有配置文件。

2.2 建议摘要

对上述用例的解决方案产生了以下建议,这些建议建立在 已确立的实践之上,例如使用 sh:ShapesGraph 的实例来分组 SHACL 元素

  1. sh:ShapesGraph 的实例SHOULD用于分组 SHACL 元素的实例
  2. SHACL 元素的实例SHOULD使用 rdfs:isDefinedBy 谓词指示定义它的 sh:ShapesGraph 实例
  3. 使用某个 SHACL 元素、 但并不定义它的 sh:ShapesGraph 实例,SHOULD使用 rdfs:member 谓词将该 SHACL 元素指示为成员
  4. 用于分组 SHACL 元素sh:ShapesGraph 实例,SHOULD使用 owl:imports 谓词指示其对其他 SHACL 元素组的依赖,这些组使用 sh:ShapesGraph 的实例标识

以下各小节详细说明这些建议。

2.3 标识 SHACL 元素

sh:ShapesGraph 的实例SHOULD用于分组 SHACL 元素的实例。

SHACL 元素与许多其他 RDF 定义性数据一样,过去 通常被分组在 OWL 2 Web Ontology Language RDF-Based Semantics (Second Edition)owl:Ontology 类实例中。

例如,开放地理空间联盟GeoSPARQL 1.1 空间 RDF 数据标准 提供了一个 SHACL 验证器, 其中在一个 Turtle 文件内包含 27 个 sh:NodeShape 实例以及数量相近的 sh:PropertyShape 实例。该文件还包含一个 owl:Ontology 实例,用于呈现该 验证资源的元数据,例如其 修改日期、使用许可证等等。

本建议取代该实践,并建议使用 sh:ShapesGraph 这一 owl:Ontology 的专门子类来分组 SHACL 元素。这是为了避免 有歧义的分组对象。

2.4 指示元素定义

SHACL 元素的实例SHOULD使用 rdfs:isDefinedBy 谓词指示定义它的 sh:ShapesGraph 实例。

SHACL 元素放入由 sh:ShapesGraph 实例标识的组中时,常见实践 只是将这些元素和本体实例包含在一个 RDF 文件中。对于 数据交换而言,这是合理的; 但是,当交换的文件被存储到 RDF 数据库中时, sh:ShapesGraph 实例 与其中定义的 SHACL 元素之间的关联可能会丢失。如果加载到 命名图中, 该关联可能会通过命名图保留下来,该命名图对本体和 SHACL 元素进行分组,但这是一种非语义的 关联,即不能直接在图中看到的关联。

本建议提出,SHACL 元素的创建者SHOULD指示 定义该 SHACL 元素的组。此类 RDF 断言的示例如下:

ex:ont-M a sh:ShapesGraph ; . ex:shape-1 a sh:NodeShape ; rdfs:isDefinedBy ex:ont-M ; .

SHACL 1.2 Core2.5 形状和类的语法 变体一节中, 有一条警告指出,虽然 属性形状可以声明为 空白节点,但最好将它们声明为 IRI,因为 这能在图之间实现更好的复用。如果按本节加入有关 形状的信息,则SHOULD使用 IRI。

2.5 指示元素使用

使用某个 SHACL 元素、 但并不定义它的 sh:ShapesGraph 实例,SHOULD使用 rdfs:member 谓词将该 SHACL 元素指示为 成员

当一个 SHACL 元素在某个元素组内被使用但并非由该组 定义时,SHOULD NOT将其指示为由该组 定义,因此上一节中的建议并不适用。根据链接数据原则 [LDP], 在不定义 SHACL 元素的组内复用这些元素是预期且受鼓励的。

以下示例展示了如何使用 rdfs:member 谓词来指示某个 SHACL 元素被包含在一个 并不定义它的组中,同时也展示了如上例所示的 rdfs:isDefinedBy 的使用:

# “Ontology M”使用由“Ontology Other”定义的 Shape ex:ont-M a sh:ShapesGraph ; rdfs:member ex:shape-1 ; . ex:ont-Other a sh:ShapesGraph ; . ex:shape-1 a sh:NodeShape ; rdfs:isDefinedBy ex:ont-Other ; .

2.6 指示组依赖

用于分组 SHACL 元素sh:ShapesGraph 实例,SHOULD使用 owl:imports 谓词指示其对其他 SHACL 元素组的依赖, 这些组使用 sh:ShapesGraph 的实例标识。

在 SHACL 验证工具中,从一个集合(例如包含 RDF 数据的 文件)通过 owl:imports 指令将 SHACL 元素导入 另一个集合,是已经确立的实践。许多 SHACL 验证引擎 都这样做,例如 pySHACL [PYSH];推荐采用这种实践来指示从一个集合/组 到另一个集合/组的依赖,即使并不预期某个特定验证引擎会因该断言而采取行动: 对 SHACL 数据管理而言,这也很可能具有有用的信息价值。

owl:imports 的示例如下。

# “Ontology N”导入“Ontology M” ex:ont-M a owl:Ontology ; . ex:ont-N a owl:Ontology ; owl:imports ex:ont-M ; .

2.7 计算依赖项

可以从上述四项建议的使用中得出依赖项含义,这些含义可用于回答 动机一节中指出的 三个用例。

TODO

2.8 指示有效性

议题 770:通过 SHACL 验证记录数据集的形状 ProfilesUCR
此用例是否在此得到回答?

可能有必要将由 形状 图数据 图执行的验证操作结果持久化到 RDF 中。若是如此, 数据图 DG MAY使用 shpr:conformsTo 谓词被指示为符合 形状图 SG。在这种情况下,将推断 DGsh:DataGraph 的实例,SGsh:ShapesGraph 的实例。

3. SHACL 的配置文件化

本节描述如何制作 SHACL 1.2 的现有配置文件,给出若干示例,并说明如何 创建更多 SHACL 配置文件。

有关在本规范发布时已知的 SHACL 配置文件列表 以及社区管理配置文件的链接,请参见附录 A

3.1 定义 SHACL 的配置文件

SHACL 的配置文件应使用 The Profiles Vocabulary 来声明。SHACL 1.2 Core 配置文件的声明如下:

# Core 配置文件的声明 <http://www.w3.org/ns/shacl/profile/core> a prof:Profile ; prof:isProfileOf <https://www.w3.org/TR/shacl/> ; prof:hasResource <https://www.w3.org/TR/shacl12-core/> , <http://www.w3.org/ns/shacl-shacl/core> ; . # Core 规范 <https://www.w3.org/TR/shacl12-core/> a prof:ResourceDescriptor ; prof:hasRole role:Specification ; dcterms:format "text/html" ; dcterms:conformsTo <http://www.w3.org/TR/html5/> ; prof:hasArtifact <https://www.w3.org/TR/shacl12-core/> ; . # Core 验证器 <http://www.w3.org/ns/shacl-shacl/core> a prof:ResourceDescriptor ; prof:hasRole role:Validation ; dcterms:format "text/turtle" ; dcterms:conformsTo <https://www.w3.org/TR/shacl/> ; prof:hasArtifact <http://www.w3.org/ns/shacl-shacl/core> ; .

此声明使用 IRI <http://www.w3.org/ns/shacl/profile/core> 标识 Core 配置文件,并 指示它是 prof:Profile 的一个实例,是 2015 年原始 SHACL 发布物的一个配置文件,并且具有两个配置文件资源:一个规范和一个验证器。

使用 The Profiles Vocabulary 中的术语描述时, 上面链接的每个规范的在线文档形式,只是共同构成 SHACL 1.2 配置文件的众多 资源之一。该文档 扮演 Specification 这一资源角色——“以人类可读的形式定义配置文件”——而其他资源 扮演其他角色。SHACL 用户尤其感兴趣的是每个 配置文件的 SHACL 形状图,它扮演 Validation 角色—— “提供关于如何验证数据是否符合该 配置文件的说明”。SHACL 1.2 的各个配置文件 可能会提供具有其他配置文件资源角色的附加资源。

形状图验证资源在 SHACL 1.2 Overview 的 SHACL-SHACL 附录中给出。

要根据这些规范配置文件或下面定义的联合配置文件中的任何一个来验证 RDF 数据,请使用 SHACL 1.2 Overview 的 SHACL-SHACL 附录中列出的 SHACL-SHACL 形状图

描述如何使用 SHACL 的打包来挑选要在你的配置文件中支持的 SHACL 元素。

3.2 已知的 SHACL 配置文件

在本规范发布时,已知存在一个对应于上文列出的每个规范的 SHACL 1.2 配置文件。此外,一个联合配置文件——所有规范配置文件的组合—— 也已知存在。

还已知存在一个由计算工作定义的 SHACL 配置文件,以及一个由 SHACL UI 实现工作定义的 SHACL 配置文件。

这些已知配置文件列在附录 A中,未来的 SHACL 配置文件将列在 W3C SHACL 社区控制的仓库中,地址为 https://github.com/w3c/shacl-resources

3.3 其他配置文件

以下是一些使用不同逻辑来界定其内容范围的其他 SHACL 配置文件。

议题 826:指示一个现有的、由计算定义的 SHACL 配置文件 Profiles

指示一个由计算定义的 SHACL 配置文件,以便在 SHACL Profiling 规范中展示 Packaging SHACLProfiles of SHACL 的机制。

3.4 创建其他配置文件

可以使用任何标准创建 SHACL 1.2 的附加配置文件。例如,可能希望 为 SHACL 1.2 Core 创建只实现限于特定计算复杂度的形状类型的配置文件,这很 类似于 OWL 的配置文件 OWL 2 Web Ontology Language Profiles (Second Edition)。在这种情况下,可以利用 上文 打包 SHACL 一节给出的机制来制定一个配置文件定义, 只包含 SHACL 1.2 Core 的部分 元素。

在制作 SHACL 1.2 配置文件时,重要的是按照当前已知的 SHACL 1.2 配置文件——规范配置文件和联合配置文件——来标识并呈现该配置文件,以便它们能够 有效使用,包括 被他人使用。SHACL 1.2 配置文件的创建者SHOULD

  1. 使用 IRI 标识该配置文件
  2. 按照本规范中的定义,将该配置文件定义为 SHACL 1.2 的配置文件
  3. 与 SHACL 用户社区共享该配置文件

4. 使用 SHACL 进行配置文件化

议题 546:[PROF] 使用 SHACL 进行配置文件化的范围 Profiles
 

本节描述如何使用 SHACL 创建不同类型事物的配置文件。

本节使用来自 The Profiles Vocabulary 的通用配置文件化术语和元素, 以及在 5. SHACL 配置文件化词汇表中定义的更专门的 SHACL 配置文件化元素。

4.1 配置文件化规范

The Profiles Vocabulary 保持一致,我们将术语 Specification 视为与术语 Standard 同义。

规范配置文件化示例图 [[[dx-prof]]] 特征化
2 规范配置文件化图,按照 The Profiles Vocabulary 的样式指导刻画一个示例

4.1.1 刻画 配置文件化情形

议题 617:[PROF] 用例:SKOS 配置文件 ProfilesUCR
此情形刻画部分是否在此回答了该用例?
议题 764:SHACL 数据配置文件化的用例: 多模型互操作性 ProfilesUCR
此用例是否在此得到回答?

SHACL 经常用于测试数据是否匹配某个已知的 Specification。 如果用于此类测试的 SHACL 除规范中的规则之外没有实现其他规则,则该 SHACL 形状图会创建该 规范的 空配置文件

如果某个形状图实现的规则多于/不同于规范中的规则,那么它就是在测试该规范的一个 (非空)配置文件

如果一个形状图 SG1 正在配置文件化一个规范 S1, 那么,按照 The Profiles Vocabulary 的刻画方式:

<SG1> a prof:Profile ; prof:isProfileOf <S1> ; .

然而,SG1 也在扮演 Validation 角色, 因此,对这种情形更完整的 The Profiles Vocabulary 刻画将是:

<SG1> a prof:Profile ; prof:isProfileOf <S1> ; prof:hasResource [ prof:hasArtifact <SG1> ; prof:hasRole role:validation ; ] ; .

这是对 The Profiles Vocabulary 的一种非预期用法, 其中配置文件本身也在扮演通常由该配置文件的一部分、 或某个资源所承担的角色,而不是让单个配置文件资源扮演所有 角色;但这是合法的, 并且仍将实现 PROF 的目标:允许概念性配置文件指示一个执行常见 配置文件资源角色——验证——的资源。

要指示某个配置文件资源正在使用 SHACL 1.2 Core 且以 Turtle 格式可用,也可以将以下内容添加到 该刻画中:

<SG1> a prof:Profile ; prof:isProfileOf <S1> ; prof:hasResource [ prof:hasArtifact <S1> ; prof:hasRole role:validation ; dcterms:conformsTo <https://www.w3.org/TR/shacl12-core/> ; dcterms:format "text/turtle" ; ] ; .

如果 SG1 还被视为该配置文件要求的规范性表达, 而不是例如由另一个包含这些要求的人类语言文档来表达,那么 prof:hasRole 的值 role:constraints 也可以应用于该资源。

如果没有关于该配置文件的单独人类语言文档,那么 prof:hasRole 的值 role:specification 也可以应用于该资源。不过,这并非最佳做法,因为 role:specification 被规定为“[以人类可读的形式]定义配置文件”, 虽然 SHACL 是 人类可读的,但这里预期的是自然语言散文。

<SG1> a prof:Profile ; prof:isProfileOf <S1> ; prof:hasResource [ prof:hasArtifact <S1> ; prof:hasRole role:constraints , role:specification , role:validation ; dcterms:conformsTo <https://www.w3.org/TR/shacl12-core/> ; dcterms:format "text/turtle" ; ] ; .

这种推理解决了哪些用例?

4.1.2 对数据的影响

按照 2.8 指示 有效性,我们可以用谓词 sh:conformsTo 指示某个 数据 图 相对于某个 形状图的有效性。 该谓词是 [DCTERMS] 谓词 dcterms:conformsTo 的子属性,后者用于 The Profiles Vocabulary

按照 2,如果我们有 <DG1> sh:conformsTo <SG1>, 这可能是在通过 验证测试数据图对形状图的一致性之后 断言的, 则我们可以推断:

<DG1> dcterms:conformsTo <SG1> . # 通过 RDFS 或 OWL-RL 推理

按照 The Profiles Vocabulary 的公理 dcterms:conformsTo owl:propertyChainAxiom ( dcterms:conformsTo prof:isProfileOf ),那么, 如果给出

<DG1> dcterms:conformsTo <SG1> .

以及

<SG1> prof:isProfileOf <S1> .

我们可以得出

<DG1> dcterms:conformsTo <S1> .

这种推理允许对数据与规范配置文件以及规范本身的一致性作出静态声明, 这对那些必须知道其是否符合这些事物、但又 无法持续进行验证的数据具有实用价值。

4.2 配置文件化数据

本节内容因与上文“配置文件化规范”重复而移除。

4.3 配置文件部分角色

SHACL 是一种可为 RDF 数据实现约束和推理规则的语言。这两件事 并不是配置文件设计者可能希望做的事情的 完整集合;例如,他们可能希望包含 关于该配置文件为何以及如何创建的文档,或者在 扩展模式中提供新的模型元素(类、谓词等)。

由于 SHACL 不能用于所有可能的配置文件部分,配置文件设计者需要参考 SHACL 规范系列之外的规范,以获得关于配置文件 全部组成部分以及如何将它们彼此关联的指导。预计将使用 The Profiles Vocabulary 来完成这一点。

参考 The Profiles Vocabulary资源 角色实例词汇表,似乎很明显, SHACL 图可以在配置文件中承担 Validation 角色,或许 也可以承担 Specification 角色,因为 SHACL 可用于 声明节点形状和属性形状,正如 OWL 可用于声明类和属性一样。

SHACL 形状天然约束模型和数据,因此如果用来指示某个配置文件如何约束 某个事物 ——标准或另一个配置文件——它们就可以承担 Constraints 角色。

如果实现了 SHACL 规则以将数据从一种模型转换为另一种模型, 它们也可以承担 Mapping 角色。

4.4 配置文件层级

配置文件层级是一种安排,其中一个配置文件是另一个配置文件的专门化,形成一条链, 更具体的配置文件从更宽泛的配置文件继承约束。按照 The Profiles Vocabulary 的规则,如果 CB 的配置文件,而 BA 的配置文件,则 希望符合 C 的数据,只有在也符合 BA 时才可能有效。

检查数据对配置文件的一致性,意味着使用具有 Validation 角色的配置文件资源来测试该数据。

未完成

4.5 创建空配置文件

使用 SHACL 创建的某个规范的 空配置文件,是该规范的一个 配置文件,其中 SHACL 被用于实现该规范的一些规则,并且很可能实现全部规则,但不在 SHACL 中实现任何其他规则。

使用 SHACL 创建规范空配置文件的主要目的,是能够通过 SHACL 验证来测试 对该规范的一致性。这个目的之所以存在,是因为许多 RDF 数据模型 具有 模型规范,或许是 OWL 模型,或者只是模型的自然语言文档,但并不 提供 数据验证机制,例如 SHACL 验证器。此类模型的示例包括:Data Catalog Vocabulary (DCAT) - Version 3Schema.orgThe RDF Data Cube Vocabulary,以及许多 W3C 标准。

虽然规范的空配置文件可以使用 SHACL 以外的机制创建,但这里我们 只关注 SHACL 的使用。

一个用于 RDF 数据、充当空配置文件的非 SHACL 验证器示例,是 W3CConstraints of the PROV Data Model, 它提供了一组约束,适用于根据 PROV-O: The PROV Ontology 制定的溯源数据。 Constraints of the PROV Data Model 并未实现超出 PROV-O: The PROV Ontology 和概念性 PROV-DM: The PROV Data Model 中所述或所暗示的约束之外的 任何约束;不过 它确实包含针对模型没有明确建模但 正确使用时需要的事项的测试,例如时间实体的排序。那些 约束的实现已经制作出来,形式为执行 SPARQL 查询的 Python 脚本,从而允许对 RDF 数据进行验证。

无法给出创建规范空配置文件的通用且精确的方法, 因为就该任务的本质而言,规范的规则可能定义得并不精确,因此 用 SHACL 对它们进行刻画的方法——而 SHACL 是精确的——也会像不精确的规则 定义本身一样有所不同。

有关其他规范的空配置文件示例,请参见 B. 空配置文件示例

5. SHACL 配置文件化词汇表

SHACL 配置文件化词汇表
3 SHACL 配置文件化词汇表
议题 805:配置文件泛化及其对 dcterms:conformsTo 推理的影响 Profiles
 

该词汇表的所有元素都是 SHACL Core 词汇表的成员,该词汇表在其 命名空间位置 http://www.w3.org/ns/shacl# 提供 RDF 序列化。

5.1 类:形状图

RDF 类: sh:ShapesGraph
定义来源: SHACL 1.2 Core
子类: owl:Ontology
定义: 形状图是包含零个或多个形状的 RDF 图,它被传入 SHACL 验证 过程,以便可以针对这些形状验证数据图。
另请参见: SHACL 1.2 Core:形状图
范围说明: 就 SHACL 配置文件化而言,该类用于将 SHACL 元素分组在一起,如 2.3 标识 SHACL 元素一节所述。

5.1.1 属性:imports

RDF 属性: owl:imports
定义来源: OWL Web Ontology Language Reference
定义: 用于将其他本体导入给定本体的属性。
定义域: owl:Ontology
值域: owl:Ontology
另请参见: OWL Web Ontology Language Reference:导入本体
范围说明: 就 SHACL 配置文件化而言,该谓词用于指示形状 图之间的依赖, 如 2.6 指示组依赖一节所述。

5.1.2 属性:member

RDF 属性: rdfs:member
定义来源: RDF 1.2 Schema
定义: 主语资源的一个成员。
定义域: 资源
值域: 资源
另请参见: RDF 1.2 Schema:member
范围说明: 就 SHACL 配置文件化而言,该谓词用于将形状 图与其使用的每个 形状相关联,无论该形状是由它定义还是在别处定义,如 2.5 指示元素使用一节所述。

5.2 类:数据图

RDF 类: sh:DataGraph
定义来源: SHACL 1.2 Core
定义: 任何 RDF 图都可以是数据图。
用法说明: 使用该类来表示你希望为其作出一致性声明的 RDF 图。 例如,在根据 GeoSPARQL 1.1 标准的形状 图(http://www.opengis.net/def/geosparql/validator) 测试 RDF 数据图的一致性时,将这些图记录为数据图
另请参见: SHACL 1.2 Core:数据图
范围说明: 就 SHACL 配置文件化而言,该类用于表示要对其作出 SHACL 相关 声明的 RDF 数据。

5.2.1 属性:conforms to

RDF 属性: sh:conformsTo
定义来源: SHACL 1.2 Core
子属性: dcterms:conformsTo
定义: 如果验证没有产生任何严重性级别属于不允许级别集合的验证 结果,则主语符合宾语。
定义域: 数据图
值域: 形状图

5.2.2 属性:validation report

RDF 属性: sh:validationReport
定义来源: SHACL 1.2 Core
定义: 存在于该主语的一个验证报告。
定义域: 数据图
值域: 验证报告

5.3 类:验证报告

RDF 类: sh:ValidationReport
定义来源: SHACL 1.2 Core
定义: 验证报告是验证过程的结果,它报告数据图相对于形状图的 一致性以及所有 验证结果的集合。
另请参见: SHACL 1.2 Core:验证 报告

5.3.1 属性:used shapes graph

RDF 属性: sh:usedShapesGraph
定义来源: SHACL 1.2 Core
定义: 主语验证报告是使用宾语形状图生成的。
定义域: 验证报告
用法说明: 版本 IRI 也可以用作该属性的宾语。
值域: 形状图

5.3.2 属性:conforms

RDF 属性: sh:conforms
定义来源: SHACL 1.2 Core
定义: 表示验证报告所描述的一致性检查结果。
定义域: 验证报告
值域: boolean
另请参见: SHACL 1.2 Core:conforms

5.4 类:形状

RDF 类: sh:Shape
定义来源: SHACL 1.2 Core
定义: 形状是可针对某些节点的约束集合。
另请参见: SHACL 1.2 Core:形状

5.4.1 属性:is defined by

RDF 属性: rdfs:isDefinedBy
定义来源: RDF 1.2 Schema
定义: 主语在确定被测试数据图的有效性时使用了宾语。
定义域: 验证报告
值域: 形状图
另请参见: RDF 1.2 Schema:isDefinedBy

5.5 规则:conforms to

“conforms to”规则是一条推理规则:如果存在与 Data Graph关联的 Validation Report, 该报告指示 Shapes Graph 被用于验证,并且 sh:conforms 属性指示为 true,则允许指示该 Data Graph 符合 该 Shapes Graph

由于需要测试 sh:conforms 属性值, 这条推理规则不能表述为 OWL 属性链公理,因此这里同时以 SPARQL 1.2 Query Language 规则和 SHACL 1.2 Rules 规则的形式给出。

CONSTRUCT { ?x sh:conformsTo ?z } WHERE { ?x sh:validationReport ?y . ?y sh:usedShapesGraph ?z ; sh:conforms true ; . }
RULE { ?x sh:conformsTo ?z } WHERE { ?x sh:validationReport ?y . ?y sh:usedShapesGraph ?z ; sh:conforms true ; . }

A. SHACL 的配置文件

本附录列出了在本规范发布时已知的 SHACL 1.2 配置文件,这些配置文件按照 SHACL 的配置文件化一节制定。它还指出 W3C 的 SHACL 社区 在何处维护一个非正式的 SHACL 配置文件登记表,在本文档最终确定后可向其中添加 配置文件

A.1 规范配置文件

每个 7 个规范配置文件的 RDF 定义可在此处获得:

  1. Core 配置文件
  2. SPARQL 配置文件
  3. 节点表达式配置文件
  4. 规则配置文件
  5. UI 配置文件
  6. 配置文件化配置文件

联合配置文件定义也以 RDF 提供:

  1. 联合配置文件

A.2 联合配置文件

SHACL 1.2 的联合配置文件是 SHACL 1.2 的概念性整体,涵盖 SHACL 1.2 规范系列的所有方面。不存在单个人类可读的 联合配置文件 规范文档——你必须逐一阅读所有文档,如规范 一节所链接的那样—— 但存在一个单一的验证资源:一个 形状图,它由 所有单个配置文件的 验证 形状图组成。

联合配置文件的 形状图SHACL 1.2 Overview 的 SHACL-SHACL 附录中给出。

A.3 SHACL 1.2 UI 配置文件

议题 827:[PROF/UI] SHACL UI 配置文件化用例 UIProfilesUCR
允许 SHACL UI 实现定义一个 SHACL UI 配置文件,明确说明其支持的 功能集合

SHACL 1.2 UI 配置文件是 SHACL Core 词汇表元素的一个子集,这些元素是 按照在 SHACL 1.2 UI 规范中作为用户界面组件实现时的易实现性 选出的。

TODO

A.4 CD1 配置文件

议题 847:创建一个由计算复杂度定义的 SHACL 配置文件 ProfilesUCR
举例说明一个由计算复杂度定义的 SHACL 配置文件,并展示如何创建 其他配置文件
议题 242:定义 sh:ReferenceShape、sh:SimpleShape 以便能够 限制验证工作量 PostponedProfiles
 

SHACL 的 CD1(“Computationally-Defined #1”)配置文件是 SHACL Core、SPARQL 和节点表达式词汇表元素的一个子集,这些元素因其计算简单性而被选中。

定义该 CD1 配置文件的原因有两个:

  1. 配置文件化一个真实的、由计算复杂度定义的配置文件
  2. 指示如何定义使用类似逻辑的其他配置文件

该配置文件定义于资源 http://www.w3.org/ns/shacl/profile/cd1 中,其部分 内容如下:

<http://www.w3.org/ns/shacl/profile/cd1> a owl:Ontology , prof:Profile ; prof:isProfileOf sh: ; rdfs:label "CD1 Profile of SHACL"@en ; rdfs:comment """This is a Profile of SHACL 1.2 that excludes shapes found to be computationally intensive. Vocabulary elements of SHACL that are not listed as members of this profile may not be used for implementations claiming conformance to this profile."""@en ; rdfs:member sh:AbstractResult , sh:AndConstraintComponent , # ... many skipped members sh:xone , sh:zeroOrMorePath , sh:zeroOrOnePath ; .

上文标示 ... many skipped members 的位置列出了 SHACL 1.2 的所有类和属性元素, 但以下除外:

TODO

A.5 SHACL 1.0 配置文件

议题 872:SHACL 1.0 的 SHACL 配置文件 ProfilesUCR
 

A.6 美化打印配置文件

SHACL 的美化打印配置文件是 SHACL 词汇表元素的一个子集,这些元素被选出以 确保 验证过程生成“美观”——易于阅读——的错误消息。

A.7 OWL 一致配置文件

SHACL 的 OWL 一致配置文件是 SHACL 词汇表元素的一个子集,这些元素被选出以 确保 形状定义不会违反其所针对的类和谓词上的 OWL 约束。

B. 空配置文件示例

本节为非规范性内容。

本附录包含其他规范的 空配置文件示例。

B.1 POS 的空配置文件

该配置文件是 Basic Geo (WGS84 lat/long) Vocabulary 的一个 空配置文件。该配置文件的目的,是展示一个非常简单的 RDF 词汇表的 空配置文件是什么样子。

TODO - 参见仓库中的 pos.ttl 文件

B.2 PROF 的空配置文件

该配置文件是 The Profiles Vocabulary 的一个 空配置文件

该配置文件的目的,是提供一个基于 SHACL 的 PROF 数据验证器,并展示一个 略复杂的词汇表空配置文件是什么样子。

该空配置文件实现了 PROF 的所有 OWL 规则,以及 PROF 规范中说明但未在 PROF 本体中实现的一些规则。

TODO

C. 安全与隐私 考量

本节为非规范性内容。

与大多数基于 RDF 的技术一样,SHACL 处理器可能会操作由 各种来源组装而成的图。一些应用可能具有开放的“链接数据”(“LD”)架构,并动态 组装来自组织信任网络之外来源的 RDF 三元组。 由于 RDF 允许任何人添加关于任何资源的语句,三元组可能会修改形状定义或 数据 图中节点原本 预期的语义,从而导致误导性结果。 通过只使用受信任且已验证的 RDF 来源,并消除通过 owl:importssh:shapesGraph 动态添加图的可能性,可以防范这种 (以及下面的)场景。

在创建其他规范的配置文件时,配置文件创建者需要确保 其约束不会违反那些规范的规则。如果任何约束确实违反了规则,并且如果只使用 配置文件的规则、而不使用规范的规则来检查数据有效性,无论是偶然还是有意, 数据都可能被错误地计算为有效。这可能导致意外的数据发布或使用,从而可能 引入安全问题。

D. 致谢

本节为非规范性内容。

许多人为本规范作出了贡献,包括 RDF Data Shapes 工作组的成员。

E. 国际化 考量

TODO

F. 索引

F.1 由本规范定义的术语

F.2 由引用定义的术语

G. 议题摘要

H. 参考文献

H.1 规范性参考文献

[DCTERMS]
DCMI Metadata Terms. DCMI Usage Board. DCMI. 2020 年 1 月 20 日。DCMI 推荐标准。URL:https://www.dublincore.org/specifications/dublin-core/dcmi-terms/
[dx-prof]
The Profiles Vocabulary. Nicholas Car. W3C. 2019 年 12 月 18 日。W3C 工作组说明。URL:https://www.w3.org/TR/dx-prof/
[owl-ref]
OWL Web Ontology Language Reference. Mike Dean; Guus Schreiber. W3C. 2004 年 2 月 10 日。W3C 推荐标准。URL:https://www.w3.org/TR/owl-ref/
[owl2-rdf-based-semantics]
OWL 2 Web Ontology Language RDF-Based Semantics (Second Edition). Michael Schneider. W3C. 2012 年 12 月 11 日。 W3C 推荐标准。URL:https://www.w3.org/TR/owl2-rdf-based-semantics/
[owl2-syntax]
OWL 2 Web Ontology Language Structural Specification and Functional-Style Syntax (Second Edition). Boris Motik; Peter Patel-Schneider; Bijan Parsia. W3C. 2012 年 12 月 11 日。W3C 推荐标准。URL:https://www.w3.org/TR/owl2-syntax/
[rdf12-concepts]
RDF 1.2 Concepts and Abstract Data Model. Andy Seaborne; Gregg Kellogg; Olaf Hartig; Pierre-Antoine Champin. W3C. 2026 年 4 月 7 日。W3C 候选推荐标准。URL:https://www.w3.org/TR/rdf12-concepts/
[rdf12-schema]
RDF 1.2 Schema. Dominik Tomaszuk. W3C. 2026 年 3 月 28 日。W3C 工作草案。URL:https://www.w3.org/TR/rdf12-schema/
[RFC2119]
Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. 1997 年 3 月。当前最佳实践。URL:https://www.rfc-editor.org/info/rfc2119/
[RFC8174]
Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words. B. Leiba. IETF. 2017 年 5 月。当前最佳实践。URL:https://www.rfc-editor.org/info/rfc8174/
[schema-org]
Schema.org. W3C Schema.org Community Group. W3C. 6.0。 URL:https://schema.org/
[shacl12-core]
SHACL 1.2 Core. Holger Knublauch; Thomas Bergwinkl; Yousouf Taghzouti; Jesse Wright. W3C. 2026 年 6 月 22 日。W3C 工作草案。URL:https://www.w3.org/TR/shacl12-core/
[shacl12-rules]
SHACL 1.2 Rules. Robert David; David Habgood; Andy Seaborne; Simon Steyskal. W3C. 2026 年 6 月 19 日。W3C 工作草案。URL:https://www.w3.org/TR/shacl12-rules/
[sparql12-query]
SPARQL 1.2 Query Language. Olaf Hartig; Andy Seaborne; Ruben Taelman; Gregory Williams; Thomas Pellissier Tanon. W3C. 2026 年 6 月 25 日。 W3C 工作草案。URL:https://www.w3.org/TR/sparql12-query/
[vocab-data-cube]
The RDF Data Cube Vocabulary. Richard Cyganiak; Dave Reynolds. W3C. 2014 年 1 月 16 日。W3C 推荐标准。URL:https://www.w3.org/TR/vocab-data-cube/
[vocab-dcat-3]
Data Catalog Vocabulary (DCAT) - Version 3. Simon Cox; Andrea Perego; Alejandra Gonzalez Beltran; Peter Winstanley; Riccardo Albertoni; David Browning. W3C. 2024 年 8 月 22 日。W3C 推荐标准。URL:https://www.w3.org/TR/vocab-dcat-3/

H.2 资料性参考文献

[LDP]
LinkedData. W3C. URL:https://www.w3.org/wiki/LinkedData
[owl2-profiles]
OWL 2 Web Ontology Language Profiles (Second Edition). Boris Motik; Bernardo Cuenca Grau; Ian Horrocks; Zhe Wu; Achille Fokoue. W3C. 2012 年 12 月 11 日。W3C 推荐标准。URL:https://www.w3.org/TR/owl2-profiles/
[prov-constraints]
Constraints of the PROV Data Model. James Cheney; Paolo Missier; Luc Moreau. W3C. 2013 年 4 月 30 日。W3C 推荐标准。URL:https://www.w3.org/TR/prov-constraints/
[prov-dm]
PROV-DM: The PROV Data Model. Luc Moreau; Paolo Missier. W3C. 2013 年 4 月 30 日。W3C 推荐标准。URL:https://www.w3.org/TR/prov-dm/
[prov-o]
PROV-O: The PROV Ontology. Timothy Lebo; Satya Sahoo; Deborah McGuinness. W3C. 2013 年 4 月 30 日。W3C 推荐标准。URL:https://www.w3.org/TR/prov-o/
[PYSH]
pySHACL - A Python validator for SHACL. RDFLib Community. URL:https://pypi.org/project/pyshacl
[w3c-basic-geo]
Basic Geo (WGS84 lat/long) Vocabulary. Dan Brickley. W3C Semantic Web Interest Group. 2006 年 2 月 1 日。URL:https://www.w3.org/2003/01/geo/