CN107368302B - 一种基于本体的设计模式识别方法 - Google Patents

一种基于本体的设计模式识别方法 Download PDF

Info

Publication number
CN107368302B
CN107368302B CN201710507261.6A CN201710507261A CN107368302B CN 107368302 B CN107368302 B CN 107368302B CN 201710507261 A CN201710507261 A CN 201710507261A CN 107368302 B CN107368302 B CN 107368302B
Authority
CN
China
Prior art keywords
ontology
design
design pattern
class
pattern recognition
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.)
Expired - Fee Related
Application number
CN201710507261.6A
Other languages
English (en)
Other versions
CN107368302A (zh
Inventor
李必信
熊壬浩
廖力
王璐璐
孔祥龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Southeast University
Original Assignee
Southeast University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Southeast University filed Critical Southeast University
Priority to CN201710507261.6A priority Critical patent/CN107368302B/zh
Publication of CN107368302A publication Critical patent/CN107368302A/zh
Application granted granted Critical
Publication of CN107368302B publication Critical patent/CN107368302B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse engineering; Extracting design information from source code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于本体的设计模式识别方法,主要用于软件的逆向工程领域中设计模式的识别。设计模式提供了对软件系统的子系统、组件或它们之间的关系进行改进的纲要,描绘了对彼此通信的组件进行组织的常见结构,可解决特定背景下的一般性设计问题。本发明使用描述逻辑进行设计模式的概念建模,并以此为依据,构造本体类和本体属性。从源码中自动化抽取本体实例之后,将目标系统抽象与设计模式抽象进行比对的过程,转换为使用本体查询语言进行本体推理的过程。依据描述逻辑构造本体查询语句,并使用推理机进行推理。基于本体的设计模式识别,既有较强的表达能力,也能兼顾推理性能,提高了识别的准确度,使模式库易于扩展和使用。

Description

一种基于本体的设计模式识别方法
技术领域
本发明涉及软件的逆向工程领域,尤其涉及一种基于本体的设计模式识别方法。
背景技术
设计模式提供了对软件系统的子系统、组件或它们之间的关系进行改进的纲要,描绘了对彼此通信的组件进行组织的常见结构,可解决特定背景下的一般性设计问题。GoF(Gang of Four)将设计模式分为三类,即创建型、结构型和行为型,三者分别关注对象的创建、类或对象的组合以及类之间的交互。设计模式的识别对于提高软件的可理解性和可维护性具有重要意义,是软件重用以及软件重构(Refactoring)的重要手段之一。
设计模式识别技术的研究得到了广泛的关注,目前的识别技术通常将目标软件系统的抽象表示和设计模式的抽象表示进行比对,进而抽取出目标软件系统中的设计模式。因此目标系统及设计模式的抽象是技术问题的关键。对目标系统进行抽象时使用的信息可分为静态信息和动态信息两类,前者是指调用、委托和继承等类之间的结构关联,后者是指运行时对象之间的交互。如何提高识别精度、如何应对变体问题是当前研究面临的两大困境。为了提高识别的准确度,需要在信息抽象阶段利用动态信息,同时使用精确的比对算法。为了应对变体问题,需要解决模式库的可扩展性和可维护性问题。然而现有的设计模式识别方法精确度较低,模式库的可扩展性和可维护性也不高。
发明内容
本发明所要解决的技术问题是针对背景技术中所涉及到的缺陷,提供一种基于本体的设计模式识别方法,提高了设计模式识别的准确度,同时利用本体的可扩展性,增强了模式库的可扩展性和可维护性。
本发明为解决上述技术问题采用以下技术方案。
一种基于本体的设计模式识别方法,将所有用于检测的设计模式构成设计模式集合,对于设计模式集合中的每一种设计模式:
步骤1),对该设计模式进行概念建模,并使用描述逻辑进行表示;
步骤2),根据描述逻辑构造本体类和本体属性,其中本体属性包括对象属性和值属性;
步骤3),依据步骤2)中构造的本体类和本体属性,从需要进行设计模式识别的目标系统中抽取本体实例;
步骤4),将步骤2)构造的本体类、本体属性及步骤3)抽取的本体实例进行合成,构造完整的本体;
步骤5),根据描述逻辑,选取本体查询语言,构造本体查询语句;
步骤6),将步骤4)构造的本体以及步骤5)构造的本体查询语句作为输入,使用推理机进行推理,得到该设计模式的设计模式实例。
作为本发明一种基于本体的设计模式识别方法进一步的优化方案,所述步骤2)中根据描述逻辑构造本体类和本体属性的详细步骤如下:
区分描述逻辑中的简单概念和复杂概念,仅使用简单概念构造本体类和本体属性。
本发明采用以上技术方案与现有技术相比,具有以下技术效果:
1.使用本体进行概念建模,可以在较高的层次上对设计模式进行抽象,同时,概念的复用十分有利于借鉴、融合已有的研究成果;
2.本体具有坚实的形式化基础,本体语言既有较强的表达能力,同时也能兼顾推理性能。基于本体的设计模式识别,既能满足精确识别的需要,又能根据不同的应用场景,在识别精确度和性能之间进行取舍;
3.构造本体时对简单概念和复杂概念进行区分,仅使用简单概念构造本体,降低了本体的复杂度,有利于本体的复用和扩展,使模式库易于扩展和维护。
附图说明
图1是本发明的流程示意图;
图2是工厂方法模式的本体类的示意图;
图3是工厂方法模式的对象属性的示意图;
图4是工厂方法模式的实现举例。
具体实施方式
下面结合附图对本发明的技术方案做进一步的详细说明:
图1给出了基于本体的设计模式识别方法的流程示意图,下面对各个步骤进行展开。
1、概念建模
描述逻辑(Description Logic)又称为术语逻辑、术语体系知识表示语言、概念语言、术语包含语言,由概念、角色和个体组成,复杂概念和角色可以通过简单概念和角色进行描述。从知识表示的角度看,描述逻辑适合于表达结构化和半结构化数据,这些数据往往具有层次、多重继承、聚合等性质。人们常利用模式来发现世界的结构并以此来理解世界,一种常见的方法就是对概念和个体的分类。概念的分类决定了给定术语体系的子概念、超概念关系,在描述逻辑中称为“包含关系”,并构成了术语包含体系。个体分类决定了给定的个体是否属于某类的实例。在概念建模阶段,对设计模式进行概念抽象,并使用描述逻辑表达抽象概念。以工厂方法模式(Factory Method)的识别为例,使用逻辑描述语言
Figure BDA0001334956420000031
描述如下。
Figure BDA0001334956420000032
Figure BDA0001334956420000033
Figure BDA00013349564200000317
Figure BDA0001334956420000034
Product≡Interface
Figure BDA0001334956420000035
Figure BDA0001334956420000036
Figure BDA0001334956420000037
其中类(Class)被分为抽象类(AbstractClass)和普通类(NormalClass),两者不相交。方法(Method)被分为抽象方法(AbstractMethod)和普通方法(NormalMethod),两者不相交。工厂方法模式中的工厂(Factory)被定义为具有工厂方法(FactoryMethod)的接口(Interface)。具体工厂(ConcreteFactory)被定义为实现了工厂接口,且具有具体工厂方法(ConcreteFactoryMethod)的普通类。产品(Product)被定义为接口。具体产品(ConcreteProduct)被定义为实现了产品接口的普通类。工厂方法被定义为返回类型为产品接口的抽象方法。具体工厂方法被定义为返回类型为产品接口的普通方法。
Figure BDA0001334956420000038
语言是通过使用任意概念的否定(C构子)扩展
Figure BDA0001334956420000039
语言得到的,可用的构子还包括并(
Figure BDA00013349564200000310
构子)、完全存在约束(
Figure BDA00013349564200000311
构子)、数量约束(
Figure BDA00013349564200000312
构子)等,其中C构子可以表示
Figure BDA00013349564200000313
Figure BDA00013349564200000314
使用不同的构子扩展
Figure BDA00013349564200000315
便得到了相应的语言,如
Figure BDA00013349564200000316
等。这些语言还可进一步扩展,不仅可以用来描述概念,还可以用来描述角色,甚至可以利用个体对概念和角色进行刻画。使用不同的构子进行概念建模,其表达能力不同,推理性能也不同。描述逻辑语言的可扩展性使概念建模能够兼顾模式识别的精确度和推理性能,或者对两者进行权衡。
2、构造本体类和本体属性
根据设计模式的描述逻辑,构造本体类和本体属性。本体描述语言采用W3C Web本体语言OWL(Web Ontology Language)。OWL旨在表达由事物、事物组合以及事物之间的关系而形成的丰富而复杂的知识。OWL提供了一种可以用于各种应用的语言,这些应用需要理解内容,从而代替只是采用人类易读的形式来表达内容。OWL基于计算逻辑,因此使用OWL表达的知识能够被计算机处理。OWL文件被称为本体,本体可以在互联网上发布,也可以相互引用。在构造本体类时,仅选取描述逻辑中的简单概念进行构造。简单概念是相对于复杂概念而言的,在工厂方法模式的描述逻辑中,AbstractClass、Interface以及NormalMethod等都是简单概念。复杂概念是由简单概念组合而成的,例如Factory、ConcreteProduct等都是复杂概念。选取简单概念构造本体类的主要原因是:
(1)复杂概念可以通过组合简单概念获得,这种组合是在查询推理时实现的;
(2)规定对目标系统进行抽象时不使用推理,解析器不需要抽取复杂概念,使解析器相对独立,有利于实现自动化;
(3)简单概念描述了设计模式的基本元素,使用简单概念构造本体类,降低了本体的复杂度,有利于本体的复用和扩展。
在手动构造本体时,为了提高效率,可以使用Protégé等工具。图2给出了工厂方法模式的本体类,其中AbstractClass和NormalClass是Class的子类,AbstractMethod和NormalMethod是Method的子类。
本体属性描述了本体类之间的关系,图3给出了工厂方法模式的对象属性。其中,hasMethod描述了类或接口具有某方法,implements描述了类实现了某接口,returns描述了方法声明的返回类型是某个类或接口。它们的详细描述如下表所示。
表1工厂方法模式的本体对象属性
Figure BDA0001334956420000041
3、抽取本体实例
目标系统的抽象过程即通过解析器抽取本体实例的过程,该过程由两个主要步骤组成:
(1)遍历目标系统,搜索本体类的实例。遍历目标系统时,其输入不局限于系统源码,还能够使用系统的UML(Unified Modeling Language)图等表示形式,这依赖于解析器对不同输入形式的处理能力。解析器使用的解析技术目标系统本身密切相关。例如,目标系统使用Java语言实现时,解析器可以利用JDT(Java Development Tools)抽取系统信息。根据需要,解析器不仅能够利用静态信息获取技术完成信息抽取,还可以综合利用动态信息获取技术;
(2)设置本体实例的属性,即使用本体属性关联不同的本体实例。通常,本体属性设置了其值域(Domain)以及定义域(Range)。在抽取本体实例时,可以根据实例所属的类型(Type),进一步检查本体属性的定义域和值域,最终完成实例属性的设置。
由于目标系统的庞大和复杂,通常本体实例的抽取必须自动化进行。OWL文件可使用Jena、OWL API或Pellet等工具自动化生成。Jena是一个用于构建语义Web和链接数据的开源Java框架,支持RDFS(Resource Description Framework Schema)和OWL Lite。它不仅能够用于构建OWL文件,还能够用于RDF(Resource Description Framework)的高性能存储及查询。OWL API是一个用于创建、操作和序列化OWL本体的Java API,它包含了用于OWL读写的组件以及一组用于推理机的接口。Pellet是一个使用Java开发的开源推理机,它能够用于检查本体的一致性,计算分类层次,解释推论,并回答SPARQL查询。
图4使用UML描述了工厂方法模式的一个实现,其中Rectangle和Circle类均实现了Graph接口。RectangleFactory和CircleFactory类均实现了GraphFactory接口,分别用于创建Rectangle和Circle对象。解析该实现抽取出的本体实例如下表所示。
表2抽取出的本体实例
Figure BDA0001334956420000051
表中的接口或类分别使用接口名或类名表示,方法使用“接口名/类名.方法名”的形式表示,在实际中也可以使用其他自定义的规则。注意到Graph.Draw等方法未设置returns属性,这是因为它们的返回类型未包含在本体类中,解析时忽略。实际上概念建模时并不关心返回类型为void的方法,根据描述逻辑,这些方法对设计模式的识别没有帮助。
4、合成本体
上述步骤首先构建了本体类和本体属性,之后抽取了本体实例。进一步将它们进行合成,才能构成完整的本体。根据采用的OWL本体操作技术及本体的持久化形式,实际的操作方式有所不同。可以独立的构造本体实例,构造完成后再合成完整的本体,也可以基于本体类和本体属性增量的构造本体实例,构造完成后即完成了本体的构建。例如,使用关系型数据库存储本体时,可以增量的构造本体;使用文件存储本体时,可以独立的构造本体实例,然后在其他文件中引用它。
5、构造查询语句
根据构造的描述逻辑,使用SPARQL等查询语言构造查询语句。SPARQL是一种由万维网联盟RDF数据访问工作组制定的RDF查询语言,能够检索和操作存储在RDF中的数据。目前SPARQL是W3C推荐的标准RDF查询语言。构造查询语句时,本体中的简单概念组合为复杂概念,为完成目标系统的进一步抽象作准备。相对于构造本体类和本体属性时关注简单概念,构造查询语句时着重关注设计模式的构成要素。构成要素是设计模式的主要组成部分,它们与更具体的细节相关联。识别设计模式时,使用构成要素表示设计模式,既不失简洁性,又能在需要时获取设计模式的详细信息。例如,工厂方法模式的构成要素包括工厂接口、具体工厂、产品接口以及具体产品,构造的查询语句如下。
Figure BDA0001334956420000061
该查询返回工厂方法模式的构成要素,其查询条件与描述逻辑对应。如果需要通过这些要素回溯相关信息,可以在抽取本体实例时预先缓存这些信息,也可以重新获取。在设计模式的识别系统中,查询语句可作为知识库的一部分进行管理。识别系统还可以通过开放本体查询接口,提高系统的灵活性。
6、本体推理
将本体和查询语句共同作为推理机的输入进行本体推理,最终获得设计模式实例。本体推理完成了目标系统的进一步抽象,查询结果以二维表格的形式给出了设计模式的构成要素。常用的推理机包括FaCT++(Fast Classification of Terminologies)、Pellet和Racer(Renamed ABox and Concept Expression Reasoner)等,Pellet推理机上文已经提及。FaCT++是英国曼彻斯特大学开发的一个描述逻辑分类器,提供对模态逻辑的可满足性测试。为了提高效率和可移植性,采用C++实现。Racer是德国Franz公司开发的以描述逻辑为基础的本体推理系统,不仅可以当作描述逻辑系统使用,还可以用作语义知识库系统使用。进行推理前,应检查本体的一致性和查询语句的正确性,修正已知的错误后再进行推理。以Pellet推理机为例,使用上文构造的本体及查询语句进行推理,获取的设计模式实例如下表所示。
表3工厂方法模式的实例
Figure BDA0001334956420000071
查询结果以二维表格的形式给出了工厂接口Factory、具体工厂类ConcreteFactory、产品接口Product以及具体产品类ConcreteProduct,它们是工厂方法模式的构成要素。注意到第二行和第三行,问题在于CircleFactory并不用于创建Rectangle,RectangleFactory也不用于创建Circle。查询结果没有反映ConcreteFactory和ConcreteProduct之间的强关联,因为仅从具体工厂类中Create方法声明的返回类型,无法得知实际返回的类型。从描述逻辑的角度看,查询结果是正确的,但仍没有达到期望。使ConcreteFactory正确的对应ConcreteProduct,需要扩展已有的工作,使其能够利用更精确的信息实现更精确的设计模式识别。
7、本体复用与扩展
上述的本体构造方法区分了描述逻辑中的简单概念和复杂概念,仅使用简单概念构造本体,降低了本体的复杂度,在多个方面有利于本体的复用和扩展:
(1)最大程度的复用本体,降低设计复杂度,减少开发工作量;
(2)增量的扩展,增加了复用的灵活性;
(3)透明的扩展,即扩展对设计模式识别是透明的,不影响已有的查询结果。
仍以工厂方法模式的识别为例,为了使ConcreteFactory正确的关联ConcreteProduct,需要对已有概念进行扩展。首先,增强ConcreteFactoryMethod的约束,使其能够描述实际的返回类型。使用描述逻辑表示为:
Figure BDA0001334956420000081
upcastsFrom描述了方法返回时从某个类或接口向上转型为声明的返回类型,其定义域为Method,值域为Interface或Class。其次,在本体中增加对象属性upcastsFrom,并设置CircleFactory.Create、RectangleFactory.Create两个本体实例的upcastsFrom属性。这一步骤要求解析器能正确识别实际的返回类型。最后,在查询语句中增加查询条件并进行查询:
?ConcreteFactoryMethod dp:upcastFrom?ConcreteProduct.
查询结果正确的剔除了表中的第二行和第三行。此时若执行原有查询,仍可得到原有结果。上述操作完整的复用了已有本体,实现了增量、透明的扩展。
本技术领域技术人员可以理解的是,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (1)

