public void SpecialiseArchetype(string addition_to_concept_name) { ARCHETYPE_TERM term = new ARCHETYPE_TERM(); ARCHETYPE_TERM parentTerm = _ontology.TermDefinition(_ontology.PrimaryLanguageCode, _archetype.concept); term.code = _ontology.NextSpecialisedTermId(parentTerm.code); term.items = new StringDictionaryItem[parentTerm.items.Length]; for (int i = 0; i < parentTerm.items.Length; i++) { term.items[i] = new StringDictionaryItem(); term.items[i].id = parentTerm.items[i].id; term.items[i].Value = parentTerm.items[i].Value; } _ontology.AddTermOrConstraintDefinition(term, false); if (_archetype.definition.node_id == _archetype.concept) { _archetype.definition.node_id = term.code; } _archetype.concept = term.code; _archetype.parent_archetype_id = _archetype.archetype_id; //now add the addition to the concept name in the archetype ID string[] y = _archetype.archetype_id.value.Split(".".ToCharArray()); _archetype.archetype_id = new ARCHETYPE_ID(); _archetype.archetype_id.value = y[0] + "." + y[1] + "-" + addition_to_concept_name; for (int i = 2; i < y.Length; i++) { _archetype.archetype_id.value += "." + y[i]; } //don't overwrite the old archetype _file_name = null; }