杜勝浩,
(鄭州大學 信息工程學院,鄭州 450001)
隨著網絡技術的不斷發展,人們提出Web服務的概念,通過定義和建立一個Web服務界面就可以訪問和共享計算資源或信息資源。Web服務可以使用標準協議來組合、發布和定位,以構建在一系列平臺上運行的應用程序[1]。語義Web 服務依據本體概念對Web 服務進行語義標注,使服務信息能夠被計算機理解并進行交互,從而實現服務的自動發現和處理。隨著語義Web服務的增加,如何從規模不斷擴大的服務注冊庫中發現所需服務是一個亟需解決的問題。文獻[1]使用UML建模和術語擴展檢索Web服務。文獻[2]通過制定一個新的Web服務清晰度量表增強服務發現過程。文獻[3]提出一種上下文服務發現方法,根據用戶端綁定上下文來找出所需的服務。文獻[4]基于本體的概念組之間的相關性度量模型分別評價服務請求與服務描述的語義匹配度,從而進行語義Web服務的發現。文獻[5]對發布的空間信息服務進行聚類,計算服務請求與各服務簇中心的相似度,確定最優匹配簇為服務發現結果。文獻[6]采用空間向量模型表示語義Web服務,對服務進行聚類,并基于帶權二分圖思想對服務進行匹配。從本質上講,Web服務是一種輕量級的、松耦合的、與平臺和語言無關的構件[7]。因此,對于服務注冊庫的管理與維護可以利用構件庫技術來實現。大部分構件檢索方法都使用刻面分類方法對構件進行描述和分類,如文獻[8]采用刻面分類法對Web應用構件進行描述和檢索。一方面,現在的Web服務發現方法大都通過服務質量 (Quality of Service,QoS)和功能來選擇服務。即使具有相同輸入和輸出參數的Web服務的內部執行過程也會有很大不同,因此導致Web服務發現的準確率較低。另一方面,現有服務發現方法未將本體語言描述和服務聚類思想同時引入其設計思想中。本體語言使語義Web服務的描述更清晰,而且降低了計算復雜性、技術復雜性和概念復雜性。通過聚類形成服務簇,可以減少服務比較次數,優化服務發現過程。服務注冊庫中的很多服務能夠完成相似的功能,具有比較近似的概念和語義信息,因此,可以對服務進行聚類。
本文使用Web服務本體語言(Ontology Web Language for Service,OWL-S)描述的語義Web 服務信息,基于本體庫將語義Web服務轉化為刻面描述樹,用于實現服務聚類的預處理。
OWL-S是構建于Web本體語言(Web Ontology Language,OWL)之上用于描述Web服務的標記語言。OWL-S的Web服務描述模型可以描述語義Web服務,它對服務的基本描述包括服務的基本信息、功能信息和屬性等。Web服務的管理與維護可以使用構件庫技術實現,而對構件的描述和分類通常由刻面來完成。每個刻面都由一組基本的術語構成,這組術語稱為術語空間[9]。因此,語義Web服務中也可由一個刻面集合對其進行描述。
定義1用一個三元組WS={WS_Name,WS_Description,WS_Facets}表示語義Web服務,其中,WS_Name是語義Web服務的標識名,即服務的名稱,WS_Description是語義Web服務使用文本描述的基本信息,WS_Facets表示語義Web服務的刻面集。
定義2語義Web服務的刻面集由一組刻面術語的集合組成,每個刻面術語都用于進行本體標注。該服務集合中定義了具體的語義Web服務刻面,包括QoS刻面、功能刻面、參數刻面、應用刻面等。
使用本體標注的各個語義Web服務刻面包含不同的屬性信息:
1)QoS刻面,即服務質量刻面,是用戶在使用語義Web服務時涉及的體驗信息,即用戶對語義Web服務的可靠性、安全性、可用性等非功能性屬性的期望信息。自QoS被引入到Web服務發現領域后,為Web服務發現研究人員提供了新的研究方向[10-11]。
2)功能刻面,包括語義Web服務的接口信息和調用方式等。
3)參數刻面,包括語義Web服務的輸入參數集和輸出參數集,分別由一組參數組成,每個參數都用于進行本體標注。
4)應用刻面,是在應用語義Web服務時,服務運行前置條件描述的環境狀況和服務運行對相關資源對象產生的效果等。
提取語義Web服務的語義信息并進行本體標注,形成的語義Web服務刻面集包括4個主刻面和若干子刻面,可用圖1所示的刻面樹表示,根節點用一個虛擬節點表示。

