999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

關系型數據的知識抽取和RDF轉換框架及實現

2022-09-06 11:09:16張永威唐新余
計算機工程與應用 2022年17期
關鍵詞:數據庫模型

張永威,張 巖,唐新余,王 蒙

1.中國科學院 新疆理化技術研究所,烏魯木齊 830011

2.中國科學院大學,北京 100049

3.中國科學院 新疆民族語音語言信息處理重點實驗室,烏魯木齊 830011

4.江蘇中科西北星信息科技有限公司,江蘇 無錫 214135

近年來,知識圖譜作為一種高效的數據組織方式,在各行各業的眾多任務中都得到了廣泛的應用。知識圖譜本質上是一種大規模語義網絡,即一種用互聯節點和弧表示知識的一個結構[1]。知識圖譜中的節點可以代表概念、屬性、事件或者實體;弧表示節點之間的關系[2]。知識圖譜以結構化三元組的形式存儲現實世界中的實體以及實體之間的關系,表示為G=(E,R,S),其中E表示實體集合,R表示關系集合,S表示知識圖譜中三元組的集合[3]。RDF(resource description framework)作為一種現實世界中資源及資源關系的描述框架和數據模型,是知識圖譜中非常重要的一種知識表示方式[4],在知識圖譜的構建和應用被廣泛使用。

知識圖譜按照領域劃分,一般可分為通用知識圖譜和行業領域知識圖譜。通用知識圖譜包含了大量現實世界中的常識性知識,涵蓋范圍廣、規模巨大,如FreeBase[5]、Yago[6]、DBpedia[7],已經被廣泛應用于信息搜索、自動問答等場景。行業領域知識圖譜又稱為垂直知識圖譜,面向特定的領域,如面向電影領域的IMDB[8]、生物醫學領域的DrugBank[9]、學術領域的Acemap[10]等、一般由各領域中的企業進行構建[11]。在行業領域中,關系數據庫由于其模型簡單、關系理論完備、接口易用等特點,已經成為各行業中廣泛使用的數據存儲和管理方案。因此結合本體模型從結構化的關系型數據中進行知識抽取并轉換成RDF三元組是構建行業知識圖譜的關鍵步驟。

目前把關系型數據轉換成RDF數據常用的方案是使 用W3C 推出 的DM[12(]direct mapping)和R2RML[13](RDB to RDF mapping language),手工編輯從關系數據到RDF 數據的映射,再由轉換工具執行映射完成數據轉換[14]。另外也有部分映射工具采用私有的RDB2RDF(relational database to RDF)映射語言實現關系數據到RDF數據的映射和轉換。目前的方案不僅需要掌握和使用各種映射語言和映射工具,還要對本體模型定義的知識體系結構和領域中的業務數據庫的模式結構非常熟悉。另外領域知識圖譜雖然沒有通用知識圖譜的覆蓋范圍廣,但是也具有相當規模的數據量。在進行知識抽取和數據轉換時,需要根據本體模型和關系數據進行大量的查詢語句和映射的編輯和維護工作,不僅費時費力而且還容易出錯。本文提出一套直接由關系數據根據本體模型進行抽取轉換成RDF 的框架,簡化了映射編輯和維護等工作,提供了更簡單易用的關系型數據的知識抽取和數據轉換的解決方案。

1 相關工作

目前對關系型數據進行知識抽取并轉換成RDF數據的方案一般是先編寫從關系型數據到RDF數據的映射,然后借助的RDB2RDF工具執行映射完成數據抽取和轉換。在關系數據與RDF 數據的映射方面,W3C 制定了兩種從關系數據到RDF 數據的映射語言,DM 和R2RML。Direct mapping 定義了從關系數據庫到RDF三元組的簡單變換,這種變換把關系數據庫中的數據模式和結構直接反映在RDF圖中[12]。Direct mapping將關系數據庫直接映射為RDF 圖,只是對原有關系數據直接轉換[15],無法根據自定義的本體模型對數據進行抽取和組織后轉換成RDF三元組。

