发明内容
鉴于上述技术问题,本发明提出了一种基于案例规划的web服务自动组合方法,按照对用户请求的解析结果,从案例库中选择与用户请求有较高相似度的案例,在语义web服务关系网络之上利用案例规划算法对案例进行修改,通过修改与用户请求相似的案例,生成满足用户请求的组合服务来产生满足用户请求的组合服务。
本发明提出了一种基于语义web服务关系网络的自动服务组合系统,该系统输入一个用户请求、一个领域本体描述,输出一个满足用户功能性需求的解决方案,其特征在于,该系统包含各种数据集合及模块,按照第一阶段和第二阶段两个阶段并行执行,
第一阶段:对输入的用户请求依序经过混合式服务发现模块、服务转换及关系矩阵建立模块、操作实例化模块、动作依赖关系图建立模块和动作过滤模块的处理,其中:
混合式服务发现模块,包括原子级服务发现和面向组合的服务发现,当接收用户请求后,将用户请求的输入输出与服务网络库中的服务逐个比较,获取相似度最高的服务;当不存在单个满足用户需求的抽象服务时,通过服务发现算法输出一组在输入输出上满足用户请求的抽象服务,这些发现的抽象服务储存在系统的抽象服务集合;
服务转换及关系矩阵建立模块,用于在服务发现完成后,从抽象服务集合中取出被发现的抽象服务,将其转换为相应操作的PDDL描述,转换后的操作储存在该服务自动组合系统的操作集合;
操作实例化模块,用于对操作进行参数绑定,生成规划过程中的动作,输出的实例化的动作,保存于本发明的服务自动组合系统的动作集合中;
动作依赖关系图(action dependency graph)建立模块,用于建立动作依赖关系图用来描述动作之间的联系;
动作过滤模块,利用系统中建立的动作依赖关系图,找出冗余的动作并将其过滤;
第二阶段:对输入的用户请求依序经过混合式服务发现模块、案例获取模块、案例修改模块、案例修正模块、抽象服务实例化模块的处理:
案例获取模块,用于从案例库中获取与用户需求相匹配或相似度高的案例,案例获取分两个阶段进行:静态获取和动态获取,静态获取是将用户的功能性需求中包含的目标状态与案例中的目标状态进行比较,获得一组与用户目标匹配最多的案例集;动态获取是将用户的功能性需求和案例的初始状态进行匹配,此匹配算法是基于特征权值的,通过计算案例中和用户请求相匹配的初始特征的权值和来获取一个大于一定阀值的案例,如果获取的案例能够完全满足用户请求,则将该案例返回给用户;如果获选取的案例与用户请求的相似度大于阈值,则进入后面的案例修正阶段;如果没有满足上述条件的案例,则从头开始规划,生成一个满足用户需求的新的案例;
案例修正模块,用于在系统获取到一个相似度大于阈值的案例后,根据用户需求对案例进行修正,即对案例中解决方案的调整,最终得到一个部分满足用户需求的不完全的半序规划解;
案例修改模块,该模块利用之前建立的动作依赖关系图,对案例修正模块得到的半序规划解进行基于规划空间的启发式搜索,从而获取一个完全的半序规划解,即一个满足用户需求的解决方案;
抽象服务的实例化模块,用于在得到一个满足用户需求的解决方案即一个完全的半序规划后,对该解决方案中涉及到的抽象服务实例化,即用服务网络中的具体服务来替换所对应的抽象服务。
本发明与现有技术相比,对web服务关系网络对离散的服务信息进行了归纳、整理,大大提高了服务发现的效率;混合式的服务发现算法也保证能够在服务网络中准确、高效的查找出合适的web服务;并且,在规划阶段引入了案例规划,规划过程并不是从零开始。在给定用户请求的情况下,系统将搜索案例库,以寻找一个匹配用户请求的现有案例。一方面,它可能找到完全匹配用户请求的案例,从而直接得到解决方案,使复杂问题得到快速解决;另一方面,它也可能检索到一个与用户请求相似的案例或案例集,通过对不相匹配部分的修改而获得满足用户请求的解决方案,同时生成一个新的案例并添加到案例库中,使系统具有学习能力。
具体实施方式
基于案例规划(CBP)的web服务自动组合(CBWSC),在web服务关系网络之上,从服务发现、案例检索和规划算法的设计上进行了改进:
如图1所示,为本发明的系统结构图,该系统输入一个用户请求、一个领域本体描述,输出一个满足用户功能性需求的解决方案。该系统所包含的各种数据集合及模块按照第一阶段和第二阶段两个阶段并行执行,第一阶段对用户请求依序经过混合式服务发现模块、服务转换及关系矩阵建立模块、操作实例化模块、动作依赖关系图建立模块和动作过滤模块的处理:
1、用户请求传送到混合式服务发现模块,该模块包括原子级服务发现和面向组合的服务发现,不仅将用户请求的输入输出与服务网络库中的服务逐个比较,来获取相似度最高的服务,同时当不存在单个满足用户需求的服务时,也能通过服务发现算法输出一组在输入输出上满足用户请求的服务。因为服务网络中存在抽象服务,其是对一组功能相似的具体服务的抽象化,且便于进行服务组合,因此服务发现得到的服务为抽象服务,并且该抽象服务储存在本发明的自动服务组合系统的抽象服务集合中;
2、服务转换及关系矩阵建立模块,该模块用于服务转换及关系矩阵的建立。在服务发现阶段完成后,从抽象服务集合中取出被发现的抽象服务,将其转换为相应操作的PDDL描述,转换后的操作储存在该服务自动组合系统的操作集合中。这一转换由OWLS2PDDL模块来实现;在完成服务转换后建立概念关系矩阵(CRM),用来记录服务输入输出概念之间的相似度,便于规划和案例修改时进行概念关系的查找;
3、操作实例化模块,通过该模块,利用初始条件对从上一模块的操作集合中获得到的服务转换结果,即操作进行初始化处理后,再将该操作(operation)实例化为规划和案例修改中使用的动作(action),也就是说,该模块输出一组实例化的动作,保存于本发明的服务自动组合系统的动作集合中;
4.动作依赖关系图(action dependency graph)建立模块,该模块用于建立动作依赖关系图用来描述动作之间的联系,用来解决冲突,过滤冗余动作,缩小规划空间,使案例修改和规划能够更高效的进行;
5.动作过滤模块,该模块利用上一步建立的动作依赖关系图,从中找出冗余的动作并将其过滤。该功能由Action Filter模块实现。在本发明的服务自动组合系统中设置这种动作过滤模块的原因是:在进行操作实例化后,会产生一些冗余动作,导致增加了搜索空间。动作过滤能使动作的搜索空间变得更小;
第二阶段对用户请求依序经过混合式服务发现模块、案例获取模块、案例修改模块、案例修正模块、抽象服务实例化模块的处理:
1、案例获取模块,用于从案例库中获取与用户需求相匹配或相似度较高的案例。案例获取分两个阶段进行:静态获取和动态获取。静态获取是将用户的功能性需求中包含的目标状态与案例中的目标状态进行比较,获得一组与用户目标匹配最多的案例集。动态获取是将用户的功能性需求和案例的初始状态进行匹配,此匹配算法是基于特征权值的,通过计算案例中和用户请求相匹配的初始特征的权值和来获取一个大于一定阀值(此阀值由系统指定默认值,用户也可以进行修改)的案例。如果选取的案例能够完全满足用户请求,则将该案例返回给用户;如果选取的案例与用户请求的相似度大于阈值,则进入案例调整和修正阶段;如果没有满足上述条件的案例,则从头开始规划,生成一个满足用户需求的新的案例;
2、案例修正模块,该模块用于在系统获取到一个相似度大于阈值的案例后,根据用户需求对案例进行修正,主要是对案例中解决方案的调整,最终得到一个部分满足用户需求的不完全的半序规划解。
3、案例修改模块,该模块利用前面建立的动作依赖关系图,对案例修正阶段得到的半序规划解进行基于规划空间的启发式搜索,从而获取一个完全的半序规划解,即一个满足用户需求的解决方案。在修改过程当中,本系统不仅支持对不完全半序规划的完善,还支持规划的回滚,即破坏原规划中无用的步骤。这使得案例修改过程满足系统性和完备性的要求,即如果存在满足用户请求的规划,则案例修改过程一定能找到,并且对同一个半序规划不可能访问两次。
4、案例学习模块,该系统在本阶段的案例修改模块之后,还可以增加案例学习模块,该模块用于在案例修改阶段完成后,再对案例修改阶段进行分析,例如:如果从案例库中获取的案例是可用的,则将该案例中与用户需求不匹配的特征的权值减少,表示当这些特征不匹配时,该案例仍然可用;如果从案例库中获取的案例不可用,则将该案例中与用户需求不匹配的特征的权值增加,表示当这些特征不匹配时,该案例是不可用的;如果没有从案例中获取到相似的案例,则将规划后新生成的解决方案作为新的案例加入到案例库中。
5、抽象服务的实例化模块,该模块用于在该系统得到解决方案即一个完全的半序规划后,对解决方案中涉及到的抽象服务实例化,即用服务网络中的具体服务来替换所对应的抽象服务。由于在上述组合过程中,本系统是使用服务网络中的抽象服务来进行服务组合的,并不是具体服务。因此,在替换的原则根据用户的偏好以及服务的QOS描述来确定。
下面结合附图对本发明的技术方案进行进一步的描述。
如图2所示,为本发明OWSL-PDDL的转换规则示意图,服务发现完成后,将服务发现的结果传递给服务转换及关系矩阵建立模块,该模块的服务转换功能由Service2PDDL模块实现。按照图2所示的转换规则,Service2PDDL模块将这些服务的OWL-S文件转换为相应操作的PDDL描述。
如图3所示,为Service2PDDL转换模块的处理流程,该流程包括以下步骤:
第一步:获得需解析服务的OWL-S文件,读取该文件。
第二步:检查该文件是否合法,是否符合OWL-S规范。
第三步:解析出用于描述该服务的相关内容,包括服务名、服务参数等信息。
第四步:将解析的结果格式化成符合操作PDDL规范定义的格式。
第五步:将结果持久化为文本,并保存在服务网络中。
如图4所示,为本发明的关系矩阵示意图,在得到相应操作的PDDL描述后,根据发现服务的输入输出建立概念关系矩阵(CRM),来保存领域本体中涉及到的概念之间的关系。
如图5所示,为本发明的概念关系矩阵(CRM)的建立流程,该流程包括以下步骤:
第一步:读取服务所在的领域本体文件。
第二步:读取服务的PDDL文件和用户请求描述文件,分别获取服务的输入输出概念及获取初始状态、请求目标的概念。
第三步:以服务的输入概念和用户请求的目标概念为元素,建立矩阵的行元素列表;以服务的输出概念和初始状态概念为元素建立矩阵的列元素列表;
第四步:对于行元素列表中的每一个概念A,计算其与列元素列表中每一个概念B的相似度。A与B的关系利用jena API在领域本体文件中获得,根据两者之间的关系计算两者的相似度。两概念之间的相似度如前文中所定义。
第五步:将计算出的相似度存入矩阵中的相应位置,存储该矩阵。
完成关系矩阵的建立后,系统将进行操作实例化,即对操作进行参数绑定,生成规划过程中的动作(action)。操作实例化的过程包括以下步骤:
首先找出可直接实例化的操作,即其参数可以直接从初始对象中获取的操作,根据初始对象对每个可实例化的操作进行实例化(参数绑定)。如果某个可实例化的操作有输出变量,则将此输出变量重命名为变量名_n(n=0,1,…N),并将此变量添加到初始对象中,然后继续查找可实例化的操作,重复上述步骤,直到没有操作可实例化或不存在未实例化操作为止。
操作实例化完成后,根据实例化生成动作依赖关系图(ADG)。动作依赖关系图的构造过程如下:
第一步:初始化ADG图,加入表示初始条件和用户请求输出的命题节点;
第二步:加入所有动作节点;
第三步:对于每个动作节点,在图中加入表示其输入输出和前件后件的命题节点,已存在的命题节点不再加入;
第四步:在动作节点与其对应的命题节点之间建立有向边;
第五步:对于每个命题节点,在图中查找该节点的互斥命题节点,若存在,则在该命题节点与产生其互斥命题的动作节点之间建立无向边。
如图6所示,为本发明的动作过滤模块的流程图,在操作实例化结束后,为了使实例化操作的空间变的更小,使用图着色算法对前面建立的ADG进行可用action的着色和过滤,步骤包括:
第一步:除了初始节点着为绿色外,其它节点均着为白色,所有的边着为黑色。
第二步:将初始节点的输出边着为绿色。
第三步:查看所有不是绿色的节点,如果其所有的输入边均为绿色则将其本身着为绿色,并将其输出边着为绿色。
第四步:重复步骤3,直到没有节点可着为绿色为止。
第五步:结束节点是否着为绿色,如果没有,则失败,如果是,则返回所有绿色节点。
图中绿色节点所表示的动作即为可用动作,未着色动作为冗余动作。动作过滤模块将的过滤掉系统当前的冗余动作。
案例获取模块是指根据用户请求在案例库中查找满足用户目标或与用户目标有较高相似度的案例,这一步骤与服务转换同步进行。首先,定义本系统中的案例如下:
一个案例由4部分数据组成,如图7所示,包括:
(一)问题描述:表示此案例所解决的用户请求,可以使用用户请求描述的方法来指定。
(二)解决方案:使用一个半序的规划(plan)来描述解决方案。其中一个半序plan由三部分组成:plan中的步骤,步骤之间的顺序对,步骤之间的因果关系。
(三)使用次数:记录此案例被引用的次数,次数越多说明此案例越有用。
(四)修改难易度:描述对此案例进行修改的平均难易程度。
案例获取模块包括以下三个步骤:
第一步:用户选择其所要解决问题的领域和组织以及其希望完成的功能。
第二步:找出完成的目标和用户请求最相近的案例集合(目标驱动的获取)。
第三步:从第二步的案例集合中挑选一个初始状态和用户请求的初始状态最接近的案例。
案例的存储:
依据案例获取的过程,本系统在案例库上层的领域和组织结构和案例之间架上了三个层次的索引,以提高案例检测的效率。案例存储结构如图8所示,其三层索引如下:
第一层索引:顶层是功能描述表,其中每项包含了一组案例所完成功能的文本描述。
第二层索引:目标类型表。
第三层索引:案例表。
其中,目标类型表中的每一项具有<n,typ-rep,ptr>这样的形式,其中n表示每一项所含的目标数,typ-rep中存储了将案例中目标所包含的变量替换为类型名,并将所包含的初始状态的参数也替换为类型名所得到的目标类型,ptr指向一组和目标类型一致的案例。
针对上述的案例存储结构,本发明设计了案例检索算法如下:
1.首先根据用户所选择的领域和组织,找到组织所对应的功能描述表。
2.在功能描述表中搜索用户指定的功能描述。
3.找到对应功能描述的目标类型表示表。
4.将用户请求的目标情况和目标类型表示表中的项逐个匹配,找到最相似的目标情况。
5.获取对应最相似的目标情况的所有案例。
6.使用动态案例获取方法得到一个和用户请求的输入情况最相似的案例。
7.返回此案例。
案例修正模块包含以下操作:
得到相似案例后,需要对案例进行修正,即对案例中存储的过程模型进行调整,该调整算法如下:
1.将过程模型中start步骤的后件改为用户请求的初始情况。
2.将过程模型中finish步骤的前件改为用户请求的目标情况。
3.将使用到不在当前start步骤后件中的命题的因果连接删除,并删除相应的后续连接。
4.将所含命题不在当前finish步骤前件中的因果连接删除。
案例修改模块包含以下操作:
对获取到的案例进行修正后,本系统进入案例修改阶段,旨在对案例中的不完善半序规划进行完善,从而生成满足用户请求的完善的半序规划。修改算法如图9所示:
第一步,进行预处理,该步骤包括半序规划和ADG,ADG是指动作关系依赖图由系统提供支持,半序规划则由案例检索得到的案例调整后得来;
第二步,检查搜索空间是否为空?这里的搜索空间包含两个不同方向半序规划的搜索空间;
第三步,只有在搜索空间不为空的条件下,从该搜索空间里面的选择一个半序规划,检查其是否完整;若搜索空间为空,则表示组合失败;
第四步,如果检查结果是该半序规划不完整,则需进一步检查该不完整的半序规划方向是否向上,如果该半序规划的检查结果是完整,则表示组合成功;
第五步,如果方向向上,则进一步判断是否有暴露决策:如果有暴露决策,则选择一个暴露策略后,删除决策效果,将解决决策目标的其他解决方法所生成的所有半序规划标记为向下方向,并把它们全部加入搜索空间中,同时,将输出决策效果的半序规划标记为向上方向,并加入搜索空间中;返回程序开始,持续检查搜索空间是否为空;
第六步,如果方向不是向上,则从缺陷集合中选择缺陷后,判断该缺陷是否属于冲突类型,如果是,则增加执行顺序约束关系来消除冲突,将消除完冲突的各种半序规划标记为向下方向,依据ADG来更新其中的缺陷,加入搜索空间中;如果否,利用半序规划已有步骤来消除开放缺陷,将消除完缺陷的所有半序规划标记为向下方向,依据ADG更新缺陷,加入搜索空间中;依据ADG增加新步骤来消除开放缺陷,将消除完缺陷的所有半序规划标记为向下方向,依据ADG更新缺陷,加入搜索空间中,
上述步骤完成后,均返回到程序开始,持续检查搜索空间。
案例学习模块
本发明的基于语义web服务关系网络的自动服务组合系统中,为了进一步提升服务组合实现的效率,本系统还可以增设案例学习模块,用于在基于案例修改阶段完成后,对该阶段进行分析,以完成新案例的学习,补充该系统的案例库。该模块的具体做法是:如果获取阶段得到的案例是可用的,则相应的减小未匹配特征的权值,表示当这些特征为匹配时该案例仍然可用;如果获取的案例是不可用的,则相应的增加未匹配特征的权值,表示当这些特征不匹配是该案例是不可用的,同时将规划生成的新的解决方案作为一个新案例添加到案例库中。将案例插入到案例库中的算法设计如下:
第一步:给定一个案例C以及此案例完成的目标G,以及此案例的功能描述
第二步:在功能描述表中找到和此案例功能描述相同的项
第三步:获取对应此功能表的目标类型表
第四步:在目标类型表中找到和此案例目标一致的项
第五步:将此案例插入到目标类型表所指向的案例表中
第六步:如果在目标类型表中不存在和此案例目标一致的项,则新增加一项,计算此案例的目标类型以及目标数目,并将其加入到新的项中,且新增加一张案例表,并将此案例插入到表中。
抽象服务实例化模块包括以下操作:
在得到满足用户请求的解决方案后,需要对解决方案中的抽象服务实例化,即用服务网络中的具体服务与解决方案中相对应的抽象服务进行替换。本系统利用线性规划的方法,将解决方案中的每个抽象服务,从服务网络中查找相关的具体服务进行替换。替换原则如下:
1.若用户请求中有非功能性需求,如QOS等,则在服务网络中查找满足用户偏好的具体服务替换抽象服务;
2.若用户请求中没有非功能性需求,则根据初始条件,在服务网络中查找当前条件可满足的QOS最高的具体服务来替换抽象服务。
利用上述原则实现抽象服务的实例化,能够保证整个解决方案拥有一个较高的服务质量。
以上内容仅为本发明的实施例,其目的并非用于对本发明所提出的系统及方法的限制,本发明的保护范围以权利要求为准。在不脱离本发明的精神和范围的情况下,本领域技术人员在不偏离本发明的范围和精神的情况下,对其进行的关于形式和细节的种种显而易见的修改或变化均应落在本发明的保护范围之内。