以文本方式查看主题 - 计算机科学论坛 (http://bbs.xml.org.cn/index.asp) -- 『 Semantic Web(语义Web)/描述逻辑/本体 』 (http://bbs.xml.org.cn/list.asp?boardid=2) ---- [讨论]owl-s中的Process的IOPE (http://bbs.xml.org.cn/dispbbs.asp?boardid=2&rootid=&id=46065) |
-- 作者:jonee -- 发布时间:4/26/2007 3:48:00 PM -- [讨论]owl-s中的Process的IOPE 在owl-s中,Profile和Process都有IOPE,Profile的IOPE比较简单且随意。 但Process,有ComsiteProcess,AtomicProcess,SimpleProcess三种类型,其中ComsiteProcess的情况就比较复杂了。 我们知道,在自己的owl-s中web service的IOPE是要在Process中描述的,这个描述起的作用,以我的理解是告诉client需要提供什么样的Input,按什么的顺序及在什么情况/时候提供;告诉client会得到什么样的Output,按什么的顺序及在什么情况/时候会得到。 当一个CompsiteProcess肯定要通过调用多个sub Process来完成处理任务。迷惘出现了: |
-- 作者:admin -- 发布时间:4/26/2007 4:39:00 PM -- 参见OWL-S Overview的5.5 Specifying Data Flow and Parameter Bindings http://www.daml.org/services/owl-s/1.1/overview/#sec_dataflow |
-- 作者:timothy -- 发布时间:4/26/2007 4:41:00 PM -- 小弟对楼主的问题谈点自己的理解和看法! 1.被调用的sub Process肯定是由main Process来调用,这就是服务组合,多个服务组合成一个服务的服务,其间对client是透明的,client只知道如果要调用这个复杂的服务要输入某个输入信息,得到某个结果,具体复杂服务的组合过程不知道也无需知道. 为了说明第二个问题,我先举一个简单的例子: 如有简单过程a1,a2,a3,复合过程C1,其中复合过程是由a1,a2,a3按照 sequence组合起来的,最简单的.呵呵. C1 = a1 ->a2->a3 假设a1的输入是 aI1,输出是aO1 a2 aI2, aO2 a3 aI3 aO3 其中,过程a2的输入不是直接从a1的输出获得,a3的输入则是过程a2的输出,即aO2 因此,这个复合过程展现给客户端的调用接口就是两个输入参数: aI1 和 aI2,即该复合服务的调用接口为C1( aI1 , aI2) 2. sub Process的Input是由client来提供,且由client交给main Process后再转交sub Process 3. 不需要区分开啊,每个参数都有来源,都由服务服务的接口展现出来,对用户透明,这些都是web服务的特征啊! |
-- 作者:jonee -- 发布时间:4/26/2007 6:49:00 PM -- to timothy: 1.对于这一点,我认为不是sub Process不是对client透明的,因为client很明显的知道main Process如何由sub Class组成的所有细节。我认为main Process和client之间是按照Process的描述交互性执行的。 另外,从你的例子来看,main Process的接口是所有sub Process的接口的超集,我也有不同的看法,放在第3点讨论。 2.这点我也是这么想的, 正在找其它资料确证这一点。 3.如果main Process的接口是所有sub Process的接口的超集,那么从sub Process的Input的Binding的情况,就可以区分这两类Input。 但我认为main Process的Input是在main Process的处理过程中需要用到的,而只在sub Process中使用的Input,不会在main Process中表现出来。设想一个服务,由简单过程a1,a2,a3组成复合过程C1,C1 = a1 ->(a2 or a3),其中调用a2还是a3依赖于a1的返回值: 假设a1的输入是 aI1,输出是aO1 a2 aI2_1,aI2_2 aO2 a3 aI3_1,aI3_3 aO3 在这种情况下,a2和a3的输入是互斥出现的,如果都放在C1的接口里,则是一种浪费,考虑到非常复杂的Process存在的必然性,这样的浪费是不能忽视的。 接下来这里,以main Process的接口不是sub Process的接口的超集为前提。 假定过程输入aI2_1和aI3_1来自用户输入,且不在main Process中使用,那么这两个输入不会在main Process的Input中出现;aI2_2来自于a1的输出,a3I_2也是来自a1的输出,但是只需要a1输出的Individual的一个property值(假定a3由第三方提供,接口不能更改),因此不能binding到a1的输出。那么,在a3需要输入的时候,client就不能区分a3I_1和a3I_2的不同,不知道要提供那些Input。 |
-- 作者:jonee -- 发布时间:4/26/2007 8:48:00 PM -- to admin:你那个广告太显眼了,居然没有看到你的回复,抱歉的说。 你说的那个overview偶看了,才想到这些问题的。 也说是看得不够细?偶再看看。 |
-- 作者:jonee -- 发布时间:4/28/2007 10:11:00 AM -- 又读了读owl-s:semantic markup for web services,多了一点理解。 本来想等等其它意见的,不过只见点击数增加,不见回音,还是自己说一下先。 1.所有sub Process的需要由client提供的Input都应当在parent Process的Input申明中存在,并进行Binding。parent Process的Input申明只是告诉client如何准备数据,其Process执行过程仍然是交互的,不是要求一次性提供的所有数据。 2.当Compsite Process collapseTo a SimpleProcess的时候,对client是透明的,但是SimpleProcess不可调用,只应用于推理。 3.关于Binding,如何把一个sub Process的Input/Output Binding到parent Process的一个内部变量上,还是不清楚怎么做,希望能有人指点一下。 |
-- 作者:timothy -- 发布时间:4/28/2007 11:07:00 AM -- 再谈一下: 上面楼主和我以前的意思已经基本接近了,请楼主一定要明白一点:什么是服务组合?服务组合就是把多个子服务组合成为一个服务.对于OWL-S中的过程也是一样的,把多个simple process或composite process组合成一个大的composite process. 既然最后得到的也是一个process,那么对用户来说,他和其他的process就没有什么两样了! 即他呈现给用户的就是组合后的IOPE,至于其内部的组合过程,组合结构是如何安排的,以及子过程之间的变量是如何绑定的就是服务组合的内容了! |
-- 作者:jonee -- 发布时间:4/28/2007 3:07:00 PM -- to timothy: 对于CompositeProcess,我的理解可能和你有点差别:我认为CompositeProcess并不是它的sub Process的组合,而是在它执行的过程中,按照CompositeProcess的描述,过程性的调用了sub Process。 当CompositeProcess做为被另一个Process调用时,作为一个Process,其调用的机制是相同的,这没有什么问题。 但是,在CompositeProcess中的描述仍然是对client有用的,如果client要调用这个CompositeProcesss,那么client清楚的知道它的组合结构,应该不会只是简单的提供Input,接受Output,很可能根据Composite的执行过程的进行情况,来处理client相关的其它事务。 |
-- 作者:timothy -- 发布时间:4/28/2007 3:27:00 PM -- 对,CompositeProcess过程当然是过程性的调用的subProcess的啊,那么它是怎么组合的呢??? 这应该有专门的组合语言将将子过程组合起来啊 !!在服务组合中就有BPEL啊,一个服务组合流程也不是把每个服务物理上组合在一起啊!!!!只是一种组合规范啊! 确实,在过程的执行过程中,是有一个负责过程执行状态的监控模块,但是对用户来说,CompositeProcess还是透明的 啊 !!! |
-- 作者:jonee -- 发布时间:5/9/2007 9:04:00 PM -- 多谢timothy的热心回答。 |
-- 作者:zhaonix -- 发布时间:5/10/2007 3:34:00 PM --
假设你这里的“内部变量”指的是Local类型的Parameter, 则我的理解: |
-- 作者:zhaonix -- 发布时间:5/10/2007 3:57:00 PM --
对你的困惑有同感:OWL-S的定位,个人感觉有些不伦不类,似乎把Choreography和Orchestration混为一谈了。或者说打着组合服务的旗号,干的却是接口描述的活计。 1)它不像人们期望的那样、即BPEL4WS那样可以把若干WS组合起来形成一个新的WS——就像普通的编程中一层层函数调用调用者不关心被调函数的内部实现。 因为OWL-S不仅把内部实现文件(process)也向用户发布,而且你得到一个组合服务服务的三四个OWL-S文件后,根本没法调用它——其中找不到这个组合服务的WSDL文件的地址!你得通过其他带外的方式获取。 更糟的是:即使拿到WSDL文件了,却不知道WSDL中的各个IO参数和OWL-S描述中各个IO参数之间的对应关系!!!OWL-S Grounding只有成员服务的grounding, 没有组合服务的。 也就是说你辛辛苦苦匹配了半天,终于弄清OWL-S描述中每个IO参数的“语义”了,却在调用时跟WSDL里的IO描述对不上号!自动发现之后的自动调用,也就不可能进行了。 ——即OWL-S做了Orchestration的工作,但又不彻底。 2)如果不把Process看作一个组合服务的内部实现,而是看作服务客户的使用手册之类的东西的话,竟反而特别合适!即用于补充WSDL,描述一个多步骤服务的调用接口。比如“搜索-下订单-支付"这种网上商店中可能提供的典型WS,其各个operation之间存在次序约束和变量绑定关系,这用WSDL无法描述。 这有点像、但不同于站长那本书里说的Choreography, 但似乎符合WSMO中对Choreography的定义:某个服务的接口描述。 这个问题挺严重的。不知道是不是自己对OWL-S理解不够造成的误会,但我一个同学也是这么看的。谁给点不同意见? [此贴子已经被作者于2007-5-10 16:41:02编辑过]
|
-- 作者:jonee -- 发布时间:11/29/2007 12:30:00 PM --
to zhaonix : 很抱歉,太久没有来了. 这个问题的提出,是因为我使用了Protege的owlsEditor插件,在进行Binding的时候不能选择Local类型的变量.现在,我想这可能是owlsEditor的问题. |
-- 作者:wanggou -- 发布时间:11/30/2007 9:21:00 AM -- 请参考这个文章 Bringing Semantics to Web Services with OWL-S |
-- 作者:lvduoxi -- 发布时间:1/5/2008 10:49:00 AM -- web服务中存在“或”,“异或”吗? 在下不太懂,我看到的文章里有这么说的 王建星,郑忠楷发表的《web服务动态组合研究》中这么说的! |
-- 作者:ddddddddddddd -- 发布时间:1/8/2008 9:08:00 PM -- 可以看看这个论文 http://lib.hzu.edu.cn/q.htm?263991 |
-- 作者:meago -- 发布时间:1/10/2008 7:29:00 PM -- 这篇文章在哪可以下啊? |
-- 作者:meago -- 发布时间:1/10/2008 7:32:00 PM -- 这个论文是我同学,你怎么有了? |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
187.500ms |