王 力 韓紅旗 高 雄 悅林東 張 琳 邱 爽
(1.中國(guó)科學(xué)技術(shù)信息研究所,北京 100038;2. 富媒體數(shù)字出版內(nèi)容組織與知識(shí)服務(wù)重點(diǎn)實(shí)驗(yàn)室,北京 100038;3. 北京建筑大學(xué),北京 100044)
科技創(chuàng)新的活動(dòng)中離不開(kāi)科技信息資源的支撐。日益增長(zhǎng)的信息數(shù)量正在對(duì)科技資源服務(wù)和知識(shí)技術(shù)提出了更高的要求。知識(shí)組織系統(tǒng)是知識(shí)技術(shù)的核心,可有效提高各類(lèi)資源的開(kāi)發(fā)利用效率。詞表系統(tǒng)是基于知識(shí)組織的核心思想,對(duì)某一主題法實(shí)體的具體體現(xiàn),包括分類(lèi)表、敘詞表、可檢詞單、同義詞環(huán)、術(shù)語(yǔ)表、名稱(chēng)規(guī)范文檔等[1]。其主要用途是方便科技信息工作者更準(zhǔn)確、全面地標(biāo)引和檢索文獻(xiàn)。漢語(yǔ)科技詞系統(tǒng)是在詞表系統(tǒng)的基礎(chǔ)上,充分吸收本體思想而構(gòu)建的專(zhuān)業(yè)領(lǐng)域知識(shí)服務(wù)系統(tǒng),既能支持傳統(tǒng)的敘詞表、分類(lèi)、范疇等,又能支持用戶(hù)自定義的屬性和關(guān)系,具有良好的知識(shí)組織系統(tǒng)兼容性,本質(zhì)上是一種知識(shí)庫(kù)資源。詞系統(tǒng)能夠有效滿(mǎn)足科技信息資源深度加工的需要,為高水平科技服務(wù)提供了知識(shí)組織內(nèi)容資源[2]。
工程科技詞系統(tǒng)全稱(chēng)是中國(guó)工程科技知識(shí)中心知識(shí)組織系統(tǒng),由中國(guó)工程科技知識(shí)中心委托中國(guó)科學(xué)技術(shù)信息研究所在20余分中心提供的領(lǐng)域詞表基礎(chǔ)上建設(shè)的,旨在促進(jìn)各類(lèi)資源的匯集、融合、連通和共享,支持知識(shí)中心的各項(xiàng)知識(shí)服務(wù)功能。其發(fā)展歷經(jīng)了集成融合、關(guān)系和屬性擴(kuò)展以及詞系統(tǒng)協(xié)同構(gòu)建3個(gè)階段。該系統(tǒng)以詞條(Term)作為基本組織對(duì)象,包含基本信息、定義及注釋、屬性、多維分類(lèi)、詞條之間的關(guān)系以及形式化概念描述等知識(shí)結(jié)構(gòu)。其中,詞間關(guān)系可精確定位一個(gè)概念;屬性可對(duì)一條詞條進(jìn)行限定;分類(lèi)包括3個(gè)分類(lèi)體系,即《中國(guó)圖書(shū)館分類(lèi)法》(CLC)、《國(guó)際專(zhuān)類(lèi)分類(lèi)法》(IPC)和領(lǐng)域相關(guān)分類(lèi)體系(DSC);形式化概念描述有利于詞系統(tǒng)自動(dòng)化分析和計(jì)算。通過(guò)對(duì)這4個(gè)要素的不斷優(yōu)化和完善,可以有效提高詞系統(tǒng)知識(shí)服務(wù)功能的發(fā)揮,促進(jìn)行業(yè)知識(shí)服務(wù)產(chǎn)品的推廣和應(yīng)用。
現(xiàn)有詞系統(tǒng)包含了21個(gè)詞表,有2 469 796個(gè)詞條、3 180 610個(gè)關(guān)系,并以關(guān)系數(shù)據(jù)庫(kù)的形式存儲(chǔ),廣泛應(yīng)用于知識(shí)中心和各下屬分中心的知識(shí)組織體系及資源建設(shè)中。自20世紀(jì)80年代以來(lái),關(guān)系數(shù)據(jù)庫(kù)一直是數(shù)據(jù)庫(kù)領(lǐng)域發(fā)展的主力并持續(xù)至今,具有簡(jiǎn)單、易操作的優(yōu)點(diǎn)。但當(dāng)面臨大規(guī)模數(shù)據(jù)作業(yè)時(shí),則需要耗費(fèi)大量的時(shí)間和操作成本,并且缺乏連通性[3]?;陉P(guān)系數(shù)據(jù)庫(kù)構(gòu)建的詞系統(tǒng),其詞條和關(guān)系是分開(kāi)存儲(chǔ)的,并利用主鍵、外鍵等建立數(shù)據(jù)庫(kù)表間的關(guān)系。這種存儲(chǔ)方式帶來(lái)的主要問(wèn)題是:若用戶(hù)想獲取某個(gè)關(guān)系詞條的名稱(chēng),或檢索與某詞條具有某種關(guān)系的詞條集合等,常需通過(guò)資源消耗較大的連接(join)操作來(lái)實(shí)現(xiàn);基于關(guān)系數(shù)據(jù)庫(kù)存儲(chǔ)的詞表缺乏跨知識(shí)鏈接的能力,具體表現(xiàn)為同名概念詞匯在多個(gè)領(lǐng)域的無(wú)關(guān)系存儲(chǔ)為跨領(lǐng)域的知識(shí)檢索帶來(lái)不便;缺乏一套靈活的分類(lèi)體系存儲(chǔ)方案,無(wú)法將分類(lèi)與概念知識(shí)進(jìn)行有效鏈接。此外,在增加屬性或關(guān)系等詞表擴(kuò)展上,關(guān)系數(shù)據(jù)庫(kù)也對(duì)數(shù)據(jù)庫(kù)設(shè)計(jì)和使用者提出了較高的要求。
和關(guān)系數(shù)據(jù)庫(kù)相比,圖數(shù)據(jù)庫(kù)更善于處理大量復(fù)雜、低結(jié)構(gòu)化且互連接的數(shù)據(jù),支持用戶(hù)頻繁的查詢(xún),并且采用去中心化分布式存儲(chǔ),易于擴(kuò)展應(yīng)用到多臺(tái)服務(wù)器上,支持Java、Python等多種流行語(yǔ)言調(diào)用[4]。隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)已不能很好地滿(mǎn)足用戶(hù)信息組織和知識(shí)服務(wù)方面的需求,限制了詞系統(tǒng)功能的發(fā)揮。因此,將大規(guī)模詞系統(tǒng)從關(guān)系數(shù)據(jù)庫(kù)向圖數(shù)據(jù)庫(kù)的轉(zhuǎn)化逐漸成為系統(tǒng)升級(jí)的首要選擇。Neo4j是一種同時(shí)支持節(jié)點(diǎn)和關(guān)系的屬性定義的圖數(shù)據(jù)庫(kù),可以清晰、靈活地表示節(jié)點(diǎn)、關(guān)系和屬性元素,能實(shí)現(xiàn)專(zhuān)業(yè)數(shù)據(jù)庫(kù)級(jí)別的圖數(shù)據(jù)模型的存儲(chǔ);可以靈活添加或更改數(shù)據(jù)和數(shù)據(jù)類(lèi)型,提供更快的事務(wù)處理和數(shù)據(jù)關(guān)系處理功能,有利于縮短開(kāi)發(fā)時(shí)間,實(shí)現(xiàn)項(xiàng)目的敏捷、迭代開(kāi)發(fā)。因此,本文基于工程科技詞系統(tǒng)在發(fā)展和應(yīng)用過(guò)程中的問(wèn)題,提出了詞系統(tǒng)的圖數(shù)據(jù)庫(kù)存儲(chǔ)方案,并選擇Neo4j作為存儲(chǔ)的圖數(shù)據(jù)庫(kù)實(shí)現(xiàn)詞系統(tǒng)從關(guān)系數(shù)據(jù)庫(kù)向圖數(shù)據(jù)庫(kù)的轉(zhuǎn)化,重點(diǎn)解決詞系統(tǒng)中同名詞檢索、詞條屬性及詞條間關(guān)系映射和詞系統(tǒng)分類(lèi)體系表達(dá)等問(wèn)題。
近年來(lái),圖數(shù)據(jù)庫(kù)應(yīng)用廣泛[5-7],它支持百億乃至千億量級(jí)規(guī)模的巨型圖的存儲(chǔ)。圖數(shù)據(jù)庫(kù)是以圖論為理論基礎(chǔ),以節(jié)點(diǎn)和關(guān)系所組成的圖作為數(shù)據(jù)模型的數(shù)據(jù)庫(kù),具有良好的可擴(kuò)展性和互操作性,可實(shí)現(xiàn)高效的圖數(shù)據(jù)利用和圖分析[8]。圖分析可以深入探索各種實(shí)體(如組織,人員,交易)之間復(fù)雜的相互關(guān)系。
主要的圖數(shù)據(jù)存儲(chǔ)系統(tǒng)包括RDF圖模型和屬性圖模型。前者以RDF(Resource Description Framework)三元組為存儲(chǔ)對(duì)象。RDF由節(jié)點(diǎn)和邊組成,節(jié)點(diǎn)表示實(shí)體/資源或者屬性,邊表示實(shí)體和實(shí)體之間的關(guān)系以及實(shí)體和屬性的關(guān)系。RDF圖模型具有較成熟的標(biāo)準(zhǔn)體系和標(biāo)準(zhǔn)查詢(xún)語(yǔ)言SparQL,常見(jiàn)的數(shù)據(jù)庫(kù)有Jena和Virtuoso等。屬性圖是目前主流圖數(shù)據(jù)庫(kù)選擇的數(shù)據(jù)模型,更確切地說(shuō)是帶標(biāo)簽的屬性圖(Labeled-Property Graph),它的節(jié)點(diǎn)和邊都可以定義屬性。常見(jiàn)的圖數(shù)據(jù)庫(kù)有Neo4j、GraphDB和FlockDB等[9]。其中,Neo4j實(shí)現(xiàn)了專(zhuān)業(yè)級(jí)別的圖數(shù)據(jù)模型存儲(chǔ)和高性能的圖遍歷功能,已被數(shù)十萬(wàn)家公司和組織采用。Neo4j主要元素包括節(jié)點(diǎn)、關(guān)系、屬性和實(shí)體標(biāo)簽。這些不同元素存儲(chǔ)在不同的文件中,具有明確的存儲(chǔ)職責(zé)劃分,并以圖的形式進(jìn)行鏈接,邊緣信息則作為屬性存儲(chǔ)起來(lái)(圖1)。Neo4j主要采用的是Cypher查詢(xún)語(yǔ)言。該語(yǔ)言是一種聲明式圖數(shù)據(jù)庫(kù)查詢(xún)語(yǔ)言,具有豐富的表現(xiàn)力,能高效地查詢(xún)和更新圖數(shù)據(jù)[10]。
圖1 圖數(shù)據(jù)庫(kù)模型
將關(guān)系數(shù)據(jù)庫(kù)轉(zhuǎn)化為RDF圖模型已有了較多的研究。例如,Angels R[6]等詳細(xì)地分析了圖數(shù)據(jù)庫(kù)的整體框架,并闡述了知識(shí)在圖數(shù)據(jù)庫(kù)中的存儲(chǔ)形式。師波等[11]提出了一種能自動(dòng)將關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)轉(zhuǎn)換為 RDF 的方法,并通過(guò)實(shí)驗(yàn)驗(yàn)證了該方法的可行性。張曄等[12]針對(duì)基于關(guān)系數(shù)據(jù)庫(kù)構(gòu)建的Acemap系統(tǒng)中存在的多表聯(lián)合查詢(xún)和擴(kuò)展性差的問(wèn)題,提出了三元組形式存儲(chǔ)的圖數(shù)據(jù)庫(kù)解決方案。隨著本體研究的不斷深入,OWL本體作為RDF本體的擴(kuò)展,已得到廣泛應(yīng)用。黃奇等[13-14]提出了基于圖形數(shù)據(jù)庫(kù)的OWL本體存儲(chǔ)模型,該模型滿(mǎn)足模式結(jié)構(gòu)的規(guī)范性、穩(wěn)定性、可理解性,保證了語(yǔ)義的完備性,是一種理論上可行的規(guī)范存儲(chǔ)模型,并以全球產(chǎn)品分類(lèi)GPC為例,設(shè)計(jì)實(shí)現(xiàn)了產(chǎn)品分類(lèi)本體的圖數(shù)據(jù)庫(kù)存儲(chǔ)。這種RDF圖雖然學(xué)術(shù)界研究較多,易于數(shù)據(jù)的發(fā)布、分享,但由于三元組的實(shí)體和關(guān)系不包含屬性,不支持兩個(gè)同樣實(shí)體之間的多個(gè)同類(lèi)關(guān)系,缺少靈活性,在實(shí)際應(yīng)用中存在諸多不便。因此,近年來(lái)很多商業(yè)應(yīng)用開(kāi)始考慮采用圖數(shù)據(jù)庫(kù)取代以RDF圖為基礎(chǔ)的SparQL數(shù)據(jù)庫(kù)。
隨著基于屬性圖的圖數(shù)據(jù)庫(kù)的成熟和發(fā)展,已有一些學(xué)者針對(duì)關(guān)系數(shù)據(jù)庫(kù)和圖數(shù)據(jù)庫(kù)之間轉(zhuǎn)化的問(wèn)題開(kāi)展了研究。例如,郭林斐等[15]分析了關(guān)系數(shù)據(jù)庫(kù)的不足和圖數(shù)據(jù)庫(kù)的優(yōu)勢(shì),基于Neo4j建立了用于處理不確定性歷史數(shù)據(jù)的通用數(shù)學(xué)模型,解決了不確定性歷史數(shù)據(jù)的語(yǔ)義框架問(wèn)題。陳青云等[16]對(duì)敘詞表進(jìn)行加工,以機(jī)械領(lǐng)域?yàn)槔?,將傳統(tǒng)敘詞表轉(zhuǎn)換成SKOS本體,并利用Neo4j加以存儲(chǔ)。沈思等[17]從知識(shí)服務(wù)的角度出發(fā),結(jié)合了圖數(shù)據(jù)庫(kù)的特點(diǎn)提出了分類(lèi)表知識(shí)組織結(jié)構(gòu),并給出了分類(lèi)表的圖數(shù)據(jù)庫(kù)存儲(chǔ)方案。
從當(dāng)前研究可以發(fā)現(xiàn),尚未形成一套完整的詞表系統(tǒng)向圖數(shù)據(jù)庫(kù)轉(zhuǎn)化存儲(chǔ)方案。現(xiàn)有的部分研究雖探討了詞表和分類(lèi)的圖數(shù)據(jù)庫(kù)存儲(chǔ),但并未解決多領(lǐng)域詞表的圖數(shù)據(jù)庫(kù)轉(zhuǎn)化及分類(lèi)與詞表的映射問(wèn)題。因此,本文在前人研究的基礎(chǔ)上,分析了工程科技詞系統(tǒng)的知識(shí)結(jié)構(gòu)特點(diǎn),針對(duì)詞系統(tǒng)現(xiàn)存問(wèn)題,提出了基于Neo4j圖數(shù)據(jù)庫(kù)的詞系統(tǒng)存儲(chǔ)方案。
依據(jù)現(xiàn)有詞表系統(tǒng)發(fā)展過(guò)程中產(chǎn)生的實(shí)際需求,提出基于Neo4j的詞系統(tǒng)存儲(chǔ)方案。將現(xiàn)有詞系統(tǒng)從關(guān)系數(shù)據(jù)庫(kù)轉(zhuǎn)化為Neo4j圖數(shù)據(jù)庫(kù)主要考慮以下3個(gè)問(wèn)題:一是現(xiàn)存詞表是用多張關(guān)聯(lián)表的關(guān)系數(shù)據(jù)庫(kù)格式進(jìn)行存儲(chǔ),詞條范圍覆蓋多個(gè)工程領(lǐng)域,有些相同名稱(chēng)的詞條出現(xiàn)在不同領(lǐng)域的詞表中,具有不同的詞條含義。因此,在關(guān)系數(shù)據(jù)庫(kù)中索引這類(lèi)詞條時(shí),會(huì)耗費(fèi)大量操作和時(shí)間,大大降低了詞系統(tǒng)的知識(shí)服務(wù)功能的發(fā)揮。二是當(dāng)前詞系統(tǒng)中詞條之間的關(guān)系是一種重要的知識(shí)存在,通過(guò)詞條關(guān)系可以較為精確地定位一個(gè)概念。詞條的屬性是對(duì)詞條的另一種限定,是詞條另一種重要的描述形式。因此,是否能將關(guān)系和屬性進(jìn)行良好的表達(dá)是詞系統(tǒng)能否提高知識(shí)服務(wù)水平的關(guān)鍵。三是分類(lèi)表是詞系統(tǒng)的一個(gè)重要資源,當(dāng)前詞系統(tǒng)支持多維分類(lèi),即一個(gè)詞條可以用不同的分類(lèi)法類(lèi)目加以標(biāo)識(shí)。因此,如何將分類(lèi)體系轉(zhuǎn)化成Neo4j進(jìn)行存儲(chǔ)也是至關(guān)重要的。
同名詞是指在不同領(lǐng)域詞表中出現(xiàn)的相同名稱(chēng)的詞條。例如,名稱(chēng)為A的詞條(Term)既存在于敘詞表(Thesaurus)Ⅰ中,又存在于敘詞表(Thesaurus)Ⅱ中。對(duì)同名詞進(jìn)行檢索可以實(shí)現(xiàn)跨領(lǐng)域的知識(shí)鏈接。然而,在關(guān)系數(shù)據(jù)庫(kù)中,對(duì)同名詞A的詞條(Term)A檢索時(shí)為順序檢索,這大大降低了檢索效率。在轉(zhuǎn)換為圖數(shù)據(jù)庫(kù)時(shí),一個(gè)解決方案是在不同詞表的同名詞條間建立sameAs關(guān)系,然而這會(huì)增加關(guān)系(邊)的存儲(chǔ)數(shù)量,而且不利于了解哪些概念具有跨領(lǐng)域特征。例如,若5個(gè)詞表存在同一個(gè)同名詞,需要增加10條具有sameAs關(guān)系的邊,且需通過(guò)查找全部sameAs關(guān)系并在去重后才能知道哪些詞存在于多個(gè)領(lǐng)域。因此,本文提出了同名詞檢索轉(zhuǎn)化方案(圖2)。
圖2以?xún)蓚€(gè)同名詞為例,多個(gè)同名詞的處理與之相同。同名詞條(Term)A在敘詞表(Thesaurus)Ⅰ中與詞條(Term)B具有關(guān)系(relation)α,在敘詞表(Thesaurus)Ⅱ中與詞條(Term)C具有關(guān)系(relation)β。建立一類(lèi)特殊節(jié)點(diǎn),標(biāo)簽命名為Polysemy。這樣同名詞條(Term)A就可以表示為Polysemy{Term A},該節(jié)點(diǎn)與分布在敘詞表(Thesaurus)Ⅰ和敘詞表(Thesaurus)Ⅱ中的ThesaurusⅠ{TermA}及ThesaurusⅡ{TermA}建立鏈接。
圖2 同名詞檢索轉(zhuǎn)化方案
當(dāng)用戶(hù)檢索詞條(Term)A時(shí),可同時(shí)找到在敘詞表(Thesaurus)Ⅰ中與詞條(Term)A有關(guān)系(relation)α的詞條(Term)B以及在敘詞表(Thesaurus)Ⅱ有關(guān)系(relation)β的詞條(Term)C。
詞間關(guān)系是詞系統(tǒng)中一種重要知識(shí)的存在。詞間一級(jí)關(guān)系有3種基本類(lèi)型,分別是等同關(guān)系、層級(jí)關(guān)系和相關(guān)關(guān)系。其中,等同關(guān)系是有方向的,涵蓋了敘詞表或主題詞表中的用代關(guān)系;層級(jí)關(guān)系是有方向的,涵蓋了敘詞表或主題詞表中的屬分關(guān)系;相關(guān)關(guān)系是無(wú)方向的,對(duì)應(yīng)了敘詞表或主題詞表中的參關(guān)系。和傳統(tǒng)敘詞表或主題詞表相比,詞系統(tǒng)中的關(guān)系定義支持二級(jí)關(guān)系,更為復(fù)雜和靈活。其中,等同關(guān)系的二級(jí)類(lèi)型包括“全稱(chēng)是”“縮略為”等;層次關(guān)系的二級(jí)類(lèi)型包括“參與構(gòu)成”“構(gòu)成成分”等;相關(guān)關(guān)系依據(jù)領(lǐng)域的不同又分為控制關(guān)系、時(shí)間關(guān)系、空間關(guān)系、因果關(guān)系等類(lèi)型。本文將這類(lèi)關(guān)系稱(chēng)為相關(guān)關(guān)系,二級(jí)類(lèi)型包括“替代”“影響”等(表1)。
表1 關(guān)系數(shù)據(jù)庫(kù)中的關(guān)系表
為了解決二級(jí)關(guān)系在Neo4j中的存儲(chǔ),我們將二級(jí)關(guān)系名稱(chēng)轉(zhuǎn)變?yōu)橐患?jí)關(guān)系的屬性來(lái)實(shí)現(xiàn)詞條間關(guān)系的描述。在實(shí)現(xiàn)方案中,關(guān)系數(shù)據(jù)庫(kù)中的一級(jí)類(lèi)型映射到Neo4j中作為關(guān)系名稱(chēng)出現(xiàn),而二級(jí)類(lèi)型作為關(guān)系的屬性類(lèi)型,即將二級(jí)類(lèi)型作為關(guān)系的類(lèi)型(type)呈現(xiàn)。例如,“等同關(guān)系—全稱(chēng)是”“層次關(guān)系—參與構(gòu)成”“相關(guān)關(guān)系—影響”可采用圖3所示的方式進(jìn)行轉(zhuǎn)化和存儲(chǔ)。Neo4j中的關(guān)系一般是有方向的,因此在轉(zhuǎn)化的過(guò)程中,對(duì)于無(wú)方向的關(guān)系需要?jiǎng)?chuàng)建雙向的關(guān)系。
圖3 關(guān)系轉(zhuǎn)化示意
詞系統(tǒng)中屬性描述模式和關(guān)系相似,存在二級(jí)屬性(表2)。
表2 關(guān)系數(shù)據(jù)庫(kù)中的屬性表
在將關(guān)系數(shù)據(jù)庫(kù)存儲(chǔ)的詞系統(tǒng)轉(zhuǎn)化為Neo4j的過(guò)程中,屬性表的處理較為復(fù)雜,主要原因在于屬性表中一級(jí)類(lèi)型和二級(jí)類(lèi)型的表示問(wèn)題。如果只把二級(jí)類(lèi)型保留作為詞條間關(guān)系,則丟失了一級(jí)類(lèi)型屬性信息。同樣地,若只把一級(jí)類(lèi)型作為詞條間關(guān)系名稱(chēng),則失去了更為詳細(xì)的二級(jí)類(lèi)型屬性信息。為了保留詞條的二級(jí)屬性信息,提出屬性轉(zhuǎn)化解決方案(圖4)。
圖4 屬性轉(zhuǎn)化方案示意
在該方案中,將一級(jí)類(lèi)型的屬性抽象為一類(lèi)標(biāo)簽(采用PropertyNode表示),將一級(jí)屬性名稱(chēng)用name屬性來(lái)描述;將二級(jí)類(lèi)型的屬性抽象為一類(lèi)關(guān)系,將二級(jí)屬性的名稱(chēng)作為屬性關(guān)系類(lèi)型的type屬性。這樣在實(shí)例化時(shí),詞條的屬性值作為PropertyNode節(jié)點(diǎn)的一個(gè)屬性值,就可以在保留詞條的一級(jí)和二級(jí)屬性信息的同時(shí),解決詞條屬性值的存儲(chǔ)問(wèn)題。
工程科技詞系統(tǒng)的分類(lèi)體系包括《中國(guó)圖書(shū)館分類(lèi)法》(CLC)、《國(guó)際專(zhuān)類(lèi)分類(lèi)法》(IPC)和領(lǐng)域相關(guān)分類(lèi)體系(DSC)。在關(guān)系數(shù)據(jù)庫(kù)中,這3個(gè)分類(lèi)體系分別作為3張表進(jìn)行存儲(chǔ)。將分類(lèi)表轉(zhuǎn)化成Neo4j存儲(chǔ)的主要目的是構(gòu)建一個(gè)可以靈活使用的分類(lèi)體系。本文以《中國(guó)圖書(shū)館分類(lèi)法》(以下簡(jiǎn)稱(chēng)“《中圖法》”)為例,提出詞表轉(zhuǎn)化的方案,IPC和DSC可以采用類(lèi)似的方法實(shí)現(xiàn)。
《中圖法》是以科學(xué)分類(lèi)和知識(shí)分類(lèi)為基礎(chǔ)、結(jié)合文獻(xiàn)內(nèi)容特點(diǎn)及形式特征進(jìn)行邏輯劃分和系統(tǒng)排列的類(lèi)目表,是類(lèi)分文獻(xiàn)、組織文獻(xiàn)分類(lèi)排架、編制分類(lèi)檢索系統(tǒng)的工具?!吨袌D法》共分5個(gè)基本部類(lèi)、22個(gè)大類(lèi),大類(lèi)下面又分為多層次子類(lèi)。采用漢語(yǔ)拼音字母與阿拉伯?dāng)?shù)字相結(jié)合的混合號(hào)碼,用一個(gè)字母代表一個(gè)大類(lèi),以字母順序反映大類(lèi)的次序,在字母后用數(shù)字作標(biāo)記。
在《中圖法》分類(lèi)表轉(zhuǎn)化的過(guò)程中,為了表示《中圖法》的一個(gè)類(lèi)目,我們定義了一類(lèi)“CLC”標(biāo)簽。該類(lèi)標(biāo)簽具有兩個(gè)基本的屬性:一個(gè)屬性名是CID,用來(lái)存儲(chǔ)類(lèi)目的編碼,如“TD1”;另一個(gè)屬性名是name,用來(lái)存儲(chǔ)類(lèi)目的名稱(chēng),例如“礦山地質(zhì)與測(cè)量”。為了表示類(lèi)目之間的層級(jí)關(guān)系,我們定義了關(guān)系類(lèi)型“subClass”作為上下級(jí)類(lèi)目之間的鏈接。該關(guān)系類(lèi)型具有一個(gè)基本屬性“l(fā)evel”,用來(lái)表示關(guān)系的級(jí)別(圖5)。
圖5 屬性轉(zhuǎn)化方案示意
詞系統(tǒng)中建立了詞條與分類(lèi)類(lèi)目之間的鏈接關(guān)系。一般來(lái)說(shuō),詞條和《中圖法》類(lèi)目之間存在著多對(duì)多的關(guān)系,即一個(gè)詞條可能與多個(gè)《中圖法》類(lèi)目存在關(guān)聯(lián)關(guān)系,同時(shí)一個(gè)《中圖法》類(lèi)目與多個(gè)詞條間存在關(guān)聯(lián)關(guān)系(圖6)。
圖6 分類(lèi)關(guān)系描述示意
在將《中圖法》轉(zhuǎn)化為Neo4j存儲(chǔ)后,可以方便地表示詞條在《中圖法》之間存在的多對(duì)多關(guān)系。為此,我們定義了“TermOfCLC”關(guān)系,從一個(gè)詞條指向《中圖法》一個(gè)類(lèi)目(圖7)。
圖7 分類(lèi)體系轉(zhuǎn)化方案示意
本實(shí)驗(yàn)的硬件環(huán)境為64位的Windows 7操作系統(tǒng);8 GB內(nèi)存、AMD A10CPU。軟件環(huán)境為1.8版本的JDK 8.0的Mysql和3.4.17版本的Neo4j。采用的數(shù)據(jù)來(lái)自于中國(guó)工程科技知識(shí)中心的知識(shí)組織系統(tǒng),共包含21個(gè)詞表。采用提出的存儲(chǔ)方案后實(shí)現(xiàn)了將詞系統(tǒng)從MySql關(guān)系數(shù)據(jù)庫(kù)向Neo4j圖數(shù)據(jù)庫(kù)的轉(zhuǎn)化。圖8是轉(zhuǎn)換后的一個(gè)片段的可視化展示。在圖8中,“polysemy”代表新增加的同名詞類(lèi)的節(jié)點(diǎn),“數(shù)據(jù)合并”和“數(shù)據(jù)處理”這兩個(gè)詞分別在“地質(zhì)學(xué)主題詞表”“信息中心主題詞表”和“環(huán)境保護(hù)主題詞表”這3個(gè)表中出現(xiàn)過(guò),具體關(guān)系如圖8中左邊部分所示。圖8的下面分別展示了關(guān)系和屬性的具體描述信息。
圖8 Neo4j存儲(chǔ)示意
為了驗(yàn)證轉(zhuǎn)化后詞系統(tǒng)的檢索性能,開(kāi)展了檢索時(shí)間對(duì)比實(shí)驗(yàn)和關(guān)聯(lián)路徑查詢(xún)實(shí)驗(yàn)。檢索時(shí)間對(duì)比實(shí)驗(yàn)是為了驗(yàn)證轉(zhuǎn)化后詞表知識(shí)資源利用的高效性;關(guān)聯(lián)路徑查詢(xún)實(shí)驗(yàn)是為了展示圖數(shù)據(jù)庫(kù)在檢索的詞表知識(shí)路徑的便捷性。
選擇“有色金屬”“黑色金屬”兩個(gè)領(lǐng)域的詞表進(jìn)行對(duì)比實(shí)驗(yàn)。數(shù)據(jù)信息共包括詞條27 373條,詞條關(guān)系70 785條,詞條屬性16 673條,詞條分類(lèi)11 837條;《中國(guó)圖書(shū)館分類(lèi)法》《國(guó)際專(zhuān)利分類(lèi)法》兩個(gè)分類(lèi)法,共有類(lèi)目109 441條。
隨機(jī)選擇一個(gè)分類(lèi)類(lèi)目特種結(jié)構(gòu)材料(TB383),在Mysql和Neo4j中分別檢索其下所有的詞條信息。檢索結(jié)果見(jiàn)表3。
表3 關(guān)系數(shù)據(jù)庫(kù)與圖數(shù)據(jù)庫(kù)檢索時(shí)間
和關(guān)系數(shù)據(jù)庫(kù)的平均檢索時(shí)間0.950秒相比,基于Neo4j存儲(chǔ)的工程科技詞系統(tǒng)在檢索詞條時(shí)只需0.129秒,大大降低了檢索時(shí)間,有效地提高了檢索效率。
兩個(gè)詞條關(guān)系路徑查詢(xún)有助于了解兩個(gè)概念詞匯之間的關(guān)聯(lián)關(guān)系,即了解相關(guān)知識(shí)之間深層次的關(guān)系。以詞系統(tǒng)中的“球墨鑄鐵”和“脫碳相”兩個(gè)詞條為例(圖9),這兩個(gè)詞條之間并沒(méi)有任何直接關(guān)系。如果要在關(guān)系數(shù)據(jù)庫(kù)中查找它們的路徑,需要找到“球墨鑄鐵”的關(guān)系詞條,然后通過(guò)關(guān)系詞條查找其直接關(guān)聯(lián)的詞條,再?gòu)年P(guān)聯(lián)的每一個(gè)詞條出發(fā),重復(fù)延伸關(guān)系,一直找到“脫碳相”為止。假設(shè)“球墨鑄鐵”到“脫碳相”之間有N個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)的關(guān)系數(shù)量為T(mén)。在關(guān)系數(shù)據(jù)庫(kù)中,若要得到“球墨鑄鐵”與“脫碳相”之間的關(guān)系,只有遍歷最大N×T次,才能得到。
圖9 圖數(shù)據(jù)庫(kù)示意
而在Neo4j中,可以使用查詢(xún)語(yǔ)句直接獲取到“球墨鑄鐵”與“脫碳相”之間的關(guān)系。查詢(xún)語(yǔ)句為:MATCH (a:`黑色金屬`{中文名稱(chēng):"球墨鑄鐵"}),(b:`黑色金屬`{中文名稱(chēng):"脫 碳 相"}) return (a)-[*]->(b);也可直接使用allshortestPaths獲取所有最短路徑,即MATCH n=allshortestPaths((a:`黑色金屬`{中文名稱(chēng):”球墨鑄鐵”})-[*]-(b:`黑色金屬`{中文名稱(chēng):”脫碳相”})) return n。查詢(xún)結(jié)果見(jiàn)圖10。
圖10 關(guān)系路徑查詢(xún)示意
可見(jiàn),在詞系統(tǒng)中獲取沒(méi)有直接關(guān)系且相距較遠(yuǎn)的兩個(gè)詞條之間的關(guān)聯(lián)時(shí),Mysql數(shù)據(jù)庫(kù)需要極其復(fù)雜的操作過(guò)程才能實(shí)現(xiàn),普通人員幾乎無(wú)法完成,而在Neo4j中卻可輕松實(shí)現(xiàn)。Neo4j不僅支持所有路徑的查詢(xún),而且提供了最短路徑、所有最短路徑、路徑深度配置的查詢(xún),為關(guān)聯(lián)詞條的查詢(xún)提供了便捷性。
因?yàn)殛P(guān)系數(shù)據(jù)庫(kù)要考慮規(guī)范化的問(wèn)題,一個(gè)詞條完整的信息常常保存在若干個(gè)表中,而圖數(shù)據(jù)庫(kù)是屬性圖,不存在這個(gè)問(wèn)題,在詞條信息動(dòng)態(tài)更新時(shí)更加簡(jiǎn)便。因此,在增刪改查方面,Neo4j的操作效率和可維護(hù)性一般要遠(yuǎn)高于關(guān)系數(shù)據(jù)庫(kù)。下面以為一個(gè)詞條增加一個(gè)屬性來(lái)說(shuō)明。具體來(lái)說(shuō),操作是在詞條屬性中添加一個(gè)新屬性(字段),并為其添加一個(gè)詞條屬性的值,描述當(dāng)前詞條屬性的來(lái)源。
在關(guān)系數(shù)據(jù)庫(kù)中,描述詞條屬性共有3個(gè)表,分別為詞條信息表、屬性類(lèi)型表、詞條屬性信息表。在關(guān)系數(shù)據(jù)庫(kù)中的詞條“生鐵”,在詞條屬性表中描述信息如圖11所示,該圖是由3個(gè)表關(guān)聯(lián)查詢(xún)得到的結(jié)果。
圖11 關(guān)系數(shù)據(jù)庫(kù)中詞條屬性信息
若對(duì)“生鐵”添加新的屬性“應(yīng)用場(chǎng)景:軌道”,添加來(lái)源字段為“漢語(yǔ)科技詞系統(tǒng)”。在關(guān)系數(shù)據(jù)庫(kù)中需先添加字段:
alter tablelogin_user add source varchar(255)DEFAULT NULL;
然后執(zhí)行插入操作:
INSERT INTO fhcb_tbl_term_attribute(termId,attributeId,content,source)
SELECT t2.id as termId,
(SELECT t3.id from fhcb_tbl_attribute t3 where t3.name=‘應(yīng)用場(chǎng)景’)as attributedId,‘軌道’as content,‘漢語(yǔ)科技詞系統(tǒng)’as sourcefrom fhcb_tbl_term t2 where t2.‘name’=‘生鐵’
在執(zhí)行插入操作的過(guò)程中,需要分別在詞條所在的詞表和屬性類(lèi)型表中找到其對(duì)應(yīng)的id,在獲取id后再進(jìn)行插入。此外,對(duì)于使用關(guān)系數(shù)據(jù)庫(kù)為存儲(chǔ)的應(yīng)用系統(tǒng)中,在開(kāi)發(fā)時(shí),還需要對(duì)數(shù)據(jù)庫(kù)表修改實(shí)體類(lèi)文件的字段,相應(yīng)的接口層都需要進(jìn)行修改,涉及大量的代碼編程,操作較繁瑣。
在Neo4j圖數(shù)據(jù)庫(kù)中,可直接插入詞條屬性,操作簡(jiǎn)單,無(wú)需對(duì)整個(gè)結(jié)構(gòu)進(jìn)行修改。其執(zhí)行語(yǔ)句為:
MATCH (n{`中文名稱(chēng)`: ‘生 鐵’}) SET n.source = '漢語(yǔ)科技詞系統(tǒng)',n.`應(yīng)用場(chǎng)景`='軌道' RETURN n;
搜索和存儲(chǔ)數(shù)據(jù)所付出的成本浪費(fèi)是當(dāng)前大數(shù)據(jù)研究普遍存在的問(wèn)題[18-19]。本文基于工程科技領(lǐng)域詞系統(tǒng)知識(shí)資源有效利用的需求,針對(duì)同名詞檢索、詞間關(guān)系和屬性以及詞系統(tǒng)中分類(lèi)體系表達(dá)這3個(gè)問(wèn)題,提出了由關(guān)系數(shù)據(jù)庫(kù)向Neo4j存儲(chǔ)的轉(zhuǎn)化方案。該轉(zhuǎn)化方案可以有效地解決同名詞檢索、詞條屬性及詞條間關(guān)系映射和詞系統(tǒng)分類(lèi)體系表達(dá)。詞表系統(tǒng)轉(zhuǎn)化為圖數(shù)據(jù)庫(kù)后,不僅提高了知識(shí)檢索的速度,而且可以便捷地實(shí)現(xiàn)知識(shí)關(guān)聯(lián)地查詢(xún),可以更加方便地實(shí)現(xiàn)詞條的動(dòng)態(tài)更新。
圖數(shù)據(jù)庫(kù)為知識(shí)組織系統(tǒng)發(fā)展帶來(lái)了新的機(jī)遇和挑戰(zhàn)。它不僅能夠解決現(xiàn)有詞表系統(tǒng)的存儲(chǔ)和數(shù)據(jù)更新維護(hù)等問(wèn)題,而且以其良好的特性幫助用戶(hù)更好地理解知識(shí),實(shí)現(xiàn)詞表知識(shí)的高效利用。本文提出的詞表系統(tǒng)向圖數(shù)據(jù)庫(kù)轉(zhuǎn)化方案,可以解決多領(lǐng)域詞表系統(tǒng)的圖數(shù)據(jù)庫(kù)轉(zhuǎn)化,以及分類(lèi)與詞表的映射這兩個(gè)問(wèn)題,為未來(lái)知識(shí)組織系統(tǒng)的有效利用提供了基礎(chǔ)。
本文的研究對(duì)象是工程科技領(lǐng)域詞系統(tǒng),和敘詞表、主題詞表或一般類(lèi)型詞表相比,詞系統(tǒng)從規(guī)模和結(jié)構(gòu)上更加龐大和復(fù)雜。因此,本文提出的方案可以廣泛適用于其他類(lèi)型詞表的圖數(shù)據(jù)庫(kù)轉(zhuǎn)化上。但在實(shí)際的應(yīng)用過(guò)程中,還需在本方案基礎(chǔ)上結(jié)合各個(gè)類(lèi)型詞表自身特征進(jìn)行修改。