欢迎来到盛茂公文网!

公共信息模型的本体解析与校验

文章来源:网友投稿 时间:2022-11-08 16:15:18


打开文本图片集

摘 要:针对现在电力信息系统中CIM版本更新以及私有拓展导致的模型不一致的问题,提出一个基于Java基础包的公共信息模型本体的解析算法以及特定要求下的校验方法,其中包括解析CIM模型,并重构成Java模型并且完成电力系统所需要的功能校验,实验结果证明整个解析以及模型重构过程能准确而快速得完成,校验过程能准确得将模型中的不匹配信息提取并反馈给用户。

关键词:本体模型解析;模型重构;全模型构建;RDF解析;功能校验

中图分类号:TP391.9

0引言

标准开放的电力系统信息模型是实现应用集成的基础。IEC61968/IEC61970标准中的公共信息模型(CIM)不仅描述了不同电力应用之间需要交换信息的语义,还为数据交换和利用提供了最大的灵活性和可扩展性[1]。随着城市配电网规模的扩大,电力企业应用增加,应用系统间存在大量信息交换,如何实现业务信息的无缝集成,即已成为电力企业信息化过程中的热点问题。然而在实际应用中,可能遇到以下2个问题:一是公共信息模型(CIM)随着应用的需求不断进化,版本更新频繁,各厂家的产品在版本上不易保持同步,造成模型语义的差异;二是不同应用或不同企业之间可能需要根据内部需求,对CIM进行相应的扩展,那么私有扩展模型可能导致应用间的语义难以辨识。这2个问题可归结为信息模型不匹配,及模型语义缺乏一致性[2]。要实现各个组件或产品间的信息共享或者交互,模型的一致性是重要的前提,模型的版本或者模型定义不同可能会带来数据交互失败以及信息提取错误等问题,因此进行公共信息模型的校验是比较必要的[1]-[2]。

目前国内外正在使用的重点常见本体解析工具包可给出如下阐释描述。

1)Jena解析工具包。时下,国外公司通过OWL解析包Jena制作了一个用于CIM模型解析以及校验的工具,可以完成特定版本CIM模型的解析和校验。但是由于CIM模型更新快速,以致于由Jena构建的解析工具整体滞后CIM的更新速度,即使得最新的CIM模型有效实现优质解析及校验,已有研究指出该解析校验工具在电力系统的使用将存在重大的局限性[3]。

2)Protégé OWL API工具包。Protégé是一种树形式的本体编辑方式,能够允许本体模型操作人员在创建或解析相应视图时维护概念、关系与属性的树状层次结构,通过本体模型的树状层次结构对本体模型所包含的信息进行解析。只是这种方式要更加侧重于如下人群,也就是:对于本体模型的结构以及语义具有清晰理解的专业人员适宜使用。

为了能够更好地核心切合电力系统的CIM模型,并且在解析以及校验过程中能清晰地跟踪各函数及对象所处理的具体工作,以便于在后期出现解析错误或者问题时能轻松地展开问题追踪,并且做出决定性的精准修改。本文为此而提出一种不依赖于OWL解析包Jena的解析以及校验方法,采用Java基础工具包对构建完成的CIM模型进行解析,并且根据电力系统的需求,针对性地设计4个校验函数达成校验目的。在解析及校验过程中出现问题可以追踪到出现错误的步骤,高效调整后即可使用,可以方便得进行错误修改。另外,校验函数之间相互独立,若电力系统有进一步的校验需求,则可以编写定制函数加入到校验系统中即可使用。

1工具及相关技术

1.1 DOM4J

DOM4J是一个Java的XML API,是JDOM的升级品,设计上可用于XML文件的读取。DOM4J是一个十分优秀的Java XML API,功能强大、且易于使用。不仅如此,在性能上已然超过SUN公司官方的DOM技术,同时更是一款开放源代码的软件。本文主要运用DOM4J对于XML文件呈现的高超处理能力,来对OWL构建的CIM模型进行解析处理。

1.2 OWL

