• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      自定義SWRL知識圖譜推理補全插件的實現(xiàn)

      2021-01-11 09:12:56蔣同海唐新余季文飛
      計算機工程與應用 2021年1期
      關鍵詞:推理機原語插件

      陳 光,蔣同海,王 蒙,唐新余,季文飛

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

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

      3.新疆民族語音語言信息處理實驗室,烏魯木齊830011

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

      知識圖譜是由具有屬性的實體通過關系邊進行連接而形成的圖型數(shù)據(jù)結構[1-2],其中圖的節(jié)點代表實體(Individual)或者概念(Concept),而圖的邊代表實體或者概念之間的關系(Property)。知識圖譜的本質(zhì)是一種揭示實體之間關系的語義網(wǎng)絡,是對現(xiàn)實世界的事物及其相互關系進行結構化描述而形成的知識庫[1-2]。在人工智能領域,知識圖譜逐漸成為知識表示、知識鏈接和機器認知的重要手段,在智能搜索、機器翻譯、機器理解、自然語言問答中發(fā)揮著重要作用[2],并在大數(shù)據(jù)風控、推薦系統(tǒng)、金融以及教育等領域應用中得到了廣泛應用[1,3]。

      知識圖譜技術經(jīng)歷了語義網(wǎng)絡、描述邏輯和本體論以及開放鏈接數(shù)據(jù)[4]等發(fā)展階段。當前主流的知識圖譜表達方式[3]是由W3C 制定的基于資源描述框架RDF[5](Resource Description Framework)的網(wǎng)絡本體語言OWL[6](Web Ontology Language)。由于知識圖譜能夠提供高質(zhì)量的結構化知識數(shù)據(jù),因此成為了人工智能應用的基石。但由于大部分的開放知識圖譜,例如Freebase[7]和DBPedia[8]等,都是由人工或者使用半自動的方式構建的,導致這些圖譜中的實體關系通常比較稀疏,大量實體之間的關系沒有被充分的挖掘出來。因此,對知識圖譜中的實體及其關系進行知識補全,從而發(fā)現(xiàn)潛在的知識,豐富和擴大知識圖譜的知識含量是知識圖譜的一個重要研究方向。

      面向知識圖譜的知識推理是指根據(jù)知識圖譜中已有的知識,采用某些方法,推理出新的知識或識別知識圖譜中錯誤知識的技術,是進行知識圖譜補全和知識圖譜去噪的主要手段[9]。知識推理的方法包含了基于規(guī)則的推理、基于分布式表示的推理、基于神經(jīng)網(wǎng)絡的推理以及混合推理[9]。其中基于推理規(guī)則進行知識推理,仍是知識圖譜知識補全的重要手段之一。鑒于推理規(guī)則在知識補全中的重要性,W3C 在本體描述語言OWL[6]的基礎上,定義了專門用于描述本體推理規(guī)則的語言SWRL[10](Semantic Web Rule Language)。

      基于SWRL 進行推理推理表述的一大特色是能夠使用SWRL 的插件原語(Built-ins Atom)語法來拓展SWRL知識推理規(guī)則的表述能力,SWRL官方已經(jīng)定義了一些插件[10](Core Build-ins),這些插件能被主流的推理機如Pellet[11]或者Hermit[12]等支持,從而極大地豐富了SWRL在數(shù)學計算、字符串處理和時間處理等方面的推理規(guī)則表述能力。

      但是由于這些SWRL 插件是官方為通用推理場景設計的,因此不能很好地滿足豐富的知識圖譜應用場景下不斷拓展的具體知識推理規(guī)則的建模表述需求,使得推理插件的自定義性十分局限。特別是與實時信息獲取相關的推理需求,官方定義的SWRL推理插件不能很好的進行支持,甚至無法通過插件取得當前系統(tǒng)的實時工作時間。這為一些需要依賴當前時間判斷系統(tǒng)組件狀態(tài)的推理場景造成了很大的不便。SWRL 官方推理插件的局限性成為了基于推理規(guī)則進行知識圖譜知識補全的瓶頸。探索一種將SWRL 知識推理規(guī)則中應用的插件進行進一步拓展,使其能夠根據(jù)具體的推理需求進行個性化自定義,并實現(xiàn)主流推理機對自定義插件推理支持的方法,是本文的研究動機。

      本文首先對知識圖譜知識表示和建模的相關知識進行論述,介紹本體知識圖譜的建模工具和知識推理工具。然后以完成人類本體中人的年齡知識補全的需求為例,探討了基于SWRL插件原語語法建模包含自定義推理插件原語推理規(guī)則的建模方法,并通過集成經(jīng)過注入自定義插件實現(xiàn)源碼的Pellet 推理機到Protégé 知識圖譜建模工具,實現(xiàn)自定義SWRL知識推理插件的推理支持。最后,結合一個具體的智慧養(yǎng)老老人健康小屋知識圖譜知識推理補全需求,應用基于自定義插件實現(xiàn)的SWRL推理規(guī)則,實現(xiàn)了健康小屋物聯(lián)網(wǎng)系統(tǒng)的實時工作資源組成和資源工作狀態(tài)知識推理。從而論述了基于自定義的SWRL 拓展推理插件進行知識圖譜推理補全的實現(xiàn)方法以及在具體知識圖譜推理補全中的應用實踐。

      1 相關工作

      在應用SWRL 進行本體推理研究方面,文獻[13]將SWRL推理規(guī)則應用到故障樹推理領域,將故障樹中事件之間的邏輯關系轉(zhuǎn)化成SWRL 推理規(guī)則,最后通過Jess 推理引擎進行推理,挖掘出故障樹中的隱含知識。文獻[14]在物品的認知及推理研究中,通過制定SWRL規(guī)則實現(xiàn)了物品功能屬性和操作動作的自動獲取。以上研究在其推理規(guī)則編寫中,只用到了基礎的類表達式原語和屬性表達式原語就完成了建模的需求,并沒有對SWRL的建模能力進行進一步的拓展。文獻[15]側重于應用SWRL 的拓展查詢規(guī)則語言SQWRL 進行知識本體的查詢檢索,并實現(xiàn)了一個知識查詢檢索框架和界面,但并不涉及知識推理補全和內(nèi)容。文獻[16]將SWRL 應用到城市公交線路途經(jīng)站點的知識推理補全中,證明了通過SWRL推理可以對本體中蘊含的知識進行有效的推理,改善和優(yōu)化知識查詢的結果,但是其僅僅是基于SWRL的基礎原語進行SWRL規(guī)則建模,而沒有在其應用場景中應用到一些SWRL 中不存在的特殊推理插件原語。文獻[15]在基于本體的知識庫研究中提到了SWRL內(nèi)置原子(Built-ins)可以通過開放式假設增加新的概念定義提升本體的推理能力并拓展本體知識庫,但是并沒有給出明確的實現(xiàn)新增推理概念以提升SWRL推理能力的具體方法。

      本文在OWL 本體語法規(guī)則和SWRL 規(guī)則的基礎上,在第2章中給出了基于本體推理規(guī)則進行推理需要使用的推理工具以及推理方法。在第3 章中詳細討論了SWRL自定義插件的實現(xiàn)方法,并在第4章中詳細的給出了支持自定義SWRL 插件原語的推理機在本體建模工具中集成方法。從而詳細的描述了在知識圖譜中建模自定義SWRL 插件原語并在推理機中實現(xiàn)推理支持的方法,豐富了SWRL的規(guī)則建模表述和推理能力。

      在應用SWRL 推理規(guī)則進行本體物聯(lián)網(wǎng)推理的研究方面,文獻[17]側重于將不同本體物聯(lián)網(wǎng)模型進行語義協(xié)同,從而為用戶提供滿足其偏好的特殊服務,但沒有提供物聯(lián)網(wǎng)本體模型的建模方法和建模實例。文獻[18]通過實驗驗證了本體物聯(lián)網(wǎng)模型結合推理技術獲得更加豐富的蘊含知識以更好地滿足用戶信息查詢的可能性。但在時間推理和多事件聯(lián)合推理的實現(xiàn)方法上表述的不夠明確,雖然提到使用了Jena的推理機和時間推理鏈的算法,但是對于使用何種技術基于編程還是推理規(guī)則實現(xiàn)此推理鏈沒有明確的說明。

      本文在第5 章應用SWRL 進行知識圖譜補全的實踐中,提出了一個明確的物聯(lián)網(wǎng)系統(tǒng)本體維度體系結構建模的自動建??蚣埽A艘惶子糜谶M行物聯(lián)網(wǎng)系統(tǒng)資源和行為自動分類、組成檢測和故障診斷的包含自定義推理插件的SWRL推理規(guī)則,基于物聯(lián)網(wǎng)系統(tǒng)實時本體模型進行物聯(lián)網(wǎng)系統(tǒng)知識圖譜的自動知識推理補全。從實踐的層面上對所提出的自定義SWRL 知識圖譜推理補全插件實現(xiàn)方法進行了驗證。

      2 預備知識

      本體知識圖譜建模理論經(jīng)歷了一個不斷發(fā)展完善的過程,并且到目前還在持續(xù)發(fā)展的進程中。涉及的內(nèi)容廣泛而豐富,由于篇幅限制,本文中不會將具體的建模理論語法規(guī)則一一列出,但是會給出較為官方的理論規(guī)則介紹文獻引用。

      早在2000 年,萬維網(wǎng)之父蒂姆·伯納斯-李(Tim Berners-Lee)就提出了語義網(wǎng)的概念和層次結構[19]。在URI[20]和XML[21]的基礎上,W3C 于2004 年正式發(fā)布了第一個基礎本體建模語言RDF[5]。

      RDF 確定了以三元組的形式來表示實體資源(Resource)與資源之間的連接關系(Property),成為了語義網(wǎng)和知識圖譜進行知識實體與關系表示的基礎。直到現(xiàn)在,主流知識圖譜和語義本體中的原子知識表示都是以三元組的形式存在的。但RDF的表述能力十分有限,并不具備表達實體的概念類和類屬性的能力,只能算作原始的本體語言。

      為了進一步拓展本體的建模表述能力,在繼承RDF語法的基礎上,W3C 制定了面向語義網(wǎng)的本體語言OWL[6],OWL 拓展了表述基本類(Simple Class)、個體(Individuals)、屬性(Simple Properties)以及屬性特征(Property Characteristics)和屬性約束(Property Restrictions)的建模能力。OWL 還定義了本體映射(Ontology Mapping)的描述類規(guī)則,使得本體建模能夠在已有類和屬性的基礎上,以等價(Equivalence)的形式衍生新的類或?qū)傩浴?/p>

      在RDF的基礎上引入本體(Ontology),極大地豐富了知識圖譜本體建模的表述能力,但OWL 仍然不能表述“IF-THEN”邏輯的知識產(chǎn)生式規(guī)則,僅僅依靠OWL進行知識表示的能力有限。比如:即使已經(jīng)有基本類“人”(Person)和數(shù)據(jù)屬性“有年齡”(hasAge),仍然不能通過本體映射表達“屬豬的人”(PigSignPerson)這樣的概念。為了表述“屬豬的人(在2019 年)是年齡對12 取余為0這樣的概念”,仍需要進一步拓展OWL的建模表述能力。為此,W3C基于RuleML[22]定義了SWRL[10]。

      SWRL[10]通過描述本體建模中的公理(Axioms)使得OWL 描述語言的表述能力進一步得到擴展,一個SWRL 推理規(guī)則分為前驅(qū)(Antecedent)和結論(Consequent)兩部分,兩部分都由若干個無序的原語(Atom)組成。在本體建模中能夠同時創(chuàng)建多個SWRL規(guī)則,規(guī)則之間構成邏輯或的關系,規(guī)則內(nèi)的原語之間構成邏輯與的關系。SWRL原語可以分為以下幾類[23]:類表達式原語(Class Expersion Atom)、屬性表達式原語(Property Expersion Atom)、數(shù)據(jù)范圍限制原語(Data Range Restriction Atom)和SWRL核心插件原語(Core Build-ins Atom)。其中核心插件原語(Core Build-ins Atom)是通過由W3C官方定義的一系列核心拓展插件(Core Builtins)來進一步拓展SWRL規(guī)則的建模表述能力,這些插件在SWRL 的插件原語(Built-ins Atom)中使用,從而豐富了SWRL在數(shù)學計算,字符串處理和時間處理等方面的推理規(guī)則表述能力。

      基于OWL使用SWRL已經(jīng)能夠?qū)χR圖譜本體建模中的很多概念以及推理規(guī)則進行表述,但SWRL仍然存在一定的局限性。比如,雖然SWRL通過時間拓展插件[10](Built-ins for Date,Time and Duration)能夠很好地處理與時間相關的操作,但是卻沒有辦法獲得當前的時間,而在很多知識圖譜建模場景下,都需要獲得當前的時間來判斷一些實體的實時狀態(tài)。為此,需要再進一步拓展SWRL的表述能力,實現(xiàn)一些自定義的SWRL推理拓展插件,從而更好地滿足更廣泛的知識圖譜推理補全應用需求。SWRL從語法上支持用戶自定義插件,使用與Core Build-ins 一樣的插件語法進行拓展,為了加以區(qū)分,將這類用戶自定義原語稱為自定義插件原語(Custrom Build-ins Atom)。自定義插件的使用方式與核心拓展插件(Core Build-ins)的使用方法完全一致,在SWRL插件原語中進行聲明。

      為了更好地說明使用自定義SWRL 插件進行知識圖譜建模和知識推理的方法,以一個簡單的人(Person)類本體知識圖譜中,通過自定義插件補全人的年齡的例子進行說明。鑒于RDF 和OWL 語法規(guī)則不是本文的論述重點,為了提高建模和說明的效率,使用經(jīng)典建模工具Protégé[24]對人類本體知識圖譜進行建模如圖1 所示,Protégé 的菜單功能介紹和詳細使用方法可以參考文獻[25]。

      圖1 使用Protégé可視化建模本體“人”

      在圖1所示的本體知識圖譜模型中,創(chuàng)建了人的概念(Person),并創(chuàng)建了2 個人的個體實例張三和李四。定義了2 個數(shù)據(jù)屬性(Data Property)分別表示“有年齡(hasAge)”和“有生日(hasBirth)”,并規(guī)定其定義域均為Person,值域分別為標準整形和日期數(shù)據(jù)類型。然后為張三和李四分別添加生日,張三的生日為1988-11-27日。希望根據(jù)當前的年份通過知識推理的方式,動態(tài)地計算并補全張三和李四的hasAge屬性。因此基于SWRL的語法,定義了一個補全年齡屬性的SWRL推理規(guī)則如圖1下側所示。

      在這個推理規(guī)則中,首先通過類表達式原語和屬性表達式原語取出一個人的生日?birth。然后將生日裝入一個自定義插件原語calculateAge,此插件原語接收人的生日?birth 并根據(jù)當前的系統(tǒng)時間計算出年齡?age。最后在此SWRL規(guī)則的結論部分,通過屬性表達式原語hasAge將計算得到的年齡賦值給對應的人,從而完成人的年齡屬性的知識補全。

      需要特別注意的是Protégé 5.5版本的SWRLTab頁面目前不能很好地支持自定義插件原語的錄入,這些自定義插件原語是通過修改對應的基礎本體OWL 文件,基于SWRL 的RDF/XML 語法規(guī)則,以手動的方式修改錄入的。Protégé 5.5可以展示出這些插件原語,但無法進行修改和保存。

      另外SWRL只對本體中的推理規(guī)則進行描述,但并不實際執(zhí)行這些規(guī)則的推理,如圖1 的模型中可以看出,個體張三只有hasBirth 而沒有hasAge 屬性,這是由于基于OWL 語法規(guī)則和SWRL 推理規(guī)則的推理執(zhí)行都是由推理機完成的。知識圖譜本體模型的常見推理機包含了Jess[26]、Racer[11]、Fact++[11]、Hermit[12]、Jena[27]和Pellet[11]等等。Protégé 5.5已經(jīng)自帶了Hermit推理機,通過“File”菜單中的“Check For Plug-in”還可以安裝其他的推理機包括Pellet。

      不同的推理機對于OWL語法規(guī)則和SWRL推理規(guī)則的支持各不相同,甚至對于SWRL中不同類型的組成原語的支持也有所差別。各個推理機對于OWL+SWRL的推理支持情況如表1所示。其中“未知”表示沒有找到相關的文獻或者實驗方法,“編碼支持”表示需要修改推理機源代碼并重新編譯打包才能夠支持。另外Jena不能夠直接支持SWRL,但是提供了另外一種形式的推理規(guī)則表述方法JenaRules,并提供了API進行推理規(guī)則的推理支持,規(guī)則的錄入和推理都依賴于編碼,并且不能與Protégé進行集成。

      表1 推理機對本體推理規(guī)則支持情況表

      本文選擇能夠支持用戶自定義插件原語的Pellet推理機進行自定義插件實現(xiàn)。原生的Pellet推理機不能直接支持自定義插件的推理,需要通過修改推理機源代碼的方式,使用Pellet 插件注冊類注入自定義插件才能實現(xiàn)推理支持。

      3 Pellet推理機實現(xiàn)SWRL自定義插件

      為了在Pellet 中集成自定義插件calculate Age,首先需要從GitHub 上(https://github.com/stardogunion/pellet/tree-/maven)下載Pellet 的源代碼,需要注意的是GutHub上提供了很多Pellet的分支源碼下載,一些較新的分支版本例如Pellet-Master不支持在自定義插件中傳入個體實例(Individual),插件編寫的接口API也有所變化和調(diào)整。本文下載的是Pellet2.3.2 版本,工程名稱為“Pellet-Maven”,此版本能夠較好地支持在自定義插件中傳入個體變量作為參數(shù),且運行相對穩(wěn)定。

      Pellet源碼包是一個Maven項目[28],需要使用集成了Maven 功能的IDE 進行導入,本研究使用的是Eclipse Mars+Maven 2.4.3作為實驗集成環(huán)境。Pellet的根項目Pellet-Maven 中包含了若干個子項目,包括Core(Pellet核心推理包,包含了Pellet 的核心推理算法實現(xiàn)),Jena(Pellet 與Jena 集成的API 工程)等等,為了在推理算法中注入我們的插件實現(xiàn)代碼,需要修改Pellet的Core工程。在此工程中新建一個自定義的Java 源碼包(cas.ucas.chengaung.swrl.plugins),并新建一個插件實現(xiàn)類(Calculate Age PlugIn),讓它實現(xiàn)Pellet的Built In和Binding Helper 接口,Eclipse IDE 就會自動生成需要實現(xiàn)的接口函數(shù)。

      BuiltIn 和Binding Helper 接口實現(xiàn)了Pellet 推理機針對SWRL 中各個插件組成原語的推理實現(xiàn)回調(diào)接口。Pellet推理機處理SWRL推理規(guī)則的處理方法如算法1所示。

      算法1 Pellet推理機處理SWRL組成原語算法

      輸入:SWRL規(guī)則,包含各插件原語集合A={…I,J,K…}

      輸出:SWRL推理規(guī)則是否成功執(zhí)行

      1.獲取各原語插件實現(xiàn)類,完成插件是否正確配置的檢測

      Binding Helper helper=create Helper(Built In Atom atom)

      2.獲得各原語需要的已綁定才能執(zhí)行的變量集合

      Collection N=get Prerequisite Vars(Collection bound)

      3.獲得各原語插件可以綁定的變量

      Collection C=get Bindable Vars(Collection bound)

      4.根據(jù)SWRL推理規(guī)則中,各個組成原語Atom的N集合和C集合,生成SWRL原語調(diào)用順序序列。

      設當前已經(jīng)綁定的變量集合為R,對于調(diào)用序列中的任意2個原語I和J,必須滿足:R∪CI?NJ如果能夠滿足,繼續(xù)執(zhí)行步驟5

      如果無論如何調(diào)整調(diào)用順序都不能滿足R∪CI?NJ,:

      返回:不能執(zhí)行(忽略此SWRL的執(zhí)行)

      5.按照調(diào)用序列循環(huán)調(diào)用各個原語實現(xiàn)插件,針對其中的每個插件實現(xiàn):

      (1)通過回調(diào)接口,傳入已經(jīng)綁定的所有變量和變量值:rebind(Variable Binding new Binding)

      (2)通過回調(diào)接口,獲取此插件是否按照傳入變量成功處理其功能業(yè)務:boolean select Next Binding()

      (3)如果插件功能處理成功,通過回調(diào)接口獲取新的綁定變量值:set Current Binding(Variable Binding current Binding)

      6.若所有的插件都成功執(zhí)行并綁定變量,返回:執(zhí)行成功

      對于建模時在SWRL 推理規(guī)則中使用的自定義插件,只需編碼此插件實現(xiàn)Built In 和Binding Helper 的實現(xiàn)類,就可以實現(xiàn)Pellet 推理機的推理加載支持了。此實現(xiàn)類中已經(jīng)包含了算法1 中所列出的關鍵回調(diào)函數(shù)。如算法1 中create Helper 接口用于獲取一個進行數(shù)據(jù)綁定的幫助者實例,由于已經(jīng)實現(xiàn)了Binding Helper接口,因此可以直接返回本類引用this。create Helper回傳了一個atom原語,它代表在建模本體知識圖譜SWRL規(guī)則時,編寫在本體文件中的calculate-Age 插件原語,通過這個原語可以獲得在本體模型中聲明的變量參數(shù),比如?birth和?age。在回調(diào)函數(shù)create Helper中一般完成自定義原語聲明變量的合法性檢查和初始化工作。

      如算法1 中get Bindable Vars 函數(shù)和get Prerequ-isite-Vars函數(shù)分別返回了此自定義插件能夠綁定的變量和需要預先綁定才能執(zhí)行的變量。Pellet會依據(jù)這兩個函數(shù)的返回結果,確定一個SWRL推理規(guī)則中前驅(qū)部分包含的所有原語的安全調(diào)用順序序列。具體的講,如算法1 中第4 步所示,Pellet 推理機根據(jù)get Bindable Vars 確定了一個插件原語能夠綁定的變量,根據(jù)get Prerequisite-Vars確定一個插件原語需要已經(jīng)綁定變量的條件,從而動態(tài)地調(diào)整各個原語的調(diào)用順序。在SWRL 推理規(guī)則被執(zhí)行的時候,這兩個函數(shù)會被反復調(diào)用,如果無論各原語的調(diào)用順序如何調(diào)整都不能使得通過get Bindable-Vars 確定的可綁定變量集合滿足某個插件的get Prerequisite Vars變量要求,則Pellet會給出推理異常警告,忽略此SWRL 規(guī)則的執(zhí)行。在計算年齡自定義插件的例子中get Bindable Vars 返回?age(Age Key),而get Prerequisite Vars返回?birth(Birth DayKey),表達此插件在執(zhí)行前需要保證?birth 變量被綁定,并且此插件在執(zhí)行后能夠綁定?age作為返回結果。

      如算法1中的rebind函數(shù)會在一個具體的推理變量集合被裝填時調(diào)用,比如裝填了張三的生日1988-11-27作為?birth(Birth DayKey)的值。通過此回調(diào)函數(shù)回傳的newBinding參數(shù),可以取到對應的數(shù)值并進行自定義計算。如算法1 中的selectNextBinding 在rebind 函數(shù)之后執(zhí)行,返回一個布爾型的表示自定義計算rebind是否執(zhí)行成功的結果。如果成功,則算法1 中的set Current-Binding 被調(diào)用,用于注入計算的返回結果到綁定變量集合中。

      4 集成自定義Pellet推理機到Protégé

      Pellet 以插件拓展包的形式被Protégé 本體知識圖譜建模工具加載。為了編譯注入了在第3 章中實現(xiàn)的Pellet Core核心推理源代碼的Pellet插件包Pellet-CG,需要首先從GitHub(https://github.com/stardogunion/pellet/tree/master)上下載Pellet的Protégé插件源碼包Protege,導入Eclipse并修改其pom文件的工程依賴為2.3.2如圖2所示。

      圖2 導入Pellet-Protege工程并修改工程依賴

      圖3 新建推理機獲取接口并注入自定義插件

      圖4 修改Protégé插件自述XML文件

      需要注意的是Pellet-Protege 工程編譯上需要依賴pellet-core、pellet-owlapi3、pellet-modularity等工程依賴,這些在Pellet-Maven 的子項目中都提供了工程源代碼,請確保在IDE中打開了它們或者使用Maven的intall命令安裝了這些基礎依賴包,才能順利地編譯Pellet-Protege工程。

      在工程中新建Pellet CG Reasoner Factory 推理機工廠類,將第3 章中編寫好的自定義插件注入到Pellet 的推理機獲取接口中,如圖3所示。

      然后修改Protégé的插件自述文件“plugin.xml”如圖4 所示,仿照Pellet-2.3 的配置注入了自定義插件Pellet-CG,配置其在Protégé 中顯示的名稱,對應實現(xiàn)類配置為上一步中的PelletCGReasoner-Factory的工程全路徑。

      這樣就可以通過導出jar 包的形式,導出經(jīng)過推理插件源碼注入的Pellet 插件jar 包pellet-cg,并通過將此jar 包拷貝到Protégé 安裝目錄下的plugins 文件夾下,完成自定義Pellet-CG推理機的安裝。注意在導出jar包的時候必須選擇使用工程中的META-INF文件,否則將導致Protégé不能正確的加載Pellet推理機。

      最后,重新啟動Protégé本體知識圖譜建模工具,就可以使用經(jīng)過注入了自定義SWRL 插件實現(xiàn)的Pellet-CG 推理機,基于包含自定義插件原語calculateAge 的SWRL推理規(guī)則進行推理,完成人類知識圖譜中人的年齡的知識補全,如圖5所示。

      圖5 使用Pellet-CG推理機完成年齡推理

      5 基于SWRL自定義插件進行知識補全

      通過第3 章和第4 章的討論,已經(jīng)明確了在知識圖譜SWRL推理補全規(guī)則中使用自定義插件,并實現(xiàn)推理支持的方法。由于插件所需要實現(xiàn)的功能是使用者根據(jù)實際知識圖譜的推理補全需求靈活自定義的,因此這種方法適用于任何應用SWRL 推理規(guī)則進行知識圖譜知識補全的應用場景。

      本章將應用自定義插件到一個智慧養(yǎng)老老人健康小屋物聯(lián)網(wǎng)系統(tǒng)的知識圖譜推理補全實踐中,以應用基于自定義插件的SWRL 推理規(guī)則從低級的系統(tǒng)傳感數(shù)據(jù),推理和補全出系統(tǒng)組成和系統(tǒng)工作狀態(tài)以及故障狀態(tài)的高級知識。本章內(nèi)容僅僅作為一個實際應用案例,研究人員可以根據(jù)自己的應用需求場景靈活自定義SWRL 插件,并通過編碼注入的方式實現(xiàn)推理機支持,從而實現(xiàn)對應的知識圖譜推理補全需求。

      在智慧養(yǎng)老老人健康小屋物聯(lián)網(wǎng)系統(tǒng)中,接入了3個溫度傳感器用于感知室內(nèi)溫度,接入了1臺空調(diào)設備進行制冷,接入了1臺暖氣設備用于制熱。所有的設備和傳感器都由云端中控服務統(tǒng)一調(diào)度。系統(tǒng)需要保障室內(nèi)溫度在有效的時間范圍內(nèi)達到老人生活的最適宜溫度26 ℃。此物聯(lián)網(wǎng)系統(tǒng)的基礎本體知識圖譜概念模型如圖6所示。

      如圖6所示,智慧養(yǎng)老老人健康小屋物聯(lián)網(wǎng)系統(tǒng)模型共建模了17 種物聯(lián)網(wǎng)系統(tǒng)概念,包括代表物聯(lián)網(wǎng)系統(tǒng)本身的物聯(lián)網(wǎng)系統(tǒng)類(IOTSystem),代表物聯(lián)網(wǎng)系統(tǒng)所處物理環(huán)境的環(huán)境類(Environment),代表物聯(lián)網(wǎng)系統(tǒng)中各個組件資源(包括傳感器和云端控制服務)的資源類(Resource),以及代表資源所產(chǎn)生的物聯(lián)網(wǎng)系統(tǒng)行為的行為類(Behavior)。各個類別又細分為若干子類,例如資源類(Resrouce)從資源的功能角度上看,又可以分為傳感器資源(Sensor)、中控服務資源(Service)和控制類實體資源(Controller)。從資源的狀態(tài)角度上看,可以把資源細分為處于工作中的資源(WorkingResource)、已經(jīng)發(fā)生故障的資源(FaultResource)和當前不能判定其狀態(tài)的資源(UnknownResource)。

      健康小屋物聯(lián)網(wǎng)系統(tǒng)中的概念類分別衍生出13種不同的對象屬性(Object Propertity)和12 種數(shù)據(jù)屬性(Data Prpoerty)。對象屬性連接到本體模型中的其他個體,數(shù)據(jù)屬性則直接連接到一個具體的值。以資源(Resource)為例,它包含可以連接到一個物聯(lián)網(wǎng)系統(tǒng)的屬性“屬于系統(tǒng)(belongSystem)”,表示這個資源所屬的物聯(lián)網(wǎng)系統(tǒng)。也包含了連接到行為類的“執(zhí)行了行為(execBehavior)”和“接收了行為(takeBehavior)”,分別表示此物聯(lián)網(wǎng)系統(tǒng)資源產(chǎn)生了某種行為,和接收了其他物聯(lián)網(wǎng)系統(tǒng)資源發(fā)送的行為。例如,傳感器產(chǎn)生了溫度感知的行為,空調(diào)控制實體資源接收了來自中控服務的控制命令。資源(Resrouce)同時也包含了一些數(shù)據(jù)屬性,例如,代表唯一標識的“標識地址(identyURI)”以及代表此資源被判定為故障資源的原因“故障原因(faultReason)”等等。

      健康小屋的基礎本體模型中包含了對物聯(lián)網(wǎng)系統(tǒng)所處的物理環(huán)境以及物聯(lián)網(wǎng)系統(tǒng)資源的抽象概念表述,但基礎模型中不包含具體的實例和數(shù)據(jù)。比如,已經(jīng)明確了存在傳感器的概念,描述傳感器應該有哪些數(shù)據(jù)屬性或者對象關聯(lián)屬性,但是這個時候我們還不能確定物聯(lián)網(wǎng)系統(tǒng)中有哪些實際的傳感器實例。

      為了在對物聯(lián)網(wǎng)系統(tǒng)的侵入性最小的前提下完成本體物聯(lián)網(wǎng)系統(tǒng)的自動實例建模,將基于Java語言編寫一個本體建模中間件,本體建模中間件以代理的模式接入到健康小屋物聯(lián)網(wǎng)系統(tǒng)的傳感控制資源與云端中控服務之間,實現(xiàn)感知數(shù)據(jù)代理和控制命令的轉(zhuǎn)發(fā),具體的實現(xiàn)架構如圖7所示。

      圖6 健康小屋物聯(lián)網(wǎng)系統(tǒng)基礎本體模型

      健康小屋物聯(lián)網(wǎng)系統(tǒng)自動建模實現(xiàn)架構的工作原理概括如下:自動建模中間件首先加載基礎本體模型中的概念,并依據(jù)這些模型中的概念和接受到的感知數(shù)據(jù)與控制命令,使用Jena Ontology API[29]自動創(chuàng)建對應的物聯(lián)網(wǎng)系統(tǒng)感知與控制行為實例,并提供一個HTTP服務,用于輸出當前實時的帶有感知行為實例的物聯(lián)網(wǎng)本體基礎事實模型。在實驗環(huán)境中通過運行中間件,一共從老人健康小屋物聯(lián)網(wǎng)系統(tǒng)中采集到3 個溫度感知實體,2個溫度控制實體和1個中控服務實體,并采集到這些實體之間相互發(fā)生和作用的行為(Behavior)實例共計531個。

      物聯(lián)網(wǎng)實時HTTP 輸出服務包含了物聯(lián)網(wǎng)系統(tǒng)的實時資源行為信息,但不包含系統(tǒng)構成,系統(tǒng)組成和各資源工作狀態(tài)判定的高級知識,需要通過SWRL推理規(guī)則來對這些高級知識進行知識圖譜推理補全。首先通過Protégé 工具讀取本體中間件HTTP 輸出服務提供的帶有感知數(shù)據(jù)和控制命令的物聯(lián)網(wǎng)系統(tǒng)最新的行為信息。然后參照第3 章和第4 章中提出的方法,使用集成在Protégé 中經(jīng)過源代碼修改和重新編譯的Pellet-CG(Pellet推理機注入了自定義推理插件的實現(xiàn))進行模型推理,從而最后補全所有能夠被推理的物聯(lián)網(wǎng)系統(tǒng)組成和各資源故障狀態(tài)的高級知識,實現(xiàn)物聯(lián)網(wǎng)系統(tǒng)狀態(tài)的實時運行狀態(tài)監(jiān)控。

      健康小屋物聯(lián)網(wǎng)系統(tǒng)建模了34條知識補全推理規(guī)則如圖8 所示,在這些推理規(guī)則中使用了“durInSec”和“httpTestStatus”這兩種自定義插件原語。推理規(guī)則中包含了用于將物聯(lián)網(wǎng)系統(tǒng)和行為關聯(lián)起來的“行為屬性規(guī)則”;用于完成健康小屋物聯(lián)網(wǎng)系統(tǒng)資源和行為自動分類的“行為分類規(guī)則”與“資源分類規(guī)則”;用于進行健康小屋物聯(lián)網(wǎng)系統(tǒng)資源故障診斷的“資源故障規(guī)則”;基于系統(tǒng)資源工作狀態(tài)的推理結果進行物聯(lián)網(wǎng)系統(tǒng)自動控制的“系統(tǒng)自動控制規(guī)則”;以及基于行為和資源分類與資源故障推理結果進行物聯(lián)網(wǎng)系統(tǒng)資源構成知識補全的系“統(tǒng)資源構成規(guī)則”。限于篇幅,本文不能將這些規(guī)則的功能進行一一論述,但會詳細說明使用到自定義推理插件實現(xiàn)知識圖譜推理補全的推理規(guī)則,以突出自定義SWRL 推理插件在健康小屋知識圖譜推理補全中發(fā)揮的作用。

      圖7 物聯(lián)網(wǎng)系統(tǒng)實例建模實現(xiàn)框架

      圖8 健康小屋物聯(lián)網(wǎng)系統(tǒng)SWRL推理規(guī)則

      如圖8 中的“行為分類規(guī)則”用于對建模中間件捕獲到的物聯(lián)網(wǎng)系統(tǒng)行為進行分類。其中最為重要的就是判定物聯(lián)網(wǎng)系統(tǒng)的實時最新行為,如“行為分類規(guī)則3”所示,這條規(guī)則的核心思想是把發(fā)生在當前時間10 s內(nèi)的規(guī)則歸類為最近發(fā)生的行為(RecentBehavior)。這就涉及到取出當前的系統(tǒng)時間,并與行為發(fā)生的時間做出比較,如果單純的基于SWRL 核心推理插件(Core Built-ins)是無法實現(xiàn)這個功能的,因此使用了一個自定義插件原語“durInSec”插件原語,這個插件原語的功能是根據(jù)系統(tǒng)當前的時間和物聯(lián)網(wǎng)行為的發(fā)生時間(happenedTime)計算從發(fā)生時間到當前時間已經(jīng)經(jīng)過了多少秒鐘,從而進一步通過比較此結果是否小于10 而判斷此物聯(lián)網(wǎng)行為是否為近期行為。

      在健康小屋物聯(lián)網(wǎng)系統(tǒng)中,如果控制資源(空調(diào)或者暖氣)接收了最近行為(RecentBehavior),則根據(jù)最近行為中最新的一條行為的執(zhí)行情況,即可判定其工作狀態(tài):如果控制資源在10 s 內(nèi)接收到控制指令并成功處理,可以充分地判定控制資源處于工作狀態(tài);相反如果接收到控制命令卻處理失敗,則可以判定控制資源發(fā)生故障。但如果控制資源最近10 s 沒有處理過任何行為(控制指令),那么不能簡單地判定其處于故障狀態(tài),因為在云端中控服務故障的情況下,也會導致空調(diào)或者暖氣控制實體不處理任何的控制行為。

      為了進一步判斷控制資源的工作狀態(tài),我們編寫了一個能夠發(fā)送HTTP 請求的自定義原語插件“httpTest-Status ”,如圖8中“資源故障規(guī)則05和06”所示,傳入控制器實體(?c),和需要發(fā)送的命令(Test),即可發(fā)送一條http 請求,獲得對應的返回結果(?code),從而進一步判定控制實體的工作狀態(tài)。這個自定義插件實現(xiàn)的代碼并不困難,因為基于資源分類的推理結果,對于傳入的控制資源實例(?c),已經(jīng)可以明確地取出其服務地址和端口信息。但是如果不能進行插件代碼的自定義編寫而僅僅依靠SWRL 官方定義的插件原語是根本無法實現(xiàn)這個推理補全需求的。

      基于這些包含自定義插件的SWRL推理規(guī)則,可以從整體上完成一個物聯(lián)網(wǎng)系統(tǒng)的工作狀態(tài)的知識補全,如圖9所示,展示了經(jīng)過知識推理補全后老人健康小屋物聯(lián)網(wǎng)系統(tǒng)的當前實時的系統(tǒng)組成和工作狀態(tài)。

      圖9 健康小屋物聯(lián)網(wǎng)系統(tǒng)資源構成知識補全結果

      如圖9所示,可以看出此系統(tǒng)目前接入了一個傳感器,一個中控服務和一個控制器,并且控制器已經(jīng)出現(xiàn)了故障。點擊對應的資源鏈接,如圖9右側藍色下劃線部分所示,可以直接打開對應的物聯(lián)網(wǎng)控制器資源,展示其具體的資源分類和故障原因如圖10所示??梢钥闯鲆粋€控制器資源由于最近沒有正確處理所接收到的控制指令而被推理為故障狀態(tài)。

      圖10 健康小屋物聯(lián)網(wǎng)系統(tǒng)資源故障規(guī)則知識推理結果

      應用包含自定義推理插件的SWRL推理規(guī)則,成功地完成了老人健康小屋中系統(tǒng)資源組成和系統(tǒng)故障診斷的高級知識推理補全,使得老人健康小屋知識圖譜的知識含量進一步豐富,并且基于推理知識補全的結果,為基于老人健康小屋知識圖譜實現(xiàn)系統(tǒng)實時自動控制打下了很好的基礎。

      6 結束語

      知識圖譜是人工智能應用的基石,基于推理規(guī)則進行知識推理是知識圖譜知識補全的重要方法。本文提出了一個在SWRL 知識推理規(guī)則中使用自定義插件原語,并實現(xiàn)Pellet 推理機對這些自定義原語推理支持的實現(xiàn)方法。并對如何基于Pellet中插件的實現(xiàn)接口進行自定義推理插件的代碼實現(xiàn)方式,以及在Protégé 知識建模工具中集成經(jīng)過源代碼修改的推理機的插件集成方法進行了比較完整和詳細的論述。為使用知識推理進行知識圖譜知識補全提供了更加豐富和自由的推理規(guī)則建模表述和推理支持實現(xiàn)能力。在老人健康小屋知識圖譜的建模推理實踐中,充分地證明了基于自定義推理插件的SWRL 推理規(guī)則能夠有效地從低級傳感數(shù)據(jù)中挖掘和補全高級的系統(tǒng)工作知識,實現(xiàn)系統(tǒng)狀態(tài)的自動感知和故障的推理判斷。

      未來的研究工作可以考慮將一些更加復雜的知識推理算法,例如機器學習和深度學習算法的實現(xiàn)為一個集成的自定義知識推理插件,以進一步拓展使用SWRL自定義規(guī)則進行知識補全的表述和推理能力。未來的研究工作也需要研究如何應對在大規(guī)模使用自定義SWRL 推理規(guī)則的應用場景中進行推理規(guī)則的沖突消解,以及推理規(guī)則執(zhí)行的并行優(yōu)化的問題。

      未來的研究工作還需要研究如何將SWRL 自定義推理規(guī)則,應用到更多具體的知識圖譜建模場景之下,從而豐富基于SWRL 自定義推理規(guī)則進行知識圖譜建模和知識圖譜推理補全的實踐應用層面,體現(xiàn)基于知識圖譜和推理技術解決實際應用問題的研究價值。

      猜你喜歡
      推理機原語插件
      測試原語:存儲器故障最小檢測序列的統(tǒng)一特征
      自編插件完善App Inventor與樂高機器人通信
      電子制作(2019年22期)2020-01-14 03:16:34
      密碼消息原語通信協(xié)議介紹及安全分析
      面向?qū)ο蟮膸缀味ɡ硗茖到y(tǒng)的設計與實現(xiàn)
      基于Naive Bayesian算法改進的智能診病系統(tǒng)研究
      MapWindowGIS插件機制及應用
      繼電保護整定計算模塊的設計
      基于Revit MEP的插件制作探討
      基于原語自動生成的安全協(xié)議組合設計策略及應用研究
      “原語效應”在漢英口譯中的運用及局限性研究
      平罗县| 苍南县| 房山区| 靖安县| 安化县| 太保市| 弥勒县| 大余县| 磴口县| 大荔县| 普洱| 赤壁市| 垣曲县| 牟定县| 牙克石市| 西和县| 克拉玛依市| 莒南县| 香港 | 宜黄县| 澄城县| 奈曼旗| 乐昌市| 比如县| 博湖县| 天等县| 探索| 潜山县| 县级市| 唐山市| 吴桥县| 建湖县| 临汾市| 体育| 台湾省| 苏州市| 阜南县| 长宁县| 万源市| 清丰县| 温州市|