圖1 語義Web服務刻面集形成的刻面樹
傳統描述服務的方式通過一個四元組{Name,Description,Input,Output}來表示,其中,Name是服務的名稱,Description表示Web服務的基本描述,Input和Output分別表示服務的輸入參數和輸出參數的集合。但是,這種表示方式對于具有相同輸入和輸出的服務不能很好地進行區分。本文采用多刻面和本體對Web服務進行語義描述,增加了QoS刻面和應用刻面的描述,加強了Web服務的語義約束,從而提高了Web服務發現的準確率。
本文提出的語義Web服務發現框架如圖2所示,其中,本體庫為共享本體庫,本文中所有語義Web服務刻面描述都是基于此本體庫。在服務提供者提供的語義Web服務經過服務分析器處理并注冊到服務注冊庫后,通過服務注冊庫中的服務聚類器對語義Web服務進行聚類,能夠得到多個服務聚類簇,減少服務匹配器在進行服務匹配時的比較次數,從而提高服務發現的效率。

圖2 語義Web服務發現框架
該語義Web服務發現框架主要包含3個組件:
1)服務分析器。根據服務提供者提供的語義Web服務的描述,提取語義信息并進行本體標注,進而將語義Web服務刻面集用一棵刻面樹表示,為語義Web服務在服務注冊庫中的聚類提供數據。
2)服務聚類器。語義Web服務經過服務分析器處理后,基于刻面對語義Web服務進行本體語義相似度的聚類,屬于同一類別的語義Web服務聚集到一個服務簇中,在每一個服務簇中都選取一個語義Web服務作為服務簇中心,這些服務簇存放在服務注冊庫中。
3)服務匹配器。對服務請求者的服務請求信息進行分析并依據本體庫進行本體標注,依次計算請求服務與服務注冊庫中每個服務簇中心的相似度,取相似度最大的服務簇作為服務發現集合,然后計算請求服務與集合中的語義Web服務的相似度,將滿足閾值要求的服務集合輸出給服務請求者。
隨著Web服務的更新和擴展,語義Web服務的功能性和非功能性屬性可能發生改變,對應的刻面值也要動態地更新。在服務提供者提供Web服務時,如果發現Web服務刻面集中沒有對某一刻面的刻畫,則服務提供者可以在已有Web服務刻面集的基礎上定義新的刻面和對應的屬性值,并添加到語義Web服務刻面集中。如果語義Web服務刻面集中某一刻面的描述錯誤或冗余,服務提供者可以將其修改或刪除。以上語義Web服務刻面更新必須滿足刻面的描述規約,否則更新無效。
以QoS主刻面下子刻面的更新為例,在刻面描述中已有服務的可靠性、安全性和可用性,服務提供者發現沒有對服務響應時間的刻畫,于是服務提供者可根據刻面描述規約添加服務響應時間刻面到QoS主刻面下,擴展語義Web服務刻面集,同時更新刻面樹,實現刻面的動態更新。
本體作為Web核心支撐技術之一[12],它是一個概念框架,用來對領域知識概念進行抽象和描述,形成領域術語,然后對概念進行標識,通過定義概念以及概念與概念之間的關系來描述語義信息[13-14]。本體可表示成一棵有向樹,例如Food本體有向樹的部分信息如圖3所示,樹中每個節點表示一個概念。