网络本体语言(Web Ontology Language)源起于W3C的开发设计,可用于对本体进行语义描述。进一步地,OWL有3种表达能力递增的子语言[4]。

OWL DL(Description Logic,描述逻辑)将可判定推理能力和较强表达能力作为首要目标。OWL DL提供了描述逻辑的推理功能,描述逻辑是OWL的形式化基础。本文研究解析的CIM模型即是通过OWL DL定义实现构建的。

2 本体模型的解析

2.1分类处理

对构建的CIM模型采用信息提取技术,并将得到的模型信息进行分类处理,通过研究将得到的子节点信息分为五大类,具体则为类、包、属性、实例、自己数据类型。为了方便之后的解析以及Java模型構建,将分类后的节点存储于对应的列表中。

对获取得到的信息展开遍历解析工作,本文通过对CIM模型构建2层XML树,并通过遍历生成树的方式对根节点下的各信息进行提取,将获取的信息通过Type属性实施重点分类处理,构建生成Class、Individual、Property、Package、Datatype五个列表。

2.2实例建模

获取子节点之后再次采用DOM4J的XML树遍历功能,对子节点下的各条信息进行遍历,分别提取出相应的信息。从上文中给出的示例可以得到Class的模型中包括的信息如图1所示。

由图1可知,其中的IsDefinedBy标注类属于哪个包,SubclassOf标注该类的父类。

由于OWL语法和Java不同,需要用Java对CIM模型设计提供更多处理则必须对解析得到的信息再以Java语法进行重新建模。但由于在Java中类仅支持单继承,而OWL却支持多继承,因此就要将类的继承经由适当转换以满足下文处理的需求,同时还要对CIM模型的信息含量不会产生影响[5-8]。

由于下文校验中需要对类的存在性以及类中各属性的基数、属性值进行校验,为此本文将采用将多个父类重构一个新类,以涵盖多个父类所有的信息。这种处理不会波及下文中的校验过程,也能有效实现对于多继承到单继承的转换。因为此处仅在该类处理过程中对于多父类进行重新构建,并不影响原始信息[9-10],对于其他类处理时的父类查找以及信息集成也不会不产生任何作用效果。

2.3 构建整体模型

1)同上节中的方法,可以得到Package的Java模型,从其IsDefinedBy属性可知上一层定义的包名,如此纵向迭代即可获得模型中定义的包结构。得出Java中的以“.”连接的包名结构。

2)解析重构生成的模型存放于List中,通过迭代列表对比URI的方式查找需要的类。

3)通过类模型中的SubclassOf属性获取对应类的所有父类,通过前述提及的构建方法,将同一个类的多个父类合并成一个新类,只用于该类的继承,其余类之间的关系与构成的新类无关。纵向迭代以生成所有类的继承关系。具体合并方式如图2所示。

4)在解析过程中通过Type的标注就会发现属性可以分为5类,分别为Property、DatatypeProperty、FunctionalProperty、ObjectProperty和InverseFunctionalProperty。其中,DatatypeProperty为数据属性,约束该属性值的数据类型。

5)OWL中类的对象属性(ObjectPorperty)可认定为是该类的父类,因此解析类的对象属性需要该类的所有父类,纵向迭代即可获取所有对象属性约束。在OWL中,对象属性分为2种,一种被存在量词所约束,另一种被全称量词所约束。OWL API中,有2个不同的类型与之相对应,分别为OWLObjectAllValuesFrom和OWLObjectSomeValuesFrom。

6)遍历实例列表,获取每个实例的Type属性值,实例模型中的Type标注的是该实例所属的类名。将获取到的属性值与类列表中的Name属性值提供对照比较,找到对应的类,建立起类与实例的关系。

通过以上步骤可以得到转变完成以后以Java语法整体构建实现的CIM模型,如图3所示。

3待校验RDF文档解析