1.一种基于本体的设计模式识别方法,其特征在于,将所有用于检测的设计模式构成设计模式集合,对于设计模式集合中的每一种设计模式:
步骤1),对该设计模式进行概念建模,并使用描述逻辑进行表示;
步骤2),区分描述逻辑中的简单概念和复杂概念,仅使用简单概念构造本体类和本体属性,其中本体属性包括对象属性和值属性;
步骤3),依据步骤2)中构造的本体类和本体属性,从需要进行设计模式识别的目标系统中抽取本体实例;
步骤4),将步骤2)构造的本体类、本体属性及步骤3)抽取的本体实例进行合成,构造完整的本体;
步骤5),根据描述逻辑,选取本体查询语言,构造本体查询语句;
步骤6),将步骤4)构造的本体以及步骤5)构造的本体查询语句作为输入,使用推理机进行推理,得到该设计模式的设计模式实例。
CN201710507261.6A 2017-06-28 2017-06-28 一种基于本体的设计模式识别方法 Expired - Fee Related CN107368302B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710507261.6A CN107368302B (zh) 2017-06-28 2017-06-28 一种基于本体的设计模式识别方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710507261.6A CN107368302B (zh) 2017-06-28 2017-06-28 一种基于本体的设计模式识别方法

Publications (2)

