一种跨域语义Web服务的分布式搜索方法
技术领域
[0001] 本发明涉及分布式集群网络的搜索技术,特别是涉及一种跨域语义Web服务的分布式搜索方法。
背景技术
[0002] Web服务描述框架UDDI(Universal Description,Discovery,and Integration)是一个应用层服务的发现、描述和执行标准,为执行远程服务提供一套丰富的功能性结构描述工具,然而很难满足跨域服务动态发现的需求,主要原因在于:首先,UDDI限制到服务描述的关键词准确匹配或者通过浏览服务分类表的方式进行匹配,不支持一些定性的或服务非功能性特征(如位置、价格、网络连接速度等)的搜索,很难实现分类检索,需要增加服务的语义信息;其次,在大范围多域网络环境中,每个服务提供者都有自己的服务目录(Services Directory),在服务选择时,由于多域之间没有通用的“服务目录的索引”,服务请求者必须分别浏览各域的目录;第三,各域的服务目录尽管可以在域间复制,但缺少复制目录之外的分布式服务信息。
发明内容
[0003] 本发明所要解决的技术问题就是为了克服上述现有技术存在的缺陷而提供一种跨域语义Web服务的分布式搜索方法。
[0004] 本发明的目的通过以下技术方案来实现:一种跨域语义Web服务的分布式搜索方法,其特征在于,包括:
[0005] 通过网络本体语言OWL(Web Ontology Language)构建Web服务的领域本体、分类本体以及服务描述本体;
[0006] 采用增量式语义标注语言SAWSDL构建Web服务语义描述模型,用于对Web服务进行规范的、具有语义功能的规范描述;
[0007] 通过SAWSDL语言对Web服务语义描述模型的特征参数进行语义标注,建立与本体词汇的规范映射关系;
[0008] 对Web服务进行语义增强;
[0009] 采用分布式哈希表和Bloom过滤器为每个服务节点建立本地索引以及全局索引;
[0010] 利用分布式存储,将服务和本体库作为副本存储至相邻节点上。
[0011] 所述的领域本体包括服务所在领域的规范词汇集和词汇集间的关系,以类Class和实例对象Instance Object的形式存储在领域本体库中;所述的分类本体包括一类服务需要的属性集Attribute Set,集合中的属性对应的值来自于领域本体;所述的服务描述本体为分类本体中的属性和领域本体中的值组成的对服务描述的元组集合。
[0012] 所述的分类本体还包括用于增加服务种类的通用本体,该通用本体隶属于分类本体。
[0013] 该方法对不同节点的本体进行强聚合本体映射。
[0014] 所述的Web服务语义描述模型的特征参数为非功能性特征参数,该参数包括服务标识Service ID、服务模式Service Schema、服务描述Service Description、过期时间Expiry Time以及版本Service Version,所述的服务标识Service ID包括本地标识Local ID以及全局Domain ID。
[0015] 所述的对Web服务进行语义增强包括:
[0016] 通过XML语言中的名称空间Namespaces xmlns前缀来限定元素概念的应用范围,区分同词不同义的词汇;
[0017] 通过OWL语言中的“equivalentClass”、“theSameAs”以及“subclassOf”关键字来扩大同义不同词的概念。
[0018] 该方法通过SAWSDL语言来增强既有的WSDL文件的语义。
[0019] 所述的为每个服务节点建立本地索引以及全局索引为:
[0020] 各节点构建目录索引:Web服务由服务的非功能性参数p描述,通过分类本体支持表示为一个三元组(A,C,I),A表示服务的属性,C表示领域本体中的类,I表示领域本体中的实例对象,多个非功能参数用p的序列来表示P={p1……pn},将参数P,即三元组(A,C,I)的值经过h个哈希函数散列成为一个Bloom Filter,记做bf,n个查询请求参数的三元组产生的n个bf通过“异或运算”得到一个Bloom Filter,记做BF;将各个三元组中的A对应的分类本体分别用哈希函数进行散列得到一个值,记做hash(O1)……hash(On);将BF和hash(O1)……hash(On)分别组成的二元组作为目录索引中存储的元素;
[0021] 通过分布式哈希表DHT(Distributed Hash Table)算法将各节点的目录索引分布到网络上,建立DHT的查找表Finger Table;
[0022] 在本地索引中,选择分类本体的哈希值hash(O)作为key,选择BF和服务描述的URIs(Uniform Resource Identifiers)组成的二元组作为value,如下表:
[0023]
Key Value
Hash(O)
…… ……
[0024] 在全局索引中,选择分类本体的哈希值hash(O)作为key,选择BF和服务提供者Service provider的URIs组成的二元组作为value,如下表:
[0025]
Key Value
Hash(O)
…… ……
[0026] 该方法利用分布式存储,将服务和本体库作为副本存储在相邻节点上,所述的分类本体的哈希值通过多个哈希散列函数映射到不同目录节点的DHT查找表中。
[0027] 该方法在进行哈希函数撒列时,采用SHA-1标准,将264位的输入参数散列为160比特位的散列值。
[0028] 与现有技术相比,本发明通过本体对跨域网络中的Web服务进行语义增强的规范描述,改进传统基于关键字的服务搜索,提高服务发现的准确性和效率;通过构建目录节点和服务索引,给出在分布式网络中对跨域的Web服务搜索发现的方法,为企业集群和业务协同提供更有效率的途径。
附图说明
[0029] 图1为本发明的分类本体示意图;
[0030] 图2为本发明的分层本体之间的配合模型示意图;
[0031] 图3为本发明的强聚合本体映射示意图;
[0032] 图4为本发明的服务非功能参数描述模型示意图;
[0033] 图5为本发明通过Bloom Filter建立目录索引的示意图;
[0034] 图6为本发明的集群网络目录索引示意图;
[0035] 图7为本发明的跨域Web服务动态发现模型示意图。
具体实施方式
[0036] 下面结合附图对本发明作进一步说明。
[0037] 如图1-7所示,一种跨域语义Web服务的分布式搜索方法,包括:
[0038] 通过网络本体语言OWL(Web Ontology Language)构建Web服务的领域本体、分类本体以及服务描述本体;
[0039] 采用增量式语义标注语言SAWSDL构建Web服务语义描述模型,用于对Web服务进行规范的、具有语义功能的规范描述;
[0040] 通过SAWSDL语言对Web服务语义描述模型的特征参数进行语义标注,建立与本体词汇的规范映射关系;
[0041] 对Web服务进行语义增强;
[0042] 为每个服务节点建立本地索引以及全局索引;
[0043] 利用分布式存储,将服务和本体库作为副本存储至相邻节点上。
[0044] 领域本体包括服务所在领域的规范词汇集和词汇集间的关系,以类Class和实例对象Instance Object的形式存储在领域本体库中,例如类是“城市、国家”,对应的实例对象是“上海、中国”,表示为(城市,上海)和(国家,中国),形式上是(类,对象)的一个二元组表示,数学表示为(C,I),C表示类,I表示实例对象;
[0045] 分类本体包括某一类服务需要的属性集Attribute Set,也叫称为“服务参数”,这些属性集是预定义的,集合中的属性对应的值(参数值)来自于领域本体;例如,客货运输类的服务有属性“目的地(Destination)”,对应的值来自于领域本体中的(城市,上海)二元组;分类本体还可以定义一套标准的属性集和,进而推广到范围更加宽泛的服务种类之中,作为补充服务通用本体(通用本体∈分类本体)。比如定义属性集合包括过期时间、覆盖范围、版本等元素。分类本体的功能结构可用图1表示;
[0046] 服务描述本体实际上是一个服务描述文档,选择分类本体中的属性和领域本体中的值组成对服务描述的元组集合;例如,某个飞机航班的Web服务可以选择分类本体中的属性“目的地”和“到达时间”,领域本体中的(城市,上海)和(日期,3月1日)组成对该服务的描述元组集合(目的地,城市,上海)和(到达时间,日期,3月1日);
[0047] 分层本体之间的配合模型见图2。
[0048] 在分类本体和它的领域本体之间通常具有紧密联系。然而,很可能存在不同的本体描述相同的服务分类,需要不同本体概念之间的映射和翻译。基于概率论和AI的文本处理、本体知识空间(Knowledge Space)、强聚合本体(Glue Ontology)等方法可以实现本体的相互映射和翻译,图4示意了一种强聚合本体映射。在语义匹配过程中,作用在服务目录上的搜索操作与查询过程中本体同义词数量的关系较大,而其数量由本体之间强聚合的复杂性决定。产生查询同义词的本体由不同的服务提供商独立创建,这些本体必须能够通过强聚合本体链从原始的查询本体得到。否则,查询过程新建的服务描述本体是不能推理的,如图3。
[0049] 对Web服务进行规范的、具有语义功能的规范描述,是跨域Web服务发现的一个重要前提条件。目前对Web服务的描述主要的是利用WSDL(Web ServiceDescription Language),包括服务的功能性特征参数和非功能性特征参数,功能性特征参数对服务的执行是有影响的,比如服务的接口、输入输出、前提条件和执行效果(IOPEs)。非功能性特征参数对服务的执行并没有直接的影响,比如服务的单位名称,服务所使用的语言,价格和性能描述等参数。例如用户想要寻找网络服务提供商的服务,他可以通过功能性参数“端口号”来搜索网络服务,也可以通过“价格便宜”等描述性信息搜索网络服务。
[0050] 由于查询服务的用户大多数是不了解某个特定专业领域的术语和知识的,搜索服务时主要依靠定性的描述语言,因此用户对服务的查询搜索更多的应该是基于非功能性特征参数。本方法所构建的服务语义描述模型中,服务的非功能性特征参数主要包括服务标识(Service ID)、服务模式(Service Schema)、服务描述(ServiceDescription)、过期时间(Expiry Time)和版本(Service Version)。由于本方法研究的是跨域的分布式Web服务搜索,因此服务标识由两部分组成:本地标识(Local ID)和全局标识(Domain ID),非功能性特征参数的结构如下图4所示。
[0051] 传统的Web服务发现所依靠的UDDI等工具,对Web服务的非功能性特征参数并没有很好的利用和重视,仅仅是提供诸如服务的简单分类词汇和服务提供商的名称而已,这对Web服务的搜索来说是远远不够的。非功能性特征参数不仅是让人查看的,更应该能够让计算机理解,因此在语义的规范描述中,应该为非功能性特征参数提供良好的语义标注。
[0052] 对于服务的语义增强,主要依靠的就是本体(Ontology)技术,本体的本质就是规范的概念集合,包括概念之间的关系。目前对于Web服务的搜索发现大多都是基于关键字的匹配,当用户查询所提交的关键字和服务描述中的关键字能够匹配时,就等于是发现了所需要的服务。而本方法所研究的基于本体的语义增强型服务搜索不仅能够找到与描述词汇相匹配的服务,而且能够找到和查询词汇不同字但是却由同义词描述的Web服务。
[0053] 这个过程本质是将词汇范围“先缩小,后放大”的过程。缩小词汇范围是指将用户所提交的查询请求限定在一个领域范围之内,因此不会出现服务的搜索结果中有很多同词汇但是并没有关系的服务。这个过程可以通过XML中的名称空间和词汇概念的URIs来实现。即首先将用户的查询请求控制在合理的、客观上相关联的领域内。放大词汇范围是指在相关的领域内,通过本体的规范作用,产生用户所提交的查询词汇的同义词,比如一个有关无线网络服务的用户查询请求是“范围=10米”,那么通过本体的作用,可以找到用“距离=10米”描述的相同功能要求的服务,因为在无线网络服务的领域内,“范围”和“距离”可以被本体定义、映射为同义词;所述的对Web服务进行语义增强包括:
[0054] 词汇范围先缩小后放大的具体过程如下:首先是缩小词汇范围,利用XML语言中的名称空间(Namespaces)xmlns前缀来限定元素概念的应用范围,区分同词不同义的词汇。比如下面的xml代码:
[0055]
[0056] 订票系统
[0057] 2009年1月1日
[0058]
[0059] 2008年6月6日
[0060] 98
[0061]
[0062]
[0063] 在book里面有个date元素,在description里面也有个date元素,那么对于这两个同词不同义的词,需要用名称空间进行区分,利用xmlns修改以上代码,如下:
[0064] [0065] xmlns:b=′http://tongji.edu.cn/bschema′>
[0066] 订票系统
[0067] 2009年1月1日
[0068]
[0069] 2008年6月6日
[0070] 98
[0071]
[0072]
[0073] 通过名称空间,将两个“date”概念进行了区分,本质也就是将date的范围进行了区分进而缩小。
[0074] 然后是将词汇范围在缩小的基础上再放大的过程:通过本体的OWL语言中的equivalentClass、theSameAs,subclassOf关键字来扩大同义不同词的概念。比如:
[0075]
[0076]
[0077]
[0078] A knowledge-domain ontology of booking service concepts[0079]
[0080]
[0081]
[0082]
[0083] A class of the time when the ticket is booked
[0084]
[0085]
[0086]
[0087]
[0088] A class of the time when the ticket is booked
[0089]
[0090]
[0091]
[0092]
[0093] 这里,利用equivalentClass,表示了在订票领域中,date和time是等价的概念,用户输入的date和time数据会被自动的作为等价概念来处理。
[0094] 本方法通过SAWSDL语言来增强既有的WSDL文件的语义。
[0095] 跨域的Web服务,是由多个异质或异构的网络组成的分布式网络,要将这些异构的网络组合成一个分布式的集群网络,需要将某些节点作为服务目录节点,这些目录节点作为各个网络领域的网关节点形成点对点的对等网(Peer-to-Peer),首先负责存储Web服务的描述信息。其次,在分布式集群网络中,对数据的全部查找会造成很大的网络负载和硬件成本,所以在目录节点建立服务的索引以减少因数据的完全读取造成的负载。
[0096] 本方法采用Bloom Filter算法(布隆过滤器)和DHT算法(分布式哈希表)实现在集群网络中的索引和索引分布。DHT的拓扑结构,本方法采用方便的Chord环结构作为覆盖网的拓扑结构。在进行哈希函数的散列时,使用Chord采用的SHA-1标准,即基于MD5或MD4原理,将264位的输入参数散列为160比特位的散列值。
[0097] 所述的为每个服务节点建立本地索引以及全局索引为:
[0098] 各节点构建目录索引的原理:如图5,Web服务由服务的非功能性参数p描述,通过分类本体支持表示为一个三元组(A,C,I),A表示服务的属性,C表示领域本体中的类,I表示领域本体中的实例对象,多个非功能参数用p的序列来表示P={p1……pn},将参数P,即三元组(A,C,I)的值经过h个哈希函数散列成为一个Bloom Filter,记做bf,n个查询请求参数的三元组产生的n个bf通过“异或运算”得到一个Bloom Filter,记做BF;将各个三元组中的A对应的分类本体分别用哈希函数进行散列得到一个值,记做hash(O1)……hash(On);目录索引中存储的元素就是由BF和hash(O1)……hash(On)分别组成的二元组(BF,hash(On))。当用户提交查询请求时,通过用户接口界面得到m个服务的非功能性参数p,通过上述的方法得到一个Bloom Filter,记做BF’,作为二元组的第一个元素,然后任意选择一个描述参数p的分类本体,通过哈希函数进行散列得到分类本体的哈希值,作为二元组的第二个元素。比较BF和BF’,判断查询的服务是否存在,如果服务存在,返回分类本体的哈希值所关联的服务。另外,若用户提交的多个查询参数组成的序列是某个服务描述的参数组成的序列的子集,便可得知该服务满足查询的条件,服务被发现。
[0099] 在分布式的集群网络中,每个目录节点不可能只保存自己的服务索引信息,还应当保存有其他目录节点上的索引信息,组成一个动态的分布式覆盖网络(OverlayNetwork)。因此,本方法通过改造上面所讲述的目录索引,将集群网络中的目录索引分为两部分:本地索引(Local Index)和全局索引(Global Index),如图6。
[0100] 通过分布式哈希表DHT算法将各节点的目录索引分布到网络上,建立DHT的查找表Finger Table;
[0101] 在本地索引中,选择分类本体的哈希值hash(O)作为key,选择BF和服务描述的URIs组成的二元组作为value,如下表:
[0102]
Key Value
Hash(O)
…… ……
[0103] 在全局索引中,选择分类本体的哈希值hash(O)作为key,选择BF和服务提供者Service provider的URIs组成的二元组作为value,如下表:
[0104]
Key Value
Hash(O)
…… ……
[0105] 在跨域的分布式网络中,用户提交的请求先在本地索引中匹配,查询的服务参数所对应的hash(O)通过查找本地索引中的hash(O),找到对应的BF,和请求参数产生的Bloom Filter做比较。如果BF判断服务存在,则服务发现,调用URI所描述的服务。
[0106] 如果本地索引没有匹配,就把查询提交到全局索引中匹配。先判断查询的hash(O)是否和索引中的key对应,若有对应则再次利用BF判断服务是否存在进而调用服务提供者的URI;若没有对应的key,则通过网络路由到邻接目录节点,继续判断,直至找到匹配的服务或者返回没有匹配服务的结果。
[0107] 由于服务的调用情况频率不同,某些服务调用的次数很多,而某些服务调用的次数很少,为了负载均衡,利用分布式存储,将服务和本体库作为副本存储在它的相邻节点上。因此,用户对某个服务的查找不会只读取某个节点而可以从多个副本节点上发现和调用服务。当局有某个服务的节点推出网络后,用户依然可以通过它的邻接点来查找需要的服务。这里主要可以利用分布式文件存储技术。
[0108] 由于服务的调用情况频率不同,某些服务调用的次数很多,而某些服务调用的次数很少,为了负载均衡,利用分布式存储,将服务和本体库作为副本存储在它的相邻节点上。因此,用户对某个服务的查找不会只读取某个节点而可以从多个副本节点上发现和调用服务。当局有某个服务的节点推出网络后,用户依然可以通过它的邻接点来查找需要的服务。这里主要可以利用分布式文件存储技术。
[0109] 另外,利用多个哈希散列函数,将分类目录的哈希值映射到不同目录节点的DHT查找表中,减少对某个单一目录节点的访问负担。即让多个节点存有服务的索引,如同好多个人都持有某人A的家庭住址一样,找到任何一个持有地址的人,就可以找到A。
[0110] 本发明的技术实现:
[0111] 1、本体构建
[0112] 使用OWL(Web Ontology Language)构建方法中的各层本体。
[0113] 2、语义标注
[0114] 采用W3C建议的增量式语义标注语言SAWSDL(Semantic Annotations forWSDL and XML Schema)建立一种符合跨域Web服务发现问题的语义服务描述模型。通过SAWSDL对上述服务非功能性特征参数进行语义标注,和本体的词汇建立规范映射关系。
[0115] OWL-S是通过整体对Web服务进行语义增强的,不能对服务描述比如WSDL的局部信息添加语义,灵活性较差。对于跨域Web服务,不同的服务提供者有不同的服务描述框架,通过整体进行Web服务的语义描述规范很难实现,特别是对于既有的WSDL文件的语义添加比较困难,鉴于需要对目前已经存在相当多的非语义WSDL服务描述添加语义,采用SAWSDL增强Web服务的语义可以更灵活、更具有衔接性。例如,对于服务描述的参数“价格”,进行语义增强如下:
[0116]
[0117] [0118] sawsdl:modelReference = ″ http://www.w3.org/2002/ws/sawsdl/spec/ontology/pur
[0119] chaseorder#Price″>
[0120]
[0121]
[0122] WSDL文件中的非功能性特征参数“Price”通过sawsdl:modelReference和本体中的Price概念词汇关联,实现为WSDL的局部添加语义信息。
[0123] 3、本体映射和语义匹配
[0124] 使用OWL中的equivalentClass、subClassof或者sameAs来表示本体中的概念词汇或者本体之问的关系。使用本体推理机比如Jena实现语义的匹配。
[0125] 4、用户接口界面
[0126] 前台使用JSP Web Potal构建用户接口界面,后台使用企业级Java Beans,在将XML的节点实例化为JavaBean的变量值时,采用OWL的本体而不是传统的XML模式作为词汇和数据结构的规范。
[0127] 5、分布式网络架构
[0128] 首先基于对等网技术,建立一种图7所示的跨域Web服务动态发现模型(Service Discovery Model for multi-Domain,SDM)
[0129] SDM模型提供对等网索引节点、用户代理、服务代理、本体服务注册中心、策略服务器、服务中间件等组件以及一些核心技术。对等网索引结点在对等网发现网络中分布服务信息和允许在多域网络中发现服务,对等网使用基于DHT的体系结构来存储服务信息和解决查询;用户代理作为终端用户和发现系统之间的接口,依赖于特定域的服务发现技术;
服务代理是服务提供者和发现系统之间的接口,处理服务发布、发布更新和/或者取消注册等;本地服务注册中心依赖于域内部的服务发现机制,负责存储服务记录和响应服务发现请求;策略服务器负责提供服务发现策略,控制域外的服务发布和查询,这些策略是面向特定域的。服务中间件负责控制和处理跨域的服务发布和查询,是本地发现技术和跨域发现系统之间的接口。一方面抽象本地服务发现系统,处理来自用户代理、服务代理以及来自域间系统的请求,在本地系统执行;另一方面处理中间件/节点、中间件/中间件的通讯,为跨域发现过程中的对象提供必须的访问接口。
[0130] 6、索引存储模块
[0131] 使用已有的Java语言的Bloom Filter类库实现Bloom Filter,在本地索引中使用标准的Bloom Filter,而在全局索引中使用改进的累加Bloom Filter。分布式Chord拓扑结构的实现采用JXTA中的对等网框架来完成。
[0132] 应用实例
[0133] 单一服务参数的情况:
[0134] 假设一个飞机航班查询的Web服务,A机场的服务系统在JSP构建的用户界面中提供用户输入的模板:用户选择服务参数“出发点”和“目的地”,用户选择了“目的地”;领域本体作用下对应的类选项是“城市”,“国家”和“地区”,用户选择了“城市”;领域本体作用下对应的实例对象有用户自己输入为“上海”。通过本地索引的查找,A机场的服务系统并没有这样的服务,然后通过全局索引,在和B、C机场组建的跨域集群分布式服务系统中搜索到了该服务,而且B和C机场均提供,返回给在A机场终端上查找服务的用户,顺利的订购了飞往上海的机票。虽然C机场的服务系统中定义的服务是“终点站”、“地区”、“XX”这样的模式,但通过本体的支持映射作用,得到了“目的地”的同义词“终点站”,“城市”的同义词“地区”,进而找到了具有相同功能但是描述不同的服务。
[0135] 多个服务参数的情况:
[0136] 多个服务参数的情况和上述基本相同,就是用户除了选择“目的地-城市-上海”这样的选择之后,还进行了“到达日期-时间-3月1日”的选择,通过相同的原理,在B机场提供的服务中找到了匹配的服务。