전자부품 분류 및 속성체계 :: EXPRESS 사전 스키마 (2)

Posted by 도깨비강종헌
2014. 6. 9. 10:28 전자부품상식

전자부품 분류 및 속성체계 :: EXPRESS 사전 스키마 (2)

 

5 KEA_dictionary_schema
 
KEA_dictionary_schema는 ISO 13584-42 및 IEC 61360의 공통 정보 모델의 주요 부분을 구성하는 IEC 61360-2를 기반으로 이 표준에 적합한 유형으로 수정한 것이다. * )
SCHEMA KEA_dictionary_schema;
( *
 
 
5.1 다른 정보모델의 참조
 
이 절은 KEA_dictionary_schema를 구성하기 위해 필요한 응용객체를 다른 표준정보모델에서 참조하고 있는 관계를 정의한다.
 
* )
REFERENCE FROM support_resource_schema (identifier, label, text);
 (* from ISO 10303-41:STEP Part 41; "Fundamentals of Product
 Description and Support" * )
REFERENCE FROM person_organization_schema (organization, address);
 (* from ISO 10303-41:STEP Part 41; "Fundamentals of Product
 Description and Support" * )
REFERENCE FROM measure_schema;
 (* from ISO 10303-41:STEP Part 41; "Fundamentals of Product
 Description and Support" * )
REFERENCE FROM ISO13584_IEC61360_language_resource_schema;
 (* see clause 6 "ISO13584_IEC61360_language_resource_schema" * )
 (*
 
 
5.2 상수 정의
 
이 절은 KEA_dictionary_schema에서 사용되는 상수를 정의한다.
 
EXPRESS 명세서: *
 )
CONSTANT
property_code_len: INTEGER:=14;
class_code_len: INTEGER:=14;
data_type_code_len: INTEGER:=14;
version_len: INTEGER:=3;
revision_len: INTEGER:=3;
value_code_len: INTEGER:=18;
pref_name_len: INTEGER:=30;
short_name_len: INTEGER:=15;
syn_name_len: INTEGER:=pref_name_len;
value_format_len: INTEGER:=80;
END_CONSTANT;
( *


5.3 기본 의미 단위(Basic semantic units) : 사전의 정의 및 사용
 
5.3.1 교환을 위한 필수 조건
 
사전과 부품 라이브러리 데이터의 교환에서 데이터 분리는 통례적이다. 예를 들어, 사전은 이미 존재하는 품종을 참고하여 그 하부 절을 기술하는 몇 가지 품종에 따라 갱신하거나 라이브러리의 내용이 교체되면, 사전 요소가 참조될 뿐 늘 포함되는 것은 아니다. 가능한 명확하고 일관적으로 사전 데이터를 참조하여야 한다.
 
따라서 첫째 데이터 조각을 교환할 수 있어야 하고, 둘째 그 조각들 사이에 관계가 있어야 한다는 것이 명백한 필수 조건이다.

 

이는 그림 2에서 서술한다.
 
이러한 모든 조각 하나 하나는 물리적인 파일(ISO 10303-21 참조)과 관계가 있다. EXPRESS 속성(ISO 10303-11 참조)은 동일한 물리적인 파일 내의 데이터 참조만 포함할 수 있다. 따라서 EXPRESS 속성을 직접적으로 내부 조각 참조에 적용하는 것은 불가능하다. 

 
 
 5.3.2 사전 데이터의 세 가지 수준 구성
 
이 하부 절에서는 내부 조각 참조를 구현하는 관점에서의 basic_semantic_unit (BSU)의 개념을 설명한다. BSU는 사전 작성을 위해 보편적이며 유일한 식별을 제공한다. 그림 3은 이러한 개념을 표현한 것이다.
 
컨텐츠(content_item)의 일부 조각이 현재의 사전 기술을 참조한다고 가정한다. 구성요소의 속성 값을 전달하는 것은 dictionary_definition의 속성을 통해 BSU를 참조함으로써 이루어진다.
 
사전 요소(dictionary_element)은 identified_by의 속성을 통해 BSU를 참조한다. BSU의 절대 식별자를 일치시킴으로써 간접적인 관계가 성립되게 된다.
 
비고 1 사전 요소 및 내용 항목 모두 동일한 물리적 파일에 나타낼 수 있으나, 필수는 아니다.
 
비고 2 사전 요소는 그것과 관련한 몇 가지 내용 항목의 교환을 위해 필수는 아니다. 이러한 경우 목적 시스템 사전에 이미 명시되어 있다고 볼 수 있다. 반대로 사전 데이터는 어떠한 컨텐츠 데이터 없이도 교환될 수 있다.

비고 3 BSU는 사전 요소(dictionary_element)와 컨텐츠(content_item) 인스턴스가 모두 동일한 물리
적인 파일 내에 존재하는 경우에 하나의 단일 인스턴스가 될 수 있다.
 
비고 4 같은 과정은 다양한 사전 요소 사이의 참조에 적용된다(예를 들어, 구성 품종 및 관련
property_DETs 사이).
 
BSU는 사전 전달, 업데이트 전달, 라이브러리 전달, 구성 요소 데이터 교환 등 필요한 어느 곳에서 든 사전 기술을 참조할 수 있게 해준다. 속성과 연관된 데이터는 (property_BSU, <value>)와 같은 한쌍으로 교환될 수 있다.
 
그림 3은 이러한 일반적인 절차의 구현개념을 보여 준다.

5.3.2.1 basic_semantic_unit
 
basic_semantic_unit은 dictionary_element를 식별한다.
 
EXPRESS 명세서: *
 )
ENTITY basic_semantic_unit
ABSTRACT SUPERTYPE OF ( ONEOF (
 class_BSU,
 property_BSU,
 data_type_BSU,
 class_related_BSU));
 code:code_type;
 version:version_Type;

 

 

DERIVE
 dic_identifier:identifier:=code+version;
INVERSE
 definition:SET [0:1] OF dictionary_element FOR
 identified_by;
 referenced_by:SET [0:1] OF content_item FOR
dictionary_definition;
END_ENTITY; -- basic_semantic_unit
( *
 
 
속성 정의:
 
― code:특정 사전 요소를 식별하도록 지정된 코드
― version:특정 사전 요소의 버전 번호
― dic_identifier:코드와 버전의 결합으로 구성되는 완전한 식별
― definition:BSU에 의해 식별되는 사전 요소 참조 (어떠한 교환 내용에도 없으면, 목표 시스템의 사전에 이미 존재한다고 볼 수 있다.)
― referenced_by:BSU와 관련된 사전 요소를 이용하는 항목
 
5.3.2.2 dictionary_element
 
dictionary_element는 어떠한 개념에 대해 의미 사전에서 추출을 요구하는 데이터의 완전한 정의다.
모든 의미에서, 개별적인 하부 유형이 사용된다. dictionary_element는 사전에서 이러한 정의를 유일하게 구분하는 basic_semantic_unit와 관련이 있다. 그림 4는 basic_semantic_unit과 dictionary_element 간 관계의 계획 모델을 보여 준다.

basic_semantic_unit의 버전 속성을 포함하여, 사전 요소의 식별 부분을 구성한다(revision 및 time_stamps 속성과는 반대).

EXPRESS 명세서: *
 )
ENTITY dictionary_element
ABSTRACT SUPERTYPE OF ( ONEOF (
 class_and_property_elements,
 data_type_element));
 identified_by:basic_semantic_unit;
 time_stamps:OPTIONAL dates;
 revision:revision_type;
END_ENTITY;
( *
 
 
속성 정의:
 
― identified_by:이 사전 요소를 식별하는 BSU
― time_stamps:이 사전 요소의 창안 및 갱신 날짜
― revision:이 사전 요소의 개정 번호
 
5.3.2.3 content_item
 
content_item은 사전에서 그 명세와 관련한 데이터의 부분이다. 이는 아래 표기된다.
 
EXPRESS 명세서: *
 )
ENTITY content_item
ABSTRACT SUPERTYPE;
 dictionary_definition:basic_semantic_unit;
END_ENTITY;
( *
 
 
속성 정의:
 
― dictionary_definition:사전에서 정의와 관련하여 사용되는 기본 의미 단위
 
5.3.3 기본 의미 단위와 사전 요소
 
basic_semantic_unit 및 dictionary_element의 쌍, 즉 모든 종류의 사전 데이터에 대한 유형이 정의되어야 한다. 그림 5는 계획 모델로서 나중에 정의된 기본 의미 단위와 사전 요소를 보여 준다. BSU와 사전 요소의 관계는 오직 상응하는 한 쌍만 관련될 수 있도록 각 데이터 유형을 위해 재정된다. 그러나 이것은 여기에서 도식적으로 표현되지 않는다.

5.3.4 사전 요소의 식별
 
기본 의미 단위의 완벽한 식별은 다음의 구조 수준에 기초한다.
 
― 품종
― 품종 관련 사전 요소(어떠한 사전 요소는 품종의 내용에서 정의된다. 이 표준에서 품종 관련 사전요소는 property_DET와 data_type_element이지만, 이 절차를 다른 항목으로 확장하기 위한 준비이다.)
 
완벽한 식별은 각 수준에 대해 적용 가능한 코드를 연결시킴으로써 수행된다. 이러한 식별 계획은 다중 공급자 내용에 적합하다. 어떤 적용 분야에서는 단일(데이터) 공급자만 관련된다면, 일정한 식별의 일치 부분은 삭제될 것이다. 그러나 교환을 목적으로 하는 식별자의 불일치를 피하기 위해 모든 수준이 표시되어야 한다.
 
5.3.5 기타 유형의 데이터를 위한 확대 가능성
 
BSU 사전 요소 절차는 매우 보편적이고 여기서 사용된 4가지 종류의 데이터로 제한되지는 않는다.
이 하부 절은 기타 종류로 확대될 수 있는 몇 가지 장비를 기술한다. 식별자의 적용 범위가 품종에 의해 제시되는지, 공급자에 의해 제시되는지에 따라, 상응하는...._related_BSU 개체는 아래 표기되어야 한다. dictionary_element개체의 속성에 의해 재정의하여야 한다.
 
5.3.5.1 class_related_BSU
 
class_related_BSU는 품종과 관련되는 사전 요소를 규정한다. 예를 들어 ISO 13584의 표, 문서 등이다.
 
EXPRESS 명세서: *
 )
ENTITY class_related_BSU
ABSTRACT SUPERTYPE
SUBTYPE OF (basic_semantic_unit);
END_ENTITY
( *
 
5.3.5.2 class_BSU_relationship
 
class_BSU_relationship 개체는 품종과 BSU의 결합을 위한 준비이다.
 
EXPRESS 명세서: *
 )
ENTITY class_BSU_relationship
ABSTRACT SUPERTYPE;
 relating_class:class;
 related_tokens:SET [1:?] OF class_related_BSU;
END_ENTITY;
( *
 
 
속성 정의:
 
― relating_class:사전 요소를 식별하는 품종
― related_tokens:relating_class 속성에 의해 식별되는 품종 및 관련한 사전 요소의 세트
 
5.4 품종 데이터
 
이 하부 절은 품종의 사전 데이터 표현을 정의한다.
 
5.4.1 개요
 
그림 6은 계획 모델로서, 품종과 관련한 데이터와 기타 사전 요소와의 관계의 윤곽을 보여준다. 이 표준을 통틀어 “상속”과 “계승하는” 의 용어는 품종들(사전에서 정의된) 사이의 이러한 관계를 표시한다는 점이 중요하다. 이들은 오용을 피하기 위해 명백하게 구분된다.
 
구성 품종용 사전 데이터는 4가지 상속된 특성으로 퍼져 있다.
 
― class_and_property_element는 품종과 property_DETs에 공통된 데이터를 정의
― 품종은 나중에 명시될 다른 종류의 품종을 허가(예를 들면 ISO 13584-24에서)
― item_class는 적용 영역 대상의 다른 품종의 데이터를 가진 개체(예를 들면 부품, 재료, ... 등)
― component_class는 구성 품종을 만드는 개체이고 material_class는 재료의 품종을 만드는 개체

5.4.1.1 class_BSU
 
class_BSU 개체는 품종의 식별을 위해 제시한다.
 
EXPRESS 명세서: *
 )
ENTITY class_BSU
SUBTYPE OF (basic_semantic_unit);
 SELF\basic_semantic_unit.code:class_code_type;
DERIVE
 absolute_id:identifier:=defined_by.absolute_id+dic_identifier;
 known_visible_properties:SET [0:?] OF property_BSU
 :=compute_known_visible_properties(SELF);
 known_visible_data_types:SET [0:?] OF data_type_BSU
 :=compute_known_visible_data_types(SELF)
INVERSE
 subclasses:SET [0:?] OF class FOR its_superclass;
 added_visible_properties:SET [0:?] OF property_BSU
 FOR name_scope;
 added_visible_data_types:SET [0:?] OF data_type_BSU
 FOR name_scope;
UNIQUE
 UR1:absolute_id;
END_ENTITY; -- class_BSU
( *
 
 
속성 정의:
 
― code:공급자에 의해 이 품종이 지정된 코드
― defined_by:이 품종과 그 사전 요소를 정의하는 공급자
― absolute_id:이 품종의 유일한 식별 수단
― known_visible_properties:property_BSUs의 세트로 그 name_scope 속성과 같은 품종이나, 이 품종의 상위 품종으로 알려진 것과 관련된 세트이며 이는 품종(및 그 하부 절의 어떤 것)에 대해 가시적인 세트
― known_visible_data_types:data_type_BSUs의 세트로 그 name_scope 속성과 같은 품종이나, 이 품종의 상위 품종으로 알려진 것과 관련된 세트이며 이는 품종 (및 그 하부 절의 어떤 것)에 대해 가시적인 세트
― subclasses:그 상위 품종과 같이 이 품종을 기술하는 품종의 세트
― added_visible_properties:name_scope처럼 품종과 관련되는 property_BSUs의 세트로, 이는 품종(및 그 하부 절의 어떤 것)에 대해 가시적인 세트
― added_visible_data_types:name_scope처럼 품종과 관련되는 data_type_BSUs의 세트로, 이는 품종(및 그 하부 절의 어떤 것.)에 대해 가시적인 세트
 
공식 명제:
 
― UR1:absolute_code는 유일하다.
5.4.1.2 class_and_property_element
 
class_and_property_elements 개체는 품종과 property_DETs 모두에 공통되는 속성을 추출한다.
 
EXPRESS 명세서: *
 )
ENTITY class_and_property_elements
ABSTRACT SUPERTYPE OF ( ONEOF (
 property_DET,
 class))
SUBTYPE OF (dictionary_element);
 names:item_names;
 definition:definition_type;
 note:OPTIONAL note_type;
 remark:OPTIONAL remark_type;
END_ENTITY;
( *
 
 
속성 정의:
 
― names:이 사전 요소를 기술하는 명칭
― definition:이 사전 요소를 기술하는 내용
― note:이해에 본질적인 사전 요소의 어떤 부분에 관한 더 자세한 정보
― remark:이 사전 요소의 의미를 좀 더 명백히 하는 설명적인 내용
 
5.4.1.3 class
 
품종 개체는 모든 종류의 품종에 대한 추상적인 수단이다.
 
EXPRESS 명세서: *
 )
ENTITY class
ABSTRACT SUPERTYPE OF (ONEOF (item_class))
SUBTYPE OF (class_and_property_element);
 SELF\dictionary_element.identified_by:class_BSU;
 its_superclass:OPTIONAL class_BSU;
 described_by:LIST [0:?] OF UNIQUE property_BSU;
 defined_types:SET [0:?] OF data_type_BSU;
DERIVE
 subclasses:SET [0:?] OF class:=identified_by.subclasses;
 known_applicable_properties:SET [0:?] OF property_BSU
 :=compute_known_applicable_properties(
 SELF\dictionary_element.identified_by);
 known_applicable_data_types:SET [0:?] OF data_type_BSU
 :=compute_known_applicable_data_types(
 SELF\dictionary_element.identified_by);
INVERSE
 associated_items:SET [0:?] of class_BSU_relationship FOR relating_class;
WHERE
 WR1:NOT all_class_descriptions_reachable ( KEA OT-9020-2:2009
SELF\dictionary_element.identified_by)
 OR (list_to_set (SELF. described_by) <=
 SELF\dictionary_element.identified_by.known_visible_properties);
 WR2:NOT all_class_descriptions_reachable (
 SELF\dictionary_element.identified_by)
 OR (SELF. defined_types <=
 SELF\dictionary_element.identified_by.known_visible_data_types);
 WR3:list_to_set (SELF. described_by) *
 
 NVL (SELF.its_superclass.definition[1]
 known_applicable_properties, [ ])=[ ] ;
 WR4:SELF.defined_type *
 
 NVL (SELF.its_superclass.definition[1]
 known_applicable_data_types, [ ])=[ ] ;
END_ENTITY;
( *
 
 
속성 정의:
 
― identified_by:이 품종을 식별하는 class_BSU
― its_superclass:현재의 단계의 것이 상위 품종을 참조
― described_by:이 품종이나 상위 품종에서 부분을 기술하는데 사용할 수 있는 추가적인 속성에 대한 참조 목록
― defined_type:이 품종에서 아래로 내려가는 상속 트리 곳곳에 다양한 property_DETs를 위해 사용될 수 있는 유형에 대한 참조의 선택적 세트
― subclasses:그 상위 품종처럼 이 품종을 기술하는 품종의 세트
― known_applicable_properties:품종 또는 described_by 속성에 의해 상위 품종으로 알려진 것으로 참조된 property_BSU로 이는 이 품종(및 그 어떤 하위 품종)에 적용 가능
― known_applicable_data_type: 품종 또는 defined_types 속성에 의해 상위 품종으로 알려진 것으로 참조된 data_type_BSU로 이는 이 품종(및 그 어떤 하위 품종)에 적용 가능
― associated_items:BSU 절차를 사용하여 다른 종류의 데이터로의 접근을 허가
 
공식 명제:
 
― WR1:품종에 대해 가시적인 속성들만이 described_by 속성으로 참조되는 장점에 의해 이 품종으로의 적용이 가능하다.
― WR2:품종에 대해 가시적인 데이터 유형만이 defined_types 속성으로 참조되는 장점에 의해 이 품종으로의 적용이 가능하다.
― WR3:상속된 특성에 의해 품종에 적용 불가능한 속성만이 described_by 속성에 의해 기술된 것에 의해 참조되는 장점으로 인해 이 품종으로의 적용이 가능하다.
― WR4:상속된 특성에 의해 품종에 적용 불가능한 데이터 유형들만이 defined_types 속성에 의해 참조되는 장점에 의해 이 품종으로의 적용이 가능하다.
 
비공식 명제:
 
― described_by 속성은 이 품종을 기술하는 property_DETs에 대한 (BSU 개념을 사용한) 참조를 포함한다. 이 목록은 상속된 상속 트리의 이러한 매듭에서 기술된 것만을 포함한다. 상속된 property_DETs는 반복되지 않는다.

 

5.4.2 item_class
 
item_class 개체는 품종처럼 자발적이고 독립적인 약자에 상응하는 적용 영역의 어떤 개체 유형의 설계를 가능하게 한다. 이는 대상의 본질을 정의하는데 하부 표기되기 위해서 상위 표기되도록 의도된다. 그럼에도 불구하고, 이는 두 개의 다른 종류의 대상(예를 들어, 부품과 재료)에 상응하는 두 개 품종의 상위 품종인 품종을 설계하도록 강요할 수 있는 약자로 정의되지 않는다.
 
비고 1 재료는 부품 목록 적용 영역 대상의 자발적이고 독립적인 약자이다. 이는 item_class의 특정한 하위 품종으로 표현된다.
 
비고 2 특징은 부품 목록 적용 영역 대상의 자발적이고 독립적인 약자이다. 이는 item_class의 특정한 하위 품종으로 표현될 수 있다.
 
비고 3 제품 표현은 적용 영역 대상의 자율적이고 독립적인 약자가 아니다. 이는 오직 제품과의 관계로 존재할 것이며 ISO 13584-24에서 부품 표현은 품종의 특정 하위 품종으로 표현된다.
 
EXPRESS 명세서: *
)
ENTITY item_class
SUPERTYPE OF (ONEOF(component_class, material_class))
SUBTYPE OF (class);
 sub_class_properties:SET [0:?] OF property_BSU;
 class_constant_values:SET [0:?] OF class_value_assignment;
 coded_name:OPTIONAL value_code_type;
WHERE
 WR1:QUERY (p<*
 sub_class_properties
 | NOT (p IN SELF.described_by))=[ ];
 WR2:NOT all_class_descriptions_reachable (SELF.identified_by) OR
 (QUERY (va<*
 class_constant_values | SIZEOF QUERY (c<*
 
 va.super_class_defined_property.describes_classes|
 is_subclass (SELF, c)
 AND (va.super_class_defined_property
 IN c.sub_class_properties)))<>1)=[]);
END_ENTITY;
(
*
 
 
속성 정의:
 
― simplified_drawing:기술된 품종과 관련될 수 있는 선택적 설계(그래픽)
― sub_class_properties:유효 품종으로써 속성을 선언하는 것, 즉 하위 품종의 단일 유효값은 각 품종으로 지정( 5.5.4 항목의 “유효 품종 속성”를 참조)
― class_constant_value:상위 품종에서 선언된 유효 품종 속성을 위한 현 품종 지정
― coded_name:상위 품종의 DET 분류의 유효 영역에서 사용되는 것
 
공식 명제:
 
― WR1:described_by 목록에 속하는 class_valued_properties
― WR2:class_constant_value에서 참조된 속성은 현 품종의 몇 가지 상위 품종에서 유효 품종으로 선언된다.

5.4.3 component_class
 
component_class 개체는 어떤 추출물, 부품, 구성 요소의 레벨에서 항목의 품종을 표현하는 사전적인 기술을 포함한다. component_class에 의해 정의된 데이터 유형의 속성은 집단 관계를 표시한다.
 
EXPRESS 명세서: *
 )
ENTITY component_class
SUBTYPE OF (item_class);
END_ENTITY;
( *
 
 
5.4.4 material_class
 
material_class는 재료 품종의 사전 기술을 포함한다. 재료는 부품이나 구성 요소의 속성을 정의하는데 사용된다. 재료는 셀 수 없는 양적인 개념과 관련된다. 재료 품종에 의해 정의된 데이터 유형의 속성은 제품을 만드는 것, 제품이 포함물, 또는 재료를 갖는다.
 
*
 )
ENTITY material_class
SUBTYPE OF (item_class);
END_ENTITY;
( *
 
 
5.5 데이터 요소 유형 및 속성 데이터
 
이 하부 절은 속성에 대한 사전 데이터를 정의한다.
 
5.5.1 property_BSU
 
property_BSU 개체는 속성의 식별을 위해 제시된다.
 
EXPRESS 명세서: *
 )
ENTITY property_BSU
SUBTYPE OF (basic_semantic_unit);
 SELF\basic_semantic_unit.code:property_code_type;
 name_scope:class_BSU;
DERIVE
 absolute_id:identifier:=
 name_scope.defined_by.absolute_id
 +name_scope.dic_identifier
 +dic_identifier;
INVERSE
 describes_classes:SET OF class FOR described_by;
UNIQUE
 UR1:absolute_id;
WHERE
 WR1:QUERY (c<*
 describes_classes |
 NOT ( is_subclass (c, name_scope.definition[1]\class)))=[ ];
END_ENTITY;

 

( *
 
 
속성 정의:
 
― code:name_scope 속성에 의해 지정되는 범위 내에서 유일한 식별을 허가
― name_scope:described_by 속성의 참조가 가능한 속성 요소에서 참조하거나 그 속성에서 품종을
참조
― absolute_id:이 속성에서 유일한 식별
― describes_classes:부품의 기술에 사용 가능한 것으로 이 속성을 선언하는 품종
 
공식 명제:
 
― WR1:name_scope 속성에 의해 참조되는 품종, 또는 그것의 상위 품종, property_BSU의 품종 속
성에 의해 참조되는 품종이다
― UR1:absolute_id 식별성은 유일하다.
 
5.5.2 property_DET
 
property_DET 개체는 속성의 사전적인 기술을 추출한다.
 
EXPRESS 명세서:
 
*
 )
ENTITY property_DET
ABSTRACT SUPERTYPE OF ( ONEOF (
 condition_DET,
 dependent_P_DET,
 non_dependent_P_DET))
SUBTYPE OF (class_and_property_elements);
 SELF\dictionary_element.identified_by: property_BSU;
 preferred_symbol:OPTIONAL mathematical_string;
 synonymous_symbols:SET [0:2] OF mathematical_string;
 domain:data_type;
 formula:OPTIONAL mathematical_string;
DERIVE
 describes_classes: SET [0:?] OF class
 :=identified_by.describes_classes;
END_ENTITY;
( *
 
 
속성 정의:
 
― identified_by:이 속성을 식별하는 property_BSU
― preferred_symbol:이 속성보다 짧은 명시
― synonymous_symbol:속성보다 짧은 명시를 위한 동의어
― figure:속성을 기술하는 선택적 그래프
― domain:속성과 관련한 data_type의 참조
― formula:속성을 설명하기 위한 수학적 표현
― describes_classes:부품 명시에 사용 가능한 것으로 이 속성을 나타내는 품종

 

그림 7은 속성 DET와 관련한 데이터의 계획 모델을 표현한다.

5.5.3 조건, 독립적이고 비독립적인 데이터 요소 유형
 
그림 8은 계획 모델의 형식에서 다양한 데이터 요소 유형을 묘사한다. 이 그림은(다른 것과 마찬가지로) 단순화된 것임을 명심한다: “의존적인” 관계는 본질적으로 BSU 참조에 필요하지만, 강제 조건은 관련 property_DET가 condition_DET가 될 것이라고 명시되어야 한다.(dependent_P_DET 개체 참조)

5.5.3.1 condition_DET
 
condition_DET는 다른 속성이 의존할 수 있는 것에 관한 속성이다.
 
EXPRESS 명세서: *
 )
ENTITY condition_DET
SUBTYPE OF (property_DET);
END_ENTITY;

( *
 
 
5.5.3.2 dependent_DET
 
dependent_P_DET는 그 값이 명백히 몇 가지 조건, 즉 주위 온도와 같은 값에 의존하는 속성이다.
 
EXPRESS 명세서: *
 )
ENTITY dependent_P_DET
SUBTYPE OF (property_DET);
 depends_on: SET [1:? ] OF property_BSU;
WHERE
 WR1:QUERY ( P<*
 depends_on | NOT (definition_available_implies (p,
 ('KEA_DICTIONARY_SCHEMA.CONDITION_DET'
 IN TYPEOF (p.definition)))) )=[ ] ;
END_ENTITY;
(
*
 
 
속성 정의:
 
― depends_on:이 depends on 속성을 식별하는 기본 의미 단위의 세트
 
공식 명제:
 
WR1:오직 condition_DET는 depends_on 목록에만 사용될 것이다.
 
5.5.3.3 non-dependent_DET
 
non-dependent_DET는 어떤 조건에도 의존하지 않는 속성이다.
 
EXPRESS 명세서: *
)
ENTITY non_dependent_P_DET
SUBTYPE OF (property_DET) ;
END_ENTITY;
(
*
 
 
5.5.4 class_valued_property
 
class_valued_property는 전체 하위 품종에 유효한 각 하위 품종 하나의 단일 값이 지정되지만, 개별적으로는 품종 내에서 모든 인스턴스에는 유효하지 않은 속성이 있다. item_class 개체에서 sub_class_properties 목록에 포함되므로 속성은 유형으로 구분된다. 이 속성을 물려 받은 하위 품종의 값은 class_value_assignments 세트를 포함하는 class_constant_value 속성의 사용을 지정 받을 수 있다.
 
EXPRESS 명세서: *
)
ENTITY class_value_assignment;
 super_class_defined_property:property_BSU;
 assigned_value:value_code_type;
WHERE
WR1:definition_available_implies (super_class_defined_property,
('ISO 13584_IEC 61360_DICTIONARY_SCHEMA '+' .NON_QUANTITATIVE_CODE_TYPE'
 IN TYPEOF (
 super_class_defined_property.definition[1]\property_DET.domain)));
 WR2:definition_available_implies (super_class_defined_property,
 ( SIZEOF ( QUERY (v<*
 
 super_class_defined_property.definition[1]\property_DET.domain
\non_guantative_code_type.domain.its_values │
 assigned_value=v.value_code))=1 ));
END_ENTITY;
(
*
 
 
속성 정의:
 
― super_class_defined_property: 지정된 값으로 속성(class_valued_property으로서 상위품종에서 정의된)의 참조
― assigned_value:class_constant_value 목록에서 class_value_assignment 인스턴스와 관련하여, 전체 품종에 대해 유효한 속성으로 지정된 값
 
공식 명제:
 
― WR1:super_class_defined_property는 값으로서 비양적인 유형의 코드(문자열)를 가진다.
― WR2:super_class_defined_property로 지정된 값은 유형 호환이 가능하며 super_class_defined_ property의 유효한 영역내에서 발생할 것이다.
 
5.6 데이터 유형
 
다음의 하부 절은 property_DET의 데이터 유형 표현을 위한 정의를 포함한다. 그림 9는 계획 모델로서, 데이터 유형용 개체의 계층 구조를 보여 준다.

5.6.1 일반
 
다른 사전 요소(공급자, 품종, 속성)와 달리, 기본 의미 단위 개념의 식별은 data_type을 위해 필수적이지 않다. 왜냐하면 이는 많은 경우에 property_DET에 직접적으로 첨부될 것이기 때문이다. 그러나 data_type_BSU와 data_type_element는 적당한 곳에 유일한 식별을 허용한다. 심지어 현 물리적인 파일 밖에서도 다른 property_DET에서 동일한 유형에 대한 정의 재사용을 제공한다.
 
5.6.1.1 data_type_BSU
 
data_type_BSU 개체는 data_type_element의 식별을 제공한다.
 
EXPRESS 명세서: *
)
ENTITY data_type_BSU
SUBTYPE OF (basic_semantic_unit);
 SELF\basic_semantic_unit.code: data_type_code_type;
 name_scope:class_BSU;
DERIVE
 absolute_id:identifier:=
 name_scope.defined_by.absolute_id
 +name_scope.dic_identifier
 +dic_identifier;
INVERSE
 defining_class: SET [0:1] OF class FOR defined_types;
UNIQUE
 absolute_id;
WHERE
 WR1:is_subclass ( defining_class[1], name_scope.definition[1] );
END_ENTITY;
(
*
 
 
속성 정의:
 
― code:name_scope 속성에 의해 지정되는 적용 범위에서 유일한 식별을 허용
― name_scope: defined_type 속성에 의해 참조를 가능하게 하는 데이터 유형 요소의 품종 참조 또는 그 하부 품종에 대한 참조
― absolute_id:이 속성의 유일한 식별
― defining_class:defined_types용 SET OF 품종
 
공식 명제:
 
― WR1:name_scope 속성에 사용되는 품종은 이 data_type이 정의된 상위 품종이다.
 
5.6.1.2 data_type_element
 
data_type_element 개체는 유형용 사전 요소를 기술한다. 모든 경우에 특정 data_type을 위해 BSU와 dictionary_element를 가질 필요가 없다는 점을 주목해야 한다. 왜냐하면 property_DET는 직접적으로 data_type과 관련될 수 있기 때문이다. BSU 관계의 사용은 오직 공급자가 다른 물리적인 파일에서 동일한 유형을 적용시키고자 할 때만 필요하다.

EXPRESS 명세서: *
)
ENTITY data_type_element
SUBTYPE OF (dictionary_element);
 SELF\dictionary_element.identified_by: data_type_BSU;
 names:item_names;
 type_definition: data_type;
END_ENTITY;
(
*
 
 
속성 정의:
 
― identified_by:명시된 data_type_element를 식별하는 BSU
― names:정의된 data_type_element의 기입을 허락하는 명칭
― type_definition:data_type_element에 의해 수행되는 유형을 명시
 
5.6.2 데이터 유형
 
5.6.2.1 Data_type
 
data_type 개체는 관련 DET의 유형을 지정하는데 사용되는 개체를 위해 공통적으로 상위 유형이 된다.
 
EXPRESS 명세서: *
)
ENTITY data_type
ABSTRACT SUPERTYPE OF ( ONEOF (
 simple_type,
 complex_type,
 named_type));
END_ENTITY;
(
*
 
 
5.6.2.2 simple_type
 
simple_type 개체는 관련 DET의 단순한 유형을 지정하는데 사용되는 개체를 위해 공통적으로 상위 유형이 된다.
 
EXPRESS 명세서: *
)
ENTITY simple_type
ABSTRACT SUPERTYPE OF ( ONEOF (
 number_type,
 boolean_type,
 string_type))
SUBTYPE OF (data_type);
 value_format: value_format_type;
END_ENTITY;
(
*
 
 
속성 정의:
― value_format:속성을 위한 유효한 유형의 암호화
 
5.6.2.3 number_type
 
number_type 개체는 번호 유형인 DET의 값을 규정한다.
 
EXPRESS 명세서: *
)
ENTITY number_type
SUPERTYPE OF ( ONEOF (
 int_type,
 real_type))
SUBTYPE OF (simple_type);
END_ENTITY;
(
*
 
 
5.6.2.4 int_type
 
int_type 개체는 정수 유형인 DET의 값을 규정한다.
 
EXPRESS 명세서: *
)
ENTITY int_type
SUBTYPE OF ( ONEOF (
 int_measure_type,
 int_currency_type,
 non_quantitative_int_type))
SUBTYPE OF (number_type);
END_ENTITY;
(
*
 
 
5.6.2.5 int_measure_type
 
int_measure_type 개체는 정수 유형으로 측정한 DET의 값을 규정한다.
 
EXPRESS 명세서: *
)
ENTITY int_measure_type
SUBTYPE OF (int_type);
 unit:dic_unit;
END_ENTITY;
(
*
 
 
속성 정의:
 
― unit:기술된 측정과 관련한 단위
 
5.6.2.6 int_currency_type
 
int_currency_type 개체는 정수 통화인 DET의 값을 규정한다.

EXPRESS 명세서: *
)
ENTITY int_currency_type
SUBTYPE OF (int_type);
 currency: OPTIONAL currency_code;
END_ENTITY;
(
*
 
 
속성 정의:
 
― currency:ISO 4217에 따라 명시된 통화와 관련된 코드(만약 없다면, 통화 코드는 데이터(값)와 교환되어야 한다.)
 
5.6.2.7 non_quantitative_int_type
 
non_quantitative_int_type 개체는 목록의 요소가 정수로 표현되는 목록 유형이다.
 
EXPRESS 명세서: *
)
ENTITY non_quantitative_int_type
SUBTYPE OF (int_type);
 domain: value_domain;
WHERE
 WR1:QUERY (v <*
 domain.its_values |
 KEA_DICTIONARY_SCHEMA.VALUE_CODE_TYPE' IN
 TYPEOF ( v.value_code ))=[ ];
END_ENTITY;
(
*
 
 
속성 정의:
 
― domain:value_domain 개체에 기술된 목록 값의 세트
 
공식 명제:
 
― WR1:domain.its_value 목록과 관련 값은 value_code_type을 포함하지 않는다.
 
5.6.2.8 real_type
 
real_type은 실수 유형인 DET의 값을 규정한다.
 
EXPRESS 명세서: *
)
ENTITY real_type
SUBTYPE OF ( ONEOF (
 real_measure_type,
 real_currency_type))
SUBTYPE OF (number_type);
END_ENTITY;
(
*
 
5.6.2.9 real_measure_type
 
real_measure_type 개체는 실수 유형으로 측정된 DET의 값을 규정한다.
 
EXPRESS 명세서: *
)
ENTITY real_measure_type
SUBTYPE OF (real_type);
 unit:dic_unit;
END_ENTITY;
(
*
 
 
속성 정의:
 
― unit:명시된 측정과 관련된 단위
 
5.6.2.10 real_currency_type
 
real_currency_type 개체는 실수로 된 통화를 정의한다.
 
EXPRESS 명세서: *
)
ENTITY real_currency_type
SUBTYPE OF (real_type);
 currency:OPTIONAL currency_code;
END_ENTITY;
(
*
 
 
속성 정의:
 
― currency:ISO 4217에 따라 기술된 통화의 관련 코드(만약 없다면, 통화 코드는 데이터(값)와 함께 교환되어야 한다.)
 
5.6.2.11 boolean_type
 
boolean_type은 논리(BOOLEAN) 유형인 DET의 값을 규정한다.
 
EXPRESS 명세서: *
)
ENTITY boolean_type
SUBTYPE OF (simple_type);
END_ENTITY;
(
*
 
 
5.6.2.12 string_type
 
string_type은 문자열(STRING) 유형인 DET의 유효값을 규정한다.
 
EXPRESS 명세서: *
)
ENTITY string_type

 

SUBTYPE OF (simple_type);
END_ENTITY;
(
*
 
 
5.6.2.13 non_quantitative_code_type
 
non_quantitative_code_type 개체는 목록의 요소가 문자열 값으로 표현되는 목록 유형이다.
 
EXPRESS 명세서: *
)
ENTITY non_quantitative_code_type
SUBTYPE OF (string_type);
 domain: value_domain;
WHERE
 WR1:QUERY (v<*
 domain.its_values |
 NOT ('KEA_DICTIONARY_SCHEMA.VALUE_CODE_TYPE'
 IN TYPEOF ( v.value_code)))=[ ];
END_ENTITY;
(
*
 
 
속성 정의:
 
― domain:value_domain 개체에서 기술된 목록화된 값 세트
 
공식 명제:
 
― WR1:domain.its_value와 관련한 값은 value_code_type의 요소만 포함하고 있을 것이다.
 
5.6.2.14 complex_type
 
complex_type 개체는 값을 EXPRESS 인스턴스로 표현한 유형의 정의를 규정한다.
 
EXPRESS 명세서: *
)
ENTITY complex_type
ABSTRACT SUPERTYPE OF ( ONEOF (
 level_type,
 class_instance_type))
 entity_instance_type))