圖3 Food本體有向樹部分信息示例
本文使用文獻[15]中的定義來計算本體距離,設有2個概念C1和C2,則這2個概念的本體距離Dis(C1,C2)為本體有向樹中連接它們的最短路徑的邊數。例如在圖3中,概念海鮮(Seafood)和概念果汁(Juice)之間的本體距離Dis(Seafood,Juice)=4。于是,2個本體概念的語義相似度可基于這種本體距離來計算,計算公式為:
其中,Sim(C1,C2)表示概念C1和概念C2的語義相似度,Dismax表示本體有向樹中所有概念的本體距離最大值,Dismin表示本體有向樹中所有概念的本體距離最小值,Dis(C1,C2)表示概念C1和概念C2的本體距離。
從使用OWL-S描述的語義Web服務中提取語義信息并進行本體標注,將其表示為一棵語義Web服務刻面樹,完成語義Web服務聚類的預處理。將語義Web服務按照子刻面的描述聚集到所屬刻面分類下,形成子刻面服務集合,然后聚類得到服務簇,同一個子刻面下的語義Web服務的相似度較大,不同子刻面下的語義Web服務相似度較小。因此,當服務請求者在查找所需服務時,在某種程度上縮小了服務請求者的查找范圍,提高了服務發現的效率。本文采用類似于K近鄰算法的聚類方法,使用本體概念語義相似度作為聚類標準,依據式(2)計算2個語義Web服務的語義相似度,相似度較大的服務聚成一類。式(2)的形式如下:
子刻面具體聚類步驟如下:
步驟1初始化聚類中心。對服務注冊庫中已表示成服務刻面樹的語義Web服務按照刻面描述進行分類,從所要聚類的子刻面下的語義Web服務中選取k個類作為初始聚類中心,在選擇聚類中心時盡量使得k個作為中心的語義Web服務的相似度很小,得到初始聚類中心c={c1,c2,…,ck}。
步驟2根據式(1)和式(2),分別計算當前子刻面下其他語義Web服務與這k個作為類中心的語義Web服務的相似度,并歸類于與其相似度最大的那個類。

步驟4判斷新得到的聚類中心c′與原聚類中心c是否完全相同,若完全相同則結束聚類,跳到步驟7;否則判斷count的值,若count的值大于1 000,則跳到步驟7,否則繼續向下執行。
步驟5將所有語義Web服務與其所在類的聚類中心的相似度累加到一起,記為SumSim。多次實驗結果表明,相似度總和SumSim越大,對語義Web服務的聚類效果越好。
步驟6根據新得到的聚類中心按照步驟2中的聚類方式進行聚類,得到k個新的類。按照步驟5的方式計算相似度總和,得到sumSim′。若sumSim小于sumSim′,則表示新得到的k個類的聚類效果優于之前的類,將聚類中心c′賦予c,讓c保存擁有最好聚類效果的聚類中心,然后跳轉到步驟3;否則,直接按照步驟3的方式得到新的聚類中心c′={c1′,c2′,…,ck′},并令count=count+1,跳轉到步驟4。
步驟7聚類完成,結束聚類算法。
在服務注冊庫中對每個子刻面下的語義Web服務都按照上述聚類算法進行聚類,從而將相似度較高的語義Web服務聚集到一個類中,形成相應的服務簇。最終聚類的個數,即服務簇的個數取決于子刻面的個數和聚類時選取的k值的大小。本文的服務發現方法在對語義Web 服務進行聚類時,需要提前給出聚類的個數(即k的值),而且聚類的個數直接影響聚類結果,因此,要經過多次不同聚類個數的實驗才能確定較好的聚類個數。
基于領域本體知識對語義Web服務進行多刻面表示,多角度描述語義Web服務。在服務注冊庫中對語義Web服務進行基于語義相似度的聚類,使得服務發現方法具備一定的模糊匹配功能。另外,服務請求者對要請求的語義Web服務的描述信息可能不完整,沒有包含所有語義Web服務刻面集中的刻面描述信息(即本體概念),服務匹配器為服務請求者沒有輸入的信息設置默認值,保證服務發現方法具備一定的張弛能力,使Web服務發現結果具有良好的查準率與查全率。


