八进制

少年壮志无烟抽

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  259 随笔 :: 0 文章 :: 3282 评论 :: 14 引用

OWL-S可以用来描述Web服务,这个帖子将介绍一个非常简单的例子,也许对理解Web服务的组装有些作用。这个服务是对已有Web服务进行组装和执行,所以你并不需要发布自己的Web服务。你需要安装ProtegeOWL-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列表。

import-wsdl.gif
图1 用来导入WSDL的对话框

3、因为每次只能import一个Operation,所以先选择HashString,然后按右下方的Import按钮,这时系统会提示要把生成的owls文件(扩展名为.owl)保存在一个位置,你可以选择任何位置。

4、使用同样的方法把CheckHash方法也导入进来,这样我们就有了两个可用于组装的Web服务了。如果你愿意的话,可以单独执行看看,方法是选择一个Service,然后按绿色的执行按钮。

hash-services.gif
图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进行定制。

process1.gif
图3 包含三个有用节点的process图

8、在图形的Perform/Produce节点上点一下就可以修改它的属性,先来修改第一个。点一下第一个矩形节点(第一个Perform),在对话框里把process属性设置为wi1:HashStringProcess(注意:如果导入WSDL时改变了前缀,这里就不是wi1),为了方便阅读,把Name属性改为hashPerform。类似的,第二个矩形节点的process属性应该是wi2:CheckHashProcess,Name则改为checkPerform;对于唯一的Produce节点,改名为produce。现在右边的图如下所示。

process2.gif
图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)。

toparameter.gif
图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图如下所示。

process3.gif
图6 可以从图中看到服务的结构

13、对myprocess的设置到此就结束了,最困难的部分完成了,剩下的工作都很简单和显而易见。选中mygrounding,在它的hasAtomicProcessGrounding属性里加上wi1:HashStringAtomicProcessGrounding和wi2:CheckHashAtomicProcessGrounding。

14、现在myservice已经可以执行了(myprofile里还可以增加一些信息用来描述这个服务)。现在选中myservice,按下执行按钮,在弹出的对话框里HashType框填MD5,Str框填test(任意字符串都可以),然后按Execute按钮就会看到结果,当然,这个服务不论你输入什么字符串都会得到true值,原因不用我说了吧。

execute.gif
图7 执行组装后的服务

0
0
(请您对文章做出评价)
« 上一篇:由模型生成GEF应用程序:Merlin
» 下一篇:通过OCP考试
posted on 2005-06-12 23:50 八进制 阅读(9737) 评论(54)  编辑 收藏 网摘 所属分类: Web服务/语义Web

评论

#1楼 2005-06-14 23:20 lk
你好,我照着试了一下,在第七步的时候,左边已经建立了Sequence等,右边也选到了process graph,但没有图形出来,这是为什么呢?

  回复  引用    

#2楼[楼主] 2005-06-15 10:44 八进制      
你装Graphviz了吗,在owl-s editor里显示图形要用到这个,下载地址在http://www.research.att.com/sw/tools/graphviz/download.html
  回复  引用  查看    

#3楼 2005-06-16 14:07 lk
呵呵 谢谢 终于可以了 不过Graphviz好像只能装在默认路径下,否则protege就找不到
  回复  引用    

#4楼 2005-06-16 14:30 八进制
owl-s editor可以设置graphviz的路径,你找找看。
  回复  引用    

#5楼 2005-06-21 09:17 lk
找到了 按左上角的options按钮 就可设置graphviz的路径
  回复  引用    

#6楼 2005-06-21 22:12 katherine
我想请教一下通过owls描述以后,能做什么方面的应用,有什么工具吗?
  回复  引用    

#7楼[楼主] 2005-06-22 20:57 八进制      
我感觉到的最大好处是方便服务的组装,利用owl-s editor等工具可以组装各种具有复杂逻辑的服务,而owl-s的执行引擎对这些服务的执行和原子服务没有区别。
另一个就是在新组合一些服务或对现有的组合服务修改后,已有的程序代码可以做到不需要任何改动,前提是程序完全按照owl-s文件定义的逻辑来执行。

  回复  引用  查看    

哈哈,我在网上搜OWL和OWL-S相关的资料,居然找到了你这里,你一直在做这方面的研究么?BTW:知道我是谁吧?^_^
  回复  引用    