SUBTYPE OF (data_type );
END_ENTITY;
(
*
 
 
5.6.2.15 level_type
 
level_type 개체는 양적인 데이터 요소 유형의 값으로 적합하게 하는 지시자를 규정된다.
 
EXPRESS 명세서: *
)
ENTITY level_type
SUBTYPE OF (complex_type);
 levels:LIST [1:4] OF UNIQUE level;

value_type:simple_type;
WHERE
 WR1:'KEA_DICTIONARY_SCHEMA.NUMBER_TYPE'
 IN TYPEOF ( value_type);
END_ENTITY;
(
*
 
 
속성 정의:
 
― levels:속성과 관련된 적합한 값을 명세하는 유일한 요소의 목록
― value_type:다른 적합한 값의 유효한 유형
 
공식 명제:
 
― WR1:SELF.value_type은 number_type의 유형이다.
 
5.6.2.16 Level
 
Level 유형은 동일한 양의 값을 허락하거나 다른 가능성으로부터 구분되는, 물리적인 양과 관련된 다른 적합한 값의 약자 명칭을 규정한다.
 
EXPRESS 명세서: *
)
TYPE level=ENUMERATION OF (
 min, (*
corresponds to the minimum value of the physical quantity*
)
 nom, (*
corresponds to the nominal value of the physical quantity*
)
 typ, (*
corresponds to the typical value of the physical quantity*
)
 max); (*
corresponds to the maximal value of the physical quantity*
)
END_TYPE;
(
*
 
 
5.6.2.17 class_instance_type
 
class_instance_type 개체는 품종의 인스턴스로 표현되는 DET의 값을 규정한다. 특별한 경우에 사용되는데, 이는 어셈블리의 명시를 위해서, 또는 구성하고 있는 요소(일부)의 재료를 기술하기 위해서다.
 
EXPRESS 명세서: *
)
ENTITY class_instance_type
SUBTYPE OF (complex_type);
 domain: class_BSU;
