...
- convert the 'ontology' section to be named 'terminology'
- add the new id_definitions section into the archetype terminology
- for all at-codes used as node ids, renumber and reformat them as follows:
- at0000 => id1; at0000.1 => id1.1 and so on
- at000N => idN+1 e.g. at0003 => id4, at0022 => id23
- move all id codes from the term_definitions section to the new id_definitions section
- for all other at-codes, reformat by removing leading zeroes in the top level of the codes
- interior nodes that are missing codes get new id-codes.
- implem guidance: these can be created by injecting a fake code (e.g. id110011 is used in the ADL workbench) early on in
- this is done a) to easily guarantee no clashes with existing codes and b) to be able to easily spot nodes whose ids were created new
- in specialised archetypes, the same nodes are matched and if no constraint overrides are detected, the same code is reusedparsing (the same code can be used), and then running a post parse processor over the structure, looking for these codes, and converting them to normal id-codes. This is done so that in specialised archetypes, corresponding nodes are found and the id-code replaced with the same code, ensuring that specialised archetypes remain correct.
- leaf C_PRIMITIVE_OBJECT nodes always get the special code id9999.
The above rules can be applied deterministically to convert an ADL 1.4 archetype to a new-style ADL 1.5 archetype, and also (in reverse) to extract a set of ADL 1.4-compatible paths from the new 1.5 archetype.
...