新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     >>计算机科学论坛<<     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> Web服务(Web Services,WS), 语义Web服务(Semantic Web Services, SWS)讨论区: WSDL, SOAP, UDDI, DAML-S, OWL-S, SWSF, SWSL, WSMO, WSML,BPEL, BPEL4WS, WSFL, WS-*,REST, PSL, Pi-calculus(Pi演算), Petri-net,WSRF,
    [返回] 计算机科学论坛W3CHINA.ORG讨论区 - Web新技术讨论『 Web Services & Semantic Web Services 』 → [转帖]使用owl-s 插件在Protege中组装服务 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 12375 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: [转帖]使用owl-s 插件在Protege中组装服务 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     timothy 帅哥哟,离线,有人找我吗?巨蟹座1982-7-21
      
      
      威望:1
      等级:大四下学期(考上研究生啦!)
      文章:237
      积分:1701
      门派:XML.ORG.CN
      注册:2006/4/4

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给timothy发送一个短消息 把timothy加入好友 查看timothy的个人资料 搜索timothy在『 Web Services & Semantic Web Services 』的所有贴子 点击这里发送电邮给timothy 引用回复这个贴子 回复这个贴子 查看timothy的博客楼主
    发贴心情 [转帖]使用owl-s 插件在Protege中组装服务

    OWL-S可以用来描述Web服务,这个帖子将介绍一个非常简单的例子,也许对理解Web服务的组装有些作用。这个服务是对已有Web服务进行组装和执行,所以你并不需要发布自己的Web服务。你需要安装[URL=http://protege.stanford.edu/]Protege[/URL]和[URL=http://owlseditor.semwebcentral.org/index.shtml]OWL-S Editor[/URL]插件,我用的版本前者是3.1 beta build 191,后者是build 15,它们在一起运行得还不错。

    所用的Web服务在[URL=http://www.bs-byg.dk/hashclass.wsdl]http://www.bs-byg.dk/hashclass.wsdl[/URL],它包含两个方法:HashString和CheckHash,前者用指定编码方式(MD5、SHA1等等)对指定字符串编码,后者根据指定编码方式检查一个字符串(HashString)是否是另一个字符串(OriginString)的编码结果。我们将把这两个方法组装成一个服务,对输入的编码方式和待编码字符串先进行编码,然后检查编码的结果是否正确,如果正确返回true,否则返回false。下面是组装步骤,完整的工程在[URL=http://www.cnblogs.com/Files/bjzhanghao/hash.zip]这里下载[/URL]。

    1、确认你的OWL-S Editor已经安装到Protege里,启动Protege,新建一个owl文件类型的工程,在菜单project->config里勾选上owls选项,按确定后Protege的主界面会多出一个OWL-S Editor页。

    2、转到OWL-S Editor页,按左上角的WSDL按钮,在弹出的对话框里输入Web服务的地址[URL=http://www.bs-byg.dk/hashclass.wsdl]http://www.bs-byg.dk/hashclass.wsdl[/URL],然后按回车,过一会儿在对话框里会显示出这个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 执行组装后的服务


       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    时间永远是向前的!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/5/12 9:11:00
     
     cdyy 美女呀,离线,快来找我吧!
      
      
      等级:大一(高数修炼中)
      文章:16
      积分:185
      门派:XML.ORG.CN
      注册:2005/4/19

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给cdyy发送一个短消息 把cdyy加入好友 查看cdyy的个人资料 搜索cdyy在『 Web Services & Semantic Web Services 』的所有贴子 引用回复这个贴子 回复这个贴子 查看cdyy的博客2
    发贴心情 
    我对OWL-S中composite process的含义一直不太清楚,这里正好根据这个例子向大家请教一下。

    OWL-S文档中说,"composite processes correspond to actions that require multi-step protocols”以及"if a composite is a Sequence, then the client sends a series of messages that invoke every step in order”。

    按照OWL-S文档中的解释,假设有两个原子过程A1和A2,一个组合过程C1,C1 = Sequence (A1, A2),那么如果一个服务请求者要使用C1,它应该依次调用A1和A2。而不是像上文说的“myprocess定义输入和输出参数。它的输入应该是wi1:HashType和wi1:Str,而输出应该是wi2:CheckHashResult,也就是说,对于我们组装出来的Web服务来说,输入是编码类型和待编码字符串,而输出是验证结果。”,即上文中的两个原子过程hashString和checkHash是应该被服务请求者依次调用,而不是一次调用就能完成。

    不知道我的理解对不对?

    另外,除了上述的原子过程和组合过程外,如果还有一个组合过程C2 = Sequence(A3, A4),其中A3和A4是原子过程。
    那么,C1 = Sequence (A1, A2, C2)的含义是什么呢?是否是服务请求者使用C1时,要依次调用A1,A2,A3和A4?也就是说无论一个组合过程中嵌套了多少级的组合过程,含义和把它们全部展开到第一级没有区别?

    谢谢。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/11/8 16:00:00
     
     www3c 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:1
      积分:58
      门派:XML.ORG.CN
      注册:2007/11/28

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给www3c发送一个短消息 把www3c加入好友 查看www3c的个人资料 搜索www3c在『 Web Services & Semantic Web Services 』的所有贴子 引用回复这个贴子 回复这个贴子 查看www3c的博客3
    发贴心情 
    高手指点一下!
    楼上说对不?  OWL-S的文件能否推荐一下
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/11/28 21:15:00
     
     sunny_boy50001 帅哥哟,离线,有人找我吗?魔羯座1984-1-1
      
      
      等级:大一新生
      文章:6
      积分:82
      门派:W3CHINA.ORG
      注册:2007/11/1

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给sunny_boy50001发送一个短消息 把sunny_boy50001加入好友 查看sunny_boy50001的个人资料 搜索sunny_boy50001在『 Web Services & Semantic Web Services 』的所有贴子 引用回复这个贴子 回复这个贴子 查看sunny_boy50001的博客4
    发贴心情 
    hao  hao
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/12/29 13:51:00
     
     sunny_boy50001 帅哥哟,离线,有人找我吗?魔羯座1984-1-1
      
      
      等级:大一新生
      文章:6
      积分:82
      门派:W3CHINA.ORG
      注册:2007/11/1

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给sunny_boy50001发送一个短消息 把sunny_boy50001加入好友 查看sunny_boy50001的个人资料 搜索sunny_boy50001在『 Web Services & Semantic Web Services 』的所有贴子 引用回复这个贴子 回复这个贴子 查看sunny_boy50001的博客5
    发贴心情 
    l楼主:有问题想问,你的实例我运行成功了,但想做一点改动,在Outputs那做了一下修改:
    就是在输出时,原本输出一个变量即CheckHashResult,我修改为输出2个,
    HashStringResult和CheckHashResult,Process过程没有问题,问题为只输出一个结果,即:
    HashStringResult作为第一输出则只输出他,若CheckHashResult作为第一输出,则只输出他。
    显示为:
    Getting the service from the knowledgebase.
    Getting the process from the service.
    Preparing the input parameters.
    Executing the service.
    Creating the execution engine.
    Execution started.
    Fetching the output.

    然后就没有结果了,是不是hashclass只定义一个输出结果的问题?是不是不能修改成输出2个结果? 请指教。邮箱或回复都可,本人邮箱:sunny_boy50001@163.com

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/12/29 16:02:00
     
     sunny_boy50001 帅哥哟,离线,有人找我吗?魔羯座1984-1-1
      
      
      等级:大一新生
      文章:6
      积分:82
      门派:W3CHINA.ORG
      注册:2007/11/1

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给sunny_boy50001发送一个短消息 把sunny_boy50001加入好友 查看sunny_boy50001的个人资料 搜索sunny_boy50001在『 Web Services & Semantic Web Services 』的所有贴子 引用回复这个贴子 回复这个贴子 查看sunny_boy50001的博客6
    发贴心情 
    在还有一个问题:
    就是按照帖子内容成功实现后,另存为一个文件后,下次打开运行组合的服务,运行不了,
    显示:
    Getting the service from the knowledgebase.
    Getting the process from the service.
    Preparing the input parameters.
    Executing the service.
    Creating the execution engine.
    Execution started.
    Error occured during execution.
    org.mindswap.exceptions.ExecutionException: java.util.NoSuchElementException

    找不到一个包,运行不了,而整个重新在做就又好用了。
    文章中提到的完整工程下载后也有同样问题,不是很明白,怎么解决?

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/12/29 16:28:00
     
     GoogleAdSense魔羯座1984-1-1
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 Web Services & Semantic Web Services 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/6/22 14:02:54

    本主题贴数6,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    97.656ms