從服務注冊庫中的多個服務簇的簇中心中選取與請求服務相似度最大的簇中心,記錄該服務簇中的所有語義Web服務。根據刻面劃分原理,一個主刻面下不同子刻面包含的語義Web服務不同,與服務請求擁有較高相似度的簇中心所在的服務簇中的所有語義Web服務都可作為候選服務發現結果,于是對同一主刻面不同子刻面下被記錄的語義Web服務集合求并集。由于一個語義Web服務含有多個刻面描述,同一個語義Web服務會出現在不同主刻面下,因此再對不同主刻面下滿足條件的所有語義Web服務求交集,使得到的服務發現結果中的語義Web服務不重復。計算所得語義Web服務集合中的每一個服務與服務請求的相似度,滿足要求的語義Web服務與服務請求的相似度記為S1(0≤S1≤1)。上述語義Web服務集合中的服務在不同主刻面下都有其與所屬服務簇的簇中心的相似度。為了體現聚類和簇中心在計算服務請求與服務發現結果中的語義Web服務的最終相似度所起到的作用,將語義Web服務在不同主刻面下的相似度求和取平均數,記為S2(0≤S2≤1),于是可以得到服務請求與上述語義Web服務集中服務的最終相似度,記為S(0≤S≤1),令S=(S1+S2)/2。最后,對相似度大于閾值的語義Web服務按照相似度進行排序,得到最終服務發現結果。
服務發現算法流程描述如下:
輸入服務請求描述dQS,服務簇sSC,服務本體庫lSOL,服務刻面樹T
輸出相似度從大到小的N個構件
1.對dQS進行基于lSOL的刻面描述
2.for sSC中的所有簇中心
3.Sim_QW=sim(dQS,wWS);
4.end for;
5.for T的子刻面層的所有節點
6.maxsim=max(Sim_QW,k);
7.相似度最大的服務簇中的所有語義Web服務保存到maxSim_WS中;
8.end for;
9.for T的主刻面層的所有節點
10.unionQW=Union(maxSim_WS,n);
11.unionQW中的語義Web服務與服務簇中心的相似度的值保存到unionQW_Sim;
12.end for;
13.array_mixQW=mix(unionQW,n);
14.array_mixQW_Sim記錄array_mixQW中的語義Web服務與簇中心的相似度;
15.for array_mixQW中的所有語義Web服務
16.S1=sim(wWS,dQS);
17.S2= n個主刻面下的相似度的平均值;
18.if((S1+S2)/2≥閾值)
19.result=(array_mixQWi,(S1+S2)/2);
20.end for
21.sort(result);
在服務發現算法中,步驟1是將語義Web服務請求進行基于本體庫的刻面表示;步驟2~步驟4用式(3)計算服務請求與服務簇的簇中心的相似度;步驟5~步驟8是選取與服務請求相似度最大的簇中心,步驟6中的k為聚類個數;步驟9~步驟12是同一主刻面下不同子刻面中選出的服務簇求并集;步驟13和步驟14是對不同主刻面下得到的服務簇求交集,同時記錄語義Web服務與所屬服務簇中心的相似度;步驟15~步驟20是計算服務請求與符合要求語義Web服務的總相似度,大于閾值條件的加入服務發現結果集中;步驟21是對得到的服務發現結果集中的服務按照相似度排序,并將結果呈現給用戶。該算法中刻面的個數相比于語義Web服務的個數可以忽略不計,故算法的時間復雜度為O(n)。
為驗證本文所提出的語義Web服務發現方法在查準率、查全率以及執行效率方面的性能,使用OWLS-TC4測試集進行實驗。OWLS-TC4測試集提供了來自9個不同領域的總共1 083個語義Web服務,包括教育、醫療保健、食品、旅游、通信、經濟、武器、地理和仿真。本文選取服務個數和請求個數較多的4個領域的語義Web服務進行實驗,實驗數據如表1所示。

