Source : ISO 10303-505
SCHEMA aic_drawing_structure_and_administration;
         USE FROM
         approval_schema   -- ISO 10303-41
  (approval,
           
         approval_date_time,
           
         approval_person_organization);
         
         USE FROM
         date_time_schema   -- ISO 10303-41
  (calendar_date);
         
         USE FROM
         drawing_definition_schema   -- ISO 10303-101
  (draughting_title,
           
         drawing_revision,
           
         drawing_sheet_revision,
           
         drawing_sheet_revision_usage);
         
         USE FROM
         geometry_schema   -- ISO 10303-42
  (axis2_placement_2d);
         
         USE FROM
         management_resources_schema   -- ISO 10303-41
  (approval_assignment,
           
         contract_assignment,
           
         document_reference,
           
         organization_assignment,
           
         person_and_organization_assignment,
           
         person_assignment,
           
         security_classification_assignment);
         
         USE FROM
         person_organization_schema   -- ISO 10303-41
  (organizational_address,
           
         personal_address);
         
         USE FROM
         presentation_definition_schema   -- ISO 10303-46
  (annotation_occurrence);
         
         USE FROM
         presentation_organization_schema   -- ISO 10303-46
  (camera_image,
           
         presentation_size,
           
         presentation_view,
           
         presented_item,
           
         presented_item_representation);
         
         USE FROM
         product_definition_schema   -- ISO 10303-41
  (product,
           
         product_definition,
           
         product_definition_formation);
         
TYPE approved_item =
         
         
         SELECT
            (drawing_revision, 
    drawing_sheet_revision);
         END_TYPE; 
         
TYPE classified_item =
         
         
         SELECT
            (drawing_revision, 
    drawing_sheet_revision);
         END_TYPE; 
         
TYPE contracted_item =
         
         
         SELECT
            (drawing_revision);
         END_TYPE; 
         
TYPE draughting_organization_item =
         
         
         SELECT
            (product_definition_formation, 
    drawing_revision, 
    drawing_sheet_revision);
         END_TYPE; 
         
TYPE draughting_presented_item_select =
         
         
         SELECT
            (product_definition_formation);
         END_TYPE; 
         
TYPE specified_item =
         
         
         SELECT
            (drawing_revision);
         END_TYPE; 
         
ENTITY draughting_approval_assignment
           SUBTYPE OF (approval_assignment);
           approved_items : SET[1:?] OF approved_item;
WHERE
           WR1: SIZEOF (QUERY (item <* approved_items |'AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.DRAWING_REVISION' IN TYPEOF (item)))<=1;
         
         END_ENTITY;
ENTITY draughting_contract_assignment
           SUBTYPE OF (contract_assignment);
           items : SET[1:?] OF contracted_item;
         
         END_ENTITY;
ENTITY draughting_drawing_revision
           SUBTYPE OF (drawing_revision);