為了支持自定義的本體概念模型和詞匯,W3C 推出了R2RML 映射語言,其映射本身就是Turtle 形式的RDF圖[13]。每一個R2RML映射都對應一個數據庫模式和目標詞匯。R2RML映射的輸入是符合該模式的關系數據,輸出是使用目標詞匯中的謂詞和類型的RDF 數據。使用R2RML 可以在關系數據庫上自定義視圖,一個R2RML 映射文檔里包含多個R2RML 映射,每個映射都需要配置數據檢索的邏輯表。邏輯表可以是關系數據庫中的一個基礎表或一個視圖,也可以是對關系數據庫的一個有效的SQL 查詢。每個邏輯表都使用三元組映射表映射到RDF,三元組映射中需要配置將邏輯表中每一行映射到多個RDF三元組的規則。該規則由主語映射和謂詞-賓語映射兩部分組成。通過將主語應和謂詞-賓語映射組合,應用于每個邏輯表行實現關系數據到RDF數據的轉換。R2RML映射需要根據自定義的詞匯和關系數據庫手動編輯大量的映射規則,包括本體模型中的類與表或邏輯視圖的對應、屬性與字段的對應、數據類型等。也需要基于本體模型和關系數據庫編寫SQL 語句對數據進行抽取和組織。因此R2RML 語句編碼的工作量和R2RML 映射的創建和維護是使用R2RML的主要障礙。

在映射執行工具方面,D2RQ[16]是出現在DM 和R2RML 之前的RDB2RDF 開源工具平臺。它包括D2R Server 和一種私有的RDB2RDF 映射語言D2Rq。D2RQ 在2012 年發布的版本開始支持direct mapping,但是不支持R2RML[17]。Virtuoso[18]利用自有的“元數據方案映射語言”,來實現RDB 數據與RDF 數據的映射,生成關聯數據視圖(linked data views),得到RDF 數據,這種功能與R2RML 類似,是R2RML 誕生之前私有映射語言的一種[19]。W3C 推出R2RML 后,Virtuoso 也通過R2RML VAD插件的方式通過將R2RML轉化成它自己的關聯數據視圖的語法來實現對R2RML 的支持。Ontop[20]依賴于R2RML映射實現,通過將SPARQL查詢轉換為有關系數據源執行的SQL 查詢。Ontop 可以提供一個基于關系數據的虛擬知識圖譜系統,以虛擬的RDF 圖的形式訪問關系數據庫中的內容。此外Ontop也可以基于R2RML映射把關系數據轉換成RDF數據。

現有的工作除了提供不同的映射工具和映射語言外,還有一些工作集中在提高R2RML 映射語言的編輯效率上。文獻[21]提出了一種快速編輯R2RML映射的編輯器,目的在于提高手工編輯映射時的效率,但是仍然需要專業人員大量參與。文獻[22]和[23]提出了根據關系數據生成R2RML 映射的方法,但還是需要后續對映射進行維護,沒有很好地解決從關系數據中進行知識抽取生成RDF數據的問題。

針對這些問題本文提出了一種直接根據本體模型和關系數據庫進行知識抽取并轉換成RDF 數據的框架,省去了R2RML映射的編輯、執行和維護等工作。直接以可視化的方式指定關系數據和本體模型的對應關系,根據選取的字段自動生成SQL語句,在數據庫中進行查詢并取出相應的數據后,根據對應關系,把關系數據自動轉換成RDF 三元組。與之前的方法相比,本文提出的框架不需要大量的映射編輯和維護工作,可以對本體模型和關系數據庫進行解析,并自動生成本體模型和數據庫之間的候選映射,提供了更加自動化的解決方案?;诒疚牡目蚣軐崿F的知識抽取系統,能夠方便地根據本體模型的目標詞匯快速地生成RDF 三元組,完成關系型數據的知識抽取和數據轉換。

2 系統框架設計及實現

本章提出一套根據自定義本體模型對關系數據進行抽取并轉換成RDF數據的框架。如圖1所示,首先對本體模型進行解析,解析出本體知識體系中的類別屬性等詞匯。接著對關系數據庫的模式結構進行解析,獲取其表、字段、主外鍵等信息。解析完成后以可視化的方式把本體模型和數據庫的解析結果展示出來。然后根據數據庫的解析結果生成中間本體,并且根據語言學特征和結構特征計算中間本體和自定義本體中概念和屬性的相似度,借助中間本體自動獲取數據庫和自定義本體的映射關系。最后根據每個類的屬性和映射關系,生成單表或多表查詢的SQL語句,在數據庫中進行查詢并取出相應的數據后,根據對應關系,自動轉換成RDF三元組。

圖1 關系數據知識抽取框架Fig.1 Relational data knowledge extraction framework

關系數據知識抽取和數據轉換框架的具體描述如下:

(1)設置數據源DS 和本體源文件ontology,并進行解析。

table∈DS,column∈table

(class,data property,object property)∈ontology

(2)可視化解析結果,創建中間本體,自動生成關系數據和自定義本體模型之間的候選映射關系automaps。

automaps={(c1,c2,max_sim)}