END_ENTITY;
(
*
 
 
속성 정의:
 
― domain:기술된 유형을 설명하는 품종 관련 class_BSU
 
5.6.2.18 entity_instance_type
 
entity_instance_type 개체는 EXPRESS 개체 데이터 유형의 예로 표현되는 DET의 값을 규정한다.

 

type_name 속성은 허용되는 데이터 유형이 무엇인지를 알게 한다. 이러한 속성은 유효값에 적용되는 EXPRESS TYPEOF 함수와 함께 강력한 유형의 검사와 다형성을 허가한다. 이 개체는 사전 스키마에서 허용된 데이터 유형에 대해 하위 표기될 것이다.
 
EXPRESS 명세서: *
)
ENTITY entity_instance_type
ABSTRACT SUPERTYPE
SUBTYPE OF (complex_type);
 type_name: SET OF STRING;
END_ENTITY;
(
*
 
 
속성 정의:
 
― type_name:기술된 문자열 세트로서, EXPRESS TYPEOF 함수 형식에서, 그 데이터 유형으로 현 개체를 참조한 값에 적용될 때, EXPRESS 개체 데이터 유형의 명칭은 EXPRESS TYPEOF 함수
결과에 포함
 
5.6.2.19 named_type
 
named_type 개체는 BSU 절차를 통한 다른 유형 참조를 제공한다.
 
EXPRESS 명세서: *
)
ENTITY named_type
SUBTYPE OF (data_type );
 referred_type: data_type_BSU;
