版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第八章:知識圖譜數(shù)據(jù)管理:
存儲與檢索《知識圖譜》配套講義1提綱知識圖譜大數(shù)據(jù)知識圖譜數(shù)據(jù)模型RDF圖模型屬性圖模型知識圖譜數(shù)據(jù)的存儲基于表結構的存儲基于圖結構的存儲知識圖譜數(shù)據(jù)的檢索聲明式查詢語言過程式查詢語言Neo4j使用簡介總結2提綱知識圖譜大數(shù)據(jù)知識圖譜數(shù)據(jù)模型RDF圖模型屬性圖模型知識圖譜數(shù)據(jù)的存儲基于表結構的存儲基于圖結構的存儲知識圖譜數(shù)據(jù)的檢索聲明式查詢語言過程式查詢語言Neo4j使用簡介總結3知識圖譜知識圖譜是一種有向圖結構,描述了現(xiàn)實世界中存在的實體、事件或者概念以及它們之間的相關關系。實體:CristianoRonaldo,JosDinisAveiro,RealMadridCF、馬賽約等實體類型:人物、國家、城市、組織機構等屬性:人物有姓名、性別、出生日期、興趣愛好、職業(yè)等屬性;國家有國慶日、國家代碼、貨幣、時區(qū)、等屬性關系:人物和人物間的同事關系、人物和國家間的國籍關系、城市和國家間的屬于關系等4知識圖譜中的知識表示知識圖譜中的知識是通過RDF的結構進行表示的,其基本構成單元是事實三元組,每個事實被表示為一個形如<subject,predicate,object>的三元組。subject:主體(也稱主語),其取值通常是實體、事件或者概念中的任何一個predicate:謂詞(也稱謂語),其取值通常是關系或者屬性object:客體(也稱賓語),其取值既可以是實體、事件、概念,也可以是普通的值(如數(shù)字、字符串等)5知識圖譜中的知識表示(示例)知識圖譜中的知識是通過RDF的結構進行表示的,其基本構成單元是事實,每個事實被表示為一個形如<subject,predicate,object>的三元組。實體:Pepe,RealMadridCF、Maceio屬性:gender,height,dateofbirth,capacity,shortname,creationdate,area,elevation,postalcode屬性值:male,1.88m,1983/02/26,81,044,RM,1902/03/06,511km2,7m,57000-000關系:team,placeofbirth6知識圖譜中的知識表示(示例)知識圖譜中的知識是通過RDF的結構進行表示的,其基本構成單元是事實,每個事實被表示為一個形如<subject,predicate,object>的三元組。7LinkedIn知識圖譜:圖數(shù)據(jù)屬性(自身性質(zhì))拓撲結構(相互關系)8廣泛應用的大規(guī)模圖結構數(shù)據(jù)9應用方向:社交網(wǎng)絡
人立方關系搜索博客分析
論壇觀點挖掘
網(wǎng)絡輿情監(jiān)控10應用方向:路徑規(guī)劃求取首都機場到中科院自動化所乘地鐵的最短距離或最快交通線路11應用方向:生物學圖結構在生物學上已經(jīng)得到廣泛應用基因調(diào)控網(wǎng)絡(基因之間的相互作用關系所形成的網(wǎng)絡)蛋白質(zhì)PPI(蛋白質(zhì)相互作用網(wǎng)絡)12應用方向:有機化學化合物的性質(zhì)與復雜化學反應的分析13應用方向:軟件剽竊檢測目前軟件剽竊檢測的新方法是基于圖模式匹配,將代碼先轉化為程序依賴圖,然后再通過圖匹配方法進行檢測14應用方向:健康醫(yī)療大數(shù)據(jù)運用健康醫(yī)療大數(shù)據(jù)構建知識圖譜15大規(guī)模圖數(shù)據(jù)特點“4V”特點規(guī)模浩大(Volume)生成快速(Velocity)種類繁多(Variety)可靠性(Veracity)傾斜的度分布小世界現(xiàn)象不清晰的社區(qū)結構16大規(guī)模圖數(shù)據(jù)特點傾斜的度分布17大規(guī)模圖數(shù)據(jù)特點小世界現(xiàn)象RegularRingNetworkAverageof4.1“hops”Small-WorldNetworkAverageof3.1“hops”RandomNetworkAverageof2.5“hops”18大規(guī)模圖數(shù)據(jù)特點不清晰的社區(qū)結構理想的社區(qū)結構實際的社區(qū)結構19大圖數(shù)據(jù)新型特點局部特征多樣性關聯(lián)數(shù)據(jù)復雜性拓撲結構時變性20知識圖譜:大規(guī)模圖數(shù)據(jù)大規(guī)模知識圖譜數(shù)據(jù)的發(fā)布百萬頂點(106)和上億條邊(108)LinkedData1,239個知識圖譜(2019-03-29)/2007-52014-82020-521知識圖譜的目標是構建一個能夠刻畫現(xiàn)實世界的知識庫,為自動問答、信息檢索等應用提供支撐。因此,對知識的持久化存儲并提供對目標知識的高效檢索是合格的知識圖譜(系統(tǒng))必須具備的基本功能。知識圖譜數(shù)據(jù)管理22知識圖譜數(shù)據(jù)管理知識圖譜數(shù)據(jù)模型RDF圖模型屬性圖模型知識圖譜數(shù)據(jù)的存儲基于表結構的存儲基于圖結構的存儲知識圖譜數(shù)據(jù)的檢索聲明式查詢語言過程式查詢語言23目錄知識圖譜大數(shù)據(jù)知識圖譜數(shù)據(jù)模型RDF圖模型屬性圖模型知識圖譜數(shù)據(jù)的存儲基于表結構的存儲基于圖結構的存儲知識圖譜數(shù)據(jù)的檢索聲明式查詢語言過程式查詢語言Neo4j使用簡介總結24知識圖譜數(shù)據(jù)模型數(shù)據(jù)模型邏輯組織結構(structure)操作(operation)約束(constraint)知識圖譜數(shù)據(jù)模型是圖數(shù)據(jù)模型的繼承和發(fā)展知識圖譜數(shù)據(jù)模型基于圖結構,頂點表示實體,邊表示實體間的聯(lián)系刻畫現(xiàn)實世界中事物的廣泛聯(lián)系圖數(shù)據(jù)模型:??=
(??,??)理論基礎:圖論層次數(shù)據(jù)模型(hierarchicaldatamodel)網(wǎng)狀數(shù)據(jù)模型(networkdatamodel)關系數(shù)據(jù)模型(relationaldatamodel)數(shù)據(jù)模型決定了數(shù)據(jù)管理所采取的方法和策略對于存儲管理、查詢處理、查詢語言設計均至關重要知識圖譜數(shù)據(jù)模型RDF圖模型屬性圖模型25知識圖譜數(shù)據(jù)模型RDF圖模型RDF三元組:(??,??,??)∈(??∪??)×??×(??∪??∪??)RDF圖G:RDF三元組的有限集合實體集合屬性/關系集合文字型對象26知識圖譜數(shù)據(jù)模型G={(屠呦呦,type,藥學),(屠呦呦,Birth_date,1930-12-30),(屠呦呦,Citizenship,中國),(屠呦呦,Name,”屠呦呦”),(諾貝爾醫(yī)學獎,Awarded,屠呦呦),(諾貝爾醫(yī)學獎,type,NobelPrizes),(諾貝爾醫(yī)學獎,Name,Nobel
Prize
in
Physiology
or
Medicine),(諾貝爾醫(yī)學獎,Location,Stockholm,Sweden),(諾貝爾醫(yī)學獎,Reward(s),9millionSEK(2017)}9個三元組
RDF圖模型27知識圖譜數(shù)據(jù)模型RDF圖模型沒有對頂點和邊上屬性的內(nèi)置支持如何表示邊上的屬性?“具體化”(reification,CVT)頂點與邊交集非空:3-uniform
hyper-graph(3均勻超圖)28知識圖譜數(shù)據(jù)模型屬性圖模型屬性圖G是5元組:??
=
(??,
??,
??,
??,
??)V:頂點的有限集合E:邊的有限集合??:
??
→
(??
×
??):將邊關聯(lián)到頂點對??:
(??
∪
??)
→
??????:為頂點或邊賦予標簽??:
(??
∪
??)
×
????????
→??????:為頂點或邊關聯(lián)屬性29知識圖譜數(shù)據(jù)模型屬性圖模型V={v1,v2},E={e1}ρ(e1)=(v2,v1)λ(v1)=藥學家,λ(v2)=NobelPrizesσ(v1,Name)=‘屠呦呦’,σ(v1,birth_date)=1930-12-30,σ(v1,citizenship)=中國σ(v2,Name)=‘NobelPrizes’,σ(v2,Location)=‘Stockholm,Sweden’,σ(v2,Reward)=9millionSEK(2017)30知識圖譜數(shù)據(jù)模型[王鑫,天津大學,知識圖譜數(shù)據(jù)管理]31知識圖譜數(shù)據(jù)模型知識圖譜數(shù)據(jù)模型典型示例更類似RDF圖模型的圖譜:Freebase更類似屬性圖模型的圖譜:WikiData32目錄知識圖譜大數(shù)據(jù)知識圖譜數(shù)據(jù)模型RDF圖模型屬性圖模型知識圖譜數(shù)據(jù)的存儲基于表結構的存儲基于圖結構的存儲知識圖譜數(shù)據(jù)的檢索聲明式查詢語言過程式查詢語言Neo4j使用簡介總結33知識存儲方式以類別為中心:基于表的存儲關系數(shù)據(jù)庫以實體為中心:基于圖的存儲RDF為基礎的SemanticWeb可相互轉換姚明Person中國上海type出生地配偶type國籍葉莉1980年9月12日出生年月34目錄知識圖譜大數(shù)據(jù)知識圖譜數(shù)據(jù)模型RDF圖模型屬性圖模型知識圖譜數(shù)據(jù)的存儲基于表結構的存儲基于圖結構的存儲知識圖譜數(shù)據(jù)的檢索聲明式查詢語言過程式查詢語言Neo4j使用簡介總結35三元組表知識圖譜中的事實是一個個的三元組,一種最簡單直接的存儲方式是設計一張三元組表用于存儲知識圖譜中所有的事實。36三元組表特性基于三元組表的存儲方式的優(yōu)點是簡單直接,易于理解;然而缺點也非常明顯,主要有以下幾點:每個字段包含不同類型、不同結構的數(shù)據(jù)。整個知識圖譜都存儲在一張表中,導致單表的規(guī)模太大。對大表進行查詢、插入、刪除、修改等操作的開銷很大,這將導致知識圖譜的實用性大打折扣。復雜查詢在這種存儲結構上的開銷巨大。由于數(shù)據(jù)表只包括三個字段,因此復雜的查詢只能拆分成若干簡單查詢的復合操作,大大降低了查詢的效率。例如,查詢“佩佩的身高和性別是什么?”需要拆分為“佩佩的身高是多少?”和“佩佩的性別是什么?”37三元組表的六重索引六重索引SPO、SOP、PSO、POS、OSP、OPSHexastore[Weiss08,VLDB],RDF-3X[Neumann08,VLDB]優(yōu)點:三元組模式查詢(triplepattern)的高效執(zhí)行任意兩個三元組模式的高效歸并連接(merge-join)問題:6倍空間開銷?更新維護代價38類型表為每種類型構建一張表,同一類型的實例存放在相同的表中。表的每一列表示該類實體的一個屬性,每一行存儲該類實體的一個實例。39類型表的不足大量數(shù)據(jù)字段的冗余存儲。假設知識圖譜中既有“演員”也有“歌手”,那么同屬于這兩個類別的實例將會同時被存儲在這兩個表中,其中它們共有的屬性會被重復存儲。大量的數(shù)據(jù)列為空值。通常知識圖譜中并非每個實體在所有屬性或關系上都有值,這種存儲方式會導致表中存在大量的空值。多值屬性不便于存儲。40考慮層級關系的類型表構建數(shù)據(jù)表時,將知識圖譜的類別體系考慮進來。具體來說,每個類型的數(shù)據(jù)表只記錄屬于該類型的特有屬性,不同類別的公共屬性保存在上一級類型對應的數(shù)據(jù)表中,下級表繼承上級表的所有屬性。41類型表特性類型表克服了三元組表面臨的單表過大和結構簡單的問題,但是也有明顯的不足之處:由于數(shù)據(jù)表是和具體類型對應的,不同的數(shù)據(jù)表具有不同的結構,因此在查詢之前必須知道目標對象的類型才能確定查找的數(shù)據(jù)表。當查詢涉及到不同類型的實體時,需要進行多表的連接,這一操作開銷巨大,限制了知識圖譜對復雜查詢的處理能力。知識圖譜通常包含豐富的實體類型,因此需要創(chuàng)建大量的數(shù)據(jù)表,并且這些數(shù)據(jù)表之間又具有復雜的關系,這為數(shù)據(jù)的管理增加了很大的難度。42關系數(shù)據(jù)庫基本概念關系數(shù)據(jù)庫以二維表結構對數(shù)據(jù)進行組織和存儲。屬性(attribute):表中的每一列稱為一個屬性(也稱字段),用來描述實體集的某個特征。每個屬性都有自己的取值范圍,稱為域。元組(tuple):表中的每一行由一個實體的相關屬性取值構成,稱為元組(也稱記錄),它相對完整地描述了一個實體。元組中的一個屬性值稱為分量。學號姓名性別出生日期身份證號1101李強男1995-09-223101031995092223171202張紅女1995-11-074101041995110724371303王鵬男1996-04-0851010519960408222343關系數(shù)據(jù)庫基本概念上述二維表格有以下限制:每一屬性必須是基本的、不能再拆分的數(shù)據(jù)類型,如整型、實型、字符型等。結構或數(shù)組不能作為屬性的類型。44上述二維表格有以下限制:每一屬性必須是基本的、不能再拆分的數(shù)據(jù)類型,如整型、實型、字符型等。結構或數(shù)組不能作為屬性的類型。姓名籍貫省市李強黑龍江齊齊哈爾張紅浙江杭州王鵬江西南昌姓名省市李強黑龍江齊齊哈爾張紅浙江杭州王鵬江西南昌X√關系數(shù)據(jù)庫基本概念45上述二維表格有以下限制:每一屬性必須是基本的、不能再拆分的數(shù)據(jù)類型,如整型、實型、字符型等。結構或數(shù)組不能作為屬性的類型。屬性的所有值必須是同類型、同語義的。如果某一列包含學生的學號,則該表中所有行的此列都必須是學生的學號。屬性的值只能是域中的值。例如學生的性別只能在“男”或“女”中取值。屬性必須有唯一的名字,但不同的屬性可以出自相同的域。列在表中的順序可以任意交換。關系數(shù)據(jù)庫基本概念46上述二維表格有以下限制:每一屬性必須是基本的、不能再拆分的數(shù)據(jù)類型,如整型、實型、字符型等。結構或數(shù)組不能作為屬性的類型。屬性的所有值必須是同類型、同語義的。如果某一列包含學生的學號,則該表中所有行的此列都必須是學生的學號。屬性的值只能是域中的值。例如學生的性別只能在“男”或“女”中取值。屬性必須有唯一的名字,但不同的屬性可以出自相同的域。列在表中的順序可以任意交換。學號姓名性別出生日期入學日期1101李強男1995-09-222017-09-011202張紅女1995-11-072017-09-011303王鵬男1996-04-082017-09-01關系數(shù)據(jù)庫基本概念47上述二維表格有以下限制:每一屬性必須是基本的、不能再拆分的數(shù)據(jù)類型,如整型、實型、字符型等。結構或數(shù)組不能作為屬性的類型。屬性的所有值必須是同類型、同語義的。如果某一列包含學生的學號,則該表中所有行的此列都必須是學生的學號。屬性的值只能是域中的值。例如學生的性別只能在“男”或“女”中取值。屬性必須有唯一的名字,但不同的屬性可以出自相同的域。列在表中的順序可以任意交換。任意兩個元組的值不能完全相同,即不允許有重復的行。行在表中的順序可以任意交換。關系數(shù)據(jù)庫基本概念48關系數(shù)據(jù)庫屬性分類候選碼:能夠唯一標識元組的最小的屬性集合。唯一性:候選碼在整個表的范圍內(nèi)必須具有唯一的值,不同元組不能具有相同的候選碼值。最小性:候選碼所包括的屬性必須都是必不可少的,缺少其中的任何一個都不再具備唯一性。例如,在上表中學生的學號、身份證號分別都可以作為候選碼;但是(學號,身份證號)這一屬性組不能作為候選碼,因為去掉其中任何一個剩下的屬性仍然可以作為候選碼,因此不滿足最小性。學號姓名性別出生日期身份證號1101李強男1995-09-223101031995092223171202張紅女1995-11-074101041995110724371303王鵬男1996-04-0851010519960408222349主碼:一個數(shù)據(jù)表可以包含多個候選碼,從中任意選取一個作為主碼。雖然理論上所有的候選碼都可以作為主碼,但是實際操作中一般選擇單屬性組成的候選碼作為主碼。在該表中有三個候選碼:學號、身份證號、姓名(不重名)。姓名作主碼還是有些限制(不能重名);身份證號太長,使用不方便;學號簡潔,使用方便,在實際生活中也被用來唯一區(qū)分學生,所以選學號作主碼最合適。學號姓名性別出生日期身份證號1101李強男1995-09-223101031995092223171202張紅女1995-11-074101041995110724371303王鵬男1996-04-08510105199604082223關系數(shù)據(jù)庫屬性分類50外碼:如果數(shù)據(jù)表中的某個屬性或?qū)傩越M是其它表的候選碼,那么稱該屬性或?qū)傩越M是當前表的外碼。外碼能夠保證不同數(shù)據(jù)表之間數(shù)據(jù)的一致性。班號是班級表的候選碼,所以班號是學生表的外碼。主屬性與非主屬性:包含在任何候選碼中的屬性稱為主屬性;相反地,不包含在任何候選碼中的屬性稱為非主屬性。學號姓名性別出生日期班號1101李強男1995-09-22111202張紅女1995-11-07121303王鵬男1996-04-0813班號班名專業(yè)11數(shù)學01應用數(shù)學12物理01理論物理13化學01材料化學學生表(外表)班級表(主表)關系數(shù)據(jù)庫屬性分類51關系數(shù)據(jù)庫完整性約束關系數(shù)據(jù)庫通過關系完整性約束條件來保證數(shù)據(jù)的正確性和一致性。所謂關系完整性約束條件主要是指在表和屬性(列)上定義的規(guī)則,數(shù)據(jù)庫管理系統(tǒng)會依據(jù)這些約束條件維護數(shù)據(jù)完整性。域完整性規(guī)則實體完整性規(guī)則參照完整性規(guī)則52域完整性:在關系數(shù)據(jù)模型定義時,由用戶對屬性值的數(shù)據(jù)類型、長度、單位、精度、格式、值域范圍、是否允許為空值等進行限定,規(guī)定屬性取值必須在其值域中。學號姓名性別出生日期班號1101李強男1995-09-22111202張紅女1995-11-07121303王鵬211996-04-0813學號類型定義屬性限定學號char(4)PrimaryKey姓名nvarchar(20)NotNull性別nchar(1)NotNull,男/女出生日期datetime>=1900-01-01班號char(2)NotNullX關系數(shù)據(jù)庫完整性約束53實體完整性:元組(記錄)在構成主碼的屬性上不能有空值且主碼的值不能相同。實體完整性主要是為了確保主碼能唯一標識元組。學號姓名性別出生日期班號1101李強男1995-09-22111202張紅女1995-11-07121303王鵬男1996-04-08131102孫麗女1996-01-29111202趙剛男1995-10-2012X√關系數(shù)據(jù)庫完整性約束54參照完整性:一個外表的外碼取值必須是其主表主碼的存在值或空值。學生表中班號的取值必須是空值或在班級表中班號屬性中出現(xiàn)過的值。如果學生表的班號字段允許為空,它取空值表示該學生還沒有確定班級;否則只能取班級表出現(xiàn)過的班號值。學號姓名性別出生日期班號1101李強男1995-09-22111202張紅女1995-11-07121303王鵬男1996-04-0813班號班名專業(yè)11數(shù)學01應用數(shù)學12物理01理論物理13化學01材料化學學生表(外表)班級表(主表)關系數(shù)據(jù)庫完整性約束55關系數(shù)據(jù)庫操作語言關系數(shù)據(jù)庫的基本操作語言是SQL。SQL語言以簡潔的語法支持關系數(shù)據(jù)庫的各類操作(插入/修改/刪除/查詢)。SQL語言獨立于關系數(shù)據(jù)庫本身,獨立于使用的機器、網(wǎng)絡和操作系統(tǒng)。如果選擇關系數(shù)據(jù)庫作為知識圖譜的存儲引擎,那么對知識圖譜的所有操作都需要轉換為SQL語句才能執(zhí)行。56關系數(shù)據(jù)庫基本操作關系數(shù)據(jù)庫通過SQL語言為用戶提一系列的操作接口,其核心功能包括插入、修改、刪除、查詢四種操作。插入(INSERT):在一個表中插入一條或多條新記錄。修改(UPDATE):在一個表中修改滿足條件的記錄的某些字段的值。刪除(DELETE):從一個表中刪除一條或多條滿足條件的記錄。查詢(SELECT):從一個或多個表中提取滿足條件的數(shù)據(jù)、生成計算列或匯總數(shù)據(jù)。57常見的關系數(shù)據(jù)庫存儲系統(tǒng)DB2:DB2是IBM公司于1983年推出的數(shù)據(jù)庫管理系統(tǒng),能夠運行于各種不同的操作系統(tǒng)平臺上,如Windows、Linux、VMS、OS/2等。該數(shù)據(jù)庫的特色之處包括支持面向?qū)ο蟮木幊?、支持多媒體應用、支持分布式數(shù)據(jù)庫的訪問等。更多信息請參考DB2官網(wǎng):/analytics/us/en/technology/db2/Oracle:Oracle是甲骨文公司于1979年推出的關系數(shù)據(jù)庫管理系統(tǒng),是目前最流行的數(shù)據(jù)庫之一。該數(shù)據(jù)庫遵循標準SQL語言,支持多種數(shù)據(jù)類型。和DB2相同,Oracle同樣具有跨平臺的特點,可以運行于不同的操作系統(tǒng)之上。更多信息請參考Oracle官網(wǎng):/database/index.html58MicrosoftSQLServer:MicrosoftSQLServer是微軟公司推出的應用于Windows操作系統(tǒng)的數(shù)據(jù)庫產(chǎn)品,該數(shù)據(jù)庫實際上是微軟基于Sybase公司提供的技術開發(fā)而成的,因此完全兼容Sybase數(shù)據(jù)庫。更多信息請參考MicrosoftSQLServer官網(wǎng):/zh-cn/sql-server/sql-server-2016PostgreSQL:PostgreSQL是一個自由軟件系統(tǒng),和上面幾個數(shù)據(jù)庫系統(tǒng)相比,該系統(tǒng)具有開源、免費的特點。由于PostgreSQL可以免費地被使用、修改和分發(fā),因此其具有非常完善的功能,不僅支持大部分的SQL標準,還提供外鍵、復雜查詢、觸發(fā)器等特性。更多信息請參考PostgreSQL官網(wǎng):/常見的關系數(shù)據(jù)庫存儲系統(tǒng)59MySQL:MySQL也是一個自由軟件系統(tǒng),最早是由瑞典的MySQLAB公司開發(fā)的小型關系數(shù)據(jù)庫管理系統(tǒng),在2008年被Sun公司收購。該系統(tǒng)由于具有體積小、速度快、跨平臺、免費開源等特點,是中小型網(wǎng)站最為青睞的數(shù)據(jù)庫。更多信息請參考MySQL官網(wǎng):/常見的關系數(shù)據(jù)庫存儲系統(tǒng)60目錄知識圖譜大數(shù)據(jù)知識圖譜數(shù)據(jù)模型RDF圖模型屬性圖模型知識圖譜數(shù)據(jù)的存儲基于表結構的存儲基于圖結構的存儲知識圖譜數(shù)據(jù)的檢索聲明式查詢語言過程式查詢語言Neo4j使用簡介總結61基于圖結構的存儲模型將實體看做節(jié)點,關系看做帶有標簽的邊,那么知識圖譜的數(shù)據(jù)很自然地滿足圖模型結構。用節(jié)點表示實體:劉德華、劉青云、Film:暗戰(zhàn)用邊表示實體間的關系:劉德華和暗戰(zhàn)之間的參演關系、劉德華和劉青云之間的朋友關系等節(jié)點可以定義屬性:劉德華性別男、身高174cm、出生地香港等邊上也可以定義屬性:劉德華參演暗戰(zhàn)的時間是1999年,參演角色是張彼得等無向關系需要轉化為兩條對稱的有向關系:劉德華和劉青云之間互為朋友關系62圖數(shù)據(jù)庫核心概念圖數(shù)據(jù)庫基于有向圖,其理論基礎是圖論。節(jié)點、邊和屬性是圖數(shù)據(jù)庫的核心概念。節(jié)點:節(jié)點用于表示實體、事件等對象,可以類比于關系數(shù)據(jù)庫中的記錄或數(shù)據(jù)表中的行數(shù)據(jù)。例如人物、地點、電影等都可以作為圖中的節(jié)點。邊:邊是指圖中連接節(jié)點的有向線條,用于表示不同節(jié)點之間的關系。例如人物節(jié)點之間的夫妻關系、同事關系等都可以作為圖中的邊。屬性:屬性用于描述節(jié)點或者邊的特性。例如人物的姓名、夫妻關系的起止時間等都是屬性。63基于圖結構的存儲模型圖數(shù)據(jù)模型:節(jié)點、邊、節(jié)點屬性、邊屬性節(jié)點存儲(nodestore)關系存儲(relationshipstore)屬性存儲(propertystore)問題:單機系統(tǒng)可擴展性不足,圖查詢復雜度高64常見的圖數(shù)據(jù)庫存儲系統(tǒng)Neo4j:Neo4j是一個開源的圖數(shù)據(jù)庫系統(tǒng),它將結構化的數(shù)據(jù)存儲在圖上而不是表中。Neo4j基于Java實現(xiàn),它是一個具備完全事務特性的高性能數(shù)據(jù)庫,具有成熟數(shù)據(jù)庫的所有特性。Neo4j是一個本地數(shù)據(jù)庫(又稱基于文件的數(shù)據(jù)庫),這意味著不需要啟動數(shù)據(jù)庫服務器,應用程序不用通過網(wǎng)絡訪問數(shù)據(jù)庫服務,而是直接在本地對其進行操作,因此訪問速度快。因其開源、高性能、輕量級等優(yōu)勢,Neo4j受到越來越多的關注。更多信息請參考官網(wǎng):/65OrientDB:OrientDB是一個開源的文檔-圖混合數(shù)據(jù)庫,兼具圖數(shù)據(jù)庫對數(shù)據(jù)強大的表示及組織能力和文檔數(shù)據(jù)庫的靈活性及很好的可擴展性。OrientDB具有多種模式可選,包括全模式、無模式和混合模式。全模式要求數(shù)據(jù)庫中的所有類別都必須有嚴格的模式,所有字段都強制約束;無模式則相反,不需要為類別定義模式,存儲的數(shù)據(jù)記錄可以有任意的字段;混合模式則允許為類別定義若干字段,同時支持自定義字段。該數(shù)據(jù)庫同樣是本地的,支持許多數(shù)據(jù)庫的高級特性,如事務、快速索引、SQL查詢等。更多信息請參考官網(wǎng):/常見的圖數(shù)據(jù)庫存儲系統(tǒng)66HyperGraphDB:HyperGraphDB同樣是開源的存儲系統(tǒng),并依托于BerkeleyDB數(shù)據(jù)庫。和上述圖數(shù)據(jù)庫相比,HyperGraphDB最大的特點在于HyperGraph,即超圖。從數(shù)學角度講,有向圖的一條邊只能指向一個節(jié)點,而超圖則可以指向多個節(jié)點。實際上,HyperGraphDB在超圖的基礎上更進了一步,不僅允許一條邊指向多個節(jié)點,還允許其指向其它邊。如此以來,HyperGraphDB相較于其它圖數(shù)據(jù)庫具有更強大的表示能力。更多信息請參考官網(wǎng):/常見的圖數(shù)據(jù)庫存儲系統(tǒng)67InfiniteGraph:InfiniteGraph是一個基于Java語言開發(fā)的分布式圖數(shù)據(jù)庫系統(tǒng)。和MySQL等傳統(tǒng)關系數(shù)據(jù)庫類似,InfiniteGraph需要作為服務項目進行安裝,應用程序只能通過訪問數(shù)據(jù)庫服務對數(shù)據(jù)庫進行操作。InfiniteGraph借鑒了面向?qū)ο蟮母拍睿瑢D中的每個節(jié)點及每條邊都看做一個對象。具體地,所有的節(jié)點都繼承自基類BaseVertex,所有的邊則都繼承自基類BaseEdge。更多信息請參考官網(wǎng):/products/infinitegraph/常見的圖數(shù)據(jù)庫存儲系統(tǒng)68InfoGrid:InfoGrid是一個開源的互聯(lián)網(wǎng)圖數(shù)據(jù)庫,提供了很多額外的組件,可以很方便地構建基于圖結構的網(wǎng)絡應用。InfoGrid實際上是一個基于Java語言的開源項目集,其中InfoGrid圖數(shù)據(jù)庫項目是其核心,其它的項目包括InfoGrid存儲項目、InfoGrid用戶接口項目等。更多信息請參考官網(wǎng):常見的圖數(shù)據(jù)庫存儲系統(tǒng)69InfoGrid:InfoGrid是一個開源的互聯(lián)網(wǎng)圖數(shù)據(jù)庫,提供了很多額外的組件,可以很方便地構建基于圖結構的網(wǎng)絡應用。InfoGrid實際上是一個基于Java語言的開源項目集,其中InfoGrid圖數(shù)據(jù)庫項目是其核心,其它的項目包括InfoGrid存儲項目、InfoGrid用戶接口項目等。更多信息請參考官網(wǎng):和成熟的關系數(shù)據(jù)庫相比,圖數(shù)據(jù)庫的發(fā)展較晚,相關的標準及技術尚不完善,在實際使用中可能會遇到一些棘手的問題,因此在選用數(shù)據(jù)庫時除了需要考慮數(shù)據(jù)庫本身的特性、性能等因素以外,還需要考慮數(shù)據(jù)庫的易用性、技術文檔的完整性等因素。常見的圖數(shù)據(jù)庫存儲系統(tǒng)70目錄知識圖譜大數(shù)據(jù)知識圖譜數(shù)據(jù)模型RDF圖模型屬性圖模型知識圖譜數(shù)據(jù)的存儲基于表結構的存儲基于圖結構的存儲知識圖譜數(shù)據(jù)的檢索聲明式查詢語言過程式查詢語言Neo4j使用簡介總結71知識圖譜查詢語言知識圖譜查詢語言RDF圖 SPARQL屬性圖CypherPGQLG-COREGremlin聲明式語言過程式語言72語義網(wǎng)回顧本質(zhì):以Web數(shù)據(jù)的內(nèi)容(即語義)為核心,用機器能夠理解和處理的方式鏈接起來的海量分布式數(shù)據(jù)庫。73RDF回顧RDF(ResourceDescriptionFramework,資源描述框架)是一種資源描述語言,其核心思想是利用Web標識符(URI)來標識事物,通過指定的屬性和相應的值描述資源的性質(zhì)或資源之間的關系。圖1只包含一個三元組的RDF圖示例74SPARQL語言SPARQL是SimpleProtocolandRDFQueryLanguage的縮寫,是由W3C為RDF數(shù)據(jù)開發(fā)的一種查詢語言和數(shù)據(jù)獲取協(xié)議,是被圖數(shù)據(jù)庫廣泛支持的查詢語言。和SQL類似,SPARQL也是一種結構化的查詢語言,用于對數(shù)據(jù)的獲取與管理。數(shù)據(jù)操縱(插入、刪除、更新)數(shù)據(jù)查詢75數(shù)據(jù)操縱數(shù)據(jù)插入:將新的三元組插入到已有的RDF圖中。SPARQL通過INSERTDATA語句完成該功能,其基本語法為:三元組數(shù)據(jù)可以是多條三元組,不同的三元組通過“;”
分隔。如果待插入的三元組在RDF圖中已經(jīng)存在,那么系統(tǒng)會忽略該三元組。INSERTDATA三元組數(shù)據(jù)例
將以下兩條三元組插入到圖1所示的RDF圖中。<http://example/movie1>ns:producer<http://example/person2><http://example/movie1>ns:writer<http://example/person3>76其對應的SPARQL語句為:執(zhí)行該語句后,圖1中的RDF圖變?yōu)椋簣D2SPARQL插入數(shù)據(jù)結果示例數(shù)據(jù)操縱77數(shù)據(jù)刪除:從RDF圖中刪除一些三元組。SPARQL通過DELETEDATA語句完成該功能,其基本語法為:其中三元組數(shù)據(jù)可以是多條三元組,不同的三元組通過“;”
分隔。對于給定的每個三元組,如果其在RDF圖中,則將其從圖中刪除,否則忽略該三元組。DELETEDATA三元組數(shù)據(jù)例
將以下三元組從圖2所示的RDF圖中刪除。<http://example/movie1>ns:producer<http://example/person2>數(shù)據(jù)操縱78其對應的SPARQL語句為:執(zhí)行該語句后,圖2中的RDF圖變?yōu)椋簣D3SPARQL刪除數(shù)據(jù)結果示例數(shù)據(jù)操縱79數(shù)據(jù)更新:更新RDF圖中指定三元組的值。和SQL不同,SPARQL沒有定義UPDATE操作,也就是說SPARQL語言沒有直接更新已有數(shù)據(jù)的方法。但是,可以通過組合INSERTDATA語句和DELETEDATA語句來實現(xiàn)該功能。DELETEDATA:刪除待修改的三元組;INSERTDATA:插入修改后的三元組。例
將圖3中三元組(<http://example/movie1>ns:director<http://example/person1>)的客體<http://example/person1>修改為<http://example/person4>。數(shù)據(jù)操縱80其對應的SPARQL語句為:執(zhí)行該語句后,圖3中的RDF圖變?yōu)椋簣D4SPARQL更新數(shù)據(jù)結果示例數(shù)據(jù)操縱81數(shù)據(jù)查詢SPARQL提供了豐富的數(shù)據(jù)查詢功能,包括四種形式:SELECT:最為常用的查詢語句,其功能和SQL中的SELECT語句類似,從知識圖譜中獲取滿足條件的數(shù)據(jù)。ASK:用于測試知識圖譜中是否存在滿足給定條件的數(shù)據(jù),如果存在則返回“yes”,否則返回“no”,該查詢不會返回具體的匹配數(shù)據(jù)。DESCRIBE:用于查詢和指定資源相關的RDF數(shù)據(jù),這些數(shù)據(jù)形成了對給定資源的詳細描述。CONSTRUCT:則根據(jù)查詢圖的結果生成RDF。82SELECT語句SELECT語句的基本語法為:SELECT子句中的“變量1變量2...”和SQL中的“列1,列2,...”的含義類似,表示要查詢的目標。不同之處在于,SQL處理的數(shù)據(jù)存儲于結構化的二維表中,語句中的“列1,列2,...”和數(shù)據(jù)表中的列完全對應,因此查詢的目標具有明確的語義;而SPARQL處理的數(shù)據(jù)則具有更加靈活的存儲結構,“變量1變量2...”在知識圖譜中沒有直接的對應。SELECT變量1變量2…
WHERE圖模式[
修飾符]83SELECT語句的基本語法為:WHERE子句用于為SELECT子句中的變量提供約束,查詢結果必須完全匹配該子句給出的圖模式。圖模式主要由兩類元素組成,一類是三元組,例如“?xaPerson”表示變量?x必須是Person的一個實例;另一類是通過FILTER關鍵字給出的條件限制,這些條件包括數(shù)字大小的限制、字符串格式的限制等。修飾符是可選項,用于對查詢結果做一些特殊處理,例如常見的修飾符有用于表示排序的ORDER子句、用于限制結果數(shù)量的Limit子句等。SELECT變量1變量2…
WHERE圖模式[
修飾符]SELECT語句84例
在圖4所示的RDF圖中查詢資源<http://example/movie1>的導演和編劇。相應的SPARQL語句為:執(zhí)行該語句的查詢結果為:SELECT語句85ASK語句ASK語句用于測試知識圖譜中是否存在滿足給定圖模式的數(shù)據(jù),其基本語法為:ASK圖模式例
在圖4所示的RDF圖中測試是否存在由<http://example/person4>導演的電影。相應的SPARQL語句為:該語句返回的結果為“yes”;如果查詢是否存在<http://example/person5>導演的電影,查詢的結果將會返回“no”。86DESCRIBE語句DESCRIBE語句用于獲取和給定資源相關的數(shù)據(jù),其基本語法為:DESCRIBE后既可以直接跟確定的資源標識符,也可以跟變量;WHERE子句是可選的,用于限定變量需要滿足的圖模式。DESCRIBE資源或變量[WHERE圖模式]例
在圖4所示的RDF圖中獲取由<http://example/person4>導演的所有電影的相關信息。87其對應的SPARQL語句為:該語句的執(zhí)行結果為:DESCRIBE語句88CONSTRUCT語句CONSTRUCT語句用于生成滿足圖模式的RDF圖,其基本語法為:RDF圖模板確定了生成的RDF圖所包含的三元組類型,它由一組三元組構成,每個三元組既可以是包含變量的三元組模板,也可以是不包含變量的事實三元組;圖模式則和上述SELECT等語句中介紹的相同,用于約束語句中的變量。該語句產(chǎn)生結果的基本流程為:首先執(zhí)行WHERE子句,從知識圖譜中獲取所有滿足圖模式的變量取值;然后針對每一個變量取值,替換RDF圖模板中的變量,生成一組三元組。CONSTRUCTRDF圖模板WHERE圖模式89例
在圖4所示的知識圖譜上執(zhí)行如下SPARQL語句:?movie=<http://example/movie1>?director=<http://example/person4>CONSTRUCT語句90CONSTRUCT語句該語句的執(zhí)行結果為:91知識圖譜查詢語言屬性圖查詢語言:Cypher標準化工作:openCypher92知識圖譜查詢語言屬性圖查詢語言:GremlinApacheTinkerPop圖計算框架過程式語言:圖遍歷、導航式游走更像一種函數(shù)式的編程語言接口93知識圖譜查詢語言屬性圖查詢語言:PGQLOracle在2016年提出:OraclePGX與Cypher相比,PGQL完整地支持正則路徑查詢語義與SPARQL屬性路徑僅支持邊標簽構成的正則路徑不同,PGQL通過路徑模式(pathpattern)表達式定義,還支持正則路徑中含有頂點標簽條件以及頂點(或邊)屬性值比較在提高了屬性圖上正則路徑查詢表達力(expressiveness)的同時保持求值復雜度(complexity)不變94知識圖譜查詢語言屬性圖查詢語言:G-CORELDBC圖查詢語言工作組設計充分借鑒和融合各種已有圖查詢語言的優(yōu)點,在查詢表達力和求值復雜度之間尋求最佳平衡G-CORE與已有圖查詢語言相比查詢的輸入輸出均是圖,徹底實現(xiàn)了圖查詢語言的可組合性(composability)將路徑作為與頂點和邊同等重要的圖查詢處理基本元素95目錄知識圖譜大數(shù)據(jù)知識圖譜數(shù)據(jù)模型RDF圖模型屬性圖模型知識圖譜數(shù)據(jù)的存儲基于表結構的存儲基于圖結構的存儲知識圖譜數(shù)據(jù)的檢索聲明式查詢語言過程式查詢語言Neo4j使用簡介總結96常見圖數(shù)據(jù)庫平臺97Neo4j的特點查詢語言Neo4jCQL(與Cyper類似)遵循屬性圖數(shù)據(jù)模型支持UNIQUE約束包含一個用于執(zhí)行CQL命令的UI支持完整的ACID規(guī)則支持查詢數(shù)據(jù)導出到JSON與XLS格式提供了REST
API,可以被任何編程語言訪問支持兩種Java
API:CypherAPI和NativeJavaAPI來開發(fā)Java應用程序98Neo4j的優(yōu)點與缺點一、優(yōu)點易于學習易于表示半結構化數(shù)據(jù)性能出眾,加載數(shù)據(jù)快,內(nèi)存占用低,只需選擇需要導入的數(shù)據(jù),無需考慮數(shù)據(jù)大小簡單而強大的數(shù)據(jù)模型二、缺點支持節(jié)點數(shù)、關系和屬性有限制不支持SPARQL查詢插件支持:/neo4j-contrib/sparql-plugin不支持Sharding99CQL語言CQL為類Cypher的查詢語言,neo4j可以使用CQL來進行數(shù)據(jù)庫操作1.數(shù)據(jù)類型
CQL的數(shù)據(jù)類型和java基本一致,主要用于定義結點和關系的屬性。CQL數(shù)據(jù)類型用法boolean用于表示布爾類型:true,falseByte用于表示8位整數(shù)short用于表示16位整數(shù)int用于表示32位整數(shù)long用于表示64位整數(shù)float用于表示32位浮點數(shù)double用于表示64位浮點數(shù)char用于表示16位字符String用于表示字符串100Neo4jCQL——節(jié)點&關系節(jié)點常用’()’表示,’()’內(nèi)第一個為節(jié)點名,可以在后面添加多個標簽名,添加標簽名需要在每個標簽前添加’:’符號關系常用’[]’表示,’[]’內(nèi)第一個為關系名,可以在后面添加多個標簽名,添加標簽名需要在每個標簽前添加’:’符號(n:player)(player:player)-[re:play_in]->(tea:team)101CQL語言2.常用命令
CQL的常用命令和對應功能如下表:CQL命令用法/功能CREATE創(chuàng)建創(chuàng)建節(jié)點,關系和屬性MATCH匹配檢索有關節(jié)點,關系和屬性數(shù)據(jù)RETURN返回返回查詢結果WHERE哪里提供條件過濾檢索數(shù)據(jù)DELETE刪除刪除節(jié)點和關系REMOVE移除刪除節(jié)點和關系的屬性ORDER
BY以…排序排序檢索數(shù)據(jù)SET組添加或更新標簽102Neo4jCQL——CREATECREATE:創(chuàng)建節(jié)點或關系CREATE(<node-name>:<label-name>:...:<label-name>)
//創(chuàng)建無屬性節(jié)點CREATE(<node-name>:<label-name>{ <property1-name>:<property-value>, <property2-name>:<property-value>, …})//創(chuàng)建有屬性節(jié)點CREATE(<node1-name>:<node1-label>)-[<relationship-name>:<relationship-label>{<property1-name>:<property-value>,…}]->(<node2-name>:<node2-label>)//創(chuàng)建新的有屬性的關系示例:
CREATE(node:player{name:”KobeBryant”,team:”Lakers”,top_score:”81”})CREATE(player:player)-[re:play_in]->(team:team)103Neo4jCQL——MATCHMATCH:用于獲取有關節(jié)點、關系和屬性的數(shù)據(jù)MATCH(<node-name>:<label-name>)//查找label為label-name的節(jié)點MATCH()-[<relationship-name>:<relationship-label>]->()RETURN<relationship-name>//查找label為relationship-label的關系
示例:MATCH(n:player)RETURNn//返回當前所有player節(jié)點MATCH(n:player)SETn.citizenship=‘US’//為所有player節(jié)點設置屬性MATCH(n)DELETEn//刪除所有節(jié)點MATCH
(n:player)-[re]->()REMOVE
//刪除以player起始的關系的屬性name注意:MATCH不能單獨使用,需要結合RETURN等語句組合使用104Neo4jCQL——RETURNRETURN
用于返回節(jié)點或關聯(lián)關系或它們的某些屬性RETURN
<node-name>.<property1-name>, <node-name>.<property2-name>, …示例:MATCH(n:player)RETURNn//返回所有player節(jié)點CREATE(nod:team{name:’Lakers’,city:’LosAngeles’})RETURNnod//創(chuàng)建并返回新創(chuàng)建節(jié)點MATCH()-[re]->(nod:team)return,nod.city//返回team節(jié)點的city屬性及指向它的所有關系的name屬性注意:RETURN不能單獨使用,需要和MATCH等語句組合使用105Neo4jCQL——DELETE&REMOVE&SETDELETE刪除節(jié)點,刪除節(jié)點及相關節(jié)點與關系DELETE<node-name>DELETE
<relationship-name>示例:MATCH(b)DELETEb//刪除所有節(jié)點MATCH
(a:team)-[re]->()DELETEre//刪除所有以team為起始點的關系REMOVE刪除節(jié)點或關系的屬性或標簽REMOVE
<name>.<property1-name>,<node-name>.<property2-name>…示例:MATCH(nod:player)REMOVE
nod.team//刪除所有player節(jié)點的team屬性MATCH
(n:player)-[re]->()REMOVE
//刪除以player起始的關系的name屬性SET添加或更新節(jié)點與關系的屬性值(屬性值不存在,就添加,否則更新)SET
<name>.<property>=new_value示例:MATCH(n:player)SET
n.citizenship=‘US’//為所有player節(jié)點設置屬性106Neo4jCQL——WHEREWHERE類似于SQL語句中的WHERE用于過濾MATCH獲得的結果WHERE
<condition>示例MATCH(n:player)-[re]->()WHEREn.team=‘Lakers’RETURNre//返回起始節(jié)點為team=’Lakers’的player的關系MATCH
(p:player),(t:team)WHEREp.team=
CREATE(p)-[re:play_in]->(t)//創(chuàng)建特定關系
1.條件語句可以使用的BOOL運算符有AND(與),OR(或),NOT(非),XOR(異或)2.條件語句可以使用的比較運算符有=,<,>,<>,<=,>=107Neo4jCQL——ORDER
BY&UNIONORDER
BY對返回結果排序ORDER
BY<name>.<property>注意:不加該語句將會對結果按照返回的第一個屬性進行升序排序,在該語句后添加DESC關鍵字可以獲得降序排序。UNION將兩組不同的結果合并成一組結果<MATCHComand1> UNION<MATCHComand2>注意:UNION要求查詢時列名相同,若不同可以使用AS關鍵字對列重命名,UNION返回數(shù)據(jù)中會去掉重復項。108Neo4jCQL——LIMIT&SKIP&INLIMIT&SKIP返回前n個結果&跳過n個結果LIMIT
n&SKIPn示例MATCH(n:player)RETURNnLIMIT25MATCH(n:player)RETURNnSKIP25IN提供值的集合WHERE
<name>.<property>IN[set]
示例MATCH(n:player)WHEREn,top_scoreIN[51,52]109CQL語言2.常用函數(shù)
CQL的常用函數(shù)和用法如下表:定制列表功能用法String字符串用于使用String字面量Aggregation聚合用于對CQL查詢結果執(zhí)行一些聚合操作Relationship關系用于獲取關系的細節(jié),如startnode,endnode等110Neo4jCQL——字符串函數(shù)1.UPPER:字母大寫UPPER(<input-string>)
示例:MATCH(n:player)RETURNn.UPPER(n,citizenship)2.LOWER:字母小寫
LOWER(<input-string>)
示例:MATCH(n:player)RETURNn.UPPER(n,team)3.SUBSTRING:獲取子字符串
SUBSTRING(<input-string>,<startIndex>,<endIndex>)
示例:MATCH(n:player)RETURNn.SUBSTRING(,0,1)111Neo4jCQL——聚合函數(shù)1.COUNT:返回MATCH得到的行數(shù)
COUNT(<value>)
示例:MATCH(n:player)RETURNCOUNT(n)2.MAX&MIN:返回MATCH返回的結果的一組最大值/最小值
MAX(<property-name>)
示例:MATCH(n:player)RETURNMIN(n.top_score)3.SUM:返回MATCH得到的所有行的和SUM(<property-name>)
示例:MATCH(n:player)RETURNSUM(n.top_score)4.AVG:返回MATCH得到的所有行的平均值AVG(<property-name>)
示例:MATCH(n:player)RETURNAVG(n.top_score)112Neo4jCQL——關系函數(shù)1.STARTNODE&ENDNODE:用于直到關系的開始節(jié)點/結束節(jié)點
STARTNODE
(<relationship-label-name>)
示例:MATCH(n)-[re]->(b)RETURNENDNODE(re)2.ID:獲得關系的ID
ID
(<relationship-label-name>)
示例:MATCH(n)-[re]->(b)RETURNID(re)3.TYPE:用于獲取字符串表示中的一個關系的TYPE
TYPE(<relationship-label-name>)
示例:MATCH(n)-[re]->(b)RETURNTYPE(re)113Neo4j——知識圖譜的構建1.打開IDEA,新建Java
Project114Neo4j——知識圖譜的構建2.打開Project
Structure對話框,導入jar文件點擊后輸入Neo4j數(shù)據(jù)庫下的lib目錄的路徑,完成導入115Neo4j——知識圖譜的構建3.創(chuàng)建Neo4j數(shù)據(jù)庫4.啟動數(shù)據(jù)庫下載的Neo4j數(shù)據(jù)庫位置創(chuàng)建的數(shù)據(jù)庫名稱116Neo4j——知識圖譜的構建5.定義節(jié)點類型player,team6.定義關系類型play_in117Neo4j——知識圖譜的構建7.創(chuàng)建新節(jié)點playerNode,teamNode,并設置它們的屬性8.創(chuàng)建新關系relationship,并設置其屬性118Neo4j——知識圖譜的構建9.運行代碼,創(chuàng)建數(shù)據(jù)庫10.代碼運行成功后,打開Neo4j數(shù)據(jù)庫目錄下的conf中的配置文件,將第九行內(nèi)容改為下圖所示:創(chuàng)建時的數(shù)據(jù)庫名稱119Neo4j——知識圖譜的構建11.啟動數(shù)據(jù)庫,瀏覽器訪問
http://localhost:7474查看結果120目錄知識圖譜大數(shù)據(jù)知識圖譜數(shù)據(jù)模型RDF圖模型屬性圖模型知識圖譜數(shù)據(jù)的存儲基于表結構的存儲基于圖結構的存儲知識圖譜數(shù)據(jù)的檢索聲明式查詢語言過程式查詢語言Neo4j使用簡介總結121知識圖譜數(shù)據(jù)模型數(shù)據(jù)模型邏輯組織結構(structure)操作(operation)約束(constraint)知識圖譜數(shù)據(jù)模型RDF圖模型屬性圖模型知識圖譜數(shù)據(jù)模型是圖數(shù)據(jù)模型的繼承和發(fā)展知識圖譜數(shù)據(jù)模型基于圖結構,頂點表示實體,邊表示實體間的聯(lián)系刻畫現(xiàn)實世界中事物的廣泛聯(lián)系圖數(shù)據(jù)模型:??=
(??,??)理論基礎:圖論層次數(shù)據(jù)模型(hierarchicaldatamodel)網(wǎng)狀數(shù)據(jù)模型(networkdatamodel)關系數(shù)據(jù)模型(relationaldatamodel)數(shù)據(jù)模型決定了數(shù)據(jù)管理所采取的方法和策略對于存儲管理、查詢處理、查詢語言設計均至關重要122知識圖譜數(shù)據(jù)模型RDF圖模型RDF三元組:(??,??,??)∈(??∪??)×??×(??∪??∪??)RDF圖G:RDF三元組的有限集合123知識圖譜數(shù)據(jù)模型屬性圖模型屬性圖G是5元組:??
=
(??,
??,
??,
??,
??)V:頂點的有限集合E:邊的有限集合??:
??
→
(??
×
??):將邊關聯(lián)到頂點對??:
(??
∪
??)
→
??????:為頂點或邊賦予標簽??:
(??
∪
??)
×
????????
→??????:為頂點或邊關聯(lián)屬性124知識存儲方式以類別為中心:基于表的存儲關系數(shù)據(jù)庫以實體為中心:基于圖的存儲RDF為基礎的SemanticWeb可相互轉換姚明Person中國上海type出生地配偶type國籍葉莉1980年9月12日出生年月125知識圖譜查詢語言知識圖譜查詢語言RDF圖 SPARQL屬性圖CypherPGQLG-COREGremlin聲明式語言過程式語言126常見圖數(shù)據(jù)庫平臺127知識圖譜數(shù)據(jù)管理查詢語言的統(tǒng)一分布式存儲方案分布式查詢處理知識推理的支持大規(guī)模知識圖譜的更新維護128第九章:知識推理《知識圖譜》配套講義129提綱知識推理概述什么是推理推理方式及分類知識推理典型應用演繹推理:推理具體事實經(jīng)典邏輯推理基于產(chǎn)生式規(guī)則的推理基于概率邏輯學習的推理歸納推理:學習推理規(guī)則歸納推理概述歸納邏輯程序設計路徑排序算法(PRA算法)關聯(lián)規(guī)則挖掘算法(AMIE算法)知識圖譜推理新進展基于表示學習的知識圖譜推理基于強化學習的知識圖譜推理符號規(guī)則與表示學習相融合的知識圖譜推理總結130提綱知識推理概述什么是推理推理方式及分類知識推理典型應用演繹推理:推理具體事實經(jīng)典邏輯推理基于產(chǎn)生式規(guī)則的推理基于概率邏輯學習的推理歸納推理:學習推理規(guī)則歸納推理概述歸納邏輯程序設計路徑排序算法(PRA算法)關聯(lián)規(guī)則挖掘算法(AMIE算法)知識圖譜推理新進展基于表示學習的知識圖譜推理基于強化學習的知識圖譜推理符號規(guī)則與表示學習相融合的知識圖譜推理總結131作為知識載體的知識圖譜物理世界人類世界機器世界能理解言外之意;能創(chuàng)造新說法和新語法;語言系統(tǒng)語言理解與語言生成知識圖譜能不能舉一反三,自動發(fā)現(xiàn)新知識?知識表示與知識推理132作為認知智能重要基礎的知識圖譜知其然的AI
vs
知其所以然的AI人的大腦依賴所學的知識進行思考、邏輯推理、理解語言知識圖譜感知識別判斷思考推理生成深度學習學習有智慧的AI有知識的AI推理133基于知識的Agent人類認識世界,這種認識能幫助我們做事。也稱認識論、知識論,相對應的是行為論。---認知論人類一直強調(diào)人的智能是如何獲得的:不是靠反射機制而是對知識的內(nèi)部表示進行操作的推理過程。---基于知識的Agent領域無關的算法特定領域的內(nèi)容推理引擎知識庫134知識推理示例:渡河背景:一個人帶著一匹狼、一只羊和一捆卷心菜來到了河邊。他需要過河,但是河邊只有一條船,而且他只能帶一樣東西上船。他不能把狼和羊一起留在河邊,也不能讓羊和卷心菜一起留在河邊,因為在這兩種情況下,前者都會吃掉后者。提問:如何用最少的渡河次數(shù)把所有東西都帶到河對岸?
背景:獅子、老虎、熊三對動物過河,每種動物有媽媽和孩子兩個(就是獅子媽媽、小獅子;老虎媽媽、小老虎;熊媽媽、小熊)。而小動物的媽媽不在的話,自己就會被吃掉(例如老虎媽媽不在,小老虎會被獅子媽媽或熊媽媽吃掉)。所有的媽媽都會劃船,孩子里面只有小獅子會劃船。一艘船上只能同時最多坐兩個動物(可以是兩個媽媽。提問:請問他們要如何過河才能保全所有的動物?135知識推理示例:Wumpus世界(1)來自書籍《ArtificialIntelligence:AModernApproach(4thEdition)》Wumpus世界是一個由多個房間組成并連接起來的山洞。在洞穴的某處隱藏著一只怪獸(Wumpus),它會吃掉進入它房間的任何人。探險者(Agent)可以射殺怪獸,但是探險者只有一支箭。某些房間是無底洞,任何人漫游到這些房間都會被無底洞吞噬。生活在該環(huán)境下的唯一希望是存在發(fā)現(xiàn)一堆金子的可能性。性能度量:帶著金子爬出洞口+1000,掉入洞被Wumpus吃-1000,采用一個行動-1,用掉箭-10。Agent死亡或出洞,則游戲結束。環(huán)境:4*4房間網(wǎng)格,始發(fā)[1,1]且向右。1個Wumpus,1/5房間為無底洞,分布均勻。執(zhí)行器:Agent向前、左轉、右轉、射箭。136知識推理示例:Wumpus世界(2)傳感器:在與無底洞相鄰的方格內(nèi),Agent能感知到微風(Breeze);在與Wumpus相鄰的方格內(nèi),Agent能感受到臭氣(Stench);在金子所處方格,Agent能感受到閃閃金光(Glitter);當Agent碰到墻時,它感知到碰撞(Bump);當Wumpus被殺死后,它發(fā)出的嚎叫聲(Scream)。137知識推理示例:Wumpus世界(3)第1步感知:NONE[1,2]和[2,1]安全第2步感知:微風[2,2]或[3,1]洞
回到[1,1]然后去[1,2]138知識推理示例:Wumpus世界(4)第3步感知:臭氣[1,3]怪獸和[2,2]安全
射殺怪獸,去往[2,2]第5步感知:臭氣,閃光,微風[2,3]金子,[2,4]或[3,3]洞
拿金子,往回走139什么是推理(1)推理是邏輯學、哲學、心理學、人工智能等學科中的重要概念。早在古希臘時期,著名哲學家亞里斯多德就提出三段論作為現(xiàn)代演繹推理的基礎。在計算機科學及人工智能領域,推理是一個按照某種策略從已知事實出發(fā)去推出結論的過程。推理就是通過已知知識推斷出未知知識的過程。140什么是推理(2)推理,邏輯學中指思維的基本形式之一,是由一個或幾個已知的判斷(前提)推出新判斷(結論)的過程,有直接推理、間接推理等。------《現(xiàn)代漢語詞典第6版》事件必定有其原因,事件背后必定有其真相。通過推理可以預測未來,甚至確定未來發(fā)展的詳細過程。任何一個推理都包含已知判斷、新的判斷和一定的推理形式。作為推理的已知判斷叫前提,根據(jù)前提推出新的判斷叫結論。前提與結論的關系是理由與推斷,原因與結果的關系。141什么是推理(3)牛頓的出生地屬于哪個國家已知知識:事實公理常識…未知知識:新事實新公理新常識…演繹、歸納、朔因預測、推斷、類比142提綱知識推理概述什么是推理推理方式及分類知識推理典型應用演繹推理:推理具體事實經(jīng)典邏輯推理基于產(chǎn)生式規(guī)則的推理基于概率邏輯學習的推理歸納推理:學習推理規(guī)則歸納推理概述歸納邏輯程序設計路徑排序算法(PRA算法)關聯(lián)規(guī)則挖掘算法(AMIE算法)知識圖譜推理新進展基于表示學習的知識圖譜推理基于強化學習的知識圖譜推理符號規(guī)則與表示學習相融合的知識圖譜推理總結143知識推理的分類歸納推理與演繹推理歸納推理(induction):歸納是從特殊到一般的過程。所謂歸納推理,就是從一類事物的大量特殊事例出發(fā),去推出該類事物的一般性結論。我們熟知的數(shù)學歸納法就是歸納推理的一個典型例子。前提:藍鯨可以噴射水柱。抹香鯨可以噴射水柱。座頭鯨可以噴射水柱。結論:鯨魚都可以噴射水柱。前提:樹木有年輪。烏龜有年輪(龜甲上的環(huán)數(shù))。牛馬有年輪(年輪在牙齒上)。結論:所有生物都有記錄自己壽命長短的年輪。日本科學家發(fā)現(xiàn),人的年輪在腦中。144知識推理的分類歸納推理與演繹推理演繹推理(deduction):演繹是從一般到特殊的過程。所謂演繹推理,就是從一般性的前提出發(fā),通過演繹(即推導),得出具體陳述或個別結論的過程。最經(jīng)典的演繹推理就是三段論(syllogism),它包括一個一般性原則(大前提)、一個附屬于大前提的特殊化陳述(小前提),以及由此引申出的特殊化陳述符合一般性原則的結論。大前提:人工智能學院的學生都會PyTorch。小前提:小李是人工智能學院的學生。結論:小李會PyTorch。145知識推理的分類歸納推理與演繹推理演繹推理(deduction):演繹推理不僅僅局限于三段論,也不只是從一般到特殊的過程。它有著強烈的演繹特性,重在通過利用每一個證據(jù),逐步地推導到目標或以外的結論,多被用于數(shù)學物理證明、思維推導等各類應用。例:莎士比亞在《威尼斯商人》中,描寫富家少女鮑西亞品貌雙全,貴族子弟、公子王孫紛紛向她求婚。鮑西亞按照其父遺囑,由求婚者猜盒訂婚。鮑西亞有金、銀、鉛三個盒子,分別刻有三句話,其中只有一個盒子放有鮑西亞的肖像。求婚者中誰通過這三句話,最先猜中肖像放在哪個盒子里,誰就可以娶到鮑西亞。
金盒子上說:“肖像不在此盒中?!?/p>
銀盒子上說:“肖像在鉛盒中。”
鉛盒子上說:“肖像不在此盒中。”鮑西亞告訴求婚者,上述三句話中,最多只有一句話是真的。如果你是一位求婚者,如何盡快猜中鮑西亞的肖像究竟放在哪一個盒子里?146知識推理的分類歸納推理與演繹推理的區(qū)別演繹推理是在已知領域內(nèi)的一般性知識的前提下,求解一個具體問題或者證明一個結論的正確性。演繹推理得出的結論實際上早已蘊含在一般性知識的前提中,演繹推理只不過是將已有事實揭示出來,因此它不能增殖新知識。相反,歸納推理所推出的結論是沒有包含在前提內(nèi)容中的。這種由個別事物或現(xiàn)象推出一般性知識的過程,是增殖新知識的過程。147知識推理的分類必然性推理與或然性推理:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版機械行業(yè)科技創(chuàng)新合作合同書3篇
- 二零二五版藝術品字畫購銷與倉儲管理合同2篇
- 二零二五版農(nóng)業(yè)用地土壤環(huán)境質(zhì)量調(diào)查委托合同3篇
- 二零二五版LED顯示屏安全防護與應急響應合同3篇
- 美容院商鋪租賃合同(2025版):美容院美容美體設備租賃及售后服務協(xié)議2篇
- 二零二五年綠色建筑空調(diào)系統(tǒng)設計與施工合同3篇
- 二零二五版廢舊設備買賣及環(huán)保處理合同2篇
- 二零二五版房地產(chǎn)投資合作三方買賣合同3篇
- 二零二五版二手車鑒定評估及轉讓合同3篇
- 2025年度不銹鋼太陽能板安裝工程合同3篇
- GB/T 12914-2008紙和紙板抗張強度的測定
- GB/T 1185-2006光學零件表面疵病
- ps6000自動化系統(tǒng)用戶操作及問題處理培訓
- 家庭教養(yǎng)方式問卷(含評分標準)
- 城市軌道交通安全管理課件(完整版)
- 線纜包覆擠塑模設計和原理
- TSG ZF001-2006 安全閥安全技術監(jiān)察規(guī)程
- 部編版二年級語文下冊《蜘蛛開店》
- 鍋爐升降平臺管理
- 200m3╱h凈化水處理站設計方案
- 個體化健康教育記錄表格模板1
評論
0/150
提交評論