其中c1 ∈ontology;c2 ∈DS,分別表示本體和數據中的概念,max_sim表示兩個概念之間的最大相似度。

(3)修正automap,并自動生成SQL 語句,并獲取的數據data。

sql=generate_sq(lautomap)

data=get_data(DS,sql)

(4)RDF三元組前綴prefix url和主語模板template的設置。

template={column1}@{column2}

(5)主語(subject)構建。

subject=prefix url+value(column1)@value(column2)

根據mapping的(logic table:class)構建出主語類型的三元組triple=(subject,rdf:type,class)

(6)謂詞(predicate)構建

數據屬性謂詞構建:

predicate=prefix url+data property

對象屬性謂詞構建:

predicate=prefix url+object property其中data property,object property∈ontology。

(7)賓語(object)構建:

賓語是數據屬性值時:

get data type ∈{int,string,date,…}

value(data property)=value(column),其中(column:property)∈mapping

根據mapping構建三元組:

triple=(subject,predicate,value(data property))

賓語是對象屬性值時:

get data type ∈class

object property=prefix+template

由于對象屬性也是實體所以構建對象屬性類型三元組:

triple=(object property,rdf:type,class)

構建主語的對象屬性三元組:

triple=(subject,predicate,object property)

以下是根據框架描述進行的具體實現。

2.1 本體模型解析

本體模型的設計定義了知識的類別體系,每個類別下所屬的概念和實體,某類概念和實體所具有的屬性,以及概念之間,實體之間的語義關系。同時也包含定義在這個本體上的一些推理規則。根據本體模型中的知識體系把關系型數據轉換成RDF 數據,即使用本體模型中自定義的詞匯和關系等,把數據歸屬到本體模型定義的知識框架下。因此首先需要對本體模型解析,獲取其類別屬性等詞匯。本文使用Jena[24]對本體模型進行解析,Jena 是惠普實驗室語義Web 研究項目的開放資源,是用于創建語義Web 應用系統的Java 框架結構,它為RDF、RDFS、OWL 提供了一個程序開發環境。另外為了方便建模和展示,使用經典建模工具Protégé[25]進行本體模型的構建。Protégé提供了本體概念類、關系、屬性和實例的構建,并且屏蔽了具體的本體描述語言,用戶只需在概念層次上進行領域本體模型的構建。Protégé 可從http://protege.standford.end/下載,具體用法可參考文獻[26]。

本文主要使用Jena 的Ontology 子系統和RDF 子系統。對于一個本體模型首先獲取本體模型中所有的類,然后再對每一個類進行解析。解析出當前類與其他類的關系。之后,對每個類的屬性進行解析。對于類的數據屬性(data property),獲取到其屬性名及其定義域和值域。對于類的對象屬性(object property),由于其在本體模型中表示概念類之間的關系,其值域和定義域都是類或資源實體(resource)。所以在解析到其屬性名后,還要獲取對象屬性與其定義域類和值域類的關系。

在完成解析后,把本體模型中的所有的類,對象屬性和數據屬性都當作節點,按照對象屬性和數據屬性的值域和定義域把屬性節點和類節點連接起來。如圖2(c)所示,形成一個可以表示本體模型結構的圖。不同于Protégé[25]建模工具中對本體模型的展示,如圖2(a)和(b)所示Protégé中把概念類作為節點,屬性作為邊把本體模型展示出來。本文對本體模型的可視化展示方式,除了能表示出概念類之間的關系,還展示了概念類與屬性的所屬關系。更方便在設置關系數據和本體模型的對應關系時對類和屬性等相關概念進行選擇。

圖2 解析結果展示圖Fig.2 Parse result display diagram

2.2 數據庫模式結構解析

關系型數據的知識抽取需要根據本體模型定義的知識框架,在數據庫中選取字段數據轉換成(subject,predicate,object)三元組。因此在對數據進行知識抽取并轉換成RDF 之前,需要解析出整個關系數據庫的模式結構。包括數據庫中所有的表、每個表的表結構、表中所含有的字段、字段的數據類型、字段之間的關系、表的主外鍵和引用關系等。

本文使用DataBaseMetaData 接口獲取關系數據庫的元數據,解析出整個數據庫中所有的表、字段、字段的數據類型和主外鍵、引用關系等信息。此外,為了在知識抽取對整個數據庫的模式結構有更加直觀的認識,更方便選擇數據字段和本體詞匯的對應關系。對數據庫進行解析后,以可視化的方式對數據庫的模式結構進行展示。

