亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        知識圖譜數(shù)據(jù)管理系統(tǒng)的設(shè)計與實現(xiàn)

        2017-02-23 12:22:15王麗娟吳剛
        電子技術(shù)與軟件工程 2016年24期
        關(guān)鍵詞:大圖知識圖譜大數(shù)據(jù)

        王麗娟+吳剛

        本文在調(diào)研考察了多種圖數(shù)據(jù)庫的基礎(chǔ)上,綜合考量了分布式、擴(kuò)展性、可用性、查詢語言、容錯性、存儲后端、一致性等因素,并充分結(jié)合知識圖譜數(shù)據(jù)自身所具有的特點,選取了當(dāng)前流行的圖數(shù)據(jù)庫系統(tǒng)Titan作為底層存儲,并對其進(jìn)行進(jìn)一步深入的研究,在此基礎(chǔ)上實現(xiàn)了一個知識圖譜數(shù)據(jù)管理系統(tǒng)。此系統(tǒng)能對知識圖譜數(shù)據(jù)進(jìn)行管理,包括數(shù)據(jù)的導(dǎo)入、數(shù)據(jù)的查詢以及數(shù)據(jù)的修改,能支持billion數(shù)據(jù)量的存儲,以及圖上的基本操作,這些操作響應(yīng)時間都在秒級。

        【關(guān)鍵詞】大數(shù)據(jù) 大圖 知識圖譜 圖數(shù)據(jù)庫

        1 緒論

        知識圖譜是一種知識數(shù)據(jù)的管理方式,通過語義檢索技術(shù)獲取并有機(jī)整合多源數(shù)據(jù),用于提高搜索引擎的質(zhì)量。知識圖譜本質(zhì)上是一種語義網(wǎng)絡(luò)。其結(jié)點代表實體(entity)或者概念(concept),邊代表實體/概念之間的各種語義關(guān)系。知識圖譜在語義搜索、智能問答、知識工程、數(shù)據(jù)挖掘等領(lǐng)域有著廣泛的應(yīng)用??紤]到知識圖譜所具有的大規(guī)模、圖結(jié)構(gòu)等特點,研究知識圖譜數(shù)據(jù)的高效存儲,檢索,以及展示等問題具有重要的實際意義和應(yīng)用價值。

        圖數(shù)據(jù)庫是一種NoSql數(shù)據(jù)庫。采用圖數(shù)據(jù)庫的原因很簡單,因為知識圖譜具有大規(guī)模、圖結(jié)構(gòu)等特點。圖是關(guān)系的子集,它能夠轉(zhuǎn)化成關(guān)系模型,然而通用的關(guān)系模型對將圖結(jié)構(gòu)拆分成頂點、邊、屬性這些表,使得簡單的圖遍歷成為開銷巨大的join操作,同時也丟失了圖結(jié)構(gòu)的整體性。而圖數(shù)據(jù)庫的擴(kuò)展性和靈活性非常好,適合用于復(fù)雜關(guān)系管理和關(guān)系查詢推理。多數(shù)圖數(shù)據(jù)庫提供了適合表達(dá)圖結(jié)構(gòu)和圖查詢的查詢語言,有利于對圖的遍歷查詢,而且效率高。圖數(shù)據(jù)庫在處理這類數(shù)據(jù)上具有巨大的優(yōu)勢。

        2 相關(guān)技術(shù)介紹

        2.1 RDF簡介

        資源描述框架是由W3C提出的一種數(shù)據(jù)模型,已經(jīng)成為語義網(wǎng)領(lǐng)域存儲關(guān)聯(lián)數(shù)據(jù)的推薦標(biāo)準(zhǔn)。RDF提供了一種用于描述信息、使得信息能夠在應(yīng)用程序間不失語義地交換的通用框架。在RDF框架下,數(shù)據(jù)被描述成主體(subject)、謂詞(predicate)和客體(object)。RDF中的數(shù)據(jù)可以是資源描述符、文字或是空節(jié)點。

        2.2 圖數(shù)據(jù)庫

        本文實現(xiàn)的系統(tǒng)基于圖數(shù)據(jù)庫。圖數(shù)據(jù)庫使用圖結(jié)構(gòu)來存儲和查詢數(shù)據(jù),其基本存儲單元是:節(jié)點、邊(也可以稱為關(guān)系)、屬性。圖數(shù)據(jù)庫與關(guān)系型數(shù)據(jù)庫的一個明顯的區(qū)別是使用邊來連接各個節(jié)點,而不是外鍵。

        2.3 Titan圖數(shù)據(jù)庫介紹

        Titan是一個分布式的圖數(shù)據(jù)庫,支持橫向擴(kuò)展,可容納數(shù)千億個頂點和邊。 Titan支持事務(wù),并且可以支撐上千并發(fā)用戶和計算復(fù)雜圖形遍歷。

        2.4 Gremlin介紹

        Titan使用Gremlin作為讀取并修改數(shù)據(jù)的查詢語言。Gremlin面向路徑,能簡單表達(dá)圖的復(fù)雜遍歷和轉(zhuǎn)化操作,它是一種把遍歷操作和路徑描述相結(jié)合的功能性語言。它是一種Java DSL語言,對圖表進(jìn)行查詢、分析和操作時使用了大量的XPath。

        2.5 Cassandra介紹

        Cassandra是一套開源分布式NoSQL數(shù)據(jù)庫系統(tǒng)。它最初由Facebook開發(fā),用于儲存收件箱等簡單格式數(shù)據(jù)。由于Cassandra良好的可擴(kuò)展性,被Digg、Twitter等知名Web 2.0網(wǎng)站所采納,成為了一種流行的分布式結(jié)構(gòu)化數(shù)據(jù)存儲方案。

        2.6 Elasticsearch介紹

        ElasticSearch是一個基于Lucene的搜索服務(wù)器。它提供了一個分布式多用戶能力的全文搜索引擎,基于RESTful web接口,是當(dāng)前流行的企業(yè)級搜索引擎。設(shè)計用于云計算中,能夠達(dá)到實時搜索,穩(wěn)定,可靠,快速,安裝使用方便。

        3 系統(tǒng)詳細(xì)設(shè)計

        本文實現(xiàn)的知識圖譜數(shù)據(jù)的管理系統(tǒng),根據(jù)需求,主要分為4個模塊,分別是:數(shù)據(jù)導(dǎo)入模塊,數(shù)據(jù)查詢模塊,節(jié)點管理模塊,邊管理模塊。

        系統(tǒng)結(jié)構(gòu)圖如圖1所示。

        4 系統(tǒng)實現(xiàn)

        限于篇幅,本文只針對主界面和數(shù)據(jù)查詢模塊中深度為1的查詢做詳細(xì)介紹。

        4.1 主界面的實現(xiàn)

        本次設(shè)計的界面是用JAVA的Awt和Swing組件來做。用選項卡來做不同的功能界面,一共有4個選項卡。對于每個選項卡本文都寫了對應(yīng)的JPanel類。第1個是實現(xiàn)查詢功能的SearchPanel,第2個是實現(xiàn)數(shù)據(jù)導(dǎo)入功能的InsertPanel,第3個是實現(xiàn)節(jié)點修改刪除的VertexAlterPanel,第4個是實現(xiàn)邊修改刪除的EdgeAlterPanel。查詢主界面上的三個按鈕分別對應(yīng)了三個查詢功能?!皊earch 1”是深度為1的節(jié)點查詢,對“vertex search”輸入框里輸入的值進(jìn)行查詢?!皊earch 2”是深度為2的節(jié)點查詢,對“vertex search”輸入框里輸入的值進(jìn)行查詢。第三個按鈕“search”是最短路徑的查詢,源節(jié)點是“source”輸入框里輸入的值,目標(biāo)節(jié)點是“destination”輸入框里輸入的值。界面效果如2所示。

        界面效果如下:

        4.2 數(shù)據(jù)查詢模塊的實現(xiàn)

        本模塊一共有三個部分:深度為1的查詢、深度為2的查詢、最短路徑查詢。

        用戶把查詢條件輸入到對應(yīng)的JTextFedld。從JTextField接收要查詢的節(jié)點,定義兩個JButton,一個的事件處理是深度為1的查詢,另一個的事件處理是深度為2的查詢。最短路徑的查詢,是從兩個JTextField分別接收源節(jié)點和目標(biāo)節(jié)點的值,定義一個JButton,事件處理是查詢最短路徑。

        4.2.1 深度為1的查詢

        對于深度是1節(jié)點查詢,在數(shù)據(jù)庫中搜索該節(jié)點,得到“節(jié)點1--邊--節(jié)點2”形式的結(jié)果集。對于其中的每一個結(jié)果,任務(wù)是把兩個節(jié)點和邊的信息加入到子圖中,從而把子圖構(gòu)建起來以便于返回給用戶,具體做法就是分別在子圖中查詢兩個節(jié)點,如果子圖中沒有則添加對應(yīng)節(jié)點,再選出這兩個節(jié)點,在它們之間查詢本文要添加的邊,若不存在則添加,反之則不添加。最后將子圖返回給用戶。流程圖如圖3所示。

        實現(xiàn)深度為1的查詢的主類是SearchVertex,類中有個成員org.graphstream.graph.Graphgs;這個就是查詢結(jié)果的子圖。因為Titan中存的是有向圖,所以查詢需要兩次,一次是從出邊查,另一次是從入邊查。

        查詢時使用GraphTraversalSource的對象gts,如下面這行利用Gremlin API的代碼

        Iterator rs=gts.V().has("name",v).as("a").

        outE().as("b").inV().as("c").select("a","b","c").by("name");

        查詢name值為字符串v值的節(jié)點的出邊及該邊的另一個節(jié)點,結(jié)果提取三個元素的name屬性值。最后返回滿足查詢條件的迭代化結(jié)果集rs。從入邊查詢的代碼如下面這行利用Gremlin API的代碼所示

        Iterator rs=gts.V().has("name",v).as("a").inE().as("b").outV().as("c").

        select("a","b","c").by("name");

        對于結(jié)果集中的每一條記錄,要把它添加到子圖中。從每一條記錄中提取源節(jié)點值sourcenode、目地節(jié)點destinationnode和邊節(jié)點edgenode。這里需要說明的是邊節(jié)點的意思。邊節(jié)點是構(gòu)建子圖時,將源節(jié)點和目的節(jié)點之間的邊也作為一個節(jié)點,這個節(jié)點兩端連著源節(jié)點和目的節(jié)點。下面用選課的例子來說明。

        圖4的形式是圖數(shù)據(jù)庫中存儲的形式,雖然這種形式已經(jīng)足夠簡單直觀,直接把語義關(guān)系表示了出來。但從用戶的角度來考慮,如果用戶看到的圖仍然采用如圖4.3的形式,會顯得繁瑣,因為同一種類型的邊存在多條,甚至有時會讓用戶難以理解,假設(shè)上面例子中節(jié)點“小明”還有其他的邊,比如“住”在“宿舍”等關(guān)系,若干種關(guān)系同時返回給用戶會顯得十分混亂。若采用把邊轉(zhuǎn)換成邊節(jié)點的方法更清楚,如圖5所示。

        有了節(jié)點和邊,子圖的構(gòu)建模型也有了,具體的插入構(gòu)建操作也需要相應(yīng)的查詢。對于每一條邊,在子圖對象中查詢源節(jié)點和目的節(jié)點,沒有則添加,如下面這段代碼

        if(gs.getNode(sourcenode)==null)

        {

        gs.addNode(sourcenode);

        gs.getNode(sourcenode).addAttribute("ui.label",sourcenode);

        }

        這段代碼實現(xiàn)把源節(jié)點添加到子圖對象gs中,并給這個節(jié)點的“ui.label”賦上值,以便子圖可視化顯示。源節(jié)點、邊節(jié)點同理。

        最后插入源節(jié)點與邊節(jié)點、邊節(jié)點與目的節(jié)點之間的邊。插入的時候,同樣在子圖中查詢是否存在該邊。

        這里,本文定義了源節(jié)點到邊節(jié)點的邊值是sourcenode+” ”+edgenode的字符串值。邊節(jié)點到目的節(jié)點的邊值是edgenode+” ”+destinationnode的字符串值。

        下面這段代碼向子圖插入了源節(jié)點到邊節(jié)點的邊。

        if(gs.getEdge(sourcenode+" "+edgenode)==null)

        {

        gs.addEdge(sourcenode+" "+edgenode, sourcenode, edgenode);

        }

        當(dāng)rs結(jié)果集中所有記錄都處理完后,查詢結(jié)果的子圖就構(gòu)建完了,可以用可視化的方式返回給用戶了。

        5 結(jié)論

        本文介紹了知識圖譜數(shù)據(jù)管理系統(tǒng)的設(shè)計和實現(xiàn)。重點介紹了界面的實現(xiàn)方法,詳細(xì)介紹了數(shù)據(jù)查詢模塊實現(xiàn)思路及底層代碼實現(xiàn)方法。

        本文使用的圖數(shù)據(jù)庫是Titan,而Titan使用的查詢語言是Gremlin。Tinkerpop3的Gremlin和JAVA配合得相當(dāng)好,JAVA類中的查詢API幾乎和gremlin shell中的查詢語句一致,非常有利于開發(fā)人員使用。

        參考文獻(xiàn)

        [1]Zhou XF, Lu JH, Li CP, Du XY. The challenges of big data from the perspective of data management[J]. Communications of the China Computer Federation, 2012, 8(9):16-21.

        [2]谷峪,于戈,鮑玉斌.大規(guī)模圖數(shù)據(jù)的分布式處理[M].北京:清華大學(xué)出版社, 2015.

        [3]Robinson I, Webber J, Eifrem E.圖數(shù)據(jù)庫[M].北京:人民郵電出版社,2015.

        [4]Bollacker K,Cook R,Tufts P. Freebase: A Shared Database of Structured General Human Knowledge[C]// AAAI Conference on Artificial Intelligence.2007:1962-1963.

        [5]Angles R, Gutierrez C. Survey of graph Database models[J].Acm Computing Surveys,2009,40(01):178-187.

        [6]Han J, Haihong E, Le G, et al. Survey on NoSQLDatabase[C]// Pervasive Computing and Applications (ICPCA), 2011 6th International Conference on. IEEE,2011:363-366.

        [7]Angles R. A Comparison of Current Graph Database Models[C]. In Proceedings of the 2012 IEEE International Conference on Data Engineering Workshops (ICDEW 2012), 2012:171-177.

        [8]McColl R,Ediger D,Poovey J,Campbell D,et al. A Performance Evaluation of Open Source Graph Databases[C]. In Proceedings of the 2014 Workshop on Parallel Programming for Analytics Applications,2014:11-17.

        [9]項靈輝,顧進(jìn)廣,吳鋼.基于圖數(shù)據(jù)庫的RDF數(shù)據(jù)分布式存儲[J].計算機(jī)應(yīng)用與軟件,2014,31(11):35-39.

        [10]g Broekstra J, Kampman A, Jarmelen F. Sesame: A generic architecture for storing and querying RDF and RDF schema[C].In Proceedings of the first International Semantic Web Conference(ISWC 2002),2002:54-68.

        [11]Vukotic A,Watt N, Partner J,et al. Neo4j in Action[M].New York: Manning Publications,2014.

        [12]Apache Cassandra[EB/OL].http://cassandra.apache.org,2016.5.31.

        [13]Elasticsearch[EB/OL].http://www.elastic.co/products/elasticsearch,2016.5.31.

        [14]ThinkaureliusTitan[EB/OL].http://titan.thinkaurelius.com/,2016.5.31.

        [15]TitanDocumentation[EB/OL].http://s3.thinkaurelius.com/docs/titan/1.0.0/,2016.5.31.

        作者簡介

        王麗娟(1981-),女,江蘇省贛榆市人。東北大學(xué)碩士?,F(xiàn)為徐州工業(yè)職業(yè)技術(shù)學(xué)院講師。研究方向為數(shù)據(jù)庫技術(shù)。

        作者單位

        1.徐州工業(yè)職業(yè)技術(shù)學(xué)院 江蘇省徐州市 221114

        2.東北大學(xué) 遼寧省沈陽市 110819

        猜你喜歡
        大圖知識圖譜大數(shù)據(jù)
        大圖
        拼圖
        動腦筋,仔細(xì)看
        找拼圖
        近十五年我國小學(xué)英語教學(xué)研究的熱點、問題及對策
        基于知識圖譜的產(chǎn)業(yè)集群創(chuàng)新績效可視化分析
        智富時代(2016年12期)2016-12-01 16:28:41
        基于知識圖譜的智慧教育研究熱點與趨勢分析
        從《ET&S》與《電化教育研究》對比分析中管窺教育技術(shù)發(fā)展
        基于大數(shù)據(jù)背景下的智慧城市建設(shè)研究
        科技視界(2016年20期)2016-09-29 10:53:22
        一区二区人妻乳中文字幕| 日韩欧美中文字幕不卡| 国产91在线|亚洲| 亚洲长腿丝袜中文字幕| 国产成人av一区二区三区在线观看| 射死你天天日| 亚洲综合伦理| 国产亚洲3p一区二区| 帅小伙自慰videogay男男| 台湾佬综合网| 亚洲无码激情视频在线观看| 亚洲乱码中文字幕一线区| 欧美猛少妇色xxxxx猛交| 1000部拍拍拍18勿入免费视频下载 | 777国产偷窥盗摄精品品在线| 亚洲熟妇20| 国产一区二区三区色区| 91九色成人蝌蚪首页| 99精品国产一区二区三区a片| 岛国大片在线免费观看| 五月综合丁香婷婷久久| 久久久久人妻一区二区三区| 色妞色综合久久夜夜| 中文字幕日韩人妻高清在线| 成人免费av色资源日日| 97精品国产97久久久久久免费| 99久久国产视频| 国产av熟女一区二区三区蜜臀| 久久久久亚洲精品无码系列| av无码免费永久在线观看| 成人国产精品免费网站| 亚洲不卡在线免费视频| 国产男女无遮挡猛进猛出| 国产剧情福利AV一区二区| 中文无字幕一本码专区| 丰满少妇作爱视频免费观看 | 刺激一区仑乱| 天堂а√在线最新版中文| 中文字幕在线人妻视频| 激情五月婷婷一区二区| 精品国内自产拍在线观看|