想象你是一座繁忙图书馆的唯一管理员。每天,新书像潮水般涌入,有食谱、小说、科学论文,还有邻馆送来的外文文献。你若是不做任何整理,读者问“有哪些哲学书”时,你只能摊手。于是你发明了两样法宝:第一样是便签卡片——每本书来了,你就在卡片上写一句大白话:“《存在与时间》属于 哲学类”;第二样是分类规则手册——手册里规定“凡是存在主义的书,都属于哲学类;凡是哲学书,都要放在三楼西区的书架”。前者让你把每本书的知识记下来,后者让你能根据手册推出新结论:既然《存在与时间》是存在主义,而存在主义属于哲学,那么它应该去三楼西区。这套“便签卡片 + 规则手册”的组合拳,正是知识图谱的两大基石——RDF(Resource Description Framework,资源描述框架)与OWL(Web Ontology Language,网络本体语言)。RDF负责把事实写成主谓宾的卡片,OWL负责定义概念之间的分类与约束,两者结合,机器就能自动“推理”出卡片上没有明写、但规则上必然成立的知识。

岗位关联

掌握RDF与OWL,你就掌握了知识图谱的“语法”与“逻辑”:既能用标准格式描述世界,又能让机器替你推理出隐藏的信息。这是知识图谱工程师、语义搜索架构师和数据集成专家的核心基本功。

目录
  1. 可视化演示
  2. RDF基本概念:图书馆的第一张便签卡
  3. RDF序列化格式:三种写便签的语言
  4. OWL本体基础:装订成册的分类规则
  5. OWL属性约束:手册里的编目细则
  6. 推理机制:图书管理员的逻辑大脑
  7. 图数据库关联:知识图谱住的电子书架
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示RDF主谓宾三元组图结构、OWL类层次继承建模、以及推理机自动推导隐含知识的过程。切换模式理解知识表示与推理。

本节配有交互动效(进入视口后自动加载,约 3KB)。

RDF主谓宾三元组图结构 每个RDF三元组由主语-谓语-宾语组成,形成有向标记图,节点是资源/字面量,边是属性关系 Turtle格式用前缀缩写和分号/逗号语法简洁表示三元组,支持高效存储和交换 (Subject, Predicate, Object) → directed labeled graph RDF三元组是知识图谱的基础表示

RDF基本概念:图书馆的第一张便签卡

每当新书入库,你掏出便签写下三件套:主体(这本书)、谓词(什么关系)、客体(另一本书或一句话)。比如“《存在与时间》:属于:哲学类”。这三个要素,就是RDF世界里最核心的三元组(Triple)。知识图谱里成千上万张卡,每张都是“主—谓—宾”一句话的事。这像极了小学语文课的句子成分:谁,做了什么,对谁做。机器不读“人话”,但三元组让机器能读“事实”。

但便签上写名字容易撞车:读者问“张三”,图书馆里有三个张三怎么办?RDF的办法是给每个资源发一个全球唯一的URI(统一资源标识符),就像身份证号。主体和谓词必须用URI标识,客体可以是URI,也可以是字面量(如“20岁”)。有了URI,“张三”就不再是模棱两可的名字,而是 https://lib.example.com/person/zhangsan 这个唯一编号。

把三元组画在纸上,主体和客体是圆圈,谓词是箭头,这就是RDF有向图。任意多条三元组连在一起,像一张蜘蛛网——每张卡片只是网上的一条边。这个设计源自语义网愿景:让整个互联网的知识都能以统一的“卡片格式”互相连接,机器可以像读者查目录一样遍历这张巨大的知识网。

从第一张便签卡到一张巨大的知识网,中间只隔着一个“连接”的动作。每条三元组就是网上的一个环节,网越织越大,知识图谱的骨架就立住了。但只有骨架还不够——这些卡片要想被不同系统读懂,还需要统一的书写格式。

