基于扩展XQuery引擎的空间数据流查询方法研究((2)
2014-06-09 01:13
导读:import schema namespace GML="http://schemas.opengis.net/gml/" at" geometry.xsd"; 引入GML的schema后,可以将GML进行描述的空间变量定义为schema限制的element变量作为参数进行传
import schema namespace GML="http://schemas.opengis.net/gml/"
at" geometry.xsd";
引入GML的schema后,可以将GML进行描述的空间变量定义为schema限制的element变量作为参数进行传递,定义如下:
Let$p=doc(′test.xml′)/schema-element(GML:linestring)
2.2空间功能的扩展
定义了空间数据的表达方式后,对空间运算功能的实现在外部方法中进行。参照文献[6]中定义的空间方法,本文定义了SPATIAL类封装,实现了部分空间方法。由于Saxon的XQuery 实现中,支持对Java类的静态方法调用以及实例化对象方法调用,但对于需要实例化对象的方法调用相对复杂。为了方便调用,所有空间方法均定义为SPATIAL类的静态成员方法。定义如下:
public class SPATIAL{
public static boolean WithIn(Document a, Document b){…}
public static boolean Toughes(Document a, Document b){…}
public static boolean Crosses(Document a, Document b){…}
……}
实现了上述定义空间方法后,通过该类就可以扩展Saxon的XQuery引擎。扩展方法很简单,只需在XQuery语句中声明该空间类的名称空间,在查询语句中需要空间运算的地方调用该类的各种方法即可。比如要使用空间包含的方法,先声明名称空间:declare namespace SPATIAL=“java:myclass.SPATIAL”;然后只需在调用方法前加入名称空间即可,如SPATIAL:Disjoin(…)。
另外需要注意的是,如果扩展的方法返回值不是简单数据类型则需要进一步处理。本文方法只是返回空间的包含相交等关系是否为真,是简单的布尔类型,不需要进一步处理。 共2页: 1 [2] 下一页 论文出处(作者):
基于WF-net的工作流恢复网模型的研究
基于结构化P2P的分布式数据流系统的查询处理模型