Integrated generic resource: Fundamentals of product description and support | ISO 10303-41:2021(E) © ISO |
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 person_organization_schema;
REFERENCE FROM
basic_attribute_schema
--
ISO 10303-41
(description_attribute,
description_attribute_select,
generic_attribute,
generic_attribute_assignment,
generic_attribute_list_assignment,
generic_attribute_list_select,
generic_attribute_select,
get_description_value,
get_id_value,
get_name_value,
get_role,
id_attribute,
id_attribute_select,
name_attribute,
name_attribute_select,
object_role,
role_association);
REFERENCE FROM
support_resource_schema
--
ISO 10303-41
(bag_to_set,
identifier,
label,
text);
(*
NOTE 1 The schemas referenced above are specified in the following parts:
basic_attribute_schema ISO 10303-41 support_resource_schema ISO 10303-41
NOTE 2 See Annex D for a graphical representation of this schema.
EXPRESS specification:
*)
TYPE
person_organization_select
=
SELECT
(person,
organization,
person_and_organization);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
pos_description_attribute_select
=
SELECT
BASED_ON
description_attribute_select
WITH
(person_and_organization_role,
person_and_organization,
person_role,
organization_role,
organizational_project);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
pos_generic_attribute_list_select
=
SELECT
BASED_ON
generic_attribute_list_select
WITH
(address,
person);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
pos_generic_attribute_select
=
SELECT
BASED_ON
generic_attribute_select
WITH
(address);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
pos_id_attribute_select
=
SELECT
BASED_ON
id_attribute_select
WITH
(address,
organizational_project);
END_TYPE;
(*
EXPRESS specification:
*)
TYPE
pos_name_attribute_select
=
SELECT
BASED_ON
name_attribute_select
WITH
(address,
person_and_organization);
END_TYPE;
(*
NOTE 1 In addition to the attributes defined in address additional generic attributes may be assigned using generic_attribute_assignment.
EXAMPLE 1 A generic attribute named "LinkedIn" with a value of "Fred.Bloggs" could be used to add a LinkedIn account to address information.
EXPRESS specification:
*)
ENTITY address;
internal_location :
OPTIONAL
label;
street_number :
OPTIONAL
label;
street :
OPTIONAL
label;
postal_box :
OPTIONAL
label;
town :
OPTIONAL
label;
region :
OPTIONAL
label;
postal_code :
OPTIONAL
label;
country :
OPTIONAL
label;
facsimile_number :
OPTIONAL
label;
telephone_number :
OPTIONAL
label;
electronic_mail_address :
OPTIONAL
label;
telex_number :
OPTIONAL
label;
DERIVE
name : label := get_name_value(SELF);
url : identifier := get_id_value(SELF);
WHERE
WR1: EXISTS(internal_location) OR EXISTS(street_number) OR EXISTS(street) OR EXISTS(postal_box) OR EXISTS(town) OR EXISTS(region)
OR EXISTS(postal_code) OR EXISTS(country) OR EXISTS(facsimile_number) OR EXISTS(telephone_number) OR EXISTS(electronic_mail_address)
OR EXISTS(telex_number);
END_ENTITY;
(*
Attribute definitions:
internal_location: an organization-defined address for internal mail delivery. The value of this attribute need not be specified.
street_number: the number of a location on a street. The value of this attribute need not be specified.
street: the name of a street. The value of this attribute need not be specified.
postal_box: the number of a postal box. The value of this attribute need not be specified.
town: the name of a town. The value of this attribute need not be specified.
region: the name of a region. The value of this attribute need not be specified.
EXAMPLE 2 The counties of Great Britain and the states of the United States of America are examples of regions.
postal_code: the code that is used by the country's postal service. The value of this attribute need not be specified.
country: the name of a country. The value of this attribute need not be specified.
facsimile_number: the number at which facsimiles may be received. The value of this attribute need not be specified.
telephone_number: the number at which telephone calls may be received. The value of this attribute need not be specified.
electronic_mail_address: the electronic address at which electronic mail may be received. The value of this attribute need not be specified.
telex_number: the number at which telex messages may be received. The value of this attribute need not be specified.
name: the label that specifies the name of the location identified by the address.
EXAMPLE 3 "White House", "Buckingham Palace", "Kremlin".
url: the text that specifies the uniform resource locator associated with the address.
NOTE 2 The format of uniform resource locators is defined in IETF RFC 1738 [4].
EXAMPLE 4 URLs are used to identify items such as world wide web sites and file transfer protocol (FTP) servers.
Formal propositions:
WR1: At least one of the attributes shall have a value.
NOTE 3 A template for constraining the population of the entity data types defined in the basic_attribute_schema is described in annex E.
EXPRESS specification:
*)
ENTITY organization;
id :
OPTIONAL
identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
(*
Attribute definitions:
id: the identifier that distinguishes the organization. The value of this attribute need not be specified.
NOTE The context in which id is used as a discriminating characteristic can be identified in an annotated Express schema that uses or specializes this entity, or by default, in an agreement of common understanding between partners sharing this information.
name: the label by which the organization is known.
description: the text that characterizes the organization. The value of this attribute need not be specified.
EXAMPLE Each department of an enterprise, and the enterprise itself, may be regarded as individual organizations. The fact that the departments are a part of the whole enterprise may be represented using this entity.
NOTE 1 The role of organization_relationship can be defined in the annotated EXPRESS schemas that use or specialize this entity, or by default, in an agreement of common understanding between the partners sharing this information.
NOTE 2 Relationships represented using this entity may be parent child relationship. Annotated EXPRESS schemas that use or specialize this entity specify whether or not the relationship is directed.
NOTE 3 This entity, together with the organization entity, is based on the relationship template that is described in annex E.3.
EXPRESS specification:
*)
ENTITY organization_relationship;
name : label;
description :
OPTIONAL
text;
relating_organization : organization;
related_organization : organization;
END_ENTITY;
(*
Attribute definitions:
name: the label by which the organization_relationship is known.
description: the text that characterizes the organization_relationship. The value of the attribute need not be specified.
relating_organization: one of the instances of organization that is a part of the relationship.
NOTE 4 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_organization: the other instance of organization 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 5 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.
EXPRESS specification:
*)
ENTITY organization_role;
name : label;
DERIVE
description : text := get_description_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'BASIC_ATTRIBUTE_SCHEMA.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY;
(*
Attribute definitions:
name: the label by which the organization_role is known.
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.
description: the text that characterizes the organization_role. The value of the attribute need not be specified.
NOTE 2 This attribute is an upwardly compatible addition to organization_role as specified in ISO 10303-41:1994.
Formal propositions:
WR1: Each organization_role shall be the described_item in at most one description_attribute.
NOTE 3 The description_attribute data type is defined in basic_attribute_schema of this part of ISO 10303.
NOTE 4 A template for constraining the population of the entity data types defined in the basic_attribute_schema is described in annex E.
EXAMPLE A national standards body is a type of organization.
NOTE A relationship between an organization_type object and one or more organization objects is established by the declaration of a subtype of organization_type_assignment that references an organization via its items attribute.
EXPRESS specification:
*)
ENTITY organization_type;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
(*
Attribute definitions:
id: the identifier that distinguishes the organization_type.
name: the label by which the organization_type is known.
description: the text that characterizes the organization_type. The value of this attribute need not be specified.
EXPRESS specification:
*)
ENTITY organization_type_relationship;
id : identifier;
name : label;
description :
OPTIONAL
text;
relating_organization_type : organization_type;
related_organization_type : organization_type;
END_ENTITY;
(*
Attribute definitions:
id: the identifier that distinguishes the organization_type_relationship.
name: the label by which the organization_type_relationship is known.
description: the text that characterizes the organization_type_relationship. The value of this attribute need not be specified.
relating_organization_type: one of the instances of organization_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_organization_type: the other instance of organization_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.
EXPRESS specification:
*)
ENTITY organizational_address
SUBTYPE OF (address);
organizations : SET[1:?] OF organization;
description :
OPTIONAL
text;
END_ENTITY;
(*
Attribute definitions:
organizations: the organizations located at the address.
description: the text that characterizes the organizational_address. The value of the attribute need not be specified.
EXPRESS specification:
*)
ENTITY organizational_project;
name : label;
description :
OPTIONAL
text;
responsible_organizations : SET[1:?] OF organization;
DERIVE
id : identifier := get_id_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'BASIC_ATTRIBUTE_SCHEMA.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1;
END_ENTITY;
(*
Attribute definitions:
name: the label by which the organizational_project is known.
description: the text that characterizes the organizational_project. The value of the attribute need not be specified.
responsible_organizations: the organization entity data types indicating who has project oversight.
id: the identifier that distinguishes the organizational_project.
NOTE 1 This attribute is an upwardly compatible addition to organizational_project as specified in ISO 10303-41:1994.
NOTE 2 The context in which id is used as a discriminating characteristic can be identified in an annotated Express schema that uses or specializes this entity, or by default, in an agreement of common understanding between partners sharing this information.
Formal propositions:
WR1: Each organizational_project shall be the identified_item in at most one id_attribute.
NOTE 3 The id_attribute data type is defined in basic_attribute_schema of this part of ISO 10303.
NOTE 4 A template for constraining the population of the entity data types defined in the basic_attribute_schema is described in annex E.
NOTE 1 The role of organizational_project_relationship can be defined in the annotated EXPRESS schemas that use or specialize this entity, or by default, in an agreement of common understanding between the partners sharing this information.
NOTE 2 Relationships represented using this entity may be parent child relationship. Annotated EXPRESS schemas that use or specialize this entity specify whether or not the relationship is directed.
NOTE 3 This entity, together with the organizational_project entity, is based on the relationship template that is described in annex E.3.
EXPRESS specification:
*)
ENTITY organizational_project_relationship;
name : label;
description :
OPTIONAL
text;
relating_organizational_project : organizational_project;
related_organizational_project : organizational_project;
END_ENTITY;
(*
Attribute definitions:
name: the label by which the organizational_project_relationship is known.
description: the text that characterizes the organizational_project_relationship. The value of the attribute need not be specified.
relating_organizational_project: one of the instances of organizational_project that is a part of the relationship.
NOTE 4 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_organizational_project: the other instance of organizational_project that is a part of the relationship. If one element of the relationship is dependent up on the other, this attribute shall be the dependent one.
NOTE 5 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.
NOTE 1 In addition to the attributes defined in person additional lists of attributes may be assigned using generic_attribute_list_assignment.
EXAMPLE 1 For example a generic attribute list named "Previous name" with a value of ["Honourific":"Mr", "Given name":"Fred", "Family Name":"Blogs"] may be assigned.
EXPRESS specification:
*)
ENTITY person;
id : identifier;
last_name :
OPTIONAL
label;
first_name :
OPTIONAL
label;
middle_names :
OPTIONAL
LIST[1:?] OF label;
prefix_titles :
OPTIONAL
LIST[1:?] OF label;
suffix_titles :
OPTIONAL
LIST[1:?] OF label;
WHERE
WR1: EXISTS(last_name) OR EXISTS(first_name);
END_ENTITY;
(*
Attribute definitions:
id: the identifier that distinguishes the person.
NOTE 2 The identification of a person is usually context dependent.
NOTE 3 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 2 In the USA a person's id would be his or her social security number whereas in the United Kingdom it would be his or her national insurance number.
NOTE 4 The context in which id is used as a discriminating characteristic can be identified in an annotated Express schema that uses or specializes this entity, or by default, in an agreement of common understanding between partners sharing this information.
last_name: the person's surname. The value of this attribute need not be specified.
first_name: the first element of the person's list of forenames. The value of this attribute need not be specified.
middle_names: the person's other forenames, if there are any. The value of this attribute need not be specified.
prefix_titles: the text that specifies the person's social or professional standing and appear before his or her names. The value of this attribute need not be specified.
suffix_titles: the text that specifies the person's social or professional standing and appear after his or her names. The value of this attribute need not be specified.
Formal propositions:
WR1: Either the last name, first name or the last and first name shall be defined.
EXPRESS specification:
*)
ENTITY person_and_organization;
the_person : person;
the_organization : organization;
DERIVE
name : label := get_name_value(SELF);
description : text := get_description_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'BASIC_ATTRIBUTE_SCHEMA.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1;
WR2: SIZEOF(USEDIN(SELF, 'BASIC_ATTRIBUTE_SCHEMA.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY;
(*
Attribute definitions:
the_person: the instance of the person entity data type who is related to an instance of organization.
the_organization: the instance of the organization entity data type to which the instance of person is related.
name: the label by which the person_and_organization is known.
NOTE 1 This attribute is an upwardly compatible addition to person_and_organization as specified in ISO 10303-41:1994.
description: the text that characterizes the person_and_organization.
NOTE 2 This attribute is an upwardly compatible addition to person_and_organization as specified in ISO 10303-41:1994.
Formal propositions:
WR1: Each person_and_organization shall be the described_item in at most one description_attribute.
NOTE 3 The description_attribute data type is defined in basic_attribute_schema of this part of ISO 10303.
WR2: Each person_and_organization shall be the named_item in at most one name_attribute.
NOTE 4 The name_attribute data type is defined in basic_attribute_schema of this part of ISO 10303.
NOTE 5 A template for constraining the population of the entity data types defined in the basic_attribute_schema is described in annex E.
EXAMPLE The role of a person could be 'buyer' in the context of the organization where he/she works and it could be 'customer' in the context of the organization from which he/she purchases goods.
EXPRESS specification:
*)
ENTITY person_and_organization_role;
name : label;
DERIVE
description : text := get_description_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'BASIC_ATTRIBUTE_SCHEMA.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY;
(*
Attribute definitions:
name: the label by which the person_and_organization_role is known.
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.
description: the text that characterizes the person_and_organization_role.
NOTE 2 This attribute is an upwardly compatible addition to person_and_organization_role as specified in ISO 10303-41:1994.
Formal propositions:
WR1: Each person_and_organization_role shall be the described_item in at most one description_attribute.
NOTE 3 The description_attribute data type is defined in basic_attribute_schema of this part of ISO 10303.
NOTE 4 A template for constraining the population of the entity data types defined in the basic_attribute_schema is described in annex E.
EXPRESS specification:
*)
ENTITY person_role;
name : label;
DERIVE
description : text := get_description_value(SELF);
WHERE
WR1: SIZEOF(USEDIN(SELF, 'BASIC_ATTRIBUTE_SCHEMA.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1;
END_ENTITY;
(*
Attribute definitions:
name: the label by which the person_role is known.
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.
description: the label that characterizes the person_role.
NOTE 2 This attribute is an upwardly compatible addition to person_role as specified in ISO 10303-41:1994.
Formal propositions:
WR1: Each person_role shall be the described_item in at most one description_attribute.
NOTE 3 The description_attribute data type is defined in basic_attribute_schema of this part of ISO 10303.
NOTE 4 A template for constraining the population of the entity data types defined in the basic_attribute_schema is described in annex E.
EXPRESS specification:
*)
ENTITY person_type;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
(*
Attribute definitions:
id: the identifier that distinguishes the person_type.
name: the label by which the person_type is known.
description: the text that characterizes the person_type. The value of this attribute need not be specified.
EXPRESS specification:
*)
ENTITY person_type_definition;
id : identifier;
name : label;
description :
OPTIONAL
text;
formation : person_type_definition_formation;
END_ENTITY;
(*
Attribute definitions:
id: the identifier that distinguishes the person_type_definition.
name: the label by which the person_type_definition is known.
description: the text that characterizes the person_type_definition. The value of this attribute need not be specified.
formation: the person_type_definition_formation to which the person_type_definition relates.
EXPRESS specification:
*)
ENTITY person_type_definition_formation;
id : identifier;
name : label;
description :
OPTIONAL
text;
of_person_type : person_type;
END_ENTITY;
(*
Attribute definitions:
id: the identifier that distinguishes the person_type_definition_formation.
name: the label by which the person_type_definition_formation is known.
description: the text that characterizes the person_type_definition_formation. The value of this attribute need not be specified.
of_person_type: the person_type to which the person_type_definition_formation belongs.
EXPRESS specification:
*)
ENTITY person_type_definition_relationship;
id : identifier;
name : label;
description :
OPTIONAL
text;
relating_person_type_definition : person_type_definition;
related_person_type_definition : person_type_definition;
END_ENTITY;
(*
Attribute definitions:
id: the identifier that distinguishes the person_type_definition_relationship.
name: the label by which the person_type_definition_relationship is known.
description: the text that characterizes the person_type_definition_relationship. The value of this attribute need not be specified.
relating_person_type_definition: one of the instances of person_type_definition 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_person_type_definition: the other instance of person_type_definition 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.
EXPRESS specification:
*)
ENTITY personal_address
SUBTYPE OF (address);
people : SET[1:?] OF person;
description :
OPTIONAL
text;
END_ENTITY;
(*
Attribute definitions:
people: the people who reside at the address.
description: the text that characterizes the personal_address. The value of this attribute need not be specified.
EXAMPLE The chairperson of SC4.
EXPRESS specification:
*)
ENTITY position_in_organization;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
(*
Attribute definitions:
id: the identifier that distinguishes the position_in_organization.
name: the label by which the position_in_organization is known.
description: the text that characterizes the position_in_organization. The value of this attribute need not be specified.
EXPRESS specification:
*)
ENTITY position_in_organization_relationship;
id : identifier;
name : label;
description :
OPTIONAL
text;
relating_position_in_organization : position_in_organization;
related_position_in_organization : position_in_organization;
END_ENTITY;
(*
Attribute definitions:
id: the identifier that distinguishes the position_in_organization_relationship.
name: the label by which the position_in_organization_relationship is known.
description: the text that characterizes the position_in_organization_relationship. The value of this attribute need not be specified.
relating_position_in_organization: one of the instances of position_in_organization 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_position_in_organization: the other instance of position_in_organization 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 Technical Director is a position in a company.
NOTE A relationship between a position_in_organization_type object and one or more position_in_organization objects is established by the declaration of a subtype of position_in_organization_type_assignment that references a position_in_organization via its items attribute.
EXPRESS specification:
*)
ENTITY position_in_organization_type;
id : identifier;
name : label;
description :
OPTIONAL
text;
END_ENTITY;
(*
Attribute definitions:
id: the identifier that distinguishes the position_in_organization_type.
name: the label by which the position_in_organization_type is known.
description: the text that characterizes the position_in_organization_type. The value of this attribute need not be specified.
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 organization_relationship entity include rules that use this function.
EXPRESS specification:
*)
FUNCTION acyclic_organization_relationship (relation : organization_relationship; relatives : SET[1:?] OF organization; specific_relation : STRING) : BOOLEAN;
LOCAL x : SET OF organization_relationship; END_LOCAL; IF relation.relating_organization IN relatives THEN RETURN (FALSE); END_IF; x := QUERY(org <* bag_to_set(USEDIN(relation.relating_organization, 'PERSON_ORGANIZATION_SCHEMA.' + 'ORGANIZATION_RELATIONSHIP.' + 'RELATED_ORGANIZATION')) | specific_relation IN TYPEOF(org)); REPEAT i := 1 TO HIINDEX(x); IF NOT acyclic_organization_relationship(x[i], relatives + relation.relating_organization, specific_relation) THEN RETURN (FALSE); END_IF; END_REPEAT; RETURN (TRUE);
END_FUNCTION;
(*
Argument definitions:
relation: (input) the candidate organization_relationship to be checked.
relatives: (input) the set of instances of the entity data type organization for which the function is searching in the relating_organization attribute of the relation argument.
specific_relation: (input) the fully qualified name of a subtype of the organization_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 organization_type_relationship entity include rules that use this function.
EXPRESS specification:
*)
FUNCTION acyclic_organization_type_relationship (relation : organization_type_relationship; relatives : SET[0:?] OF organization_type; specific_relation : STRING) : BOOLEAN;
LOCAL x : SET OF organization_type_relationship; END_LOCAL; IF relation.relating_organization_type IN relatives THEN RETURN (FALSE); END_IF; x := QUERY(orgtyp <* bag_to_set(USEDIN(relation.relating_organization_type, 'PERSON_ORGANIZATION_SCHEMA.' + 'ORGANIZATION_TYPE_RELATIONSHIP.' + 'RELATED_ORGANIZATION_TYPE')) | specific_relation IN TYPEOF(orgtyp)); REPEAT i := 1 TO HIINDEX(x); IF NOT acyclic_organization_type_relationship(x[i], relatives + relation.relating_organization_type, specific_relation) THEN RETURN (FALSE); END_IF; END_REPEAT; RETURN (TRUE);
END_FUNCTION;
(*
Argument definitions:
relation: (input) the candidate organization_type_relationship to be checked.
relatives: (input) the set of instances of the entity data type organization_type that the function is searching for in the relating_organization_type parameter of the relation argument.
specific_relation: (input) the fully qualified name of a subtype of the organization_type_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 organizational_project_relationship entity include rules that use this function.
EXPRESS specification:
*)
FUNCTION acyclic_organizational_project_relationship (relation : organizational_project_relationship; relatives : SET[1:?] OF organizational_project; specific_relation : STRING) : BOOLEAN;
LOCAL x : SET OF organizational_project_relationship; END_LOCAL; IF relation.relating_organizational_project IN relatives THEN RETURN (FALSE); END_IF; x := QUERY(op <* bag_to_set(USEDIN(relation.relating_organizational_project, 'PERSON_ORGANIZATION_SCHEMA.' + 'ORGANIZATIONAL_PROJECT_RELATIONSHIP.' + 'RELATED_ORGANIZATIONAL_PROJECT')) | specific_relation IN TYPEOF(op)); REPEAT i := 1 TO HIINDEX(x); IF NOT acyclic_organizational_project_relationship(x[i], relatives + relation.relating_organizational_project, specific_relation) THEN RETURN (FALSE); END_IF; END_REPEAT; RETURN (TRUE);
END_FUNCTION;
(*
Argument definitions:
relation: (input) the candidate organizational_project_relationship to be checked.
relatives: (input) the set of instances of the entity data type organizational_project for which the function is searching in the relating_organizational_project attribute of the relation argument.
specific_relation: (input) the fully qualified entity name of a type of organizational_project_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 person_type_definition_relationship entity include rules that use this function.
EXPRESS specification:
*)
FUNCTION acyclic_person_type_definition_relationship (relation : person_type_definition_relationship; relatives : SET[0:?] OF person_type_definition; specific_relation : STRING) : BOOLEAN;
LOCAL x : SET OF person_type_definition_relationship; END_LOCAL; IF relation.relating_person_type_definition IN relatives THEN RETURN (FALSE); END_IF; x := QUERY(ptdef <* bag_to_set(USEDIN(relation.relating_person_type_definition, 'PERSON_ORGANIZATION_SCHEMA.' + 'PERSON_TYPE_DEFINITION_RELATIONSHIP.' + 'RELATED_PERSON_TYPE_DEFINITION')) | specific_relation IN TYPEOF(ptdef)); REPEAT i := 1 TO HIINDEX(x); IF NOT acyclic_person_type_definition_relationship(x[i], relatives + relation.relating_person_type_definition, specific_relation) THEN RETURN (FALSE); END_IF; END_REPEAT; RETURN (TRUE);
END_FUNCTION;
(*
Argument definitions:
relation: (input) the candidate person_type_definition_relationship to be checked.
relatives: (input) the set of instances of the entity data type person_type_definition that the function is searching for in the relating_person_type_definition parameter of the relation argument.
specific_relation: (input) the fully qualified name of a subtype of the person_type_definition_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 position_in_organization_relationship entity include rules that use this function.
EXPRESS specification:
*)
FUNCTION acyclic_position_in_organization_relationship (relation : position_in_organization_relationship; relatives : SET[0:?] OF position_in_organization; specific_relation : STRING) : BOOLEAN;
LOCAL x : SET OF position_in_organization_relationship; END_LOCAL; IF relation.relating_position_in_organization IN relatives THEN RETURN (FALSE); END_IF; x := QUERY(piorg <* bag_to_set(USEDIN(relation.relating_position_in_organization, 'PERSON_ORGANIZATION_SCHEMA.' + 'POSITION_IN_ORGANIZATION_RELATIONSHIP.' + 'RELATED_POSITION_IN_ORGANIZATION')) | specific_relation IN TYPEOF(piorg)); REPEAT i := 1 TO HIINDEX(x); IF NOT acyclic_position_in_organization_relationship(x[i], relatives + relation.relating_position_in_organization, specific_relation) THEN RETURN (FALSE); END_IF; END_REPEAT; RETURN (TRUE);
END_FUNCTION;
(*
Argument definitions:
relation: (input) the candidate position_in_organization_relationship to be checked.
relatives: (input) the set of instances of the entity data type position_in_organization that the function is searching for in the relating_position_in_organization parameter of the relation argument.
specific_relation: (input) the fully qualified name of a subtype of the position_in_organization_relationship entity.
*)
END_SCHEMA; -- person_organization_schema
(*
© ISO 2021 — All rights reserved