当前位置: 首页 > 工具软件 > GML4J > 使用案例 >

GML模式匹配及其应用(转载)

权玉泽
2023-12-01
摘要: GML允许用户在其基本模式的基础上进行扩充,构造自己的应用模式,这就造成了 GML应用模式的差异,从而影响了 GML数据的集成与共享。为此,提出了一种 GML模式匹配的方法解决了由 GML应用模式差异所引起的问题,实现了 GML应用模式的集成与共享。该方法的核心思想是把 GML模式转换成树状结构,然后,通过判断这两棵树的结构是否相似来判断 GML模式的一致性。最后,文章给出了一个实例来验证了 GML模式匹配的可行性。

关键字: GML; 模式匹配, GML模式树,最小结构相似度
中图法分类号:TP311, P208[@more@]0 引言
GML(Geography Markup Language)是由OGC(Open Geospatial Consortium)制定的基于XML的地理信息编码规范,主要用于地理信息的建立、存储和传输,为地理信息系统开发商和用户提供了一个开放的、中立于 任何厂商的地理数据建模框架,从而使地理信息能够在不同领域,不同部门之间进行流通和共享[1-3]。OGC相继推出了多个版本的 GMLGML1.0, GML2.0, GML3.0, GML3.1.1等)[4]。其中, GML1.0是基于文档类型定义(DTD)来定义空间数据,从 GML2.0后,开始使用模式文件来定义和建模地理空间数据,一个完整的 GML文件包括 GML实例文件和 GML模式文件两部分。实例文件提供了地理对象的各种数据,而模式文件则是对实例文件元素及结构的抽象定义。 GML提供了一些基本的模式,用户可以在此基础上构造自己的应用模式(Application Schema)。由于 GML建模的灵活性,再加上空间数据结构的复杂性以及不同用户的偏好等因素,不同厂商、不同用户对同一地理对象定义的应用模式可能存在很大的差异,这样就给数据的流通与共享带来了很大的不便。为了解决这个问题,这就需要我们对这些 GML模式进行匹配,确认不同的应用模式是否是表达同一个地理对象,实现这些应用模式之间的集成[5-10],便于数据的共享。
本文以 GML3.1.1为基础,在对 GML模式和模式匹配进行分析的基础上,提出了一种较为可行的模式匹配算法,实现了两个应用模式之间的匹配,并以一个具体的实例对模式匹配算法进行了验证。
1 GML模式和模式匹配
GML模式(schema)是对 GML文档结构的抽象描述,它定义了 GML文档中的元素、属性等。 GML3.1.1 定义了一些基本模式,如要素模式(Feature Schema)、几何模式(Geometry Schema)、时态模式(Temporal Schema)、Coverage模式(Coverage Schema)、拓扑模式(Topology Schema)和链接模式等,通过这些模式定义来描述地理世界。用户可以在这些基本模式的基础上,根据不同应用领域依据需求来定义自己的应用模式。
用户在建立自己的应用模式的时候,首先根据实际需求,建立适当的空间数据模型;然后选取 GML中相应的基本模式(Schema),对于其中的抽象类型定义给予实际的具体定义;最后根据 GML Schema语法规则,将其组合生成 GML应用模式。如图1为一个 GML应用模式文件。

