Integrated generic resource: Fundamentals of product description and support | ISO 10303-41:2021(E) © ISO |
EXAMPLE The identification of types of qualifications and the definition of various kinds of relationship between types of qualifications are examples of generic data relating to types of qualification.
This clause defines the information requirements to which implementations shall conform using the EXPRESS language as defined in ISO 10303-11. The following EXPRESS declaration begins the qualifications_schema and identifies the necessary external references.Each implementation of an AP that uses this schema and that encodes entity names shall use the encoding specified in Annex A. Each reference to this schema in an open system shall use the identifier encoding specified in Annex B. This schema is illustrated in Annex D using the EXPRESS-G notation.
EXPRESS specification:
*)
SCHEMA qualifications_schema;
REFERENCE FROM
support_resource_schema
--
ISO 10303-41
(identifier,
label,
text,
bag_to_set);
(*
NOTE 1 The schemas referenced above are specified in the following parts:
support_resource_schema ISO 10303-41
NOTE 2 See Annex D for a graphical representation of this schema.
EXAMPLE 1 John Smith's driving licence.
EXAMPLE 2 Mary Brown's doctorate entitled "Datamodelling Using EXPRESS2".
NOTE A relationship between a qualification_type object and one or more qualification objects is established by the declaration of a qualification_type_assignment subtype containing a single attribute that references a set of a SELECT type that contains an qualification.
EXPRESS specification:
*)
ENTITY qualification;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
(*
Attribute definitions:
id: the identifier that distinguishes the qualification.
name: the label by which the qualification is known.
description: the text that characterizes the qualification. The value of this attribute need not be specified.
EXPRESS specification:
*)
ENTITY qualification_relationship;
id : identifier;
name : label;
description :
OPTIONAL
text;
relating_qualification : qualification;
related_qualification : qualification;
END_ENTITY;
(*
Attribute definitions:
id: the identifier that distinguishes the qualification_relationship.
name: the label by which the qualification_relationship is known
description: the text that characterizes the qualification_relationship. The value of this attribute need not be specified.
relating_qualification: one of the instances of qualification that is a part of the relationship.
NOTE 1 The meaning of this attribute can be defined in the annotated EXPRESS schemas that use or specialize this entity, or in an agreement of common understanding between the partners sharing this information.
related_qualification: the other instance of qualification that is a part of the relationship. If one element of the relationship is dependent upon the other, this attribute shall be the dependent one.
NOTE 2 the meaning of this attribute can be defined in the annotated EXPRESS schemas that use or specialize this entity, or in an agreement of common understanding between the partners sharing this information.
EXAMPLE 1 A driving licence.
EXAMPLE 2 A university degree.
NOTE A relationship between a qualification_type object and one or more qualification objects is established by the declaration of an qualification_type_assignment subtype containing a single attribute that references a set of a SELECT type that contains a qualification.
EXPRESS specification:
*)
ENTITY qualification_type;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
(*
Attribute definitions:
id: the identifier that distinguishes the qualification_type.
name: the label by which the qualification_type is known.
description: the text that characterizes the qualification_type. The value of this attribute need not be specified.
EXPRESS specification:
*)
ENTITY qualification_type_relationship;
id : identifier;
name : label;
description :
OPTIONAL
text;
relating_qualification_type : qualification_type;
related_qualification_type : qualification_type;
END_ENTITY;
(*
Attribute definitions:
id: the identifier that distinguishes the qualification_type_relationship.
name: the label by which the qualification_type_relationship is known.
description: the text that characterizes the qualification_type_relationship. The value of this attribute need not be specified.
relating_qualification_type: one of the instances of qualification_type that is a part of the relationship.
NOTE 1 The meaning of this attribute can be defined in the annotated EXPRESS schemas that use or specialize this entity, or in an agreement of common understanding between the partners sharing this information.
related_qualification_type: the other instance of qualification_type that is a part of the relationship. If one element of the relationship is dependent upon the other, this attribute shall be the dependent one.
NOTE 2 The meaning of this attribute can be defined in the annotated EXPRESS schemas that use or specialize this entity, or in an agreement of common understanding between the partners sharing this information.
The function returns TRUE if no cycle has been detected. Otherwise it returns FALSE.
NOTE 1 The algorithm of the function is explained in annex E.2.
NOTE 2 This function is not used in this schema. It is defined here because other ISO 10303 integrated resources and application protocols that use the qualification_relationship entity include rules that use this function.
EXPRESS specification:
*)
FUNCTION acyclic_qualification_relationship (relation : qualification_relationship; relatives : SET[0:?] OF qualification; specific_relation : STRING) : BOOLEAN;
LOCAL x : SET OF qualification_relationship; END_LOCAL; IF relation.relating_qualification IN relatives THEN RETURN (FALSE); END_IF; x := QUERY(qual <* bag_to_set(USEDIN(relation.relating_qualification, 'QUALIFICATIONS_SCHEMA.' + 'QUALIFICATION_RELATIONSHIP.' + 'RELATED_QUALIFICATION')) | specific_relation IN TYPEOF(qual)); REPEAT i := 1 TO HIINDEX(x); IF NOT acyclic_qualification_relationship(x[i], relatives + relation.relating_qualification, specific_relation) THEN RETURN (FALSE); END_IF; END_REPEAT; RETURN (TRUE);
END_FUNCTION;
(*
Argument definitions:
relation: (input) the candidate qualification_relationship to be checked.
relatives: (input) the set of instances of the entity data type qualification that the function is searching for in the relating_qualification parameter of the relation argument.
specific_relation: (input) the fully qualified name of a subtype of the qualification_relationship entity.
The function returns TRUE if no cycle has been detected. Otherwise it returns FALSE.
NOTE 1 The algorithm of the function is explained in annex E.2.
NOTE 2 This function is not used in this schema. It is defined here because other ISO 10303 integrated resources and application protocols that use the qualification_type_relationship entity include rules that use this function.
EXPRESS specification:
*)
FUNCTION acyclic_qualification_type_relationship (relation : qualification_type_relationship; relatives : SET[0:?] OF qualification_type; specific_relation : STRING) : BOOLEAN;
LOCAL x : SET OF qualification_type_relationship; END_LOCAL; IF relation.relating_qualification_type IN relatives THEN RETURN (FALSE); END_IF; x := QUERY(qultyp <* bag_to_set(USEDIN(relation.relating_qualification_type, 'QUALIFICATIONS_SCHEMA.' + 'QUALIFICATION_TYPE_RELATIONSHIP.' + 'RELATED_QUALIFICATION_TYPE')) | specific_relation IN TYPEOF(qultyp)); REPEAT i := 1 TO HIINDEX(x); IF NOT acyclic_qualification_type_relationship(x[i], relatives + relation.relating_qualification_type, specific_relation) THEN RETURN (FALSE); END_IF; END_REPEAT; RETURN (TRUE);
END_FUNCTION;
(*
Argument definitions:
relation: (input) the candidate qualification_type_relationship to be checked.
relatives: (input) the set of instances of the entity data type qualification_type that the function is searching for in the relating_qualification_type parameter of the relation argument.
specific_relation: (input) the fully qualified name of a subtype of the qualification_type_relationship entity.
*)
END_SCHEMA; -- qualifications_schema
(*
© ISO 2021 — All rights reserved