• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    KGDB:統(tǒng)一模型和語言的知識圖譜數(shù)據(jù)庫管理系統(tǒng)?

    2021-05-23 13:17:12劉寶珠柳鵬凱李思卓張小旺楊雅君
    軟件學報 2021年3期
    關鍵詞:三元組頂點圖譜

    劉寶珠 ,王 鑫,柳鵬凱,李思卓,張小旺,楊雅君

    1(天津大學 智能與計算學部,天津 300354)

    2(天津市認知計算與應用重點實驗室,天津 300354)

    知識圖譜是人工智能的重要基石,是新一代人工智能由感知走向認知的重要基礎設施[1].RDF 圖和屬性圖是知識圖譜的兩個主流數(shù)據(jù)模型.一方面,資源描述框架(resource description framework,簡稱RDF)成為國際萬維網聯(lián)盟(W3C)表示知識圖譜的推薦標準,被以gStore[2]為代表的三元組數(shù)據(jù)庫廣泛采用;另一方面,屬性圖被以Neo4j[3],Dgraph[4]和HugeGraph[5]等為代表的圖數(shù)據(jù)庫廣泛采用為底層數(shù)據(jù)模型.

    關系數(shù)據(jù)庫數(shù)十年來的發(fā)展,證實了統(tǒng)一的數(shù)據(jù)模型和查詢語言是數(shù)據(jù)管理技術發(fā)展的關鍵.目前,知識圖譜數(shù)據(jù)庫管理的問題是數(shù)據(jù)模型、存儲方案和查詢語言不統(tǒng)一.為此,我們研發(fā)了統(tǒng)一模型和語言的知識圖譜數(shù)據(jù)庫管理系統(tǒng)——KGDB(knowledge graph database)

    KGDB 使用統(tǒng)一的存儲方案,可以支持存儲RDF 圖和屬性圖兩種不同的數(shù)據(jù)模型;根據(jù)實體的類型進行分塊存儲,同時運用基于特征集的聚類方法處理無類型實體,使之可以歸入某一語義相近的類型;分別提供RDF 圖和屬性圖上的查詢接口,可以使用SPARQL 和Cypher 查詢語言對同一知識圖譜進行操作,即允許兩種查詢語言的互操作.KGDB 遵循“統(tǒng)一存儲”-“兼容語法”-“統(tǒng)一語義”的技術路線:在底層存儲,使用相同的存儲方案處理不同的知識圖譜數(shù)據(jù)模型;在查詢表達上,兼容兩種面向不同知識圖譜數(shù)據(jù)模型的語法完全不同的查詢語言;而在查詢處理上,將兩種語法不同的查詢語言對齊到統(tǒng)一的語義,進而使用相同的查詢處理方法.

    KGDB 的總體架構如圖1 所示,采用自底向上的系統(tǒng)構建方法.

    (1)在用戶輸入層,用戶可輸入RDF 圖數(shù)據(jù)或者屬性圖數(shù)據(jù);

    (2)在系統(tǒng)處理階段,分為兩部分:①經過存儲關系轉化,依據(jù)存儲方案將數(shù)據(jù)轉化為以類型聚類的關系表,將原始的知識圖譜數(shù)據(jù)進行基于關系的存儲;②查詢處理部分,可以允許用戶使用兩種查詢語言對同一知識圖譜進行操作;

    (3)在用戶界面層,用戶可以查看規(guī)范格式的圖模式查詢的結果.

    Fig.1 Architecture of KGDB圖1 KGDB 總體架構圖

    現(xiàn)有的知識圖譜數(shù)據(jù)庫管理系統(tǒng)因其面向的數(shù)據(jù)模型的不同,提出了不同的存儲方法.對于RDF 圖的存儲,可以分為三大類:(1)直接利用RDF 三元組的特性進行存儲,例如三元組表(triple table)、水平表(horizontal table)等;(2)根據(jù) RDF 圖數(shù)據(jù)展現(xiàn)的數(shù)據(jù)類型特征進行存儲,例如屬性表(property table)、垂直劃分(vertical partitioning)[6]、六重索引(sextuple indexing)和DB2RDF[7]等;(3)依據(jù)RDF 圖數(shù)據(jù)的語義信息進行歸類存儲,例如特征集方法(characteristic sets)[8]、擴展的特征集方法(extended characteristic sets)[9]和R-Type[10]等.對于屬性圖的存儲,一般采用生存儲方案,例如Neo4j,JanusGraph[11],TigerGraph[12]等.

    知識圖譜三元組數(shù)據(jù)與關系數(shù)據(jù)的最大不同是其模式的靈活性,這給傳統(tǒng)的存儲和查詢處理提出了新問題.為此,提出了一種基于特征集聚類的處理方法,根據(jù)實體的謂語組進行類型聚類,并將無類型實體數(shù)據(jù)依據(jù)其關系特征,歸入某類型中,從而解決知識圖譜的統(tǒng)一存儲問題.

    在查詢語言方面,現(xiàn)有的知識圖譜數(shù)據(jù)庫管理系統(tǒng)因面向的數(shù)據(jù)模型不同,使用不同的查詢語言進行查詢處理:SPARQL 是RDF 圖上的查詢語言,Cypher 是屬性圖上的主要查詢語言.兩種查詢語言具有不同的語法,阻礙了在統(tǒng)一存儲方案上的查詢互操作.為此,進行SPARQL 和Cypher 語言的語義對齊,使之可以操作同一個知識圖譜,而無需區(qū)別知識圖譜的數(shù)據(jù)模型.

    真實數(shù)據(jù)集和合成數(shù)據(jù)集上的大量實驗表明:KGDB 能夠高效地進行知識圖譜數(shù)據(jù)的存儲管理和查詢處理,優(yōu)于現(xiàn)有RDF 數(shù)據(jù)庫gStore 和屬性圖數(shù)據(jù)庫Neo4j.

    本文的主要貢獻如下:

    (1)以關系模型為基礎,提出統(tǒng)一的知識圖譜存儲方案,根據(jù)數(shù)據(jù)的類型進行聚類,支持兩種知識圖譜主流數(shù)據(jù)模型(RDF 圖和屬性圖)的高效存儲;使用字典編碼方法減少數(shù)據(jù)的存儲空間,滿足知識圖譜數(shù)據(jù)的存儲和查詢負載需求;

    (2)使用基于特征集的聚類方法,將無類型實體歸入謂語組相似的數(shù)據(jù)類型中,解決無類型實體數(shù)據(jù)的存儲問題,使統(tǒng)一存儲模型能夠應對靈活多變的半結構化數(shù)據(jù);

    (3)兼容RDF 圖數(shù)據(jù)模型的查詢語言SPARQL 和屬性圖數(shù)據(jù)模型的主流查詢語言Cypher 的查詢語法,進行兩種查詢語言的語義對齊,實現(xiàn)兩種查詢語言的互操作,可使用兩種語言操作同一個知識圖譜;

    (4)在合成數(shù)據(jù)集和真實數(shù)據(jù)集上進行大量實驗,分別與現(xiàn)有的RDF 圖數(shù)據(jù)管理系統(tǒng)和屬性圖數(shù)據(jù)管理系統(tǒng)進行對比實驗,實驗結果驗證了KGDB 統(tǒng)一的存儲方案和統(tǒng)一語義的查詢處理的有效及高效性.

    本文第1 節(jié)介紹相關工作.第2 節(jié)介紹預備知識.第3 節(jié)描述KGDB 使用的統(tǒng)一RDF 圖和屬性圖的存儲模型.第4 節(jié)闡述查詢語言互操作的方法.第5 節(jié)在真實數(shù)據(jù)集和合成數(shù)據(jù)集上進行實驗.第6 節(jié)對全文總結.

    1 相關工作

    隨著知識圖譜的發(fā)展,各種知識圖譜存儲方案和查詢處理方法不斷涌現(xiàn),本節(jié)將分別介紹兩種知識圖譜數(shù)據(jù)模型的現(xiàn)有存儲方案及查詢方法.知識圖譜數(shù)據(jù)規(guī)模的不斷增長,對存儲和查詢提出更高要求,分布式知識圖譜管理系統(tǒng)成為研究熱點之一[13,14].

    1.1 知識圖譜存儲方案

    1.1.1 RDF 圖數(shù)據(jù)存儲

    (1)直接利用RDF 三元組特性

    三元組表(triple table)將數(shù)據(jù)對應存儲到一個3 列結構的表中,采用三元組表存儲方案的代表是3store[15].水平表(horizontal table)在每一行存儲一個主語的所有謂語及對應的賓語,DLDB[16]系統(tǒng)采用了水平表存儲方案.屬性表(property table)將同類的主語在一個表中存儲,Jena[17]采用了屬性表存儲方案.垂直劃分(vertical partitioning)[6]對每一個謂語建立一個兩列的表,存儲該謂語連接的主語和相應的賓語.采用垂直劃分存儲方案的系統(tǒng)有SW-Store[18],TripleBit[19].六重索引(sextuple indexing)應用“空間換時間”策略,存儲三元組的全部6 種排列,并在首列上建立索引.使用六重索引的系統(tǒng)有RDF-3X[20]和Hexastore[21].DB2RDF[7]存儲方案不將表的列與某一謂語綁定,而是通過哈希的方式進行動態(tài)映射,并確保將相同謂語映射到同一列上,并通過額外的表處理多值謂語的問題.IBM DB2 數(shù)據(jù)庫系統(tǒng)采用了DB2RDF 存儲方案.

    直接利用RDF 三元組特性的存儲方案最直觀簡單,但是存在著諸如稀疏性、空值等空間利用的問題.同一主語對應的謂語可能會有很多,不同主語之間關聯(lián)的謂語差異遠高于預期,即使同一類型的主語其謂語差異也不容忽視,這類存儲方案建立的關系表會有很多位置存為空值,稀疏的關系表嚴重降低存儲性能.

    (2)依據(jù)RDF 數(shù)據(jù)語義信息

    特征集(characteristic sets,簡稱CS)[8]存儲方法將RDF 數(shù)據(jù)按照星型結構進行劃分,具有相同謂語組的實體將會作為同一類型對待,大大減少了需要建立的表的數(shù)量.然而,特征集方法等同地對待所有謂語,很有可能導致大多數(shù)實體落入同一集合,不能很好地達到劃分目的.RDF-3X 系統(tǒng)實現(xiàn)了特征集方法[20].擴展的特征集(extended characteristic sets,簡稱ECS)[9]方法實施多層次的星型結構劃分,形成二級索引,加速查詢.但是,擴展的特征集方法也不能避免大多數(shù)實體落入同一集合的問題.R-Type[10]方法引入了本體規(guī)則,將謂語分為領域可推定的和非領域可推定的,并將包含領域可推定謂語的星型團結構中指定類型的三元組省略,不進行物理化存儲,節(jié)省存儲空間.在查詢過程中,包含領域可推定的星型結構可以直接映射到正確的團結構上,從而加速查詢.但R-Type 沒有對無類型實體提出劃分方法.SemStorm[22]系統(tǒng)采用了R-Type 方法.

    依據(jù)RDF 數(shù)據(jù)語義信息的存儲方案雖然更加精確,能夠利用語義信息優(yōu)化存儲,但是目前沒有見到基于關系的存儲方案,且大多數(shù)方案僅有原型系統(tǒng),成熟度不足.關系數(shù)據(jù)庫發(fā)展至今,在事務管理、可擴展性等方面的研究基礎相對穩(wěn)固,基于關系的存儲方案可以獲得更多的支持.

    1.1.2 屬性圖數(shù)據(jù)存儲

    (1)基于關系的存儲方案

    SQLGraph[23]使用一種在關系數(shù)據(jù)庫中利用關系和JSON 鍵值存儲屬性圖的方案,將每個邊標簽散列到兩列,將邊的鄰接列表存儲在關系表中,其中一列存儲邊標簽,而另一列存儲值.AgensGraph[24]是一種底層基于關系模型的多模型圖數(shù)據(jù)庫,將屬性圖中的點和邊根據(jù)標簽分開存儲到關系表中,并將點、邊的屬性值信息以JSON 格式進行記錄.

    因屬性圖的半結構化數(shù)據(jù)特征,上述基于關系的屬性圖存儲方案的靈活度不能完全滿足屬性圖的存儲要求,關系表一旦建立,修改其結構的代價巨大.而對于如今知識圖譜高達數(shù)十億點邊結構的數(shù)據(jù)規(guī)模,需要更加靈活的方案來提高其存儲效率.

    (2)基于文檔的存儲方案

    MongoDB[25]是一種基于文檔存儲的數(shù)據(jù)庫系統(tǒng),旨在為Web 應用提供可擴展的高性能數(shù)據(jù)存儲解決方案,將數(shù)據(jù)存儲為一個文檔.數(shù)據(jù)結構由鍵值對組成,其文檔類似于JSON 對象,字段值可以進行嵌套.Neo4j[3]將所有數(shù)據(jù)存儲在節(jié)點和關系中,不需要任何額外的關系數(shù)據(jù)庫或NoSQL 數(shù)據(jù)庫來存儲數(shù)據(jù),以圖的原生形式存儲屬性圖數(shù)據(jù)并應對各種查詢需求.

    重慶市民政機關在制度建設、組織保障、人才培養(yǎng)和資金支持等方面大力推動婚姻家庭社會工作標準化的實施和發(fā)展。為了更好地解決居民需求,提高服務質量和水平,形成標準服務流程和體系,重慶市婚姻收養(yǎng)登記管理中心(以下簡稱“重慶市婚管中心”)對居民婚姻家庭進行了多次需求摸底調查,發(fā)現(xiàn)居民對婚姻家庭方面的需求主要集中在子女教育、婚姻家庭法律法規(guī)知識、結婚及生育法定程序、優(yōu)生優(yōu)育、夫妻相處技巧和家庭理財知識等方面(具體情況見圖4)。

    基于文檔的屬性圖存儲方案常被應用在分布式環(huán)境下,而相對于單機環(huán)境,分布式對數(shù)據(jù)的存儲提出了更高的要求,而使用文件進行大規(guī)模數(shù)據(jù)的存儲效率不足以滿足數(shù)據(jù)規(guī)模日益增長的屬性圖的存儲和查詢要求.目前,知識圖譜的存儲方案基本都面向某一種類型的知識圖譜并且成熟度不足.為此,有必要面向知識圖譜的兩種主流數(shù)據(jù)模型開發(fā)統(tǒng)一的、基于關系的高效存儲方案.

    1.2 知識圖譜查詢處理

    1.2.1 RDF 圖數(shù)據(jù)查詢

    Blazegraph[26]是一個基于RDF 三元組庫的圖數(shù)據(jù)庫管理系統(tǒng),其內部實現(xiàn)技術是面向RDF 三元組和SPARQL 查詢語言的.Jena[17]是語義Web 領域主要的開源框架和RDF 三元組庫,較好地遵循了W3C 標準,支持SPARQL 查詢處理,具有一套基于規(guī)則的推理引擎,用以執(zhí)行RDFS 和OWL 本體推理任務.gStore[2]使用RDF 圖對應的簽章圖并建立VS 樹索引,支持SPARQL 查詢處理.Virtuoso[27]是支持多種數(shù)據(jù)模型的混合數(shù)據(jù)庫管理系統(tǒng),可以較為完善地支持W3C 的Linked Data 系列協(xié)議.RDF4J[28]前身是Aduna 公司開發(fā)的Sesame 框架,支持SPARQL 1.1 的查詢和更新語言,能夠進行RDF 數(shù)據(jù)的解析、存儲、推理和查詢.RDF-3X[29]為RDF 數(shù)據(jù)專門設計了壓縮物理存儲方案、查詢處理和查詢優(yōu)化技術.AllegroGraph[30]系統(tǒng)對語義推理功能具有較為完善的支持.GraphDB[31]實現(xiàn)了RDF4J 框架的SAIL 層,使用內置的基于規(guī)則的“前向鏈(forward-chaining)”推理機,對RDF推理功能擁有良好的支持.

    1.2.2 屬性圖數(shù)據(jù)查詢

    Neo4j[3]是目前流行程度最高的圖數(shù)據(jù)庫產品,基于屬性圖模型,支持Cypher 查詢語言.AgensGraph[24]基于關系模型存儲屬性圖,在PostgreSQL 內核之上構建Cypher 語言的處理層.JanusGraph[11]是開源分布式圖數(shù)據(jù)庫,存儲后端與查詢引擎分離,具備基于MapReduce 的圖分析引擎,可將Gremlin[32]導航查詢轉化為MapReduce 任務.OrientDB[33]主要面向圖和文檔數(shù)據(jù)存儲管理的需求設計,支持擴展的SQL 和Gremlin 用于圖上的導航式查詢,支持類似Cypher 語言查詢模式的MATCH 語句.Cypher for Apache Spark[34]提供基于Spark 框架的Cypher引擎.

    目前,兩種知識圖譜數(shù)據(jù)模型擁有各自的查詢語言、語法和語義,雖然在具體的系統(tǒng)上分別進行了優(yōu)化設計,但不利于知識圖譜查詢的多樣性,故亟需研發(fā)一種既支持SPARQL 又支持Cypher、具有語義互操作能力的系統(tǒng).

    2 預備知識

    本節(jié)將詳細介紹相關背景知識,包括RDF 圖和屬性圖的定義.表1 給出了本文使用的主要符號及其含義.

    Table 1 List of notations表1 符號列表

    定義1(RDF 圖).設U是統(tǒng)一資源標識符的有限集合,L是字面量的有限集合,B是空結點的有限集合.元組t=(s,p,o)∈U×U×(U∪L∪B)稱為RDF 三元組(在本文中不考慮實體為空結點的情況),三元組t=(s,p,o)表示資源s和資源o有關系p,或者資源s的屬性p的值為o.其中,s,p和o分別表示主語、謂語和賓語.RDF 圖G是三元組t的有限集合.用V,E,Σ分別表示RDF 圖G的頂點、邊和標簽的集合.正式定義為:V={s|(s,p,o)∈G}∪{o|(s,p,o)∈G},E?V×V且Σ={p|(s,p,o)∈G}.函數(shù)lab:E→Σ返回圖G中邊的標簽.

    例1:圖2 所示的RDF 圖示例描述了一個音樂知識圖譜,包括作曲家(Composer)Beethoven、鋼琴演奏家(Pianist)Lang Lang 和音樂(Music)Fate Symphony 等資源,這些資源上的若干屬性以及資源之間的作曲(composes)和演奏(plays)聯(lián)系.在RDF 圖示例中.使用橢圓表示資源,矩形表示字面量,連接頂點之間的有向線段表示頂點之間的關系,起點是主語,邊標簽是謂語,終點是賓語.RDF 內置謂語rdf:type 指定資源所屬類型,如三元組(Beethoven,rdf:type,Composer)表示Beethoven 的類型是作曲家.

    定義2(屬性圖).屬性圖G=(V,E,η,src,tgt,λ,γ),其中:V表示頂點有限集合;E表示邊的有限集合且V∩E=?;函數(shù)η:E→(V×V)表示邊到頂點對的映射,如η(e)=(v1,v2)表示頂點v1與頂點v2之間存在一條有向邊e;函數(shù)src:E→V表示邊到起始頂點的映射,例如src(e)=v表示邊e的起始頂點為v;函數(shù)tgt:E→V表示邊到終結頂點的映射,例如tgt(e)=v表示邊e的終結頂點為v;函數(shù)λ:(V∪E)→L為頂點或邊與標簽的映射(其中,L表示標簽集合),如v∈V(或e∈E)且λ(v)=l(或λ(e)=l),則l為頂點v(或邊e)的標簽;函數(shù)γ:(V∪E)×K→Val(其中,K為屬性集合,Val是值的集合)表示頂點或邊的關聯(lián)屬性,如v∈V(或e∈E),property∈K且γ(v,property)=val(或γ(e,property)=val)表示頂點v(或邊e)上屬性property的值為val.

    Fig.2 An RDF graph example圖2 RDF 圖示例

    例2:圖3 給出了圖2 中音樂知識圖譜的屬性圖示例.屬性圖中每個頂點和邊都具有唯一id(如頂點v1、邊e1),頂點和邊均可具有標簽(如頂點v1上的標簽Composer),頂點和邊上均可具有屬性,每個屬性由屬性名和屬性值的鍵值對組成(如頂點v1上的屬性name=“Beethoven”).

    Fig.3 A property graph example圖3 屬性圖示例

    3 知識圖譜存儲方案

    本節(jié)主要介紹統(tǒng)一的知識圖譜存儲方案,此方案基于關系模型實現(xiàn)對RDF 圖和屬性圖的兼容表示.之后,根據(jù)所提出的存儲方案,采用基于特征集的聚類算法處理無類型數(shù)據(jù),以更好地支持知識圖譜數(shù)據(jù)存儲..

    3.1 知識圖譜存儲模型

    統(tǒng)一存儲方案按照實體的類型將其存儲到對應頂點類型表vn中(n∈[1,i]),按照關系的類型將其存儲到對應邊類型表em(m∈[1,j])中,其中,i,j分別表示頂點和邊類型的數(shù)量.不同的關系表以實體或關系的類型來命名.用于存儲實體的關系表包含2 列,分別存儲實體的唯一標識id(主鍵)和實體所擁有的屬性property(由屬性名和屬性值的鍵值對所構成).用于存儲實體間關系的關系表包含4 列,分別存儲邊的唯一標識id(主鍵)、邊的起始頂點標識start、終結頂點標識end 以及邊所擁有的屬性property(由屬性名和屬性值的鍵值對所構成).頂點類型表和邊類型表根據(jù)知識圖譜數(shù)據(jù)中實體和關系的類型進行進一步地劃分,同類型的頂點或者邊存儲在同一個關系表中,這樣避免了因單個關系表數(shù)據(jù)量過大而導致的數(shù)據(jù)訪問性能較低的問題.

    3.1.1 RDF 圖到統(tǒng)一存儲模型的映射

    RDF 圖數(shù)據(jù)中有3 種不同類型的三元組,下面給出三元組分類的定義.

    定義3(三元組分類).令C={mem,prop,edge}表示三元組的類別,分別指類型成員三元組、屬性描述三元組和動作三元組.函數(shù)?:T→C是三元組到三元組類別的映射:

    根據(jù)定義3 以及例1 和例2,將圖2 和圖3 中的事實以三元組的形式表示,并應用三元組分類方法,可知?((Beethoven,rdf:type,Composer))=mem,?((Beethoven,birthDate,1770-12-16))=prop且?((Lang Lang,plays,Fate Symphony))=edge.

    對于RDF 三元組t=(s,p,o),需要根據(jù)RDF 圖G中頂點標簽和邊標簽創(chuàng)建相應的頂點類型表和邊類型表.根據(jù)三元組的不同形式,使用下面的轉換規(guī)則將其分別進行映射,將不同的實體和關系存儲到相應的頂點類型表和邊類型表中.

    規(guī)則1.對于任意三元組t=(s,p,o),若?(t)=mem,則將id 為s的元組插入到表名為o的頂點類型表中.

    規(guī)則2.對于任意三元組t=(s,p,o),若?(t)=prop,則將p,o以鍵值對的形式插入到頂點類型表中實體s對應的property 列中.

    規(guī)則3.對于任意三元組t=(s,p,o),若?(t)=edge,則在表名為p的邊類型表中插入一條start 為s、end 為o的記錄.

    3.1.2 屬性圖到統(tǒng)一存儲模型的映射

    屬性圖因其對頂點和邊上的屬性提供內置的支持,在將其映射到統(tǒng)一存儲模型時相對容易,應用下列規(guī)則將屬性圖數(shù)據(jù)映射到統(tǒng)一存儲模型上.

    規(guī)則4.對于屬性圖數(shù)據(jù)中的實體,根據(jù)其頂點標簽λ(v),為實體v賦唯一的數(shù)值id 并插入到頂點類型表λ(v)的id 列,同時將其屬性property和屬性值γ(v,property)的鍵值對插入到property 列中.

    規(guī)則5.對于屬性圖數(shù)據(jù)中的關系,根據(jù)其邊標簽λ(e),為關系e賦唯一的數(shù)值id 并插入到邊類型表λ(e)的id 列中,同時將其屬性property和屬性值γ(e,property)的鍵值對插入到property 列中,將頂點v1的id 插入到start列中,將頂點v2的id 插入到end 列中(其中,η(e)=(v1,v2)∧src(e)=v1∧tgt(e)=v2).

    在屬性圖中,頂點關系表中的id 值僅起到標識作用,而不具有實際意義;而RDF 圖中id 表示對應實體的URI,具有實際意義.為了進行統(tǒng)一的表示,將實體v的URI 值vuri作為一個新的屬性,添加到結點關系表中的property 列中,即添加γ(v,uri)=vuri.

    例3:根據(jù)上述的存儲方案,將圖2、圖3 介紹的音樂知識圖譜示例進行相應轉換,得到圖4 基于關系的統(tǒng)一知識圖譜存儲方案.不同的實體按照其類型(作曲家、鋼琴家、音樂)存儲到頂點類型表中,不同的關系按照類型(作曲、演奏)存儲到關系類型表中.圖中箭頭表示外鍵關系.

    Fig.4 Unified storage scheme for knowledge graph圖4 知識圖譜統(tǒng)一存儲方案

    知識圖譜數(shù)據(jù)根據(jù)所提出的統(tǒng)一存儲方案,依據(jù)實體和關系的類型進行分別存儲.在示例的知識圖譜中未給出邊屬性,因此邊表中的property 列為空值.屬性圖和RDF 圖對實體或者關系的類型信息均提供了內置的支持,屬性圖由標簽指定,RDF 圖由內置的rdf:type 指定.這種根據(jù)類型對頂點和邊進行劃分并進行分別存儲管理的方式是相對合理的,能夠在一定程度上解決現(xiàn)有知識圖譜存儲方案中存在的數(shù)據(jù)冗余與數(shù)據(jù)稀疏問題.

    在建立關系表之后,各種操作都將以關系表名為基本對象,給出操作關系表的函數(shù):存儲模型建立的關系表集合是R={r1,r2,…,rn},對應的關系表的表名集合是X={x1,x2,…,xm};函數(shù)name:R→X返回某個關系表的表名;函數(shù)rel:T→R返回某個實體t所在的關系表,其中,T為實體集合且t∈T.

    在知識圖譜中,兩節(jié)點之間有可能存在多種謂語關系,即多重屬性.對于多重屬性的存儲問題,KGDB 使用第3.1 節(jié)中介紹的方法,針對單個主語實體,存儲多個屬性鍵值對,其中,屬性鍵對應不同的謂語關系,屬性值對應同一個實體.大多數(shù)現(xiàn)有的知識圖譜數(shù)據(jù)存儲方案使用字典編碼的方法,將URI 或者字面量映射到整數(shù)標識符,即id.映射表有效地實現(xiàn)了字符串到id 之間的轉換,并將數(shù)據(jù)庫的空間開銷降至最低.KGDB 采用了與大多數(shù)現(xiàn)有知識圖譜存儲方案類似的字典編碼方法,壓縮存儲方案所需的空間資源.

    3.2 無類型實體存儲優(yōu)化方案

    上一節(jié)介紹的統(tǒng)一存儲模型中,利用頂點和邊的類型對知識圖譜數(shù)據(jù)進行劃分,并存儲到相應的頂點表和邊表中.但此方案并沒有考慮無類型的實體的存儲.對于無類型的實體,基本的存儲方案將所有無類型的實體等同對待,所有無類型的實體存儲在一個關系表中.這種統(tǒng)一存儲的方法,一方面在處理無類型實體數(shù)量較多的數(shù)據(jù)集時,將導致單個關系表過大,降低查詢的效率;另一方面,無類型的實體之間并沒有關聯(lián),無語義信息,這與將相同或靠近語義的實體存儲在相近空間的初衷相悖.

    對于未指定類型的實體,基于特征集的聚類算法,將其劃分到一個最相近的給定類別中.層次聚類算法可以根據(jù)某種距離函數(shù)給出結點之間的相似性,并按照相似度逐步將結點進行合并,當達到某一條件時,合并終止.在本節(jié)中,將給出實體的特征集、特征集的距離等定義,用于測定實體之間的相似性,從而解決無法對無類型實體進行存儲的問題.

    3.2.1 實體特征集

    RDF 圖中使用多個三元組來描述一個實體所擁有的特征.實體的特征集[8]可定義為RDF 圖中表示該實體的頂點所發(fā)出的邊的名稱的集合.下面給出實體特征集的形式化定義.

    定義4(實體特征集).對于每個出現(xiàn)在知識圖譜數(shù)據(jù)集D中的實體s,定義其特征集I如下:

    例4:在某個RDF 數(shù)據(jù)集中,描述《老人與?!愤@本書的實體s1共使用了3 個三元組,分別為(s1,title,“The Old Man and the Sea”),(s1,author,Hemingway)以及(s1,year,“1951”),則s1的特征集是IC(s1)={title,author,year}.

    3.2.2 實體簇及其距離定義

    實體簇C中包含多個實體,為了更好地表示一個簇中所包含實體的屬性的特征,對任意一個包含若干個實體的簇C,定義hist(C)來表示簇中實體的特征集的統(tǒng)計信息,記錄簇中包含的全部實體所擁有的屬性的個數(shù)為m,則hist(C)可以定義為每個屬性與它出現(xiàn)次數(shù)的鍵值對的集合:

    其中,propertyi表示第i個屬性,counti表示第i個屬性在簇C中出現(xiàn)的次數(shù).進而可以通過這一統(tǒng)計信息定義兩個包含若干實體的簇的距離:對于兩個簇Cj和Ck,它們之間的距離可以表示為其實體統(tǒng)計信息之間的距離,即:

    其中,

    ?n是兩個簇中所含不同屬性的總個數(shù);

    ?bi表示第i個屬性是否同時出現(xiàn)在兩個簇中:若是,則為0;否則為1;

    ?count(Cj,pi)和count(Ck,pi)分別表示在簇Cj和Ck中,第i個屬性pi對應的個數(shù).

    根據(jù)公式(4),兩個簇之間的距離等于不同時出現(xiàn)在兩個簇中的屬性所對應的出現(xiàn)次數(shù)之和.屬性的出現(xiàn)次數(shù)可以說明該屬性對簇的重要程度,如對于書籍類型的實體來說,其所在的簇中作者和標題屬性所對應的數(shù)值較高.以屬性次數(shù)的加和作為簇間距離,可以衡量兩個簇之間的相似程度.

    3.2.3 基于特征集的實體聚類算法

    基于實體特征集、包含多個實體的簇的特征集統(tǒng)計信息以及簇間距離的定義,可以對基本的統(tǒng)一存儲方案進行優(yōu)化.基于層次聚類算法,提出一種基于實體類型的實體聚類算法,將未給定類型的實體通過聚類的方法劃分到一個已知的類型中.

    對于實體s∈S,其中,S為實體集合,函數(shù)haveType:S→{TRUE,FALSE},返回實體的有無類型情況:若s為有類型實體,則返回真;否則返回假.函數(shù)getType:S→TYPE返回某個實體的類型信息,其中,TYPE為實體類型集合.

    為了將兩個實體簇進行合并,需要計算兩個實體簇之間的距離,并找到距離最相近的兩個實體簇進行合并.下面給出尋找距離最近實體簇下標的函數(shù):對于實體簇集合C={C1,C2,…,Cn},函數(shù)findMin(C)兩兩計算實體簇間距離,并給出距離最近的兩個不同實體簇的下標.

    在聚類的過程中,將每個實體作為一個單獨的簇,并根據(jù)實體的特征集的相似程度自底向上進行簇的合并操作.合并過程中,需要保證不對兩個包含不同類型實體的簇進行合并.

    算法1 給出了基于特征集的實體聚類算法,根據(jù)實體的特征集進行層次聚類,可以將實體按照所擁有的特征劃分到不同的簇中,每個簇內的實體屬性相似,即每個簇內的實體趨近于擁有相同的類型.算法首先將實體類型相同的實體合并到一個簇中,將每個未指定類型的實體各自作為一個單獨的簇(第2 行~第8 行),根據(jù)簇間的距離DCScluster進行自底向上地合并,在已知的實體簇集合C中找到簇間距離最小的兩個簇Ci和Cj,即令DCScluster(Ci,Cj)的值最小,且要求這兩個簇不都為已經給定類型的實體簇(第10 行~第12 行),合并兩個簇,并將合并后的簇的類型指定為其中已知類型的簇的類型Ci,同時更新合并后的簇的統(tǒng)計信息hist(Ci)(第14 行、第15行).重復合并簇的操作,直到沒有符合條件的兩個簇為止.經過實體聚類,包含未指定類型實體的簇將被合并到包含指定類型的實體的簇中,且每個簇中的實體的類型相同.

    算法1.三元組無類型實體聚類.

    輸入:實體集合S;

    輸出:實體簇集合C.

    例5:下面通過一個例子對聚類的過程進行說明.

    在聚類開始時,rdf:type 為書籍的實體有s1和s2,合并到簇C1中,其中,

    ?IC(s1)={title,author,year};

    ?IC(s2)={author,year};

    ?hist(C1)={(title,1),(author,2),(year,2)}.

    已知rdf:type 為電影的實體有s3和s4,合并到簇C2中,其中,

    ?IC(s3)={title,director,year};

    ?IC(s4)={director,year};

    ?hist(C2)={(title,1),(director,2),(year,2)}.

    最后,沒有rdf:type 的實體s5作為一個簇C3:

    ?IC(s5)={title,director};

    ?hist(C3)={(director,1)}.

    故簇C1和C3之間的距離DCScenter(C1,C3)=6,C2和C3之間的距離DCScenter(C2,C3)=3.

    未指定類型的實體s5所在的簇C3與電影實體所在的簇C2之間的距離更近,因此將C3合并到C2中,即將實體s5根據(jù)所設計的存儲方案存儲到類型為“電影”的頂點表中.

    定義5(最優(yōu)實體簇集合).實體簇集合C滿足:(1)集合中的所有實體簇都包含具有明確類型的實體,且兩個實體簇不包含相同類型的實體;(2)集合中的所有實體的最近距離實體都在其所在的實體簇中.

    下面給出算法1 的正確性證明及復雜度證明.

    定理1.給定實體集合S,算法1 能夠給出最優(yōu)的實體簇集合C.

    證明:算法1 首先將根據(jù)數(shù)據(jù)集中數(shù)據(jù)本身的特點進行數(shù)據(jù)類型歸類:若實體s為有類型數(shù)據(jù),則將其歸入實體s對應類型τ的實體簇Cτ中,并將Cτ合并到實體簇集合C中;若實體s為無類型數(shù)據(jù),則將其分別歸入一個單獨的用于處理無類型數(shù)據(jù)的實體簇C0中,在這一步中,能夠確保定義5 中的第1 條要求,經過第一輪迭代,各個實體都將歸并到某個實體簇中.在后續(xù)的迭代過程中,每輪迭代都將會兩兩計算實體簇C1和C2之間的距離DCScluster(C1,C2),并在所有的距離中找到距離最小的兩個實體簇Ci和Cj,其中,要求i≠j.若找得到滿足條件的兩個實體簇,則進行這兩個實體簇的合并;否則聚類過程結束.在首輪迭代之后的迭代,確保了定義5 中的第2 條要求.最終找到最優(yōu)的實體簇集合C.證畢.□

    算法1 的時間復雜度由兩部分組成:(1)算法經過e次迭代;(2)在每次迭代中,需要兩兩對比實體簇距離,在最壞情況下,每個實體都是單獨的實體簇,此時兩兩計算實體簇距離的復雜度為O(s2).因此,算法1 的時間復雜度為O(es2).

    4 查詢語言互操作

    SPARQL 是RDF 圖上的查詢語言,Cypher 是屬性圖之上的主要查詢語言.兩種不同的查詢語言在語法上有較大差異,KGDB 以第3 節(jié)所介紹的統(tǒng)一的存儲方案為基礎,建立在存儲方案之上的查詢過程,可以使用兩種不同的查詢語言查詢同一個知識圖譜,從而達到查詢語言互操作的目的.在文獻[35,36]給出了RDF 和Cypher 的形式語義,KGDB 系統(tǒng)將SPARQL 和Cypher 語言看作“統(tǒng)一查詢語義”的兩種不同“語法視圖”,關系模型被作為物理存儲模型,將RDF 圖和屬性圖進行統(tǒng)一存儲,同時對齊SPARQL 語言和Cypher 語言的查詢語義.

    知識圖譜查詢處理的最基本算子即是基本圖模式匹配查詢(basic graph pattern,簡稱BGP),這類查詢可以看作子圖匹配或者子圖同構查詢.已有的各種知識圖譜查詢語言均以子圖匹配作為核心算子.雖然圖數(shù)據(jù)上的子圖匹配查詢算法已有很多,但卻缺少同時具備系統(tǒng)性和高效性的面向大規(guī)模知識圖譜的子圖匹配查詢處理算法.KGDB 基于SPARQL 和Cypher 語言處理子圖匹配查詢,需要建立起兩種語言的聯(lián)系,將同樣的查詢意圖轉化為不同的兩種查詢表達式,同時保障兩種查詢語言處理結果的正確性與高效性.

    在本節(jié)中將會用到關系代數(shù)中的幾個經典算子,如ρ(重命名)、π(投影)、σ(選擇)、? (連接)、×(笛卡爾積)、∩(交)和∪(并)等.使用連接列表L表示抽象語義,L={r1,r2,…,rn},其中,r1,…,rn表示連接列表中的n個關系表.對關系表r,r→property表示關系表中所有元組屬性property的值.

    4.1 SPARQL查詢處理

    首先,給出RDF 圖基本圖模式匹配查詢的形式化定義.

    定義6(RDF 圖基本圖模式匹配).RDF 圖G上的基本圖模式查詢Q的語義定義為:

    (1)μ是從V(Q)中的頂點到V中頂點的映射;

    (2)(G,μ)?Q當且僅當對任意(si,pi,oi)∈Q滿足:i)si和oi可以分別匹配μ(si)和μ(oi);ii)(μ(si),μ(oi))∈E;iii)lab(μ(si),μ(oi))=pi;

    (3)Ω(Q)是使(G,μ)?Q滿足的μ的集合,也就是圖G上基本圖模式查詢GQ的答案集合.

    例6:圖5 是一個RDF 基本圖模式匹配查詢,查詢Q中共包含兩條三元組t1=(Beethoven,composes,?music)和t2=(Beethoven,birthDate,“1770-12-16”).兩條三元組構成一個簡單的星型結構,它所要查詢的是Beethoven 創(chuàng)作的所有作品.在圖2 的RDF 圖中執(zhí)行這個查詢,?music 匹配到Fate Symphony 上,作為一個變量,可以在查詢的結果子句中要求將其輸出.

    Fig.5 A basic graph pattern matching query example圖5 基本圖模式查詢示例

    最簡單的SPARQL 查詢語句包括兩個部分:SELECT 關鍵字引導的結果子句和WHERE 關鍵字引導的約束子句.KGDB 根據(jù)SPARQL 查詢語句的語法進行語義解析,生成語義樹.根據(jù)SPARQL 查詢語句中每部分的語義,使用下面的轉換規(guī)則自底向上構建關系代數(shù)形式的查詢語義樹.

    規(guī)則6.對于出現(xiàn)在SPARQL 查詢約束子句中的任意三元組t=(s,p,o),若?(ti)=mem,則在語義樹的底層添加一個葉子結點rs=ρs(r),其中,name(r)=o.即,把關系rs添加到連接列表L中.

    規(guī)則7.對于出現(xiàn)在SPARQL 查詢約束子句中的任意三元組t=(s,p,o),若?(t)=prop,已知rs∈L,則將L中的rs更改為原rs與屬性約束σr→p=o(r)(其中,rel(s)=r)的交.

    規(guī)則8.對于出現(xiàn)在SPARQL 查詢約束子句中的任意三元組t=(s,p,o),若?(t)=edge,若rs∈L,則將L中的rs更改為施加連接約束后的rs;若ro∈L,則將L中的ro更改為施加連接約束后的ro.對于主語(賓語)為URI 的情況,對謂語對應的關系表rp施加選擇約束

    規(guī)則9.對于出現(xiàn)在SPARQL 查詢結果語句中的任意變量var,添加投影約束:πvar.id,var.property(rfinal),其中,rfinal為連接列表L中的所有關系進行笛卡爾積后得到的最終關系結果.

    對應的,SPARQL 語句到查詢語義的轉化算法如下.

    算法2.SPARQL 基本圖模式匹配查詢處理.

    輸出:圖模式匹配查詢的結果關系rresult.

    算法2 遍歷SPARQL 查詢中涉及的三元組,針對不同類型的三元組做出不同的應對措施,最終形成關系代數(shù)表示的查詢語義.與存儲方案相似,查詢處理也將三元組ti=(si,pi,oi)分為3 種類型:表明實體類型的?(ti)=mem、賓語部分為字面量的?(ti)=prop和其他形式(?(ti)=edge)的三元組.當處理mem類型的三元組時(第4 行、第5 行),在連接列表中添加表名為該條三元組賓語oi的關系表,并將這個關系表重命名為該條三元組的主語si(在SPARQL 查詢中,這種mem類型的三元組的主語部分通常是變量,且在同一條查詢中的其他的三元組中使用相同的變量代稱);當處理prop類型的三元組時(第6 行~第9 行),向約束集合中添加一條屬性約束;當處理其他類型的三元組(第10 行~第24 行),即edge類型的三元組時,添加連接約束.第25 行、第26 行處理所有投影約束,將用戶要求的查詢結果進行最終輸出.

    定理2.給定SPARQL 查詢中三元組集合T和關系表集合R,算法2 輸出的結果是正確的.

    證明:算法2 遍歷SPARQL 查詢中涉及的所有三元組,并根據(jù)每條三元組ti=(si,pi,oi)∈T的三元組類別,給出對應的方案.參見定義3 可知,三元組的語義類型僅有3 種,即算法2 對于所有語義的三元組,均可以找到對應的解決方案,即給出正確的關系表的連接列表L.另一方面,結果子句中出現(xiàn)的所有變量,都在約束子句中出現(xiàn),添加投影約束僅改變最終輸出結果,不影響算法的正確性.證畢.□

    算法2 的時間復雜度由兩部分組成:(1)為了生成關系表的連接列表L,算法2 需要遍歷SPARQL 查詢中所有三元組,并對應給出解決方案,其時間復雜度為O(n);(2)向關系表的連接列表L添加新的條目的時間復雜度是常數(shù)的,即O(k).因此,算法2 的時間復雜度為O(kn).

    4.2 Cypher查詢處理

    與SPARQL 查詢處理類似,首先給出屬性圖上的模式匹配查詢的形式化定義.

    定義7(屬性圖模式).α=(a,Lab,Map)為一個點模式,其中:a∈A∪{nil}為點模式可選的名字,A為名字的集合,nil為空;Lab為可空的點的有限標簽集合,且Lab?L,L為屬性圖的標簽集合;Map為可空的屬性集合K到屬性值Val的映射.β=(d,Lab,a,Map)為一個邊模式,其中,d∈{←,→}表示邊模式的方向;Lab為可空的邊的有限標簽集合,且Lab?L;a∈A∪{nil}為邊模式可選的名字;Map為可空的屬性集合K到屬性值Val的映射.ω=α1β1α2β2…βn?1αn為一個路徑模式,其中,αi為點模式,βi為邊模式.

    定義8(屬性圖模式匹配).屬性圖上的圖模式匹配可以遞歸定義如下[36].

    (1)對點模式α=(a,Lab,Map),其在屬性圖G上的模式匹配為(v,G,μ)?α,則滿足a為nil或者μ(a)=v,Lab?λ(v)且[[γ(v,k)=Map(k)]]G,μ成立;

    (2)對于長度為m=0,即只包含一個點的路徑P,在屬性圖G上的模式匹配為(v?P,G,μ)?αβω,則滿足:

    a)a為nil或者μ(a)=list(?);

    b)(v,G,μ)?α并且(P,G,μ)?ω;

    (3)對于長度為m≥1 的路徑P,在屬性圖G上的模式匹配為(v1e1v2…emvm+1?P,G,μ)?αβω,則滿足下列條件:

    a)a為nil或者μ(a)=list(e1,…,em);

    b)(v1,G,μ)?α并且(P,G,μ)?ω;

    c)Labβ?{λ(e1)∪λ(e2)∪…∪λ(em)};

    d)[[γ(ei,k)=Map(k)]]G,μ成立;

    則對于Cypher 查詢Q,其結果集為

    與SPARQL 查詢語句相似,最簡單的Cypher 查詢也主要包括兩個部分:MATCH 關鍵字引導的約束子句和RETURN 關鍵字引導的結果子句.KGDB 使用下列轉換規(guī)則對Cypher 語句進行處理.

    規(guī)則10.對于出現(xiàn)在Cypher 查詢語句中的所有點模式α=(a,Lab,Map),向關系表的連接列表L中添加n個關系表r1,…,rn,其中,Lab?{rel(r1),rel(r2),…,rel(rn)},并施加屬性約束,其中,domain(Map)指Map的定義域,range(Map)指Map的值域.

    規(guī)則11.對于出現(xiàn)在Cypher 查詢語句中的所有邊模式β=(d,Lab,a,Map),向L中關系表施加連接約束:

    規(guī)則12.對于出現(xiàn)在Cypher 查詢語句RETURN 子句中所有的變量var,添加投影約束:πvar.id,var.property(rfinal),其中,rfinal為連接列表L中的所有關系進行笛卡爾積后得到的最終關系結果.

    可以看出:對照KGDB 統(tǒng)一的存儲模型,Cypher 語義的轉化相較SPARQL 更加容易,SPARQL 需要進行三元組的分類,根據(jù)具體分類來進行關系代數(shù)的映射;而Cypher 直接根據(jù)查詢中每一部分的所屬集合即可確定語義.

    定理3.運用上述規(guī)則10 到規(guī)則12,可以正確地將Cypher 查詢語句轉化為關系代數(shù)表示的查詢語義.

    證明:基本的Cypher 語句中的MATCH 子句的轉化在規(guī)則10 和規(guī)則11 中完成,RETURN 子句的轉化在規(guī)則12 中定義.規(guī)則10 和規(guī)則11 分別針對MATCH 子句中的點模式和邊模式進行約束轉換:(1)當遇到帶標簽的點模式α=(a,Lab,Map)時,向關系表的連接列表L中添加n個關系表r1,…,rn,其中,Lab?{rel(r1),rel(r2),…,rel(rn)},并施加屬性約束,其中,domain(Map)指Map的定義域,range(Map)指Map的值域;(2)當遇到帶標簽的邊模式β=(d,Lab,a,Map)時,添加兩條連接約束.規(guī)則12 中出現(xiàn)的所有變量都須在MATCH 子句中出現(xiàn)過,并在執(zhí)行計劃中對應添加投影約束πvar.id,var.property(rfinal),其中,rfinal為連接列表L中的所有關系進行笛卡爾積后得到的最終關系結果.對于兩個子句中可能出現(xiàn)的所有模式匹配內容,都可以找到對應的查詢解決方案.證畢.□

    例7:圖6 是一個屬性圖模式匹配查詢,它查詢的是音樂家Beethoven 創(chuàng)作的所有作品.在圖3 的屬性圖中執(zhí)行這個查詢,可以得到虛線框標記的結果.

    Fig.6 A basic pattern matching query example for Cypher圖6 Cypher 圖模式匹配查詢舉例

    4.3 查詢語言語義對齊

    圖7 展示了將SPARQL 查詢語句與Cypher 查詢語句進行語義對齊的過程.兩種查詢語言可以使用完全不同的語法表達相同的語義,相同的查詢意圖可以被分別表示為兩種不同的查詢語言.兩種查詢語言應用各自的轉換規(guī)則,可以轉換成相同的關系代數(shù)表示的查詢語義,為后面的查詢執(zhí)行提供了統(tǒng)一的語義.

    Fig.7 Semantic alignment圖7 語義對齊

    在統(tǒng)一的存儲模型之上提供兩種查詢語言接口,可以在解決具體問題時為使用者提供更多選擇,進行兩種查詢語言的語義對齊,實際上是對兩種語言的擴展.

    例8:對于圖7 中的查詢語句舉例,下面給出兩種語言分別的轉化過程.

    (1)SPARQL 查詢轉化

    運用第4.1 節(jié)介紹的規(guī)則,轉化SPARQL 查詢語句的過程如下.

    a)對三元組t1=(?x,rdf:type,Composer)和t4=(?y,rdf:type,Music),運用規(guī)則6,可知?(t1)=?(t4)=mem,則將對應的關系表Composer 和Music 加入到連接列表中,并將其重命名ρx(Composer),ρy(Music);

    b)對三元組t2=(?x,birthDate,“1770-12-16”),運用規(guī)則7,可知?(t2)=prop,則向重命名后的表x添加約束條件σx→birthDate=“1770-12-16”(x);

    c)對三元組t3=(?x,composes,?y),運用規(guī)則8,可知?(t3)=edge,則添加關系表之間的連接約束:

    d)對結果子句中的所有變量,即x和y,運用規(guī)則9,添加投影約束πx.id,x.property,y.id,y.property(rfinal),其中,rfinal為對連接列表中所有關系表施加相應約束后做笛卡爾積的關系表.

    至此,該條SPARQL 語句成功轉換為圖7 中的語義樹.

    (2)Cypher 查詢轉化

    運用第4.2 節(jié)介紹的規(guī)則,轉化Cypher 查詢語句的過程如下.

    a)對點模式α=({x,y},{Composer,Music},birthDate→“1770-12-16”),運用規(guī)則10,向連接列表中添加關系表Composer 和Music,并進行相應重命名,將其加入到連接列表L中:ρx(Composer)和ρy(Music).并添加約束條件σx→birthDate=“1770-12-16”(x);

    b)對Cypher 語句中的邊模式β=(→,{composes},nil,{?}),則根據(jù)規(guī)則11,添加相應的連接約束:

    c)對RETURN 子句中的所有變量,即x和y,根據(jù)規(guī)則12,添加投影約束πx.id,x.property,y.id,y.property(rfinal),其中,rfinal為對連接列表中所有關系表施加相應約束后,做笛卡爾積的關系表.

    根據(jù)本節(jié)介紹的SPARQL 和Cypher 查詢語言相應的查詢語句轉化規(guī)則,能夠將兩種查詢語言轉化為相同的使用關系代數(shù)表達的抽象語義樹(查詢語言的語義對齊方法的正確性分析在定理2 和定理3 中分別給出),使得KGDB 在兼容兩種語法完全不同的查詢語言的前提下統(tǒng)一了查詢的語義.這為查詢處理后面的優(yōu)化過程提供了便利,并為用戶在同一個知識圖譜上的查詢提供了更多選擇.

    5 實 驗

    本節(jié)在合成數(shù)據(jù)集和真實數(shù)據(jù)集上驗證統(tǒng)一存儲方案的高效性和和查詢語言的互操作性,并且與RDF 三元組庫gStore[2]和屬性圖數(shù)據(jù)庫Neo4j[3]進行比較.

    5.1 實驗環(huán)境和數(shù)據(jù)集

    本文使用的實驗平臺為單節(jié)點服務器,節(jié)點配置主頻為2.5GHz 的Intel(R)Xeon(R)Platinum 8255C 八核處理器,其內存大小為32GB,硬盤大小為100GB,使用Linux 64-bit CentOS 7.6 操作系統(tǒng).

    KGDB 以開源屬性圖數(shù)據(jù)庫AgensGraph 為后端.使用的Neo4j 版本為4.1.0 社區(qū)版,使用neosemantics 插件4.0.0.1 版本,以在Neo4j 中支持RDF 圖的存儲,使用的gStore 版本為0.7.2.本文進行三個系統(tǒng)的存儲效率的對比實驗,并在KGDB 和gStore 系統(tǒng)上進行SPARQL 基本圖模式查詢對比實驗,在KGDB 和Neo4j 上進行Cypher查詢對比實驗.從存儲空間、存儲時間和查詢效率上進行系統(tǒng)的全面評估.

    本文使用的數(shù)據(jù)集包括LUBM[37]標準合成數(shù)據(jù)集以及DBpedia[38]真實數(shù)據(jù)集.LUBM 允許用戶定義數(shù)據(jù)集的大小,本文使用了五個不同規(guī)模的LUBM 數(shù)據(jù)集(即LUBM10,LUBM20,LUBM30,LUBM40 和LUBM50)進行實驗測試和比較;DBpedia 數(shù)據(jù)集是從維基百科中提取實體關系生成的一個真實數(shù)據(jù)集.本次實驗中,所有數(shù)據(jù)集均以N-Triple 格式表示,表2 給出了實驗數(shù)據(jù)集的具體統(tǒng)計信息.

    Table 2 Datasets表2 數(shù)據(jù)集

    在LUBM 數(shù)據(jù)集上執(zhí)行的查詢來自LUBM 提供的14 個標準查詢中的8 個(即Q1~Q6,Q11 和Q14).其中,

    ? Q1~Q3 和Q14 為不涉及推理的SPARQL 查詢:(1)Q1 輸入數(shù)據(jù)量大,選擇度高;(2)Q2 為涉及3 個實體的三角查詢;(3)Q3 查詢涉及的類型數(shù)據(jù)量大;(4)Q14 輸入數(shù)據(jù)量大,選擇度低;

    ? Q4~Q6 和Q11 為涉及到推理的查詢.

    gStore 并不支持RDF 圖上的推理功能,而Neo4j 也僅僅可以需要通過插件的方式支持推理功能.同樣的,KGDB 也尚未支持推理查詢,故本文僅在gStore 和KGDB 上進行推理查詢返回空結果的查詢效率對比實驗.LUBM 數(shù)據(jù)集中涉及推理的查詢可以簡單分為4 類:(1)Q4~Q9 涉及到subClassOf 層次類型;(2)Q5 包含subPropertyOf 層次關系,查詢中包含的內容需要借助本體信息才可直接執(zhí)行;(3)Q6~Q10 需要進行層次類型推理,即查詢中涉及的實體層次類型關系在本體信息中也未直接給出;(4)Q11~Q13 需要進行更加復雜的關系推理,即除了subClassOf 和subPropertyOf 關系之外的關系推理.本文在LUBM 數(shù)據(jù)集上的實驗部分在4 類推理查詢中各選擇一個進行比較實驗.因為缺乏DBpedia 數(shù)據(jù)集上的查詢模板,本文設計了4 個包含不同數(shù)據(jù)量的查詢(記為Q_dbp1~Q_dbp4).Q_dbp2~Q_dbp4 的基本結構相同,不同的只是數(shù)據(jù)量的大小:Q_dbp4 數(shù)據(jù)量最大,達到數(shù)百萬條;而Q_dbp2 最小.

    5.2 實驗結果

    本節(jié)在3 個方面進行實驗結果比較,包括存儲時間、存儲空間和SPARQL 或Cypher 的查詢效率.以下實驗結果中,每個查詢測試均進行3 次取平均值,避免隨機誤差.

    5.2.1 存儲時間

    如圖8(a)所示:在存儲時間上,KGDB 比gStore 和Neo4j 需要的時間短,gStore 所需的存儲時間最長,并且隨著數(shù)據(jù)量的增長,各個系統(tǒng)之間的時間差異越來越大,KGDB 的優(yōu)勢越加明顯;在數(shù)據(jù)量最大的數(shù)據(jù)集DBpedia上,KGDB 可以達到gStore 及Neo4j 存儲速度的將近10 倍,將存儲效率提高一個數(shù)量級.

    Fig.8 Results for data insertion and storage space圖8 存儲時間、存儲空間實驗結果

    在存儲處理過程中,KGDB 僅需要一次無類型實體聚類過程,即可多次進行數(shù)據(jù)集的存儲,在存儲過程中,不需要復雜的轉換過程.對應的,gStore 需要進行字符串與id 的轉換、VS 樹的建立等等過程,Neo4j 需要進行類型到標簽的轉化等等過程.

    5.2.2 存儲空間

    如圖8(b)所示:在存儲空間上,KGDB 也相較gStore 和Neo4j 優(yōu)勢明顯.3 個系統(tǒng)中:Neo4j 所需存儲空間大于數(shù)據(jù)集本身的大小,最高可以達到數(shù)據(jù)集本身的2 倍;gStore 可以將數(shù)據(jù)集壓縮存儲,最大壓縮率達到0.8;相比之下,KGDB 最大壓縮率達到0.7,實現(xiàn)數(shù)據(jù)的高效存儲.隨著數(shù)據(jù)量的增長,使用字典編碼的KGDB 在存儲空間上的優(yōu)勢越加明顯.需要注意的是:Neo4j 社區(qū)版僅可以使用兩個數(shù)據(jù)庫(database),而每個數(shù)據(jù)庫僅能配置一個圖(graph),這就要求用戶在需要建立多個知識圖譜數(shù)據(jù)庫時,做Neo4j 系統(tǒng)的全備份.雖然專業(yè)版提供了多數(shù)據(jù)庫的支持,但社區(qū)版的配置無疑限制了普通用戶的使用,也增加了存儲多個獨立知識圖譜的存儲空間要求.

    在本文的實驗中,僅計算單個數(shù)據(jù)庫在裝載知識圖譜前后的空間變化.如果將系統(tǒng)空間要求計算在內,Neo4j 的知識圖譜存儲所需空間會更大.

    5.2.3 查詢效率

    查詢效率實驗分別在LUBM 合成數(shù)據(jù)集和DBpedia 真實數(shù)據(jù)集上進行.在LUBM 數(shù)據(jù)集上,采用了4 個基本查詢和4 個涉及推理的查詢.在DBpedia 上,設計了4 個查詢,其中:Q_dbp1 輸入數(shù)據(jù)量大,選擇度高;Q_dbp2~Q_dbp4 具有相同的結構,數(shù)據(jù)量依次增大.在同樣的語義下,分別構造SPARQL 和Cypher 查詢語句,并在對應系統(tǒng)上進行實驗.

    (1)SPARQL 查詢效率實驗.

    gStore 是RDF 圖數(shù)據(jù)庫,使用SPARQL 作為其查詢語言,可以支持大規(guī)模RDF 知識圖譜的數(shù)據(jù)管理任務.KGDB 與gStore 系統(tǒng)的SPARQL 查詢效率對比實驗結果如圖9 所示:gStore 不能支持最復雜的涉及3 個實體的三角查詢Q2,而KGDB 可以在較短時間內完成這一查詢.對于Q3,隨著數(shù)據(jù)量的增加,KGDB 與gStore 相比,其查詢時間增長幅度更小,表明KGDB 在大規(guī)模知識圖譜數(shù)據(jù)上的查詢效率優(yōu)于gStore.在其他兩個查詢Q1和Q14 上,KGDB 可以達到與gStore 相同的數(shù)量級,因此具有可比性.

    Fig.9 Query efficiency experimental results on LUBM by SPARQL for KGDB and gStore圖9 在LUBM 數(shù)據(jù)集上的KGDB 和gStore 的SPARQL 查詢效率實驗結果

    LUBM 提供的標準查詢Q2 是選取的4 個不涉及推理的查詢中最為復雜的,在gStore 系統(tǒng)上將會引起系統(tǒng)錯誤,不能夠直接執(zhí)行.為了公平比較,沒有進行查詢的改寫.對于查詢Q1 和Q3,其基本結構是一致的,區(qū)別在于涉及的實體的數(shù)據(jù)量不同,Q3 的輸入數(shù)據(jù)量更大.而相較而言,KGDB 可以在Q3 上呈現(xiàn)出平緩的查詢時間增長趨勢,說明KGDB 可以應對大規(guī)模知識圖譜上的查詢,數(shù)據(jù)量的增長不會導致查詢效率的降低.對于查詢時間最長的Q14,該查詢涉及的實體數(shù)量巨大,在LUBM50 上,查詢結果將需返回數(shù)十萬條數(shù)據(jù).在這一查詢上,KGDB和gStore 的查詢時間可以達到同一數(shù)量級.

    如圖10 所示,在gStore 和KGDB 上的SPARQL 推理查詢實驗結果表明:兩個系統(tǒng)均不支持涉及推理的查詢,但都能在較短時間內給出查詢結果,雖然因缺乏推理功能導致查詢的最終結果為空.對于相同的LUBM 標準查詢,KGDB 能夠在更短的時間內給出查詢結果,并且查詢時間隨數(shù)據(jù)集規(guī)模增長的幅度與gStore 相比更小.

    Fig.10 Inference query efficiency experimental results on LUBM by SPARQL for KGDB and gStore圖10 在LUBM 數(shù)據(jù)集上的KGDB 和gStore 的SPARQL 推理查詢效率實驗結果

    如圖11 所示,可以得出結論:在DBpedia 數(shù)據(jù)集上,對于查詢Q_dbp1~Q_dbp3,KGDB 可以達到比gStore 更快的查詢速度,KGDB 在最優(yōu)的查詢(Q_dbp1)上,可以將查詢速度提升一個數(shù)量級.這說明在選擇算子的處理上,KGDB 擁有較大優(yōu)勢.而對于最慢的查詢(Q_dbp4),KGDB 也可以達到與gStore 相同的數(shù)量級.

    Fig.11 Query efficiency experimental results on DBpedia by SPARQL for KGDB and gStore圖11 在DBpedia 數(shù)據(jù)集上的KGDB 和gStore 的SPARQL 查詢效率實驗結果

    (2)Cypher 查詢效率實驗.

    Neo4j 是屬性圖數(shù)據(jù)庫,使用Cypher 作為查詢語言,支持完整的ACID 規(guī)則,可以更加快速地處理連接數(shù)據(jù).下面將進行KGDB 和Neo4j 系統(tǒng)的Cypher 查詢效率對比實驗.

    如圖12 所示:在LUBM 數(shù)據(jù)集上,KGDB 在3 個標準查詢Q1,Q3 和Q14 上都可以達到比Neo4j 更快的速度;在最優(yōu)的查詢上(Q3),KGDB 比Neo4j 快近70 倍;而在最慢的查詢上(Q2),KGDB 也可以達到與Neo4j 相同的數(shù)量級.

    Fig.12 Query efficiency experimental results on LUBM by SPARQL for KGDB and Neo4j圖12 在LUBM 數(shù)據(jù)集上的KGDB 和Neo4j 的SPARQL 查詢效率實驗結果

    對于最復雜的三角查詢Q2,KGDB 的查詢速度慢于Neo4j.這是因為Neo4j 的存儲方式使之查詢結點之間的連接變得容易,而不需要像KGDB 這種關系數(shù)據(jù)庫,執(zhí)行耗時的連接(JOIN)操作.但是,KGDB 相較于Neo4j 擁有更多優(yōu)勢:(1)KGDB 不需要單獨的插件,原生的支持RDF 圖和屬性圖的統(tǒng)一存儲,并在存儲過程中,比Neo4j需要更短的存儲時間和更小的存儲空間,同時管理多個知識圖譜更加容易;(2)KGDB 同時支持SPARQL 和Cypher 查詢語言,允許兩個查詢語言在同一知識圖譜上的互操作.

    在DBpedia 數(shù)據(jù)集上的實驗結果表明(如圖13 所示):在所有查詢上,KGDB 都可以達到比Neo4j 更快的查詢速度.對于最優(yōu)的查詢(Q_dbp3),KGDB 可以比Neo4j 快2 個數(shù)量級;而最慢的查詢(Q_dbp4)上,KGDB 也可以達到14 倍于Neo4j 的查詢速度.

    從LUBM 上的實驗結果隨數(shù)據(jù)量增長呈現(xiàn)的趨勢上來看:KGDB 在數(shù)據(jù)量不斷增長后,相較Neo4j 的優(yōu)勢逐漸變小,但查詢時間仍然低于Neo4j.在最復雜的查詢上(Q2)也可以得出相似的結論,即:隨著需要遍歷的數(shù)據(jù)量增大,Neo4j 查詢時間的增長幅度相較KGDB 小,但這種增長不會帶來數(shù)量級的變化.而在DBpedia 上的實驗結果表明:因為真實數(shù)據(jù)集所表現(xiàn)出的半結構化和稀疏性,查詢涉及數(shù)據(jù)量的增長將會為KGDB 帶來優(yōu)勢.

    Fig.13 Query efficiency experimental results on DBpedia by Cypher for KGDB and Neo4j圖13 在DBpedia 數(shù)據(jù)集上的KGDB 和Neo4j 的Cypher 查詢效率實驗結果

    6 總結

    本文研發(fā)了統(tǒng)一模型和語言的知識圖譜數(shù)據(jù)庫管理系統(tǒng)KGDB.

    (1)統(tǒng)一存儲:支持存儲RDF 圖和屬性圖數(shù)據(jù),使用字典編碼,提高存儲效率,節(jié)省存儲空間,使用基于特征集的聚類方法,解決無類型實體的存儲問題,使得具有相近語義的實體存儲在同一關系表中,提高查詢效率;

    (2)互操作語法層:進行兩種數(shù)據(jù)模型之上的查詢語言SPARQL 和Cypher 的語義對齊,即對同一知識圖譜,使用兩種查詢語言都可以得到相同的查詢結果,達到查詢語言互操作的目的;

    (3)統(tǒng)一語義層:SPARQL 和Cypher 兩種查詢語言可以通過轉換規(guī)則,轉化為關系代數(shù)表示的相同的抽象查詢語義樹.

    真實數(shù)據(jù)集和合成數(shù)據(jù)集上的實驗驗證了KGDB 系統(tǒng)的存儲效率和查詢效率,實驗結果表明:KGDB 在真實數(shù)據(jù)集上普遍優(yōu)于gStore 和Neo4j;而在合成數(shù)據(jù)集上,KGDB 可以與gStore 和Neo4j 達到相同數(shù)量級.

    本文只討論了單機系統(tǒng)上的知識圖譜管理問題,隨著知識圖譜數(shù)據(jù)規(guī)模的不斷增大,分布式知識圖譜管理系統(tǒng)將成為研究熱點.在后續(xù)工作中,我們將會討論分布式環(huán)境下知識圖譜的統(tǒng)一存儲方案和查詢處理方法.

    附 錄

    1.LUBM數(shù)據(jù)集上的查詢

    1)SPARQL 查詢

    (1)Q1

    (2)Q2

    (3)Q3

    (4)Q4

    (5)Q5

    (6)Q6

    (7)Q11

    (8)Q14

    2)Cypher 查詢

    (1)Q1

    (2)Q2(3)Q3

    (4)Q14

    2.DBpedia數(shù)據(jù)集上的查詢

    1)SPARQL 查詢

    (1)Q_dbp1

    (2)Q_dbp2

    (3)Q_dbp3

    (4)Q_dbp4

    2)Cypher 查詢

    (1)Q_dbp1

    (2)Q_dbp2

    (3)Q_dbp3

    (4)Q_dbp4

    猜你喜歡
    三元組頂點圖譜
    基于帶噪聲數(shù)據(jù)集的強魯棒性隱含三元組質檢算法*
    過非等腰銳角三角形頂點和垂心的圓的性質及應用(下)
    特征標三元組的本原誘導子
    繪一張成長圖譜
    關于余撓三元組的periodic-模
    關于頂點染色的一個猜想
    山東科學(2018年6期)2018-12-20 11:08:58
    補腎強身片UPLC指紋圖譜
    中成藥(2017年3期)2017-05-17 06:09:01
    主動對接你思維的知識圖譜
    三元組輻射場的建模與仿真
    雜草圖譜
    雜草學報(2012年1期)2012-11-06 07:08:33
    精品久久久久久电影网| 王馨瑶露胸无遮挡在线观看| 日本欧美国产在线视频| 亚洲国产精品国产精品| 18禁国产床啪视频网站| 满18在线观看网站| 18禁裸乳无遮挡动漫免费视频| 高清不卡的av网站| 最近2019中文字幕mv第一页| 亚洲图色成人| 80岁老熟妇乱子伦牲交| 免费在线观看完整版高清| av国产精品久久久久影院| 免费高清在线观看日韩| 国产精品一区二区精品视频观看| 日日爽夜夜爽网站| av网站在线播放免费| 国产精品国产三级专区第一集| 国产成人午夜福利电影在线观看| 国产亚洲精品第一综合不卡| 中文乱码字字幕精品一区二区三区| 夫妻午夜视频| 免费高清在线观看视频在线观看| 午夜福利网站1000一区二区三区| 免费观看av网站的网址| 欧美日本中文国产一区发布| 精品国产一区二区三区四区第35| 日本91视频免费播放| 9热在线视频观看99| 久久97久久精品| 中文字幕最新亚洲高清| 国产亚洲欧美精品永久| 中文精品一卡2卡3卡4更新| 国产精品三级大全| 一区二区三区乱码不卡18| 国产精品熟女久久久久浪| 婷婷成人精品国产| 一区二区日韩欧美中文字幕| 亚洲欧美一区二区三区黑人| 成人国产麻豆网| 久久久久精品国产欧美久久久 | 久久青草综合色| 在线 av 中文字幕| 飞空精品影院首页| kizo精华| 一级片免费观看大全| 国产欧美日韩综合在线一区二区| 日韩成人av中文字幕在线观看| 国产免费一区二区三区四区乱码| 侵犯人妻中文字幕一二三四区| 人妻人人澡人人爽人人| 蜜桃国产av成人99| 一区二区日韩欧美中文字幕| 国产有黄有色有爽视频| 一区二区三区精品91| 日本vs欧美在线观看视频| 日韩大片免费观看网站| 亚洲欧洲日产国产| 亚洲婷婷狠狠爱综合网| 中文字幕制服av| 欧美97在线视频| 黄色视频不卡| 麻豆av在线久日| 国产精品亚洲av一区麻豆 | 妹子高潮喷水视频| 国产午夜精品一二区理论片| 午夜福利网站1000一区二区三区| 久久久久精品久久久久真实原创| 一区二区三区四区激情视频| 国产精品国产三级国产专区5o| 黑人巨大精品欧美一区二区蜜桃| 久久精品国产亚洲av涩爱| 精品福利永久在线观看| 在线观看三级黄色| 好男人视频免费观看在线| 国产精品99久久99久久久不卡 | 亚洲一卡2卡3卡4卡5卡精品中文| 免费在线观看黄色视频的| 亚洲av国产av综合av卡| 国产亚洲欧美精品永久| 一级毛片我不卡| 国产日韩欧美视频二区| 欧美精品高潮呻吟av久久| 99re6热这里在线精品视频| 亚洲精品,欧美精品| 精品第一国产精品| 婷婷成人精品国产| 老司机靠b影院| 免费少妇av软件| 国产精品国产三级专区第一集| 免费女性裸体啪啪无遮挡网站| 日韩熟女老妇一区二区性免费视频| 免费在线观看完整版高清| 日韩熟女老妇一区二区性免费视频| av网站免费在线观看视频| 操出白浆在线播放| 制服丝袜香蕉在线| 制服诱惑二区| 日韩av免费高清视频| av在线播放精品| 在现免费观看毛片| 女人被躁到高潮嗷嗷叫费观| 亚洲第一av免费看| 国产欧美亚洲国产| 国产免费福利视频在线观看| 最新在线观看一区二区三区 | 国产亚洲最大av| 久久人人爽人人片av| 久久亚洲国产成人精品v| 波多野结衣一区麻豆| 男男h啪啪无遮挡| 国产乱人偷精品视频| 国产有黄有色有爽视频| 免费久久久久久久精品成人欧美视频| 999精品在线视频| 国产成人精品福利久久| 久久久国产一区二区| 一级a爱视频在线免费观看| 亚洲精品一二三| 欧美人与性动交α欧美精品济南到| 在线观看免费高清a一片| 久久精品国产a三级三级三级| 黑丝袜美女国产一区| 午夜激情久久久久久久| 亚洲成人一二三区av| 欧美激情极品国产一区二区三区| 亚洲国产欧美在线一区| 免费黄色在线免费观看| 中文字幕人妻丝袜一区二区 | 精品一品国产午夜福利视频| 成人黄色视频免费在线看| 一二三四中文在线观看免费高清| 国产又爽黄色视频| 久久精品亚洲av国产电影网| 亚洲欧美一区二区三区久久| 国产成人午夜福利电影在线观看| 日韩精品有码人妻一区| 我要看黄色一级片免费的| 午夜福利一区二区在线看| 街头女战士在线观看网站| 国产av国产精品国产| videos熟女内射| 成人毛片60女人毛片免费| 成人18禁高潮啪啪吃奶动态图| 亚洲精品国产av蜜桃| 人体艺术视频欧美日本| 又粗又硬又长又爽又黄的视频| 观看美女的网站| 欧美黑人精品巨大| 国产又色又爽无遮挡免| 人人妻人人爽人人添夜夜欢视频| 成人亚洲欧美一区二区av| 一级片免费观看大全| 免费在线观看黄色视频的| 成人影院久久| 欧美 亚洲 国产 日韩一| 国产亚洲一区二区精品| 国产色婷婷99| 久久精品人人爽人人爽视色| 在线观看免费日韩欧美大片| 高清av免费在线| 一本大道久久a久久精品| 狠狠精品人妻久久久久久综合| 男女床上黄色一级片免费看| 亚洲国产欧美一区二区综合| 一边亲一边摸免费视频| 悠悠久久av| 欧美日韩亚洲综合一区二区三区_| 久久久精品94久久精品| 韩国精品一区二区三区| 汤姆久久久久久久影院中文字幕| 又黄又粗又硬又大视频| 国产在线视频一区二区| 国产精品免费大片| 伊人久久大香线蕉亚洲五| 中文字幕人妻丝袜制服| 人人澡人人妻人| 国产在线一区二区三区精| 一级片免费观看大全| 我的亚洲天堂| 日本欧美视频一区| 人人妻人人澡人人看| a级毛片黄视频| 久久精品国产亚洲av涩爱| 一本—道久久a久久精品蜜桃钙片| 久热爱精品视频在线9| 伦理电影大哥的女人| 在线观看三级黄色| 亚洲美女搞黄在线观看| 亚洲av国产av综合av卡| 不卡av一区二区三区| 免费在线观看完整版高清| 国产成人91sexporn| 亚洲国产精品成人久久小说| 色94色欧美一区二区| 午夜久久久在线观看| 如何舔出高潮| 亚洲精品视频女| 久久 成人 亚洲| 男人添女人高潮全过程视频| 男女边摸边吃奶| 久久 成人 亚洲| www.自偷自拍.com| 黄片无遮挡物在线观看| 一级毛片我不卡| 久久亚洲国产成人精品v| 免费不卡黄色视频| 免费黄色在线免费观看| 亚洲欧美一区二区三区黑人| 人人妻人人添人人爽欧美一区卜| 一个人免费看片子| 亚洲天堂av无毛| 欧美 亚洲 国产 日韩一| 99re6热这里在线精品视频| av又黄又爽大尺度在线免费看| 国产精品久久久久久精品古装| 丝袜美腿诱惑在线| 久久99热这里只频精品6学生| 欧美精品高潮呻吟av久久| 波多野结衣一区麻豆| 国产片特级美女逼逼视频| 久久精品国产亚洲av涩爱| 亚洲av福利一区| 如何舔出高潮| 亚洲人成电影观看| 中文乱码字字幕精品一区二区三区| 久久av网站| 一本色道久久久久久精品综合| 天堂俺去俺来也www色官网| 狠狠婷婷综合久久久久久88av| 国产一区二区 视频在线| 精品人妻一区二区三区麻豆| 亚洲色图 男人天堂 中文字幕| 免费在线观看视频国产中文字幕亚洲 | 国产精品偷伦视频观看了| 高清欧美精品videossex| svipshipincom国产片| 日韩 亚洲 欧美在线| 夫妻性生交免费视频一级片| 色视频在线一区二区三区| 国产精品久久久av美女十八| 欧美日韩福利视频一区二区| 国产精品一二三区在线看| 中文字幕另类日韩欧美亚洲嫩草| 热re99久久国产66热| 宅男免费午夜| 久久久久国产一级毛片高清牌| 亚洲国产成人一精品久久久| 久久天躁狠狠躁夜夜2o2o | 在线观看人妻少妇| 亚洲国产av影院在线观看| 国产精品国产三级国产专区5o| 制服丝袜香蕉在线| av电影中文网址| 十八禁网站网址无遮挡| 亚洲精品国产色婷婷电影| 国产日韩欧美亚洲二区| 一区二区av电影网| 亚洲国产欧美日韩在线播放| 男女边摸边吃奶| 亚洲自偷自拍图片 自拍| 日韩,欧美,国产一区二区三区| 2018国产大陆天天弄谢| 亚洲av成人不卡在线观看播放网 | 亚洲第一区二区三区不卡| 最近中文字幕高清免费大全6| 久久婷婷青草| 午夜激情久久久久久久| 在线观看人妻少妇| 国产国语露脸激情在线看| 少妇人妻精品综合一区二区| 国产免费福利视频在线观看| 啦啦啦视频在线资源免费观看| 亚洲成人国产一区在线观看 | 老司机深夜福利视频在线观看 | 亚洲精华国产精华液的使用体验| e午夜精品久久久久久久| 在线免费观看不下载黄p国产| 99国产综合亚洲精品| 人人妻人人添人人爽欧美一区卜| 成年动漫av网址| 一级毛片 在线播放| 女人被躁到高潮嗷嗷叫费观| 午夜av观看不卡| 9热在线视频观看99| 国产av码专区亚洲av| 国产99久久九九免费精品| 久久久欧美国产精品| av又黄又爽大尺度在线免费看| 丝瓜视频免费看黄片| 国产精品成人在线| 一边摸一边做爽爽视频免费| a级毛片在线看网站| 亚洲综合精品二区| 看免费成人av毛片| 观看美女的网站| 久久毛片免费看一区二区三区| 777米奇影视久久| 丝瓜视频免费看黄片| 哪个播放器可以免费观看大片| 欧美成人午夜精品| 老鸭窝网址在线观看| 亚洲精品国产av成人精品| 欧美激情极品国产一区二区三区| 啦啦啦在线免费观看视频4| 亚洲精华国产精华液的使用体验| 国产亚洲最大av| 成年动漫av网址| 成年女人毛片免费观看观看9 | 午夜av观看不卡| 你懂的网址亚洲精品在线观看| 亚洲av男天堂| 亚洲精品中文字幕在线视频| 国产伦人伦偷精品视频| 久久99热这里只频精品6学生| 丝袜在线中文字幕| 一级毛片黄色毛片免费观看视频| 亚洲精品国产一区二区精华液| 国产亚洲av高清不卡| 黄色一级大片看看| 成人国语在线视频| 久久精品亚洲熟妇少妇任你| 欧美黑人精品巨大| 如日韩欧美国产精品一区二区三区| 观看美女的网站| 午夜精品国产一区二区电影| 99精国产麻豆久久婷婷| 成人国语在线视频| 免费黄色在线免费观看| www.av在线官网国产| 久久久精品国产亚洲av高清涩受| av女优亚洲男人天堂| 精品少妇黑人巨大在线播放| 99热国产这里只有精品6| 日韩欧美精品免费久久| 国产精品香港三级国产av潘金莲 | 久久免费观看电影| 女性被躁到高潮视频| 黄频高清免费视频| 久久精品亚洲熟妇少妇任你| 国产福利在线免费观看视频| 国产老妇伦熟女老妇高清| 国产熟女欧美一区二区| 女人爽到高潮嗷嗷叫在线视频| 精品酒店卫生间| 最近中文字幕高清免费大全6| 人妻一区二区av| 国产精品一区二区在线不卡| 高清视频免费观看一区二区| 午夜免费鲁丝| 成年人免费黄色播放视频| 校园人妻丝袜中文字幕| 亚洲成av片中文字幕在线观看| 欧美久久黑人一区二区| 久久久久精品人妻al黑| 久久国产亚洲av麻豆专区| 亚洲在久久综合| 精品第一国产精品| 捣出白浆h1v1| 黄色毛片三级朝国网站| 女性生殖器流出的白浆| 精品国产国语对白av| 国产高清不卡午夜福利| 亚洲综合精品二区| 亚洲av日韩在线播放| 色婷婷久久久亚洲欧美| 天天躁夜夜躁狠狠久久av| 久久久久精品性色| 亚洲精品自拍成人| 国产日韩欧美视频二区| 国产 一区精品| 另类精品久久| 观看av在线不卡| 纯流量卡能插随身wifi吗| 国产熟女午夜一区二区三区| 狠狠精品人妻久久久久久综合| 日本午夜av视频| 久久久久久人人人人人| 国产国语露脸激情在线看| 嫩草影视91久久| 一区在线观看完整版| 老司机影院成人| 色网站视频免费| 在线观看免费高清a一片| 赤兔流量卡办理| 十分钟在线观看高清视频www| 免费黄频网站在线观看国产| 各种免费的搞黄视频| 免费黄频网站在线观看国产| 大片电影免费在线观看免费| 国产成人午夜福利电影在线观看| 午夜免费鲁丝| 国产成人精品在线电影| 免费在线观看视频国产中文字幕亚洲 | 九九爱精品视频在线观看| 人人妻人人澡人人看| 亚洲国产精品国产精品| 777米奇影视久久| 一区福利在线观看| 亚洲av成人精品一二三区| 日日啪夜夜爽| 免费黄频网站在线观看国产| 一边亲一边摸免费视频| 亚洲成人国产一区在线观看 | 欧美日韩av久久| 国产精品 国内视频| 亚洲欧美精品综合一区二区三区| 国产成人精品无人区| 最近2019中文字幕mv第一页| 香蕉国产在线看| 午夜精品国产一区二区电影| 性少妇av在线| 美女中出高潮动态图| √禁漫天堂资源中文www| 亚洲视频免费观看视频| 啦啦啦中文免费视频观看日本| 久久久久久久久久久免费av| 美国免费a级毛片| 免费女性裸体啪啪无遮挡网站| 男人爽女人下面视频在线观看| 男女边摸边吃奶| 国产精品99久久99久久久不卡 | av线在线观看网站| 亚洲一级一片aⅴ在线观看| 美女午夜性视频免费| www.精华液| 亚洲,欧美精品.| 一区二区三区四区激情视频| 精品国产露脸久久av麻豆| av不卡在线播放| 永久免费av网站大全| 国产亚洲av高清不卡| 成人黄色视频免费在线看| 黑人巨大精品欧美一区二区蜜桃| 国产精品久久久av美女十八| 亚洲伊人久久精品综合| 国产精品久久久av美女十八| 国产人伦9x9x在线观看| 国产在线视频一区二区| av电影中文网址| 亚洲色图综合在线观看| 国产一区二区激情短视频 | 黄色毛片三级朝国网站| 中文字幕人妻丝袜制服| 少妇 在线观看| 成人手机av| 九九爱精品视频在线观看| 爱豆传媒免费全集在线观看| 亚洲视频免费观看视频| 久久国产亚洲av麻豆专区| 一级毛片黄色毛片免费观看视频| 美女国产高潮福利片在线看| 欧美精品一区二区免费开放| 久久精品国产a三级三级三级| 国产一区亚洲一区在线观看| 成人午夜精彩视频在线观看| 国产成人av激情在线播放| 国产一区二区激情短视频 | 伊人久久国产一区二区| 精品人妻一区二区三区麻豆| 国产熟女午夜一区二区三区| 国产精品一区二区精品视频观看| 国产男女超爽视频在线观看| xxxhd国产人妻xxx| 欧美变态另类bdsm刘玥| 少妇的丰满在线观看| 伊人久久国产一区二区| 国产欧美日韩综合在线一区二区| 免费看av在线观看网站| 久久精品亚洲av国产电影网| 秋霞在线观看毛片| 日韩一本色道免费dvd| 亚洲一区中文字幕在线| 男女之事视频高清在线观看 | 久久这里只有精品19| 午夜精品国产一区二区电影| 日本午夜av视频| 老司机靠b影院| 亚洲熟女精品中文字幕| 性色av一级| 91aial.com中文字幕在线观看| 国产精品免费视频内射| 日韩一本色道免费dvd| 久热爱精品视频在线9| 亚洲国产欧美一区二区综合| 9热在线视频观看99| 欧美精品一区二区免费开放| 日本91视频免费播放| 欧美精品av麻豆av| 国产精品.久久久| 超碰成人久久| 日本av免费视频播放| 国产在线一区二区三区精| 午夜久久久在线观看| 日韩,欧美,国产一区二区三区| 夜夜骑夜夜射夜夜干| 十八禁人妻一区二区| 国产深夜福利视频在线观看| 日韩av免费高清视频| 久久精品国产亚洲av涩爱| 国产在视频线精品| 大香蕉久久成人网| 日日啪夜夜爽| 久久ye,这里只有精品| 国产精品.久久久| 国产精品久久久久久精品电影小说| 欧美亚洲 丝袜 人妻 在线| 成年av动漫网址| 国产成人欧美在线观看 | 国产 一区精品| 波多野结衣av一区二区av| 欧美另类一区| 女人久久www免费人成看片| 在现免费观看毛片| av免费观看日本| 天天影视国产精品| 日本爱情动作片www.在线观看| 欧美日韩亚洲综合一区二区三区_| 亚洲精品第二区| bbb黄色大片| 日韩一区二区视频免费看| 啦啦啦视频在线资源免费观看| 国产成人精品无人区| 国产精品久久久久久久久免| 亚洲综合色网址| 久久鲁丝午夜福利片| 亚洲四区av| 午夜av观看不卡| 一个人免费看片子| 我的亚洲天堂| 国产成人精品久久二区二区91 | 最新的欧美精品一区二区| 久久人人97超碰香蕉20202| 一级片'在线观看视频| 91精品三级在线观看| 国产精品熟女久久久久浪| 日本色播在线视频| 国产日韩欧美在线精品| 观看美女的网站| 久久精品国产亚洲av高清一级| 美女视频免费永久观看网站| 日韩中文字幕视频在线看片| 欧美日本中文国产一区发布| av女优亚洲男人天堂| 99精品久久久久人妻精品| 日韩视频在线欧美| 免费观看性生交大片5| 人成视频在线观看免费观看| 伊人久久大香线蕉亚洲五| 激情五月婷婷亚洲| 丝袜美腿诱惑在线| 婷婷色av中文字幕| 色综合欧美亚洲国产小说| 在线精品无人区一区二区三| 中文乱码字字幕精品一区二区三区| 亚洲精品,欧美精品| 亚洲欧美色中文字幕在线| 日本爱情动作片www.在线观看| 午夜福利网站1000一区二区三区| 男人舔女人的私密视频| 丰满乱子伦码专区| 大陆偷拍与自拍| 啦啦啦啦在线视频资源| 可以免费在线观看a视频的电影网站 | 亚洲天堂av无毛| 久久精品熟女亚洲av麻豆精品| 亚洲,一卡二卡三卡| 久久免费观看电影| av在线app专区| 国产一区二区 视频在线| 欧美xxⅹ黑人| 男人舔女人的私密视频| 国产高清国产精品国产三级| 国产伦人伦偷精品视频| 日韩一区二区三区影片| 一区在线观看完整版| 韩国精品一区二区三区| 狂野欧美激情性xxxx| 国产av国产精品国产| 美女午夜性视频免费| 国产国语露脸激情在线看| 亚洲图色成人| 99热网站在线观看| 天天躁狠狠躁夜夜躁狠狠躁| 大片电影免费在线观看免费| 考比视频在线观看| 两个人看的免费小视频| 精品少妇黑人巨大在线播放| 王馨瑶露胸无遮挡在线观看| 国产福利在线免费观看视频| 亚洲欧美日韩另类电影网站| 黄片无遮挡物在线观看| 嫩草影视91久久| 天堂俺去俺来也www色官网| 国产精品一国产av| 嫩草影视91久久| 成人三级做爰电影| 国产成人一区二区在线| 精品少妇内射三级| 满18在线观看网站| 最近的中文字幕免费完整| 别揉我奶头~嗯~啊~动态视频 | 国产精品人妻久久久影院| 日韩 欧美 亚洲 中文字幕| 欧美久久黑人一区二区| 久久久国产精品麻豆| 日韩免费高清中文字幕av| 电影成人av| 久久久久久久大尺度免费视频| 99久久精品国产亚洲精品| 成年动漫av网址| 欧美日韩视频高清一区二区三区二| www.av在线官网国产| 国产精品久久久久成人av| 亚洲av国产av综合av卡|