发明内容
本发明的目的在于提供一种基于语义的重用代码匹配查询方法,解决如今重用代码查准率和查全率不高等技术问题,为实现发明的目的,本发明采用如下的技术方案:
基于语义的重用代码查询体系结构,包括:重用代码管理中心、重用代码提供者客户端、重用代码请求者客户端和本体库,所述重用代码管理中心,重用代码提供者客户端,重用代码请求者客户端是相互连接的,并通过基于本体的语义相似度计算进行交互。
上述方案涉及以下操作:
1.为重用代码所涉及的领域建立领域本体;
2.对重用代码进行基于语义的抽象描述;
3.对重用代码进行注册和管理;
4.对本体库进行维护;
5.对重用代码进行基于语义的查询;
6.重用代码信息的返回。
所述为重用代码所涉及的领域建立领域本体是指对重用代码所涉及领域中的词汇进行建模,并为各词汇之间建立合适的关系。
所述对重用代码进行基于语义的抽象描述是指在所建领域本体的基础上将重用代码抽象描述为带有语义的web services的简单结构,通过描述的功能、接口和领域分类即可准确而快速的发现该重用代码。重用代码抽象描述文件的格式都是XML文档,格式是固定的,便于后续的文件解析。
所述对重用代码进行注册和管理是指对于重用代码提供者提供的重用代码的抽象描述文件,代码管理中心对其进行解析并提取重用代码的领域分类、功能和接口等抽象描述信息,以及重用代码库文件的位置信息。
所述对重用代码进行基于语义的查询是指代码请求者需要提供一个基于语义描述的查询请求,重用代码管理中心在此基础上进行基于领域本体库的语义相似度计算,为请求者返回合适的查询结果。
本发明的具体步骤如下:
1.如果没有重用代码所涉及的领域本体,则为该领域建立领域本体,否则,直接到第3步;
2.把新建的领域本体注册到本体库中;
3.重用代码提供者将一个领域中常用的函数进行编译,得到重用代码的库文件
4.重用代码提供者对这些函数的重用代码进行基于语义的抽象描述,得到一个包含描述信息的XML格式文件;
5.重用代码管理中心接收抽象描述信息,并对其进行解析以提取相关信息;
6.重用代码请求者通过代码管理中心基于语义的查询接口进行重用代码查询;
7.重用代码管理中心为代码请求者为返回重用代码的详细信息,包括重用代码的输入、输出参数和这些参数的语义标注信息,重用代码的分类信息,重用代码的库文件的位置信息;其中,重用代码的库文件的位置信息是必须返回的抽象描述信息,其他抽象描述信息可选。
与现有技术相比,本发明的积极效果为:
本发明解决了现有技术中有关大量重用代码维护困难,重用代码查找效率低以及项目开发的重复劳动等问题,本发明通过基于语义的匹配方法来建立高效的重用代码查询方法,实现了重用代码精确快速的查找,提高了项目开发效率和节省了人力物力财力。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合附图对本发明进一步详细说明:
本发明的系统框架包括四部分,分别是重用代码管理中心,重用代码请求者客户端,重用代码提供者客户端和领域本体库,如图1所示:
所述重用代码管理中心是整个系统框架的核心部分,其主要负责对重用代码的描述信息进行存储,主要功能有:重用代码的注册,重用代码的查询以及重用代码描述信息的更新等。重用代码管理中心将根据重用代码的领域分类描述信息对重用代码的描述信息进行分类存储。重用代码管理中心以领域本体为基础实施重用代码的注册、查询及描述信息更新操作。
所述重用代码请求者客户端为用户提供一个查询重用代码的接口,重用代码请求者首先为自己请求的输入输出从本体库中选择合适的领域本体,该接口将通过XML格式对这些信息进行组织以生成基于语义的请求信息,然后将生成的请求信息发送到重用代码管理中心。
所述重用代码提供者客户端主要为提供者提供一个重用代码注册接口,重用代码提供者通过该接口可以获得本体库中的领域本体,在此基础上对重用代码进行基于语义的抽象描述,其通过该接口来提供重用代码的语义描述信息和重用代码所属的领域信息,并将其发送到重用代码管理中心。
所述领域本体库中存储了不同领域的领域本体,它为重用代码管理中心、重用代码请求者客户端和重用代码提供者客户端提供领域本体,是三者运行的基础,需要专门的管理人员对其进行维护。
图2是一个重用代码管理中心详细结构示意图,它包含了Code-DL解析器,重用代码的注册,重用代码的匹配以及其它的管理模块。
Code-DL是重用代码的抽象描述语言,其是带有语义信息的WSDL(Web ServicesDescription Language)的简化版,如图3所示,Code-DL由抽象和语义两部分构成:
抽象部分包括类型描述、消息描述、操作描述、端口类型描述和重用代码的库文件地址信息五部分。其中每个端口类型在逻辑上是一组操作的集合,每个操作定义了一组消息,作为与重用代码交互的基本传输单位。
语义部分包括了输入/输出参数所对应领域本体的信息和重用代码的领域分类信息。
Code-DL解析器的作用是对重用代码的查询请求和注册信息进行解析,并获取重用代码查询或注册所需的要素,如输入/输出端口的语义标注信息、重用代码的分类信息、重用代码库文件的位置信息。其中所述的重用代码的查询请求和注册信息都是采用XML格式进行描述的。Code-DL解析器将获得的信息根据需求分发到重用代码的查询部分或者重用代码的注册部分。
重用代码的注册部分包括领域分类模块、注册信息写入模块和注册消息返回模块。
所述领域分类模块的作用是根据重用代码所属的领域信息对重用代码进行分类标识,以便对重用代码信息进行分类存储;
所述注册信息写入模块的作用是把从Code-DL解析器获得的注册信息和从领域分类模块获得的分类标识写入到数据库;
所述注册消息返回模块的作用是把重用代码注册后生成的消息返回给重用代码提供者,其中所述的注册消息是重用代码管理中心为所注册的重用代码生成的唯一标识。该标识由一串字符和数字组成,其中字符部分是用户名,数字部分是重用代码注册时的系统时间。
重用代码的匹配部分主要以语义为基础对重用代码的各个要素进行匹配,包括领域匹配模块、输入匹配模块、输出匹配模块和查询结果返回模块。
所述领域匹配模块的作用是对重用代码所属的领域信息和重用代码请求者请求的领域信息之间进行匹配,属于关键字匹配。
所述输入匹配模块的作用是对重用代码提供的输入和重用代码请求者请求的输入之间进行匹配,是建立在语义相似度计算的基础上的,属于语义匹配。在输入匹配过程中,只有当重用代码请求者请求的输入和重用代码提供的输入相同时,或者重用代码请求者请求的输入是重用代码提供的输入的子类或者实例时,才称匹配成功。
所述输出匹配模块的作用是对重用代码提供的输出和重用代码请求者请求的输出之间进行匹配,是建立在语义相似度计算的基础上的,属于语义匹配。在输出匹配过程中,只有当重用代码请求者请求的输出和重用代码提供的输出相同时,或者重用代码提供的输出是重用代码请求者请求的输出的子类或者实例时,才称匹配成功。
上面所述的三种匹配的执行顺序依次为:领域匹配->输入匹配->输出匹配。
所述查询结果返回模块的作用是把最终的匹配结果返回给重用代码请求者。返回结果分为四种情况:
第一种情况:同时满足领域匹配、输入匹配和输出匹配的查询结果,该查询结果会首先被返回给重用代码请求者;
第二种情况:同时满足领域匹配、输入匹配的查询结果;
第三种情况:同时满足领域匹配、输出匹配的查询结果。当不能满足第一种情况时,该查询结果和第二种情况中的查询结果会同时返回给重用代码请求者;
第四种情况:不能满足以上三种情况时,称查询失败,给重用代码请求者返回一个查询失败的消息。
由于重用代码的匹配和重用代码的注册都是建立在领域本体的基础上,因此在对重用代码进行语义标注之前,重用代码提供者需要具有相关的领域本体。如果本体库中没有相应的领域本体,则需要请求本体库的维护人员建立相关的领域本体。领域本体的创建过程如下:
1.本体是一个领域内共享概念的形式化说明,在创建领域本体之前需要具备相关的领域知识或者咨询相关领域的专家,以尽可能准确的确定所需要的词汇以及词汇之间的关系;
2.用斯坦福大学开发的本体创建工具Protégé来创建相关领域的本体树,词汇之间的关系是通过Protégé创建的本体树来表现,即得到领域本体;
3.通过Jena提供的API将创建的领域本体注册到本体库中以供用户查询。
图4为一个重用代码提供者从编写重用代码到描述重用代码,直到最后注册重用代码的一个流程图,其详细步骤如下:
1.重用代码提供者编写能够完成一定功能的代码。如下为一段能够完成汽车价格查询功能的代码:
2.重用代码提供者通过Code-DL语言对第1步中编写的代码进行抽象描述。Code-DL的抽象描述包括类型、消息、操作、重用代码的库文件位置和端口类型。
所述类型是数据类型的容器,它包含了所有消息定义需要的XML元素的类型定义。XMLSchema具有内置数据类型,同时允许定义复杂的数据类型,如在汽车价格查询的输入输出数据类型定义中,就引用了XML Schema内置的基本数据类型xs:String。
所述消息具体定义了重用代码使用过程中消息的数据结构。消息建立在类型之上,是由一个或者多个<name,type>组成。
3.重用代码提供者查询本体库中是否具有相关的领域本体,如果没有,则进入第(4)步,否则,直接跳转到第(5)步。
4.重用代码提供者请求本体库维护人员建立所需的领域本体。
5.重用代码提供者从本体库中获得所需的领域本体,然后在此基础上对第(1)步中所编写代码的输入/输出参数进行语义标注,并将标注信息添加到第(2)步描述信息中。
图6为一个简单的运输工具领域本体示意图,其中car,plane,train等都是Transportation的子类,BMW和BYD是car的两个instance(实例)。于是可以把第(1)步中汽车价格查询String类型的输入参数car标注为http://localhost:8080/transportation.owl#car。
6.重用代码提供者将带有语义标注的重用代码抽象描述信息和重用代码所属的领域信息发送到重用代码管理中心进行注册。
7.重用代码管理中心接收到注册信息之后,将按照重用代码的注册步骤进行注册并将注册消息返回给重用代码提供者。
图5为重用代码请求者向重用代码管理中心发送查询请求的流程图,其详细步骤如下:
1.重用代码请求者查询本体库中是否具有自己所需的领域本体。如果不存在相关的领域本体,则查询失败,否则,进入到下一步。
2.重用代码请求者选择所需重用代码所需的领域。
3.重用代码请求者用第(2)步中所选领域中的本体来标注自己请求的输入/输出参数。
例如:重用代码请求者想查询能够完成查询宝马价格功能的重用代码,则请求输入参数可以用http://localhost:8080/transportation.owl#BMW来标注。
4.重用代码请求者客户端将根据重用代码请求者提供的需求生成XML格式的请求消息,并发送到重用代码管理中心。
5.重用代码管理中心接收到查询请求后,按照重用代码提供的匹配部分提供的机制进行重用代码查询。
6.重用代码管理中心将满足查询请求的重用代码的库文件的地址信息返回给重用代码请求者。