建本體論(Ontology):從知識表示理論到 Protégé 與 RDF 推理實戰(zhàn))
教程人工智能機器學習深度學習【免費下載鏈接】AI-For-Beginners12 Weeks, 24 Lessons, AI for All!項目地址https://gitcode.com/GitHub_Trending/ai/AI-For-Beginners點擊查看免費下載導讀本文圍繞 AI-For-Beginners 課程第 2 課《知識表示與專家系統(tǒng)》lessons/2-Symbolic/README.md配套作業(yè)Build an Ontology展開完整解讀作業(yè)要求并結(jié)合倉庫內(nèi)FamilyOntology.ipynb、Animals.ipynb等真實實現(xiàn)帶你走通選擇主題 → 用符號知識表示技術(shù)建模 → 用 Protégé 編輯本體 → 用 RDF/OWL 做自動推理與 SPARQL 查詢的完整鏈路。讀完本文你將能夠獨立為一個具體領(lǐng)域如居室、人物、地點設(shè)計并實現(xiàn)一個可推理的本體。作業(yè)原文與核心要求解讀作業(yè)原文見 translations/fi/lessons/2-Symbolic/assignment.md給出了一段精煉的任務描述其核心包含五個要點構(gòu)建知識庫即建模知識庫knowledge base的構(gòu)建本質(zhì)上是對一個描述特定主題事實的模型進行分類和組織自主選題選擇一個主題——可以是人person、地點place或事物thing——然后為該主題構(gòu)建模型復用課程技術(shù)必須運用本課中講解的建模技術(shù)與策略詳見下文知識表示方法一節(jié)示例場景作業(yè)給出的參考例子是居室本體living room ontology要求包含家具、燈具等元素并回答判別性問題——客廳與廚房有何區(qū)別與浴室呢如何判斷它是客廳而不是餐廳指定工具使用Protégé可視化本體編輯器完成構(gòu)建作業(yè)中給出的是 Protégé 項目官網(wǎng)地址請自行檢索獲取該工具可下載桌面版或使用 Web 版。這段作業(yè)描述雖短卻指向了符號 AI 課程中一個完整的實踐閉環(huán)從現(xiàn)實世界抽取概念與關(guān)系知識表示到形式化建模本體再到可計算推理。下面逐一展開。先建立理論地基知識表示與本體在課程中的定位作業(yè)要求運用本課講到的建模策略因此必須理解本課lessons/2-Symbolic/README.md給出的知識表示框架知識與數(shù)據(jù)的區(qū)別DIKW 金字塔課程用 DIKW 金字塔區(qū)分四個層次Data數(shù)據(jù)存在于物理介質(zhì)上的符號如書面文字、語音Information信息我們在大腦中對數(shù)據(jù)的解讀如聽到computer一詞時產(chǎn)生的理解Knowledge知識被整合進世界觀模型的信息例如了解計算機后進而知道它如何工作、價格幾何、能做什么——這種相互關(guān)聯(lián)的概念網(wǎng)絡即知識Wisdom智慧關(guān)于何時、如何運用知識的元知識。據(jù)此知識表示knowledge representation的任務就是找到一種有效方式把人類頭腦中的知識以數(shù)據(jù)形式存入計算機并使之可自動利用。四種計算機知識表示方法作業(yè)建模策略的來源課程把計算機知識表示分為四類這四類正是作業(yè)中建模策略的直接理論來源網(wǎng)絡表示——對象-屬性-值OAV三元組語義網(wǎng)絡可用節(jié)點與邊構(gòu)成的圖表示落成數(shù)據(jù)就是對象、屬性、值三元組列表。課程示例Object對象Attribute屬性Value值PythonisUntyped-LanguagePythoninvented-byGuido van RossumPythonblock-syntaxindentationUntyped-Languagedoesnt havetype definitions層次表示——框架Frame與槽Slot把每個對象/對象類表示為一個包含槽的框架槽可有默認值、值域限制或求值過程所有框架構(gòu)成類似面向?qū)ο笳Z言中的對象層級。例如 Python 語言的框架表示SlotValueDefault valueIntervalNamePythonIs-AUntyped-LanguageVariable CaseCamelCaseProgram Length5-5000 linesBlock SyntaxIndent過程表示——產(chǎn)生式規(guī)則Production Rules用 IF-THEN 語句表達推理例如IF病人高燒OR血液 C 反應蛋白偏高THEN存在炎癥。課程展示了對應的 AND-OR 樹見 lessons/2-Symbolic/images/AND-OR-Tree.png與規(guī)則文本形式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邏輯表示——描述邏輯Description Logic語義網(wǎng)等分布式知識表示依賴描述邏輯家族它構(gòu)建帶屬性與形式語義的對象層級并在表達能力與推理復雜度之間取得平衡。本體Ontology的精確定義課程給出本體的定義對一個問題域problem domain用某種形式化知識表示所做的顯式說明。最簡單的本體可以只是問題域中對象的一個層次結(jié)構(gòu)更復雜的本體則包含可用于推理的規(guī)則。在語義網(wǎng)中一切表示都基于三元組對象與關(guān)系均以 URI 唯一標識——這也是作業(yè)用 Protégé 構(gòu)建本體時背后運作的表示范式。倉庫參考實現(xiàn)一FamilyOntology.ipynb——用 RDF/OWL 構(gòu)建并推理一個真實本體本課配套的 FamilyOntology.ipynb 是與作業(yè)同構(gòu)的完整參考實現(xiàn)作業(yè)是構(gòu)建居室本體它是構(gòu)建家族關(guān)系本體流程可直接遷移。倉庫還提供了配套數(shù)據(jù)文件lessons/2-Symbolic/data/tsars.ged羅曼諾夫沙皇家族譜系GEDCOM 格式與 lessons/2-Symbolic/data/onto.ttl家族關(guān)系本體Turtle 格式。第 1 步解析領(lǐng)域數(shù)據(jù)GEDCOM 家譜代碼用python-gedcom庫解析家譜文件from gedcom.parser import Parser from gedcom.element.individual import IndividualElement from gedcom.element.family import FamilyElement g Parser() g.parse_file(data/tsars.ged) d g.get_element_dictionary() # 遍歷個體與家庭元素提取姓名、性別、子女、兄弟姐妹、婚姻關(guān)系解析后可得到全部 41 位沙皇家族成員如0Mihail Fedorovich Romanov、39Nikolaj II Aleksandrovich Romanov以及 15 個家庭單元的成員列表。第 2 步編寫本體onto.ttl 中的 OWL 對象屬性onto.ttl用 Turtle 語法定義了本體骨架核心手法包括等價類定義fhkb:Woman被定義為Person與具有hasSex屬性指向Female約束的交集owl:intersectionOfowl:Restriction子屬性與逆屬性isBrotherOf/isSisterOf聲明為isSiblingOf的子屬性isChildOf是hasChild的逆屬性owl:inverseOf屬性鏈公理property chain axiomisAuntOf被定義為isSisterOf與isParentOf的鏈式組合阿姨 某人之父/母的姐妹fhkb:isAuntOf a owl:ObjectProperty ; rdfs:domain fhkb:Woman ; rdfs:range fhkb:Person ; owl:propertyChainAxiom ( fhkb:isSisterOf fhkb:isParentOf ) .對稱與傳遞屬性isSiblingOf同時聲明為owl:SymmetricProperty與owl:TransitiveProperty。第 3 步生成實例三元組notebook 遍歷 GEDCOM 數(shù)據(jù)結(jié)構(gòu)把每個個體轉(zhuǎn)換成fhkb:i0之類的命名個體NamedIndividual并依據(jù)性別寫出isMotherOf/isFatherOf、isSisterOf/isBrotherOf關(guān)系三元組婚姻關(guān)系寫成hasFemalePartner/hasMalePartner最后追加owl:AllDifferent聲明保證個體互異合并成一個完整的onto.ttl。第 4 步用 OWL-RL 做演繹閉包推理import rdflib from owlrl import DeductiveClosure, OWLRL_Extension g rdflib.Graph() g.parse(onto.ttl, formatturtle) print(Triplets found:%d % len(g)) # 推理前669 DeductiveClosure(OWLRL_Extension).expand(g) print(Triplets after inference:%d % len(g)) # 推理后4246僅基于isMotherOf/isFatherOf/isBrotherOf/isSisterOf四個基礎(chǔ)謂詞閉包推理將三元組從 669 條擴充到 4246 條——這正是本體可用于推理的直觀證據(jù)復雜的親屬關(guān)系舅舅、堂親、祖先等無需逐條手工錄入全部由推理機自動推導。第 5 步SPARQL 查詢推理結(jié)果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這樣的關(guān)系。課程同時提示可以繼續(xù)實驗isAncestorOf遞歸定義所有祖先等關(guān)系——這正是本課 README 末尾 Challenge 的內(nèi)容在 Family Ontology notebook 中嘗試發(fā)現(xiàn)家譜中人物之間的新連接。倉庫參考實現(xiàn)二Animals.ipynb——專家系統(tǒng)外殼與推理引擎另一個值得參考的實現(xiàn)是 Animals.ipynb它演示了不依賴本體工具、用純 Python 實現(xiàn)小型專家系統(tǒng)外殼的路線與作業(yè)從零建模的思路互補用Ask、If、AND、OR四個類作為知識表示語言的關(guān)鍵字把產(chǎn)生式規(guī)則寫成字典例如rules { color : Ask([red-brown,black and white,other]), mammal: If(OR([hair,gives milk])), carnivor: If(OR([AND([sharp teeth,claws,forward-looking eyes]),eats meat])), animal:tiger : If([mammal,carnivor,color:red-brown,pattern:dark stripes]), animal:giraffe : If([ungulate,long neck,long legs,pattern:dark spots]), ... }KnowledgeBase類實現(xiàn)逆向推理get()負責獲取屬性值必要時向用戶提問并緩存到工作記憶memoryeval()遞歸求值 AND/OR 樹當目標屬性被證明時即得出答案示例會話最終推理出giraffenotebook 后半部分使用Experta庫CLIPS 風格的 Python 前向推理庫演示正向推理并指出高效規(guī)則匹配通常依賴 Rete 算法。該 notebook 提供了作業(yè)所需的建模策略的兩種落地范式手寫規(guī)則引擎逆向推理與庫驅(qū)動的正向推理。課程 README 提醒這類系統(tǒng)通常要積累200 條以上規(guī)則才會表現(xiàn)出明顯的智能行為但其關(guān)鍵優(yōu)勢在于——任何決策都可以精確解釋。實戰(zhàn)指南用 Protégé 從零構(gòu)建居室本體結(jié)合上面的理論與參考實現(xiàn)按作業(yè)要求完成居室本體的推薦步驟步驟 1界定問題域與判別性問題先回答作業(yè)提出的判別性問題這決定本體的類Class層次客廳與廚房的區(qū)別功能娛樂/待客 vs 烹飪、包含物沙發(fā)/茶幾/電視 vs 灶具/水槽/冰箱、通常常駐人員客廳與浴室的區(qū)別是否含水設(shè)施、私密性、地面材質(zhì)客廳 vs 餐廳是否以進餐為主要功能、是否有餐桌與餐椅、與廚房的空間關(guān)系。這些區(qū)別就是本體的屬性Property與約束Restriction的素材來源。步驟 2抽取類層次與對象屬性參照onto.ttl的寫法定義Room為頂層類LivingRoom/Kitchen/Bathroom/DiningRoom為其子類用rdfs:subClassOf定義hasFurniture、hasLighting、contains等對象屬性并用owl:propertyChainAxiom定義復合關(guān)系如餐廳是包含餐桌的房間。步驟 3使用 Protégé 編輯下載桌面版或使用 Web 版 Protégé新建 Ontology 后在Classes標簽頁建類、在Object Properties標簽頁建屬性、在Individuals標簽頁填充實例最終導出為 RDF/XML 或 Turtle 文件。倉庫中 lessons/2-Symbolic/images/protege.png 展示了 Web Protégé 編輯器打開羅曼諾夫家族本體的界面該本體正是FamilyOntology.ipynb所處理的對象可作為你編輯居室本體時的界面參照。步驟 4掛接推理與查詢遷移參考實現(xiàn)的第 4、5 步把 Protégé 導出的 Turtle 文件交給 rdflib OWL-RL 做閉包推理再用 SPARQL 回答作業(yè)中的判別性問題例如SELECT DISTINCT ?room WHERE { ?room a :LivingRoom . ?room :hasFurniture :Sofa . }只要本體中把有沙發(fā)/茶幾/電視定義為LivingRoom的必要條件Restriction推理機就能自動把符合特征的實例歸類為客廳從而證明它是客廳而不是餐廳——這正是本體的形式化語義帶來的自動推理能力??沈炞C的驗收清單完成作業(yè)后建議按以下清單自檢依據(jù)均來自倉庫內(nèi)可查閱的實體類層次完備本體包含主題域的頂層類與至少兩層子類可參照 lessons/2-Symbolic/data/onto.ttl 中的類定義語法屬性豐富同時包含對象屬性與屬性約束domain/range并至少使用一次owl:propertyChainAxiom定義復合關(guān)系實例真實至少填充若干 NamedIndividual并添加owl:AllDifferent保證實例互異參考 FamilyOntology.ipynb 的個體生成邏輯推理可用運行 OWL-RL 演繹閉包后三元組數(shù)量顯著增長參考實現(xiàn)中從 669 增長到 4246查詢可答用 SPARQL 能夠回答你預先提出的判別性問題如某房間為什么是客廳而非餐廳??偨Y(jié)本課作業(yè)Build an Ontology看起來只是一句話的任務但它把符號 AI 的核心思想完整串了起來從 DIKW 金字塔區(qū)分數(shù)據(jù)與知識到 OAV 三元組/框架/產(chǎn)生式規(guī)則/描述邏輯四種表示方法再到用 Protégé 編輯、用 RDF/OWL 編碼、用推理機演繹、用 SPARQL 查詢的本體工程全流程。倉庫中的 FamilyOntology.ipynbRDF/OWL 路線與 Animals.ipynb規(guī)則引擎路線提供了兩條可直接借鑒的完整實現(xiàn)讓你可以立刻動手把客廳 vs 餐廳這類樸素的生活直覺翻譯成機器可推理的形式化知識。贊分享教程人工智能機器學習深度學習【免費下載鏈接】AI-For-Beginners12 Weeks, 24 Lessons, AI for All!項目地址https://gitcode.com/GitHub_Trending/ai/AI-For-Beginners點擊查看免費下載相關(guān)推薦構(gòu)建知識本體OntologyAI-For-Beginners 符號 AI 課程作業(yè)的 Protégé 實戰(zhàn)指南構(gòu)建知識本體OntologyAI For Beginners 符號 AI 課程作業(yè)的 Protégé 實戰(zhàn)指南 構(gòu)建知識庫的本質(zhì)是把關(guān)于某個主題的事實提教程人工智能機器學習深度學習從零構(gòu)建本體OntologyAI-For-Beginners 知識表示與 Protégé 實戰(zhàn)指南從零構(gòu)建本體OntologyAI For Beginners 知識表示與 Protégé 實戰(zhàn)指南 在符號主義 AI 的課程體系中構(gòu)建知識庫Knowl教程人工智能機器學習深度學習用 Protégé 構(gòu)建本體AI-For-Beginners 符號 AI 知識表示實戰(zhàn)指南用 Protégé 構(gòu)建本體AI For Beginners 符號 AI 知識表示實戰(zhàn)指南 在符號人工智能Symbolic AI中構(gòu)建知識庫的核心是把某教程人工智能機器學習深度學習上一篇如何在Android上快速搭建專業(yè)級開源VOIP通信應用Linphone完整指南下一篇構(gòu)建游戲數(shù)字中樞用Playnite實現(xiàn)跨平臺游戲管理的藝術(shù) 創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考