END_ENTITY;
(
*
 
 
속성 정의:
 
― referred_type:현재 개체와 관련된 data_type을 식별하는 BSU
 
5.6.3 non_quantitative_int_type
 
이 절은 비양적인 데이터 구성 요소 유형에 대해서 정의한다(non_quantitative_int_type과
non_quantitative_code_type 개체를 참조).
 
그림 10은 계획 모델로서, 비양적인 데이터 구성 요소 유형과 관련한 데이터의 개요를 보여 준다.

5.6.3.1 value_domain
 
value_domain 개체는 비양적인 데이터 요소 유형에 대한 값의 허용 세트를 기술한다.
 
EXPRESS 명세서: *
)
ENTITY value_domain;
 its_values:LIST [2:?] OF dic_value;
 languages:OPTIONAL present_translations;
 terms:LIST [0:?] OF item_names;
WHERE
 WR1:NOT EXISTS ( languages ) XOR ( QUERY (v<*
 its_value |
 languages:<>:v.meaning.languages )=[ ] ) ;
 WR2:codes_are_unique (its_values);
END_ENTITY;
(
*
 
 
속성 정의:
 
― its_values:묘사된 영역에 포함되는 값의 계산 목록
― languages:번역된 언어의 선택적 목록
― terms:IEC 61360이 용어 사전과 연결되도록 하는 item_names의 선택적 목록
 
공식 명제:
 
― WR1:값의 의미가 하나 이상의 언어로 제시된다면, 사용된 언어의 세트는 전체 세트와 동일해야 한다.
― WR2:값의 코드는 이 데이터 유형에서 유일해야 한다.

 

5.6.3.2 value_code
 
비양적인 데이터 구성 요소의 각 값은 코드와 관련되며, 그 값의 속성으로 나타낸다. value_code는 정수이거나 value_code_type 중 하나일 것이다.
 
EXPRESS 명세서: *
)
TYPE integer_type=INTEGER; END_TYPE;
TYPE value_type=SELECT (value_code_type, integer_type); END_TYPE;
(
*
 
 
5.6.3.3 dic_value
 
dic_value 개체는 value_domain 개체 값의 하나이다.
 
EXPRESS 명세서: *
)
ENTITY dic_value;
 value_code:value_type;
 meaning:item_names;