如圖2(d),把數據庫中每一個表和每一個字段都當作節點,連接節點的邊表示字段節點和表節點的所屬關系。其中外鍵節點,同時連接引用表和被引用表,表示表之間的引用關系。

2.3 關系數據到本體模型的對應關系

2.3.1 本體模型到關系數據的自動映射

完成本體模型和數據庫模式結構的解析之后,接下來要建立從關系數據到本體映射,即關系數據中的表和字段與本體模型中類和屬性之間的對應關系。盡管本文提供了可視化選擇對應關系的方式替換了傳統映射語句的編輯。但是為了進一步提高框架的自動化程度,設計了一種根據關系數據庫和自定義本體模型自動生成候選映射的方法。

如圖3 所示,首先獲取數據庫模式的解析結果,利用解析后的表和字段自動建立一個和數據庫一一對應的中間本體模型。然后對中間本體和自定義本體進行匹配和對齊,基于語言學信息和結構信息計算兩個本體之間各種概念的相似度,并根據相似度獲取候選映射關系。由于中間本體中的概念和數據庫模式中的元素是一一對應的,所以自定義本體和中間本體的對應關系,也即自定義本體和數據庫之間的對應關系。

圖3 自動建立對應關系的流程圖Fig.3 Automatically establishing corresponding relationship

1)自動創建中間本體

基于數據庫模式結構的解析結果,采用如表1所示規則建立一個中間本體。

表1 數據庫與中間本體對應規則Table 1 Correspondence between database and middle ontology

采用以上方式,保證中間本體的詞匯表和術語名稱與關系數據庫中的表名和字段名保持一致,這樣就得到了一個和數據庫一一對應的中間本體模型。在中間本體中,數據庫中的表是本體中的類,表中的字段是類的數據屬性和對象屬性,字段所屬的表及字段的數據類型是屬性的值域和定義域。

接下來用中間本體和根據數據庫自定義的本體進行匹配,獲取到兩個本體中概念的映射關系。由于中間本體和數據庫是一一對應的,因此自定義本體和中間本體之間的映射,即自定義本體和數據庫之間的映射。

2)本體中類和屬性的相似度計算

不同于傳統的本體對齊和本體匹配任務需要考慮大規模異構之間的匹配和對齊關系。因為自定義本體是由建模人員根據數據庫進行重新組織篩選而建立的,而中間本體又是整個數據庫在本體模型中的直接反映,包含了數據庫中的所有模式。所以自定義本體和中間本體本身就具有一定程度上的相似,這種相似表現在兩個方面,一是語言特征上,即兩個本體中概念標簽字符和描述的相似。二是表現在本體的結構特征上,在本體模型所表示的RDF 樹上,自定義本體往往是中間本體的子結構。因此基于這兩個特性來計算自定義本體和中間本體里各種概念的相似度,再根據相似度來確定匹配和映射關系,最終得到數據庫和自定義本體之間的候選映射。

(1)基于語言學特征

基于語言學特征采用編輯距離計算兩個本體中概念的相似度時,首先自定義本體和中間本體進行預處理,去掉類和屬性的命名空間前綴,只保留類名和屬性名。在計算相似度之前,基于外部詞典WordNet對本體中的類和屬性進行同義詞替換。對于類,替換后基于編輯距離計算相似度,對于屬性,組合替換后的屬性名和定義域計算相似度。形式化描述如下:

①對于?class,property∈customer ontology∪middle ontology,獲取其同義詞集合并按字典序排序。

synonym set(word)=WordNet.synset(word)其中synonym set(word)[1]表示取同義詞集合中的第一個元素。

②對于類的標簽,用其同義詞集合里的第一個元素進行替換。

③對于屬性的標簽,首先用該屬性的同義詞集合里的第一個元素對其進行替換。然后拼接屬性名,及其值域和定義域得到一個新的字符串。

④最后基于編輯距離計算自定義本體和中間本體中各種概念屬性的相似度。

⑤根據上述計算結果獲得兩個本體中類的相似度矩陣:class similarity matrix,和屬性的相似度矩陣:property similarity matrix。根據概念和屬性的最大相似度獲取候選映射集合:map{(c1,c2,max_sim)}。

(2)基于結構特征

基于本體的結構特征進行概念的相似度計算時,考慮當前概念節點在本體概念所表示的RDF樹上的父節點,子節點和兄弟節點的相似關系來確定當前節點的相似關系。另外在中間本體和自定義本體中,具有對應關系的類的子節點的數目不一定相同,具有對應關系的屬性的兄弟節點也不一定相同。因此在中間本體和自定義本體中,取屬性數目較小的一方作為個數依據,同時從另一個本體取相同個數且相似度高屬性節點進行計算。

