Source : ISO 10303-44
SCHEMA product_structure_schema;
REFERENCE FROM
product_definition_schema -- ISO 10303-41
(product,
product_definition,
product_definition_relationship,
acyclic_product_definition_relationship);
REFERENCE FROM
measure_schema -- ISO 10303-41
(measure_with_unit);
REFERENCE FROM
support_resource_schema -- ISO 10303-41
(identifier,
label,
text);
ENTITY alternate_product_relationship;
name : label;
definition :
OPTIONAL
text;
alternate : product;
base : product;
basis : text;
UNIQUE
UR1: alternate, base;
WHERE
WR1: alternate :<>: base;
END_ENTITY;
ENTITY assembly_component_usage
SUPERTYPE OF
(ONEOF (next_assembly_usage_occurrence,
specified_higher_usage_occurrence,
promissory_usage_occurrence))
SUBTYPE OF (product_definition_usage);
reference_designator :
OPTIONAL
identifier;
END_ENTITY;
ENTITY assembly_component_usage_substitute;
name : label;
definition :
OPTIONAL
text;
base : assembly_component_usage;
substitute : assembly_component_usage;
UNIQUE
UR1: base, substitute;
WHERE
WR1: base.relating_product_definition :=: substitute.relating_product_definition;
WR2: base :<>: substitute;
END_ENTITY;
ENTITY assembly_component_usage_substitute_with_ranking
SUBTYPE OF (assembly_component_usage_substitute);
ranking : INTEGER;
ranking_rationale : text;
END_ENTITY;
ENTITY make_from_usage_option
SUBTYPE OF (product_definition_usage);
ranking : INTEGER;
ranking_rationale : text;
quantity : measure_with_unit;
WHERE
WR1: (NOT ('NUMBER' IN TYPEOF(quantity.value_component))) OR (quantity.value_component > 0);
END_ENTITY;
ENTITY make_from_usage_option_group;
members : SET[2:?] OF make_from_usage_option;
WHERE
WR1: SIZEOF (QUERY (example <* members | example.related_product_definition :=: members[1].related_product_definition))
=SIZEOF(members);
END_ENTITY;
ENTITY next_assembly_usage_occurrence
SUBTYPE OF (assembly_component_usage);
END_ENTITY;
ENTITY product_definition_occurrence_relationship;
name : label;
description :
OPTIONAL
text;
occurrence : product_definition;
occurrence_usage : assembly_component_usage;
WHERE
WR1: occurrence_usage.relating_product_definition :<>: occurrence;
WR2: occurrence_usage.related_product_definition :<>: occurrence;
WR3: occurrence.formation :=: occurrence_usage.related_product_definition.formation;
END_ENTITY;
ENTITY product_definition_usage
SUPERTYPE OF
(ONEOF (make_from_usage_option,
assembly_component_usage))
SUBTYPE OF (product_definition_relationship);
UNIQUE
UR1: SELF\product_definition_relationship.id, SELF\product_definition_relationship.relating_product_definition, SELF\product_definition_relationship.related_product_definition;
WHERE
WR1: acyclic_product_definition_relationship (SELF, [SELF\product_definition_relationship.related_product_definition],
'PRODUCT_STRUCTURE_SCHEMA.PRODUCT_DEFINITION_USAGE');
END_ENTITY;
ENTITY promissory_usage_occurrence
SUBTYPE OF (assembly_component_usage);
END_ENTITY;
ENTITY quantified_assembly_component_usage
SUBTYPE OF (assembly_component_usage);
quantity : measure_with_unit;
WHERE
WR1: (NOT ('NUMBER' IN TYPEOF(quantity.value_component))) OR (quantity.value_component > 0);
END_ENTITY;
ENTITY specified_higher_usage_occurrence
SUBTYPE OF (assembly_component_usage);
upper_usage : assembly_component_usage;
next_usage : next_assembly_usage_occurrence;
UNIQUE
UR1: upper_usage, next_usage;
WHERE
WR1: SELF :<>: upper_usage;
WR2: SELF\product_definition_relationship.relating_product_definition :=: upper_usage.relating_product_definition;
WR3: SELF\product_definition_relationship.related_product_definition :=: next_usage.related_product_definition;
WR4: (upper_usage.related_product_definition :=: next_usage.relating_product_definition) OR (SIZEOF (QUERY (pdr
<* USEDIN (upper_usage.related_product_definition, 'PRODUCT_DEFINITION_SCHEMA.PRODUCT_DEFINITION_RELATIONSHIP.' +
'RELATED_PRODUCT_DEFINITION') | pdr.relating_product_definition :=: next_usage.relating_product_definition))
= 1);
WR5: SIZEOF (['PRODUCT_STRUCTURE_SCHEMA.NEXT_ASSEMBLY_USAGE_OCCURRENCE', 'PRODUCT_STRUCTURE_SCHEMA.SPECIFIED_HIGHER_USAGE_OCCURRENCE']
* TYPEOF(upper_usage)) = 1;
END_ENTITY;
END_SCHEMA; -- product_structure_schema