CN113849163B - 基于api文档图谱的操作***智能编程方法及装置 - Google Patents
基于api文档图谱的操作***智能编程方法及装置 Download PDFInfo
- Publication number
- CN113849163B CN113849163B CN202111174889.1A CN202111174889A CN113849163B CN 113849163 B CN113849163 B CN 113849163B CN 202111174889 A CN202111174889 A CN 202111174889A CN 113849163 B CN113849163 B CN 113849163B
- Authority
- CN
- China
- Prior art keywords
- entity
- adg
- api
- relationship
- document map
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 75
- 238000013507 mapping Methods 0.000 claims abstract description 35
- 239000011159 matrix material Substances 0.000 claims abstract description 24
- 230000008569 process Effects 0.000 claims abstract description 10
- 230000006870 function Effects 0.000 claims description 14
- 230000009977 dual effect Effects 0.000 claims description 11
- 238000012549 training Methods 0.000 claims description 10
- 238000010586 diagram Methods 0.000 claims description 8
- 230000000977 initiatory effect Effects 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 6
- 239000003607 modifier Substances 0.000 claims description 5
- 238000003058 natural language processing Methods 0.000 claims description 3
- 230000008447 perception Effects 0.000 claims description 2
- 238000007781 pre-processing Methods 0.000 claims description 2
- 238000010276 construction Methods 0.000 claims 1
- 238000013509 system migration Methods 0.000 abstract description 3
- 208000012927 adermatoglyphia Diseases 0.000 description 7
- 239000008186 active pharmaceutical agent Substances 0.000 description 4
- 238000013508 migration Methods 0.000 description 3
- 230000005012 migration Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 235000014347 soups Nutrition 0.000 description 2
- 230000001502 supplementing effect Effects 0.000 description 2
- 102100028630 Cytoskeleton-associated protein 2 Human genes 0.000 description 1
- 241001235534 Graphis <ascomycete fungus> Species 0.000 description 1
- 101000766848 Homo sapiens Cytoskeleton-associated protein 2 Proteins 0.000 description 1
- 206010063385 Intellectualisation Diseases 0.000 description 1
- 241000412292 Pandita Species 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000003042 antagnostic effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- WOERBKLLTSWFBY-UHFFFAOYSA-M dihydrogen phosphate;tetramethylazanium Chemical compound C[N+](C)(C)C.OP(O)([O-])=O WOERBKLLTSWFBY-UHFFFAOYSA-M 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010899 nucleation Methods 0.000 description 1
- 238000007670 refining Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000004645 scanning capacitance microscopy Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/33—Intelligent editors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/74—Reverse engineering; Extracting design information from source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/76—Adapting program code to run in a different environment; Porting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于API文档图谱的操作***智能编程方法及装置,包括根据从源***及目标***的API文档中提取的所需信息,分别构建源***的API文档图谱ADG1及目标***的API文档图谱ADG2;分别向量化API文档图谱ADG1与API文档图谱ADG2,构建节点表示矩阵及节点表示矩阵基于节点表示矩阵与节点表示矩阵进行API文档图谱ADG1与API文档图谱ADG2的实体对齐任务,得到API映射结果。本发明避免了API文档中有效信息丢失,解决了已有的基于代码的API映射方法存在的代码库不可用、不准确等问题,以及基于文档的API映射方法的信息利用不充分等问题,为后续通过智能编程实现应用程序的跨***迁移的过程提供支持。
Description
技术领域
本发明属于计算机技术领域,涉及一种基于应用程序编程接口(applicationprogramming interface,API)文档图谱的操作***智能编程方法及装置。
背景技术
随着计算机和网络技术的发展,应用程序已经成为了人们日常生活和工作中必不可少的存在。无论是在社交、购物、娱乐,还是教育、运动、出行等方面,应用程序都可以为人们提供极大的便利。不过,由于目前市场上具有众多品牌的电子产品供消费者选择,为了尽可能覆盖到更多的***用户群,同一个应用程序往往需要发布在不同的操作***平台上。然而,在不同操作***的环境下重复编写具有相同功能的代码会对人力物力产生极大的浪费。因此,如何能够通过智能化的编程方法来实现这一需求就成为了一个值得研究的具有实际意义的问题。
由于在功能开发的过程中,通常需要对各种不同的API进行调用,以实现对许多现成的软件库的重用,因此如果能够建立两个不同操作***的API之间的映射关系,就可以智能化的完成从一个***到另一个***环境下的应用程序迁移。因而,本发明将针对操作***的智能化的编程方法的探究转化为了如下问题:在将代码从A***迁移到B***的过程中,如何能够智能化地建立起A***已有代码中所使用的API与B***API之间的映射关系,实现具有相同能力的API的等价替换。
目前已经有了不少与API映射相关的研究。例如,Zhong等在ICSE 2010会议上介绍的使用两种编程语言中相似的类名及相似的API用法来挖掘语言迁移的API映射规则;Nguyen等在ASE 2014会议上介绍的StaMiner旨在通过从两种编程语言的API的客户端代码的并行语料库中对API用法之间的映射进行统计学习来挖掘API映射;Bui等在FSE 2019会议上介绍的名为SAR的域适应方法可以自动转换和对齐两种不同编程语言和API的向量空间,在对抗性学习前后,分别使用播种和细化方法调整代码嵌入技术。然而,这些基于代码的方法在使用上存在一定的限制,因为包含API用法的代码库可能并不可用,且难以保证它们的准确性;同时,仅通过源代码是无法获取某些有效信息的,例如Swift API的绑定类型。其他也有一些基于API文档的方法,例如,Pandita等在SCAM 2015中提出的TMAP:首先从API文档中提取必要的信息;然后为每个API构建一个索引器,并使用术语频率-逆文档频率(term frequency–inverse document frequency,TF-IDF)提取前k个关键字构建查询;最终,搜索器会查询所有关键字相同的API,并根据余弦相似度对结果进行排名。但这些方法并未对文档中的丰富信息加以充分利用。
发明内容
本发明的技术解决问题:克服现有技术的不足,提供一种基于API文档图谱的操作***智能编程方法及装置,在代码迁移过程中,分别以两个不同的操作***为源和目标***,提高对API文档中信息的利用率,进而提高API映射的准确率以及智能化编程的效率。
为了实现上述发明目的,本发明采用如下技术方案:
一种基于API文档图谱的操作***智能编程方法,其步骤包括:
1)根据从源***及目标***的API文档中提取的所需信息,分别构建源***的API文档图谱ADG1及目标***的API文档图谱ADG2;
4)若映射结果为存在映射关系,则利用源***环境下的代码Sc,生成在目标***环境下实现同一功能的代码Tc。
进一步地,构建源***的API文档图谱ADG1及目标***的API文档图谱ADG2之前,对所需信息进行预处理。
进一步地,预处理包括:规范化数据类型和去除无用的标点符号。
进一步地,通过以下步骤构建API文档图谱ADG1:
1)获取源***的API文档中的实体,其中所述实体包括:包级实体集合Pk、类级实体集合C、方法级实体集合M和参数级实体集合Pr;
2)提取各实体的名称属性及实体类型;
3)分别提取包级实体与类级实体之间的包含关系、类级实体与类级实体之间继承关系及嵌套关系、类级实体与方法级实体之间的包含关系及引发关系、方法级实体与方法级实体之间的继承关系、方法级实体与包级实体之间的包含关系,得到关系集合;
4)将各实体的名称属性、实体类型及所述关系集合存储为json文件;
5)对json文件中不同层级的键值进行遍历,基于实体类型与名称属性在图数据库中进行节点的创建;
6)以名称属性为键值在json文件中查找节点所具有的其他属性及属性值,并补充至节点信息中;
7)依据json文件中定义的键值层级,依次将实体与类级实体之间的包含关系、类级实体与方法级实体之间的包含关系及引发关系、及方法级实体与包级实体之间的包含关系,创建于图数据库中;
8)在json文件中,分别以类级实体的名称为键值进行继承关系及嵌套关系,及以方法级实体名称为键值进行继承关系及引发关系进行查找,并将未存在于现有图数据库中的继承关系、嵌套关系及引发关系,创建于图数据库中;
9)将步骤8)创建好的图数据,作为API文档图谱ADG1。
1)对API文档图谱ADG1中的每一个节点进行编号,并将编号结果作为节点属性值;
进一步地,通过以下步骤进行API文档图谱ADG1与API文档图谱ADG2的实体对齐任务:
进一步地,通过以下步骤训练关系感知双图卷积网络:
1)将已知等效实体对作为正面实例;
2)将已知等效实体对中的一个替换为其K最邻近实体,并将替换后的实体对作为负面实例;
3)通过最小化正面实例的实体间距离且最大化负面实例的实体间距离,进行关系感知双图卷积网络的训练。
进一步地,通过以下步骤生成在目标***环境下实现同一功能的代码Tc:
1)遍历代码Sc的每一行,判断是否存在API调用的情况:若存在,则在API文档图谱ADG1的实体中搜索相应的实体E1(a),其中a为API调用的名称;
2)依据映射结果,在API文档图谱ADG2中找到与API文档图谱ADG1存在映射关系的实体;
3)基于存在映射关系的实体,对代码Sc的API调用进行名称替换,生成在目标***环境下实现同一功能的代码Tc。
一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行以上所述方法。
一种电子装置,包括存储器和处理器,其中存储器存储执行以上所述方法的程序。
与现有技术相比,本发明具有以下优势:
1、本发明提出了API文档图谱的概念,以及构建不同操作***的API文档图谱并针对其进行实体对齐以获得API映射进而实现智能化编程的方法,从而解决了已有的基于代码的API映射方法存在的代码库不可用、不准确等问题,以及基于文档的API映射方法的信息利用不充分等问题;
2、本发明可以在避免API文档中有效信息丢失的情况下将其转化为知识图谱形式的数据,作为实体对齐神经网络模型的输入,为后续通过智能编程实现应用程序的跨***迁移的过程提供支持。
附图说明
图1是基于API文档图谱的操作***智能编程方法的流程图;
图2是从源和目标***的API文档中提取信息的流程图;
图3是生成源和目标***的ADG的流程图;
图4是向量化源和目标***的ADG节点的流程图;
图5是利用RDGCN方法对源和目标***的ADG进行实体对齐的流程图;
图6是在目标***环境下生成与在源***环境下实现的代码具有相同功能的代码的流程图。
具体实施方式
下面结合附图,对本发明作进一步的说明。
本实施例基于API文档图谱的操作***智能编程方法,其总体流程如图1所示,主要包括以下步骤:
1)从源和目标***的API文档中提取所需信息,包括包级实体集合Pk、类级实体集合C、方法级实体集合M及参数级实体集合Pr的所有属性、类型及彼此之间的关系,其流程图如图2所示,具体说明如下:
1a)对源和目标***的API文档进行预处理,规范化数据类型并去除无用的标点符号,以降低冗余或特殊的数据类型对后续计算过程的影响,提高API信息提取的质量。例如,将特定的数组数据类型整理为“数组”,通用类型参数换成根类等。转到1b)。
1b)根据对API文档图谱(API Documentation Graph,ADG)的定义,利用XPath、正则表达式、BeautifulSoup等方式对预处理后的API文档中的Pk,C,M,Pr四级实体的所有属性、类型及彼此之间的关系等信息进行提取,并按照定义好的json格式进行存储。
其中,ADG的定义如下:
ADG由节点和带有信息的有向边组成,是一种将API文档中的内容以图的形式进行存储的语义网络,其形式化表述为:
ADG=(E,R,T)
其中:
(1)E为ADG中所有实体的集合;
(2)R为ADG中所有关系的集合;
(3)T为ADG中所有(实体-关系-实体)三元组的集合。
上述ADG中所有实体的集合E满足以下条件:
E={Pk,C,M,Pr}
其中:
<1>Pk为包级实体的集合,满足以下条件:
TP(Pk)=Pkg
A(Pk)={N,D}
TP(*)为类型函数,TP(Pk)表示文档中所有包级实体类型,Pkg即为包。A(*)为属性函数,A(Pk)表示文档中所有包级实体属性,N为实体名称,D为文本描述,即包含了文档中所有包的名称及描述信息。
<2>C为类级实体的集合,满足以下条件:
TP(C)={Cl,IF,En,Ex,Er,AT}
A(C)={N,D,Mod}
TP(C)表示文档中所有类级实体类型,Cl为类,IF为接口,En为枚举,Ex为异常,Er为错误,AT为注解。A(C)表示文档中所有类级实体属性,Mod为修饰符,即包含了文档中所有类、接口、枚举、异常、错误及注解的名称、描述及修饰符类型信息。
<3>M为方法级实体的集合,满足以下条件:
TP(M)={Mtd,F,Cst,Ct}
A(M)={N,D,Dl,Θ(Mtd)}
TP(M)表示文档中所有方法级实体类型,Mtd为方法,F为字段,Cst为构造函数,Ct为常数。A(M)表示文档中所有方法级实体属性,Dl为声明,Θ(Mtd)为Mtd独有的信息,满足以下条件:
Θ(Mtd)=RT
RT表示返回值。即包含了文档中所有方法、字段、构造函数、常数的名称、描述、声明及方法特有的返回值信息。
<4>Pr为参数级实体的集合,满足以下条件:
TP(Pr)=Param
A(Pr)={N,D,Tp}
TP(Pr)表示文档中所有参数级实体类型,Param为参数。A(Pr)表示文档中所有参数级实体属性,Tp为数据类型,例如整型、浮点型、字符类型等。即包含了参数的名称、描述及数据类型信息。
上述ADG中所有关系的集合R满足以下条件:
R={<Pk,C>,<C,C>,<C,M>,<M,M>,<M,Pr>}
其中:
<1><Pk,C>表示由Pk指向C的有向信息边,满足以下条件:
TP(<Pk,C>)=cr
<2><C,C>表示C内部存在的有向信息边,满足以下条件:
TP(<C,C>)={hr,nr}
<3><C,M>表示由C指向M的有向信息边,满足以下条件:
TP(<C,M>)={cr,tr}
<4><M,M>表示M内部存在的有向信息边,满足以下条件:
TP(<M,M>)=hr
<5><M,Pr>表示由M指向Pr的有向信息边,满足以下条件:
TP(<M,Pr>)=cr
此外,利用XPath、正则表达式、BeautifulSoup等方式对预处理后的API文档进行信息提取。由于在Pk,C,M,Pr这四级实体中,前者依次包含后者,因此将提取好的信息按照如下json格式进行存储:
其中,pk,c,m,pr分别为Pk,C,M,Pr四级实体的实例;N(x),D(x),TP(x),x∈{pk,c,m,pr}分别表示这些实例的名称、描述及类型;hr(y),y∈{c,m}表示与实例c或m存在继承关系的其他同级实例;Mod(c),nr(c)分别表示实例c的修饰符类型及与c存在嵌套关系的其他同级实例;Dl(m),tr(m)分别表示实例m的声明及与m存在引发关系的类级实体;只有在m=Mtd时,才提取的到Θ(m),即方法的返回值;Tp(pr)表示实例pr的数据类型。
2)将提取好的信息进行进一步处理并导入Neo4j图数据库中,生成可视化的源和目标***的ADG,生成过程中采取“先实体,后关系”的创建策略,防止三元组产生混乱,其流程图如图3所示,具体说明如下:
2a)编写代码对1b)中生成的json文件中不同层级的键值进行遍历,依次获取所有Pkg、Cl、IF、En、Ex、Er、AT、Mtd、F、Cst、Ct及Param类型的实体的名称,并通过实体类型TP与名称属性N在Neo4j图数据库中创建相应的节点,转到2b)。
2b)以实体名称属性N为键值在1b)生成的json文件中查找实体所具有的其他属性及属性值。例如,对于类型为Cl的实体cli而言,可以通过其名称属性N(cli)查找到其描述属性D(cli)及修饰符类型Mod(cli)。将查找到的属性与属性值以键值对的形式补充至每一个实体的节点信息,转到2c)。
2c)依据1b)生成的json文件中定义的键值层级,在Neo4j中依次创建<Pk,C>、<C,M>及<M,Pr>,即Pk,C,M,Pr四个层级的实体之间的包含关系,转到2d)。
2d)在1b)生成的json文件中依次以C级实体c的名称N(c)为键值查找与之具有hr、nr关系的其他实体hr(c)、nr(c),以M级实体m的名称N(m)为键值查找与之具有hr、tr关系的其他实体hr(m)、tr(m),转到2e)。
2e)判断2d)中查找到的关系是否已经存在于Neo4j中。以(c-hr-c′),c′∈hr(c)三元组为例,若该三元组已经存在,则无需再在c和c′之间添加hr这一关系,跳过判断下一对实体间的关系是否存在;若该三元组不存在,则在c和c′之间创建这一关系。
3)向量化源和目标***的ADG中的节点信息,输出为Xe_init矩阵其流程图如图4所示,具体说明如下:
3a)分别为ADG1与ADG2中的每一个节点从0开始进行编号,并将编号结果存储为节点的一个属性值,转到3b)。
3b)利用自然语言处理预训练模型对ADG中的节点属性进行向量化,以确保长文本属性值的语义信息也都包含在嵌入结果,从而获取ADG1与ADG2的节点表示矩阵以及ADG1与ADG2的每一个节点的向量化表示分别为与 其中,与分别为ADG1与ADG2中的节点数量,分为以及的行向量。
4)将一些已知的源和目标***的API映射关系,即两个ADG中已知的少量等效实体对作为对齐种子,利用其与关系感知双图卷积网络(Relation-aware Dual-GraphConvolutional Network,RDGCN)对源和目标***的ADG进行实体对齐,其流程图如图5所示,具体说明如下:
在本步骤中,定义源和目标***的ADG分别为ADG1与ADG2,它们共同作为原始图其中,ve=E1∪E2,E1、E2分别为ADG1与ADG2中所有的实体,εe=T1∪T2,T1、T2分别为ADG1与ADG2中所有的三元组。定义原始图的对偶关系图为满足:
RDGCN是一个可用于异构知识图谱上实体对齐的方法,整个模型可以先获取原始顶点表示矩阵Xe及对偶顶点表示矩阵Xr,进而对经过对偶注意力层及原始注意力层后的表示矩阵及进行计算,再在对双层图卷积网络信息整合后得到实体表示及两个ADG彼此实体间的距离d(e1,e2)。
4c)基于已知的等效实体对集合S获取不等效实体对集合S′,将S与S′用作RDGCN的训练数据,训练时分别最小化和最大化实体对的距离,转到4d)。
即将已知的等效实体对用作对齐种子,训练时最小化它们的实体间距离。同时,替换等效实体中的一个为其K最邻近实体,并将此作为负面实例,尽可能最大化它们的实体间距离。训练的目标函数为:
其中,(p,q)为一对等效实体,γ>0为边缘超参数,S和S′分别为一组正面实例(等效实体),一组负面实例
4d)利用训练好的RDGCN完成ADG1与ADG2中以M级实体为核心的实体对齐任务,能对齐的即可判定为存在映射关系的API。由此甚至同时发现极为相似的C级、Pk级实体。
5)利用获得的源和目标***的API映射关系,在目标***环境下生成与在源***环境下实现的代码具有相同功能的代码,其流程图如图6所示,具体说明如下:
5a)将源***环境下需要迁移的具有功能Func的代码Sc输入目标***的环境中。遍历Sc的每一行,判断是否存在API调用的情况,若存在,例如存在对名称为a的API的调用,则在ADG1的实体中搜索相应的实体E1(a),转到5b)。
5b)根据4d)中得到的等效实体的结果,在ADG2中找到与5a)中遍历后得到的所有实体具有映射关系的实体,并将这些实体对应的API在代码Sc中替换为相应的名称。例如,在ADG2中找到的与E1(a)具有映射关系的实体为E2(f(a)),将代码Sc中的a替换为f(a)。其中,f(a)为与a具有映射关系的目标***的API的名称。全部替换完成后即可初步生成在目标***环境下同样能够实现功能Func的代码Tc。
总之,为了解决已有的基于代码的API映射方法存在的代码库不可用、不准确等问题,以及基于文档的API映射方法的信息利用不充分等问题,本发明提出了API文档图谱的概念,以及构建不同***的API文档图谱并针对其进行实体对齐以获得API映射进而实现智能化编程的方法。本发明可以在避免API文档中有效信息丢失的情况下将其转化为知识图谱形式的数据,作为实体对齐神经网络模型的输入,为后续通过智能编程实现应用程序的跨***迁移的过程提供支持。本发明已在OpenHarmony***环境下进行了应用。
以上虽然描述了本发明的具体实施方法,但是本领域的技术人员应当理解,这些仅是举例说明,在不背离本发明原理和实现的前提下,可以对这些实施方案做出多种变更或修改,因此,本发明的保护范围由所附权利要求书限定。
Claims (9)
1.一种基于API文档图谱的操作***智能编程方法,其步骤包括:
1)根据从源***及目标***的API文档中提取的所需信息,分别构建源***的API文档图谱ADG1及目标***的API文档图谱ADG2,所述API文档图谱ADG1的构建过程包括:
1.1)获取源***的API文档中的实体,其中所述实体包括:包级实体集合Pk、类级实体集合C、方法级实体集合M和参数级实体集合Pr;
所述包级实体集合Pk的实体类型包括:包,所述包级实体集合Pk的实体属性包括:实体名称和文本描述;
所述类级实体集合C的实体类型包括:类、接口、枚举、异常、错误和注解,所述类级实体集合C的实体属性包括:实体名称、文本描述和修饰符;
所述方法级实体集合M的实体类型包括:方法、字段、构造函数和常数,所述方法级实体集合M的实体属性包括:实体名称、文本描述、声明和方法独有的信息;
所述参数级实体集合Pr的实体类型包括:参数,所述参数级实体集合Pr的实体属性包括:实体名称、文本描述和数据类型;
1.2)分别提取包级实体与类级实体之间的包含关系、类级实体与类级实体之间继承关系及嵌套关系、类级实体与方法级实体之间的包含关系及引发关系、方法级实体与方法级实体之间的继承关系、方法级实体与包级实体之间的包含关系,得到关系集合;
1.3)将实体各属性及所述关系结合存储为json文件;
1.4)对json文件中不同层级的键值进行遍历,基于实体类型与实体属性在图数据库中进行节点的创建;
1.5)依据所述json文件中定义的键值层级,在图数据库中创建各层级的实体之间的包含关系;
1.6)以类级实体的名称为键值查找具有继承关系与嵌套关系的其他同级实例,以方法级实体的名称为键值查找具有继承关系与引发关系的其他同级实例,并判断查找的关系是否存在与现有图数据库中;
1.7)将未存在于现有图数据库中的继承关系、嵌套关系及引发关系,创建于图数据库中,并将创建好的图数据作为API文档图谱ADG1;
4)若映射结果为存在映射关系,则利用源***环境下的代码Sc,生成在目标***环境下实现同一功能的代码Tc。
2.如权利要求1所述的方法,其特征在于,构建源***的API文档图谱ADG1及目标***的API文档图谱ADG2之前,对所需信息进行预处理;预处理包括:规范化数据类型和去除无用的标点符号。
6.如权利要求4所述的方法,其特征在于,通过以下步骤训练关系感知双图卷积网络:
1)将已知等效实体对作为正面实例;
2)将已知等效实体对中的一个替换为其K最邻近实体,并将替换后的实体对作为负面实例;
3)通过最小化正面实例的实体间距离且最大化负面实例的实体间距离,进行关系感知双图卷积网络的训练。
7.如权利要求1所述的方法,其特征在于,通过以下步骤生成在目标***环境下实现同一功能的代码Tc:
1)遍历代码Sc的每一行,判断是否存在API调用的情况:若存在,则在API文档图谱ADG1的实体中搜索相应的实体E1(a),其中a为API调用的名称;
2)依据映射结果,在API文档图谱ADG2中找到与API文档图谱ADG1存在映射关系的实体;
3)基于存在映射关系的实体,对代码Sc的API调用进行名称替换,生成在目标***环境下实现同一功能的代码Tc。
8.一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1-7中任一所述方法。
9.一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行如权利要求1-7中任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111174889.1A CN113849163B (zh) | 2021-10-09 | 2021-10-09 | 基于api文档图谱的操作***智能编程方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111174889.1A CN113849163B (zh) | 2021-10-09 | 2021-10-09 | 基于api文档图谱的操作***智能编程方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113849163A CN113849163A (zh) | 2021-12-28 |
CN113849163B true CN113849163B (zh) | 2022-10-14 |
Family
ID=78977776
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111174889.1A Active CN113849163B (zh) | 2021-10-09 | 2021-10-09 | 基于api文档图谱的操作***智能编程方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113849163B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111159425A (zh) * | 2019-12-30 | 2020-05-15 | 浙江大学 | 一种基于历史关系和双图卷积网络的时态知识图谱表示方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109739994B (zh) * | 2018-12-14 | 2023-05-02 | 复旦大学 | 一种基于参考文档的api知识图谱构建方法 |
CN112100322B (zh) * | 2020-08-06 | 2022-09-16 | 复旦大学 | 一种基于知识图谱的api元素比较结果自动生成方法 |
CN112395884B (zh) * | 2020-11-15 | 2022-04-12 | 复旦大学 | 一种基于代码文档的安卓api语义关系图谱构建方法 |
-
2021
- 2021-10-09 CN CN202111174889.1A patent/CN113849163B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111159425A (zh) * | 2019-12-30 | 2020-05-15 | 浙江大学 | 一种基于历史关系和双图卷积网络的时态知识图谱表示方法 |
Non-Patent Citations (1)
Title |
---|
面向开源软件项目的软件知识图谱构建方法;李文鹏等;《计算机科学与探索》;20171130(第06期);第852-860页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113849163A (zh) | 2021-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Sevilla Ruiz et al. | Inferring versioned schemas from NoSQL databases and its applications | |
US9904729B2 (en) | System, method, and computer program for a consumer defined information architecture | |
Davies et al. | Semantic Web technologies: trends and research in ontology-based systems | |
US11520800B2 (en) | Extensible data transformations | |
US7860817B2 (en) | System, method and computer program for facet analysis | |
US20240028607A1 (en) | Facilitating data transformations | |
US20210011926A1 (en) | Efficient transformation program generation | |
US11809223B2 (en) | Collecting and annotating transformation tools for use in generating transformation programs | |
Pattuelli et al. | Ontology building for linked open data: A pragmatic perspective | |
CN106528648B (zh) | 结合Redis内存数据库的分布式RDF关键词近似搜索方法 | |
EP3671526B1 (en) | Dependency graph based natural language processing | |
EP3732587B1 (en) | Systems and methods for context-independent database search paths | |
JP2004362563A (ja) | 非構造化情報管理および自動テキスト分析を実行するためのシステム、方法、およびコンピュータ・プログラム記録媒体 | |
Shvaiko | Iterative schema-based semantic matching | |
Balsmeier et al. | Automated disambiguation of us patent grants and applications | |
Goguen | Data, schema, ontology and logic integration | |
Drakopoulos et al. | A semantically annotated JSON metadata structure for open linked cultural data in Neo4j | |
CN113849163B (zh) | 基于api文档图谱的操作***智能编程方法及装置 | |
Janev | Semantic intelligence in big data applications | |
Angelis et al. | Generating and exploiting semantically enriched, integrated, linked and open museum data | |
Jouanot et al. | Context comparison for object fusion | |
Hoi et al. | Manipulating Data Lakes Intelligently With Java Annotations | |
CN113962549A (zh) | 一种基于电网运行知识的业务流程编排方法及*** | |
Gujral et al. | Knowledge Graphs: Connecting Information over the Semantic Web | |
Ivkovic et al. | Towards automatic establishment of model dependencies using formal concept analysis |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |