知识图谱四件套:OWL、RDF、SHACL、Turtle各管什么

发布时间:2026-09-01 13:16  浏览量:1

做知识图谱的人,桌面上永远摆着四个缩写:OWL、RDF、SHACL、Turtle。新手最容易问的一句话就是:这四个是不是四选一,选一个学就行了?

真不是。这四个全都要用,但各管一段,是一条流水线上的四个工位。今天一次给你捋清楚。

说白了:OWL 定规矩,RDF 记事实,SHACL 卡质量,Turtle 负责把前面三个写出来。四件事,缺一不可。

cti:owl:sh:这种冒号前缀。它们其实就是长 IRI 的缩写别名——不然每个概念都写全 URL,文件根本没法看。• rdf:、rdfs:、owl:、xsd:、sh: 都是 W3C 标准前缀,保证不同系统之间能互操作• cti: 这种是领域自定义前缀,贴合你自己的业务

记住一句话:标准前缀保互操作,自定义前缀贴业务。

OWL(Web Ontology Language)干四件事:定义类与层级、定义对象/数据属性、定义约束、驱动推理。

类与层级很好理解,比如"后门是恶意软件的子类":

属性可以带 domain/range 约束,还能定义逆关系——exploits和exploitedBy互为逆,推理机自动补全。

OWL 的灵魂是推理。它是逻辑公理,推理机(HermiT、Pellet、Jena)能推出你没明说的事实。比如你知道 A 是 B 的子类,B 又是 C 的子类,推理机就能推出 A 也是 C 的子类——这些不用你手写。

工程上一般用 OWL 2 DL,可判定、有完备推理机;别碰 OWL Full,不可判定,推理机直接不支持。

RDF:这张图画了什么

RDF(Resource Description Framework)把一切事实拆成三元组:主体 → 谓语 → 客体。

注意,RDF 是数据层,只负责如实记录,不负责推理。"记录"和"推理"分离,是语义技术栈的基本纪律。

这里有个 2025-2026 的新变化:RDF 1.2 来了,它是 RDF-star 的标准化产物。核心新特性叫 triple terms(三元组项),允许你对 RDF 语句本身做陈述。以前想表达"这条情报置信度 0.97、来源是哪个文档"这种三元组级溯源,只能靠老式 reification 硬建模,又冗余又难互操作;现在直接写:

做溯源、审计场景的朋友,新项目可以直接按 RDF 1.2 规划。

SHACL:这张图合不合规

SHACL(Shapes Constraint Language)是校验层:给某类数据定义"形状",不合格打回。比如漏洞必须有 cveId、必须格式正确、必须有影响面:

sh:severity分级,Warning 不阻塞入库但进质检报告。

OWL vs SHACL:全篇最重要的区别

这俩经常被搞混,但本质完全不同:

所以顺序必须是"先推理、再 SHACL 校验"。举个真实场景:实例里只声明了HAMMERTOSS a Backdoor(没写a Malware),SHACL 形状却要求uses的客体必须是 Malware。直接校验会报错——但语义上后门确实是恶意软件。先让推理机推出HAMMERTOSS a Malware,再跑 SHACL 就通过了。顺序反了,推理和校验就打架了。

Turtle:这些用什么笔写出来

Turtle 是 RDF 的人类可读语法。三种写法,同一份数据:完整写法、分号压缩(同一主语多个谓语)、方括号匿名节点。其他的序列化了解一下就行:JSON-LD 适合 Web API,RDF/XML 是最早的标准,N-Triples 一行一个三元组适合流式大数据。

小结

四件套是流水线不是竞争:OWL 定义规矩 → RDF 记录事实 → SHACL 卡质量 → Turtle 负责书写。你在项目里用过这几个吗?还是只用过 Neo4j 这种属性图?评论区聊聊你的选型心得。