图1 GML模式文件
Fig 1 A GML Application Schema
模 式匹配,顾名思义就是对不同的模式文件进行比较,看看它们定义的是否是同一个地理对象,如果是,则把这些模式集成为一个一致的、能够同时为各个不同用户共 同识别的规范模式。这样,就大大方便了地理信息数据的集成与共享。模式匹配从理论上讲应该包括模式结构匹配和语义匹配两个方面,但是考虑到模式中语义的随 意性太大,不利于实际操作(例如不同的人可能会根据自己的习惯给同一地理对象取完全不同的名字),因此本文只考虑从模式结构上进行匹配。如果两个模式在结 构上高度相似,我们就认为这两个模式定义的是同一个地理对象。
2 GML模式匹配算法研究
GML通过模式文件定义 GML实例文件的组织结构和属性等,再通过 GML实例文件来定义具体的地理对象。相同地理对象的 GML模式文件在形式上可能千差万别,但是其模式结构却十分相似。因此,我们可以通过比较两个模式文件的结构相似情况来判断这两个模式文件是否定义的是同一个地理对象。这里的模式结构主要是指模式文档中定义的各元素间的包含与被包含的关系。在进行模式匹配之前,先将 GML模式结构转化成一个清晰无异议的结构,即 GML模式树。然后,再对 GML模式树进行匹配,比较它们的相似情况,最后生成并输出它们的集成模式。进行模式匹配的基本过程如图2。
从上述流程可以看出,在模式匹配的过程中,涉及两个关键的算法, GML模式树的生产和模式匹配算法,下面分别介绍。
2.1 模式树生成算法
在对 GML模式进行匹配之前,必须先得到模式中各元素的结构关系。 GML模式中元素间的关系有包含与被包含的关系。由于模式文件本身的语法等方面的因素,各元素间的这些关系表现的并不是很清晰、明确。这就需要对模式文件进行处理,提取出各元素间的结构关系,并用一个树型结构来表示这种关系。实现算法描述如下:
Buildtree(String schemaLocation)//根据模式文件的目录建立模式树
{
root = getSchemaRoot(schemaLocation);//解析模式文件并得到该模式的根结点
treeRoot = root.getTreeRoot();//得到模式树的逻辑根结点元素
t=new tree(treeRoot);//建立模式树根结点
elment stepthrongh(root);//遍历模式文件并取出模式中所有元素,如果元素类型为基本 //类型,则将该元素直接看成叶结点。
{
if(element是前一个元素的孩子)
addAsChild();//将该元素做为前一个元素的孩子
if(elment 是前一个元素的兄弟)
addAsSibling();//将该元素作为前一个元素的兄弟
}
retrun t;//返回新生成的模式树的根节点
}

2.2模式树匹配算法
模 式树匹配算法主要是通过计算出两棵模式树的结构相似度,再根据用户给出的模式最小结构相似度来判断它们是否定义的是同一个地理对象。所谓模式的最小结构相 似度,是指用来判断两棵模式树是否相似的一个临界值。如果它们的结构相似度大于这个临界值,则认为它们相似;反之,则认为它们不相似。
该算法采用层序遍历的方式对两棵树进行比较:对于两棵树中的叶节点,如果它们的数据类型高度相似,则可认为它们在结构上相似;对于两棵树中的非叶节点,如果它们的孩子结点高度相似,也认为他们相似;对于 GML规 范中定义的基本类型,可以直接进行匹配。首先导入两棵模式树,然后从树的最底层开始比较,计算出这一层节点的相似度,如果其相似度大于给定的最小结构相似 度,则继续往上一层进行匹配。这样逐层往上,直到树的根节点。最后生成并输出它们的集成模式文件。具体的算法实现如下:
Matche(schemaTree1 t1, schemaTree2 t2, double degree)//输入要进行匹配的两个模式树文
{ 件和最小相似度。
double d ;//设置模式的结构相似度
list1 = 层序遍历(t1);// 层序遍历t1和t2,并把整棵树中的节点分层存储在不同的
list2 = 层序遍历 (t2) ;// 链表中
对于list1中的每个链表{
对于list2中的每个链表{
计算链表中树节点的相似度d;
If(d>degree) 继续匹配
else 退出匹配
}
}
如果两棵树的根节点通过了匹配
result = getIntegratedScheam()//如果最终结构相似度大于阀值则生成集成模式
return result; //返回生成的集成模式
}//算法结束

3 GML模式匹配实现

3.1 模式树生成
要生成 GML模式树,首先必须对 GML模式文件进行解析。由于schema文件是完全遵循XML语法规范的,我们可以用XML的解析器(XML Parser)去解析 GML Schema 文件。 XML Parser 有基于事件和基于树两种。基于事件的解析器如SAX,采用时间驱动方式,对文档开始和结束等,都触发事件交给程序处理,同时它将XML数据看成数据流,没 有树型结构的概念,它只能做顺序处理。基于树的解析器如DOM则是采用文档驱动方式,在处理时先将XML数据让逻辑结构在内存中组织成树型结构,再对内存 中的节点树做操作。
根据设计的模式匹配算法,笔者选择基于树的XML解析器。虽然XML Parser可以用来解析XML Schema文件,但是,模式文件有它自身的特点,其本身要比XML文件复杂的多。模式文件中各元素间的逻辑关系并不是完全通过嵌套来实现的,单纯的用 XML Parser 并不能得到Schema文件的结构树型结构。因此只能在XML Parser的基础上构建专门的模式解析器( GML Schema Parser)。
JDOM 就是一种很好的结合了DOM和SAX的优点的基于JAVA语言的XML解析器。JDOM支持随机读取整个文档,但是它并不需要把整个文档读到内存中,它支 持当需要时才读入信息的次轻量级操作。这样就大大节省了内存的开支。同时。JDOM也大大简化了对XML文件进行操作的方式,试图用20%的代码来解决 80%的工作[11]。
笔者以JDOM作为对模式文件进行前期读、写、操作的工具。首先用JDOM提取模式文件的根节点作为模式树的根节点,再根据模式文件的特点对JDOM在内存中生成的树型结构进行前序遍厉,逐层提取模式文件中的各个结点加入到模式树中,直到完毕。