END_ENTITY;
(
*
 
 
속성 정의:
 
― value_code:기술된 값과 관련된 코드(이는 value_code_type이거나 정수 중 하나가 될 수 있다.)
― meaning:이 값과 관련된 의미. 이는 명칭에 의해 제시된다.
 
5.6.4 ISO 10303-41 단위 정의로의 확장
 
이 절은 사전에서 단위 기술에 대한 수단을 정의한다. 이는 ISO 10303-41에서 정의한 수단을 확대한다.
 
5.6.4.1 non_si_unit
 
non_si_unit 개체는 내용 의존적이거나 전환에 기초하지 않은 non_SI_unit의 표현을 허가하도록 ISO 10303-41의 단위 모델을 확장한다.
 
EXPRESS 명세서: *
)
ENTITY non_si_unit
SUBTYPE OF (named_unit);
 name:label;
END_ENTITY;
(
*
 
 
속성 정의:
 
― name:기술된 단위의 명칭으로 사용되는 라벨

 

5.6.4.2 assert_ONEOF 법칙
 
assert_ONEOF 법칙은 다음 named_unit: si_unit, context_dependent_unit, conversion_based_unit,
non_si_unit의 하위 유형 사이에서 ONEOF가 유지하게 한다.
 
EXPRESS 명세서: *
)
RULE assert_ONEOF FOR (named_unit);
WHERE
 QUERY (u<*
 named_unit |
 ('KEA_DICTIONARY_SCHEMA.NON_SI_UNIT'
 IN TYPEOF (u)) AND
 ('MEASURE_SCHEMA.SI_UNIT' IN TYPEOF (u))
 OR ('KEA_DICTIONARY_SCHEMA.NON_SI_UNIT'
 IN TYPEOF (u)) AND
 ('MEASURE_SCHEMA.CONTEXT_DEPENDENT_UNIT' IN TYPEOF (u))
 OR ('KEA_DICTIONARY_SCHEMA.NON_SI_UNIT'
 IN TYPEOF (u)) AND
 ('MEASURE_SCHEMA.CONVERSION_BASED_UNIT' IN TYPEOF (u)))=[ ];
END_RULE;
(
*
 
 
5.6.4.3 dic_unit
 
단위의 기본적인 표현은 ISO 10303-41에 따라 구조화된 형식 내에 있다. 하지만 사전에 단위를 실으려는 목적 중 한가지는 사용자에게 제시하는 것이므로(구조화된 표현만으로는 불충분하므로) 이는 문자열 표현에 의해 보완되어야 한다. 현재의 정의는 다양한 가능성을 허용한다.
 
― string_for_unit 함수가 사용될 수 있으며 제시된 단위의 구조화된 표현에 대해서는 IEC 61360
-1의 부속서 B에서의 사용처럼 상응하는 문자열 표현으로 대체
― 문자열 표현은 평이한 본문 형식으로 제시 가능(mathematical_string 개체, text_representation 속성)
― SGML 표현은 하부와 아래에 적은 문자 등을 포함하여 증대된 단위의 표현이 가능하도록 제시가능(mathematical_string 개체, SGML_representation 속성)
― dic_unit 개체는 사전에 저장되기 위한 단위를 기술
 
EXPRESS 명세서: *
)
ENTITY dic_unit;
 structured_representation:unit;
 string_representation:OPTIONAL mathematical_string;
END_ENTITY;
(
*
 
 
속성 정의:
 
― structured_representation:“ISO 10303-41 정의로의 확대”에서 정의된 확대를 포함하는, ISO 10303-41로부터의 구조화된 표현
― string_representation:string_for_unit 함수는 string_representation이 존재하지 않는 경우에 structured_ representation으로부터 string_representation을 입력하는 데 사용

 

5.7 기본 유형 및 개체 정의
 
이 하부 절은 모델의 주요 부분에 사용되었던 기본 유형와 개체를 정의한다.
 
5.7.1 기본 유형 정의
 
이 하부 절은 알파벳순으로 분류된 기본 유형와 개체를 정의한다.
 
5.7.1.1 class_code_type
 
class_code_type은 품종 코드용으로 허용되는 값을 식별한다.
 
EXPRESS 명세서: *
)
TYPE clsss_code_type=code_type;
WHERE
 WR1:LENGTH(SELF)<=class_code_len;
