opengeospatial / CityGML3.0-GML-Encoding

CityGML 3.0 GML Encoding
11 stars 4 forks source link

Is Global Conformance Class mandatory? #32

Open dstenger opened 5 months ago

dstenger commented 5 months ago

We are currently developing a test suite for this standard.

It is not clear to us if the Global conformance class is mandatory or not.

The specification states this:


... 2.2. Conformance Classes

This standard identifies seventeen (17) conformance classes. One conformance class is defined for each GML schema. Each conformance class is defined by one requirements class. The tests in Annex A are organized by requirements class. So an implementation of the Core conformance class must pass all tests specified in Annex A for the Core requirements class.

Of these seventeen conformance classes, only the Core conformance class is mandatory. All other conformance classes are optional. In the case where a conformance class has a dependency on another conformance class, that conformance class should also be implemented. ...


This section names 17 conformance classes but the standard defines 18 (see Annex A). Although only Core is defined as mandatory, this section states that all depending conformance classes should also be implemented.

The specification also says:


... 6.1. Global Requirements

This chapter defines general requirements which are valid for all Conformance Classes and cannot be derived from the GML schemas. ...


Doesn't this mean that the requirements of Global are also valid for Core and thus, following the dependency, mandatory?

3DXScape commented 5 months ago

I understand the confusion. You probably understand what is going on here, but I will describe it from my point of view. The 17 conformance classes relate to the actual schemata and their structure. I call the set of 17 "structural modules". The Global (18th) class reflects constraints that can and should be tested. Implementation of some of the tests may require either further assumptions or examination of the contents of referenced elements. We arrived at many of the Global requirements by consideration of modelling and processing requirements - for example, the ability to interpret an instance of arbitrary size, where buffering everything in memory might not be possible. The structural modules define and constrain the structure of the representation. As the document states, there must always be conformance with Global. It would be possible to implement just Core, and that would require conformance with Global. Note that conforming to Global and Core is allowed. That would be the smallest/simplest implementation (but useless). Conforming with Building, Bridge, or Tunnel will also require conformance with Construction and Core. Some Modules, like Versioning, are disjoint and often not implemented. Finding all of the dependencies is not trivial. Testing a claim of conformance with a subset of the 17 structural modules might be complicated by an implementation within one module avoids references to selected other modules. In other words, the schema indicates a dependence, but the actual instances never populate elements having those dependencies.