表1 語義Web服務的實驗數據
利用Protégé工具處理OWLS-TC4測試集中服務的本體概念,借助MySQL數據庫,使用Java語言在Eclipse中對算法進行編碼和實現。實驗中服務發現的效果通過評測查準率、查全率和執行時間3個指標來體現,查準率和查全率的計算公式分別為:查準率P=nr/Nq,查全率R=nr/Nr。其中,nr是檢索結果中滿足服務請求的語義Web服務個數,Nq是檢索得到的服務總個數,Nr是服務注冊庫中滿足服務請求的服務個數。另外,通過在不同相似度閾值下進行的實驗測試,發現閾值取為0.7,即服務相似度S≥0.7時,檢索結果的查準率和查全率較好,故在本文中服務相似度閾值設為0.7。
考慮到聚類個數對聚類結果存在直接影響,進而影響實驗結果的查準率和查全率,于是使用本文提出的服務發現方法進行多次不同聚類個數的實驗,選取教育領域的286個語義Web服務,不同聚類個數的查準率、查全率和F-measure值如圖4所示。

圖4 不同聚類個數查準率、查全率和F-measure值趨勢
根據圖4中聚類個數對查準率、查全率和F-measure值影響的分析確定合適的聚類個數,然后在不同領域下進行實驗,采用OWLS-TC4測試集中提供的請求,同時與文獻[6]所提出的基于聚類和二分圖匹配的Web服務發現方法作對比,最后對每個領域的多次服務請求所得的查準率和查全率分別計算平均值。不同領域下2種服務發現方法的查準率和查全率分別如圖5和圖6所示。通過2種服務發現方法的查準率和查全率的對比可以發現,相較于基于聚類與二分圖匹配服務的發現方法,本文方法對服務的查準率和查全率較高。實驗結果表明,本文方法的平均查準率在85%以上,查全率是90%左右。

圖5 不同領域查準率對比

圖6 不同領域查全率對比
實驗中算法的執行效率(即服務請求的響應時間)除了和服務發現方法有關,還與進行實驗時使用的仿真平臺及硬件配置有關,本文進行實驗時使用的電腦處理器是AMD Athlon X4。對不同領域中的服務請求分別進行響應時間的測試,選取OWLS-TC4測試集中經濟領域的12個服務請求,2種服務發現方法的服務請求響應時間對比如圖7所示。

圖7 服務請求響應時間對比
實驗結果表明,本文方法的服務請求響應時間比基于聚類和二分圖匹配語義的Web服務方法要少很多,服務發現效率明顯提高。綜合服務的查準率、查全率和服務請求響應時間,本文提出的服務發現方法是有效的,而且擁有較好的服務發現效果。
在軟件開發過程中對現有軟件進行復用,可以在很大程度上節約開發成本和開發時間。隨著人們對Web服務的研究與開發,從服務注冊庫中快速且有效地找到用戶所需要的服務對軟件檢索技術提出了更高的要求。本文提出基于刻面和本體標識的語義Web服務發現方法,通過服務分析器將語義Web服務轉化成基于本體概念的刻面樹,再使用服務聚類器對服務注冊庫中的語義Web服務按照刻面進行聚類,得到多個服務簇。實驗結果證明本文的服務發現方法具有較好的查準率、查全率和執行效率。
語義Web服務的研究依賴于語義分析技術,對語義Web服務進行刻面描述時,刻面的選取以及相關的本體概念都對本文的服務發現方法有影響。另外,本文都是在同一個領域中進行服務發現實驗,而且數據也不夠多。因此,后續工作將對語義分析技術、語義Web服務的刻面分類描述以及聚類方法進行研究,完善服務發現方法、增加實驗數據,進一步提高檢索效果。