Publication Number Publication Date
CN107368302A CN107368302A (zh) 2017-11-21
CN107368302B true CN107368302B (zh) 2020-04-24

Family

ID=60305710

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710507261.6A Expired - Fee Related CN107368302B (zh) 2017-06-28 2017-06-28 一种基于本体的设计模式识别方法

Country Status (1)

Country Link
CN (1) CN107368302B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108228158B (zh) * 2018-01-18 2021-03-19 东南大学 一种基于本体的架构行为模式识别方法
CN109976805B (zh) * 2019-03-31 2022-09-09 东南大学 一种基于本体的事件驱动架构模式识别方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104391706A (zh) * 2014-12-02 2015-03-04 南京大学 一种基于逆向工程的模型库构造方法
CN104462460A (zh) * 2014-12-16 2015-03-25 武汉理工大学 一种构造rest风格的本体标注可视化系统的方法
CN105373537A (zh) * 2014-08-20 2016-03-02 西安慧泽知识产权运营管理有限公司 一种智能构件库管理方法
CN105808853A (zh) * 2016-03-09 2016-07-27 哈尔滨工程大学 一种面向工程应用的本体构建管理与本体数据自动获取方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8140556B2 (en) * 2009-01-20 2012-03-20 Oracle International Corporation Techniques for automated generation of queries for querying ontologies

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105373537A (zh) * 2014-08-20 2016-03-02 西安慧泽知识产权运营管理有限公司 一种智能构件库管理方法
CN104391706A (zh) * 2014-12-02 2015-03-04 南京大学 一种基于逆向工程的模型库构造方法
CN104462460A (zh) * 2014-12-16 2015-03-25 武汉理工大学 一种构造rest风格的本体标注可视化系统的方法
CN105808853A (zh) * 2016-03-09 2016-07-27 哈尔滨工程大学 一种面向工程应用的本体构建管理与本体数据自动获取方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于本体的设计模式抽取方法的研究;彭阳;《中国优秀硕士学位论文全文数据库信息科技辑》;20150815(第8期);第1-6章、附图3.2-6.4 *