①對于類的結構相似:

其中,c1∈customer ontology,c1.property num表示類c1的屬性節點個數,c2∈middle ontology,c2.property num表示類c2的屬性節點個數。

②根據上一步得到屬性相似度矩陣,計算類節點的前k個相似度最高的屬性。

其中property similarity matrix表示屬性相似度矩陣。

③對于屬性的結構相似:

其中,p1.brother num表示屬性p1 的兄弟節點個數,其中p2∈customer ontology,p2.property num表示類c2的屬性節點個數,其中p2∈middle ontology。

④根據屬性相似度矩陣,計算當前節點的前k個相似度最高的兄弟節點;根據類相似度矩陣計算當前節點的父類相似度。

其中,p1.father表示p1 的父節點,p2.father表示p2的父節點。

⑤結合父類和子類計算最終的相似度。

最后根據實驗效果,采取如下的方式綜合基于語言特征計算的相似度sim1和基于結構特征計算的相似度sim2。

sim=max(sim1,sim2)

2.3.2 三元組的創建

RDF 數據表示為(S,P,O)形式的主謂賓三元組,把關系型數據進行知識抽取轉換成RDF 數據時,要根據本體模型中定義的詞匯對關系數據中的字段進行篩選、抽取、組織成(主語,謂詞,賓語)的形式。

(1)主語

RDF三元組的主語是一個資源實體,由一個統一資源標識符URI(uniform resource identifier)表示。在RDF 中表示主語資源的URI 一般是由命名空間和資源實體的名稱或一些其他標識組成。比如一門課程實體的可以表示為:

其中,“http://www.xbstar.com/ontology/pension#”是命名空間,“Java”是課程名,“CS102”是課程代碼,課程名和課程代碼存儲在數據庫中。在根據關系數據創建主語實體的URI 時,本文采用本體模型中定義的命名空間,命名空間后面的標識符根據由自定義模板配置進行生成,模板是由關系數據庫中的字段和一些字符組成,如表2所示。

表2 主語資源實體URI配置Table 2 Subject resource entity URI configuration

另外,對于知識圖譜中的每一個資源實體,都要歸屬到本體模型所定義的概念類別下。所以在每個主語資源實體的URI生成后,還有根據本體模型中定義的概念指定其所屬的類別。當一個主語映射完成后會生成如下的三元組:

S:

P:

O:

(2)謂詞

在RDF 三元組(S,P,O)中,謂詞P表示主語S和賓語O之間的關系,或者表示主語S具有屬性P且其取值為O。謂詞在知識圖譜中表示關系,關系可以連接兩個實體資源,表示兩個資源之間的關系。也可以連接實體資源和數據值,表示實體資源的屬性值。

謂詞在本體模型中進行定義,表示為本體模型中概念之間的關系,當使用本體模型規定的知識體系填充RDF 數據時,謂詞就表示為概念下的實體之間的關系。完成主語實體的創建后,要根據本體模型中定義的謂詞詞匯,為主語連接資源或數據。本文是根據本體模型解析的結果,獲取連接類與屬性值的屬性名,然后把謂詞屬性名和屬性值在關系表中對應的字段一一映射起來。

(3)賓語

三元組的賓語可以看作是主語實體的屬性值,包括數據屬性(data property)和對象屬性(object property)兩種類型。其中數據屬性表示賓語是一個數據值,表示實體和數據值之間的關系,對象屬性表示賓語是一個資源實體,描述的是兩個實體之間的關系,在進行映射時,對象屬性一般是關系表中的外鍵。

對于數據屬性,由于其屬性值也就是(S,P,O)中的賓語是一個數值,從數據庫中取出對應的字段和屬性進行映射即可,如:

S:

P:

O:“張三”

對于對象屬性,在(S,P,O)三元組中其主語和賓語都是實體資源。因此在進行對象屬性的映射時,用謂詞把兩個實體連接之前,需要先創建賓語實體,包括生成賓語實體的URI,并把其歸類的所屬的類別下。

S:

P:

O:.

S:

P:

O:

為了定義和保存數據庫到本體模型的對應關系,定義了如下的數據結構對用戶選擇的映射進行存儲。其中對于每一個類,對應關系是一個集合,集合中包含映射的元素,每個元素都有類名、表名、字段名稱和對應的謂詞名稱和數據類型,字段所屬的表。還包括主語的模板,以及當前字段是不是外鍵類型,為每個外鍵類型定義包含主表名稱、主列的名稱、引用表的名稱、引用列的名稱的數據結構。