Triple=⟨s,p,o⟩,s∈URI, p∈URI, o∈URI∪Literal\displaystyle \text{Triple} = \langle s, p, o \rangle,\quad s \in \text{URI},\ p \in \text{URI},\ o \in \text{URI} \cup \text{Literal}
三元组由主体(s)、谓词(p)和客体(o)组成。s 和 p 必须是全局唯一的 URI,客体 o 可以是 URI 也可以是字面量值。
  1. 三元组的构成三元组是知识的最小单元,方括号表示三个元素的集合
    Triple=⟨s,p,o⟩\text{Triple} = \langle s, p, o \rangle
  2. 主语身份主语 s 必须是一个 URI 资源,对应图书馆里书或人的身份证号
    s∈URIs \in \text{URI}
  3. 谓语身份谓词 p 也必须是 URI,因为它代表一种“关系类型”,关系也要有全球唯一的名字
    p∈URIp \in \text{URI}
  4. 客体身份客体 o 可以是 URI(指向另一张卡),也可以是字面量(日期、数字、文本)
    o∈URI∪Literalo \in \text{URI} \cup \text{Literal}

RDF序列化格式:三种写便签的语言

同一张便签“张三 属于 学生”,你可以用铅笔写,也可以用圆珠笔写,还可以打印。RDF也提供了多种序列化格式——把三元组写进文件的语法。最常用的是Turtle,它最接近你说话的习惯:主语写一遍,后面接一堆“谓词 客体”,用分号分开,最后用句号结尾。Turtle就像图书馆里的速记便签,人和机器都觉得清爽。

如果你喜欢Web开发圈的JSON风格,那JSON-LD会让你亲切:它用JSON的键值对包裹三元组,并且在键上直接挂URI,天生适合JavaScript程序。而RDF/XML则是资历最老的“盖章文书”——把三元组用XML标签包裹起来,虽然冗长,但是各种老牌企业系统都认它。

三种语言背后还有个小窍门:命名空间前缀。URI太长,每次写 https://lib.example.com/person/ 太折磨人。Turtle允许你声明前缀 @prefix ex: <https://lib.example.com/person/> .,之后写 ex:张三 就等于写全称。这就像你喊“老王”而不是“隔壁单元三楼302的王建国”——大家都懂。

无论用Turtle、JSON-LD还是RDF/XML,表达的底层三元组完全相同。就像同一张便签用三种笔迹书写,墨水不同,内容不变。这意味着不同系统、不同语言之间可以自如交换知识卡片——只要大家都遵守RDF语法。但有了卡片和格式,你还需要一本“分类规则手册”,告诉机器这些卡片上的概念谁是谁的上级,那就是OWL登场的时候了。

Turtle:@prefix ex:⟨URIbase⟩ex:a ex:p ex:o .\displaystyle \text{Turtle}:\quad @\text{prefix ex:} \langle \text{URI}_{\text{base}} \rangle \quad \text{ex:}a\ \text{ex:}p\ \text{ex:}o\ \text{.}
Turtle 通过前缀声明将长 URI 缩短为 ex:名字 的紧凑形式,再用 主语 谓词 客体 . 的句式写出三元组。
  1. 前缀声明用 @prefix 把一段冗长的公共 URI 绑定到一个短词 ex 上
    @prefix ex:⟨URIbase⟩@\text{prefix ex:} \langle \text{URI}_{\text{base}} \rangle
  2. 紧凑三元组声明之后,任意三元组都能用 ex:xxx 简写,句子以句号结束
    ex:a ex:p ex:o .\text{ex:}a\ \text{ex:}p\ \text{ex:}o\ \text{.}

OWL本体基础:装订成册的分类规则

图书馆的便签堆成了山,但你发现光靠卡片还不够:你得规定“学生”是“人”的下级类目,“教师”也是“人”的下级类目,而且“学生”和“教师”互不重叠。这些“概念与概念之间的关系”,就是本体(Ontology)。OWL就是用来写本体的一种标准语言,它把便签卡提升为“正式编目规则”。

OWL里的核心有两个词:类(Class)和实例(Instance)。“人”“学生”是类,相当于图书馆分类法的“类目”;具体的“张三”是实例,相当于摆在书架上的那一本书。类与类之间可以有类层次关系,用“子类”(subClassOf)表示:学生 ⊑ 人 表示“凡是学生,一定是人”。这个关系像一棵倒挂的树:根是“人”,往下分出“学生”“教师”,再往下是具体的张三李四。