CIM/XML是将CIM语义信息模型及其扩展映射为包含电力系统模型信息的CIM/RDF应用,因此必须遵守CIM语义及其自己的约束机制 [1] 。如前所述,CIM版本的快速更新以及各厂家根据各自的需求对CIM模型的私有扩展即使得CIM/XML和OWL构建的CIM模型表现出一定差别,因此为了更好地创建提供信息交互以及文件信息的读取,则需要对CIM/XML文件引入正确性校验环节,如存在不符合当前CIM模型的信息需在有效更正后方能正确地进行信息交互。

4文件校验

本文中设计提出的公共信息模型的校验总共划定为4个校验方法,分别为类的存在性校验、属性存在性校验、属性基数校验以及属性值类型校验。下面对这4种校验的具体方法展开详细剖析与论述。

4.1 类存在校验

由于版本更新以及各厂商对于私有功能的拓展,可能会发生更改类名或者添加部分特殊需要的类以适用特定的场景等事件,此时在CIM/XML中就可能出现CIM语义信息模型定义中根本不存在的类,这就使得需要对类的存在性进行校验,以确保在信息交互的时候每个类都能在CIM中找到与之对应的模型,高效实现信息加载和读取。

4.2 属性存在校验

每个子节点下面有若干属于该子节点的属性,在CIM/XML文档中为子节点更下一层的子节点,依然采用DOM4J中设计研发的XML树的遍历函数对其进行遍历解析,可以得到每一条属性信息。子节点下的属性值包括其父类的属性,需要通过一个类名找到所有与其相关的父类,并且得到父类的所有属性,用于属性存在性校验。

4.3 属性基数校验

网络本体语言中对于属性基数的约束有2类。一类为属性基数约束,在属性中通过maxCardinality或者minCardinality进行约束,另一类则通过FunctionalProperty以及InverseFunctionalProperty进行全局属性约束。

具体过程中,分别对以上2类约束研究采用了遍历校验,通过获取CIM模型的节点信息,对以上4个关键字设置了比对查找,若存在相应属性条,则进行属性基数校验。若对应节点下的相应属性基数不符合CIM模型的约束,则生成一则属性基数错误信息。

4.4 属性值校验

在OWL中,属性值分为Integer、String、Float等几类,研究中对于CIM/XML中屬性值的校验主要分为2部分,一为属性值类型校验,确保属性的属性值满足信息模型中的约束条件;另一为属性值域校验,使得属性的值域满足信息模型中的约束。基于此,两者相应的设计论述可分做如下呈现

4.4.1属性值类型校验

CIM/XML模型中对于属性值类型的约束只有Integer、String、Float三类,因此需要区分属性值的类型后再与模型中的约束值配置指定比对,若两者相符则通过校验,否则添加一则“属性值类型错误”信息。

属性值的结构比较复杂和随机,若设计匹配算法不仅繁琐,也容易忽略细节因素,导致校验存在漏洞,为了更方便、也更准确地实现了结构比对,本文选用正则表达式对属性值进行文本转换校验。

正则表达式又称规则表达式,是计算机学科的一个基本概念。正则表通常可用来检索、替换那些符合某个模式的文本。研究中需用到的正则符号则如表1所示:

采用Java语言中String类的matches方法即可将获取到的属性值上述正则表达式展开设计比对,若符合正则表达式内置规定的结构,则返回1,否则返回0。通过返回值即可判断属性值是否为数据类型:若返回为1,则为数据类型;否则即为String类型。通过String类的indexof方法获取属性值中小数点的位置,若小数点的位置大于0,即为float类型,否则可判定为integer类型。

4.4.2属性值域校验

在OWL中对于属性值的约束主要有3个,分别为:owl:AllValuesFrom、owl:SomeValuesFrom、owl:HasValue。

对所获取的CIM模型进行信息提取,通过上述3个关键字比对,查看CIM模型是否存在属性值域约束,若存在相应约束,则对CIM/XML中的对应属性进行相应校验;若属性值域不满足模型中的约束条件,则添加一条“属性值域错误”信息。

5 测试

本文选用CIM_2009模型进行解析,通过解析程序能两项生成设计预期的各个信息列表,根据上文信息实现模型重构之后存入对应列表执行校验操作。

