从零构建你的第一个本体:用 Protégé 实践符号 AI 知识库建模(AI-For-Beginners 第 2 课作业实战指南)

发布时间:2026/10/9 2:33:06
从零构建你的第一个本体:用 Protégé 实践符号 AI 知识库建模(AI-For-Beginners 第 2 课作业实战指南) 教程人工智能机器学习深度学习【免费下载链接】AI-For-Beginners12 Weeks, 24 Lessons, AI for All!项目地址https://gitcode.com/GitHub_Trending/ai/AI-For-Beginners点击查看免费下载本体Ontology是符号主义 AI 中“知识表示”的核心产物它用形式化的方式把某个领域的事实与概念层级固化下来从而让计算机能够自动推理。本指南围绕 AI-For-Beginners 课程lessons/2-Symbolic的课后作业 assignment.md完整讲解“如何选定主题并构建一个本体”并结合仓库内的 FamilyOntology.ipynb、Animals.ipynb、onto.ttl 等源码级素材帮助你掌握知识表示、OAV 三元组、产生式规则、AND-OR 树与 Protégé 建模实战。作业解读这堂课要你做什么作业原文的核心任务只有一句话选择一个人、一个地点或一个事物作为主题然后为它构建一个模型本体并用本课学到的建模技术与策略去实现。为了让任务可落地作业给出了一个非常具体的示例创建一个客厅living room的本体包含家具、灯光等元素。客厅和厨房有何不同和浴室呢你凭什么判断这是客厅而不是餐厅这三个追问背后其实对应了本体建模中最重要的三个能力类别界定class 与 instance客厅、厨房、浴室、餐厅不是“事物个体”而是对空间类型的概念分类你需要定义这些类并明确它们的区别属性刻画slot / property客厅有“有沙发”“有电视”“有壁炉”等属性而厨房有“有炉灶”“有水池”——通过属性组合才能区分不同空间形式化表达triplet / OWL把“客厅–包含–沙发”写成机器可读的三元组让推理机能够自动回答“这是什么房间”。课程正文lessons/2-Symbolic/README.md在作业之前铺垫了完整的概念体系知识knowledge与数据data、信息information的区别DIKW 金字塔以及网络式、层级式、过程式、逻辑式四类知识表示方法。构建本体正是把这些概念落到实际建模中的练习。建模前必读本课的核心知识表示概念在动手之前先建立三组关键概念它们决定了你的本体会被建成什么样。从三元组到语义网络知识可以表示为对象-属性-值OAV三元组。课程 README 以编程语言为例给出了一个典型表格对象Object属性Attribute值ValuePythonisUntyped-LanguagePythoninvented-byGuido van RossumPythonblock-syntaxindentationUntyped-Languagedoesnt havetype definitions一个三元组就是图的一条边对象是节点属性是边标签值指向另一个节点或字面量。多个三元组拼起来就是一张语义网络semantic network。本课作业要求你建模的“客厅/厨房/浴室”就是一张以空间类型为节点、以“包含/具有/区别于”为边的小型语义网络。框架表示与层级结构框架frame把每个对象或对象类描述为一个带槽位slot的模板槽位可以有默认值、取值约束或求值过程。README 中 Python 的框架示意槽位Slot值Value默认值Default value取值范围IntervalNamePythonIs-AUntyped-LanguageVariable CaseCamelCaseProgram Length5-5000 linesBlock SyntaxIndent注意这里“Is-A”槽位让框架自然形成类层级——这正是本体ontology最朴素的形态一个领域内的对象层级树。客厅和餐厅都是“房间”的子类就是一条Is-A关系。产生式规则与 AND-OR 树过程式知识表示把知识写成一串“当条件满足时执行动作”的规则即 if-then 产生式。课程给出的食肉动物判定规则是经典示例IF the animal eats meat OR (animal has sharp teeth AND animal has claws AND animal has forward-looking eyes ) THEN the animal is a carnivore这样的规则可以用AND-OR 树画出来——AND 分支要求所有子条件同时成立OR 分支只需其一成立。仓库里的 Animals.ipynb 正是用这张 AND-OR 树实现了一个完整的动物识别专家系统详见下文“源码印证”。在你自己的客厅本体里完全可以写一条规则“IF有沙发AND有茶几AND有电视THEN这是一个客厅”。使用 Protégé 构建你的本体分步实战作业明确要求使用 Protégé上图为 Web Protégé 打开罗曼诺夫家族本体的界面课程 README 原图左侧Individuals by Class面板按类展示个体中间区域展示所选个体Fedor Alekseevich Romanov的 IRI、Annotations、Types 与 Relationships 断言右侧为备注面板。你可以参照这个布局完成自己的建模。下面以“客厅本体”为例给出可复现的完整步骤。第 1 步定义类层级Classes在 Protégé 的Classes页签创建层级Thing └── Room房间父类 ├── LivingRoom客厅 ├── Kitchen厨房 ├── Bathroom浴室 └── DiningRoom餐厅这一步对应课程 README 的“层级式表示”框架通过Is-A槽位形成对象层级。定义好父类后子类自动继承父类的属性约束。第 2 步定义对象属性Object Properties在Object Properties页签声明类与类、个体与个体之间的关系属性定义域domain值域range含义containsRoomFurniture房间包含家具hasLightingRoomLighting房间有灯光isDistinguishedByRoomFeature房间以某特征区分可以给属性添加约束如contains是反自反的并为每个属性声明逆属性如isContainedIn是contains的逆Protégé 会在Inverse Of栏中维护。第 3 步定义个体Individuals切换到Individuals页签为每个类创建实例LivingRoom 类下my_sofa沙发、coffee_table茶几、floor_lamp落地灯Kitchen 类下stove炉灶、sink水池Bathroom 类下bathtub浴缸、shower淋浴DiningRoom 类下dining_table餐桌、chairs餐椅。然后在Property assertions面板中把个体与属性断言连起来例如断言my_living_room contains my_sofa。做完这些断言你就已经把“客厅包含沙发、落地灯”写成了一组机器可读的三元组。第 4 步用规则与推理回答作业的追问作业的追问——“客厅和厨房有什么不同你凭什么判断这是客厅而不是餐厅”——可以用两种方式回答直接断言为每个房间类添加必要属性如 LivingRoom 有contains some SofaKitchen 有contains some Stove推理机据此区分产生式规则定义规则“IF有沙发AND有茶几THEN是客厅”推理机在遇到新个体时自动归类。启用 Protégé 的推理机如 HermiT、Pellet运行后可以看到推理机自动把满足条件的个体归类到对应房间类型——这就是本课“知识表示 推理”两个大概念见 README 引言在工具层面的落地。源码印证仓库里三个可参考的建模范式作业虽然只需要一个客厅本体但仓库lessons/2-Symbolic目录下有三个 notebook 从不同角度演示了本体/知识库的构建与推理是你扩展作业深度的最佳范本。范式一自己写推理机反向推理——Animals.ipynbAnimals.ipynb 用 Python 实现了一个专家系统外壳expert systems shell核心是三类语法类Ask表示需要向用户提问的叶子节点包含候选答案默认[y,n]多选时打印编号菜单If产生式规则的语法糖容器AND/ORAND-OR 树分支仅存放参数列表。知识库被定义为一个rules字典把“动作要写入工作记忆的新事实”映射到“条件AND-OR 表达式”例如rules { default: Ask([y,n]), color : Ask([red-brown,black and white,other]), pattern : Ask([dark stripes,dark spots]), mammal: If(OR([hair,gives milk])), carnivor: If(OR([AND([sharp teeth,claws,forward-looking eyes]),eats meat])), ungulate: If([mammal,OR([has hooves,chews cud])]), animal:giraffe : If([ungulate,long neck,long legs,pattern:dark spots]), animal:zebra : If([ungulate,pattern:dark stripes]), ... }KnowledgeBase类维护memory工作记忆即“属性→值”的字典并实现两个核心方法get(name)获取某属性值必要时触发推理对color:blue这类带:的形式会递归求值color后返回y/neval(expr)递归遍历 AND/OR 表达式求值——AND 任一子条件为n即短路返回nOR 任一子条件为y即返回y字符串叶子则回落到get。运行kb.get(animal)时系统会按需向你提问y/n或编号多选最终根据你的回答推断出动物种类。这一过程演示了 README 中描述的反向推理backward inference由目标驱动只询问与结论相关的条件。范式二用 Experta 做正向推理——Animals.ipynb同一个 notebook 的第二部分使用 Experta受经典 CLIPS 启发的 Python 正向推理库实现同一套动物知识库。关键点在于继承KnowledgeEngine用Rule装饰器声明规则、用declare在规则体内插入新事实from experta import * class Animals(KnowledgeEngine): Rule(OR( AND(Fact(sharp teeth),Fact(claws),Fact(forward looking eyes)), Fact(eats meat))) def cornivor(self): self.declare(Fact(carnivor)) Rule(Fact(animalMATCH.a)) def print_result(self,a): print(Animal is {}.format(a))初始化事实后调用run()正向推理引擎会逐条触发规则、不断向工作记忆添加新事实直到推导出Fact(animaltiger)这类结论。这也是 README 中**正向推理forward inference**的完整实现。值得注意的是 notebook 中说明Expert 这类库底层使用Rete 算法做高效规则匹配避免朴素实现带来的性能问题——这正是“专家系统外壳”优于自己手写推理循环的原因之一。范式三语义网技术与 SPARQL 推理——FamilyOntology.ipynbFamilyOntology.ipynb 演示了最贴近“本体”的技术栈用OWL/RDF 三元组 自动推理构建家谱本体。流程分四步解析家谱数据用python-gedcom库读取 tsars.gedGEDCOM 5.5 格式的罗曼诺夫王朝族谱得到 41 个个体与 15 个家庭读取本体加载 onto.ttlTurtle 格式。该本体用 OWL 定义了isFatherOf、isMotherOf、isBrotherOf、isSisterOf等基础谓词并用owl:propertyChainAxiom属性链公理定义复合关系例如“姑/姨 某人的母亲的姐妹”fhkb:isAuntOf a owl:ObjectProperty ; rdfs:domain fhkb:Woman ; rdfs:range fhkb:Person ; owl:propertyChainAxiom ( fhkb:isSisterOf fhkb:isParentOf ) .合成三元组把 GEDCOM 中每个个体按性别转成isMotherOf/isFatherOf、isSisterOf/isBrotherOf断言附加到onto.ttl尾部形成“规则 事实”的完整本体文件推理并查询用rdflib解析图用owlrl的DeductiveClosure(OWLRL_Extension).expand(g)计算推理闭包。从原始 669 条三元组扩张到 4246 条再用SPARQL查询出所有叔伯关系SELECT DISTINCT ?aname ?bname WHERE { ?a fhkb:isUncleOf ?b . ?a rdfs:label ?aname . ?b rdfs:label ?bname . }输出Fedor Alekseevich Romanov is uncle of Ekaterina Ivanovna Romanova Aleksandr I Pavlovich Romanov is uncle of Aleksandr II Nikolaevich Romanov Fedor Alekseevich Romanov is uncle of Anna Ivanovna Romanova这个 notebook 还特别指出代码中暂未处理收养家庭len(parent_families)1的情况被跳过这是你可以继续改进的作业扩展点。相关数据结构onto.ttl 中的hasGrandParent、isFirstCousinOf等属性链定义完整展示了“用 OWL 公理表达复杂亲属关系”的建模思路对你的客厅本体设计极具参考价值。评估与扩展让作业从“交差”变成“作品”完成基础本体后建议按以下梯度自我评估并扩展这正好呼应 README 课后挑战中“发现新关系”的练习精神达到合格类层级清晰、对象属性带 domain/range、至少 5 个个体并完成关系断言达到良好引入至少 1 条产生式规则或 OWL 属性链公理并启用推理机验证自动归类参考 onto.ttl 中owl:propertyChainAxiom的写法例如为客厅本体定义hasSeatingArea由contains some Sofa推出达到优秀对照 FamilyOntology 的流水线把自己的客厅本体导出为 Turtle/OWL 文件用rdflib解析并用 SPARQL 查询“哪些空间包含落地灯”“哪些空间没有炉灶”复现“规则 事实 → 闭包 → 查询”的完整链路进阶挑战阅读 README 的 Review Self Study 建议研究林奈生物分类、门捷列夫元素周期表这类“人类试图量化与编码知识”的历史案例思考它们与本体建模的异同——这能帮助你回答作业里“客厅和厨房到底差在哪”这类边界划分问题。小结本课作业虽然篇幅很短但它要求你把整章“知识表示”的理论OAV 三元组、框架、产生式规则、AND-OR 树、OWL/语义网落到一个可运行、可推理的具体模型上。本文给出的路径是先理解三元组与框架两类基础表示 → 用 Protégé 完成类、属性、个体三步建模 → 再用仓库中 Animals.ipynb自写反向推理 Experta 正向推理与 FamilyOntology.ipynbOWL-RL 推理 SPARQL 查询的源码范式为自己的本体注入推理能力。完成这一步你就真正掌握了一个符号 AI 知识库从抽取、形式化到自动推理的完整闭环。注lessons/2-Symbolic/assignment.md在仓库中另有 希伯来语译本本文内容以英文原版作业为准。赞分享教程人工智能机器学习深度学习【免费下载链接】AI-For-Beginners12 Weeks, 24 Lessons, AI for All!项目地址https://gitcode.com/GitHub_Trending/ai/AI-For-Beginners点击查看免费下载相关推荐用 Protégé 构建领域本体AI-For-Beginners 符号 AI 第 2 课作业实战指南用 Protégé 构建领域本体AI For Beginners 符号 AI 第 2 课作业实战指南 在 AI For Beginners 课程第 2 课《知教程人工智能机器学习深度学习构建知识本体OntologyAI-For-Beginners 符号 AI 课程作业的 Protégé 实战指南构建知识本体OntologyAI For Beginners 符号 AI 课程作业的 Protégé 实战指南 构建知识库的本质是把关于某个主题的事实提教程人工智能机器学习深度学习基于 Protégé 构建本体AI-For-Beginners 符号 AI 课程的知识库建模实战基于 Protégé 构建本体AI For Beginners 符号 AI 课程的知识库建模实战 导读 本篇文章围绕 AI For Beginners 课程教程人工智能机器学习深度学习上一篇Celo生态系统集成如何将DApp接入Celo网络的完整教程下一篇终极指南5分钟用Nock搞定WebSocket实时数据测试创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询