2.4 SQL語句生成與數據查詢

在確定字段和屬性的對應關系之后,根據選取的字段和涉及到的表生成SQL語句,并在數據庫中獲取相應的數據。對于同一個類的屬性,對應的字段可能來自同一個表或來自多個表。當一個類別的屬性對應的字段都屬于同一個表時,從選擇的對應關系中獲取字段名稱和其所屬的表,組合成SQL語句,在數據庫中進行查詢獲得相應的數據即可。

當一個類的屬性對應多個表的字段時,選擇的字段關系會涉及多個表,一般在數據庫中進行連接查詢或者需要多個連接條件才能獲取查詢結果。這種情況下根據選取的字段生成的SQL語句,需要獲取連接查詢中所有的連接條件。本文采用的方法是根據關系數據庫解析的結果,把表和字段當作節點,字段和表的所屬關系當作邊,外鍵字段引用關系連接兩個表節點,由此生成一個無向圖。需要進行多表連接查詢時,根據選擇的字段在這個無向圖上尋找從起始表節點到終結點的一條路徑,然后從這條路徑上的表節點和字段節點獲取連接查詢時的條件信息,并生成SQL語句。

以學生表、選課情況表和課程表為例,在以RDF三元組的形式表示學生選擇的課程時,就要涉及到在學生表、選課情況表和課程表這三個表之間進行查詢。首先通過學生表和選課情況表,找到學生選擇課程的課程ID,然后再通過選課情況表和課程表,找到課程ID對應的課程名。這時就需要在圖中的學生節點和課程節點之間找到一條通路,通路上所經過的點就是在進行查詢時所需要的連接條件。首先把數據庫模式結構建成一個無向圖,如圖4所示,然后以學生節點作為起點,課程節點作為終點尋找一條通路。尋找路徑的同時,記錄下路徑上經過的所有節點的信息。由于路徑上的節點除了表節點,所有的字段節點都是外鍵字段,所以使用外鍵類型的數據結構,存儲外鍵的主表和引用表等相關信息。獲取這條路徑上的信息后,根據路徑信息設置生成SQL語句,并設置連接查詢的查詢條件。

圖4 由關系數據庫生成的無向圖Fig.4 Undirected graph generated by relational database

2.5 關系數據到RDF數據的轉換

首先獲取到2.3節獲取到的數據庫和本體之間的映射關系,再根據2.4 節由字段、表、外鍵引用關系等信息生成的SQL 語句,在數據庫中進行查詢獲取相應的數據。根據主語模板和模板中對應的關系表中的字段數據,創建一個主語資源實體,并且根據指定的類別名把主語實體歸類到對應的類別概念下,創建一個(主語實體,類型,類別概念)的三元組。

其次根據對應關系對屬性進行處理,用數據屬性連接主語實體和數據值,用對象屬性連接主語實體和屬性實體,并創建相應的三元組。對于數據屬性,直接根據謂詞對應的字段名稱,取出字段數據作為數據屬性值并設置其數據類型;用謂詞關系把主語實體和數據屬性值連接起來,創建(主語實體,謂詞,數據屬性值)的三元組。對于對象屬性根據其URI 模板得到其實體資源的URI,判斷這個對象屬性實體是否已經存在。如果對象屬性實體已經存在直接使用謂詞關系把主語實體和對象屬性實體連接起來即可。如果該對象屬性實體不存在,那么就創建一個對象屬性實體,并且根據類型把其歸屬到對應的類別下,然后在用謂詞連接主語實體和對象屬性實體創建(主語實體,謂詞,對象屬性實體)的三元組。

最后選擇可以當前類,或者批量選擇本體模型中的所有類,按照指定的格式進行RDF三元組的轉換,系統提供了RDF/XML、N-triples、Turtle三種格式。

整體框架的實現算法如算法1 所示,算法2 描述了根據數據的查詢結果和對應關系生成三元組的過程。

算法1整體框架實現算法

輸入:Database URL,User Name,Password,Ontology URL

輸出:RDF Triples

Parsing-Database(Database URL,User Name,Password)

Parsing-Ontology(Ontology)

Specify subject entity template

AutoMaps=generateAutoMapping(Database URL,Ontology URL)

Revise AutoMaps

For map in AutoMaps:

If Fields are from the same table then

Generate SQL based on field and table information

Else if Fields come from different tables then

Creating graph according to database schema

Find the shortest path

Record the nodes passed by the path

Generate SQL based on the path

RDF Triples=generateRDFTriples(queryResult,mapping-Result)