3.2 模式树匹配

在生成了 GML模式树之后就可以对其进行模式匹配了。根据用户提供的模式最小结构相似度,如果匹配成功,则生成这两个模式文件的集成文件。对于定义的是同一地理对象的两个模式文件,用户可以根据需要选取其中的任意一个模式文件来作为它们的集成模式文件。

4实例验证

笔者运用两个模式文件City.xsd(详见图1)和CityModel.xsd来验证所设计的 GML模式匹配的可行性。它们都是对同一地理对象定义的模式,但是在结构和语义上存在着差异。首先,输入这两个模式文档,模式文件可以是本机上的文件,也可以是通过URL指定的模式文件,得到它们的 GML模式树,然后进行模式匹配的最小结构相似度的设置,本实例设置的最小匹配相似度为0.8,最后模式匹配器对两个模式树进行匹配并生成了它们的集成模式文件。模式匹配文件以及集成结果如图3所示。

在进行模式匹配时,用户应该根据实际情况选择适当的最小结构相似度,最小结构相似度选择的过高或过低都会影响到匹配的结果。如本实例中如果最小结构相似度设置为0.9,则匹配通不过。

5 结语

利用模式匹配技术,可以很快判断两个模式文件是否定义的是同一个地理对象,并生成它们的集成模式文件,有利于模式文件的流通与共享,促进 GML的推广。本文对模式匹配进行了初步的研究,所提出的模式匹配器能够实现两个的模式文件的匹配,但是,现实世界中人们可能有很多的模式文档实际上定义的是同一地理对象,这就对快速的批量匹配提出了要求,因此,有关模式匹配还有大量的工作,有待于进一步的研究。
参考文献
[1]. 钟志农、景宁、于大东等.地理标记语言 GML[J].微型机与应用,2003,(6):12-15.
[2]. 贾文珏、龚健雅、李斌.Web要素服务的优化方法[J].测绘学报,2005,34(2):168-174.
[3]. 李俊、关佶红、李玉珍. GML空间数据存储映射模型研究[J].武汉大学学报?信息科学版,2004,29(12):1071-1074.
[4]. OGC,Geography Markup Language ( GML3.1.1)[EB/OL], http://www.opengeospatial.org/specs/,2004.
[5]. 兰小机、张书亮、姜永发等.一种通用 GML3.0解析引擎的设计与实现[J].地球信息科学,2005,7(1):59-64.
[6]. 兰小机、姜永发、张书亮等.基于 GML的空间数据建模研究[J].工程勘察,2004,(6):54-56.
[7]. 关佶红、虞为、安扬. GML模式匹配算法[J].武汉大学学报?信息科学版,2004,29(2):169-174.
[8]. Galdos Systems inc, GML4J1.03[CP]. http://gml4j.sourceforge.net/,2005.
[9]. Guan J H, Zhou S G, Chen J P, et al. Ontology based GML Schema Matching for Information Integration[J]. ICMLC,Xi’an,2003(3):23-48.
[10]. David S Burggraf. Developing and Managing GML Application Schema[J/OL].[ http://www. geoconnection.org/developersCorner/devCorner_devNetwork/components/ GML_bpv1.3_E.pdf],2005.
[11]. Wes Biggs, Harry Evans用JDOM简化XML编程[EB/OL], http://www-128.ibm.com/developerworks/cn/
java/j-jdom/,2005.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/58646/viewspace-892735/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/58646/viewspace-892735/

 类似资料: