private static Submodel createSubmodel(UAObject submodel) { //Submodel // -> AASSubmodelElement (multiple) // -> AASSemanticId // -> Property (Category) // -> ModellingKind if (isSubmodel(submodel)) { //set Submodelparameters Identification iden = GetIdentification(submodel); Submodel sub = Submodel.CreateNew(iden.idType, iden.id); sub.idShort = makePretty(submodel.BrowseName); sub.kind = getKind(submodel); sub.submodelElements = new SubmodelElementWrapperCollection(); foreach (Reference _ref in submodel.References) { if (_ref.ReferenceType == "HasComponent") { var node = findNode(_ref.Value); string type = getTypeDefinition(node); //Set SemanticId if (type == "1:AASSemanticIdType") { addSemanticID(sub, (UAVariable)node); } //Set SubmodelElements if (type == "1:AASSubmodelElementType") { sub.submodelElements.Add(createSubmodelElement(node)); } } //set Kind and Category if (_ref.ReferenceType == "HasProperty") { var var = findNode(_ref.Value); if (var.BrowseName == "1:ModellingKind") { sub.kind = getKind(var); } if (var.BrowseName == "1:Category") { sub.category = getCategory(var); } } } return(sub); } return(null); }