Return RDF Triples

算法2RDF三元組生成算法

輸入:SQL Query Result,Map

輸出:RDF Triples

Generate subject according subject template and field data

Classify the subject into its category

Create Property according to predicate

Generate predicate attributes

If it is a data attribute then

Generate triples(subject,predicate,attribute value)

Else

If this attribute is already in RDF graph

Generate triples(subject,predicate,object property)

Else

Create object attribute entity

Categorized into its category,that is generated(object property entity,type,class)

Generate triples(subject,predicate,object attribute)

Select RDF data format

Return RDF Triples

3 框架應用和知識抽取實驗

實驗使用本文提出的框架對智慧養老業務系統中老年人的信息進行知識抽取并轉換成RDF 數據,完成智慧養老領域老年人基礎信息知識圖譜的構建。

實驗使用的自定義本體模型如圖5所示,該本體模型中包括17 個類別概念,25 個數據屬性,22 個對象屬性。類別概念中主要包括老人、養老機構、證件、護理類型等,主要用于描述老人的基礎信息,和老年人在養老機構的日常護理信息。其中數據屬性用于描述老人的基礎信息,如hasEmergencyPhone 表示老人的緊急聯系人電話。對象屬性用于表達老人概念與其他概念之間的關系,如belongPensionInstitution 表示老年人與養老機構的關系。

圖5 養老領域老人基礎信息本體模型Fig.5 Ontology model of basic information for the elderly

除了老人的基本信息概念和老年人在養老機構的信息,本體模型中還包括地址信息相關的概念。地址概念的規定采用了國家區域劃分的五級地址數據庫。行政區域劃分的本體模型中包含5個概念,用來表示行政區域劃分的五個級別。包括19 個屬性,其中14 個數據屬性表示行政區域基本信息,5個對象屬性連接不同等級的行政區域,表示行政區域的所屬關系。

數據庫中包括四個表,其中老人基礎信息表存儲老年人、姓名、性別、出生日期、血型等基礎信息。老人在養老機構登記的信息表存儲了老年人在當前機構的信息,如房間號、護理級別等信息。養老機構表存儲機構名、機構代碼、機構法人等養老服務機構的相關信息。地址信息表行政區域的數據庫里存儲區域的相關信息,包括區域代碼、區域名稱、郵政編碼、區域的經緯度,其中區域的parent_code是一個引用自身表的外鍵,被引用列是父級區域的區域代碼。

實驗步驟如下:

(1)如圖6 所示,首先對數據庫和本體模型的相關信息進行配置,包括數據庫的地址,數據庫的用戶名和密碼,本體模型所在的路徑地址。系統根據配置連接數據庫,加載本體模型,然后自動對數據庫和本體模型進行解析,并以可視化的方式展示出來。

圖6 本體模型和數據信息配置Fig.6 Ontology and database address configuration

(2)完成數據庫和本體模型的配置后,系統會根據數據庫的解析結果生成中間本體.并且計算自定義本體和中間本體各種概念屬性的相似度,基于相似度自動生成數據庫和自定義本體之間的候選映射。如圖7所示,對于自定義本體中的每一個類,顯示一個類標簽頁面。如圖7 所示,每個標簽頁面的顯示詳情包括:類和表的對應關系,屬性和字段的對應關系,以及類的主語模板的默認設置。

圖7 自動生成對應關系Fig.7 Automatically generated candidate mapping

(3)對自動生成的候選映射進行確認,確認類與表的映射,字段與屬性的映射。對錯誤的候選映射進行修正。如果不進行任何操作,則默認自動生成的對應關系全部是正確的。實驗中自定義本體模型中的17 個類,成功匹配到14 個,對象屬性22 個成功匹配到16 個,數據屬性25個匹配到20個。

(4)根據需要選擇是否對資源實體的主語模板修改,可選擇數據庫中表的字段和字符組合方式,將根據在主語設置的字段模板和字符生成主語資源的URI,實驗中使用默認的主語生成方式。

(5)確認和修改后,可以直接把當前類轉成RDF三元組,也可以在確認所有類的候選映射關系之后,一次完成整個數據庫的轉換。最終共抽取272 102 條RDF三元組,以N-triples的格式保存三元組到文件中。

最后使用本文的框架對關系數據進行知識抽取并轉換成RDF 數據,結合本體模型建立的養老領域老年人基礎信息知識圖譜如圖8所示。

圖8 老年人基礎信息知識圖譜Fig.8 Basic information knowledge graph for the elderly