WHERE
           WR1: (SIZEOF (USEDIN (SELF,'AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.AREA_IN_SET.IN_SET')) >= 1) AND(SIZEOF (QUERY (ais <*
            USEDIN (SELF,'AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.AREA_IN_SET.IN_SET') | NOT ('AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.DRAWING_SHEET_REVISION'
            IN TYPEOF (ais.area)))) = 0);
           WR2: SIZEOF (QUERY (app_ass <* USEDIN (SELF,'AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.' +'DRAUGHTING_APPROVAL_ASSIGNMENT.APPROVED_ITEMS')
            | NOT (SIZEOF (USEDIN (app_ass.assigned_approval,'AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.' +'APPROVAL_DATE_TIME.DATED_APPROVAL'))
            = 1))) = 0;
           WR3: SIZEOF (QUERY (ais <* USEDIN (SELF,'AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.AREA_IN_SET.IN_SET') | NOT (SIZEOF (QUERY
            (app_ass <* USEDIN (ais.area,'AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.' +'DRAUGHTING_APPROVAL_ASSIGNMENT.APPROVED_ITEMS')
            | NOT (SIZEOF (USEDIN (app_ass.assigned_approval,'AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.' +'APPROVAL_DATE_TIME.DATED_APPROVAL'))
            = 1))) = 0))) = 0;
           WR4: SIZEOF (QUERY (app_ass <* USEDIN (SELF,'AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.' +'DRAUGHTING_APPROVAL_ASSIGNMENT.APPROVED_ITEMS')
            | NOT (SIZEOF (USEDIN (app_ass.assigned_approval,'AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.' +'APPROVAL_PERSON_ORGANIZATION.AUTHORIZED_APPROVAL'))
            >= 1))) = 0;
           WR5: SIZEOF (QUERY (ais <* USEDIN (SELF,'AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.AREA_IN_SET.IN_SET') | NOT (SIZEOF (QUERY
            (app_ass <* USEDIN (ais.area,'AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.' +'DRAUGHTING_APPROVAL_ASSIGNMENT.APPROVED_ITEMS')
            | NOT (SIZEOF (USEDIN (app_ass.assigned_approval,'AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.' +'APPROVAL_PERSON_ORGANIZATION.AUTHORIZED_APPROVAL'))
            >= 1))) = 0))) = 0;
           WR6: SIZEOF (USEDIN (SELF, 'AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.' +'DRAUGHTING_TITLE.ITEMS')) <= 1;
           WR7: SIZEOF (QUERY (ais <* USEDIN (SELF,'AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.AREA_IN_SET.IN_SET') | NOT (SIZEOF (USEDIN
            (ais.area,'AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.' +'DRAUGHTING_TITLE.ITEMS')) <= 1))) = 0;
           WR8: SIZEOF (QUERY (ais <* USEDIN (SELF,'AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.AREA_IN_SET.IN_SET') | NOT (SIZEOF (QUERY
            (item <* ais.area.items | NOT (SIZEOF (TYPEOF(item) *['AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.STYLED_ITEM','AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.MAPPED_ITEM','AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.AXIS2_PLACEMENT','AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.PLANAR_BOX'])
            = 1))) = 0))) = 0;
           WR9: SIZEOF (QUERY (ais <* USEDIN (SELF,'AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.AREA_IN_SET.IN_SET') | NOT (SIZEOF (QUERY
            (item <* ais.area.items |(SIZEOF (TYPEOF(item) *['AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.STYLED_ITEM','AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.MAPPED_ITEM'])
            = 1))) > 0))) = 0;
           WR10: SIZEOF (QUERY (ais <* USEDIN (SELF,'AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.AREA_IN_SET.IN_SET') | NOT (SIZEOF (QUERY
            (p_b <* QUERY (item <* ais.area.items |('AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.PLANAR_BOX' IN TYPEOF(item))) | NOT (SIZEOF
            (USEDIN (p_b, 'AIC_DRAWING_STRUCTURE_AND_' +'ADMINISTRATION.PRESENTATION_SIZE.SIZE')) = 1))) = 0))) = 0;
           WR11: SIZEOF (QUERY (ais <* USEDIN (SELF,'AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.AREA_IN_SET.IN_SET') | NOT (SIZEOF (QUERY
            (mi <* QUERY (item <* ais.area.items |('AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.MAPPED_ITEM' IN TYPEOF(item))) | NOT ('AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.PRESENTATION_VIEW'
            IN TYPEOF(mi.mapping_source.mapped_representation)))) = 0))) = 0;
           WR12: SIZEOF (QUERY (ais <* USEDIN (SELF,'AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.AREA_IN_SET.IN_SET') | NOT (SIZEOF (QUERY
            (a2p <* QUERY (item <* ais.area.items |('AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.AXIS2_PLACEMENT' IN TYPEOF(item))) | NOT
            (SIZEOF (USEDIN (a2p,'AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.' +'MAPPED_ITEM.MAPPING_TARGET')) > 0))) = 0))) = 0;
           WR13: SIZEOF (QUERY (ais <* USEDIN (SELF,'AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.AREA_IN_SET.IN_SET') | NOT (SIZEOF (ais.area.context_of_items.
            representations_in_context) = 1))) = 0;
           WR14: SIZEOF (QUERY (ais <* USEDIN (SELF,'AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.AREA_IN_SET.IN_SET') | NOT (SIZEOF (QUERY
            (mi <* QUERY (item <* ais.area.items |('AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.MAPPED_ITEM' IN TYPEOF(item))) | NOT (SIZEOF
            (USEDIN (mi.mapping_source.mapped_representation,'AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.' +'REPRESENTATION_MAP.MAPPED_REPRESENTATION'))
            = 1))) = 0))) = 0;
           WR15: SIZEOF (QUERY (ais <* USEDIN (SELF,'AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.AREA_IN_SET.IN_SET') | NOT (SIZEOF (QUERY
            (mi <* QUERY (item <* ais.area.items |('AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.MAPPED_ITEM' IN TYPEOF(item))) | NOT (SIZEOF
            (QUERY (pv_item <* mi.mapping_source. mapped_representation.items | NOT (SIZEOF (TYPEOF(pv_item) *['AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.'
            +'STYLED_ITEM','AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.CAMERA_IMAGE','AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.' +'AXIS2_PLACEMENT'])
            = 1))) = 0))) = 0))) = 0;
           WR16: SIZEOF (QUERY (ais <* USEDIN (SELF,'AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.AREA_IN_SET.IN_SET') | NOT (SIZEOF (QUERY
            (mi <* QUERY (item <* ais.area.items |('AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.MAPPED_ITEM' IN TYPEOF(item))) | NOT (SIZEOF
            (QUERY (pv_item <* mi.mapping_source. mapped_representation.items |('AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.CAMERA_IMAGE'
            IN TYPEOF(pv_item)))) = 1))) = 0))) = 0;
           WR17: SIZEOF (QUERY (ais <* USEDIN (SELF,'AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.AREA_IN_SET.IN_SET') | NOT (SIZEOF (QUERY
            (mi <* QUERY (item <* ais.area.items |('AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.MAPPED_ITEM' IN TYPEOF(item))) | NOT (SIZEOF
            (QUERY (a2p <* QUERY (pv_item <* mi.mapping_source. mapped_representation.items |('AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.AXIS2_PLACEMENT'
            IN TYPEOF(pv_item))) |('AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.' +'REPRESENTATION_MAP.MAPPING_SOURCE' IN ROLESOF (a2p))))
            = 1))) = 0))) = 0;
           WR18: SIZEOF (QUERY (ais <* USEDIN (SELF,'AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.AREA_IN_SET.IN_SET') | NOT (SIZEOF (QUERY
            (mi <* QUERY (item <* ais.area.items |('AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.MAPPED_ITEM' IN TYPEOF(item))) | NOT (SIZEOF
            (mi.mapping_source. mapped_representation.context_of_items. representations_in_context) = 1))) = 0))) = 0;
         
         END_ENTITY;