#9楼[楼主] 2005-09-07 16:54 八进制      
知道,嘿嘿。
怎么你们也要做这个吗,我断断续续看过一些,上学期选了普适计算那门课。
总的感觉是相关东西特别多,比较迷糊。

  回复  引用  查看    

#10楼 2005-09-28 18:00 babala[未注册用户]
怎么死活也在project的config中找不到owls选项啊
根据指示,不是装了protege和graphviz,然后把下载的owlseditorbuild15.zip解压,然后把解压的文件放入到按照protege目录下的plugins目录下啊,结果是怎么创建新的project,owl类型文件,都不能在project的config中找不到owls选项啊

  回复  引用    

#11楼 2005-11-03 16:12 oliz[未注册用户]
请教下,第七步是怎么做的呢?找不到Visual Editor,graphviz已经装了,急切等待中...
  回复  引用    

#12楼[楼主] 2005-11-03 17:15 八进制      
是用的缺省安装路径吗,如果不是要在protege的某个地方设置一下,否则找不到。
  回复  引用  查看    

#13楼 2005-11-29 21:31 philip[未注册用户]
你好,按照你的提示,我在执行第2步,“转到OWL-S Editor页,按左上角的WSDL按钮,在弹出的对话框里输入Web服务的地址http://www.bs-byg.dk/hashclass.wsdl,然后按回车”时,出现“cannot load service description from file http://www.bs-byg.dk/hashclass.wsdl,java.lang.NullPointerException”的出错信息,请问这如何解决?
Thanks for any help!

  回复  引用    

#14楼 2005-12-05 12:22 llffyy[未注册用户]
你好,请问Protege 从哪里下载呀
  回复  引用    

真不错,成功了,不过具体的原理还得再看看!
那个生成myservice, myprofile,myground 让我费了不少神,其实就在瞍底下!
谢谢 !

  回复  引用    

#16楼 2006-04-02 12:14 hhj[未注册用户]
八进制,你好,我有个关于领域本体描述逻辑应用的问题想请教,不知你的邮箱是bjzhanghao(AT)21cn.com还是bjzhanghao@21cn.com?我已经发了封邮件到bjzhanghao@21cn.com,请查收,谢谢。
  回复  引用    

成功了,谢谢你的文章
  回复  引用    

#18楼 2006-04-15 23:56 qsz[未注册用户]
@八进制
你好
我需要这个owledit包,我怎么下再不下来呢?帮忙啊
可否给我传一个?qsz888@126.com

  回复  引用    

怎么死活也在project的config中找不到owls选项啊
根据指示,然后把下载的owlseditorbuild15.zip解压,然后把解压的文件放入到按照protege目录下的plugins目录下啊,结果是怎么创建新的project,owl类型文件,都不能在project的config中找不到owls选项啊

我怎么也是这样 哪位大哥给看下啊

  回复  引用    

八进制 你好 我下载的你的工程 hash.pprj 打开的时候 load project errors
java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect

我想问下时怎么回事,另外我导入本地的hashclass.wsdl时 后台显示java.net.ConnetcException:Connection timed out: connet

  回复  引用    

#21楼[楼主] 2006-05-21 17:58 八进制      
请确保你的电脑可以连接国际网,因为这些服务所在的服务器不在国内。
  回复  引用  查看    

#22楼 2006-05-22 18:01 surpass[未注册用户]
@zhoulumei007
兄弟,安装时,choose components--->everything,就可以有owls选项了。

  回复  引用    

#23楼 2006-06-17 16:47 ricknan[未注册用户]
@八进制

为什么用了代理还是不行呢?我在IE里可以上外网阿,但还是会报错啊
cannot load service description from file http://www.bs-byg.dk/hashclass.wsdl,java.lang.NullPointerException

  回复  引用    

#24楼 2006-08-23 15:48 dwawa[未注册用户]
真好!非常详细。跟着走下来,一次成功!
  回复  引用    

你好,按照你的提示,我在执行第2步,“转到OWL-S Editor页,按左上角的WSDL按钮,在弹出的对话框里输入Web服务的地址http://www.bs-byg.dk/hashclass.wsdl,然后按回车”时,出现“cannot load service description from file http://www.bs-byg.dk/hashclass.wsdl,java.lang.NullPointerException”的出错信息,请问这如何解决?
  回复  引用    

