ENTITY project (* stuff that is already defined *) END_ENTITY; ENTITY project_measurements its_project : project; where: address; when: time_and_date; why: label; Its_signals: LIST [1:?] OF Monitored_signal; measured_times : OPTIONAL Monitored_time; its_tool_status : LIST OF tool_status; END_ENTITY; ENTITY tool_status; Tool_identifier identifier; Tool_number OPTIONAL label; Tool_life time; Percentage_used_at_start ratio; Roughing_tool OPTIONAL Boolean; END_ENTITY ENTITY monitored_Signal Label : OPTIONAL description Source: OPTIONAL identifier its_Results: LIST OF [1:?] Monitored_results END_ENTITY; ENTITY monitored_Time SUBTYPE_OF results; Its_times: bounded_curve END_ENTITY; TYPE monitored_results SELECT ( Same_basis_results, different_basis_results, discrete_results) END_TYPE; // if workingstep is missing then between them ENTITY monitored_Results SUPERTYPE OF (same_basis_results, monitored_time Discrete_results, different_basis_results); Its_id : identifier; Its_path: OPTIONAL tool_path; Its_workingstep: OPTIONAL workingstep Its_workplan: workplan; END_ENTITY; ENTITY same_basis_Results SUBTYPE_OF Monitored_results; Results: bounded_curve END_ENTITY; // montioring system is expected to encode time or position in the results curve ENTITY different_basis_Monitored_Results SUBTYPE_OF results; Results: bounded_curve END_ENTITY; ENTITY discrete_result SUBTYPE_OF results; Value: STRING; Time: OPTIONAL double; Postion: OPTIONAL double END_ENTITY;