如表3 所示,與現有的映射編輯類工具對比,本文提出的框架能夠方便地根據數據源和本體的解析結果,自動生成候選映射,可視化地進行修正和調整。另外能夠根據選擇的結果自動進行SQL 語句的生成和相應數據的獲取。不需中間映射文件的編輯和維護映射。并且應用框架能直接獲取到RDF 三元組,而不是映射文件,不需要再借助其他工具和插件去執行映射文件再得到RDF三元組。因此基于本文的框架實現的知識抽取系統,能夠方便地根據本體模型的目標詞匯快速的生成RDF三元組,較為高效地完成關系型數據的知識抽取和數據轉換。

表3 框架和工具功能比較情況Table 3 Comparison of framework and tool functions

4 結束語

結構化數據的知識抽取和RDF轉換是結構行業領域知識圖譜的重要步驟,本文針對當前關系型結構化知識抽取和數據轉換方法存在的操作繁瑣、需要用戶大量參與、進行大量R2RML 語句編碼工作,以及R2RML 映射維護等問題,提出一種關系型結構化知識抽取的框架方案并予以實現。直接由指定關系數據和本體模型中類別概念和屬性的對應關系,系統框架根據用戶指定的對應關系,自動生成SQL語句從關系數據庫中進行數據抽取生成RDF三元組。

未來的研究工作要對框架的細節進行進一步的完善,如在轉成生成三元組時根據用戶的需求把三元組劃分到不同的命名圖(named graph)中,提供數據類型的轉換機制,提供枚舉類型的處理機制等。另外還可以從關系型的結構化數據擴展到其他類型的結構數據的知識抽取上和數據轉換上,如Redis、Hbase、MongoDB 等數據庫,建立一個統一的結構化數據知識抽取和數據轉換的框架。未來的研究可以考慮實現一個統一的結構化知識抽取和數據轉換框架,并且以插件的方式集成到Protege中。

猜你喜歡
數據庫模型
一半模型
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
3D打印中的模型分割與打包
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
FLUKA幾何模型到CAD幾何模型轉換方法初步研究
主站蜘蛛池模板: 国产女同自拍视频| 亚洲成a人片77777在线播放| 久久先锋资源| 在线免费观看a视频| 浮力影院国产第一页| 国产99热| 婷婷六月天激情| 毛片基地视频| 亚洲成在人线av品善网好看| 一级毛片高清| 麻豆国产原创视频在线播放| 中文纯内无码H| 成人精品午夜福利在线播放| 国产97视频在线观看| 成年A级毛片| 囯产av无码片毛片一级| 欧美性爱精品一区二区三区| 国产精品永久不卡免费视频| 国产97视频在线观看| 亚洲免费三区| 日韩成人午夜| 国产精品亚洲日韩AⅤ在线观看| 免费观看成人久久网免费观看| 色综合中文字幕| 久久精品丝袜| 精品99在线观看| 五月婷婷综合色| 伊人久久福利中文字幕| jizz亚洲高清在线观看| 精品综合久久久久久97| 日韩在线观看网站| 国产精品林美惠子在线观看| 亚洲成a人片77777在线播放| 国产三级精品三级在线观看| 欧美精品不卡| 一级看片免费视频| 免费久久一级欧美特大黄| 国产黄色爱视频| 欧美成人精品欧美一级乱黄| 青青草原国产一区二区| 久久网欧美| 99免费在线观看视频| 免费人成在线观看成人片| 99久久免费精品特色大片| 青青青视频蜜桃一区二区| 亚洲精品国产综合99| 色妺妺在线视频喷水| 免费一看一级毛片| 在线精品视频成人网| 激情综合网址| 熟女视频91| 亚洲精品午夜天堂网页| 97视频精品全国免费观看| 国产网站一区二区三区| 日韩黄色精品| 操操操综合网| 99久久国产综合精品女同| 久久综合结合久久狠狠狠97色| 狠狠ⅴ日韩v欧美v天堂| a亚洲视频| 亚洲精品动漫| 欧美日韩专区| 亚洲精品中文字幕午夜| 波多野结衣在线se| 九九九久久国产精品| 麻豆精品在线| 国产主播在线一区| 国精品91人妻无码一区二区三区| 国产丝袜啪啪| 国产无码高清视频不卡| 精品福利国产| 午夜福利无码一区二区| 日韩午夜伦| 国产在线视频二区| 国产精品尹人在线观看| 97狠狠操| 国产欧美自拍视频| 老司机午夜精品网站在线观看| 91欧洲国产日韩在线人成| 在线观看亚洲精品福利片| 国产视频a| 3D动漫精品啪啪一区二区下载|