ENTITY draughting_organization_assignment
           SUBTYPE OF (organization_assignment);
           assigned_items : SET[1:?] OF draughting_organization_item;
         
         END_ENTITY;
ENTITY draughting_person_and_organization_assignment
           SUBTYPE OF (person_and_organization_assignment);
           assigned_items : SET[1:?] OF draughting_organization_item;
         
         END_ENTITY;
ENTITY draughting_person_assignment
           SUBTYPE OF (person_assignment);
           assigned_items : SET[1:?] OF draughting_organization_item;
         
         END_ENTITY;
ENTITY draughting_presented_item
           SUBTYPE OF (presented_item);
           items : SET[1:?] OF draughting_presented_item_select;
WHERE
           WR1: SIZEOF (QUERY (pir <* USEDIN (SELF,'AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.' +'PRESENTED_ITEM_REPRESENTATION.ITEM')
            | NOT ('AIC_DRAWING_STRUCTURE_AND_ADMINISTRATION.DRAWING_REVISION' IN TYPEOF (pir.presentation)))) = 0;
         
         END_ENTITY;
ENTITY draughting_security_classification_assignment
           SUBTYPE OF (security_classification_assignment);
           assigned_items : SET[1:?] OF classified_item;
         
         END_ENTITY;
ENTITY draughting_specification_reference
           SUBTYPE OF (document_reference);
           specified_items : SET[1:?] OF specified_item;
WHERE
           WR1: (SELF.assigned_document.kind.product_data_type ='draughting specification');
         
         END_ENTITY;
         END_SCHEMA;  -- aic_drawing_structure_and_administration