OWL-Så¯ä»¥ç”¨æ¥æè¿°WebæœåŠ¡åQŒè¿™ä¸ªå¸–å将介ç»ä¸€ä¸ªéžå¸¸ç®€å•的例ååQŒä¹Ÿè®¸å¯¹ç†è§£WebæœåŠ¡çš„ç»„è£…æœ‰äº›ä½œç”¨ã€‚è¿™ä¸ªæœåŠ¡æ˜¯å¯¹å·²æœ‰WebæœåŠ¡˜q›è¡Œ¾l„è£…å’Œæ‰§è¡Œï¼Œæ‰€ä»¥ä½ òq¶ä¸éœ€è¦å‘布自å·Þqš„WebæœåŠ¡ã€‚ä½ éœ€è¦å®‰è£?a >Protegeå’?a >OWL-S Editoræ’äšgåQŒæˆ‘用的版本å‰è€…是3.1 beta build 191åQŒåŽè€…是build 15åQŒå®ƒä»¬åœ¨ä¸€èµ¯‚¿è¡Œå¾—˜q˜ä¸é”™ã€?/p>
所用的WebæœåŠ¡åœ?a >http://www.bs-byg.dk/hashclass.wsdlåQŒå®ƒåŒ…å«ä¸¤ä¸ªæ–ÒŽ(gu¨©)³•åQšHashStringå’ŒCheckHashåQŒå‰è€…用指定¾~–ç æ–¹å¼åQˆMD5ã€SHA1½{‰ç‰åQ‰å¯¹æŒ‡å®šå—符串编ç ,åŽè€…æ ¹æ®æŒ‡å®šç¼–ç æ–¹å¼æ£€æŸ¥ä¸€ä¸ªå—½W¦ä¸²åQˆHashStringåQ‰æ˜¯å¦æ˜¯å¦ä¸€ä¸ªå—½W¦ä¸²åQˆOriginStringåQ‰çš„¾~–ç ¾l“果。我们将把这两个æ–ÒŽ(gu¨©)³•¾l„装æˆä¸€ä¸ªæœåŠ¡ï¼Œå¯¹è¾“å…¥çš„¾~–ç æ–¹å¼å’Œå¾…¾~–ç å—符串先˜q›è¡Œ¾~–ç åQŒç„¶åŽæ£€æŸ¥ç¼–ç çš„¾l“æžœæ˜¯å¦æ£ç¡®åQŒå¦‚果棼‹®è¿”回trueåQŒå¦åˆ™è¿”回falseã€‚ä¸‹é¢æ˜¯¾l„装æ¥éª¤åQŒå®Œæ•´çš„工程åœ?a >˜q™é‡Œä¸‹è²ã€?/p>
1ã€ç¡®è®¤ä½ çš„OWL-S Editorå·²ç»å®‰è£…到Protege里,å¯åЍProtegeåQŒæ–°å»ÞZ¸€ä¸ªowlæ–‡äšg¾cÕdž‹çš„å·¥½E‹ï¼Œåœ¨èœå•project->config里勾选上owls选项åQŒæŒ‰¼‹®å®šåŽProtege的主界é¢ä¼?x¨¬)多å‡ÞZ¸€ä¸ªOWL-S Editor™åüc(di¨£n)€?/p>
2ã€è{到OWL-S Editor™åµï¼ŒæŒ‰å·¦ä¸Šè§’çš„WSDL按钮åQŒåœ¨å¼¹å‡ºçš„å¯¹è¯æ¡†é‡Œè¾“å…¥WebæœåŠ¡çš„åœ°å€http://www.bs-byg.dk/hashclass.wsdlåQŒç„¶åŽæŒ‰å›žèžRåQŒè¿‡ä¸€ä¼?x¨¬)å„¿åœ¨å¯¹è¯æ¡†é‡Œä¼?x¨¬)昄¡¤ºå‡ø™¿™ä¸ªWebæœåŠ¡çš„ä¿¡æ¯ï¼Œå·¦è¾¹æ˜¯Operations列表ã€?/p>
å›? 用æ¥å¯¼å…¥WSDLçš„å¯¹è¯æ¡†
3ã€å› 为毋ơåªèƒ½import一个OperationåQŒæ‰€ä»¥å…ˆé€‰æ‹©HashStringåQŒç„¶åŽæŒ‰å³ä¸‹æ–¹çš„Import按钮åQŒè¿™æ—¶ç³»¾lŸä¼š(x¨¬)æç¤ºè¦æŠŠç”Ÿæˆçš„owlsæ–‡äšgåQˆæ‰©å±•åä¸?owlåQ‰ä¿å˜åœ¨ä¸€ä¸ªä½¾|®ï¼Œä½ å¯ä»¥é€‰æ‹©ä»ÖM½•ä½ç½®ã€?/p>
4ã€ä‹Éç”¨åŒæ ïL(f¨¥ng)š„æ–ÒŽ(gu¨©)³•把CheckHashæ–ÒŽ(gu¨©)³•也导入进æ¥ï¼Œ˜q™æ ·æˆ‘们ž®±æœ‰äº†ä¸¤ä¸ªå¯ç”¨äºŽ¾l„装的WebæœåŠ¡äº†ã€‚å¦‚æžœä½ æ„¿æ„çš„è¯åQŒå¯ä»¥å•独执行看看,æ–ÒŽ(gu¨©)³•是选择一个ServiceåQŒç„¶åŽæŒ‰¾l¿è‰²çš„æ‰§è¡ŒæŒ‰é’®ã€?/p>
å›? 导入的两个æœåŠ?/p>
5ã€çŽ°åœ¨å¼€å§‹ç»„è£…å®ƒä»¬ã€‚äØ“(f¨´)æ¤æˆ‘们新å»ÞZ¸€ä¸ªService实例åQˆæŒ‰Create Service按钮åQ‰ã€ä¸€ä¸ªProfile实例ã€ä¸€ä¸ªCompositeProcess实例和一个WSDLGrounding实例åQŒåˆ†åˆ«å‘½å䨓(f¨´)myserviceã€myprofileã€myprocesså’Œmygrounding好了ã€?/p>
6ã€æŽ¥ä¸‹æ¥æŠŠå®ƒä»¬è¿žæŽ¥è“væ¥ï¼Œé¦–先选ä¸myserviceåQŒæŠŠå®ƒçš„describedBy属性置为myprocessåQŒpresents属性置为myprofileåQŒsupports属性置为mygroundingã€?/p>
7ã€çŽ°åœ¨å¯¹myprocess˜q›è¡Œ¾~–辑åQŒOWL-S Editoræä¾›äº†ä¸€ä¸ªå¯è§†åŒ–的编辑界é¢ï¼ˆVisual EditoråQ‰ï¼Œåˆ©ç”¨å®ƒå¯ä»¥å¾ˆæ–¹ä¾¿çš„定义CompositeProcessçš„å„个æ¥éª¤ã€‚选ä¸myprocessåQŒå³è¾¹åˆ‡æ¢åˆ°Visual EditoråQŒè¿™é‡Œæœ‰ä¸€äº›ç²‰¾U¢è‰²çš„æŒ‰é’®ç”¨æ¥å®šåˆ¶æµ½E‹ã€‚我们首先创å»ÞZ¸€ä¸ªSequenceåQˆè¡¨½CºæŒ‰™åºåºæ‰§è¡ŒåQ‰ï¼Œç„¶åŽé€‰ä¸˜q™ä¸ªSequenceåQŒåˆ›å»ÞZ¸¤ä¸ªPerform和一个ProduceåQŒæ¯ä¸ªPerform代表调用一个WebæœåŠ¡åQŒè€ŒProduce的作用是在最åŽå¾—到返回倹{€‚这时å³è¾¹çš„囑ÖŞ应该åƒä¸‹é¢è¿™æ øP¼Œå› 䨓(f¨´)我们ž®šæœªå¯¹Performå’ŒProduce˜q›è¡Œå®šåˆ¶ã€?/p>
å›? 包å«ä¸‰ä¸ªæœ‰ç”¨èŠ‚ç‚¹çš„processå›?/p>
8ã€åœ¨å›‘ÖÅžçš„Perform/Produce节点上点一下就å¯ä»¥ä¿®æ”¹å®ƒçš„属性,先æ¥ä¿®æ”¹½W¬ä¸€ä¸ªã€‚点一下第一个矩形节点(½W¬ä¸€ä¸ªPerformåQ‰ï¼Œåœ¨å¯¹è¯æ¡†é‡ŒæŠŠprocess属性设¾|®äØ“(f¨´)wi1:HashStringProcessåQˆæ³¨æ„:(x¨¬)如果导入WSDL时改å˜äº†å‰ç¼€åQŒè¿™é‡Œå°±ä¸æ˜¯wi1åQ‰ï¼Œä¸ÞZº†æ–¹ä¾¿é˜…读åQŒæŠŠName属性改为hashPerform。类似的åQŒç¬¬äºŒä¸ªçŸ©åŞ节点的process属性应该是wi2:CheckHashProcessåQŒName则改为checkPerformåQ›å¯¹äºŽå”¯ä¸€çš„Produce节点åQŒæ”¹å䨓(f¨´)produce。现在å³è¾¹çš„囑֦‚下所½Cºã€?/p>
å›? 改ååŽçš„processå›?/p>
9ã€çŽ°åœ¨ä»ŽVisual Editor切æ¢åˆ°Properties™åµï¼Œåœ¨è¿™é‡ŒäØ“(f¨´)myprocesså®šä¹‰è¾“å…¥å’Œè¾“å‡ºå‚æ•°ã€‚它的输入应该是wi1:HashTypeå’Œwi1:StråQŒè€Œè¾“出应该是wi2:CheckHashResultåQŒä¹Ÿž®±æ˜¯è¯ß_(d¨¢)¼Œå¯¹äºŽæˆ‘们¾l„装出æ¥çš„WebæœåŠ¡æ¥è¯´åQŒè¾“入是¾~–ç ¾cÕdž‹å’Œå¾…¾~–ç å—符ä¸ÔŒ¼Œè€Œè¾“出是验课l“æžœã€?/p>
10ã€ä¸Šé¢æˆ‘们定义了myprocessæ‹¥æœ‰çš„å‚æ•ŽÍ¼ŒçŽ°åœ¨ž®Þp¦ç”¨åˆ°å®ƒä»¬äº†ã€‚切æ¢å›žVisual EditoråQŒåœ¨æ ?w¨¨i)型列表里选则½W¬ä¸€ä¸ªPerformåQˆhashPerformåQ‰ï¼ŒæŠŠå³è¾¹åˆ‡æ¢åˆ°Properties™åµï¼ŒçŽ°åœ¨ToParameter属性里˜q˜æ˜¯½Iºç™½åQŒæˆ‘ä»¬è¦æŠŠmyprocessçš„è¾“å…¥æ˜ ž®„到˜q™ä¸ªPerformåQŒæ‰€ä»¥æŒ‰æ·ÕdŠ æŒ‰é’®æŠŠä¸¤ä¸ªè¾“å…¥å‚æ•ŽÍ¼ˆwi1:HashTypeå’Œwi1:  StråQ‰åŠ åˆ°ToParameter里。选ä¸å®ƒä»¬ä¸çš„一个,å¯ä»¥çœ‹åˆ°åŒ™¾¹æœ‰BindingType选项åQŒç¼ºçœäØ“(f¨´)valueSource˜q™ä¸€™å¹ï¼Œž®Þq”¨å®ƒå³å¯ï¼Œåœ¨ä¸‹é¢çš„FromPerformä¸‹æ‹‰æ¡†é‡Œåªæœ‰ä¸€ä¸ªé€‰é¡¹TheParentPerformåQŒé€‰ä¸å®ƒã€‚在最下é¢çš„FromParameteré‡Œé€‰æ‹©å’Œä½ é€‰æ‹©çš„ToParameter™å¹ä¸€æ ïL(f¨¥ng)š„那个选项åQˆwi1:HashType->wi1:HashTypeåQŒwi1:Str->wi1:StråQ‰ã€?/p>
å›? é€šè¿‡å‚æ•°ä¼ 递äñ”ç”Ÿâ€œæ•°æ®æµâ€?/p>
11ã€å¯¹äºŽcheckPerformåQŒå®ƒæœ‰ä¸‰ä¸ªè¾“入傿•ŽÍ¼Œæˆ‘们希望HashTypeå’ŒhashPerformå…ähœ‰åŒæ ·çš„å€û|¼Œæ‰€ä»¥å®ƒçš„设¾|®å’Œä¸Šä¸€æ¥é‡Œå¯¹HashType的设¾|®ä¸€æ øP¼›OriginalString的设¾|®å’Œä¸Šä¸€æ¥çš„Strä¸€æ øP¼›HashString属性是上一æ¥å¾—到的¾l“æžœåQŒæ‰€ä»¥FromPerform属性应该是hashPerformåQŒFromParameter属性则是wi1:HashStringResultã€?/p>
12ã€å¯¹produce的设¾|®å¾ˆ½Ž€å•,在ToParameterå±žæ€§é‡ŒåŠ å…¥æˆ‘ä»¬è¦çš„¾l“æžœwi2:CheckHashResultåQŒFromPerform选checkPerformåQŒFromParameter选wi2:CheckHashResult。现在,myprocess对应的process囑֦‚下所½Cºã€?/p>
å›? å¯ä»¥ä»Žå›¾ä¸çœ‹åˆ°æœåŠ¡çš„¾l“æž„
13ã€å¯¹myprocess的设¾|®åˆ°æ¤å°±¾l“æŸäº†ï¼Œæœ€å›°éš¾çš„部分完æˆäº†åQŒå‰©ä¸‹çš„工作都很½Ž€å•和显而易è§ã€‚选ä¸mygroundingåQŒåœ¨å®ƒçš„hasAtomicProcessGroundingå±žæ€§é‡ŒåŠ ä¸Šwi1:HashStringAtomicProcessGroundingå’Œwi2:CheckHashAtomicProcessGroundingã€?/p>
14ã€çŽ°åœ¨myserviceå·²ç»å¯ä»¥æ‰§è¡Œäº†ï¼ˆmyprofile里还å¯ä»¥å¢žåŠ ä¸€äº›ä¿¡æ¯ç”¨æ¥æ˜q°è¿™ä¸ªæœåŠ¡ï¼‰(j¨ª)。现在选ä¸myserviceåQŒæŒ‰ä¸‹æ‰§è¡ŒæŒ‰é’®ï¼Œåœ¨å¼¹å‡ºçš„å¯¹è¯æ¡†é‡ŒHashType框填MD5åQŒStr框填teståQˆä“Qæ„å—½W¦ä¸²éƒ½å¯ä»¥ï¼‰(j¨ª)åQŒç„¶åŽæŒ‰Execute按钮ž®×ƒ¼š(x¨¬)看到¾l“æžœåQŒå½“ç„?d¨°ng)ž¼Œ˜q™ä¸ªæœåŠ¡ä¸è®ºä½ 输入什么嗽W¦ä¸²éƒ½ä¼š(x¨¬)得到trueå€û|¼ŒåŽŸå› ä¸ç”¨æˆ‘说了å§ã€?/p>
å›? 执行¾l„装åŽçš„æœåŠ¡