public DataflowObjectBaseCore(IDataflowObject dataflow,
				IDataStructureObjectBase keyFamily0) : base(dataflow) {
			if (keyFamily0 == null) {
				throw new ValidationException(
						"DataflowObjectBaseCore requires IKeyFamilyObjectBase");
			}
			this._keyFamily = keyFamily0;
			this._dataflow = dataflow;
			//TODO Build KeyFamily Ref once the uniqueness constraints have been implemented on the schemas
	
		}
		public GroupObjectBaseCore(IGroup group, IDataStructureObjectBase keyFamily) : base(group) {
			this.dimension = new List<IDimensionObjectBase>();
			this.dimensionMap = new Dictionary<String, IDimensionObjectBase>();
			this.attachmentConstraintRef = group.AttachmentConstraintRef;
			/* foreach */
			foreach (String conceptId  in  group.DimensionRef) {
				IDimensionObjectBase dim = keyFamily.GetDimensionById(conceptId);
				dimension.Add(dim);
				dimensionMap.Add(conceptId,dim);
			}
			this.id = group.Id;
		}
        /// <summary>
        /// Remove the given IDataStructureObjectBase from this container, do nothing if it is not in this container
        /// </summary>
        /// <param name="dataStructureObject">DataStructure Object </param>
	    public void RemoveDataStructure(IDataStructureObjectBase dataStructureObject)
        {
		    this._dataStructures.Remove(dataStructureObject);
	    }
        /// <summary>
        /// Add a IDataStructureObjectBase to this container, overwrite if one already exists with the same URN
        /// </summary>
        /// <param name="dataStructureObject">Datastructure object. </param>
	    public void AddDataStructure(IDataStructureObjectBase dataStructureObject)
        {
		    if(dataStructureObject != null)
            {
			    this._dataStructures.Remove(dataStructureObject);
			    this._dataStructures.Add(dataStructureObject);
		    }
	    }