基於服務關係的變化檢測服務鏈按需生成方法與流程
2023-05-15 18:49:26 3

本發明屬於遙感與地理信息服務領域,涉及一種基於服務關係的變化檢測服務鏈按需生成方法。
背景技術:
隨著webservice技術以及地理空間信息服務理論與應用的發展,越來越多的個人或組織機構將空間信息數據、處理算法、模型以web服務的方式封裝並發布在網絡上。這使得終端用戶無需安裝桌面端的地理信息處理專業軟體(如arcgis、envi、erdas等),僅需通過web瀏覽器(如googlechrome、firefox、ie等)便可輕鬆地調用期望的服務,並以在線的方式獲取數據處理與分析的結果。地表覆蓋變化檢測作為遙感信息處理的一個基礎研究領域,已經在土地管理、災害應急與評估、地理國情普查等領域發揮著重要的作用,這些擁有不同專業背景的用戶迫切希望能夠在網際網路上調用現有的服務,並實現個性化的處理需求。具體意義和需求可參見如下文獻:
di,l.geobrain-awebservicesbasedgeospatialknowledgebuildingsystem[a],inproceedingsofnasaearthsciencetechnologyconference[c],2004;pp22-24.
龔健雅,李德仁,論地球空間信息服務技術的發展[j].測繪通報,2008,(5),pp5-10.
李德仁,面向任務的遙感信息聚焦服務[m].科學出版社:2010.
陳軍,丁明柱,蔣捷,等.,從離線數據提供到在線地理信息服務[j].地理信息世界,2009,7(2),pp6-9.
郭仁忠,地理信息服務:數據在線到應用在線[j].地理信息世界,2013,(2),pp11-15.
為了簡化應用邏輯,提高服務的復用性,用戶在網際網路上發布的服務往往只具有單一功能(亦可稱之為原子服務),如數據投影服務、格式轉換服務、變化信息提取服務等。而地表覆蓋變化檢測是一個涉及數據預處理、變化強度計算、變化區域發現、變化類型確定等多個處理環節的複雜過程。如果僅調用這些功能單一的處理服務可能無法滿足變化檢測的複雜需求。因此,需將這些獨立的、功能簡單的原子服務按照一定的業務邏輯和規則有效地組織起來形成變化檢測處理服務鏈。參見如下文獻:
李德仁,利用遙感影像進行變化檢測[j].海峽兩岸測繪發展研討會,2003.
lu,d.,mausel,p.,brondizio,e.,etc.,changedetectiontechniques[j].internationaljournalofremotesensing,2004,25(12),pp2365-2401.
周啟鳴,多時相遙感影像變化檢測綜述[j].地理信息世界,2011,09(2),pp28-33.
yue,p.,di,l.,yang,w.,etc.,semantics-basedautomaticcompositionofgeospatialwebservicechains[j].computers&geosciences,2007,33(5),pp649-665.
cruz,s.a.,monteiro,a.m.,santos,r.,automatedgeospatialwebservicescompositionbasedongeodataqualityrequirements[j].computers&geosciences,2012,47pp60-74.
現有的空間信息服務鏈大都以固定編排為主,即由具有先驗知識的專家提前設計好處理服務鏈,並在服務端發布,用戶僅需在網絡上按照一定的規則上傳滿足要求的輸入數據便可調用和執行該服務鏈。例如,karantzalos等(2015)設計研發的一種遙感影像在線分類服務,制定了以影像預處理、影像分類為主的處理服務鏈。固定編排的服務鏈構建模式往往面向特定的應用需求,難以滿足終端用戶對服務鏈靈活、個性化構建的需求。對於地表覆蓋變化檢測而言,單一的處理服務鏈並不能滿足所有的處理需求。如圖1所示,假設用戶有兩組不同的輸入數據,分別表示為i1與i2,從其獲取年份可看出i1組數據獲取自同一季節,i2組數據獲取自不同的季節。針對i1組數據,可利用直接比較法得到變化區域數據和變化類別數據,變化檢測前需對兩期影像作嚴格的輻射糾正和幾何糾正預處理,2010年的globeland30數據可以為影像分類服務提供訓練樣本,其服務鏈可表示為servicechain1={a→b→c→d→e}。針對i2組數據,可採用分類後比較法,基於globeland30數據提取的訓練樣本先對兩期影像進行分類,然後在分類圖的基礎上進行變化比較,變化檢測前無需對兩期影像進行輻射糾正,其服務鏈可表示為servicechain2={b→e→d}。通過這一實例可以看出,由於現有的變化檢測算法都有各自的優缺點和適用範圍,並且對其輸入的遙感影像數據,數據預處理、後處理操作都有特定的要求。因此,將這些處理算法、模型進行服務封裝後,需要根據用戶的需求(包括用戶提供的數據條件以及用戶期望的數據特點),將多個原子服務按照一定的邏輯關聯關係有機地組合起來,動態地生成滿足要求的變化檢測處理服務鏈。參見如下文獻。
friis-christensen,a.,lucchi,r.,lutz,m.,etc.,servicechainingarchitecturesforapplicationsimplementingdistributedgeographicinformationprocessing[j].internationaljournalofgeographicalinformationscience,2009,23(5),pp561-580.
karantzalos,k.,bliziotis,d.,karmas,a.,ascalablegeospatialwebservicefornearreal-time,high-resolutionlandcovermapping[j].2015.
技術實現要素:
為了解決背景技術中存在的上述問題,本發明提供了一種基於服務關係的變化檢測服務鏈按需生成方法,可用於自動化生成滿足用戶需求的服務鏈。
為了實現上述目的,本發明採用如下技術方案:
一種基於服務關係的變化檢測服務鏈按需生成方法,其特徵在於:所述方法包括以下步驟:
1)構建基於服務關係的推理規則;
2)將用戶需求解析為初始數據、期望數據以及期望qos;
3)構建基於步驟1)構建得到的推理規則多類別語義匹配的閉包服務集;
4)動態生成基於後繼服務查找的變化檢測服務鏈。
作為優選,本發明採用的步驟1)的具體實現方式是:
1.1)將變化檢測服務分為數據預處理服務以及變化信息提取服務;
1.2)根據變化信息提取服務制定3條確定變化信息提取服務的推理規則;根據數據預處理服務制定1條確定數據預處理服務的推理規則;
1.3)利用swrl對步驟1.2)所得到的確定變化信息提取服務的推理規則以及確定數據預處理服務的推理規則進行形式化表達。
作為優選,本發明所採用的3條確定變化信息提取服務的推理規則分別是確定變化信息提取起始服務的推理規則(rule_startservice)、確定變化信息提取後繼服務的推理規則(rule_seqservice)以及確定變化信息提取終點服務的推理規則(rule_endservice);
所述確定變化信息提取起始服務的推理規則(rule_startservice)表示如果存在一個服務ws,且該服務的輸入數據與用戶的輸入數據存在等價關係,則該服務ws將會被視為起始服務;
所述確定變化信息提取後繼服務的推理規則(rule_seqservice)表示如果服務ws2與服務ws1存在順序關係,則ws2將會被視為ws1的前驅服務,並加入到服務鏈列表中;
所述確定變化信息提取終點服務的推理規則(rule_endservice)表示如果存在一個服務ws,且該服務的輸出數據與用戶的期望輸出數據存在等價關係,則該服務ws將會被視為終點服務;
所述確定數據預處理服務的推理規則(rule_preservice)是在變化信息提取服務選取完成的基礎上,分別對每一個變化信息提取服務進行判斷,如果輸入數據與服務ws的輸入數據存在類別不等價關係,且存在數據預處理服務prews與輸入數據存在類別等價關係,則prews服務將被選為數據預處理服務。
作為優選,本發明所採用的步驟1.3)的具體實現方式是:
假設變化信息提取服務的表達式為cdrs={cdrsinput,cdrsoutput},數據預處理服務表達式為pres={presinput,presoutput},用戶需求表達為demands={dinput,doutput};
則:
所述確定變化信息提取起始服務的推理規則(rule_startservice)的具體表達式是:
hasinput(?cdrsi,?input)∧hasexpect(?demands,?dinput)∧tmatch(?input,?dinput)=exact∧hasconr(?input,?dinput)→startservice(?servicechain,?cdrsi);
所述確定變化信息提取後繼服務的推理規則(rule_seqservice)的具體表達式是:
hasservice(?cdrsi)∧hasservice(?cdrsj)∧hasseqr(?cdrsi,?cdrsj)=exact→seqservice(?servicechain,?cdrsi);
所述確定變化信息提取終點服務的推理規則(rule_endservice)的具體表達式是:
hasoutput(?cdrsi,?output)∧hasexpect(?demands,?doutput)∧tmatch(?output,?doutput)=exact∧hasconr(?output,?doutput)→endservice(?servicechain,?cdrsi);
所述確定數據預處理服務的推理規則(rule_preservice)的具體表達式是:
hasinput(?cdrsi,?input)∧hasexpect(?demands,?dinput)∧!hasconr(?input,?dinput)∧hasinput(?presj,?input)∧tmatch(?input,?dinput)=exact→preservice(?servicechain,?presj)。
作為優選,本發明所採用的步驟2)中用戶需求是指用戶對所請求目標服務的需求描述,所述用戶需求的具體表達式是:
req={reqinput,reqoutput,reqqos}
其中:
所述reqinput以及reqoutput分別表示用戶的初始數據以及期望數據,所述reqinput以及reqoutput均屬於功能性的需求;
所述reqqos表示對期望服務的質量要求,屬於非功能性的需求;
所述reqinput是用戶所能提供的輸入數據的集合,稱為請求輸入集;所述reqinput的表達式是:
reqinputi={type,characteristic}
其中:
type是用戶所能提供的輸入數據的類別;
characteristic表示數據的屬性特徵;
所述reqoutput是用戶所能提供的期望數據的集合,稱為期望輸出集;所述reqoutput的表達式與reqinput的表達式相同;
所述reqqos是用戶所能提供的qos指標及相應的閾值或範圍所形成的指標集合;所述reqqos的表達是:
reqqosi={name,op,value,unit}
其中:
name是qos指標的名稱;
op表示比較符;
value代表具體的數量值;
unit指的是該指標的單位。
作為優選,本發明所採用的步驟3)中閉包服務集是根據用戶的功能性的需求,以swrl規則為語義匹配依據,將所有與用戶輸入數據以及輸出數據具有關聯關係的服務所構成的集合;
面向閉包服務集構建的服務語義匹配時,分為四個方面:
a)用戶請求輸入集與初始服務輸入之間的語義匹配(inputmatch):判斷reqinput與服務註冊中心中的服務的語義匹配關係是否滿足rule_startservice規則,從而確定初始服務(startservice),若滿足,則確定為初始服務並執行步驟b);若不滿足,則結束匹配;
b)服務間語義匹配(seqmatch):判斷startservice與服務註冊中心中的服務的語義匹配關係是否滿足rule_seqservice規則,從而確定後繼服務(seqservice),若滿足,則確定為後繼服務並執行步驟c);若不滿足,則結束匹配;
c)用戶期望輸出集與後繼服務輸出之間的語義匹配(endmatch):判斷seqservice與服務註冊中心中的服務的語義匹配關係是否滿足rule_endservice規則,從而確定末尾服務(endservice),若滿足,則確定為末尾服務並執行步驟d),若不滿足,則結束匹配;
d)變化檢測處理服務與數據預處理服務之間的語義匹配(prematch):判斷cdrs與服務註冊中心中的服務的語義匹配關係是否滿足rule_preservice規則,從而確定數據預處理服務(preservice),若滿足,則確定為數據預處理服務同時結束匹配;若不滿足,則直接結束匹配;
服務間語義匹配策略是:前驅服務輸出參數與後繼服務輸入參數類別匹配、參數屬性的匹配以及參數之間屬性是否一致的匹配;
匹配的結果是:完全匹配(exact)、前驅包含匹配(presubsume)、後繼包含匹配(seqsubsume)、交叉匹配(plugin)以及不匹配(fail);
其中:
完全匹配(exact)的判別方法是:output=input,需要同時滿足以下條件:a)都有且inputi=outputj;b)都有且outputi=inputj;c)output.consistency=input.consistency;
前驅包含匹配(presubsume)的判別方法是:即:都有且inputi=outputj;
後繼包含匹配(seqsubsume)的判別方法是:即:都有且outputi=inputj;
交叉匹配(plugin)的判別方法是:同時滿足以下條件:a)都有且inputi=outputj;b)使得inputi≠outputj;
其中:
prews是前驅服務;所述prews的輸出參數為output,output={output1,…,outputn};
seqws是後繼服務;所述seqws的輸入參數為input,input={input1,…,inputm};
所述步驟3)的具體實現方式是:在明晰用戶輸入數據、輸出數據以及基於swrl規則的多類別語義匹配的基礎上,遍歷服務註冊中心的所有服務,將具有關聯關係的服務納入閉包服務集。
作為優選,本發明所採用的步驟4)的具體實現方式是:
4.1)查找與用戶輸入匹配的服務inputrws,並將其start屬性設為true;
4.2)根據服務語義匹配類別判別方法,找到與inputrws輸出匹配的服務seqrws,將inputrws的sequence屬性記為seqrws;
4.3)判斷inputrws與seqrws的關係,若為完全匹配關係,則將seqrws存入sequencewslist;若為前驅包含匹配,繼續查找inputrws的其他後繼服務seqrws_else,將查找到的所有後繼服務存入sequencewslist,並將其添加到inputrws的sequence屬性中;若為後繼包含匹配,則查找seqrws的其他前驅服務prerws,將seqrws存入sequencewslist,將prerws存入partprewslist;若為交叉匹配,則同時查找inputrws的其他後繼服務seqrws_else以及seqrws的其他前驅服務prerws,將seqrws_else存入sequencewslist,並將seqrws_else添加到inputrws的sequence屬性中,prerws存入partprewslist;
4.4)將sequencewslist中的服務逐一取出,判斷服務的輸出與用戶輸出請求是否匹配,若該值為true,將該服務的end屬性設為true,從start服務開始順次連接sequence屬性中的服務直到end服務得到服務組合方案;否則轉到步驟4.2)繼續查找sequencewslist中每一個服務的後繼服務。
作為優選,本發明所提供的方法在步驟4)之後還包括:
5)在滿足用戶對變化檢測服務鏈功能性需求的前提下,針對用戶的非功能需求qos,從多條候選服務鏈中選擇最優的服務鏈,實現服務鏈的優選。
作為優選,本發明所採用的步驟5)的具體實現方式是:
採用適用於變化檢測處理流程中服務的qos指標對多條候選服務鏈中進行評價以及優選;所述qos指標包括執行時間(executetime,et)、可靠性(reliability,re)、可用性(availability,av)和處理精度(processingaccuracy,pa);
假設服務是si;所述qos指標的具體評價方式是:
所述et(si)表示一個服務從服務請求者發出請求到服務完成的時間間隔,包括服務的響應時間和服務的執行時間之和,所述et(si)=rt(si)+ct(si);所述et(si)是負向指標;
所述re(si)表示服務被成功運行的概率,服務可靠性與服務軟硬體配置環境,以及服務提供者與消費者之間的網絡連接密切相關;所述re(si)=success(si)/n,其中,success(si)代表服務運行成功的次數,n代表服務被運行的總次數;所述re(si)是正向指標;
所述av(si)表示一個服務被正確調用的概率;所述av(si)=invoke(si)/n,其中,invoke(si)代表服務被正確調用的次數,n代表服務被調用的總次數;所述av(si)是正向指標;
所述pa(si)表示服務處理結果的精度,所述pa(si)是正向指標;
所述qos指標的優選的方式是:對qos指標進行歸一化處理,從而對服務的綜合qos指標進行量化;
所述歸一化的處理過程如下述公式所示:
公式(1)與(2)分別表示正向指標和負向指標的歸一化方式;
其中:
qi'表示調整後的qos指標值;
qi調整前的qos指標值;
與分別表示某一服務中qk指標的最大和最小值;
經過歸一化處理後,qos指標qi的取值區間由原來的調整為[0,1];
服務鏈優化的最終目標是使得服務鏈s的非功能性屬性達到最大化;所述服務鏈s的非功能性屬性達到最大化的具體實現方式是:
首先計算出單個服務si的聚合qos值,再進一步採用加權運算聚合各個組合服務的qos值表示服務鏈的組合qos值,將多條服務鏈按照qos(s)的值進行排序,選擇qos值最高的服務鏈即可作為最優的變化檢測服務鏈;
所述單個服務的聚合qos值以及服務鏈的組合qos值的計算公式分別如式(3)和(4)所示:
其中:
ωi與ωk分別表示單個服務中某一qos指標所佔的權重以及組合服務中某一服務所佔的權重。
本發明的優點是:
本發明提供了一種基於服務關係的變化檢測服務鏈按需生成方法。總體思路如圖6所示,通過服務關係的推理演算,選擇最適宜的一組web服務,生成按需的變化檢測服務鏈。包括基於服務關係的推理規則構建、將用戶需求解析為初始數據和期望數據、基於規則多類別語義匹配的閉包服務集構建、基於後繼服務查找的變化檢測服務鏈動態生成以及變化檢測服務鏈的評價與優選方法等具體5個大步驟。其中,在實際推理過程中,變化檢測領域三個層級的服務關係可以作為推理規則中的前提或條件部分;其中,接口層級的服務關係用於判斷輸入數據間的關係;執行層級的服務關係用於判定用戶輸入數據與起始服務的輸入,以及終點服務的輸出與用戶期望輸出數據之間的關係;操作層級的服務關係用於判定服務鏈中的服務間的前驅和後繼關係;在此基礎上,利用swrl語言對其進行形式化地描述和表達;用戶需求具體是指用戶對所請求目標服務的需求描述,可以用一個三元組對其進行形式化地表達;req={reqinput,reqoutput,reqqos},其中reqinput與reqoutput分別表示用戶的初始數據與期望數據,屬於功能性的需求,reqqos則表示對期望服務的質量要求,屬於非功能性的需求。根據用戶的功能性需求(輸入數據和輸出數據),以swrl規則為語義匹配依據,將所有與用戶輸入、輸出數據具有關聯關係的服務所構成的集合定義為閉包服務集。在服務查找時,僅在閉包服務集中進行搜索,從而達到提高服務組合效率的目的。以用戶的輸入請求為目標驅動,找到與用戶輸入請求完全匹配的處理服務作為起始服務,然後根據服務間的語義匹配判斷服務間的前驅/後繼關係,不斷地尋找後繼服務,直到後繼服務與用戶輸出請求完全匹配為止。在滿足用戶對變化檢測服務鏈(組合服務)功能性需求的前提下,針對用戶的非功能需求(qos),從多條候選服務鏈中選擇最優(使用戶的非功能性屬性最大化)的服務鏈,實現服務鏈的優選。
附圖說明
圖1是按需變化檢測服務鏈生成示例;
圖2是基於後繼服務查找的服務組合示意圖;
圖3是閉包服務集的示意圖;
圖4是遙感處理服務的語義匹配類別;
圖5是基於前驅/後繼關係的服務組合算法的流程圖;
圖6是基於服務關係的變化檢測服務鏈按需生成的總體思路。
具體實施方式
本發明提供了一種基於服務關係的變化檢測服務鏈按需生成方法,總體思路如圖6所示,通過服務關係的推理演算,選擇最適宜的一組web服務,生成按需的變化檢測服務鏈,具體而言本發明所提供的基於服務關係的變化檢測服務鏈按需生成方法包括如下步驟:
a、構建基於服務關係的推理規則,並利用swrl(semanticwebrulelanguage,是由以語義的方式呈現規則的一種語言)語言對其進行形式化地描述和表達。在實際推理過程中,變化檢測領域三個層級的服務關係可以作為推理規則中的前提或條件部分。其中,接口層級的服務關係用於判斷輸入數據間的關係;執行層級的服務關係用於判定用戶輸入數據與起始服務的輸入,以及終點服務的輸出與用戶期望輸出數據之間的關係;操作層級的服務關係用於判定服務鏈中的服務間的前驅和後繼關係。
整個變化檢測處理主要包括兩大類處理過程:數據預處理和變化信息提取。其中數據預處理是將原始影像數據處理為滿足變化信息提取算法要求的一類算法,通常並不改變所處理數據的類型,僅僅改變其屬性,例如,輻射糾正、幾何糾正、投影轉換、格式轉換等。而變化信息提取算法是變化檢測處理的核心環節,是通過原始影像數據提取變化區域或變化類型的處理算法,決定了變化檢測處理的精度和效率,例如,變化檢測強度計算、變化閾值選取、變化類型確定等。將變化檢測相關的處理算法封裝為web服務後,變化檢測處理服務鏈生成的過程實際上變為確定數據預處理服務(preprocessingservice,pres)和變化信息提取服務(changedetectionrelevantservice,cdrs)的過程。因此,本文首先將變化檢測處理服務分為數據預處理服務以及變化信息提取服務,在此基礎上制定了3條確定變化信息提取服務的推理規則以及1條確定數據預處理服務的推理規則,這些規則的構建過程和方式如下:
(1)確定變化信息提取起始服務的推理規則(rule_startservice):該規則表示如果存在一個服務ws,且該服務的輸入數據與用戶的輸入數據存在等價關係,則該服務ws將會被視為起始服務。
(2)確定變化信息提取後繼服務的推理規則(rule_seqservice):該規則表示如果服務ws2與服務ws1存在順序關係,則ws2將會被視為ws1的前驅服務,並加入到服務鏈列表中。
(3)確定變化信息提取終點服務的推理規則(rule_endservice):該規則表示如果存在一個服務ws,且該服務的輸出數據與用戶的期望輸出數據存在等價關係,則該服務ws將會被視為終點服務。
(4)確定數據預處理服務的推理規則(rule_preservice):該規則是在變化信息提取服務選取完成的基礎上,分別對每一個變化信息提取服務進行判斷,如果輸入數據(包括用戶的輸入數據和前驅服務的輸出數據)與服務ws的輸入數據存在類別不等價關係,且存在數據預處理服務prews與輸入數據存在類別等價關係,則prews服務將被選為數據預處理服務。
假設變化信息提取服務表達式為cdrs={cdrsinput,cdrsoutput},數據預處理服務表達式為pres={presinput,presoutput},用戶需求表達為demands={dinput,doutput}。遵循上述表達規範,構建了如下的4種推理規則(rule_startservice、rule_seqservice、rule_endservice、rule_preservice)。
規則1:hasinput(?cdrsi,?input)∧hasexpect(?demands,?dinput)∧tmatch(?input,?dinput)=exact∧hasconr(?input,?dinput)→startservice(?servicechain,?cdrsi)
規則2:hasservice(?cdrsi)∧hasservice(?cdrsj)∧hasseqr(?cdrsi,?cdrsj)=exact→seqservice(?servicechain,?cdrsi)
規則3:hasoutput(?cdrsi,?output)∧hasexpect(?demands,?doutput)∧tmatch(?output,?doutput)=exact∧hasconr(?output,?doutput)→endservice(?servicechain,?cdrsi)
規則4:hasinput(?cdrsi,?input)∧hasexpect(?demands,?dinput)∧!hasconr(?input,?dinput)∧hasinput(?presj,?input)∧tmatch(?input,?dinput)=exact→preservice(?servicechain,?presj)
b、將用戶需求解析為初始數據、期望數據和期望qos。用戶需求具體是指用戶對所請求目標服務的需求描述,可以用一個三元組對其進行形式化地表達。req={reqinput,reqoutput,reqqos},其中reqinput與reqoutput分別表示用戶的初始數據與期望數據,屬於功能性的需求,reqqos則表示對期望服務的質量要求,屬於非功能性的需求。
reqinput:用戶所能提供的輸入數據的集合,稱為請求輸入集。reqinput可被進一步的表達為一個二元組:reqinputi={type,characteristic},其中type指的是數據類別,例如,遙感影像數據、地表覆蓋數據、樣本數據等。characteristic表示數據的屬性特徵,如遙感影像數據具有空間解析度、輻射解析度、獲取時間、空間範圍等特徵。
reqoutput:用戶所能提供的期望數據的集合,稱為期望輸出集。其細化表達方式與reqinput相同。
reqqos:用戶所能提供的qos指標及相應的閾值或範圍所形成的指標集合。每一個指標可以用一個四元組進行細化表達:reqqosi={name,op,value,unit},其中,name指的是qos指標的名稱,op表示比較符,value代表具體的數量值,unit指的是該指標的單位。例如,用戶期望得到處理時間小於1分鐘的處理服務鏈,且總體精度大於80%的變化區域數據,利用本文方法可以將其表達為reqqos1={「處理時間」,「小於」,「1」,「分鐘」},reqqos2={「總體精度」,「大於」,「80」,「%」}。
c、構建閉包服務集。基於服務匹配的服務發現是服務組合(即服務鏈生成)的關鍵步驟。傳統的服務組合方法在服務匹配時,通常將匹配目標範圍設為整個服務註冊中心。對服務數量巨大的註冊中心(由於絕大多數的服務可能與用戶的請求並無關係)進行遍歷搜索容易出現搜索時間過長甚至「組合爆炸」的情形,造成服務組合的效率低下。為了解決這一問題,本文借鑑閉包的思想,提出了閉包服務集(closureservicesets)的構建策略,以縮小服務組合時服務的匹配與查找空間。圖3是一個閉包服務集的具體示例,其基本思想是根據用戶的功能性需求(輸入數據和輸出數據),以swrl規則為語義匹配依據,將所有與用戶輸入、輸出數據具有關聯關係的服務所構成的集合定義為閉包服務集。在服務查找時,僅在閉包服務集中進行搜索,從而達到提高服務組合效率的目的。
面向閉包服務集構建的服務語義匹配主要分為四個方面:(1)用戶請求輸入集與初始服務輸入之間的語義匹配(inputmatch):判斷reqinput與服務註冊中心中的服務的語義匹配關係是否滿足rule_startservice規則,從而確定初始服務(startservice)。(2)服務間語義匹配(seqmatch):判斷startservice與服務註冊中心中的服務的語義匹配關係是否滿足rule_seqservice規則,從而確定後繼服務(seqservice);(3)用戶期望輸出集與後繼服務輸出之間的語義匹配(endmatch):判斷seqservice與服務註冊中心中的服務的語義匹配關係是否滿足rule_endservice規則,從而確定末尾服務(endservice);(4)變化檢測處理服務與數據預處理服務之間的語義匹配(prematch):判斷cdrs與服務註冊中心中的服務的語義匹配關係是否滿足rule_preservice規則,從而確定數據預處理服務(preservice)。其中,服務間語義匹配的種類相對複雜,是構建閉包服務集的關鍵,即如何根據已知的服務快速找到與之合作的後繼服務。本小節主要探討了服務間語義匹配對於構建閉包服務集的作用。
本文在前文中提出的服務間的順序關係只考慮了服務間完全匹配的情形,在實際的變化檢測服務組合中,服務間的語義匹配關係可能更複雜。就本質而言,服務間語義匹配是由前驅服務的輸出參數與後繼服務的輸入參數間的語義匹配所決定的。因此,借鑑文獻定義的概念之間的匹配等級,本文將面向變化檢測處理服務組合的服務語義匹配(即服務間的順序關係)擴展為5個類別:完全匹配(exact)、前驅包含匹配(presubsume)、後繼包含匹配(seqsubsume)、交叉匹配(plugin)、不匹配(fail)。以圖4為例進行說明,服務a、b、c、d、e、f分別代表變化強度計算服務、變化閾值選取服務、影像掩膜服務、變化區域的監督分類服務、樣本選取服務、不變區域的非監督分類服務,在該例中a與b為完全匹配,c與f為前驅包含匹配,e與d為後繼包含匹配,c與d為交叉匹配。
通過變化檢測領域特徵的分析不難看出,傳統的服務語義匹配方法並不完全適用於變化檢測處理服務的語義匹配,具體體現在以下兩個方面。首先遙感處理服務間語義匹配不僅需要參數的類別匹配,還需要依據參數的屬性是否匹配,例如,某一輻射糾正服務的輸出參數為2個影像數據,某一變化檢測服務的輸入數據為2個影像數據,單從參數的語義類別來看,兩者都為影像數據,該輻射糾正服務應與變化檢測服務應為完全匹配,但該輻射糾正服務的影像數據空間解析度為30m,而該變化檢測服務要求的影像數據空間解析度為250m,兩服務的語義匹配類別並不是完全匹配。再者,對於擁有多個輸入輸出參數的遙感處理服務而言,僅根據參數的語義類別、類別屬性並不能準確判斷出服務之間的匹配關係,往往還需要根據參數屬性關係的一致性是否匹配,例如,某一輻射糾正服務的輸出參數為2個影像數據,其空間解析度為30m,某一變化檢測的輸入數據為2個影像數據,空間解析度也為30m,但由於該輻射糾正服務的輸出數據的空間範圍不一致,而變化檢測服務要求輸入數據的空間範圍必須一致,因此,兩服務的語義匹配類別也不是完全匹配。
結合變化檢測領域處理服務的特殊性,本文採取的服務間語義匹配策略是對三個方面語義匹配結果的綜合:前驅服務輸出參數與後繼服務輸入參數類別匹配、參數屬性的匹配以及參數之間屬性是否一致的匹配。假設前驅服務為prews,其輸出參數為output,output={output1,…,outputn};後繼服務為seqws,其輸入參數為input,input={input1,…,inputm},5種類別的判別方法如表1所示。其中,inputi=outputj需要同時滿足:1、inputi.type=outputj.type;2、inputi.property=outputj.property。
表1遙感處理服務匹配類別的判別
在明晰用戶輸入數據、輸出數據以及基於swrl規則的多類別語義匹配的基礎上,遍歷服務註冊中心的所有服務,將具有關聯關係的服務納入閉包服務集。
d、基於後繼服務查找的變化檢測服務鏈動態生成。以用戶的輸入請求為目標驅動,找到與用戶輸入請求完全匹配的處理服務作為起始服務,然後根據服務間的語義匹配判斷服務間的前驅/後繼關係,不斷地尋找後繼服務,直到後繼服務與用戶輸出請求完全匹配為止,基於後繼服務查找的服務組合示意圖如圖5所示。
為了便於快捷地查找後繼服務,本文設計了一個hash表sequencewslist,用於存放每一次查找到的後繼服務。另外,針對服務間後繼匹配的情形,設計一個用於存放這些缺失信息的hash表partprewslist。同時,為了便於最後服務路徑的查找,給每一個服務增加start、sequence、end屬性,分別用於記錄該服務是否為初始服務、該服務的後繼服務以及該服務是否為結尾服務,具體步驟如下:
步驟1:查找與用戶輸入匹配的服務inputrws,並將其start屬性設為true;
步驟2:根據服務語義匹配類別判別方法,找到與inputrws輸出匹配的服務seqrws,將inputrws的sequence屬性記為seqrws;
步驟3:判斷inputrws與seqrws的關係,若為完全匹配關係,則將seqrws存入sequencewslist;若為前驅包含匹配,繼續查找inputrws的其他後繼服務seqrws_else,將查找到的所有後繼服務存入sequencewslist,並將其添加到inputrws的sequence屬性中;若為後繼包含匹配,則查找seqrws的其他前驅服務prerws,將seqrws存入sequencewslist,將prerws存入partprewslist;若為交叉匹配,則同時查找inputrws的其他後繼服務seqrws_else以及seqrws的其他前驅服務prerws,將seqrws_else存入sequencewslist,並將seqrws_else添加到inputrws的sequence屬性中,prerws存入partprewslist;
步驟4:將sequencewslist中的服務逐一取出,判斷服務的輸出與用戶輸出請求是否匹配,若該值為true,將該服務的end屬性設為true,從start服務開始順次連接sequence屬性中的服務直到end服務得到服務組合方案;否則轉到步驟2,繼續查找sequencewslist中每一個服務的後繼服務。基於後繼服務查找的服務組合算法的流程圖如圖2所示。
值得說明的是,步驟1和步驟2可能出現多個滿足要求的服務,分別按照該算法的流程查找其對應的後繼服務,則可得到多條滿足用戶需求的服務組合路徑。假設有n個可用服務,本文算法的時間複雜度為
e、在滿足用戶對變化檢測服務鏈(組合服務)功能性需求的前提下,針對用戶的非功能需求(qos),從多條候選服務鏈中選擇最優(使用戶的非功能性屬性最大化)的服務鏈,實現服務鏈的優選。
設計了適用於變化檢測處理流程中服務的qos指標,包括執行時間(executetime,et)、可靠性(reliability,re)、可用性(availability,av)和處理精度(processingaccuracy,pa)。假設服務用si表示,這4項指標相應的計算和評價方法如下:
et(si):表示一個服務從服務請求者發出請求到服務完成的時間間隔,包括服務的響應時間和服務的執行時間之和,可表示為:et(si)=rt(si)+ct(si)。
re(si):表示服務被成功運行的概率,服務可靠性與服務軟硬體配置環境,以及服務提供者與消費者之間的網絡連接密切相關。可表示為:re(si)=success(si)/n,其中,success(si)代表服務運行成功的次數,n代表服務被運行的總次數。
av(si):表示一個服務被正確調用的概率。由於服務通常被調用多次,因此可用性可表示為:av(si)=invoke(si)/n,其中,invoke(si)代表服務被正確調用的次數,n代表服務被調用的總次數。
pa(si):表示服務處理結果的精度,如數據預處理服務的輻射糾正精度、變化信息提取服務的總體精度等,一般由服務發布者進行標記。
由於qos指標同時包含了正向指標(qos指標值越高越好,如精度、可用性等)和負向指標(qos指標值越小越好,如執行時間),以及各指標的量化單位、取值範圍等屬性的不一致性,導致了不同的qos指標之間並不具備直接的可比性。因此,需要對qos指標進行歸一化處理,從而對服務的綜合qos指標進行量化。本文採用「最大-最小規格化方法」來調整qos指標,其歸一化的處理過程如下述公式所示:
公式(1)與(2)分別表示正向指標和負向指標的歸一化方式,其中,qi'表示調整後的qos指標值,qi調整前的qos指標值,與分別表示某一服務中qk指標的最大和最小值。經過歸一化處理後,qos指標qi的取值區間由原來的調整為[0,1]。服務鏈優化的最終目標是使得服務鏈s的非功能性屬性達到最大化,為此,本文首先計算出單個服務si的聚合qos值,再進一步採用加權運算聚合各個組合服務的qos值表示服務鏈的組合qos值,單個服務的聚合qos值以及服務鏈的組合qos值的計算公式分別如式(3)和(4)所示。其中,ωi與ωk分別表示單個服務中某一qos指標所佔的權重以及組合服務中某一服務所佔的權重。將多條服務鏈按照qos(s)的值進行排序,選擇qos值最高的服務鏈即可作為最優的變化檢測服務鏈。