法律状态公告日
法律状态信息
法律状态
2019-11-29
授权
授权
2016-06-29
实质审查的生效 IPC(主分类):G06F9/44 申请日:20151225
实质审查的生效
2016-06-01
公开
公开
技术领域
本发明属于计算机领域,特别涉及一种CIM模型应用的编程框架。
背景技术
公共信息模型CIM(CommonInformationModel),是一个抽象模型,定义了IT环境中受控元素如何被表示为一组通用的对象以及这些对象之间的关系。CIM(electricity)是电力企业中的通用标准,它表示包含在EMS信息模型中的电力企业的所有主要对象,它提供了用于不同EMS系统间交换数据的一个通用模型,在基于CIM的EMS系统间交换信息是以CIM/XML为载体,而CIM/XML数据本质上是基于CIM语义的资源描述框架RDF(ResourceDescriptionFramework)数据。
以公共信息模型作为各应用系统间信息交互的语义基础,避免了不同系统信息模型之间直接进行转化,各应用系统只需面向公共信息模型,建立起私有数据模型与CIM模型数据的映射,从而实现信息共享和系统间互操作。目前对CIM/XML数据进行本地化转换的数据映射工具还比较少,并且缺乏一种通用的框架方便人们来开发特定应用系统的CIM数据映射工具。
发明内容
为了克服现有技术的不足,本发明采用一种基于CIM对象模型的编程框架,用于更加高效便捷地开发CIM模型与特定应用系统之间的数据映射工具。为实现上述目的,本发明采用的技术方案为:
一种用于CIM/XML数据处理的CIM对象模型,其特征在于:
(1)该CIM对象模型定义了一种用于描述CIM模型的方式,包含类、属性和类关系三部分,三者分别用于描述CIM模型当中定义的类、类属性以及类之间的关系。
(2)该CIM对象模型定义了用于遍历CIM对象模型的方法,可按照所属包、继承关系或者其他分类方式为依据,遍历CIM对象模型中的类。
(3)该CIM对象模型定义了查询、插入、修改、删除CIM对象模型中的类的方法,可按照所属包或继承关系的遍历方式查询CIM对象模型中的类。
CIM对象模型按照两种方式来组织和管理对象模型中的类:第一种是按照类所属的包,将类归并到不同的集合当中,在对类进行增删操作或者修改类所属包的时候,同时更新这些集合的状态;第二种是利用特定的数据结构来表征CIM对象模型的继承关系树,在对类进行增删操作或者修改类基类的时候,同时重新调整继承关系树。调用CIM对象模型的遍历和查询方法时,可选择按照所属包或者按照继承关系的方式来遍历或者查询CIM对象模型中的类。
进一步的,CIM对象模型中的类由类标识、类名称、类版型、类基类、所属包、类描述、属性列表组成。类版型缺省值为空,可选为原始类型或者枚举类型。属性列表由CIM对象模型中的属性组成,可为空。
进一步的,CIM对象模型中的属性由属性标识、属性名称、属性描述、所属类、属性变量类型、类关系信息组成。类关系信息由CIM对象模型中的类关系定义,可为空。
进一步的,CIM对象模型中的类关系由关系标识、关系名称、类关系描述、是否聚集、重数、关系定义域、关系值域、反向角色名组成。
本发明还提供了一种基于上述CIM对象模型的用于CIM/XML数据处理的编程框架,技术方案如下:
一种用于CIM/XML数据处理的编程框架,包括以下步骤:
(1)该框架可读取并解析CIM模型的RDFSchema文档,构建CIM对象模型;
(2)该框架可遍历CIM对象模型,依次生成CIM类定义文件,类定义包括类标识、对象标识和类属性等成员变量,也包含用户定制的数据处理接口,用户在该接口中编码实现特定的数据处理功能;
(3)该框架可读取并解析CIM数据文档,根据CIM类定义文件,构建CIM数据实例,遍历CIM对象模型,取出数据实例并调用由用户实现的接口。
进一步的,所述步骤(1)中,CIM对象模型由CIM对象模型中定义的类、属性和类关系构成,并以类之间的继承关系来组织和管理CIM对象模型。框架可调用CIM对象模型中的对CIM类的操作方法,操作包括查询、插入、删除、修改等。框架可调用CIM对象模型的遍历方法。
进一步的,所述步骤(1)的具体实现方法为:解析表征CIM模型的RDFSchema文档时,按以下流程提取信息,自动构建CIM对象模型,其中CIM对象模型将包含所有的RDFS类信息:
(1)获取其中的一个rdf:class资源的信息,生成CIM对象模型中的类;
(2)根据上述CIM对象模型类,获取该类的rdf:property资源的信息,生成CIM对象模型中的属性,并加入到对应类的属性列表中;
(3)如果上述rdf:property资源中存在cims:inverseRoleName的描述,则生成CIM对象模型中的类关系,作为对应类属性的类关系信息;
(4)如果存在未读取的rdf:class资源,重复流程(1),否则完成CIM对象模型的构建工作。
进一步的,所述步骤(2)的具体实现方法为:框架可遍历CIM对象模型,根据CIM对象模型中所包含类信息,生成相应的CIM类定义作为数据实例的类定义。这些类定义既包括类标识、实例标识和类属性等成员变量,也包含由用户定制的数据处理接口,用户在其中进行编码以实现特定的数据处理过程。
进一步的,所述步骤(3)的具体实现方法为:读取CIM数据文件,按照以下流程完成用户实现的功能:
(1)获取CIM/XML数据文件中某个类的资源实例;
(2)查看对象模型中是否存在该类,若存在则根据前面生成的CIM类定义,生成对应的CIM数据实例。否则将该资源实例的标识信息加入到已忽略信息列表中;
(3)重复流程(1),直到数据文件解析完成;
(4)调用CIM对象模型的遍历方法,由父类到子类遍历CIM对象模型,取出对应的CIM数据实例并调用用户实现的数据处理接口。
本发明的有益效果是:
(1)本发明提出了一种用于表征CIM模型的CIM对象模型,并且提供了搜索、遍历模型的方法,可通过解析RDFSchema文档来生成CIM对象模型;
(2)本发明为基于CIM交换模型信息的应用系统提供了一种编程框架,方便用户来实现特定系统的数据映射工具。
(3)本发明的编程框架提供了统一的数据定义、编程接口,基于单个CIM类的自管理机制,使得用户能够更加灵活、自主、高效地处理CIM/XML数据。
附图说明
图1为本发明提出的用于CIM/XML数据处理的CIM对象模型示意图。
图2为本发明提出的用于CIM/XML数据处理的编程框架的流程图。
图3为实施例中动物园信息系统的CIM模型示意图。
图4为实施例中用户利用编程框架处理CIM/XML数据的流程图。
图5为实施例中生成的CIM对象模型示意图。
具体实施方式
下面结合附图对本发明的具体实施方式作进一步的详细说明。
实施例1
如图1所示为本发明构建的CIM对象模型。该CIM对象模型包含类、属性和类关系三部分,三者分别用于描述CIM模型当中定义的类、类属性以及类之间的关系。CIM对象模型中的类由类标识、类名称、类版型、类基类、所属包、类描述、属性列表组成。类版型缺省值为空,可选为原始类型或者枚举类型。属性列表由CIM对象模型中的属性组成,可为空。CIM对象模型中的属性由属性标识、属性名称、属性描述、所属类、属性变量类型、类关系信息组成。类关系信息由CIM对象模型中的类关系定义,可为空。CIM对象模型中的类关系由关系标识、关系名称、类关系描述、是否聚集、重数、关系定义域、关系值域、反向角色名组成。
该CIM对象模型定义了用于遍历CIM对象模型的方法,可按照所属包、继承关系或者其他分类方式为依据,遍历CIM对象模型中的类。该CIM对象模型定义了查询、插入、修改、删除CIM对象模型中的类的方法,可按照所属包或继承关系的遍历方式查询CIM对象模型中的类。
CIM对象模型按照两种方式来组织和管理对象模型中的类:第一种是按照类所属的包,将类归并到不同的集合当中,在对类进行增删操作或者修改类所属包的时候,同时更新这些集合的状态;第二种是利用特定的数据结构来表征CIM对象模型的继承关系树,在对类进行增删操作或者修改类基类的时候,同时重新调整继承关系树。调用CIM对象模型的遍历和查询方法时,可选择按照所属包或者按照继承关系的方式来遍历或者查询CIM对象模型中的类。
如图2所示,本发明的一种用于数据处理的CIM对象模型及其编程框架,在实现时主要分成两部分。
第一部分的任务是构建CIM对象模型和生成CIM类的定义文件,主要包括以下几个步骤:
(1)获取指定的CIM模型的RDFSchema文档;
该文档以资源描述框架RDF作为定义格式,用于定义和描述CIM/UML当中定义的类图以及类之间的关系。
(2)解析CIM模型的RDFSchema文档,构建CIM对象模型;
框架解析RDFS文档时,从中提取出类、类属性以及类之间的关系等信息,用于生成CIM对象模型的类、属性和类关系,构建CIM对象模型。
用户可在编程过程中,利用CIM对象模型提供CIM类的查询和删除等操作方法,通过比较CIM模型和本地数据模型(例如本地数据库定义的表段结构,本地信息模型等)的差异,删除不能匹配本地数据模型的CIM类,使得该类对应的CIM/XML资源实例被过滤掉。
(3)调用CIM对象模型遍历方法,依次生成CIM类定义文件,作为数据实例的类定义。
框架提供用于生成数据实例的方法,可遍历CIM对象模型,依次取出CIM对象模型中的类,根据类中所包含的类信息、属性信息,生成CIM类定义,作为相应的CIM数据实例的类定义,该类定义包括类标识、实例标识和类属性等成员变量,以及用户定制的数据处理接口。CIM类定义不仅用于生成CIM/XML资源实例的数据实例,并且提供接口让用户编码实现特定映射规则下的数据处理过程。
第二部分的任务是构建CIM数据实例,完成数据处理过程,主要包括以下几个步骤:
(1)获取指定的CIM/XML数据文件;
CIM/XML数据文件作为CIM模型信息的一种载体,本质上是基于CIM语义的RDF数据。
(2)解析指定的CIM/XML数据文件,生成对应的CIM数据实例;
数据文件中包含CIM类的资源实例,每个资源实例中包含某个CIM类的类和属性值,可将其解析出来,并根据对应的类定义生成CIM数据实例。
(3)遍历数据实例并执行由用户实现的接口。
用户调用CIM对象模型提供的遍历方法,由父类到子类遍历对象模型,依次取出CIM数据实例,执行由用户实现的数据处理接口。
如图3所示,以实现动物园信息系统的数据映射工具作为本发明具体实施方式介绍的应用场景,该数据映射工具通过处理CIM/XML数据来生成本地数据系统可导入的SQL数据文件,处理流程如图4所示。
(1)假设该动物园系统已存在统一的公共信息模型,如图3所示,并且已存在该模型的RDFSchema文档。用户在设计动物园信息系统的数据映射工具时,首先需要读取动物园的RDFS文档,利用CIM对象模型编程框架提供的方法完成对文档的读取和解析,并构造CIM对象模型,构成的CIM对象模型如图5所示。
本地数据库中不存在与Bird类相对应的表格,用户在编程时可删除CIM模型中的Bird类,则后面解析CIM/XML数据文件时,与之对应的资源实例将被过滤掉。
(2)在生成CIM类定义文件之前,用户可自行编码定制所需的数据处理接口,包括接口声明及其默认的实现。本实施例中用户的定制接口如下:
publicbooleangenerateSQL(ofstream&fout){
returntrue;
}
(3)遍历CIM对象模型生成CIM数据实例的类定义。根据CIM对象模型中的CIM类的信息和用户定制的接口,生成对应的CIM类定义,定义包括类标识、实例标识、类属性和数据处理接口。例如,Animals类的类定义如下所示:
publicclassAnimals{
publicStringclassURI;//所属类的标识
publicStringobjectURI;//实例标识
……//所属类的属性
/**用户定制数据处理接口**/
publicbooleangenerateSQL(ofstream&fout){
returntrue;
}
}
(4)实现用于数据映射功能的数据处理接口generateSQL。
本例中由用户定制的接口功能是,获取到SQL数据文件的句柄,生成SQL语句并写入到文件中。
本实施例所采用映射方法如下:CIM类实例依据本地数据模型中实际的表段定义,生成对应数据记录以插入到数据库当中。例如:类Fish映射成表fish,类中的Fish.ID属性映射成字段pk_fish_id,类中的Fish.Info属性映射成字段fk_fish_info。CIM类中的属性若值域是Integer、String等基本数据类型,可直接按照对应的字段类型生成字段的值,否则,如果属性是以其他CIM类作为值域的,则需要通过该属性的类关系(如果存在)进行判断,按照符合数据库规范的顺序插入记录。
(5)假设存在基于动物园CIM模型的数据文件。用户调用框架提供的方法读取并解析该数据文件,框架将根据CIM类定义生成对应的CIM数据实例。具体做法:提取数据文件的资源,如果资源实例的rdf:class是Bird类,该资源实例将被过滤掉,不生成数据实例。其他保留着的CIM类的资源实例,将按照它们所属的CIM类,生成对应的数据实例。这些数据实例中包括对象的标识、所属类的标识、属性值等信息,并具有所属CIM类的数据处理方法。
(6)所有映射前工作准备到位后,用户调用编程框架提供的遍历方法来获取对象模型中未删除的类。
(7)取出未删除类对应的数据实例集合,调用数据实例的数据映射接口。当遍历了所有的数据实例之后,将生成可导入本地数据库的SQL数据文件,CIM/XML数据映射完成。
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
机译: 用于存储数据的数据处理系统具有存储单元,用于生成对象模型的计算机单元,搜索引擎和相关单元
机译: 用于合成双耳音频信号的方法和装置;一种合成立体声音频信号的方法;参数音频解码器;计算机程序上存储的计算机程序产品,可在数据处理设备中执行以执行用于处理音频信号参数编码ADO的数据处理设备,该信号至少包括多个音频通道的组合信号和一组或多组音频描述多声道声像的相应信息;产生编码音频信号参数的方法;音频编码器,用于生成参数音频信号。 Etricamente编码;计算机程序的产品。通过计算机存储在计算机中,并在数据处理设备中可执行以生成编码的音频信号参数
机译: 一种用于生成对象模型的方法和设备。