END_TYPE;
(
*
 
 
공식 명제:
― WR1:class_code_type에 상응하는 유효한 길이는 class_code_len의 길이 이하이다.
 
5.7.1.2 code_type
 
code_type은 코드 유형용으로 허용되는 값을 식별한다.
 
EXPRESS 명세서: *
)
TYPE code_type=identifier;
WHERE
 WR1:NOT (SELF LIKE '*
 
*
');
END_TYPE;
(
*
 
 
공식 명제:
 
― WR1:코드가 연결될 때에 남겨진 공란과의 문제를 피하기 위해, 빈 공간은 허락되지 않는다.
 
5.7.1.3 currency_code
 
currency_code는 통화 코드를 위해 허용되는 값을 식별한다.
 
이러한 값은 ISO 4217에 따라 정의된다. 값은 예를 들어, 스위스 프랑에는 “CHF”, 위안 렌민비(중국)에는 ”CNY”, 독일 마르크에는 “DEM”, 프랑스 프랑에는 “FRF", 엔(일본)에 대해 “JPN”, 소련 루블에 대해서는 “SUR”, 미국 달러에 대해서는 “USD”, ECU(유럽연합 단위)에 대해서는 “XEU” 등이다.
EXPRESS 명세서: *
)
TYPE currency_code=identifier;
WHERE
 WR1:LENGTH(SELF)=3;
END_TYPE;
(
*
 
 
공식 명제:
 
― WR1:currency_code의 유효길이는 3이다
 
5.7.1.4 date_type
 
date_type은 날짜에 대한 허용되는 값을 식별한다. 이러한 유효성은 ISO 8601에 따라 정의된다.(예를 들면 “1994-03-21”)
 
EXPRESS 명세서: *
)
TYPE date_type=STRING(10) FIXED;
END_TYPE;
(
*
 
 
5.7.1.5 definition_type
 
definition_type은 정의로 허용되는 값을 구분한다.
 
EXPRESS 명세서: *
)
TYPE definition_type=translatable_text;
END_TYPE;
(
*
 
 
5.7.1.6 DET_classification_type
 
DET_classification_type은 DET 품종화에 허용되는 값을 식별한다. 이러한 값은 ISO 31에 따라 DET 품종화에 사용된다.
 
EXPRESS 명세서: *
)
TYPE DET_classification_type=identifier;
WHERE
 WR1:LENGTH(SELF) = DET_classification_len;
END_TYPE;
(
*
 
 
공식 명제:
 
― WR1:DET_classification_type의 길이는 DET_classification_len의 값과 동일하다.

5.7.1.7 data_type_code_type
 
data_type_code_type은 데이터 유형의 코드용으로 허용되는 값을 식별한다.
 
EXPRESS 명세서: *
)
TYPE data_type_code_type=code_type;
WHERE
 WR1:LENGTH(SELF)<=data_type_code_len;
END_TYPE;
(
*
 
 
공식 명제:
 
― WR1:data_type_code_type의 값은 data_type_code_len의 값 이하이다.
 
5.7.1.8 note_type
 
note_type은 주석용으로 허가된 값을 식별한다.
 
EXPRESS 명세서: *
)
TYPE note_type=translatable_text;
END_TYPE;
(
*
 
 
5.7.1.9 pref_name_type
 
pref_name_type은 선호 명칭용으로 허용되는 값을 식별한다.
 
EXPRESS 명세서: *
)
TYPE pref_name_type=translatable_label;
WHERE
 WR1:check_label_length (SELF, pref_name_len);
END_TYPE;
(
*
 
 
공식 명제:
 
― WR1:pref_name_type 길이의 값은 pref_name_len의 길이를 초과하지 않는다.
 
5.7.1.10 property_code_type
 
property_code_type은 속성 코드용으로 허용되는 값을 식별한다.
 
EXPRESS 명세서: *
)
TYPE property_code_type=code_type;
WHERE
 WR1:LENGTH(SELF)<=property_code_len;

END_TYPE;
(
*
 
 
공식 명제:
 
― WR1:property_code_type의 길이는 property_code_len의 값 이하이다.
 
5.7.1.11 remark_type
 
remark_type은 설명용으로 허용되는 값을 식별한다.
 
EXPRESS 명세서: *
)
TYPE remark_type=translatable_text;
END_TYPE;
(
*
 
 
5.7.1.12 revision_type
 
revision_type은 개정용으로 허용되는 값을 식별한다;.
 
EXPRESS 명세서: *
)
TYPE revision_type=code_type;
WHERE
 WR1:LENGTH(SELF)<=revision_len;
END_TYPE;
(
*
 
 
공식 명제:
 
― WR1:revision_type의 길이의 값은 revision_len의 길이를 초과하지 않을 것이다.
 
5.7.1.13 short_name_type
 
short_name_type은 짧은 명칭용으로 허용되는 값을 식별한다.
 
EXPRESS 명세서: *
)
TYPE short_name_type=translatable_label;
WHERE
 WR1:check_label_length (SELF, short_name_len);
END_TYPE;
(
*
 
 
공식 명제:
 
― WR1:short_name_type 길이의 값은 짧은 명칭 길이의 길이를 초과하지 않을 것이다.

 

5.7.1.14 syn_name_type
 
syn_name_type은 동의어 명칭용으로 허용되는 값을 식별한다.
 
EXPRESS 명세서: *
)
TYPE syn_name_type=SELECT (label_with_language, label);
WHERE
 WR1:check_syn_length (SELF, syn_name_len);
END_TYPE;
(
*
 
 
공식 명제:
 
― WR1:syn_name_type의 길이는 =syn_name_len의 값과 동일할 것이다.
 
5.7.1.15 value_code_type
 
value_code_type은 유효한 코드를 위해 허용되는 값을 식별한다.
 
EXPRESS 명세서: *
)
TYPE value_code_type=identifier;
WHERE
 WR1:LENGTH(SELF)<=value_code_len;
END_TYPE;
(
*
 
 
공식 명제:
 
― WR1:value_code_type 길이의 값은 value_code_len의 길이를 초과하지 않는다.
 
5.7.1.16 value_format_type
 
value_format_type은 유효한 형식을 위해 허용되는 값을 식별한다. 이러한 값은 ISO 6093과 ISO 9735에 따라 정의된다.
 
EXPRESS 명세서: *
)
TYPE value_format_type=identifier;
WHERE
 WR1:LENGTH(SELF)<=value_format_len;
END_TYPE;
(
*
 
 
공식 명제:
 
― WR1:value_type_format의 길이값은 value_type_len의 길이를 초과하지 않을 것이다.

5.7.1.17 version_type
 
version_type은 버전용으로 허용되는 값을 식별한다.
 
EXPRESS 명세서: *
)
TYPE version_type=code_type;
WHERE
 WR1:LENGTH(SELF)=version_len;
 WR2:SELF LIKE '###';
END_TYPE;
(
*
 
 
공식 명제:
 
― WR1:version_type의 길이값은 version_len과 동일하다.
― WR2:version_type은 오직 숫자로만 된다.
 
5.7.2 기본 개체 정의
 
이 하부 절은 알파벳순으로 분류한 기본 개체를 정의한다.
 
5.7.2.1 Date
 
날짜 개체는 첫 버전, 현재 버전, 그리고 주어진 기술에 대한 현재 개정과 관련된 세 개의 날짜로 서술된다.
 
EXPRESS 명세서: *
)
ENTITY dates;
 date_of_original_definition:date_type;
 date_of_current_version:date_type;
 date_of_current_revision:OPTIONAL date_type;
END_ENTITY;
(
*
 
 
속성 정의:
 
― date_of_original_definition:버전 001과 관련된 날짜
― date_of_current_version:현재 버전과 관련된 날짜
― date_of_current_revision:마지막 개정과 관련된 날짜

5.7.2.2 item_name
 
item_name 개체는 제시된 서술과 관련된 이름으로 식별한다. 이는 선호 명칭, 동의어 명칭의 세트, 짧은 명칭 및 다른 명칭으로 제시되는 언어를 언급한다. 이는 또한 아이콘과 관련될 수 있다.
 
EXPRESS 명세서: *
)
ENTITY item_names;
 preferred_name:pref_name_type;
 synonymous_names:SET OF syn_name_type;
 short_name:short_name_type;
 languages:OPTIONAL present_translations;
WHERE
 WR1:NOT ( EXISTS ( languages ) XOR (
 ('ISO13584_IEC61360_LANGUAGE_RESOURCE_SCHEMA'
 +'.TRANSLATED_LABEL' IN TYPEOF (preferred_name))
 AND (languages:=:preferred_name\translated_label.languages)
 AND ('ISO13584_IEC61360_LANGUAGE_RESOURCE_SCHEMA'
 +'.TRANSLATED_LABEL' IN TYPEOF (short_name))
 AND (languages:=:short_name\translated_label.languages)
 AND (QUERY (s<*
 synonymous_names |
 NOT ('KEA_DICTIONARY_SCHEMA.LABEL
 _WITH_LANGUAGE' IN TYPEOF (s)))=[ ])));
 WR2:NOT EXISTS ( language ) XOR (QUERY (s<*
 synonymous_names |
 EXISTS ( s.languages ) AND NOT (s.language IN
 QUERY (1<*
 languages.language_codes | TRUE
 WR3:at_most_two_synonyms_per_language
 (languages, synonymous_names);
END_ENTITY;
(
*
 
 
속성 정의:
 
― preferred_name:사용에서 선호되는 명칭
― synonymous_name:동의어 명칭의 세트
― short_name:선호된 명칭의 약자
― languages:다른 명칭으로 제시되는 언어의 선택적 목록
 
공식 명제:
 
― WR1:선호 명칭이나 짧은 명칭이 하나 이상의 언어로 표현되면, translated_labels의 모든 언어 속성이 항목 명칭 인스턴스의 언어 속성을 present_translations 인스턴스에 정의하여야 한다.
― WR2:동의어 명칭이 하나 이상의 언어로 제시되면, 이러한 item_name 인스턴스의 “언어” 속성에 present_ translations로 지정된 오직 한 개의 언어만이 사용될 수 있다.
― WR3:만약 존재한다면, 최대 두 개의 동의어가 언어 속성으로 지정된다.

5.7.2.3 label_with_language
 
label_with_language 개체는 라벨을 언어로 관련시키기 위한 수단을 제시한다.
 
EXPRESS 명세서: *
)
ENTITY label_with_language;
 l:label;
 language:language_code;
END_ENTITY;
(
*
 
 
속성 정의:
 
― l:언어와 관련된 라벨
― languages:라벨화된 언어의 코드
 
5.7.2.4 mathematical_string
 
mathematical_string은 수학적인 문자열 표현을 정의하는 수단을 제시한다. 이는 또한 SGML 유형에서 표현될 수 있다.
 
EXPRESS 명세서: *
)
ENTITY mathematical_string;
 text_representation: text;
 SGML_representation: OPTIONAL text;
END_ENTITY;
(
*
 
 
속성 정의:
 
― text_representation:필요하다면 ISO 843(정보와 문서화-그리스 문자의 라틴 문자로의 변환)를 사용하는 수학적 문자열 “linear” 형식
― SGML_representation:ISO 12083(전기 사본 준비 및 표기)에서 수학 DTD(문서 유형 정의)에 따라 SGML-Text(ISO 8879)을 수정했으며, SGML Text는 교환되는 동안 하나의 문자열로 취급되도록 처리
 
5.8 함수 정의
 
이 하부 절은 데이터 일관성을 주장하기 위한 조항, 또는 애플리케이션 개발용 수단을 제시하는 것과 그와 관련된 함수를 포함하고 있다.
 
5.8.1 acyclic_superclass_relationship 함수
 
acyclic_superclass_relationship 함수는 상위 품종 관계에 어떤 주기도 없다는 것을 검사한다. 개체 품종에서 its_superclass 속성의 중요성에 의해 상속된 트리는 있고, 비순환 그래프는 없다는 것을 확인한다. 따라서 이러한 함수는 단지 어떠한 품종의 인스턴스도 its_superclass에서의 속성을 본질적으로 하부 절인 다른 것에 참조시키지 않는다는 것을 식별해야 한다.
EXPRESS 명세서: *
)
FUNCTION acyclic_superclass_relationship (
 current:class_BSU;
 visited:SET OF class):LOGICAL;
IF SIZEOF (current.definition)=1 THEN
 IF current.definition[1]\class IN visited THEN
 RETURN (FALSE);
 (*
 wrong: current declares a subclass as its superclass *
)
 ELSE
 IF EXISTS
 (current.definition[1]\class.its-_superclass)
 THEN
 RETURN (acyclic_superclass_relationship (
 current.definition[1]\class.its_superclass,
 visited+current.definition[1]\class));
 ELSE
 RETURN (TRUE);
 END_IF;
 END_IF;
ELSE
 RETURN (UNKNOWN);
END_IF;
END_FUNCTION; --acyclic_superclass_relationship
(
*
 
 
5.8.2 at_most_two_synonyms_per_language 함수
 
at_most_two_synonyms_per_language 함수는 각 언어 변수에 상응하는 syn_name 변수에는 최대 두 개의 동의어가 있다.
 
EXPRESS 명세서: *
)
FUNCTION at_most_two_synonyms_per_language (
 languages:present_translations;
 synonymous_names:SET OF syn_name_type): BOOLEAN;
IF EXISTS (languages) THEN
 REPEAT I:=1 TO SIZEOF (languages.language_codes);
 IF SIZEOF ( QUERY ( s<*
 synonymous_names |
 s.language=languages.language_codes[i] ))>2
 THEN
 RETURN (FALSE);
 END_IF;
 END_REPEAT;
 RETURN (TRUE);
ELSE
 RETURN (SIZEOF (synonymous_names) <= 2);
END_IF;
END_FUNCTION; --at_most_two_synonyms_per_language
(
*
 
5.8.3 check_syn_length 함수
 
check_syn_length 함수는 s의 길이가 s_length로 지정된 길이를 초과하지 않는다.
 
EXPRESS 명세서: *
)
FUNCTION check_syn_length (
 s:syn_name_type;
 s_length:INTEGER):BOOLEAN;
IF 'KEA_DICTIONARY_SCHEMA.LABEL_WITH_LANGUAGE'
 IN TYPEOF (s) THEN
 RETURN (LENGTH(s.1)<=s_length);
ELSE
 RETURN (LENGTH (s)<=s_length);
END_IF;
END_FUNCTION; --check_syn_length
(
*
 
 
5.8.4 codes_are_unique 함수
 
codes_are_unique 함수는 value_code가 목록값에서 유일하다면 참이 된다.
 
EXPRESS 명세서: *
)
FUNCTION codes_are_unique (values:LIST OF dic_value):BOOLEAN;
LOCAL
 1:SET OF STRING:=[ ];
END_LOCAL;
REPEAT I:=1 TO SIZEOF (values);
 L:=1+values[i].value_code;
 (*
duplicates are eliminated. *
)
END_REPEAT;
RETURN (SIZEOF (values)=SIZEOF (1));
END_FUNCTION; -- codes_are_unique
(
*
 
 
5.8.5 definition_available_implies 함수
 
definition_available_implies 함수는 정의가 BSU 변수에 상응하는 정의가 존재 유무를 검사한다. 그러므로, 이런 정의가 존재한다면 표현 변수가 반환된다.
 
EXPRESS 명세서: *
)
FUNCTION definition_available_implies (
 BSU; basic_semantic_unit;
 expression: LOGICAL): LOGICAL;
 RETURN (NOT (SIZEOF (BSU.definition) = 1 ) OR expression);
END_FUNCTION; -- definition_available_implies
(
*
 
5.8.6 is_subclass 함수
 
is_subclass 함수는 하위가 상위의 하위 품종으로 정의된다면 참이다
 
EXPRESS 명세서: *
)
FUNCTION is_subclass ( sub, super: class):LOGICAL;
IF (NOT EXISTS (sub)) OR (NOT EXISTS (super)) THEN RETURN (UNKNOWN);
END_IF;
IF NOT EXISTS (sub.its_superclass) THEN
 RETURN (FALSE);
 (*
 end of chain reached, didn't meet super so far *
)
END_IF;
IF SIZEOF (sub.its_superclass.definition) = 1 THEN
 (*
 definition available *
)
 IF (sub.its_superclass.definition[1]\class = super) THEN
 RETURN ( TRUE );
 ELSE
 RETURN (is.subclass (
 sub.its_superclass.definition[1]\class, super));
 END_IF;
ELSE RETURN (UNKNOWN);
END_IF;
END_FUNCTION; -- is_subclass
(
*
 
 
5.8.7 string_for_derived_unit 함수
 
string_for_derived_unit 함수는 derived_unit의 문자열 표현이(ISO 10303-41 참조) 변수로 반환된다.
첫째로 파생 단위의 요소는 지수의 표시에 따라 분리된다. 두 종류의 요소가 있으면, 음의 표시로부터 양의 것으로 구분하기 위해 ‘/’표시가 사용된다. 음의 지수만 있다면 u-e 표시가 사용된다.
 
점 ‘.’(ISO 8859-1에 따른 십진 코드 46, ISO 10303-21 참조)은 개별적 요소를 분리하는데 사용된다.
 
EXPRESS 명세서: *
)
FUNCTION string_for_derived_unit (u:derived_unit):STRING;
 FUNCTION string_for_derived_unit_element
 (u:derived_unit_element; neg_exp:BOOLEAN
 (*
 print negative exponents with power -1 *
)):STRING;
 (*
 returns a STRING representation of the derived_unit_element
 (according to ISO 10303-41) passed as parameter *
)
 LOCAL
 result:STRING;
 END_LOCAL;
 result:=string_for named_unit(u.unit);
 IF (u.exponent<>0) THEN
 IF (u.exponent>0) OR NOT neg_exp THEN
 result:=result+'
**'+FORMAT (ABS (u.exponent), '1I');
 ELSE

result=result+'
**'+FORMAT (u.exponent, '1I');
 END_IF;
 END_IF;
 RETURN (result);
 END_FUNCTION; -- string_for_derived_unit_element
 LOCAL
 pos, neg:SET OF derived_unit_element;
 us:STRING;
 END_LOCAL;
 (*
 separate unit elements according to the sign of the exponents: *
)
 pos:=QUERY (ue<* u.elements | ue.exponent>0 );
 neg:=QUERY (ue<* u.elements | ue.exponent<0 );
 us:=' ';
 IF SIZEOF (pos)>0 THEN
 (*
 there are unit elements with positive sign *
)
 REPEAT I:LOINDEX (pos) TO HIINDEX (pos);
 us:=us+string_for_derived_unit_element(pos[i], FALSE);
 IF i<>HIINDEX (pos) THEN us:=us+'.'; END_IF;
 END_REPEAT;
 IF SIZEOF (neg)>0 THEN
 (*
 there are unit elements with negative sign, use '/' notation: *
)
 us:=us+'/';
 IF SIZEOF (neg)>1 THEN us:=us+')'; END_IF;
 REPEAT i:=LOINDEX (neg) TO HIINDEX (neg);
 us:=us+string_for_derived_unit_element(neg[i], FALSE);
 IF i <> HIINDEX (neg) THEN us:=us+'.'; END_IF;
 END_REPEAT;
 IF SIZEOF (neg) > 1 THEN us:= us + ')'; END_IF;
 END_IF;
ELSE
 (*
 only negative sign, use u-e notation *
)
 IF SIZEOF (neg)>0 THEN
 REPEAT i:=LOINDEX (neg) TO HIINDEX (neg);
 us:=us+string_for_derived_unit_element(neg[i], TRUE);
 IF i<>HIINDEX (neg) THEN us:=us+'.'; END_IF;
 END_REPEAT;
 END_IF;
END_IF;
RETURN (us);
END_FUNCTION; -- string_for_derived_unit
(
*
 
 
5.8.8 string_for_named_unit 함수
 
string_for_named_unit 함수는 named_unit의 문자열 표현이 변수로 반환된다.
 
EXPRESS 명세서: *
)
FUNCTION string_for_named_unit (u:named_unit):STRING;
IF 'MEASURE_SCHEMA.SI_UNIT' IN TYPEOF(u) THEN

RETURN (string_for_SI_unit (u\si_unit));
ELSE
 IF 'MEASURE_SCHEMA.CONTEXT_DEPENDENT_UNIT' IN TYPEOF(u)
 THEN
 RETURN (u\context_dependent_unit.name);
 ELSE
 IF 'MEASURE_SCHEMA.CONVERSION_BASED_UNIT' IN TYPEOF(u)
 THEN
 RETURN (u\conversion_based_unit.name);
 ELSE
 IF 'KEA_DICTIONARY_SCHEMA' +
 '.NON_SI_UNIT' IN TYPEOF (u)
 THEN
 RETURN (u\non_si_unit.name);
 ELSE
 (*
 pure named_unit instance, not subtyped further. *
)
 RETURN ('name_unknown');
 END_IF;
 END_IF;
 END_IF;
END_IF;
END_FUNCTION; -- string_for_named_unit
(
*
 
 
5.8.9 string_for_SI_unit 함수
 
string_for_SI_unit 함수는 si_unit의 문자열 표현이(ISO 10303-41에 따라) 변수로 반환된다.
 
EXPRESS 명세서: *
)
FUNCTION string_for_SI_unit (unit:si_unit):STRING;
LOCAL
 prefix_string, unit_string: STRING;
END_LOCAL;
IF EXISTS (unit.prefix) THEN
 CASE unit.prefix OF
 exa :prefix_string:='E';
 peta :prefix_string:='P';
 tera :prefix_string:='T';
 giga :prefix_string:='G';
 mega :prefix_string:='M';
 kilo :prefix_string:='k';
 hecto :prefix_string:='h';
 deca :prefix_string:='da';
 deci :prefix_string:='d';
 centi :prefix_string:='c';
 milli :prefix_string:='m';
 micro :prefix_string:='u';
 nano :prefix_string:='n';
 pico :prefix_string:='p';
 femto :prefix_string:='f';

atto :prefix_string:='a';
 END_CASE;
 ELSE
 prefix-sring:= ' ';
 END_IF;
 CASE unit.name OF
 metre :unit_string:='m';
 gram :unit_string:='g';
 second :unit_string:='s';
 ampere :unit_string:='A';
 kelvin :unit_string:='K';
 mole :unit_string:='mol';
 candela :unit_string:='cd';
 radian :unit_string:='rad';
 steradian :unit_string:='sr';
 hertz :unit_string:='Hz';
 newton :unit_string:='N';
 pascal :unit_string:='Pa';
 joule :unit_string:='J';
 watt :unit_string:='W';
 coulomb :unit_string:='C';
 volt :unit_string:='V';
 farad :unit_string:='F';
 ohm :unit_string:='Ohm';
 siemens :unit_string:='S';
 weber :unit_string:='Wb';
 tesla :unit_string:='T';
 henry :unit_string:='H';
 degree_Celsius :unit_string:='Cel';
 lumen :unit_string:='lm';
 lux :unit_string:='lx';
 becquerel :unit_string:='Bq';
 gray :unit_string:='Gy';
 sievert :unit_string:='Sv';
 END_CASE;
 RETURN (prefix_string+unit_string);
END_FUNCTION; -- string_for_SI_unit
(
*
 
 
5.8.10 string_for_unit 함수
 
string_for_unit 함수는 단위의 문자열 표현이(ISO 10303-41에 따라) 변수로 반환된다.
 
EXPRESS 명세서: *
)
FUNCTION string_for_unit (u: unit): STRING;
 IF 'MEASURE_SCHEMA.DERIVED_UNIT' IN TYPEOF (u) THEN
 RETURN (string_for_derived_unit(u));
 ELSE (*
 'MEASURE_SCHEMA.NAMED_UNIT' IN TYPEOF(u) holds true *
)

RETURN (string_for_derived_unit(u));
 END_IF;
END_FUNCTION; -- string_for_unit
(
*
 
 
5.8.11 all_class_descriptions_reachable 함수
 
all_class_descriptions_reachable 함수는 품종을 기술하는 dictionary_element가 class_BSU에 의해 확인되었다면, 모든 그의 상위 품종은 품종 계층 구조에 의해 정의된 상속 트리에서 연산한다.
 
EXPRESS 명세서: *
)
FUNCTION all_class_descriptions_reachable (cl: class_BSU):BOOLEAN;
IF SIZEOF (cl.definition)=0
THEN
 RETURN (FALSE);
END_IF;
IF NOT (EXISTS (cl.definition[1]\class.its_superclass))
THEN
 RETURN (TRUE);
ELSE
 RETURN (all_class_descriptions_reachable(cl.definition[1]\class.its_superclass));
END_IF;
END_FUNCTION; -- all_class_descriptions_reachable
(
*
 
 
5.8.12 compute_known_visible_properties 함수
 
compute_known_visible_properties 함수는 주어진 품종에 대해 가시적인 속성 세트를 연산한다. 만약 정의가 가용하지 않다면, 연산될 수 있는 가시적인 속성만을 반환한다.
 
EXPRESS 명세서: *
)
FUNCTION compute_known_visible_properties(cl:class_BSU):
 SET OF property_BSU;
LOCAL
s:SET OF property_BSU:=[ ];
END_LOCAL;
s:USEDIN(cl,
 'ISO 13584_IEC 61360_DICTIONARY_SCHEMA.PROPERTY_BSU.NAME_SCOPE');
IF SIZEOF (cl.definition)=0
THEN
 RETURN (s);
ELSE
 IF EXISTS (cl.definition[1]\class.its_superclass) THEN
 s:=s+compute_known_visible_properties(cl.definition[1]\class.its_superclas);
 END_IF;
 RETURN (s);
END_IF;
END_FUNCTION;
(
*
 

5.8.13 compute_known_visible_data_type 함수
 
compute_known_visible_data_type 함수는 주어진 품종에 대해 가시적인 data_type의 세트를 연산한다. 정의가 가용하지 않다면, 연산될 수 있는 가시적인 data_type만을 반환한다.
 
EXPRESS 명세서: *
)
FUNCTION compute_known_visible_data_type (cl: class_BSU):
 SET OF data_type_BSU;
LOCAL
 s:SET OF data_type_BSU:=[ ];
END_LOCAL;
s:USEDIN( cl,
 'ISO 13584_IEC 61360_DICTIONARY_SCHEMA.DATA_TYPE_BSU.NAME_SCOPE');
IF SIZEOF (cl.definition)=0
THEN
 RETURN(s);
ELSE
 IF EXISTS (cl.definition[1]\class.its_superclass) THEN
 s:=s+compute_known_visible_data_types(cl.definition[1]\class.its_superclass);
 END_IF;
 RETURN(s);
END_IF;
END_FUNCTION;
(
*
 
 
5.8.14 computer_known_applicable_properties 함수
 
computer_known_applicable_properties 함수는 주어진 품종에 대해 적용 가능한 특성의 세트를 연산한다. 정의가 가용하지 않으면, 연산될 수 있는 적용 가능한 속성만을 반환한다.
 
EXPRESS 명세서: *
)
FUNCTION compute_known_applicable_properties (cl:class_BSU):
 SET OF property_BSU;
LOCAL
 s:SET OF property_BSU:=[ ];
END_LOCAL;
IF SIZEOF (cl.definition)=0
THEN
 RETURN(s);
ELSE
 REPEAT i:=1 TO SIZEOF(cl.definition[1]\class.described_by);
 s:=s+cl.definition[1]\class.described_by[i];
 END_REPEAT
 IF EXISTS (cl.definition[1]\class.its_superclass) THEN
 s:=s+compute_known_applicable_properties(cl.definition[1]\class.its_superclass);
 END_IF;
 RETURN(s);
END_IF;

END_FUNCTION;
(
*
 
 
5.8.15 compute_known_applicable_data_types 함수
 
compute_known_applicable_data_types 함수는 주어진 품종에 대해 적용 가능한 data_type의 세트를 연산한다. 정의가 없다면 연산될 수 있는 적용 가능한 data_type만을 반환한다.
 
EXPRESS 명세서: *
)
FUNCTION compute_known_applicable_data_types (cl:class_BSU):
 SET OF data_type_BSU;
LOCAL
 s:SET OF data_type_BSU:=[ ];
END_LOCAL;
IF SIZEOF (cl.definition)=0
THEN
 RETURN(s);
ELSE
 REPEAT i:=1 TO SIZEOF(cl.definition[1]\class.described_by);
 s:=s+cl.definition[1]\class.described_by[i];
 END_REPEAT;
 IF EXISTS(cl.definition[1]\class.its_superclass) THEN
 s:= s + compute_known_applicable_data_type(cl.definition[1]\class.its_superclass);
 END_IF;
 RETURN(s);
END_IF;
END_FUNCTION;
(
*
 
 
5.8.16 list_to_set
 
list_to_set 함수는 l로 명칭된 목록으로부터 세트를 만든다; 세트에 대한 요소의 유형은 원 목록과 동일하다.
 
EXPRESS 명세서: *
)
FUNCTION list_to_set (1:LIST [0:?] OF GENERIC:type_elem)
 SET OF GENERIC:type_elem;
LOCAL
 s:SET OF GENERIC:type_elem;= [];
END_LOCAL;
REPEAT i:=1 TO SIZEOF(1);
 s:=s+1[i];
END_REPEAT;
RETURN(s);
END_FUNCTION; --list_to_set
END_SCHEMA; --KEA_dictionary_schema
(*

6 ISO13584_IEC61360_language_resource_schema
 
이 스키마는 시스템에서 다양한 언어를 수용하는 방법을 제공한다. 이 표준에서는 IEC 61360-
2(Standard data element types with associated classification scheme for electric components - Part
2:EXPRESS dictionary schema)의 스키마를 그대로 원용하였으므로 자세한 사항은 IEC 61360-2의 6
절을 참고하기 바란다.

작 성
전자부품정보 표준화위원회
Standard Committee on Electronics Parts Information
 
제 정
한국전자정보통신산업진흥회
Standard of Korea Electronics Association