本体建模思想强调“先定规则,再填数据”:在设计知识图谱时,先想清楚有哪些类、类之间什么关系、每个类需要什么属性,再把具体事实填进去。OWL三兄弟——OWL Lite、OWL DL、OWL Full——对应不同表达力:Lite轻巧但只能写简单规则,DL(描述逻辑)在表达力和计算效率间取得平衡,Full表达力最强但无法保证机器能停机算完。实际项目中绝大多数选择OWL DL,就像图书馆用“中图法”而不是自创一部万能分类法。

有了规则手册,卡片上的“张三是学生”就不再是一句孤立的话,而是自动连上了“张三是人”这个更大背景。但分类只是开始——OWL手册里还有很多关于“属性”的规定,用来约束每一张卡片的填写规范。

C学生⊑C人⟺∀x (x∈C学生→x∈C人)\displaystyle C_{\text{学生}} \sqsubseteq C_{\text{人}} \quad \Longleftrightarrow \quad \forall x\, (x \in C_{\text{学生}} \rightarrow x \in C_{\text{人}})
类层次公式表示“学生是人”:所有属于学生类的个体,都必然属于人类。符号 ⊑ 是 OWL 里的“子类”关系。
  1. 子类关系符号⊑ 读作“是……的子类”,表示一个类的范围完全包含在另一个类里
    C学生⊑C人C_{\text{学生}} \sqsubseteq C_{\text{人}}
  2. 全称量词解释∀ 表示“对于任意一个个体”,箭头表示“蕴含”,整体读作“任何学生都是人”
    ∀x (x∈C学生→x∈C人)\forall x\, (x \in C_{\text{学生}} \rightarrow x \in C_{\text{人}})

OWL属性约束:手册里的编目细则

你开始给图书编目,发现“书”不能只分类,还得规定“每本书必须有作者”“作者必须是人”“出版年份必须是整数”。这些规定在OWL里叫做属性约束。属性分两大类:对象属性(Object Property)连接两个对象,比如“作者”连接“书”和“作者这个人”;数据属性(Data Property)连接对象与字面量,比如“出版年份”连接“书”和"2008"这个数。

OWL能精确地规定一个类中每个实例的属性数量,这就是基数约束。写 学生 ⊑ =1 有学号,意思是每个学生必须有且只有一个学号。有的学校允许学生没有手机号,那就写成 学生 ⊑ ≤1 有手机号(最多一个,零个也行)。这就像编目细则里规定“每本书必须有ISBN号,但可以不登记馆藏位置”。

值域约束规定属性指向的对象必须属于哪个类:作者 ⊑ ∀作用于.人 表示“作者”这个属性的取值必须是“人”——如果哪天填了个“学校”当作者,推理机立刻会发现这只“怪物”违规了。值域约束像表格里的下拉列表,只允许在合法选项里取值,堵住了脏数据进入知识图谱的通道。

属性约束让规则手册从“分类表”升级成“质量检验标准”。但规则手册的真正威力,在于它允许机器拿着手册去推理——把卡片上没有直接写、但逻辑上必然成立的结论自动填出来。这就是知识图谱最迷人的地方。

C⊑∃r.⊤⟺∀x∈C, 至少存在一个 y 使得 r(x,y)\displaystyle C \sqsubseteq \exists r.\top \quad \Longleftrightarrow \quad \forall x \in C,\ \text{至少存在一个}\ y\ \text{使得}\ r(x,y)
存在量词约束表示:类 C 的每个实例,都至少通过属性 r 连接到一个对象。例如“每个学生都至少有一个学号”。
  1. 存在约束写法∃r.⊤ 表示“存在一个通过 r 相连的个体”,整体读作“C 中的个体都至少有一条 r 属性”
    C⊑∃r.⊤C \sqsubseteq \exists r.\top
  2. 逐实例解释展开成逻辑语言,即每个 x 属于 C 时,都能找到一个 y 让 r(x,y) 成立
    ∀x∈C, ∃y s.t. r(x,y)\forall x \in C,\ \exists y\ \text{s.t.}\ r(x,y)

推理机制:图书管理员的逻辑大脑

有了卡片(RDF)和规则(OWL),谁来执行规则?答案是推理机(Reasoner),它像一个训练有素的图书管理员,根据“学生是人”这条规则和“张三是学生”这张卡片,毫不犹豫地写下新卡片“张三是人”。这套从已知推未知的过程,就是知识推理。

