CN106843858B - 一种由转换原语生成Spark代码的方法 - Google Patents
一种由转换原语生成Spark代码的方法 Download PDFInfo
- Publication number
- CN106843858B CN106843858B CN201611252903.4A CN201611252903A CN106843858B CN 106843858 B CN106843858 B CN 106843858B CN 201611252903 A CN201611252903 A CN 201611252903A CN 106843858 B CN106843858 B CN 106843858B
- Authority
- CN
- China
- Prior art keywords
- primitive
- conversion
- file
- spark
- domain
- 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
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
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/151—Transformation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/151—Transformation
- G06F40/16—Automatic learning of transformation rules, e.g. from examples
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/253—Grammatical analysis; Style critique
-
- 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/35—Creation or generation of source code model driven
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Devices For Executing Special Programs (AREA)
- Document Processing Apparatus (AREA)
Abstract
本发明公开了一种由转换原语生成Spark代码的方法,包括步骤:步骤10:设计表示数据模型变换的转换原语语法;步骤11:输入一个数据模型变换的原语文件,作为代码转换器的输入文件;步骤12:利用Xtext实现代码生成器的文法构造,完成转换原语的语法解析;步骤13:利用Xtend实现代码生成器的转换规则,建立转换原语与Spark代码之间的映射;步骤14:将模型变换的原语文件输入代码生成器;步骤15:得到输入、输出数据类和转换规则的Spark代码;本发明将一组描述数据转换的转换原语生成具有相同转换操作的Spark代码,降低数据平台开发人员使用Spark平台的复杂性,简化数据转换过程,降低基于Spark平台的大数据转换实现成本。
Description
技术领域
本发明涉及一种由转换原语生成Spark代码的方法。
背景技术
数据转换是对于异构数据的常用处理方法。随着企业、组织间的紧密合作以及兼并,异构的数据信息资源广泛存在着,严重影响了部门间的信息交流。而数据转换的目标就是将异构的数据信息进行转换,并消除数据中存在的各种错误,优化数据模型,得到理想的数据模型。
Spark是现在常用的一种大数据平台,随着信息社会的高速发展,人们每天无论是生活还是工作都会产生并且接触到爆炸增长的信息量,从而使得工业界要处理的信息越来越多,也越来越复杂。传统的数据转换方法已经无法快捷高效的处理大数据的转换,因此演化出了如Spark之类的大数据平台。但是Spark平台在高效处理大数据的同时,具有一定的平台复杂性,学习成本较高,对于刚刚接触该平台的用户并不友好。
Xtext是基于eclipse的一个插件工具,利用该工具我们可以自己定义一种基于文本的领域特定语言,然后创建出自定义程序语言。这里我们通过该工具实现了转换原语的设计,并通过它产生Spark代码,从而降低基于Spark平台的大数据转换实现成本,解决在大数据平台进行数据转换复杂性较高这一问题。
发明内容
发明目的:鉴于上述问题,本发明旨在提供一个自定义转换原语生成Spark代码的方法。
技术方案:
一种由转换原语生成Spark代码的方法,包括步骤:
步骤10:设计表示数据模型变换的转换原语文法;
步骤11:输入数据变换的原语文件;原语文件是根据步骤10设计的转换原语文法设计的,包含输入数据模型,输出数据模型和转换规则的信息;
步骤12:利用Xtext对步骤11设计的原语文件进行语法分析,并得到语法分析树;
步骤13:利用Xtend根据步骤12得到的语法分析树对原语文件进行语义转换,生成对应的Spark代码。
所述步骤10的设计过程包括:
步骤20:规定转换控制层原语ExecuteTransformation用来控制整个模型转换的执行,调度ExecuteRule原语;
步骤21:规定转换控制层原语ExecuteRule用来控制一条规则的执行,调度执行层原语;
步骤22:规定执行层原语MatchPattern根据输入模式在模型中进行匹配,得到需转换的输入模型片段;
步骤23:规定执行层原语MatchObject根据某些指定条件,去查找满足条件的匹配对象;
步骤24:规定执行层原语CreateObject来创建模型对象元素;
步骤25:规定执行层原语CreateReference来创建模型关系元素;
步骤26:规定表达式计算曾原语EvaluateExpression用于进行复杂表达式计算。
所述步骤11中设计原语文件的过程包括:
步骤30:打开eclipse创建原语xml文件;
步骤31:右键点击添加ExecuteTransformation节点;
步骤32:右键点击ExecuteTransformation节点添加Domain节点,并设置属性为input_type;
步骤33:右键点击Domain节点,添加两个inputFile节点,存放要进行转换的输入文件信息;
步骤34:右键点击ExecuteTransformation节点添加Domain节点,并设置属性为output_type;
步骤35:右键点击Domain节点,添加一个outputFile节点,存放转换后的输出文件信息;
步骤36:右键点击ExecuteTransformation节点添加ExcuteRule节点;
步骤37:右键点击ExecuteRule节点,添加两个MatchType和一个joinKey节点,在该两个节点里添加具体的数据转换操作的规则设计;结束本次原语文件的设计。
所述步骤12的过程包括:
步骤40:根据Xtext基本语法,匹配原语文件的书写格式;
步骤41:利用正则表达式描述来匹配代码的基本语句;
步骤42:设计ExecuteTransformation语句格式,在ExecuteTransformation的语句加入若干条Domain_input,Domain_output,ExecuteRule语句;
步骤43:设计Domain_input语句格式,在Domain_input的语句中插入多条InputFile语句,在InputFile语句中存放要转换文件的配置信息;
步骤44:设计Domain_output语句格式,在Domain_output的语句中插入多条OutputData语句,在OutputData语句中存放转换后文件的配置信息;
步骤45:设计ExecuteRule语句格式,在ExecuteRule的语句中插入多条转换规则语句;
步骤46:设计具体转换规则的语句格式。
所述步骤13的实现过程:
步骤50:将原语ExucuteTranformation转化为Spark程序的执行入口,且调用输入模型和输出模型的静态方法实现输入输出;
步骤51:将原语Domain_input和Domain_output转化为对应输入和输出数据模型的类文件;
步骤52:原语ExucuteRule对应spark平台上对RDD的操作集合,组成ExucuteRule的原语分别对应spark平台上的具体操作;
步骤53:将原语MatchType中的name属性对应Spark中RDD的创建;
步骤54:将原语Filter对MatchType对应的RDD进行原语Filter定义的过滤操作,调用RDD的Filter函数;
步骤55:将原语Statistics对MatchType对应的RDD进行原语Statistics定义的统计操作;
步骤56:将原语JoinKey对spark平台上的两个RDD的连接操作,提取关键值,分别生成一个PairRDDFunctions,再进行连接。
所述步骤13中执行Spark代码转换过程如下:
步骤60:在Xtext生成的原语编辑器中,src文件夹加入设计好的原语文件;
步骤61:运行Xtend生成的转换规则;
步骤62:在src-gen文件夹中会看到具有数据转换功能的scala文件;完成Spark代码的生成。
有益效果:本发明结合模型驱动工程M2M技术,实现转换原语到Spark代码的转换,从而降低数据平台开发人员使用Spark平台的复杂性,简化数据转换过程,降低基于Spark平台的大数据转换实现成本,解决在大数据平台进行数据转换复杂性较高这一问题。
附图说明
图1为转换原语转化为Spark代码示意图。
图2为转换原语语法结构示意图。
图3为原语文件示意图。
图4为原语文件解析过程流程图。
图5为正则表达式匹配词法的设计方法示意图。
图6为ExecuteRule语句设计图。
图7为转换过程执行框架示意图。
具体实施方式
下面结合附图对本发明作更进一步的说明。
图1所示为本方法实施的整体结构和工作原理。本方法的目的是将描述数据转换的转换原语转化为具有相同数据转换功能的Spark代码,该方法可以结合模型驱动工程M2M技术进行实现,从而降低数据平台开发人员使用Spark平台的复杂性,简化数据转换过程。如图1所示,本发明方法包括步骤:
步骤10:设计一种可以表示数据模型变换的转换原语文法;
步骤11:根据步骤10设计的转换原语文法设计数据变换的原语文件,作为代码生成器的输入文件;原语文件包含输入数据模型,输出数据模型和转换规则的信息;
步骤12:利用Xtext对步骤11设计的原语文件的语法的进行分析,检查输入的原语文件是否符合步骤10设计的转换原语文法规则;同时,Xtext工具抽象出一个语法分析树用于Xtend进行语义转换;
步骤13:利用Xtend根据步骤12得到的语法分析树对原语文件进行语义转换,生成对应的Spark代码,实现代码生成器的转换规则,建立转换原语与Spark代码之间的映射。
其中步骤10中,设计一种可以表示数据模型变换的转换原语语法,设计而成的总体关系如图2所示。设计过程包括:
步骤20:规定转换控制层原语ExecuteTransformation用来控制整个模型转换的执行,调度ExecuteRule原语;
步骤21:规定转换控制层原语ExecuteRule用来控制一条规则的执行,调度执行层原语;
步骤22:规定执行层原语MatchPattern根据输入模式在模型中进行匹配,得到需转换的输入模型片段;
步骤23:规定执行层原语MatchObject根据某些指定条件,去查找满足条件的匹配对象;
步骤24:规定执行层原语CreateObject来创建模型对象元素;
步骤25:规定执行层原语CreateReference来创建模型关系元素;
步骤26:规定表达式计算曾原语EvaluateExpression用于进行复杂表达式计算。
其中步骤11所输入的原语文件如图3所示,设计一个原语文件的过程包括:
步骤30:打开eclipse创建原语xml文件;
步骤31:右键点击添加ExecuteTransformation节点;
步骤32:右键点击ExecuteTransformation节点添加Domain节点,并设置属性为input_type;
步骤33:右键点击Domain节点,添加两个inputFile节点,存放要进行转换的输入文件信息;
步骤34:右键点击ExecuteTransformation节点添加Domain节点,并设置属性为output_type;
步骤35:右键点击Domain节点,添加一个outputFile节点,存放转换后的输出文件信息;
步骤36:右键点击ExecuteTransformation节点添加ExcuteRule节点;
步骤37:右键点击ExecuteRule节点,添加两个MatchType和一个joinKey节点可以在这几个节点里添加具体的数据转换操作的规则设计;
步骤38:结束本次原语文件的设计。
图4表示对原语文件的语法分析和语义转换过程,包括:
步骤40:了解Xtext基本语法,匹配原语文件的书写格式;
步骤41:利用正则表达式描述ID,INT,STRING,COMMENT等来匹配代码的基本语句,设计方法如图5;
步骤42:设计ExecuteTransformation语句格式,ExecuteTransformation的语句可以加入若干条Domain_input,Domain_output,ExecuteRule语句;设计如图6;
步骤43:设计Domain_input语句格式,在Domain_input的语句中可以插入多条InputFile语句,在InputFile语句中可以存放一些要转换文件的配置信息;
步骤44:设计Domain_output语句格式,在Domain_output的语句中可以插入多条OutputData语句,在OutputData语句中可以存放一些转换后文件的配置信息;
步骤45:设计ExecuteRule语句格式,在ExecuteRule的语句中可以插入多条转换规则语句;
步骤46:设计具体转换规则的语句格式,例如filter操作,Join操作等;
步骤47:完成Xtext实现代码生成器的文法构造。
其中步骤13中,利用Xtend生成代码生成器,建立转换原语与Spark代码之间的映射,并根据步骤12得到的语法分析树对原语文件进行语义转换,生成对应的Spark代码实现过程包括:
步骤50:将原语ExucuteTranformation转化为Spark程序的执行入口,且调用输入模型和输出模型的静态方法实现输入输出;
步骤51:将原语Domain_input和Domain_output转化为对应输入和输出数据模型的类文件;
步骤52:原语ExucuteRule对应spark平台上对RDD的操作集合,组成ExucuteRule的原语分别对应spark平台上的具体操作;
步骤53:将原语MatchType中的name属性对应Spark中RDD的创建;
步骤54:将原语Filter对MatchType对应的RDD进行原语Filter定义的过滤操作,调用RDD的Filter函数;
步骤55:将原语Statistics对MatchType对应的RDD进行原语Statistics定义的统计操作;
步骤56:将原语JoinKey对spark平台上的两个RDD的连接操作,需要提取关键值,分别生成一个PairRDDFunctions,再进行连接;
步骤57:完成Xtend实现代码生成器的转换规则。
其中步骤14和15中,其数据的转换框架如图7,具体操作包括:
步骤60:在Xtext生成的原语编辑器中,src文件夹加入设计好的原语文件;
步骤61:运行Xtend生成的转换规则;
步骤62:在src-gen文件夹中会看到具有数据转换功能的scala文件;
步骤63:完成Spark代码的生成。
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (3)
1.一种由转换原语生成Spark代码的方法,其特征在于:包括步骤:
步骤10:设计表示数据模型变换的转换原语文法;
所述步骤10的设计过程包括:
步骤20:规定转换控制层原语ExecuteTransformation用来控制整个模型转换的执行,调度ExecuteRule原语;
步骤21:规定转换控制层原语ExecuteRule用来控制一条规则的执行,调度执行层原语;
步骤22:规定执行层原语MatchPattern根据输入模式在模型中进行匹配,得到需转换的输入数据模型片段;
步骤23:规定执行层原语MatchObject根据指定条件,去查找满足条件的匹配对象;
步骤24:规定执行层原语CreateObject来创建模型对象元素;
步骤25:规定执行层原语CreateReference来创建模型关系元素;
步骤26:规定表达式计算层原语EvaluateExpression用于进行复杂表达式计算;
步骤11:输入数据变换的原语文件;原语文件是根据步骤10设计的转换原语文法设计的,包含输入数据模型、输出数据模型和转换规则的信息;
所述步骤11中设计原语文件的过程包括:
步骤30:打开eclipse创建原语xml文件;
步骤31:右键点击添加ExecuteTransformation节点;
步骤32:右键点击ExecuteTransformation节点添加Domain节点,并设置属性为input_type;
步骤33:右键点击Domain节点,添加两个inputFile节点,存放要进行转换的输入文件信息;
步骤34:右键点击ExecuteTransformation节点添加Domain节点,并设置属性为output_type;
步骤35:右键点击Domain节点,添加一个outputFile节点,存放转换后的输出文件信息;
步骤36:右键点击ExecuteTransformation节点添加ExcuteRule节点;
步骤37:右键点击ExecuteRule节点,添加两个MatchType和一个joinKey节点,在该两个节点里添加转换规则;结束本次原语文件的设计;
步骤12:利用Xtext对步骤11设计的原语文件进行语法分析及语义转换,并得到抽象语法树;
步骤13:利用Xtend生成代码生成器,建立转换原语与Spark代码之间的映射,并根据步骤12得到的抽象语法树对原语文件进行语义转换,生成对应的Spark代码;
所述步骤13中利用Xtend生成代码生成器,建立转换原语与Spark代码之间的映射的实现过程如下:
步骤50:将原语ExucuteTranformation转化为Spark程序的执行入口,且调用输入数据模型和输出数据模型的静态方法实现输入输出;
步骤51:将原语Domain_input和Domain_output转化为对应输入数据模型和输出数据模型的类文件;
步骤52:原语ExucuteRule对应spark平台上对RDD的操作集合,组成ExucuteRule的原语分别对应spark平台上的具体操作;
步骤53:将原语MatchType中的name属性对应Spark中RDD的创建;
步骤54:将原语Filter对MatchType对应的RDD进行原语Filter定义的过滤操作,调用RDD的Filter函数;
步骤55:将原语Statistics对MatchType对应的RDD进行原语Statistics定义的统计操作;
步骤56:将原语JoinKey对spark平台上的两个RDD的连接操作,提取关键值,分别生成一个PairRDDFunctions,再进行连接。
2.根据权利要求1所述的方法,其特征在于:所述步骤12的过程包括:
步骤40:根据Xtext基本语法,匹配原语文件的书写格式;
步骤41:利用正则表达式描述来匹配代码的基本语句;
步骤42:设计ExecuteTransformation语句格式,在ExecuteTransformation的语句加入若干条Domain_input,Domain_output,ExecuteRule语句;
步骤43:设计Domain_input语句格式,在Domain_input的语句中插入多条InputFile语句,在InputFile语句中存放要转换文件的配置信息;
步骤44:设计Domain_output语句格式,在Domain_output的语句中插入多条OutputData语句,在OutputData语句中存放转换后文件的配置信息;
步骤45:设计ExecuteRule语句格式,在ExecuteRule的语句中插入多条转换规则语句;
步骤46:设计具体转换规则的语句格式。
3.根据权利要求1所述的方法,其特征在于:所述步骤13生成Spark代码过程如下:
步骤60:在Xtext生成的原语编辑器中,将步骤11设计的原语文件加入到src文件夹;
步骤61:运行Xtend生成的代码生成器;
步骤62:在src-gen文件夹中生成具有数据转换功能的scala文件;完成Spark代码的生成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611252903.4A CN106843858B (zh) | 2016-12-30 | 2016-12-30 | 一种由转换原语生成Spark代码的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611252903.4A CN106843858B (zh) | 2016-12-30 | 2016-12-30 | 一种由转换原语生成Spark代码的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106843858A CN106843858A (zh) | 2017-06-13 |
CN106843858B true CN106843858B (zh) | 2020-06-09 |
Family
ID=59113721
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611252903.4A Active CN106843858B (zh) | 2016-12-30 | 2016-12-30 | 一种由转换原语生成Spark代码的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106843858B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108153522B (zh) * | 2017-12-25 | 2020-05-05 | 南京大学 | 基于模型转换由midcore生成Spark和Hadoop程序代码的方法 |
CN110543297B (zh) * | 2018-05-28 | 2021-03-30 | 北京京东尚科信息技术有限公司 | 用于生成源码的方法和装置 |
CN112269566B (zh) * | 2020-11-03 | 2022-09-02 | 支付宝(杭州)信息技术有限公司 | 脚本生成处理方法、装置、设备及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104679511A (zh) * | 2015-02-10 | 2015-06-03 | 北京系统工程研究所 | 基于MDE模型转换的MapReduce代码生成方法 |
CN105335412A (zh) * | 2014-07-31 | 2016-02-17 | 阿里巴巴集团控股有限公司 | 用于数据转换、数据迁移的方法和装置 |
CN106095398A (zh) * | 2016-05-10 | 2016-11-09 | 深圳前海信息技术有限公司 | 基于dsl的大数据开发应用方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8869098B2 (en) * | 2007-12-05 | 2014-10-21 | International Business Machines Corporation | Computer method and apparatus for providing model to model transformation using an MDA approach |
US9361075B2 (en) * | 2014-11-12 | 2016-06-07 | International Business Machines Corporation | Contraction aware parsing system for domain-specific languages |
-
2016
- 2016-12-30 CN CN201611252903.4A patent/CN106843858B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105335412A (zh) * | 2014-07-31 | 2016-02-17 | 阿里巴巴集团控股有限公司 | 用于数据转换、数据迁移的方法和装置 |
CN104679511A (zh) * | 2015-02-10 | 2015-06-03 | 北京系统工程研究所 | 基于MDE模型转换的MapReduce代码生成方法 |
CN106095398A (zh) * | 2016-05-10 | 2016-11-09 | 深圳前海信息技术有限公司 | 基于dsl的大数据开发应用方法及装置 |
Non-Patent Citations (1)
Title |
---|
"Towards a Model-Driven Design Tool for Big Data Architectures";Michele Guerriero 等;《2016 IEEE/ACM 2nd International Workshop on Big Data Software Engineering (BIGDSE)》;20160516;第1-7页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106843858A (zh) | 2017-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Moonen | Generating robust parsers using island grammars | |
CN106843858B (zh) | 一种由转换原语生成Spark代码的方法 | |
CN108153522B (zh) | 基于模型转换由midcore生成Spark和Hadoop程序代码的方法 | |
CN111639501A (zh) | 基于amsl的电网业务微服务组合方法 | |
CN112765209A (zh) | 一种数据库间的sql语句语法迁移方法及系统 | |
Fedorchenko et al. | Equivalent transformations and regularization in context-free grammars | |
CN113655996B (zh) | 一种基于需求模型的企业级系统生成方法 | |
WO2014040766A1 (en) | Computer-implemented method for computer program translation | |
Manaf et al. | SBVR2Alloy: an SBVR to alloy compiler | |
Kausch et al. | An Approach for Logic-based Knowledge Representation and Automated Reasoning over Underspecification and Refinement in Safety-Critical Cyber-Physical Systems. | |
CN116776981A (zh) | 基于大型预训练语言模型的api关系推理方法及系统 | |
Paakki | Prolog in practical compiler writing | |
CN111859929B (zh) | 一种数据可视化方法、装置及其相关设备 | |
Shan–shan et al. | Formal Definition of Pseudo Code and Mapping Rules to Java Code | |
Zafar et al. | Formal Modeling towards the Context Free Grammar | |
CN110083822B (zh) | 一种从需求文本转换到SysML需求图的转换方法 | |
Zafar et al. | Syntax-tree regular expression based DFA formalconstruction | |
Chen et al. | A Conversion Framework of the Continuous Modeling Languages Based on ANTLR4 [J] | |
Kiyavitskaya et al. | Experimenting with Linguistic Tools for Conceptual Modelling: Quality of the models and critical features | |
Moser et al. | Towards attribute grammar mining by symbolic execution | |
Shute et al. | SQL Has Problems. We Can Fix Them: Pipe Syntax In SQL | |
Milanović et al. | Bridging concrete and abstract syntaxes in model‐driven engineering: a case of rule languages | |
CN118151918B (zh) | 基于uml模型的可信低代码开发平台及代码生成方法 | |
Litoriya et al. | Implementation of Relational Algebra Interpreter using another query language | |
Nagoya et al. | Developing a web dictionary system using the SOFL three-step specification approach |
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 |