Title: Working%20with%20GML%20Application%20Schemas
1Working with GML Application Schemas
Milan Trnini, Galdos Systems, Inc.mtrninic_at_galdo
sinc.com
2Introduction
- Purpose of the experiment Analyze whether
working with GML application schemas is
hard/easy/feasible. - Application schema abstraction what does it
mean, what is its purpose? - Different uses of GML application schema
- Information captured in GML application schemas.
- API for working with GML application schemas.
3GML Application Schemas
- Intention of GML is to be base for creating
applications in different domains. - This is achieved by GML and XMLSchema
extensibility mechanisms. - Example of GML extension mechanism type
information in tag name. - GML occupies one level of abstraction.
- Application schema is built on top of it as
another level.
4GML Application Schemas
GML Application Schemas
Logistical
Transportation
Utilities
Location Service
Network
GML
Feature
Geometries
Topology
Other types
W3C
Other types
Strings
Numbers
5Multiple Application Layers
Transportation Services
Route finder
Route
Transportation Primitives and operations
Other
Intersection
Event
Road Segment
GML
Feature
Geometries
Topology
Temporal
W3C
Other types
Strings
Numbers
6Class Hierarchy
- Objects from one layer are used to compose or
create objects in a higher layer. - Use XML mechanisms type extension substitution,
sequencing, choices, etc. - Use GML mechanisms collections, associations,
feature-property model, etc. - Objects in different layers have different
scope/meaning/semantics.
Feature
Road Segment
Intersection
Event
Accident
Route
7XML and GML Types
GML instance
ltapproadNetworkMembergt ltappRoadSegment/gt
ltgmlcenterLineOfgt ltgmlLineStringgt
ltgmlcoordinatesgt300.003,1234.232 306.234,
1235.090lt/gmlcoordinatesgt
lt/gmlLineStringgt lt/gmlcenterLineOfgt
ltappotherPropertygtlt/appotherPropertygt
lt/appRoadSegmentgt lt/approadNetworkMembergt
8XML and GML Types
GML application schema
ltxsdelement nameRoadSegment
typeappRoadSegmentType substitutionGroup_Fea
ture/gt ltxsdcomplexType nameRoadSegmentTypegt
ltxsdcomplexContentgt ltxsdextension
basegmlAbstractFeatureType/gt
lt/xsdcomplexContentgt lt/xsdcomplexTypegt
- We dont care about XMLSchema types.
- Element declarations are our GML types.
9GML Types Names
GML instance
ltappqwegt ltappXYZ/gt ltappabcgt
ltappASDgt ltgmlcoordinatesgt300.003,1234.23
2 306.234, 1235.090lt/gmlcoordinatesgt
lt/appASDgt lt/appabcgt ltappotherPropertygt
lt/appotherPropertygt lt/appXYZgt lt/appqwegt
10GML Types Names
GML application schema
ltxsdelement nameXYZ typeappXYZType
substitutionGroupgml_Feature/gt ltxsdcomplexTy
pe nameXYZTypegt ltxsdcomplexContentgt
ltxsdextension basegmlAbstractFeatureType/gt
lt/xsdcomplexContentgt lt/xsdcomplexTypegt
- GML types names in themselves do not mean
anything!!
11Applications and Schemas
- What do applications need from the schemas?
- A piece of semantics is needed in order to know
what to do with the data. Not all of it. - What is semantics? How do we find it? Set of base
primitives used to compare artifacts and draw
conclusions about them. - Semantics in schemas type hierarchy, model
(feature property), metadata.
12Captured knowledge
- The knowledge exists in the schemas.
- Different uses and types of the knowledge
- Information about content or structure of types
- Information about types semantics type
hierarchy. - Information from the GML model we care about
this - Information from XMLSchema model - concerning
schema validation
13Semantics
- Again what do we need?
- Understanding of arbitrary schema?
- Understanding and processing of arbitrary
features? - Understanding always comes down to very simple
comparisons of strings (or other types). - Semantics by metadata same thing.
14Schema Validator
- For this purpose all the information from the
schema is needed, and it has to be interpreted
correctly according to the XMLSchema
specification. - XML Schema specification is fairly complex.
- Validating schemas means implementing all details
from XML Schema Specification (example
derivation by restriction) - Not an easy task.
- Performance issues are complex (depends on the
application where validator is used).
15GML Application Schema Parser (Content Examiner)
- Easier task than validating.
- Some assumptions can be made
- A client application will get a valid data
- If that is not the case, client can only report
the error, no need to analyze it according to the
XMLSchema specification. - Client is interested only in content, if
available. - No need to implement the whole specification it
is ok to assume and hardcode some things. - Errors might not be very precise.
16Uses of GML Application Schema Parser
- In all standard applications that use GML data
such as map portrayal applications, geocoders,
gazetteers, etc. - GML data editors that provide content guidance.
- GML application schema editors that provide
content guidance. - Applications for mapping of different data
models. - Hard to remodel existing schemas.
17Code Example
Vector getFeatures(Document gmlData) Vector
result NodeList nodes gmlData.getDocumentEl
ement().getChildren() for (int index 0
index lt nodes.getLength() index)
Node property nodes.get(index) boolean
isFeatureMember _schemaParser.isFeatureMember(pr
operty) if (isFeatureMember false)
continue Node value property.getFirstCh
ild() boolean isFeature
_schemaParser.isFeature(value) if
(isFeature true) result.add(value)
return result
boolean isFeature(Node node) return
((getSubstitutionGroup(node) _Feature)
(getBaseType AbstractFeatureType))
18Multiple Application Layers
ltapproadNetworkMembergt ltappRoadConstruction/gt
ltgmlcenterLineOfgt ltgmlLineStringgt
ltgmlcoordinatesgt300.003,1234.232 306.234,
1235.090lt/gmlcoordinatesgt
lt/gmlLineStringgt lt/gmlcenterLineOfgt
ltappotherPropertygtlt/appotherPropertygt
lt/appRoadConstructiongt lt/approadNetworkMembergt
ltxsdelement nameRoadConstruction
typeRoadConstructionType substitutionGroupRoa
dSegment/gt ltxsdcomplexType nameappRoadConstru
ctionTypegt ltxsdcomplexContentgt
ltxsdextension baseappRoadSegmentType/gt
lt/xsdcomplexContentgt lt/xsdcomplexTypegt
- This means only little more work for the parser
complexity is linear!
19GML Application Schema Parser API
- Content retrieval
- getFeatures
- getGeometry
- getProperties
- allowedFeatures
- allowedProperties
- allowedGeometries
- etc.
- Type functions
- isFeature
- isFeatureMember
- isGeometry
- isOfType
- etc .
- Miscellaneous
- getCardinality
- etc.
20GML Level of Abstraction
- Work with features, geometries, feature members
etc. - Not concerned about XMLSchema types, elements,
etc. - Use the same paradigm and model with different
data description languages (RDF, ).
21Performance
- Verbosity of XML/GML.
- Use of existing tools.
- Schema parser data model new DOM, tables and
arrays. - Solutions overlap with the ones regarding any XML
processing. - Not a bigger issue than processing of instance
documents (example - processing of Simple
Xlinks).
22Summary
- Extensibility and semantics on the level of the
application schemas achieved using simple methods
type extension. - Validator needs to perform deep and extensive
analysis of the schema it has to follow the
specification which can be (and often is)
complex. - Content examiner needs to follow type hierarchy,
metadata information etc., which is simple
comparable to processing instance documents. - Physical complexity of schemas is not the same as
the complexity of XMLSchema specification and
except for the basics does not mirror it.
23References
- XMLSchema specificationhttp//www.w3c.org/TR/xmls
chema-0/ - GML 2.1 specificationhttp//www.opengis.net/gml/0
2-009/GML2-11.html - Schema Infosethttp//www.research.ibm.com/XML/sch
ema/WD-XML-Schema-Infoset-API-Req.htm - GML model (specification, papers)
- GML4Jhttp//gml4j.sourceforge.net