diff --git a/citygml4j-quality-ade/pom.xml b/citygml4j-quality-ade/pom.xml
index 64d79092065b2c0a02aa9e5270cfc85f8c581c80..6908ae16ed1c4c75fc149d4683478b67ea0003f2 100644
--- a/citygml4j-quality-ade/pom.xml
+++ b/citygml4j-quality-ade/pom.xml
@@ -4,7 +4,7 @@
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>de.hft.stuttgart</groupId>
 	<artifactId>citygml4j-quality-ade</artifactId>
-	<version>3.1.4</version>
+	<version>3.2.0</version>
 
 	<properties>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/QualityADEContext.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/QualityADEContext.java
index f7b70bafdee1cdcfd3fc884b474a5a17b5061716..ac59d435940c27ba80bb8f534029f6c8d788ce26 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/QualityADEContext.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/QualityADEContext.java
@@ -25,7 +25,7 @@ import org.citygml4j.xml.module.ade.ADEModule;
 
 public class QualityADEContext implements CityGMLADE {
 	
-	private final List<ADEModule> modules = Collections.singletonList(QualityADEModule.V0_1_4);
+	private final List<ADEModule> modules = Collections.singletonList(QualityADEModule.V1_0_0);
 
 	@Override
 	public List<ADEModule> getADEModules() {
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/QualityADEModule.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/QualityADEModule.java
index 58d389b7ca2d5da3a12d71cf1dc4f88d266737f2..c76a18cf8e823c3e10d8e48da39669033d841478 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/QualityADEModule.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/QualityADEModule.java
@@ -22,9 +22,9 @@ import org.citygml4j.xml.module.ade.ADEModule;
 
 public class QualityADEModule extends ADEModule {
 
-    public static final String NAMESPACE_URI = "https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.4";
+    public static final String NAMESPACE_URI = "https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/1.0.0";
 
-    public static final QualityADEModule V0_1_4 = new QualityADEModule();
+    public static final QualityADEModule V1_0_0 = new QualityADEModule();
 
     public QualityADEModule() {
         super(NAMESPACE_URI, "qual", CityGMLVersion.v2_0);
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/adapter/types/SemanticAttributeInvalidErrorAdapter.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/adapter/types/SemanticAttributeInvalidErrorAdapter.java
new file mode 100644
index 0000000000000000000000000000000000000000..fe13e0190afdec1784f9bab8110d182351f1fc32
--- /dev/null
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/adapter/types/SemanticAttributeInvalidErrorAdapter.java
@@ -0,0 +1,79 @@
+/*-
+ * Copyright 2023 Hochschule für Technik Stuttgart
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package de.hft.stuttgart.quality.adapter.types;
+
+import javax.xml.namespace.QName;
+
+import org.xmlobjects.annotation.XMLElement;
+import org.xmlobjects.builder.ObjectBuildException;
+import org.xmlobjects.serializer.ObjectSerializeException;
+import org.xmlobjects.stream.XMLReadException;
+import org.xmlobjects.stream.XMLReader;
+import org.xmlobjects.stream.XMLWriteException;
+import org.xmlobjects.stream.XMLWriter;
+import org.xmlobjects.xml.Attributes;
+import org.xmlobjects.xml.Element;
+import org.xmlobjects.xml.Namespaces;
+
+import de.hft.stuttgart.quality.QualityADEModule;
+import de.hft.stuttgart.quality.model.types.SemanticAttributeInvalidError;
+
+@XMLElement(name = "SE_ATTRIBUTE_INVALID", namespaceURI = QualityADEModule.NAMESPACE_URI)
+public class SemanticAttributeInvalidErrorAdapter extends AbstractSemanticErrorAdapter<SemanticAttributeInvalidError> {
+
+	@Override
+	public SemanticAttributeInvalidError createObject(QName name, Object parent) throws ObjectBuildException {
+		return new SemanticAttributeInvalidError();
+	}
+
+	@Override
+	public void buildChildObject(SemanticAttributeInvalidError object, QName name, Attributes attributes,
+			XMLReader reader) throws ObjectBuildException, XMLReadException {
+		if (!QualityADEModule.NAMESPACE_URI.equals(name.getNamespaceURI())) {
+			return;
+		}
+		switch (name.getLocalPart()) {
+		case "childId":
+			reader.getTextContent().ifPresent(object::setChildId);
+			break;
+		case "attributeName":
+			reader.getTextContent().ifPresent(object::setAttributeName);
+			break;
+		default:
+			throw new IllegalStateException(
+					"Cannot handle name " + name + " when building SemanticAttributeInvalidError element");
+		}
+	}
+
+	@Override
+	public Element createElement(SemanticAttributeInvalidError object, Namespaces namespaces)
+			throws ObjectSerializeException {
+		return Element.of(QualityADEModule.NAMESPACE_URI, "SE_ATTRIBUTE_INVALID");
+	}
+
+	@Override
+	public void writeChildElements(SemanticAttributeInvalidError object, Namespaces namespaces, XMLWriter writer)
+			throws ObjectSerializeException, XMLWriteException {
+		if (object.getChildId() != null) {
+			writer.writeElement(
+					Element.of(QualityADEModule.NAMESPACE_URI, "childId").addTextContent(object.getChildId()));
+		}
+		if (object.getAttributeName() != null) {
+			writer.writeElement(Element.of(QualityADEModule.NAMESPACE_URI, "attributeName")
+					.addTextContent(object.getAttributeName()));
+		}
+	}
+}
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/adapter/types/SemanticAttributeMissingErrorAdapter.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/adapter/types/SemanticAttributeMissingErrorAdapter.java
index c47bcfc846a218138eca1d49167300601ee0605f..4763591786d96c51c4595c27eac5f4a7486acb49 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/adapter/types/SemanticAttributeMissingErrorAdapter.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/adapter/types/SemanticAttributeMissingErrorAdapter.java
@@ -37,9 +37,6 @@ public class SemanticAttributeMissingErrorAdapter extends AbstractSemanticErrorA
 		case "attributeName":
 			reader.getTextContent().ifPresent(object::setAttributeName);
 			break;
-		case "generic":
-			reader.getTextContent().ifPresent(s -> object.setGeneric(Boolean.parseBoolean(s)));
-			break;
 		default:
 			throw new IllegalStateException(
 					"Cannot handle name " + name + " when building SemanticAttributeMissingError element");
@@ -63,7 +60,5 @@ public class SemanticAttributeMissingErrorAdapter extends AbstractSemanticErrorA
 			writer.writeElement(Element.of(QualityADEModule.NAMESPACE_URI, "attributeName")
 					.addTextContent(object.getAttributeName()));
 		}
-		writer.writeElement(Element.of(QualityADEModule.NAMESPACE_URI, "generic")
-				.addTextContent(Boolean.toString(object.isGeneric())));
 	}
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/adapter/types/SemanticAttributeWrongValueErrorAdapter.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/adapter/types/SemanticAttributeWrongValueErrorAdapter.java
index 923bf5edbb65d828bd2c12954f9b4869441f8ef5..60c118f19b13fe15035523ae3ffd312961d0545e 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/adapter/types/SemanticAttributeWrongValueErrorAdapter.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/adapter/types/SemanticAttributeWrongValueErrorAdapter.java
@@ -38,9 +38,6 @@ public class SemanticAttributeWrongValueErrorAdapter
 		case "attributeName":
 			reader.getTextContent().ifPresent(object::setAttributeName);
 			break;
-		case "generic":
-			reader.getTextContent().ifPresent(s -> object.setGeneric(Boolean.parseBoolean(s)));
-			break;
 		default:
 			throw new IllegalStateException(
 					"Cannot handle name " + name + " when building SemanticAttributeWrongValueError element");
@@ -65,7 +62,5 @@ public class SemanticAttributeWrongValueErrorAdapter
 			writer.writeElement(Element.of(QualityADEModule.NAMESPACE_URI, "attributeName")
 					.addTextContent(object.getAttributeName()));
 		}
-		writer.writeElement(Element.of(QualityADEModule.NAMESPACE_URI, "generic")
-				.addTextContent(Boolean.toString(object.isGeneric())));
 	}
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/adapter/types/ValidationAdapter.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/adapter/types/ValidationAdapter.java
index bd347f05475f03db9ca84a70e40a5c87afca47e1..3d0f27a89afd8ab0e2b74670979f1be2c9ccabd9 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/adapter/types/ValidationAdapter.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/adapter/types/ValidationAdapter.java
@@ -5,6 +5,7 @@ import javax.xml.namespace.QName;
 import org.citygml4j.xml.adapter.core.AbstractFeatureAdapter;
 import org.xmlobjects.annotation.XMLElement;
 import org.xmlobjects.builder.ObjectBuildException;
+import org.xmlobjects.gml.adapter.base.ReferenceAdapter;
 import org.xmlobjects.serializer.ObjectSerializeException;
 import org.xmlobjects.stream.XMLReadException;
 import org.xmlobjects.stream.XMLReader;
@@ -16,7 +17,6 @@ import org.xmlobjects.xml.Namespaces;
 
 import de.hft.stuttgart.quality.QualityADEModule;
 import de.hft.stuttgart.quality.adapter.properties.StatisticsPropertyAdapter;
-import de.hft.stuttgart.quality.adapter.properties.ValidationPlanPropertyAdapter;
 import de.hft.stuttgart.quality.model.types.Validation;
 
 @XMLElement(name = "Validation", namespaceURI = QualityADEModule.NAMESPACE_URI)
@@ -45,8 +45,8 @@ public class ValidationAdapter extends AbstractFeatureAdapter<Validation> {
 		case "statistics":
 			object.setStatistics(reader.getObjectUsingBuilder(StatisticsPropertyAdapter.class));
 			break;
-		case "validationPlan":
-			object.setValidationPlan(reader.getObjectUsingBuilder(ValidationPlanPropertyAdapter.class));
+		case "validationPlanID":
+			object.setValidationPlan(reader.getObjectUsingBuilder(ReferenceAdapter.class));
 			break;
 		default:
 			super.buildChildObject(object, name, attributes, reader);
@@ -75,8 +75,8 @@ public class ValidationAdapter extends AbstractFeatureAdapter<Validation> {
 					object.getStatistics(), StatisticsPropertyAdapter.class, namespaces);
 		}
 		if (object.getValidationPlan() != null) {
-			writer.writeElementUsingSerializer(Element.of(QualityADEModule.NAMESPACE_URI, "validationPlan"),
-					object.getValidationPlan(), ValidationPlanPropertyAdapter.class, namespaces);
+			writer.writeElementUsingSerializer(Element.of(QualityADEModule.NAMESPACE_URI, "validationPlanID"),
+					object.getValidationPlan(), ReferenceAdapter.class, namespaces);
 		}
 	}
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/adapter/types/ValidationPlanAdapter.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/adapter/types/ValidationPlanAdapter.java
index b84f85e2098255b7861addfdc353033d8d51ac2e..f278afff99999c912a1db439a5fe19f79952ce79 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/adapter/types/ValidationPlanAdapter.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/adapter/types/ValidationPlanAdapter.java
@@ -2,11 +2,10 @@ package de.hft.stuttgart.quality.adapter.types;
 
 import javax.xml.namespace.QName;
 
+import org.citygml4j.xml.adapter.core.AbstractFeatureAdapter;
 import org.xmlobjects.annotation.XMLElement;
 import org.xmlobjects.builder.ObjectBuildException;
-import org.xmlobjects.builder.ObjectBuilder;
 import org.xmlobjects.serializer.ObjectSerializeException;
-import org.xmlobjects.serializer.ObjectSerializer;
 import org.xmlobjects.stream.XMLReadException;
 import org.xmlobjects.stream.XMLReader;
 import org.xmlobjects.stream.XMLWriteException;
@@ -23,7 +22,7 @@ import de.hft.stuttgart.quality.model.properties.RequirementProperty;
 import de.hft.stuttgart.quality.model.types.ValidationPlan;
 
 @XMLElement(name = "ValidationPlan", namespaceURI = QualityADEModule.NAMESPACE_URI)
-public class ValidationPlanAdapter implements ObjectBuilder<ValidationPlan>, ObjectSerializer<ValidationPlan> {
+public class ValidationPlanAdapter extends AbstractFeatureAdapter<ValidationPlan> {
 
 	@Override
 	public ValidationPlan createObject(QName name, Object parent) throws ObjectBuildException {
@@ -47,7 +46,7 @@ public class ValidationPlanAdapter implements ObjectBuilder<ValidationPlan>, Obj
 			object.getRequirements().add(reader.getObjectUsingBuilder(RequirementPropertyAdapter.class));
 			break;
 		default:
-			throw new IllegalStateException("Cannot handle name " + name + " when building ValidationPlan element");
+			super.buildChildObject(object, name, attributes, reader);
 		}
 	}
 
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/adapter/types/ValidationResultAdapter.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/adapter/types/ValidationResultAdapter.java
index 6e65ca926bf906a48ce5cfd43970542deb35b314..1904cd8d2ce0b7c0d59c82f1168727eabffa16d2 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/adapter/types/ValidationResultAdapter.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/adapter/types/ValidationResultAdapter.java
@@ -37,8 +37,8 @@ public class ValidationResultAdapter implements ObjectBuilder<ValidationResult>,
 			return;
 		}
 		switch (name.getLocalPart()) {
-		case "validationPlanID":
-			object.setValidationPlanID(reader.getObjectUsingBuilder(ReferenceAdapter.class));
+		case "validationID":
+			object.setValidationID(reader.getObjectUsingBuilder(ReferenceAdapter.class));
 			break;
 		case "error":
 			object.getErrors().add(reader.getObjectUsingBuilder(AbstractErrorPropertyAdapter.class));
@@ -60,7 +60,7 @@ public class ValidationResultAdapter implements ObjectBuilder<ValidationResult>,
 	public void writeChildElements(ValidationResult object, Namespaces namespaces, XMLWriter writer)
 			throws ObjectSerializeException, XMLWriteException {
 		if (object.getValidationPlanID() != null) {
-			writer.writeElementUsingSerializer(Element.of(QualityADEModule.NAMESPACE_URI, "validationPlanID"),
+			writer.writeElementUsingSerializer(Element.of(QualityADEModule.NAMESPACE_URI, "validationID"),
 					object.getValidationPlanID(), ReferenceAdapter.class, namespaces);
 		}
 		for (AbstractErrorProperty err : object.getErrors()) {
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/enums/ErrorId.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/enums/ErrorId.java
index 3154031a58c8ce072b2a036120dd3f271130b2cd..d65e76cc8c2178de3e35857b685f324e941ae505 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/enums/ErrorId.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/enums/ErrorId.java
@@ -22,6 +22,6 @@ public enum ErrorId {
 	GE_P_INTERSECTING_RINGS, GE_P_HOLE_OUTSIDE, GE_P_ORIENTATION_RINGS_SAME, GE_P_INNER_RINGS_NESTED,
 	GE_S_TOO_FEW_POLYGONS, GE_S_NOT_CLOSED, GE_S_NON_MANIFOLD_EDGE, GE_S_POLYGON_WRONG_ORIENTATION,
 	GE_S_ALL_POLYGONS_WRONG_ORIENTATION, GE_S_NON_MANIFOLD_VERTEX, GE_S_SELF_INTERSECTION,
-	GE_S_MULTIPLE_CONNECTED_COMPONENTS, SE_ATTRIBUTE_WRONG_VALUE, SE_ATTRIBUTE_MISSING
+	GE_S_MULTIPLE_CONNECTED_COMPONENTS, SE_ATTRIBUTE_WRONG_VALUE, SE_ATTRIBUTE_MISSING, SE_ATTRIBUTE_INVALID
 
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/enums/RequirementId.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/enums/RequirementId.java
index 19a065b8ca0f1395b6d4337fc6510a5214b349cd..0564e8312af7a4cc4f318191b35007bfef2f000b 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/enums/RequirementId.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/enums/RequirementId.java
@@ -23,6 +23,6 @@ public enum RequirementId {
 	R_GE_P_ORIENTATION_RINGS_SAME, R_GE_P_INNER_RINGS_NESTED, R_GE_S_TOO_FEW_POLYGONS, R_GE_S_NOT_CLOSED,
 	R_GE_S_NON_MANIFOLD_EDGE, R_GE_S_POLYGON_WRONG_ORIENTATION, R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION,
 	R_GE_S_NON_MANIFOLD_VERTEX, R_GE_S_SELF_INTERSECTION, R_GE_S_MULTIPLE_CONNECTED_COMPONENTS,
-	R_SE_ATTRIBUTES_EXISTING, R_SE_ATTRIBUTES_CORRECT
+	R_SE_ATTRIBUTES_EXISTING, R_SE_ATTRIBUTES_CORRECT, R_SE_ATTRIBUTES_VALID
 
 }
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SemanticAttributeInvalidError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SemanticAttributeInvalidError.java
new file mode 100644
index 0000000000000000000000000000000000000000..5f154d35fff1c9c0f8256d7b1ab84f363e45d805
--- /dev/null
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SemanticAttributeInvalidError.java
@@ -0,0 +1,49 @@
+/*-
+ * Copyright 2023 Hochschule für Technik Stuttgart
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package de.hft.stuttgart.quality.model.types;
+
+import de.hft.stuttgart.quality.model.walker.ValidationErrorVisitor;
+
+public class SemanticAttributeInvalidError extends AbstractSemanticError {
+	
+	private static final long serialVersionUID = 6528329813293026972L;
+	
+	private String childId;
+	private String attributeName;
+
+	public String getChildId() {
+		return childId;
+	}
+
+	public void setChildId(String childId) {
+		this.childId = childId;
+	}
+
+	public String getAttributeName() {
+		return attributeName;
+	}
+
+	public void setAttributeName(String attributeName) {
+		this.attributeName = attributeName;
+	}
+
+	@Override
+	public void accept(ValidationErrorVisitor visitor) {
+		super.accept(visitor);
+		visitor.visit(this);
+	}
+
+}
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SemanticAttributeMissingError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SemanticAttributeMissingError.java
index 8d613e73acfdcb94ac84e1664a1a95a5a2229649..da83a95165ce7c2c72c8740fe04d4f6e44b108c8 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SemanticAttributeMissingError.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SemanticAttributeMissingError.java
@@ -23,7 +23,6 @@ public class SemanticAttributeMissingError extends AbstractSemanticError {
 
 	private String childId;
 	private String attributeName;
-	private boolean generic;
 
 	public String getChildId() {
 		return childId;
@@ -41,14 +40,6 @@ public class SemanticAttributeMissingError extends AbstractSemanticError {
 		this.attributeName = attributeName;
 	}
 
-	public boolean isGeneric() {
-		return generic;
-	}
-
-	public void setGeneric(boolean generic) {
-		this.generic = generic;
-	}
-
 	@Override
 	public void accept(ValidationErrorVisitor visitor) {
 		super.accept(visitor);
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SemanticAttributeWrongValueError.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SemanticAttributeWrongValueError.java
index f880417b1d824dea1ec38edfe35a04adb048a929..03fb0bf0787c6b0921e2d1e068a10db72468f18c 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SemanticAttributeWrongValueError.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/SemanticAttributeWrongValueError.java
@@ -23,7 +23,6 @@ public class SemanticAttributeWrongValueError extends AbstractSemanticError {
 
 	private String childId;
 	private String attributeName;
-	private boolean generic;
 
 	public String getChildId() {
 		return childId;
@@ -41,14 +40,6 @@ public class SemanticAttributeWrongValueError extends AbstractSemanticError {
 		this.attributeName = attributeName;
 	}
 
-	public boolean isGeneric() {
-		return generic;
-	}
-
-	public void setGeneric(boolean generic) {
-		this.generic = generic;
-	}
-
 	@Override
 	public void accept(ValidationErrorVisitor visitor) {
 		super.accept(visitor);
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/Validation.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/Validation.java
index 2f26c40c470c4211a1d6ffa77ae68344d67e96ba..57c0213d3687651a8f3ccc7ddafc8a354da4f130 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/Validation.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/Validation.java
@@ -19,9 +19,9 @@ import java.time.ZonedDateTime;
 
 import org.citygml4j.core.model.ade.ADEObject;
 import org.citygml4j.core.model.core.AbstractFeature;
+import org.xmlobjects.gml.model.base.Reference;
 
 import de.hft.stuttgart.quality.model.properties.StatisticsProperty;
-import de.hft.stuttgart.quality.model.properties.ValidationPlanProperty;
 
 public class Validation extends AbstractFeature implements ADEObject {
 
@@ -30,7 +30,7 @@ public class Validation extends AbstractFeature implements ADEObject {
 	private ZonedDateTime validationDate;
 	private String validationSoftware;
 	private StatisticsProperty statistics;
-	private ValidationPlanProperty validationPlan;
+	private Reference validationPlan;
 
 	public ZonedDateTime getValidationDate() {
 		return validationDate;
@@ -56,11 +56,11 @@ public class Validation extends AbstractFeature implements ADEObject {
 		this.statistics = asChild(statistics);
 	}
 
-	public ValidationPlanProperty getValidationPlan() {
+	public Reference getValidationPlan() {
 		return validationPlan;
 	}
 
-	public void setValidationPlan(ValidationPlanProperty validationPlan) {
+	public void setValidationPlan(Reference validationPlan) {
 		this.validationPlan = asChild(validationPlan);
 	}
 
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/ValidationPlan.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/ValidationPlan.java
index 3310549cc79f5a6bf767e38518a1142e48c4879b..c8356f94c8fef759bd7b5bb89c1920b10dfa1482 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/ValidationPlan.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/ValidationPlan.java
@@ -18,14 +18,14 @@ package de.hft.stuttgart.quality.model.types;
 import java.util.List;
 
 import org.citygml4j.core.model.ade.ADEObject;
-import org.xmlobjects.gml.model.GMLObject;
+import org.citygml4j.core.model.core.AbstractFeature;
 import org.xmlobjects.model.ChildList;
 
 import de.hft.stuttgart.quality.model.properties.FilterProperty;
 import de.hft.stuttgart.quality.model.properties.GlobalParametersProperty;
 import de.hft.stuttgart.quality.model.properties.RequirementProperty;
 
-public class ValidationPlan extends GMLObject implements ADEObject {
+public class ValidationPlan extends AbstractFeature implements ADEObject {
 
 	private static final long serialVersionUID = 434443226848485642L;
 
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/ValidationResult.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/ValidationResult.java
index 8f0446ccec1c45821021290c28c725ccd19c85e0..5f51c0381ecb81d43a78c9ab559603bd35a1a286 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/ValidationResult.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/types/ValidationResult.java
@@ -30,16 +30,16 @@ public class ValidationResult extends GMLObject implements ADEObject {
 
 	private static final long serialVersionUID = 4867627296196445082L;
 
-	private Reference validationPlanID;
+	private Reference validationID;
 	private List<AbstractErrorProperty> errors;
 	private ResultType resultType;
 
 	public Reference getValidationPlanID() {
-		return validationPlanID;
+		return validationID;
 	}
 
-	public void setValidationPlanID(Reference validationPlanID) {
-		this.validationPlanID = asChild(validationPlanID);
+	public void setValidationID(Reference validationPlanID) {
+		this.validationID = asChild(validationPlanID);
 	}
 
 	public List<AbstractErrorProperty> getErrors() {
diff --git a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/walker/ValidationErrorVisitor.java b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/walker/ValidationErrorVisitor.java
index e125575a78f1b0977dd5d526c7a69aa7b4ed3d18..a7a9ed738e6246c5b5e8387222b2af83b9af194f 100644
--- a/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/walker/ValidationErrorVisitor.java
+++ b/citygml4j-quality-ade/src/main/java/de/hft/stuttgart/quality/model/walker/ValidationErrorVisitor.java
@@ -37,6 +37,7 @@ import de.hft.stuttgart.quality.model.types.PolygonWrongOrientationError;
 import de.hft.stuttgart.quality.model.types.RingNotClosedError;
 import de.hft.stuttgart.quality.model.types.RingSelfIntersectionError;
 import de.hft.stuttgart.quality.model.types.RingTooFewPointsError;
+import de.hft.stuttgart.quality.model.types.SemanticAttributeInvalidError;
 import de.hft.stuttgart.quality.model.types.SemanticAttributeMissingError;
 import de.hft.stuttgart.quality.model.types.SemanticAttributeWrongValueError;
 import de.hft.stuttgart.quality.model.types.SolidNotClosedError;
@@ -65,6 +66,10 @@ public interface ValidationErrorVisitor {
 		
 	}
 	
+	default void visit(SemanticAttributeInvalidError err) {
+		
+	}
+	
 	default void visit(AbstractSolidError err) {
 		
 	}
diff --git a/citygml4j-quality-ade/src/main/resources/qualityAde.xsd b/citygml4j-quality-ade/src/main/resources/qualityAde.xsd
index 0362e46c4c05e506b0bcfa717c2e7737306e4c26..8dbcb75433df6dd69182f07414706188843e62dc 100644
--- a/citygml4j-quality-ade/src/main/resources/qualityAde.xsd
+++ b/citygml4j-quality-ade/src/main/resources/qualityAde.xsd
@@ -1,4 +1,4 @@
-<?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">
+<?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/1.0.0" elementFormDefault="qualified" targetNamespace="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/1.0.0" version="1.0.0">
   <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"/>
@@ -117,6 +117,9 @@
       <element ref="qual:EdgeList"/>
     </sequence>
   </complexType>
+  <simpleType name="Enumeration1Type">
+    <restriction base="string"/>
+  </simpleType>
   <element name="Error" substitutionGroup="gml:_Object" type="qual:ErrorType"/>
   <complexType name="ErrorType">
     <sequence>
@@ -152,6 +155,7 @@
       <enumeration value="GE_S_MULTIPLE_CONNECTED_COMPONENTS"/>
       <enumeration value="SE_ATTRIBUTE_WRONG_VALUE"/>
       <enumeration value="SE_ATTRIBUTE_MISSING"/>
+      <enumeration value="SE_ATTRIBUTE_INVALID"/>
     </restriction>
   </simpleType>
   <element name="FeatureStatistics" substitutionGroup="gml:_Object" type="qual:FeatureStatisticsType"/>
@@ -541,6 +545,7 @@
       <enumeration value="R_GE_S_MULTIPLE_CONNECTED_COMPONENTS"/>
       <enumeration value="R_SE_ATTRIBUTES_EXISTING"/>
       <enumeration value="R_SE_ATTRIBUTES_CORRECT"/>
+      <enumeration value="R_SE_ATTRIBUTES_VALID"/>
     </restriction>
   </simpleType>
   <simpleType name="ResultTypeType">
@@ -558,6 +563,22 @@
       <enumeration value="DEGENERATED_RING"/>
     </restriction>
   </simpleType>
+  <element name="SE_ATTRIBUTE_INVALID" substitutionGroup="qual:AbstractSemanticError" type="qual:SE_ATTRIBUTE_INVALIDType"/>
+  <complexType name="SE_ATTRIBUTE_INVALIDType">
+    <complexContent>
+      <extension base="qual:AbstractSemanticErrorType">
+        <sequence>
+          <element name="childId" type="string"/>
+          <element name="attributeName" type="string"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="SE_ATTRIBUTE_INVALIDPropertyType">
+    <sequence>
+      <element ref="qual:SE_ATTRIBUTE_INVALID"/>
+    </sequence>
+  </complexType>
   <element name="SE_ATTRIBUTE_MISSING" substitutionGroup="qual:AbstractSemanticError" type="qual:SE_ATTRIBUTE_MISSINGType"/>
   <complexType name="SE_ATTRIBUTE_MISSINGType">
     <complexContent>
@@ -565,7 +586,6 @@
         <sequence>
           <element name="childId" type="string"/>
           <element name="attributeName" type="string"/>
-          <element name="generic" type="boolean"/>
         </sequence>
       </extension>
     </complexContent>
@@ -582,7 +602,6 @@
         <sequence>
           <element name="childId" type="string"/>
           <element name="attributeName" type="string"/>
-          <element name="generic" type="boolean"/>
         </sequence>
       </extension>
     </complexContent>
@@ -617,7 +636,7 @@
           <element name="validationDate" type="dateTime"/>
           <element name="validationSoftware" type="string"/>
           <element minOccurs="0" name="statistics" type="qual:StatisticsPropertyType"/>
-          <element name="validationPlan" type="qual:ValidationPlanPropertyType"/>
+          <element name="validationPlanID" type="gml:ReferenceType"/>
         </sequence>
       </extension>
     </complexContent>
@@ -628,23 +647,28 @@
     </sequence>
     <attributeGroup ref="gml:AssociationAttributeGroup"/>
   </complexType>
-  <element name="ValidationPlan" substitutionGroup="gml:_Object" type="qual:ValidationPlanType"/>
+  <element name="ValidationPlan" substitutionGroup="gml:_Feature" 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>
+    <complexContent>
+      <extension base="gml:AbstractFeatureType">
+        <sequence>
+          <element name="globalParameters" type="qual:GlobalParametersPropertyType"/>
+          <element name="filter" type="qual:FilterPropertyType"/>
+          <element maxOccurs="unbounded" name="requirement" type="qual:RequirementPropertyType"/>
+        </sequence>
+      </extension>
+    </complexContent>
   </complexType>
   <complexType name="ValidationPlanPropertyType">
-    <sequence>
+    <sequence minOccurs="0">
       <element ref="qual:ValidationPlan"/>
     </sequence>
+    <attributeGroup ref="gml:AssociationAttributeGroup"/>
   </complexType>
   <element name="ValidationResult" substitutionGroup="gml:_Object" type="qual:ValidationResultType"/>
   <complexType name="ValidationResultType">
     <sequence>
-      <element name="validationPlanID" type="gml:ReferenceType"/>
+      <element name="validationID" type="qual:ValidationPropertyType"/>
       <element maxOccurs="unbounded" minOccurs="0" name="error" type="qual:AbstractErrorPropertyType"/>
       <element name="resultType" type="qual:ResultTypeType"/>
     </sequence>
diff --git a/citygml4j-quality-ade/src/test/java/de/hft/stuttgart/quality/QualityAdeTests.java b/citygml4j-quality-ade/src/test/java/de/hft/stuttgart/quality/QualityAdeTests.java
index 51696a95cdbf0406b43a5846ddc1fb5ceab9d7a2..24c916b17f1186836ac8f003106db8144c481ef1 100644
--- a/citygml4j-quality-ade/src/test/java/de/hft/stuttgart/quality/QualityAdeTests.java
+++ b/citygml4j-quality-ade/src/test/java/de/hft/stuttgart/quality/QualityAdeTests.java
@@ -78,7 +78,6 @@ import de.hft.stuttgart.quality.model.properties.ParameterProperty;
 import de.hft.stuttgart.quality.model.properties.PolygonIdListProperty;
 import de.hft.stuttgart.quality.model.properties.RequirementProperty;
 import de.hft.stuttgart.quality.model.properties.StatisticsProperty;
-import de.hft.stuttgart.quality.model.properties.ValidationPlanProperty;
 import de.hft.stuttgart.quality.model.properties.ValidationResultProperty;
 import de.hft.stuttgart.quality.model.types.AllPolygonsOrientedWrongError;
 import de.hft.stuttgart.quality.model.types.Checking;
@@ -106,6 +105,7 @@ import de.hft.stuttgart.quality.model.types.Requirement;
 import de.hft.stuttgart.quality.model.types.RingNotClosedError;
 import de.hft.stuttgart.quality.model.types.RingSelfIntersectionError;
 import de.hft.stuttgart.quality.model.types.RingTooFewPointsError;
+import de.hft.stuttgart.quality.model.types.SemanticAttributeInvalidError;
 import de.hft.stuttgart.quality.model.types.SemanticAttributeMissingError;
 import de.hft.stuttgart.quality.model.types.SemanticAttributeWrongValueError;
 import de.hft.stuttgart.quality.model.types.SolidNotClosedError;
@@ -418,7 +418,6 @@ class QualityAdeTests {
 		SemanticAttributeMissingError err = new SemanticAttributeMissingError();
 		err.setAttributeName("attribute");
 		err.setChildId("child");
-		err.setGeneric(true);
 		res.getErrors().add(new AbstractErrorProperty(err));
 
 		byte[] buf = writeModel(model);
@@ -434,12 +433,26 @@ class QualityAdeTests {
 		SemanticAttributeWrongValueError err = new SemanticAttributeWrongValueError();
 		err.setAttributeName("attribute");
 		err.setChildId("child");
-		err.setGeneric(true);
 		res.getErrors().add(new AbstractErrorProperty(err));
 
 		byte[] buf = writeModel(model);
 		assertTrue(validate(new ByteArrayInputStream(buf)));
 	}
+	
+	@Test
+	void testSemanticAttributeInvalidError() throws ADEException, CityGMLContextException, CityGMLWriteException,
+			SAXException, IOException, SchemaHandlerException {
+		CityModel model = new CityModel();
+		ValidationResult res = fillCityModel(model);
+
+		SemanticAttributeInvalidError err = new SemanticAttributeInvalidError();
+		err.setAttributeName("attribute");
+		err.setChildId("child");
+		res.getErrors().add(new AbstractErrorProperty(err));
+		
+		byte[] buf = writeModel(model);
+		assertTrue(validate(new ByteArrayInputStream(buf)));
+	}
 
 	@Test
 	void testSolidNotClosedError() throws ADEException, CityGMLContextException, CityGMLWriteException, SAXException,
@@ -547,11 +560,12 @@ class QualityAdeTests {
 
 	private ValidationResult fillCityModel(CityModel model) {
 		Validation v = new Validation();
-		v.setId("planId");
+		v.setId("validationId");
 		model.getFeatureMembers().add(new AbstractFeatureProperty(v));
 		v.setValidationSoftware("testSoftware");
 		v.setValidationDate(ZonedDateTime.now());
 		ValidationPlan plan = new ValidationPlan();
+		plan.setId("validationPlanId");
 
 		Statistics stats = new Statistics();
 		FeatureStatistics fStats = new FeatureStatistics();
@@ -561,7 +575,7 @@ class QualityAdeTests {
 		v.setStatistics(new StatisticsProperty(stats));
 		
 		de.hft.stuttgart.quality.model.types.Error err = new de.hft.stuttgart.quality.model.types.Error();
-		err.setName(ErrorId.GE_P_HOLE_OUTSIDE);
+		err.setName(ErrorId.SE_ATTRIBUTE_INVALID);
 		err.setOccurrences(1);
 		stats.getErrors().add(new ErrorProperty(err));
 
@@ -584,8 +598,10 @@ class QualityAdeTests {
 		GlobalParameters globalParams = new GlobalParameters();
 		globalParams.getParameters().add(new ParameterProperty(param));
 		plan.setGlobalParameters(new GlobalParametersProperty(globalParams));
+		
+		model.getFeatureMembers().add(new AbstractFeatureProperty(plan));
 
-		v.setValidationPlan(new ValidationPlanProperty(plan));
+		v.setValidationPlan(new Reference(plan));
 
 		Building b = new Building();
 		b.setId("testId");
@@ -596,7 +612,7 @@ class QualityAdeTests {
 		ValidationResult res = new ValidationResult();
 		props.setValidationResult(new ValidationResultProperty(res));
 		res.setResultType(ResultType.ERROR);
-		res.setValidationPlanID(new Reference(v));
+		res.setValidationID(new Reference(v));
 		return res;
 	}
 }
diff --git a/citygml4j-quality-ade/src/test/resources/SimpleSolid_Error_QualityADE.gml b/citygml4j-quality-ade/src/test/resources/SimpleSolid_Error_QualityADE.gml
index c62b3696ce8c77b6cc5530708a763a3745b0ee71..4d47e982c26d6f0836f08546f35804044c99f3a5 100644
--- a/citygml4j-quality-ade/src/test/resources/SimpleSolid_Error_QualityADE.gml
+++ b/citygml4j-quality-ade/src/test/resources/SimpleSolid_Error_QualityADE.gml
@@ -1,30 +1,21 @@
 <?xml version="1.0" encoding="utf-8"?>
-<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0"
-	xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0"
-	xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0"
-	xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink"
-	xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.4"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.4 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/0.1.4/qualityAde.xsd">
-
+<core:CityModel xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:qual="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/citygml/building/2.0 http://schemas.opengis.net/citygml/building/2.0/building.xsd http://www.opengis.net/citygml/appearance/2.0 http://schemas.opengis.net/citygml/appearance/2.0/appearance.xsd http://www.opengis.net/citygml/relief/2.0 http://schemas.opengis.net/citygml/relief/2.0/relief.xsd http://www.opengis.net/citygml/2.0 http://schemas.opengis.net/citygml/2.0/cityGMLBase.xsd http://www.opengis.net/citygml/generics/2.0 http://schemas.opengis.net/citygml/generics/2.0/generics.xsd https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/1.0.0 https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/1.0.0/qualityAde.xsd">
 	<!-- Einfaches Gebäude mit Grundriss 3m x 5m und Satteldach, Traufhöhe 3m, Firsthöhe 4,5m Modelliert mit Begrenzungsflächen 
 		(eine Dachfläche, 4 Wandflächen, 1 Grundfläche), die Gebäudegeometrie als Solid, der auf die Polygone der Begrenzungsflächen 
 		referenziert CityGML 2.0 linear ring _Simple_BD.1_PG.6_LR.1 beinhaltet zwei aufeinander folgende Punkte, die identisch sind. 
 		10.5.2017 Author: V. Coors, HFT Stuttgart Lizenz: -->
-
-    <gml:name>Building-Unit-House</gml:name>
-    <gml:boundedBy>
-        <gml:Envelope srsDimension="3" srsName="urn:adv:crs:ETRS89_UTM32*DE_DHHN92_NH">
-            <gml:lowerCorner srsDimension="3">457841 5439082 111 </gml:lowerCorner>
-            <gml:upperCorner srsDimension="3">457854 5439093 121 </gml:upperCorner>
-        </gml:Envelope>
-    </gml:boundedBy>  
-
+	<gml:name>Building-Unit-House</gml:name>
+	<gml:boundedBy>
+		<gml:Envelope srsDimension="3" srsName="urn:adv:crs:ETRS89_UTM32*DE_DHHN92_NH">
+			<gml:lowerCorner srsDimension="3">457841 5439082 111 </gml:lowerCorner>
+			<gml:upperCorner srsDimension="3">457854 5439093 121 </gml:upperCorner>
+		</gml:Envelope>
+	</gml:boundedBy>
 	<core:cityObjectMember>
 		<bldg:Building gml:id="_Simple_BD.1">
 			<qual:validationResult>
 				<qual:ValidationResult>
-					<qual:validationPlanID xlink:href="#idvalue0" />
+					<qual:validationPlanID xlink:href="#idvalue0"/>
 					<qual:error>
 						<qual:GE_R_CONSECUTIVE_POINTS_SAME>
 							<qual:linearRingId>_Simple_BD.1_PG.6_LR.1</qual:linearRingId>
@@ -39,13 +30,13 @@
 				<gml:Solid>
 					<gml:exterior>
 						<gml:CompositeSurface>
-							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.1" />
-							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.2" />
-							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.3" />
-							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.4" />
-							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.5" />
-							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.6" />
-							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.7" />
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.1"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.2"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.3"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.4"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.5"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.6"/>
+							<gml:surfaceMember xlink:href="#_Simple_BD.1_PG.7"/>
 						</gml:CompositeSurface>
 					</gml:exterior>
 				</gml:Solid>
@@ -212,7 +203,7 @@
 			</bldg:boundedBy>
 		</bldg:Building>
 	</core:cityObjectMember>
-	<core:cityObjectMember>
+	<gml:featureMember>
 		<qual:Validation gml:id="idvalue0">
 			<qual:validationDate>2002-05-30T09:00:00</qual:validationDate>
 			<qual:validationSoftware>CityDoctor2</qual:validationSoftware>
@@ -262,195 +253,196 @@
 					</qual:error>
 				</qual:Statistics>
 			</qual:statistics>
-			<qual:validationPlan>
-				<qual:ValidationPlan>
-					<qual:globalParameters>
-						<qual:GlobalParameters>
-							<qual:parameter>
-								<qual:Parameter>
-									<qual:name>numberOfRoundingPlaces</qual:name>
-									<qual:value>8</qual:value>
-								</qual:Parameter>
-							</qual:parameter>
-							<qual:parameter>
-								<qual:Parameter>
-									<qual:name>minVertexDistance</qual:name>
-									<qual:uom>m</qual:uom>
-									<qual:value>0.0001</qual:value>
-								</qual:Parameter>
-							</qual:parameter>
-							<qual:parameter>
-								<qual:Parameter>
-									<qual:name>schematronFile</qual:name>
-									<qual:value></qual:value>
-								</qual:Parameter>
-							</qual:parameter>
-						</qual:GlobalParameters>
-					</qual:globalParameters>
-					<qual:filter>
-						<qual:Filter>
-							<qual:checking>
-								<qual:Checking>
-									<qual:featureType>BUILDING</qual:featureType>
-								</qual:Checking>
-							</qual:checking>
-							<qual:checking>
-								<qual:Checking>
-									<qual:featureType>TRANSPORTATION</qual:featureType>
-								</qual:Checking>
-							</qual:checking>
-							<qual:checking>
-								<qual:Checking>
-									<qual:featureType>VEGETATION</qual:featureType>
-								</qual:Checking>
-							</qual:checking>
-							<qual:checking>
-								<qual:Checking>
-									<qual:featureType>BRIDGE</qual:featureType>
-								</qual:Checking>
-							</qual:checking>
-							<qual:checking>
-								<qual:Checking>
-									<qual:featureType>WATER</qual:featureType>
-								</qual:Checking>
-							</qual:checking>
-							<qual:checking>
-								<qual:Checking>
-									<qual:featureType>LAND</qual:featureType>
-								</qual:Checking>
-							</qual:checking>
-						</qual:Filter>
-					</qual:filter>
-					<qual:requirement>
-						<qual:Requirement>
-							<qual:enabled>true</qual:enabled>
-							<qual:requirementType>R_GE_R_TOO_FEW_POINTS</qual:requirementType>
-						</qual:Requirement>
-					</qual:requirement>
-					<qual:requirement>
-						<qual:Requirement>
-							<qual:enabled>true</qual:enabled>
-							<qual:requirementType>R_GE_R_NOT_CLOSED</qual:requirementType>
-						</qual:Requirement>
-					</qual:requirement>
-					<qual:requirement>
-						<qual:Requirement>
-							<qual:enabled>true</qual:enabled>
-							<qual:requirementType>R_GE_R_CONSECUTIVE_POINTS_SAME</qual:requirementType>
-						</qual:Requirement>
-					</qual:requirement>
-					<qual:requirement>
-						<qual:Requirement>
-							<qual:enabled>true</qual:enabled>
-							<qual:requirementType>R_GE_R_SELF_INTERSECTION</qual:requirementType>
-						</qual:Requirement>
-					</qual:requirement>
-					<qual:requirement>
-						<qual:Requirement>
-							<qual:enabled>true</qual:enabled>
-							<qual:requirementType>R_GE_P_NON_PLANAR</qual:requirementType>
-							<qual:parameter>
-								<qual:Parameter>
-									<qual:name>type</qual:name>
-									<qual:value>distance</qual:value>
-								</qual:Parameter>
-							</qual:parameter>
-							<qual:parameter>
-								<qual:Parameter>
-									<qual:name>distanceTolerance</qual:name>
-									<qual:uom>m</qual:uom>
-									<qual:value>0.01</qual:value>
-								</qual:Parameter>
-							</qual:parameter>
-							<qual:parameter>
-								<qual:Parameter>
-									<qual:name>angleTolerance</qual:name>
-									<qual:uom>deg</qual:uom>
-									<qual:value>1</qual:value>
-								</qual:Parameter>
-							</qual:parameter>
-						</qual:Requirement>
-					</qual:requirement>
-					<qual:requirement>
-						<qual:Requirement>
-							<qual:enabled>true</qual:enabled>
-							<qual:requirementType>R_GE_P_INTERIOR_DISCONNECTED</qual:requirementType>
-						</qual:Requirement>
-					</qual:requirement>
-					<qual:requirement>
-						<qual:Requirement>
-							<qual:enabled>true</qual:enabled>
-							<qual:requirementType>R_GE_P_INTERSECTING_RINGS</qual:requirementType>
-						</qual:Requirement>
-					</qual:requirement>
-					<qual:requirement>
-						<qual:Requirement>
-							<qual:enabled>true</qual:enabled>
-							<qual:requirementType>R_GE_P_HOLE_OUTSIDE</qual:requirementType>
-						</qual:Requirement>
-					</qual:requirement>
-					<qual:requirement>
-						<qual:Requirement>
-							<qual:enabled>true</qual:enabled>
-							<qual:requirementType>R_GE_P_ORIENTATION_RINGS_SAME</qual:requirementType>
-						</qual:Requirement>
-					</qual:requirement>
-					<qual:requirement>
-						<qual:Requirement>
-							<qual:enabled>true</qual:enabled>
-							<qual:requirementType>R_GE_P_INNER_RINGS_NESTED</qual:requirementType>
-						</qual:Requirement>
-					</qual:requirement>
-					<qual:requirement>
-						<qual:Requirement>
-							<qual:enabled>true</qual:enabled>
-							<qual:requirementType>R_GE_S_TOO_FEW_POLYGONS</qual:requirementType>
-						</qual:Requirement>
-					</qual:requirement>
-					<qual:requirement>
-						<qual:Requirement>
-							<qual:enabled>true</qual:enabled>
-							<qual:requirementType>R_GE_S_NOT_CLOSED</qual:requirementType>
-						</qual:Requirement>
-					</qual:requirement>
-					<qual:requirement>
-						<qual:Requirement>
-							<qual:enabled>true</qual:enabled>
-							<qual:requirementType>R_GE_S_NON_MANIFOLD_EDGE</qual:requirementType>
-						</qual:Requirement>
-					</qual:requirement>
-					<qual:requirement>
-						<qual:Requirement>
-							<qual:enabled>true</qual:enabled>
-							<qual:requirementType>R_GE_S_POLYGON_WRONG_ORIENTATION</qual:requirementType>
-						</qual:Requirement>
-					</qual:requirement>
-					<qual:requirement>
-						<qual:Requirement>
-							<qual:enabled>true</qual:enabled>
-							<qual:requirementType>R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION</qual:requirementType>
-						</qual:Requirement>
-					</qual:requirement>
-					<qual:requirement>
-						<qual:Requirement>
-							<qual:enabled>true</qual:enabled>
-							<qual:requirementType>R_GE_S_NON_MANIFOLD_VERTEX</qual:requirementType>
-						</qual:Requirement>
-					</qual:requirement>
-					<qual:requirement>
-						<qual:Requirement>
-							<qual:enabled>true</qual:enabled>
-							<qual:requirementType>R_GE_S_SELF_INTERSECTION</qual:requirementType>
-						</qual:Requirement>
-					</qual:requirement>
-					<qual:requirement>
-						<qual:Requirement>
-							<qual:enabled>true</qual:enabled>
-							<qual:requirementType>R_GE_S_MULTIPLE_CONNECTED_COMPONENTS</qual:requirementType>
-						</qual:Requirement>
-					</qual:requirement>
-				</qual:ValidationPlan>
-			</qual:validationPlan>
+			<qual:validationPlan xlink:href="#validationPlanId1"/>
 		</qual:Validation>
-	</core:cityObjectMember>
+	</gml:featureMember>
+	<gml:featureMember>
+		<qual:ValidationPlan gml:id="validationPlanId1">
+			<qual:globalParameters>
+				<qual:GlobalParameters>
+					<qual:parameter>
+						<qual:Parameter>
+							<qual:name>numberOfRoundingPlaces</qual:name>
+							<qual:value>8</qual:value>
+						</qual:Parameter>
+					</qual:parameter>
+					<qual:parameter>
+						<qual:Parameter>
+							<qual:name>minVertexDistance</qual:name>
+							<qual:uom>m</qual:uom>
+							<qual:value>0.0001</qual:value>
+						</qual:Parameter>
+					</qual:parameter>
+					<qual:parameter>
+						<qual:Parameter>
+							<qual:name>schematronFile</qual:name>
+							<qual:value/>
+						</qual:Parameter>
+					</qual:parameter>
+				</qual:GlobalParameters>
+			</qual:globalParameters>
+			<qual:filter>
+				<qual:Filter>
+					<qual:checking>
+						<qual:Checking>
+							<qual:featureType>BUILDING</qual:featureType>
+						</qual:Checking>
+					</qual:checking>
+					<qual:checking>
+						<qual:Checking>
+							<qual:featureType>TRANSPORTATION</qual:featureType>
+						</qual:Checking>
+					</qual:checking>
+					<qual:checking>
+						<qual:Checking>
+							<qual:featureType>VEGETATION</qual:featureType>
+						</qual:Checking>
+					</qual:checking>
+					<qual:checking>
+						<qual:Checking>
+							<qual:featureType>BRIDGE</qual:featureType>
+						</qual:Checking>
+					</qual:checking>
+					<qual:checking>
+						<qual:Checking>
+							<qual:featureType>WATER</qual:featureType>
+						</qual:Checking>
+					</qual:checking>
+					<qual:checking>
+						<qual:Checking>
+							<qual:featureType>LAND</qual:featureType>
+						</qual:Checking>
+					</qual:checking>
+				</qual:Filter>
+			</qual:filter>
+			<qual:requirement>
+				<qual:Requirement>
+					<qual:enabled>true</qual:enabled>
+					<qual:requirementType>R_GE_R_TOO_FEW_POINTS</qual:requirementType>
+				</qual:Requirement>
+			</qual:requirement>
+			<qual:requirement>
+				<qual:Requirement>
+					<qual:enabled>true</qual:enabled>
+					<qual:requirementType>R_GE_R_NOT_CLOSED</qual:requirementType>
+				</qual:Requirement>
+			</qual:requirement>
+			<qual:requirement>
+				<qual:Requirement>
+					<qual:enabled>true</qual:enabled>
+					<qual:requirementType>R_GE_R_CONSECUTIVE_POINTS_SAME</qual:requirementType>
+				</qual:Requirement>
+			</qual:requirement>
+			<qual:requirement>
+				<qual:Requirement>
+					<qual:enabled>true</qual:enabled>
+					<qual:requirementType>R_GE_R_SELF_INTERSECTION</qual:requirementType>
+				</qual:Requirement>
+			</qual:requirement>
+			<qual:requirement>
+				<qual:Requirement>
+					<qual:enabled>true</qual:enabled>
+					<qual:requirementType>R_GE_P_NON_PLANAR</qual:requirementType>
+					<qual:parameter>
+						<qual:Parameter>
+							<qual:name>type</qual:name>
+							<qual:value>distance</qual:value>
+						</qual:Parameter>
+					</qual:parameter>
+					<qual:parameter>
+						<qual:Parameter>
+							<qual:name>distanceTolerance</qual:name>
+							<qual:uom>m</qual:uom>
+							<qual:value>0.01</qual:value>
+						</qual:Parameter>
+					</qual:parameter>
+					<qual:parameter>
+						<qual:Parameter>
+							<qual:name>angleTolerance</qual:name>
+							<qual:uom>deg</qual:uom>
+							<qual:value>1</qual:value>
+						</qual:Parameter>
+					</qual:parameter>
+				</qual:Requirement>
+			</qual:requirement>
+			<qual:requirement>
+				<qual:Requirement>
+					<qual:enabled>true</qual:enabled>
+					<qual:requirementType>R_GE_P_INTERIOR_DISCONNECTED</qual:requirementType>
+				</qual:Requirement>
+			</qual:requirement>
+			<qual:requirement>
+				<qual:Requirement>
+					<qual:enabled>true</qual:enabled>
+					<qual:requirementType>R_GE_P_INTERSECTING_RINGS</qual:requirementType>
+				</qual:Requirement>
+			</qual:requirement>
+			<qual:requirement>
+				<qual:Requirement>
+					<qual:enabled>true</qual:enabled>
+					<qual:requirementType>R_GE_P_HOLE_OUTSIDE</qual:requirementType>
+				</qual:Requirement>
+			</qual:requirement>
+			<qual:requirement>
+				<qual:Requirement>
+					<qual:enabled>true</qual:enabled>
+					<qual:requirementType>R_GE_P_ORIENTATION_RINGS_SAME</qual:requirementType>
+				</qual:Requirement>
+			</qual:requirement>
+			<qual:requirement>
+				<qual:Requirement>
+					<qual:enabled>true</qual:enabled>
+					<qual:requirementType>R_GE_P_INNER_RINGS_NESTED</qual:requirementType>
+				</qual:Requirement>
+			</qual:requirement>
+			<qual:requirement>
+				<qual:Requirement>
+					<qual:enabled>true</qual:enabled>
+					<qual:requirementType>R_GE_S_TOO_FEW_POLYGONS</qual:requirementType>
+				</qual:Requirement>
+			</qual:requirement>
+			<qual:requirement>
+				<qual:Requirement>
+					<qual:enabled>true</qual:enabled>
+					<qual:requirementType>R_GE_S_NOT_CLOSED</qual:requirementType>
+				</qual:Requirement>
+			</qual:requirement>
+			<qual:requirement>
+				<qual:Requirement>
+					<qual:enabled>true</qual:enabled>
+					<qual:requirementType>R_GE_S_NON_MANIFOLD_EDGE</qual:requirementType>
+				</qual:Requirement>
+			</qual:requirement>
+			<qual:requirement>
+				<qual:Requirement>
+					<qual:enabled>true</qual:enabled>
+					<qual:requirementType>R_GE_S_POLYGON_WRONG_ORIENTATION</qual:requirementType>
+				</qual:Requirement>
+			</qual:requirement>
+			<qual:requirement>
+				<qual:Requirement>
+					<qual:enabled>true</qual:enabled>
+					<qual:requirementType>R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION</qual:requirementType>
+				</qual:Requirement>
+			</qual:requirement>
+			<qual:requirement>
+				<qual:Requirement>
+					<qual:enabled>true</qual:enabled>
+					<qual:requirementType>R_GE_S_NON_MANIFOLD_VERTEX</qual:requirementType>
+				</qual:Requirement>
+			</qual:requirement>
+			<qual:requirement>
+				<qual:Requirement>
+					<qual:enabled>true</qual:enabled>
+					<qual:requirementType>R_GE_S_SELF_INTERSECTION</qual:requirementType>
+				</qual:Requirement>
+			</qual:requirement>
+			<qual:requirement>
+				<qual:Requirement>
+					<qual:enabled>true</qual:enabled>
+					<qual:requirementType>R_GE_S_MULTIPLE_CONNECTED_COMPONENTS</qual:requirementType>
+				</qual:Requirement>
+			</qual:requirement>
+		</qual:ValidationPlan>
+	</gml:featureMember>
 </core:CityModel>
\ No newline at end of file
diff --git a/public/1.0.0/qualityAde.xsd b/public/1.0.0/qualityAde.xsd
new file mode 100644
index 0000000000000000000000000000000000000000..8dbcb75433df6dd69182f07414706188843e62dc
--- /dev/null
+++ b/public/1.0.0/qualityAde.xsd
@@ -0,0 +1,682 @@
+<?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/1.0.0" elementFormDefault="qualified" targetNamespace="https://transfer.hft-stuttgart.de/pages/citydoctor/qualityade/1.0.0" version="1.0.0">
+  <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="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>
+  <simpleType name="Enumeration1Type">
+    <restriction base="string"/>
+  </simpleType>
+  <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"/>
+      <enumeration value="SE_ATTRIBUTE_INVALID"/>
+    </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 minOccurs="0" name="edge1" type="qual:EdgePropertyType"/>
+          <element minOccurs="0" name="edge2" type="qual:EdgePropertyType"/>
+          <element minOccurs="0" name="vertex1" type="gml:DirectPositionType"/>
+          <element minOccurs="0" name="vertex2" type="gml:DirectPositionType"/>
+          <element name="type" type="qual:RingSelfIntersectionTypeType"/>
+        </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="component" type="qual:PolygonIdListPropertyType"/>
+        </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"/>
+      <enumeration value="R_SE_ATTRIBUTES_VALID"/>
+    </restriction>
+  </simpleType>
+  <simpleType name="ResultTypeType">
+    <restriction base="string">
+      <enumeration value="OK"/>
+      <enumeration value="ERROR"/>
+      <enumeration value="NOT_CHECKED"/>
+    </restriction>
+  </simpleType>
+  <simpleType name="RingSelfIntersectionTypeType">
+    <restriction base="string">
+      <enumeration value="EDGE_INTERSECTION"/>
+      <enumeration value="VERTEX_TOUCHES_EDGE"/>
+      <enumeration value="DUPLICATE_POINT"/>
+      <enumeration value="DEGENERATED_RING"/>
+    </restriction>
+  </simpleType>
+  <element name="SE_ATTRIBUTE_INVALID" substitutionGroup="qual:AbstractSemanticError" type="qual:SE_ATTRIBUTE_INVALIDType"/>
+  <complexType name="SE_ATTRIBUTE_INVALIDType">
+    <complexContent>
+      <extension base="qual:AbstractSemanticErrorType">
+        <sequence>
+          <element name="childId" type="string"/>
+          <element name="attributeName" type="string"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="SE_ATTRIBUTE_INVALIDPropertyType">
+    <sequence>
+      <element ref="qual:SE_ATTRIBUTE_INVALID"/>
+    </sequence>
+  </complexType>
+  <element name="SE_ATTRIBUTE_MISSING" substitutionGroup="qual:AbstractSemanticError" type="qual:SE_ATTRIBUTE_MISSINGType"/>
+  <complexType name="SE_ATTRIBUTE_MISSINGType">
+    <complexContent>
+      <extension base="qual:AbstractSemanticErrorType">
+        <sequence>
+          <element name="childId" type="string"/>
+          <element name="attributeName" type="string"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="SE_ATTRIBUTE_MISSINGPropertyType">
+    <sequence>
+      <element ref="qual:SE_ATTRIBUTE_MISSING"/>
+    </sequence>
+  </complexType>
+  <element name="SE_ATTRIBUTE_WRONG_VALUE" substitutionGroup="qual:AbstractSemanticError" type="qual:SE_ATTRIBUTE_WRONG_VALUEType"/>
+  <complexType name="SE_ATTRIBUTE_WRONG_VALUEType">
+    <complexContent>
+      <extension base="qual:AbstractSemanticErrorType">
+        <sequence>
+          <element name="childId" type="string"/>
+          <element name="attributeName" type="string"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="SE_ATTRIBUTE_WRONG_VALUEPropertyType">
+    <sequence>
+      <element ref="qual:SE_ATTRIBUTE_WRONG_VALUE"/>
+    </sequence>
+  </complexType>
+  <element name="Statistics" substitutionGroup="gml:_Object" type="qual:StatisticsType"/>
+  <complexType name="StatisticsType">
+    <sequence>
+      <element minOccurs="0" name="numErrorBuildings" type="qual:FeatureStatisticsPropertyType"/>
+      <element minOccurs="0" name="numErrorVegetation" type="qual:FeatureStatisticsPropertyType"/>
+      <element minOccurs="0" name="numErrorLandObjects" type="qual:FeatureStatisticsPropertyType"/>
+      <element minOccurs="0" name="numErrorBridgeObjects" type="qual:FeatureStatisticsPropertyType"/>
+      <element minOccurs="0" name="numErrorWaterObjects" type="qual:FeatureStatisticsPropertyType"/>
+      <element minOccurs="0" 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="validationPlanID" type="gml:ReferenceType"/>
+        </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:_Feature" type="qual:ValidationPlanType"/>
+  <complexType name="ValidationPlanType">
+    <complexContent>
+      <extension base="gml:AbstractFeatureType">
+        <sequence>
+          <element name="globalParameters" type="qual:GlobalParametersPropertyType"/>
+          <element name="filter" type="qual:FilterPropertyType"/>
+          <element maxOccurs="unbounded" name="requirement" type="qual:RequirementPropertyType"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="ValidationPlanPropertyType">
+    <sequence minOccurs="0">
+      <element ref="qual:ValidationPlan"/>
+    </sequence>
+    <attributeGroup ref="gml:AssociationAttributeGroup"/>
+  </complexType>
+  <element name="ValidationResult" substitutionGroup="gml:_Object" type="qual:ValidationResultType"/>
+  <complexType name="ValidationResultType">
+    <sequence>
+      <element name="validationID" type="qual:ValidationPropertyType"/>
+      <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>