diff --git a/citygml4j-quality-ade/src/main/resources/qualityAde.xsd b/citygml4j-quality-ade/src/main/resources/qualityAde.xsd
new file mode 100644
index 0000000000000000000000000000000000000000..f3d06ae7ff5712b1f8af8e210674b9d650f8366e
--- /dev/null
+++ b/citygml4j-quality-ade/src/main/resources/qualityAde.xsd
@@ -0,0 +1,661 @@
+<?xml version="1.0" encoding="UTF-8"?><schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.4" elementFormDefault="qualified" targetNamespace="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.4" version="0.1.4">
+  <import namespace="http://www.opengis.net/citygml/2.0" schemaLocation="http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd"/>
+  <import namespace="http://www.opengis.net/citygml/building/2.0" schemaLocation="http://schemas.opengis.net/citygml/building/2.0/building.xsd"/>
+  <import namespace="http://www.opengis.net/gml" schemaLocation="http://schemas.opengis.net/gml/3.1.1/base/gml.xsd"/>
+  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->
+  <element abstract="true" name="AbstractError" substitutionGroup="gml:_Object" type="qual:AbstractErrorType"/>
+  <complexType abstract="true" name="AbstractErrorType">
+    <sequence/>
+  </complexType>
+  <complexType name="AbstractErrorPropertyType">
+    <sequence>
+      <element ref="qual:AbstractError"/>
+    </sequence>
+  </complexType>
+  <element abstract="true" name="AbstractGeometryError" substitutionGroup="qual:AbstractError" type="qual:AbstractGeometryErrorType"/>
+  <complexType abstract="true" name="AbstractGeometryErrorType">
+    <complexContent>
+      <extension base="qual:AbstractErrorType">
+        <sequence/>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="AbstractGeometryErrorPropertyType">
+    <sequence>
+      <element ref="qual:AbstractGeometryError"/>
+    </sequence>
+  </complexType>
+  <element abstract="true" name="AbstractPolygonError" substitutionGroup="qual:AbstractGeometryError" type="qual:AbstractPolygonErrorType"/>
+  <complexType abstract="true" name="AbstractPolygonErrorType">
+    <complexContent>
+      <extension base="qual:AbstractGeometryErrorType">
+        <sequence>
+          <element name="polygonId" type="string"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="AbstractPolygonErrorPropertyType">
+    <sequence>
+      <element ref="qual:AbstractPolygonError"/>
+    </sequence>
+  </complexType>
+  <element abstract="true" name="AbstractRingError" substitutionGroup="qual:AbstractGeometryError" type="qual:AbstractRingErrorType"/>
+  <complexType abstract="true" name="AbstractRingErrorType">
+    <complexContent>
+      <extension base="qual:AbstractGeometryErrorType">
+        <sequence>
+          <element name="linearRingId" type="string"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="AbstractRingErrorPropertyType">
+    <sequence>
+      <element ref="qual:AbstractRingError"/>
+    </sequence>
+  </complexType>
+  <element abstract="true" name="AbstractSemanticError" substitutionGroup="qual:AbstractError" type="qual:AbstractSemanticErrorType"/>
+  <complexType abstract="true" name="AbstractSemanticErrorType">
+    <complexContent>
+      <extension base="qual:AbstractErrorType">
+        <sequence/>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="AbstractSemanticErrorPropertyType">
+    <sequence>
+      <element ref="qual:AbstractSemanticError"/>
+    </sequence>
+  </complexType>
+  <element abstract="true" name="AbstractSolidError" substitutionGroup="qual:AbstractGeometryError" type="qual:AbstractSolidErrorType"/>
+  <complexType abstract="true" name="AbstractSolidErrorType">
+    <complexContent>
+      <extension base="qual:AbstractGeometryErrorType">
+        <sequence>
+          <element name="geometryId" type="string"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="AbstractSolidErrorPropertyType">
+    <sequence>
+      <element ref="qual:AbstractSolidError"/>
+    </sequence>
+  </complexType>
+  <element name="Checking" substitutionGroup="gml:_Object" type="qual:CheckingType"/>
+  <complexType name="CheckingType">
+    <sequence>
+      <element name="featureType" type="qual:FeatureTypeType"/>
+    </sequence>
+  </complexType>
+  <complexType name="CheckingPropertyType">
+    <sequence>
+      <element ref="qual:Checking"/>
+    </sequence>
+  </complexType>
+  <element name="ComponentList" substitutionGroup="gml:_Object" type="qual:ComponentListType"/>
+  <complexType name="ComponentListType">
+    <sequence>
+      <element maxOccurs="unbounded" name="component" type="qual:PolygonIdListPropertyType"/>
+    </sequence>
+  </complexType>
+  <complexType name="ComponentListPropertyType">
+    <sequence>
+      <element ref="qual:ComponentList"/>
+    </sequence>
+  </complexType>
+  <element name="Edge" substitutionGroup="gml:_Object" type="qual:EdgeType"/>
+  <complexType name="EdgeType">
+    <sequence>
+      <element name="from" type="gml:DirectPositionType"/>
+      <element name="to" type="gml:DirectPositionType"/>
+    </sequence>
+  </complexType>
+  <complexType name="EdgePropertyType">
+    <sequence>
+      <element ref="qual:Edge"/>
+    </sequence>
+  </complexType>
+  <element name="EdgeList" substitutionGroup="gml:_Object" type="qual:EdgeListType"/>
+  <complexType name="EdgeListType">
+    <sequence>
+      <element maxOccurs="unbounded" name="edge" type="qual:EdgePropertyType"/>
+    </sequence>
+  </complexType>
+  <complexType name="EdgeListPropertyType">
+    <sequence>
+      <element ref="qual:EdgeList"/>
+    </sequence>
+  </complexType>
+  <element name="Error" substitutionGroup="gml:_Object" type="qual:ErrorType"/>
+  <complexType name="ErrorType">
+    <sequence>
+      <element name="occurrences" type="integer"/>
+      <element name="name" type="qual:ErrorTypeType"/>
+    </sequence>
+  </complexType>
+  <complexType name="ErrorPropertyType">
+    <sequence>
+      <element ref="qual:Error"/>
+    </sequence>
+  </complexType>
+  <simpleType name="ErrorTypeType">
+    <restriction base="string">
+      <enumeration value="GE_R_TOO_FEW_POINTS"/>
+      <enumeration value="GE_R_NOT_CLOSED"/>
+      <enumeration value="GE_R_CONSECUTIVE_POINTS_SAME"/>
+      <enumeration value="GE_R_SELF_INTERSECTION"/>
+      <enumeration value="GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE"/>
+      <enumeration value="GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION"/>
+      <enumeration value="GE_P_INTERIOR_DISCONNECTED"/>
+      <enumeration value="GE_P_INTERSECTING_RINGS"/>
+      <enumeration value="GE_P_HOLE_OUTSIDE"/>
+      <enumeration value="GE_P_ORIENTATION_RINGS_SAME"/>
+      <enumeration value="GE_P_INNER_RINGS_NESTED"/>
+      <enumeration value="GE_S_TOO_FEW_POLYGONS"/>
+      <enumeration value="GE_S_NOT_CLOSED"/>
+      <enumeration value="GE_S_NON_MANIFOLD_EDGE"/>
+      <enumeration value="GE_S_POLYGON_WRONG_ORIENTATION"/>
+      <enumeration value="GE_S_ALL_POLYGONS_WRONG_ORIENTATION"/>
+      <enumeration value="GE_S_NON_MANIFOLD_VERTEX"/>
+      <enumeration value="GE_S_SELF_INTERSECTION"/>
+      <enumeration value="GE_S_MULTIPLE_CONNECTED_COMPONENTS"/>
+      <enumeration value="SE_ATTRIBUTE_WRONG_VALUE"/>
+      <enumeration value="SE_ATTRIBUTE_MISSING"/>
+    </restriction>
+  </simpleType>
+  <element name="FeatureStatistics" substitutionGroup="gml:_Object" type="qual:FeatureStatisticsType"/>
+  <complexType name="FeatureStatisticsType">
+    <sequence>
+      <element name="numChecked" type="integer"/>
+      <element name="numErrors" type="integer"/>
+    </sequence>
+  </complexType>
+  <complexType name="FeatureStatisticsPropertyType">
+    <sequence>
+      <element ref="qual:FeatureStatistics"/>
+    </sequence>
+  </complexType>
+  <simpleType name="FeatureTypeType">
+    <restriction base="string">
+      <enumeration value="BUILDING"/>
+      <enumeration value="TRANSPORTATION"/>
+      <enumeration value="VEGETATION"/>
+      <enumeration value="BRIDGE"/>
+      <enumeration value="WATER"/>
+      <enumeration value="LAND"/>
+    </restriction>
+  </simpleType>
+  <element name="Filter" substitutionGroup="gml:_Object" type="qual:FilterType"/>
+  <complexType name="FilterType">
+    <sequence>
+      <element maxOccurs="unbounded" minOccurs="0" name="checking" type="qual:CheckingPropertyType"/>
+    </sequence>
+  </complexType>
+  <complexType name="FilterPropertyType">
+    <sequence>
+      <element ref="qual:Filter"/>
+    </sequence>
+  </complexType>
+  <element name="GE_P_HOLE_OUTSIDE" substitutionGroup="qual:AbstractPolygonError" type="qual:GE_P_HOLE_OUTSIDEType"/>
+  <complexType name="GE_P_HOLE_OUTSIDEType">
+    <complexContent>
+      <extension base="qual:AbstractPolygonErrorType">
+        <sequence>
+          <element name="linearRingId" type="string"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="GE_P_HOLE_OUTSIDEPropertyType">
+    <sequence>
+      <element ref="qual:GE_P_HOLE_OUTSIDE"/>
+    </sequence>
+  </complexType>
+  <element name="GE_P_INNER_RINGS_NESTED" substitutionGroup="qual:AbstractPolygonError" type="qual:GE_P_INNER_RINGS_NESTEDType"/>
+  <complexType name="GE_P_INNER_RINGS_NESTEDType">
+    <complexContent>
+      <extension base="qual:AbstractPolygonErrorType">
+        <sequence>
+          <element name="linearRingId1" type="string"/>
+          <element name="linearRingId2" type="string"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="GE_P_INNER_RINGS_NESTEDPropertyType">
+    <sequence>
+      <element ref="qual:GE_P_INNER_RINGS_NESTED"/>
+    </sequence>
+  </complexType>
+  <element name="GE_P_INTERIOR_DISCONNECTED" substitutionGroup="qual:AbstractPolygonError" type="qual:GE_P_INTERIOR_DISCONNECTEDType"/>
+  <complexType name="GE_P_INTERIOR_DISCONNECTEDType">
+    <complexContent>
+      <extension base="qual:AbstractPolygonErrorType">
+        <sequence/>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="GE_P_INTERIOR_DISCONNECTEDPropertyType">
+    <sequence>
+      <element ref="qual:GE_P_INTERIOR_DISCONNECTED"/>
+    </sequence>
+  </complexType>
+  <element name="GE_P_INTERSECTING_RINGS" substitutionGroup="qual:AbstractPolygonError" type="qual:GE_P_INTERSECTING_RINGSType"/>
+  <complexType name="GE_P_INTERSECTING_RINGSType">
+    <complexContent>
+      <extension base="qual:AbstractPolygonErrorType">
+        <sequence>
+          <element name="linearRingId1" type="string"/>
+          <element name="linearRingId2" type="string"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="GE_P_INTERSECTING_RINGSPropertyType">
+    <sequence>
+      <element ref="qual:GE_P_INTERSECTING_RINGS"/>
+    </sequence>
+  </complexType>
+  <element name="GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE" substitutionGroup="qual:AbstractPolygonError" type="qual:GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANEType"/>
+  <complexType name="GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANEType">
+    <complexContent>
+      <extension base="qual:AbstractPolygonErrorType">
+        <sequence>
+          <element name="distance" type="gml:LengthType"/>
+          <element name="vertex" type="gml:DirectPositionType"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANEPropertyType">
+    <sequence>
+      <element ref="qual:GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE"/>
+    </sequence>
+  </complexType>
+  <element name="GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION" substitutionGroup="qual:AbstractPolygonError" type="qual:GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATIONType"/>
+  <complexType name="GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATIONType">
+    <complexContent>
+      <extension base="qual:AbstractPolygonErrorType">
+        <sequence>
+          <element name="deviation" type="gml:AngleType"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATIONPropertyType">
+    <sequence>
+      <element ref="qual:GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION"/>
+    </sequence>
+  </complexType>
+  <element name="GE_P_ORIENTATION_RINGS_SAME" substitutionGroup="qual:AbstractPolygonError" type="qual:GE_P_ORIENTATION_RINGS_SAMEType"/>
+  <complexType name="GE_P_ORIENTATION_RINGS_SAMEType">
+    <complexContent>
+      <extension base="qual:AbstractPolygonErrorType">
+        <sequence>
+          <element name="linearRingId" type="string"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="GE_P_ORIENTATION_RINGS_SAMEPropertyType">
+    <sequence>
+      <element ref="qual:GE_P_ORIENTATION_RINGS_SAME"/>
+    </sequence>
+  </complexType>
+  <element name="GE_R_CONSECUTIVE_POINTS_SAME" substitutionGroup="qual:AbstractRingError" type="qual:GE_R_CONSECUTIVE_POINTS_SAMEType"/>
+  <complexType name="GE_R_CONSECUTIVE_POINTS_SAMEType">
+    <complexContent>
+      <extension base="qual:AbstractRingErrorType">
+        <sequence>
+          <element name="vertex1" type="gml:DirectPositionType"/>
+          <element name="vertex2" type="gml:DirectPositionType"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="GE_R_CONSECUTIVE_POINTS_SAMEPropertyType">
+    <sequence>
+      <element ref="qual:GE_R_CONSECUTIVE_POINTS_SAME"/>
+    </sequence>
+  </complexType>
+  <element name="GE_R_NOT_CLOSED" substitutionGroup="qual:AbstractRingError" type="qual:GE_R_NOT_CLOSEDType"/>
+  <complexType name="GE_R_NOT_CLOSEDType">
+    <complexContent>
+      <extension base="qual:AbstractRingErrorType">
+        <sequence/>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="GE_R_NOT_CLOSEDPropertyType">
+    <sequence>
+      <element ref="qual:GE_R_NOT_CLOSED"/>
+    </sequence>
+  </complexType>
+  <element name="GE_R_SELF_INTERSECTION" substitutionGroup="qual:AbstractRingError" type="qual:GE_R_SELF_INTERSECTIONType"/>
+  <complexType name="GE_R_SELF_INTERSECTIONType">
+    <complexContent>
+      <extension base="qual:AbstractRingErrorType">
+        <sequence>
+          <element name="type" type="string"/>
+          <element minOccurs="0" name="edge1" type="qual:EdgePropertyType"/>
+          <element minOccurs="0" name="edge2" type="qual:EdgePropertyType"/>
+          <element name="vertex1" type="gml:DirectPositionType"/>
+          <element minOccurs="0" name="vertex2" type="gml:DirectPositionType"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="GE_R_SELF_INTERSECTIONPropertyType">
+    <sequence>
+      <element ref="qual:GE_R_SELF_INTERSECTION"/>
+    </sequence>
+  </complexType>
+  <element name="GE_R_TOO_FEW_POINTS" substitutionGroup="qual:AbstractRingError" type="qual:GE_R_TOO_FEW_POINTSType"/>
+  <complexType name="GE_R_TOO_FEW_POINTSType">
+    <complexContent>
+      <extension base="qual:AbstractRingErrorType">
+        <sequence/>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="GE_R_TOO_FEW_POINTSPropertyType">
+    <sequence>
+      <element ref="qual:GE_R_TOO_FEW_POINTS"/>
+    </sequence>
+  </complexType>
+  <element name="GE_S_ALL_POLYGONS_WRONG_ORIENTATION" substitutionGroup="qual:AbstractSolidError" type="qual:GE_S_ALL_POLYGONS_WRONG_ORIENTATIONType"/>
+  <complexType name="GE_S_ALL_POLYGONS_WRONG_ORIENTATIONType">
+    <complexContent>
+      <extension base="qual:AbstractSolidErrorType">
+        <sequence/>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="GE_S_ALL_POLYGONS_WRONG_ORIENTATIONPropertyType">
+    <sequence>
+      <element ref="qual:GE_S_ALL_POLYGONS_WRONG_ORIENTATION"/>
+    </sequence>
+  </complexType>
+  <element name="GE_S_MULTIPLE_CONNECTED_COMPONENTS" substitutionGroup="qual:AbstractSolidError" type="qual:GE_S_MULTIPLE_CONNECTED_COMPONENTSType"/>
+  <complexType name="GE_S_MULTIPLE_CONNECTED_COMPONENTSType">
+    <complexContent>
+      <extension base="qual:AbstractSolidErrorType">
+        <sequence>
+          <element maxOccurs="unbounded" name="components" type="qual:ComponentListPropertyType"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="GE_S_MULTIPLE_CONNECTED_COMPONENTSPropertyType">
+    <sequence>
+      <element ref="qual:GE_S_MULTIPLE_CONNECTED_COMPONENTS"/>
+    </sequence>
+  </complexType>
+  <element name="GE_S_NON_MANIFOLD_EDGE" substitutionGroup="qual:AbstractSolidError" type="qual:GE_S_NON_MANIFOLD_EDGEType"/>
+  <complexType name="GE_S_NON_MANIFOLD_EDGEType">
+    <complexContent>
+      <extension base="qual:AbstractSolidErrorType">
+        <sequence>
+          <element name="edges" type="qual:EdgeListPropertyType"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="GE_S_NON_MANIFOLD_EDGEPropertyType">
+    <sequence>
+      <element ref="qual:GE_S_NON_MANIFOLD_EDGE"/>
+    </sequence>
+  </complexType>
+  <element name="GE_S_NON_MANIFOLD_VERTEX" substitutionGroup="qual:AbstractSolidError" type="qual:GE_S_NON_MANIFOLD_VERTEXType"/>
+  <complexType name="GE_S_NON_MANIFOLD_VERTEXType">
+    <complexContent>
+      <extension base="qual:AbstractSolidErrorType">
+        <sequence>
+          <element name="vertex" type="gml:DirectPositionType"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="GE_S_NON_MANIFOLD_VERTEXPropertyType">
+    <sequence>
+      <element ref="qual:GE_S_NON_MANIFOLD_VERTEX"/>
+    </sequence>
+  </complexType>
+  <element name="GE_S_NOT_CLOSED" substitutionGroup="qual:AbstractSolidError" type="qual:GE_S_NOT_CLOSEDType"/>
+  <complexType name="GE_S_NOT_CLOSEDType">
+    <complexContent>
+      <extension base="qual:AbstractSolidErrorType">
+        <sequence>
+          <element name="edges" type="qual:EdgeListPropertyType"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="GE_S_NOT_CLOSEDPropertyType">
+    <sequence>
+      <element ref="qual:GE_S_NOT_CLOSED"/>
+    </sequence>
+  </complexType>
+  <element name="GE_S_POLYGON_WRONG_ORIENTATION" substitutionGroup="qual:AbstractSolidError" type="qual:GE_S_POLYGON_WRONG_ORIENTATIONType"/>
+  <complexType name="GE_S_POLYGON_WRONG_ORIENTATIONType">
+    <complexContent>
+      <extension base="qual:AbstractSolidErrorType">
+        <sequence>
+          <element name="edges" type="qual:EdgeListPropertyType"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="GE_S_POLYGON_WRONG_ORIENTATIONPropertyType">
+    <sequence>
+      <element ref="qual:GE_S_POLYGON_WRONG_ORIENTATION"/>
+    </sequence>
+  </complexType>
+  <element name="GE_S_SELF_INTERSECTION" substitutionGroup="qual:AbstractSolidError" type="qual:GE_S_SELF_INTERSECTIONType"/>
+  <complexType name="GE_S_SELF_INTERSECTIONType">
+    <complexContent>
+      <extension base="qual:AbstractSolidErrorType">
+        <sequence>
+          <element name="polygonId1" type="string"/>
+          <element name="polygonId2" type="string"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="GE_S_SELF_INTERSECTIONPropertyType">
+    <sequence>
+      <element ref="qual:GE_S_SELF_INTERSECTION"/>
+    </sequence>
+  </complexType>
+  <element name="GE_S_TOO_FEW_POLYGONS" substitutionGroup="qual:AbstractSolidError" type="qual:GE_S_TOO_FEW_POLYGONSType"/>
+  <complexType name="GE_S_TOO_FEW_POLYGONSType">
+    <complexContent>
+      <extension base="qual:AbstractSolidErrorType">
+        <sequence/>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="GE_S_TOO_FEW_POLYGONSPropertyType">
+    <sequence>
+      <element ref="qual:GE_S_TOO_FEW_POLYGONS"/>
+    </sequence>
+  </complexType>
+  <element name="GlobalParameters" substitutionGroup="gml:_Object" type="qual:GlobalParametersType"/>
+  <complexType name="GlobalParametersType">
+    <sequence>
+      <element maxOccurs="unbounded" minOccurs="0" name="parameter" type="qual:ParameterPropertyType"/>
+    </sequence>
+  </complexType>
+  <complexType name="GlobalParametersPropertyType">
+    <sequence>
+      <element ref="qual:GlobalParameters"/>
+    </sequence>
+  </complexType>
+  <element name="Parameter" substitutionGroup="gml:_Object" type="qual:ParameterType"/>
+  <complexType name="ParameterType">
+    <sequence>
+      <element name="name" type="string"/>
+      <element minOccurs="0" name="uom" type="string"/>
+      <element name="value" type="string"/>
+    </sequence>
+  </complexType>
+  <complexType name="ParameterPropertyType">
+    <sequence>
+      <element ref="qual:Parameter"/>
+    </sequence>
+  </complexType>
+  <element name="PolygonIdList" substitutionGroup="gml:_Object" type="qual:PolygonIdListType"/>
+  <complexType name="PolygonIdListType">
+    <sequence>
+      <element maxOccurs="unbounded" name="polygonId" type="string"/>
+    </sequence>
+  </complexType>
+  <complexType name="PolygonIdListPropertyType">
+    <sequence>
+      <element ref="qual:PolygonIdList"/>
+    </sequence>
+  </complexType>
+  <element name="Requirement" substitutionGroup="gml:_Object" type="qual:RequirementType"/>
+  <complexType name="RequirementType">
+    <sequence>
+      <element name="enabled" type="boolean"/>
+      <element name="requirementType" type="qual:RequirementTypeType"/>
+      <element maxOccurs="unbounded" minOccurs="0" name="parameter" type="qual:ParameterPropertyType"/>
+    </sequence>
+  </complexType>
+  <complexType name="RequirementPropertyType">
+    <sequence>
+      <element ref="qual:Requirement"/>
+    </sequence>
+  </complexType>
+  <simpleType name="RequirementTypeType">
+    <restriction base="string">
+      <enumeration value="R_GE_R_TOO_FEW_POINTS"/>
+      <enumeration value="R_GE_R_NOT_CLOSED"/>
+      <enumeration value="R_GE_R_CONSECUTIVE_POINTS_SAME"/>
+      <enumeration value="R_GE_R_SELF_INTERSECTION"/>
+      <enumeration value="R_GE_P_NON_PLANAR"/>
+      <enumeration value="R_GE_P_INTERIOR_DISCONNECTED"/>
+      <enumeration value="R_GE_P_INTERSECTING_RINGS"/>
+      <enumeration value="R_GE_P_HOLE_OUTSIDE"/>
+      <enumeration value="R_GE_P_ORIENTATION_RINGS_SAME"/>
+      <enumeration value="R_GE_P_INNER_RINGS_NESTED"/>
+      <enumeration value="R_GE_S_TOO_FEW_POLYGONS"/>
+      <enumeration value="R_GE_S_NOT_CLOSED"/>
+      <enumeration value="R_GE_S_NON_MANIFOLD_EDGE"/>
+      <enumeration value="R_GE_S_POLYGON_WRONG_ORIENTATION"/>
+      <enumeration value="R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION"/>
+      <enumeration value="R_GE_S_NON_MANIFOLD_VERTEX"/>
+      <enumeration value="R_GE_S_SELF_INTERSECTION"/>
+      <enumeration value="R_GE_S_MULTIPLE_CONNECTED_COMPONENTS"/>
+      <enumeration value="R_SE_ATTRIBUTES_EXISTING"/>
+      <enumeration value="R_SE_ATTRIBUTES_CORRECT"/>
+    </restriction>
+  </simpleType>
+  <simpleType name="ResultTypeType">
+    <restriction base="string">
+      <enumeration value="OK"/>
+      <enumeration value="ERROR"/>
+      <enumeration value="NOT_CHECKED"/>
+    </restriction>
+  </simpleType>
+  <element name="SEM_ATTRIBUTE_MISSING" substitutionGroup="qual:AbstractSemanticError" type="qual:SEM_ATTRIBUTE_MISSINGType"/>
+  <complexType name="SEM_ATTRIBUTE_MISSINGType">
+    <complexContent>
+      <extension base="qual:AbstractSemanticErrorType">
+        <sequence>
+          <element name="childId" type="string"/>
+          <element name="attributeName" type="string"/>
+          <element name="generic" type="boolean"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="SEM_ATTRIBUTE_MISSINGPropertyType">
+    <sequence>
+      <element ref="qual:SEM_ATTRIBUTE_MISSING"/>
+    </sequence>
+  </complexType>
+  <element name="SEM_ATTRIBUTE_WRONG_VALUE" substitutionGroup="qual:AbstractSemanticError" type="qual:SEM_ATTRIBUTE_WRONG_VALUEType"/>
+  <complexType name="SEM_ATTRIBUTE_WRONG_VALUEType">
+    <complexContent>
+      <extension base="qual:AbstractSemanticErrorType">
+        <sequence>
+          <element name="childId" type="string"/>
+          <element name="attributeName" type="string"/>
+          <element name="generic" type="boolean"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="SEM_ATTRIBUTE_WRONG_VALUEPropertyType">
+    <sequence>
+      <element ref="qual:SEM_ATTRIBUTE_WRONG_VALUE"/>
+    </sequence>
+  </complexType>
+  <element name="Statistics" substitutionGroup="gml:_Object" type="qual:StatisticsType"/>
+  <complexType name="StatisticsType">
+    <sequence>
+      <element name="numErrorBuildings" type="qual:FeatureStatisticsPropertyType"/>
+      <element name="numErrorVegetation" type="qual:FeatureStatisticsPropertyType"/>
+      <element name="numErrorLandObjects" type="qual:FeatureStatisticsPropertyType"/>
+      <element name="numErrorBridgeObjects" type="qual:FeatureStatisticsPropertyType"/>
+      <element name="numErrorWaterObjects" type="qual:FeatureStatisticsPropertyType"/>
+      <element name="numErrorTransportation" type="qual:FeatureStatisticsPropertyType"/>
+      <element maxOccurs="unbounded" minOccurs="0" name="error" type="qual:ErrorPropertyType"/>
+    </sequence>
+  </complexType>
+  <complexType name="StatisticsPropertyType">
+    <sequence>
+      <element ref="qual:Statistics"/>
+    </sequence>
+  </complexType>
+  <element name="Validation" substitutionGroup="gml:_Feature" type="qual:ValidationType"/>
+  <complexType name="ValidationType">
+    <complexContent>
+      <extension base="gml:AbstractFeatureType">
+        <sequence>
+          <element name="validationDate" type="dateTime"/>
+          <element name="validationSoftware" type="string"/>
+          <element minOccurs="0" name="statistics" type="qual:StatisticsPropertyType"/>
+          <element name="validationPlan" type="qual:ValidationPlanPropertyType"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="ValidationPropertyType">
+    <sequence minOccurs="0">
+      <element ref="qual:Validation"/>
+    </sequence>
+    <attributeGroup ref="gml:AssociationAttributeGroup"/>
+  </complexType>
+  <element name="ValidationPlan" substitutionGroup="gml:_Object" type="qual:ValidationPlanType"/>
+  <complexType name="ValidationPlanType">
+    <sequence>
+      <element name="globalParameters" type="qual:GlobalParametersPropertyType"/>
+      <element name="filter" type="qual:FilterPropertyType"/>
+      <element maxOccurs="unbounded" name="requirement" type="qual:RequirementPropertyType"/>
+    </sequence>
+  </complexType>
+  <complexType name="ValidationPlanPropertyType">
+    <sequence>
+      <element ref="qual:ValidationPlan"/>
+    </sequence>
+  </complexType>
+  <element name="ValidationResult" substitutionGroup="gml:_Object" type="qual:ValidationResultType"/>
+  <complexType name="ValidationResultType">
+    <sequence>
+      <element name="validationPlanID" type="gml:ReferenceType"/>
+      <element maxOccurs="unbounded" minOccurs="0" name="error" type="qual:AbstractErrorPropertyType"/>
+      <element name="resultType" type="qual:ResultTypeType"/>
+    </sequence>
+  </complexType>
+  <complexType name="ValidationResultPropertyType">
+    <sequence>
+      <element ref="qual:ValidationResult"/>
+    </sequence>
+  </complexType>
+  <element name="validationResult" substitutionGroup="core:_GenericApplicationPropertyOfCityObject" type="qual:ValidationResultPropertyType"/>
+</schema>