Title: Diapositive 1
1Querying Mediated Geographic Data Sources
Aix-Marseille Universités
Mehdi Essid, François-Marie Colonna, Omar
Boucelma, Abdelkader Bétari -
System Overview
- VirGIS is a geographic mediation/wrapper system
that provides the following - Non-materialized view of geographic data.
- Geography Markup Language (GML) as an internal
format to represent, manipulate, and exchange
geographic information - GQuery, an XQuery-based spatial query language
- Wrapper definition via Web Feature Server (WFS)
- Technical details
- The system runs on 2.4Ghz and 1GB Linux Mandrake
server. - The system is a Web application hosted in a
Tomcat 4.1.29 server. - Core of the system contains 250 Java classes.
- External libraries Java Topology Suite, Deegree
and Geotools.
Sources Schemas
Local data sources consist of railroads and
highways covering the south east French
districts. Global schema features (GML classes)
Tronçon or Voie_fer are highlighted in
red. Queries are posed against those classes, in
using either GQuery or the graphical interface.
In using GQuery, one can express complex queries
over several global features. Complex queries
are processed by means of a three steps
algorithm.
Algorithm phases
- A decomposition step in which we decompose the
complex query into several elementary queries
that deal with only one global feature. This
results in a global execution plan - A rewriting step in which each elementary query
(expressed over the global schema) is rewritten
in terms of the local schemas. - A transformation step leading to the final
execution plan. This is done by replacing each
elementary query by its elementary execution plan
and translation queries. A translation maps local
answers to global (mediated) ones.
A concrete example
for x in document('troncon')/FeatureCollection/fe
atureMember/tronconType where x/nombre_total_voie
s gt '2' andx/position_sol gt 'Au solreturn
lttroncongt x lt/troncongt
Tree query rewriting sample
Global query
9
a
GQuery Interface
ltQuery ID"QUERY9" Priorite"4" Type"GQUERY"gt
for x in document(QUERY10)/FeatureCollection/fea
tureMember/tronconType return lttroncongt
xlt/troncongt lt/Querygt
8
ltQuery ID"QUERY8" Priorite"3"
Type"GQUERY"gt for x in document(QUERY4)/FeatureC
ollection/featureMember/tronconType return ltfeatur
eMembergt x lt/featureMembergt, for y in
document(QUERY7)/FeatureCollection/featureMember/t
ronconType return ltfeatureMembergt y
lt/featureMembergt lt/Querygt
4
7
ltQuery ID"QUERY4" Priorite"2" Type"JOIN"gt for
x in document(QUERY1)/FeatureCollection/featureMe
mber/tronconType, y in document(QUERY3)/Feat
ureCollection/featureMember/tronconType
where x/id y/id return
(ltFeatureCollectiongtltfeatureMembergt
lttronconTypegt ltidgtx/idlt/idgt
ltvocationgtx/vocationlt/vocationgt
ltnombre_chaussegtx/nombre_chausselt/nombre_chaussegt
ltgeomgtx/geomlt/geomgt lt/tronconTypegtlt/feature
Membergtlt/FeatureCollectiongt) lt/Querygt
1
6
Execution plan nodes
a
Graphical Result
3
0
5
GUI Screenshots
2
ltQuery ID"QUERY3" Priorite"1"
Type"GQUERY"gt for x in document(QUERY2)//toppVO
IE_COMMUNICATION_PACA return ltfeatureMembergt
lttronconTypegt ltidgt x/toppID_BDCARTO/node
()lt/idgt ltnombre_total_voiesgt
x/toppNB_VOIES/node()lt/nombre_total_voiesgt
ltdescriptiongt x/toppDESCRIPTIO/node()lt/desc
riptiongt ltid_typegt x/toppTYPE_ID/node()
lt/id_typegt lt/tronconTypegt lt/featureMembergt lt/Qu
erygt
ltQuery ID"QUERY0" Priorite"0" Type"HTTP"
Adresse /GetFeature"gt ltGetFeature
xmlnsgml"http//www.opengis.net/gml"gt
ltQuery typeName"toppTRONCON_ROUTE_04"gt
ltFiltergt ltPropertyIsGreaterTha
ngt ltPropertyNamegttoppPOS_SOL
lt/PropertyNamegt ltLiteralgtAu
sollt/Literalgt lt/PropertyIsGreater
Thangt lt/Filtergt lt/Querygt
lt/GetFeaturegt lt/Querygt