推理规则一般写成“前提 → 结论”的形式。最基础的规则来自RDFS,比如子类传递规则:学生 ⊑ 人 且 人 ⊑ 生物,推出 学生 ⊑ 生物。RDFS还能从“张三是学生”和“学生是人”推出“张三是人”。这些规则虽然简单,但撑起了知识图谱的半壁江山。

OWL规则更强:除了继承,还能处理属性的传递性(“A认识B,B认识C”不一定推出“A认识C”,但如果属性定义为传递性就行)、对称性(“A是B的配偶”能推出“B是A的配偶”)等复杂逻辑。常见的推理机工具有Pellet、HermiT、Jena自带的推理器——它们像不同牌子的“智能管理员”,有的擅长速度,有的擅长处理复杂规则。

推理机推出新卡片的瞬间,就像管理员在读者面前补上最后一块拼图。一张“张三是人”的卡片,无需人工誊写,机器自动生成。这也是RDF与OWL组合的魔法:事实越积越多,规则越定越细,机器能从卡片堆里“长出”一张更大的知识网。但知识网要真正落地,还得住进一个能高效存储和查询的“家”——图数据库。

A⊑B,x∈Ax∈B\displaystyle \frac{A \sqsubseteq B,\quad x \in A}{x \in B}
这是 RDFS 最经典的三段论推理规则:分子是两条前提,分母是结论。只要前提为真,结论必然成立。
  1. 横线语义横线把论证分成前提(上方)和结论(下方),表示“由上方推出下方”
    前提结论\frac{\quad前提\quad}{结论}
  2. 子类前提第一个前提 A⊆B 表示“A 是 B 的子类”,即所有 A 都是 B
    A⊑BA \sqsubseteq B
  3. 实例前提第二个前提 x∈A 表示“个体 x 属于类 A”
    x∈Ax \in A
  4. 结论联立两条前提,得到 x 也属于 B
    x∈Bx \in B

图数据库关联:知识图谱住的电子书架

便签卡片和规则手册理论上很完美,但几千张卡片手写得累死管理员。现实中,知识图谱需要一个“电子书架”来存放,最常见的就是图数据库。市面上最流行的Neo4j采用属性图模型:节点(Node)和关系(Relationship)都可以自带属性键值对。这和RDF图非常像,但又有细微差别——RDF强调URI全局唯一和推理,属性图强调查询性能和灵活性。

工程上常用“映射与转换”把RDF数据搬进Neo4j:RDF的每个主体节点变成Neo4j的节点,每个谓词变成关系,客体若是URI则指向另一个节点、若是字面量则变成属性。反过来,Neo4j的节点和关系也能导出为RDF三元组。这就像把纸质卡片一本本扫描进电子系统,再用规则脚本自动校对分类号。

在实践中,Neo4j实战通常用Cypher查询语言:MATCH (n:学生)-[:属于]->(m:人) RETURN n 就能查出所有属于“人”的学生。而知识图谱应用在这套基座上遍地开花:搜索引擎用RDF图整理“实体—关系—实体”,在用户搜“苹果”时同时给出水果和科技公司的两条知识链;企业数据集成用OWL把多个数据库的表映射到统一本体,消除“同名不同义”的混乱;智能助手靠推理链把“用户想买手机”一步步连接到具体型号和门店。

从便签卡片到电子书架,RDF与OWL这对基石走完了从“记录事实”到“存储查询”的完整旅程。无论数据量多大、逻辑多复杂,底层始终是那两件法宝:用RDF把世界切成主谓宾的卡片,用OWL把卡片背后的规则说清楚。管理员终于可以悠闲地喝口茶——机器已经学会自己整理书架了。

G=(V,E),V←entity,E←⟨property,value⟩\displaystyle G = (V, E),\quad V \leftarrow \text{entity},\quad E \leftarrow \langle \text{property}, \text{value} \rangle
属性图的定义:一张图 G 由节点集合 V 和边集合 E 构成。RDF 图映射到属性图时,实体变成节点,属性与值变成边。
  1. 图的定义G=(V,E) 表示图由节点集合和边集合组成,是图数据库的通用骨架
    G=(V,E)G = (V, E)
  2. 节点来源V 从知识图谱的实体(人、书、地点)映射而来
    V←entityV \leftarrow \text{entity}
  3. 边的关系E 由“属性名 + 属性值”组成的有序对映射而来,对应 RDF 的谓词与客体
    E←⟨property,value⟩E \leftarrow \langle \text{property}, \text{value} \rangle

AI 应用场景

智能客服的意图推理

阶段:知识表示与推理

解决的问题:传统客服只能匹配预设关键词,用户说“手机屏幕碎了”系统识别不出“手机→硬件损坏→需维修”这条链路。用OWL构建本体后,系统能通过RDF三元组关联“手机”“屏幕”“损坏”,再沿“子类”“同义词”规则推理出用户诉求是“报修”。

具体案例:某电信运营商建了“设备—故障—服务”本体,把100万个用户问题映射为RDF三元组。当用户问“网速特别慢”,推理机根据“网速慢→网络故障∈报修类目”自动生成工单并推荐附近维修点,意图识别准确率从72%提升到91%。

金融风控的关联识别

阶段:数据集成与知识推理

解决的问题:银行贷款审批需要把企业、法人、担保人、关联公司的数据汇在一起查风险。传统SQL表难查“间接持股”关系,RDF三元组天然适合存“A持有B公司30%股份”,OWL推理能自动算出一度、二度关联。

具体案例:某风控平台用RDF整合工商、司法、舆情三源数据,构建“企业—人员—事件”本体。推理机识别出某贷款申请人的亲属是其关联公司的实控人(二度关联),触发风控预警,拦截了一笔价值800万的可疑贷款。

医疗辅助诊断的知识链

阶段:本体构建与规则推理

解决的问题:医学知识分散在教科书、药品说明书、临床指南里,推理机可以根据“症状→疾病→用药”的OWL规则,基于病人症状三元组辅助医生缩小诊断范围。

具体案例:某三甲医院AI辅助系统内置“症状-疾病-药物”本体(含2万类、30万条RDF三元组)。输入“发热、咳嗽、胸痛”后,推理机通过类层次与属性约束优先推荐“肺炎”(而非简单感冒),并在几秒内给出备选检查和一线用药建议。

Python 演示

python50 行
#!/usr/bin/env python3"""微型 RDF 图 + RDFS 推理演示用 Python 原生数据结构实现三元组存储和子类推理,模拟知识图谱中 "由事实推出新事实" 的过程。"""  class MiniRDF:    def __init__(self):        self.triples = []          # 三元组列表,每项 (s, p, o)        self.subclass_pairs = []   # 子类关系列表 ((sub, super))     def add_triple(self, s, p, o):        """添加一条 RDF 三元组"""        self.triples.append((s, p, o))     def add_subclass(self, sub, sup):        """添加 owl:subClassOf 关系"""        self.subclass_pairs.append((sub, sup))     def infer_type(self):        """RDFS 规则: A subClassOf B 且 x rdf:type A => x rdf:type B"""        inferred = []        for (s, p, o) in self.triples:            if p == "type":                for (sub, sup) in self.subclass_pairs:                    if o == sub:                        inferred.append((s, "type", sup))        return inferred     def show(self, triples):        for (s, p, o) in triples:            print("  {} -> {} -> {}".format(s, p, o))  if __name__ == "__main__":    g = MiniRDF()     # 知识卡片(RDF 三元组)    g.add_triple("张三", "type", "学生")    g.add_triple("李四", "type", "教师")     # 分类规则(OWL 本体)    g.add_subclass("学生", "人")    g.add_subclass("教师", "人")     print("==== 原始 RDF 事实 ====")    g.show(g.triples)    print("==== RDFS 推理结果 ====")    g.show(g.infer_type())
目的:用100行不到的Python实现一个极简RDF图存储与RDFS推理引擎,演示“张三是学生 + 学生是人 → 张三是人”的推理链条。
  1. class MiniRDF:定义一个微型知识图谱容器,包含三元组列表和子类关系列表,对应于RDF图与OWL本体两个组件。
  2. self.triples.append((s, p, o))存储一条主谓宾三元组,是知识图谱的最小单元,与正文中的 RDF 卡片一一对应。
  3. self.subclass_pairs.append((sub, sup))记录“学生 ⊑ 人”这类子类规则,相当于 OWL 的 subClassOf 公理。
  4. def infer_type(self):推理引擎核心,实现RDFS最经典的“子类继承”推理规则。
  5. if p == "type":筛选出所有“实例属于某类”的事实,因为只有这类事实才能触发子类推理。
  6. for (sub, sup) in self.subclass_pairs:遍历每条子类规则,检查当前实例所属的类是否有父类。
  7. inferred.append((s, "type", sup))推理机自动生成新的三元组“张三是人”,这正是知识图谱“由已知推未知”的魔法所在。

常见误区

误区RDF 三元组和关系数据库的表不是一样的吗?都是存数据,“张三、属于、学生”就是一张三列表格的行。

正解关系数据库是“固定表头”的结构,每行必须对齐列;RDF 是无模式的有向图,每张卡片可以有不同的谓词,不需要预先定义列。好比图书馆手写卡片每张格式自由,而数据库表格像统一印刷的报表纸——RDF 的灵活性更高,尤其适合数据结构经常变化的知识场景。

为何常见:初学者看到三元组的“三列表”外形,自然联想到关系表。但RDF的图结构允许任意连接、缺省属性、多值属性,这是表结构难以企及的。

误区既然 OWL 文件也能用 Turtle 语法写,它不就是 RDF 的一种序列化吗?

正解RDF 描述“事实”,OWL 描述“概念与规则”,两者是不同层次的语言。RDF 告诉机器“张三是学生”,OWL 告诉机器“'学生'和'人'是什么关系”,并允许推理机从已知事实推出新事实。如果 RDF 是便签卡片,OWL 就是那张写着分类规则的手册——手册本身也能用卡片形式书写,但手册的内容是“规则”而非“事实”。

为何常见:OWL 文件确实建立在 RDF 语法之上(OWL 本体可以被序列化为 RDF),初学者看到语法相同就误以为是同一事物的两种写法。

误区我把所有知识都写成三元组不就行了?为什么还要费劲做本体?

正解只存三元组等于只有一堆孤立卡片,没有规则连接。没有 OWL 时,“张三是学生”和“学生是人”是两个互不相干的卡片,机器无法推出“张三是人”。OWL 提供类层次、属性约束、推理规则,让机器把卡片串成智能网络。没有 OWL 的 RDF 是“死”数据,有了 OWL 的 RDF 才能自动生长出新知识。

为何常见:早期学习 RDF 时只关注“如何写三元组”,忽略了“如何定义词汇表背后的逻辑”,直到遇到推理需求才发现 RDF 孤立的三元组推不出结论。

误区Turtle 有语法、有缩写规则,还能用分号句号,它应该是某种编程语言吧?

正解Turtle 是数据格式,不是编程语言。它没有变量、循环、函数,只是把三元组写成人和机器都易读的文本。类比的话,Turtle 像图书馆的卡片目录格式——有书写规范但没有计算逻辑。真正执行推理的是 Python/Java 写的推理机,Turtle 只是知识的“书写载体”。

为何常见:Turtle 的语法形式(前缀声明、缩写、分号)看起来很像代码,初学者容易把它和“能运行的程序”混为一谈。

面试题

Q1. RDF 三元组的核心三要素是?

单选题 · easy

  • A.主体、谓词、客体← 正确答案
  • B.表名、字段、行值
  • C.节点、边、权重
  • D.类、属性、实例

答案:A。RDF 三元组由主体(s)、谓词(p)和客体(o)构成,对应“谁-关系-谁”。表名/字段/行值是关系数据库概念,节点/边/权重是图计算概念,类/属性/实例是 OWL 本体概念。RDF 的核心是主谓宾,这是知识卡片的最小单元。

Q2. 在 RDF 中,主体和谓词必须用什么来全局唯一标识?

单选题 · easy

  • A.字符串
  • B.URI← 正确答案
  • C.整数
  • D.标签

答案:B。RDF 要求主体和谓词用 URI 标识,保证全球唯一性,就像身份证号。字符串会撞名,整数没有语义,标签不是标准语法。URI 让“张三”不再是模棱两可的名字,而是唯一定位的资源。

Q3. 以下哪些是常见的 RDF 序列化格式?

多选题 · mid

  • A.Turtle← 正确答案
  • B.JSON-LD← 正确答案
  • C.RDF/XML← 正确答案
  • D.SQL

答案:ABC。Turtle、JSON-LD、RDF/XML 都是 RDF 的标准序列化方式,分别对应便签式、JSON 式、XML 式书写。SQL 是关系数据库的查询语言,与 RDF 序列化无关。三种格式表达的三元组内容完全一致,只是语法不同。

Q4. OWL 在 RDF 之上主要增加了什么能力?

单选题 · mid

  • A.数据存储
  • B.逻辑推理← 正确答案
  • C.加密传输
  • D.索引查询

答案:B。OWL 在 RDF 之上提供本体建模(类层次、属性约束)和逻辑推理能力。RDF 只负责存储事实,OWL 定义规则并让推理机从已知推未知。数据存储是图数据库的功能,加密传输是网络安全范畴,索引查询是数据库引擎的职责。

Q5. OWL 中属性的两大类型是?

多选题 · mid

  • A.对象属性← 正确答案
  • B.数据属性← 正确答案
  • C.主键属性
  • D.外键属性

答案:AB。对象属性连接两个对象(如“作者”连接书与人),数据属性连接对象与字面量(如“出版年份”连接书与2008)。主键/外键是关系数据库术语,不属于 OWL 属性分类。

Q6. 已知“学生 ⊑ 人”且“张三 ∈ 学生”,根据 RDFS 推理规则能推出?

单选题 · mid

  • A.张三 ∈ 人← 正确答案
  • B.人 ∈ 张三
  • C.学生 = 人
  • D.张三 ∉ 人

答案:A。这是最典型的三段论推理:如果某类是另一个类的子类,且个体属于子类,则该个体必然属于父类,即“张三是学生,学生是人,所以张三是人”。选项B方向颠倒,C表示等价而非包含,D违背推理结论。

Q7. 下列哪个语句表示“学生是人”的子类关系?

单选题 · easy

  • A.学生 属于 人
  • B.学生 子类 人
  • C.学生 ⊑ 人← 正确答案
  • D.学生 = 人

答案:C。OWL 中用符号 ⊑(或 rdfs:subClassOf)表示“是……的子类”。“属于”是 RDF 的实例关系,“子类”是中文口语,"="表示等价类而非子类。C 是标准的 OWL 类层次符号。

Q8. 把 RDF 图映射到 Neo4j 属性图时,下列哪些做法是正确的?

多选题 · hard

  • A.主体节点变为图节点← 正确答案
  • B.谓词变为关系类型← 正确答案
  • C.客体若是字面量变为属性← 正确答案
  • D.所有客体都变成独立节点

答案:ABC。RDF 三元组映射到属性图时,主体变为节点、谓词变为关系、字面量客体变为节点属性。URI 客体指向另一个节点,但字面量(数字、字符串等)不需要变成节点,所以D错误。这种映射让知识图谱能高效存储在 Neo4j 中。

Q9. 基数约束 “学生 ⊑ =1 有学号” 的含义是什么?

单选题 · mid

  • A.每个学生至少有一个学号
  • B.每个学生恰好有一个学号← 正确答案
  • C.每个学生最多有一个学号
  • D.每个学生不能有学号

答案:B。基数约束 =1 表示“恰好一个”——既不能没有,也不能多。≥1 表示至少一个,≤1 表示最多一个。这像编目细则规定“每本书必须有且只有一个ISBN”,既防止漏填也防止重复填。

Q10. 知识图谱中“本体”(Ontology)最贴近下列哪个比喻?

单选题 · easy

  • A.一本分类规则手册← 正确答案
  • B.一叠便签卡片
  • C.一个电子书柜
  • D.一台打印机

答案:A。本体定义概念、类层次、属性约束与推理规则,就像图书馆的“分类规则手册”——规定哪些类目存在、谁是谁的上级、每个类目必须有哪些属性。便签卡片对应 RDF 三元组,电子书柜对应图数据库,打印机可对应序列化输出工具。