1.一种基于本体概念相似度的软件构件检索方法,其特征在于,包括以下步骤:步骤一、用户根据需求向软件构件库发出构件检索请求,软件构件库收到用户的请求后,根据用户的构件需求构建相应的语义本体树;
步骤二、所述的软件构件库根据用户的需求,粗粒度地从构件的OWL描述文档库中检索出对应的构件描述本体树;
步骤三、将所述的构件描述本体树与用户需求本体树进行模糊匹配;是指:通过计算构件描述本体树与用户需求本体树中节点之间的相似度和树中节点的个数,即匹配长度,来计算所述构件描述本体树与用户需求本体树之间的匹配价值;并根据其匹配价值实现所述构件描述本体树与用户需求本体树之间的模糊匹配映射,在这一过程存在两种情况;
第一种情况,所述构件描述本体树与用户需求本体树之间存在模糊匹配:设T=(V,E,root(T))为任意的一棵本体树对应的二叉树,则二叉树T的匹配价值H(M)为:其中: 表示树中所有节点的本体概念相似
度和;︱V︱表示匹配长度,即为树中节点的个数;
设Q=(V,E,root(Q))为查询本体树对应的二叉树,D=(V,E,root(D))为描述本体树对应的二叉树,其中:若:
则称所述构件描述本体树与用户需求本体
树为模糊匹配;其中,≈是指在某个阀值范围内成立;
第二种情况,如果所述的构件描述本体树与用户需求本体树不存在模糊匹配,则将查询本体树对应的二叉树Q中的节点Node和连同节点的叶子一起划分成︱Node︱棵子树;同理也将描述本体树对应的二叉树D也划分为若干棵子树;然后将上述划分出的每棵子树对进行模糊匹配;
采用下列算法提取查询本体树对应的二叉树Q中节点Node:
p=com→lchild;
while(p→rchild!=null){p=p→rchild;printf("p");}由此,分解得出节点系列;然后得到相应的子树系列,同时,依照同样的分解规则将描述本体树对应的二叉树D分解成子树;
在第二种情况下,对描述本体树对应的二叉树D的子树和查询本体树对应的二叉树Q的子树进行映射,设T1=(V1,E1,root(T1)),T2=(V2,E2,root(T2))分别为描述本体树对应的二叉树D的子树和查询本体树对应的二叉树Q的子树,其中E1和E2分别表示T1和T2的边;一个从T1到T2的映射M定义为: 并对所有的(V1′,V2′),(V1″,V2″)∈M满足以下条件:(1) 表示两棵子树中的节点是一一对应的;
(2) 表示映射间保持祖先后代关系;
映射的定义域为:
映射的值域为:
对于一棵本体树,允许对树中的节点进行插入、删除和改变节点的概念这3种编辑操作;因此,对于其对应的二叉树的子树也可以进行此3类操作;
步骤四、如果所述的构件描述本体树与用户需求本体树的匹配不成功,则对失配的构件进行构件重组;并使用KMP算法对查询本体树的相似概念进行修改重匹配;包括:(41)通过步骤三所述的模糊匹配以及子树之间的映射,获取语义相同或相似、但语法不一致的节点,对其进行重组,并计算出相应的重组代价;
(42)根据所述的重组代价对所述的查询本体树、描述本体树两棵本体树进行重组,并利用KMP算法对相似概念进行修改;
步骤五、根据构件的OWL描述文档与相对应构件的自动映射,使用户从构件库中检索到相应的构件。
2.根据权利要求1所述的一种基于本体概念相似度的软件构件检索方法,其特征在于,在所述的步骤二中,所述的从构件的OWL描述文档库中检索出对应的构件描述本体树,包括以下过程:(21)对每一个领域构件采用OWL进行描述从而形成构件的OWL描述文档,然后利用XPath提取其中的本体概念;但对于本体中的对象概念的基本属性进行忽略,所述的基本属性包括:作者,日期;
(22)将XPath提取出的本体概念进行分层分类形成一棵本体树;所述的构件的OWL描述文档对应有一棵描述本体树;为了更好地实现本体概念相似度的映射,将上述的描述本体树转化为描述二叉树。
3.根据权利要求1所述的一种基于本体概念相似度的软件构件检索方法,其特征在于,所述的步骤四,包括以下具体步骤:(41)通过步骤三所述的模糊匹配以及子树之间的映射,获取语义相同或相似、但语法不一致的节点,对其进行重组,并计算出相应的重组代价;
设Q=(V,E,root(Q)),D=(V,E,root(D))为所述的两棵本体树对应的二叉树的子树,M为从Q到D的映射,则定义M的重组代价S(M)为:(42)根据所述的重组代价对所述的查询本体树、描述本体树两棵本体树进行重组,并利用KMP算法对相似概念进行修改;
根据重组代价的定义可知,当查询本体树上的某个节点的概念与描述本体树中对应的概念不匹配时,从相似概念库中提取与查询本体树中此概念对应的相似概念集,如果相似,则替换查询本体树中的此概念;
假设概念集所组成的字符串为:′S1,S2,S3…Sn′,简称概念集串;查询本体树的概念所对应的字符串为:′P1,P2,P3…Pn′,简称查询子串;假若,此时应与查询子串中第k字符继续比较,则查询子串中前k-1个字符的子串必须满足下列关系式满足'p1,p2,...pk-1'='si-k+1,si-k+2,…si-1',且不可能存在k′>k;所述的k
根据已经得到的“部分匹配”的结果'pj-k+1,pj-k+2,...pj-1'='si-k+1,si-k+2,…si-1',可以得到'p1,p2,…pk-1'='pj-k+1,pj-k+2,...pj-1';
同时,将不匹配的概念进行修改,以使得概念子串与查询子串一致。
4.根据权利要求3所述的一种基于本体概念相似度的软件构件检索方法,其特征在于,所述的重组代价包括三个部分:第一部分为由于label(v)≈label(w)而修改查询本体树子树的概念的代价;第二部分为描述本体树子树中没有此节点,而删除查询本体树子树中节点的代价;第三部分为描述本体树子树中有此节点,而在查询子树中添加此节点的代价。