为了方便测试以及利于解析结果的完整查看,本文在测试环节中将解析得到的各个信息列表存入数据库。运行解析完成后生成的数据表如图4所示。

从以上数据表中可以看到整个模型中总共解析生成994个类,4169个属性,639个实例,73个数据包和107个数据类型。根据解析所得的各个信息继续推进模型的校验工作。

校验工作的完整步骤流程则如下所示:

1)将待校验的RDF文档导入程序后即选择了比对操作,比对之后出现2个类不存在错误信息,在CIM_2009模型中没有定义Feeder类,而RDF文档中存在Feeder的实例对象,如需进行信息交互必须将RDF统一成CIM模型所约束的模型实例。校验结果中存在2个Feeder实例,具体信息如图5所示。

2)对于属性存在性校验中,RDF文档中的多个实例存在Equipment.curAssetModel属性,而在CIM模型中未曾定义该属性,因此所有包含此属性的类实例都出现在“属性不存在错误”信息列表中。由执行结果中截取一个结果实例即如图6所示。

3)在属性存在性校验中,还有另外一种情况就是当前实例所属的类以及其所有的父类都不存在该实例中设计出现的属性,这也可归结为是一种属性的非法使用。在本文所用的测试算例中多次中出现了

Equipment.EquipmentContainer屬性,而其所有的父类都不存在该属性,因此生成了一条“属性不存在错误”信息。从执行结果中截取一个实例效果如图7所示。

4)属性基数以及属性值类型均能顺利通过校验。

通过上述校验步骤能快速发现待校验RDF文档中出现的不符合CIM模型约束的信息,而当于其他实例应用发生信息交互时就需要进行更正以确保交互的正确性。

6 结束语

通过本文的方法对OWL构建的CIM模型进行解析以及校验,在一定程度上能够改善RDF文档的规范有序,从而确保在CIM快速更新以及私有拓展普遍的电网系统中能够有效实现信息交互与文件信息加载。

本文只通过Java基础工具包进行模型解析,不采用集成工具使得整个系统的后期拓展成为可能,在CIM模型更新后即能在最小改动之下最为高效地展现新模型的解析及校验工作的良好成果。

在特定场景的需求下,需要特殊的校验条件或者增加其他校验约束也能通过添加方法快速实现。对于整个校验过程能清楚展现,对于校验出现的错误信息也能更为直观地跟踪具体出现错误信息的环节。

参考文献

[1]曹哲,刘东,包海龙. 基于本体的公共信息模型更新与扩展分析[J].电力系统自动化,2013,37(11):71-75.

[2]于洋,刘东,陆一鸣,等. 基于本体的IEC61968标准信息模型一致性校验[J].电力系统自动化,2012,36(14):46-51.

[3]赵会群,张诗侃,赵俊宝,等,本体解析的应用研究[J].计算机时代,2012(7):20-22.

[4]倪欢,许卓明. OWL本体查询技术研究[J].河海大学学报(自然科学版),2006,34(3):333-336.

[5]蔚晓娟,冉静,李爱华,等. 基于DOM的XML解析与应用[J].计算机技术与发展,2007,17(4):86-88,139.

[6]王梅.网络本体语言(OWL)的标准体系解析[J].图书情报工作,2005,49(7):20-24.

[7] 张屹峰. DOM4j解析技术探究[J].现代计算机(专业版),2011(17):39-42.

[8]陈飞飞. 基于DOM4J的XML文档解析技术研究与应用[J].软件导刊,2016,15(3):36-37.

[9]LIU Hongxing, YANG Qing. Semantic analysis approach for construction of OWL ontology[J].Journal of Southeast University,2006,22(3):365-369.

[10]SIRIN E,PARSIA B,GRAU B C,et al.Pellet:A practical OWL-DL reasoner[J]. Journal of Web Semantics-Science,Services and Agents on the World Wide Web,2007,5(2):51-53.

推荐访问:本体 校验 模型 解析 信息

本文来源:https://www.sh-renlong.com/zhuantifanwen/gongwenfanwen/22333.html

推荐内容