前段時(shí)間學(xué)習(xí)了點(diǎn)基本的OWL-S,沒想到能用protege插件對服務(wù)進(jìn)行組合,真的蠻不錯(cuò)的!
本人費(fèi)了九牛二虎之力想按照下面轉(zhuǎn)載的文章照做一下,很難成功,不知道是不是插件與protege的版本沖突還是怎么的,就是用不了!
?????? 幸運(yùn)的是,在上十次重裝后,終于按照步驟作好了。下面的文章是轉(zhuǎn)載的,URL:http://www.cnblogs.com/bjzhanghao/archive/2005/06/12/173302.html, 感謝作者的貢獻(xiàn)。在閱讀之前,我提兩個(gè)建議:
1。安裝版本是protege 3.2 with jvm 和owlseditor-build20,建議大家不要自己制定JVM,這樣就不會出現(xiàn)某些類找不著的情況了;
2。邊實(shí)踐邊考慮,會獲益非淺!
OWL-S可以用來描述Web服務(wù),這個(gè)帖子將介紹一個(gè)非常簡單的例子,也許對理解Web服務(wù)的組裝有些作用。這個(gè)服務(wù)是對已有Web服務(wù)進(jìn)行組裝和執(zhí)行,所以你并不需要發(fā)布自己的Web服務(wù)。你需要安裝Protege和OWL-S Editor插件,我用的版本前者是3.1 beta build 191,后者是build 15,它們在一起運(yùn)行得還不錯(cuò)。
所用的Web服務(wù)在http://www.bs-byg.dk/hashclass.wsdl,它包含兩個(gè)方法:HashString和CheckHash,前者用指定編碼方式(MD5、SHA1等等)對指定字符串編碼,后者根據(jù)指定編碼方式檢查一個(gè)字符串(HashString)是否是另一個(gè)字符串(OriginString)的編碼結(jié)果。我們將把這兩個(gè)方法組裝成一個(gè)服務(wù),對輸入的編碼方式和待編碼字符串先進(jìn)行編碼,然后檢查編碼的結(jié)果是否正確,如果正確返回true,否則返回false。下面是組裝步驟,完整的工程在這里下載。
1、確認(rèn)你的OWL-S Editor已經(jīng)安裝到Protege里,啟動Protege,新建一個(gè)owl文件類型的工程,在菜單project->config里勾選上owls選項(xiàng),按確定后Protege的主界面會多出一個(gè)OWL-S Editor頁。
2、轉(zhuǎn)到OWL-S Editor頁,按左上角的WSDL按鈕,在彈出的對話框里輸入Web服務(wù)的地址http://www.bs-byg.dk/hashclass.wsdl,然后按回車,過一會兒在對話框里會顯示出這個(gè)Web服務(wù)的信息,左邊是Operations列表。
圖1 用來導(dǎo)入WSDL的對話框
3、因?yàn)槊看沃荒躨mport一個(gè)Operation,所以先選擇HashString,然后按右下方的Import按鈕,這時(shí)系統(tǒng)會提示要把生成的owls文件(擴(kuò)展名為.owl)保存在一個(gè)位置,你可以選擇任何位置。
4、使用同樣的方法把CheckHash方法也導(dǎo)入進(jìn)來,這樣我們就有了兩個(gè)可用于組裝的Web服務(wù)了。如果你愿意的話,可以單獨(dú)執(zhí)行看看,方法是選擇一個(gè)Service,然后按綠色的執(zhí)行按鈕。
圖2 導(dǎo)入的兩個(gè)服務(wù)
5、現(xiàn)在開始組裝它們。為此我們新建一個(gè)Service實(shí)例(按Create Service按鈕)、一個(gè)Profile實(shí)例、一個(gè)CompositeProcess實(shí)例和一個(gè)WSDLGrounding實(shí)例,分別命名為myservice、myprofile、myprocess和mygrounding好了。
6、接下來把它們連接起來,首先選中myservice,把它的describedBy屬性置為myprocess,presents屬性置為myprofile,supports屬性置為mygrounding。
7、現(xiàn)在對myprocess進(jìn)行編輯,OWL-S Editor提供了一個(gè)可視化的編輯界面(Visual Editor),利用它可以很方便的定義CompositeProcess的各個(gè)步驟。選中myprocess,右邊切換到Visual Editor,這里有一些粉紅色的按鈕用來定制流程。我們首先創(chuàng)建一個(gè)Sequence(表示按順序執(zhí)行),然后選中這個(gè)Sequence,創(chuàng)建兩個(gè)Perform和一個(gè)Produce,每個(gè)Perform代表調(diào)用一個(gè)Web服務(wù),而Produce的作用是在最后得到返回值。這時(shí)右邊的圖形應(yīng)該像下面這樣,因?yàn)槲覀兩形磳erform和Produce進(jìn)行定制。
圖3 包含三個(gè)有用節(jié)點(diǎn)的process圖
8、在圖形的Perform/Produce節(jié)點(diǎn)上點(diǎn)一下就可以修改它的屬性,先來修改第一個(gè)。點(diǎn)一下第一個(gè)矩形節(jié)點(diǎn)(第一個(gè)Perform),在對話框里把process屬性設(shè)置為wi1:HashStringProcess(注意:如果導(dǎo)入WSDL時(shí)改變了前綴,這里就不是wi1),為了方便閱讀,把Name屬性改為hashPerform。類似的,第二個(gè)矩形節(jié)點(diǎn)的process屬性應(yīng)該是wi2:CheckHashProcess,Name則改為checkPerform;對于唯一的Produce節(jié)點(diǎn),改名為produce。現(xiàn)在右邊的圖如下所示。
圖4 改名后的process圖
9、現(xiàn)在從Visual Editor切換到Properties頁,在這里為myprocess定義輸入和輸出參數(shù)。它的輸入應(yīng)該是wi1:HashType和wi1:Str,而輸出應(yīng)該是wi2:CheckHashResult,也就是說,對于我們組裝出來的Web服務(wù)來說,輸入是編碼類型和待編碼字符串,而輸出是驗(yàn)證結(jié)果。
10、上面我們定義了myprocess擁有的參數(shù),現(xiàn)在就要用到它們了。切換回Visual Editor,在樹型列表里選則第一個(gè)Perform(hashPerform),把右邊切換到Properties頁,現(xiàn)在ToParameter屬性里還是空白,我們要把myprocess的輸入映射到這個(gè)Perform,所以按添加按鈕把兩個(gè)輸入?yún)?shù)(wi1:HashType和wi1:??Str)加到ToParameter里。選中它們中的一個(gè),可以看到右邊有BindingType選項(xiàng),缺省為valueSource這一項(xiàng),就用它即可,在下面的FromPerform下拉框里只有一個(gè)選項(xiàng)TheParentPerform,選中它。在最下面的FromParameter里選擇和你選擇的ToParameter項(xiàng)一樣的那個(gè)選項(xiàng)(wi1:HashType->wi1:HashType,wi1:Str->wi1:Str)。
圖5 通過參數(shù)傳遞產(chǎn)生“數(shù)據(jù)流”
11、對于checkPerform,它有三個(gè)輸入?yún)?shù),我們希望HashType和hashPerform具有同樣的值,所以它的設(shè)置和上一步里對HashType的設(shè)置一樣;OriginalString的設(shè)置和上一步的Str一樣;HashString屬性是上一步得到的結(jié)果,所以FromPerform屬性應(yīng)該是hashPerform,F(xiàn)romParameter屬性則是wi1:HashStringResult。
12、對produce的設(shè)置很簡單,在ToParameter屬性里加入我們要的結(jié)果wi2:CheckHashResult,F(xiàn)romPerform選checkPerform,F(xiàn)romParameter選wi2:CheckHashResult。現(xiàn)在,myprocess對應(yīng)的process圖如下所示。
圖6 可以從圖中看到服務(wù)的結(jié)構(gòu)
13、對myprocess的設(shè)置到此就結(jié)束了,最困難的部分完成了,剩下的工作都很簡單和顯而易見。選中mygrounding,在它的hasAtomicProcessGrounding屬性里加上wi1:HashStringAtomicProcessGrounding和wi2:CheckHashAtomicProcessGrounding。
14、現(xiàn)在myservice已經(jīng)可以執(zhí)行了(myprofile里還可以增加一些信息用來描述這個(gè)服務(wù))。現(xiàn)在選中myservice,按下執(zhí)行按鈕,在彈出的對話框里HashType框填MD5,Str框填test(任意字符串都可以),然后按Execute按鈕就會看到結(jié)果,當(dāng)然,這個(gè)服務(wù)不論你輸入什么字符串都會得到true值,原因不用我說了吧。
圖7 執(zhí)行組裝后的服務(wù)