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