Also Published As

Publication number Publication date
CN107368302A (zh) 2017-11-21

Similar Documents

Publication Publication Date Title
Sevilla Ruiz et al. Inferring versioned schemas from NoSQL databases and its applications
Ide et al. GrAF: A graph-based format for linguistic annotations
Li et al. Learning ontology from relational database
US7693812B2 (en) Querying data and an associated ontology in a database management system
Suciu An overview of semistructured data
Abbes et al. Big data integration: A MongoDB database and modular ontologies based approach
US8701087B2 (en) System and method of annotating class models
Chillón et al. A model-driven approach to generate schemas for object-document mappers
CN107491476B (zh) 一种适用于多种大数据管理系统的数据模型转换及查询分析方法
CN107368302B (zh) 一种基于本体的设计模式识别方法
Na et al. A method for building domain ontologies based on the transformation of UML models
CN110019554B (zh) 数据驱动型应用的数据模型、数据建模系统和方法
Wache et al. Practical context transformation for information system interoperability
Alberts et al. An Integrated Method using Conceptual Modelling to generate an Ontology-based Querying Mechanism
Zhou et al. Tool for translating relational databases schema into ontology for semantic web
Jing et al. SPARQL graph pattern rewriting for OWL-DL inference queries
Kayed et al. Using BWW model to evaluate building ontologies in CGs formalism
Zarembo Automatic transformation of relational database schema into owl ontologies
Podsiadły-Marczykowska et al. Rule-based algorithm transforming OWL ontology into relational database
Geetha et al. Extraction of key attributes from natural language requirements specification text
Alaoui et al. Automatic Mapping of Relational Databases to OWL Antology
Jakob et al. View creation of meta models by using modified triple graph grammars
Mosca et al. Ontology learning from relational database: a review
Paulheim et al. An architecture for information exchange based on reference models
US20240202539A1 (en) Generative artificial intelligence crawling and chunking

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20200424