诸位老大,谁知道这是怎么了?
在执行第2步,“转到OWL-S Editor页,按左上角的WSDL按钮,在弹出的对话框里输入Web服务的地址http://www.bs-byg.dk/hashclass.wsdl,然后按回车”时,出现“cannot load service description from file http://www.bs-byg.dk/hashclass.wsdl,java.lang.NullPointerException”的出错信息,请问这如何解决?

  回复  引用    

#27楼[楼主] 2006-10-24 21:43 八进制      
可能是protege无法下载到http://www.bs-byg.dk/hashclass.wsdl这个文件,你可以在浏览器里试试能否连接到。
  回复  引用  查看    

@八进制您好,我通过浏览器已经能看到这个wsdl的内容,可导入的时候就是是报错,很是无奈啊!!

  回复  引用    

#29楼[楼主] 2006-10-26 10:22 八进制      
你的浏览器是否使用了代理?
  回复  引用  查看    

#30楼 2006-10-26 20:49 红[未注册用户]
@求教八进制
我也出现和你一样的问题,是什么原因呢,用ie打开没有问题啊,

  回复  引用    

八进制,红你们好,那个不能导入的问题已经解决,我是把protege,graphviz和owlseditorbuild15重新装了一遍就好了。装protege的时候要选择choose components--->everything(不知道是不是这个问题)
  回复  引用    

八进制你好,我在导入wsdl文件时,虽然显示“连接超时”但在命令行窗口却出现了:Unable to find required classes : javax.activation.DataHandler and javax.mail.internet.MimeMultipart
难道是我的java vm设置错误了?
请指教,另是不是protege不支持ie使用的代理?用ie直接连wsdl可以打开

  回复  引用    

#33楼 2007-04-30 11:46 Sea[未注册用户]
I am a new boy here, and just know a little about it, I should reply when I get so many from you!
  回复  引用    

为什么我照着你的方法做到11步的时候,ToParameter里是空的,没有可选项呢?
  回复  引用    

--引用--------------------------------------------------
lk: 你好,我照着试了一下,在第七步的时候,左边已经建立了Sequence等,右边也选到了process graph,但没有图形出来,这是为什么呢?

--------------------------------------------------------
我也是,即使安装了,也没用?为什么?C:\Program Files\Graphviz2.16\bin\dot.exe这个路径对不对?

  回复  引用    

八进制,麻烦你可不可以将owl-s editor发给我,我的邮箱:liukunliukun19851007@126.com
qq邮箱也可以:190526287@qq.com

非常感谢!

  回复  引用    

我终于做成功了,写几条想法和问题,与大家分享。按照八进制提供的网址可以下载到对应的软件;
1:在第七步的时候,左边已经建立了Sequence等,右边也选到了process graph,但没有图形出来
解决:你装Graphviz了吗,在owl-s editor里显示图形要用到这个,下载地址在http://www.research.att.com/sw/tools/graphviz/download.html
还是不行
2:在上面的网页上面有个连接,说是缺少某些库,GRAPH的网站上有下载,去下载下来即可
3:画图的时候要看清楚,最好先看清楚关系,11步的FromPerform属性应该是hashPerform,FromParameter属性则是wi1:HashStringResult。这个要看清楚了。不然华出来可能是另外一个图。
与大家一起进步。有问题可以加我,共同交流。66432981QQ

  回复  引用    

#38楼 2008-05-22 21:58 caoli[未注册用户]
非常感谢你的文章,可是我运行到最后的结果老师false而怎么都得不到true?
  回复  引用    

#39楼 2008-06-06 15:29 yuyi[未注册用户]
请问在protege里面用owl-s editor组合服务后,会生成相应的文档吗?比如owl的文档,会得话在哪里?
  回复  引用    

#40楼[楼主] 2008-06-12 20:43 八进制      
没有吧,时间太久记不住了,当时没用到。
  回复  引用  查看    

安装的是protege3.3.1,Graphviz2.16,owl-s editor15,可是在cofiger里面需选中owlstab后,界面显示的是一个空的tab,请问是什么原因呢?
  回复  引用    

我也遇到了导入的问题,重装JDK后就好了.可是在第七步的时候也是没有图形出来。初学owls,请多指教!我在owlViz中可看到关系图,是不是说明Graphviz2.16的安装和路径没有问题呢?
  回复  引用    

#43楼 2008-12-05 21:42 linmei[未注册用户]
你好,我是初学者,遇到些问题,想向你请教,不知道你的联系方式可否告诉?谢谢!我的邮箱是linaimei2@163.com,方便的话请将联系方式发到我邮箱里,十分感谢!------一个急于等待你的回复的同学
  回复  引用    

#44楼[楼主] 2008-12-17 23:03 八进制      
@Monica.wxy
之前有朋友反映graphviz必须安装在默认路径,否则第7步看不到图。也可能是与graphviz相关的环境变量设置问题。抱歉我这已经没有环境了,只能猜测。

  回复  引用  查看    

http://www.bs-byg.dk/hashclass.wsdl 您好 现在这个是不是打不开了 关注你这个博客很久了 呵呵 向你学习 你那还能打开么 希望楼主 看到了能回复
  回复  引用    

#46楼[楼主] 2009-02-16 21:39 八进制      
@zhxiaomiao
是的,我这里也打不开,看来是这个服务失效了。不过用其他web服务也应该可以类似的走通这个例子,在http://www.xmethods.net/可以找到不少可用的web服务,不妨用它们试试。

  回复  引用  查看    

#47楼 2009-02-18 09:11 xiaomiao      
楼主 呵呵 看了你宝宝的相片 好可爱啊 羡慕啊 楼主也很帅啊 呵呵 楼主 在语义web研究上很想能有个向楼主学习的机会 我的 QQ 273507550 每天关注楼主的博客 希望能与楼主联系上吧 向楼主看齐 年轻有为 有宝宝了都
  回复  引用  查看    

#48楼[楼主] 2009-02-18 11:10 八进制      
谢谢你的关注。不过我毕业以后接触语义web的机会不多,知道的东西可能都过时了。
  回复  引用  查看    

#49楼 2009-02-18 11:34 xiaomiao      
我不会老麻烦楼主的哈 能否加我QQ 希望有一些入门的东西可以请教下啊 就当认识个师弟 行么 呵呵
  回复  引用  查看    

#50楼 2009-02-20 16:13 xiaomiao      
楼主 你当时做这个例子时参照的什么文档 能否说下 什么好的语义资料什么的 介绍下好么 呵呵呵
  回复  引用  查看    

#51楼[楼主] 2009-02-21 00:10 八进制      
@xiaomiao
当时是课上学到一些,然后在网上也查了一些资料,可惜具体的链接没有记下来。

  回复  引用  查看    

#52楼 2009-02-23 16:00 szm[未注册用户]
弱弱地问一下,这个组装的web服务能实现什么功能?我不清楚这点所以不能确定你的文章是否能帮助我,我现在在学习使用protege,不知道楼主是否熟悉它的各种功能,可否指教一下,不胜感激!
  回复  引用    

#53楼[楼主] 2009-02-23 18:59 八进制      
组装web服务的过程相当于设计一个流程的过程,这个流程里每个步骤都是由web服务完成的。这个例子里的流程实现的功能是“对输入字符串进行摘要,并验证这个摘要”,在实际应用中,一般是先有一个个原子的web服务,然后再组装它们以达到特定的目的,每个web服务都是可以重用的。听起来和BPEL比较像,OWL-S的意义在于它为流程的自动组装提供了基础,例如我的流程里需要一个摘要步骤,而在网上可能同时有多个web服务实现了这个功能(考虑得更细一点,每个服务都有不同的QoS和收费标准),那么程序利用OWL-S能帮我自动找到适合我要求(例如性价比最高)的那个服务来使用,或者在一个web服务暂时失效的时候找到替代的web服务,等等。
  回复  引用  查看    

#54楼 2009-02-24 11:19 szm[未注册用户]
有点懂了,谢谢楼主,你说的已经很具体了,主要是我的深度不够,谢谢!
  回复  引用    

#55楼 2009-03-27 11:45 曼陀罗依旧
楼主,您好!我刚开始接触语义web,前几天下过protege3.4、4.0,苦于没找到这两个版本的例子或教程,看到您的文章,却又找不到3.1的下载,好像现在protege下载主页上只有3.4和4.0. 用3.4的话,您知道owl-s editor用哪个版本吗?用了个builder22,project—>configure—>owlstab,结果没出来OWL-S Editor页?急切盼望您的答复,谢谢!!
  回复  引用    

@曼陀罗依旧
用protege3.2+graphviz2·14.exe+owlseditor-build20,可以安装成功!
你可以打开迅雷搜索栏直接搜索到的,我都是这样下载的

  回复  引用