{0, O, 1, 0},
{O, O, O, 1}}
3 (a) OPERATION. &Linked. &Linked.&Errors. &erroreode
(b) INTEGER
(e) 1
4 (a) OPERATION. &Linked. &ArgumentType
(b) open type
(e) UniversalString: {planckConstant, "and", hamiltonOperator}
15 来自客体的信息
15.1 客体或客体集合关联表列中的信息可由“InformationFromObject”记法的各种情况予以引用:
InformationFromObjects::=
ValueFromObject ∣
ValueSetFromObjects ∣
TypeFromObject ∣
ObjectFromObject ∣
ObjectSetFromObjeets
ValueFromObj ect: :=
ReferencedObjects
"."
FieldName
ValueSetFromObject: :
RefereneedObjects
"."
FieldName
TypeFromObject::=
ReferencedObjects
"."
FietdName
ObjectFromObject::=
ReferencedObj cots
"."
FieldName
ObjeetFromObject: : =
ReferencedOb] ects
"."
FieldName
ReferncedObject::=
DefinedObject ∣
ParameterizedObjec ∣
DefinedObjectSet ∣
ParameterizedObjectSet ∣
注:提供“InformationFromObject”生成式是为了帮助理解和在英文上下文中使用。它不在本部分中其他地方引用.
15.2本记法引用“ReferencedObject”关联表被引用列的全部内容。
15.3根据“ReferencedObjects”和“FieldName”的形式,此记法可能表示值、值集合、类型、客体或客体集合。由结构“ValueFromObject”、“ValueSetFromObjects”、“TypeFromObject”、“ObjectFromObject”和“ObjectsSetFromObjects”分别表示这五种情况。每一种结构是“InformationFromObjects”的一种特例。
15.4“InformationFromObjects”生成式可划分为两部分。第一部分通过删除最后的(或仅有的)
“PrimitiveFieldName”,及其前面的句号(.)。如果第一部分表示客体或客体集合,那么,15.5到15.12
适用。否则此记法是不合法的。第二部分是最后的(或仅有的)“PrimitiveFieldName”。
注:(指导性的)已知下列定义:
obj.&a.&.b.&c.&d
定义中的第一部分是obj.&a.&b.&c.,第二部分是b.d.
15.5表1的第一列是指15.4中定义的第一部分。第二列是指15.4中定义的第二部分.第三列是指
“InformationFromObjects”5种情况中适用的(即使有也很少)情况。
表1 允许的“InfornmtionFromObjects”情况
Informa tionFromObiects 的第一部分 |
ln[ormationFromObjeces 的第二部分 |
结 构 |
客体
|
固定类型值字段 可变类型值字段 固定类型值集合字段 可变类型值集合字段 类型字段 客体字段 客体集合字段 |
“ValueFromObject” “ValueFromObject” “ValueSetFromObject” 不被允许 “TypeFromObjeet” “ObjectFromObject” “ObjectSetFromObject” |
客体集合
|
固定类型值字段 可变类型值字段 固定类型值集合字段 可变类型值集合字段 类型字段 客体字段 客体集合字段 |
“ValueSeiFromObject” 不被允许 “ValueSetFromObject” 不被允许 不被允许 “ObjectSetFromObject” “ObjectSetFromObject” |
GB/T 16262.1—2006表5)应由信息客体中规定的“Type”确定。
15.7如果第一部分引用一个客体,第二部分引用固定类型值集合字段,那么“ValueSetFromObjects”
与具有SimpleTableConstraint的类型等效。此类型是“<ClassName>.<FieldName>”,其中
<ClassName>是客体的信息客体类别,“<FieldName>”是第二部分引用的字段。SimpleTableCon-
straint是只包含第一部分引用的客体的客体集合组成。
15.8如果第一部分引用客体集合,第二部分引用固定类型值字段或固定类型值集合字段,那么“Val-
ueSetFromObjects”与具有“SimpleTableConstraint”的类型等效。此类型是‘‘<ClassName>. <FieldName>”,其中,“<ClassName>”是第一部分引用的客体集合的信息客体类别,“<FieldName>”是第二部分引用的字段。“SimpleTableConstraint”是由第一部分引用的客体集合组成。
15.9能使用起初是空的但可扩展的信息客体集合定义“VaIueSetFromObject”。凡是被一种应用使用
这种信息客体集合定义的值集合时,这种信息客体集合中应至少有一个客体。
15.10如果包含客体集合,并且最后的“PrimitiveFieldName”标识一个客体集合字段,那么“Object-
SetFromObjects”是所选客体集合的并集。
15.11 如表1所示,如果包含客体集合,并且最后的“PrimitiveFieldName”标识可变类型值或值集合字段或类型字段,则不允许这种记法。
15.12如果列中被引用的所有字符元是空的,则不允许使用这种记法,这会使此字段成为空的(或默认
的),但使用这种记法直接定义OPTIONAL(或DEFAULT)信息客体的字段则是允许的。
15.13来自客体的信息的示例
采用ll. lO、11.11和12.11示例中的定义,下列结构(左列)是有效的,并且可按与右列表示相等效而加以使用。
“ValueFromObject”
invertMatrix.&operationCode |
7 |
determinantlsZero.&.errorCode |
1 |
“TypeFromObject”
invertMatrix.&ArgumentType |
7 |
“ValueSetFromObject”
invertMatrix. &Errors. &errorCode |
{1} |
MatrixOperations.&operationCode |
{7∣和其他} |
“ObjectSetFromObject”
invertMatrix.&Errors |
(determinantlsZero) |
MatrixOperations.&Errors |
(determinantIsgero ∣和其他) |
附 录A
(规范性附录)
类型标识符信息客体类别
A.1 本附录规定一种有用的具有类别引用TYPE-IDENTIFIER的信息客体类别。
注:此信息客体类别是最简单的有用的类别,只具有两个字段}类型OBJECT IDENTIFIER的标识符字段和类型字
段.类型字段定义含有有关此类别中任一特定客体所有信息的ASN.1类型。在本部分中予以定义是因为这
种形式的信息客体有着广泛使用。
A.2 TYPE-IDENTIFIER信息客体定义如下:
TYPE-IDENTIFIER::=CLASS
{
Rid OBJECT IDENTIFIER UNIQUE,
&Type,
}
WITH SYNTAX{ &Type IDENTIFIER BY Rid}
A.3此类别定义为“有用的”信息客体类别,并且无须引入它即可在任一模块中得到。
A.4示例
报文处理系统(MHS)通信的主体可定义为:
MHS-BODY-CLASS::= TYPE-IDENTIFIER
94FaxBody MHS-BODY-CLASS::;
{BIT STRING IDENTIFIED BY {mhsbody 3}}
协议设计者通常定义一个成分以通过规定C.I0中定义的类型INSTANCE OF MHS-BODY-
CLASS附有MHS-BODY-CLASS.
附录B
(规范性附录)
抽象语法定义
11.1 本附录规定了对定义抽象语法有用的信息客体类别ABSTRACT-SYNTAX。
注,推荐凡是在抽象语法定义为一个ASN.1类型的值时要定义此信息客体类别的实例.
B.2 ABSTRACT-SYNTAX信息客体类别定义为:
ABSTRACT-SYNTAX;:=CLASS
{
&Rid OBJECT IDENTIFIER UNIQUE,
&Type,
&property BIT STRING {handles-invalid-encodings(0)) DEFAULT{}
}
WITH SYNTAX{
&Type IDENTIFIED BY &Rid [HAS PROPERTY &property]
}
当&Type字段包含其值构成抽象语法的一个ASN.1类型时,每个ABSTRACT-SYNATAX的
Rid字段是抽象语法名称.特性handles-invalid-encodings表示在解码过程期间,无效的编码不要处理
成差错,以及如何处理这种无效编码留给应用去决定。
11.3此信息客体类别定义为“有用的”,因为它具有通用性并且无须引入它即可在任一模块中得到。
B.4示例
如果定义ASN.1类型叫做XXX-PDU,那么可通过下列记法规定包含XXX-PUD所有值的抽象
语法:
XXX-Abstract-Syntax ABSTRACT-SYNTAX::=
{ XXX-PDU IDENTIFIED BY{ XXX 5}}
详细使用ABSTRACT-SYNTAX信息客体类别的示例见GB/T 16262.1--2006中附录E的E3。
B.5经常是利用参数化类型定义抽象语法(如GB/T 16262.4--2006中定义的),例如用参数提供协议
某些成分的界限。这些参数(受GB/T 16262.4--2006的第10章规定的限制)可在抽象语法定义时予
以确定,或可作为抽象语法的参数予以推进。
附录C
(规范性附录)
单一实例类型
3.4.14)的类型和值记法。通过使用信息客体类别赋值(规定信息
客体类别引用作此记法的一部分).这引起类型能够传送定义为类别TYPE-IDENTIFIER的信息客体
类别中的信息客体的任何值。
C.2在GB/T 16262.1--2006的16.2中引用了“InstaneeOfType”记法,作为生成“Type”的记法之一,
并定义如下:
InstanceOfType::=INSTANCE OF DefinedObjectClass
注:在GB/T 16262.3--2006第10章规定了通过应用“表约束”能约束此类型的方法,将此类型的值限于表示此类
别某个特定信息客体集合的值.
C.3 此记法规定按照“DefinedObjectClass”的实例含有&id字段(OBJECT IDENTIFIER)和&Type
值字段的类型。
注:这种结构通常由一个客体集合约束,而此客体集合常常是(但未必是)(GB/T 16262.4--2006中8.3—8.11定
义的)模型引用名,其实际客体集合已在别处定义.
C.4所有单一实例类型具有通用类型的标记,号码8。
注。这与外部类型的通用标记相同,在使用ASN.1基本编码规则时,使用单一实例类型能与外部类型比特兼容.
C.5单一实例类型有一个相关的序列类型,用此相关的序列类型定义单一实例类型的值和子类型。
注:在此类型受GB/T 16262.3--2006约束记法约束时,此相关序列类型亦受到约束。由于对单一实例的约束从而
导致对此相关序列类型的约束在GB/T 16262.3--2006的附录A中予以规定。
C.6假设相关的序列类型在实施EXPLCIT TAGS的环境中予以定义。
C.7相关的序列类型应是:
SEQENCE
{
type-id <DefinedObjeetClass>. &id
value [0-]<DefinedObjeetClass>.&Type
}
式中“(DefinedObjeetClass)”用于“InstanceOfType”记法中时由特定的“DefinedObjeetClass”代替。
InstanceOfValue::= Value
List”。
C.10示例
基于A.4所给示例的一个示例如下:
此类型:
INSTANCE OF MHS-BODY-CLASS
具有下列的相关序列类型:
SEQENCE
{
type-id MHS-BODY-CLASS. &id
value[O] MHS-BODY-CLASS. &Type
}
表约束应用于此类型的示例可在GB/TI6262.3--2006的附录A中找到。
附录D
(资料性附录)
示 例
D.1 简化的OPERATION类别用法举例
设OPERATION和ERROR信息客体类别的简单定义如下:
OPERATION :: = CLASS
{
OPTIONAL, OPTIONAL, ERROR OPTIONAL, OPERATION OPTIONAL, BOOLEAN DEFAULT TRUE, INTEGER UNIQUE |
&ResuhType
&Errors
&Linked
&resuhReturned
&operationCode
}
WITH SYNTAX
&ArgumentType] &ResultType] &resultReturned] &Errors] &Linked] &operationCode
|
[ARGUMENT
[RESULT
[RETURN RESULT
[ERRORS
[LINKED
CODE
}
ERROR :: = CLASS
{
&ParameterType OPTIONAL,
&errorCode INTEGER UNIQUE
}
WITH SYNTAX
{
[PARAMETER &ParameterType]
CODE &errorCode
}
我们能够定义包含两个OPERATION客体的下列客体集合:
My-Operations OPERATION ::={operationA ∣operationB}
operationA OPERATION::={
ARGUMENT INTEGER
ERRORS{{PARAMETER INTEGER CODE 1000} ∣{CODE 1001}}
CODE l
}
operationB OPERATION::一{
ARGUMENT IA5String
RESULT BOOLEAN
ERRORS{{CODE 1002}∣{PARAMETER IA5String CODE 1003})
CODE2
}
按下式从此客体集合提取ERROR客体集合。
My-OperationErrors ERROR::={My-Operation. &Errors)
得到的客体集合是:
My-OperationErrors ERROR::一{
{ PARAMETER INTEGER CODE 1000} ∣
{ CODE 1001}∣
{ CODE 1002) ∣
{ PARAMETER IA5String CODE 1003)
}
按下式提取操作差错的差错代码集合:
My-OperationErrorCodes INTEGER::={My-Operation. &Errors. &errorCode}
得到的值集合是t
My-OperationErrorCodes INTEGER::={1000 ∣1001 ∣1002 ∣ 1003}
D.2 “ObjectClassFieldType"用法举例
“ObjectClassFieldType”用于类型规范,例如:
--从此类别提取“ObjectClassFieldType”.在此提取中只能使用前5个字段.
EXAMPLE-CLASS ::= CLASS {
&TypeField OPTIONAL,
&fixedTypeValueField INTEGER OPTIONAl.,
&variableTypeValueFieid &TypeField OPTIONAL,
&FixedTypeValueSetField INTEGER OPTIONAL,
&VariableTypeValueSetField &TypeField OPTIONAL,
&objectField SIMPLE-CLASS OPTIONAL,
&ObjectSetField SIMPLE-CLASS OPTIONAL,
}
WITH SYNTAX {
[TyPE-FIELD &TypeField]
[FIXED-TYPE-VALUE-FIELD &fixedTypeValueField]
[VARIABLE-TYPE-VALUE-FIELD &variableTypeValueField]
[FIXED-TYPE-VALUE-SET-FIELD &FixedTypeValueSetField]
[VARIABLE-TYPE-VALUE-SET-FIELD &VariableTypeValueSetField]
[OBJECT-FIELD &objectField]
[OBJECT-SET-FIELD &ObjectSetField]
}
SIMPLE-CLASS::= CLASS {
&value INTEGER
}
WITH SYNTAX {
&value
}
一此类型包含使用“ObjectClassFieldType”记法规定的成分。
一在类型字段和可变类型值和值集合字段情况,得到的成分类型是开放类型。
一在固定类型值和值集合字段情况,得到的成分类型是“INTEGER”。
一注:在“ObjectClassFieldType”的所有下列使用中,删去约束;
一当引用“ObjectClassFieldType”时,通常你会使用约束。
EXAMPLE-CLASS.&TypeField, EXAMPLE-CLASS.&fixedTypeValueField, EXAMPLE-CLASS.&variableTypcValueField, EXAMPLE-CLASS.&FixeclTypeValueSetField, EXAMPLE-CLASS. &VariableTypeValueSetField |
openTypeComponentl
integerComponentl
openTypeComponent2
integerComponent2
openTypeComponent3
BOOLEAN :TRUE, 123, IA5String :"abcdef", 456, BIT STRING : 0101010101 B
|
openTypeCom ponent1
integerComponentl
openTypeComponent2
integerComponent2
openTypeComponent3
D.3 举例说明客体和客体集合的用法
下面使用D.2中定义的客体类别:
objectA EXAMPLE-CLASS::={
FIXED-TYPE-VALUE-FIELD 123
FIXED-TYPE-VALUE-SET-FIELD {1∣2∣∣3}
OBJECT-FIELD {1}
OBJECT-SET-FIELD {{2}∣{3}}
objectB EXAMPLE-CLASS : = = {
TYPE-FIELD IA5String
FIXED-TYPE-VALUE-FIELD 456
VARIABLE-TYPE-VALUE-FIELD “abc”
VARIABLE-TYPE-VA LUE-SET-FIELD {“d” ∣“e” ∣“f”}
--下列客体集合包含二个定义的客体和一个内插客体。
ObjectSet EXAMPLE-CLASS::={
objeetA ∣
objectB
TYPE-FIELD INTEGER
FIXED-TYPE-VALUE-FIELD 789
VARIABLE-TYPE-VALUE-SET-FIELD' {4∣5∣6}
--下列定义从客体和客体集合中提取信息
integerValue INTEGER : := objectA.&fixedTypeValueField
stringValue IA5String ::= objectB.8LvariableTypeValueField
IntegerValueSetFromObjectA INTEGER : := { objectA.&FixedTypeValueSetField }
StringType ::= objectB.&TypeField
objectFromObjectA SIMPLE-CLASS :: = objectA. &objectField
ObjectSetFromObjectA SIMPLE-CLASS ::= { objectA.&ObjectSetField }
SetOfValuesInObjectSet INTEGER ::= { ObjectSet. &fixedTypeValueField )
SetOfValueSetsInObjectSet INTEGER ::= { ObjectSet.&FixedTypeValueSetField }
SetOfObjectslnObjectSet SIMPLE-CLASS ::: { ObjectSet.&obiectField }
SetOfObjeetSetslnObjectSet SIMPLE-CLASS :: = { ObjectSet. &ObjectSetField }
附录E
(资料性附录)
ASN.1客体集合扩晨模块的个别指导附录
E.1 ASN.1规范能够定义信息客体集合,并且通过扩展标记或使用集合运算包含可扩展客体集合使
这种客体集合成为可扩展的.客体集合时的扩展标记的使用不同于类型时的使用,在类型中,它规定应
用能够动态地增加/去掉通信实例用客体集合中的客体。
E.2如果约束客体集合是可扩展的,与未被满足的约束有关的表和成分,不被认为自身存在差错。在
这些情况中,如果在客体集合中没有找到UNIQUE字段的值,这不是差错,但是如果找到,那么,如果
没有满足对此引用类型施加的约束则是差错。
附录F
(资料性附录)
记法综述
在第7章中定义了下列词项。
objectclassreference
objectreferenee
objectsetreferenee
typefieldreference
valuefieldreference
valuesetiieldreference
objecdieldreference
objectsetfieldreierenee
word
CLASS
INSTANCE
SYNTAX
UNIQUE
在GB/T 16262.1--2006中定义了下列词项并用于本部分:
empty
modulereference
″::= ″
″{″
″}″
″,″
″. ″
″[″
″] ″
″:″
DEFAULT
OF
OPTIONAL
WITH
在GB/T 16262.1--2006中定义了下列生成式并用于本部分:
BuihinValue
ElementSetSpec
NonParameterizedTypeName
ReferencedValue
Type
Value
ValueSet
XMI.BuiltinValue
GB/T 16262.4--2006中定义Y-F列生成式并用于本部分:
ParameterizedObjectClass
ParameterizedObjectSet
ParameterizedObj ect
DefinedObjectClass : :=
ExternalObjectClassReference∣ohjectclassreference∣UsefulObiectClassReference
ExternalObjectClassReference :: = modulereference ". " objectclassreference
UsefulObjeetClassReterence: : =
TYPE-IDENTIFIER ∣
ABSTRACT-SYNTAX
ObjectClassAssignment : := objectclassreference ": : "ObjectClass
ObjectClass ::= DefinedObjectClass ∣ObiectClassDefn ∣ParameterizedObjectClass
ObjectClassDefn ::= CLASS "{" FieldSpec "," + "}" WithSyntaxSpec?
FieldSpec : : =
TypeFieldSpec ∣
FixedTypeValueFieldSpee ∣
VariableTypeValueFieldSpec ∣
FixedTypeValueSetFieldSpec ∣
VariableTypeValueSetFieldSpec ∣
ObjectFieldSpec ∣
ObjectSetFieldSpec
PrimitiveFieldName : :=
Typefieldreference ∣
Valuefieldreference ∣
valuesedieldreference ∣
objectfieldreference ∣
objectsetfieldreference
FieldName ::= PrimitiveFieldName ". " +
TypeFieldSpec : := typefieldreference TypeOptionalitySpec?
TypeOptionalitySpee ::= OPTIONAL [ DEFAULT Type
FixedTypeValueFieldSpec::=valuefieldreference Type UNIQUE ? ValueOptionalitySpec ?
ValueOptionalitySpec::= OPTIONAl. ∣DEFAULT Value
VariableTypeValueFieldSpec::=valuefieldreference FieldName ValueOptionalitySpee ?
FixedTypeValueSetFieldSpec::=valuesedieldreference Type ValueSetOptionalitySpec ?
ValueSetOptionalitySpec :: = OPTIONAL [ DEFAULT ValueSet
VariableTypeValueSetFieldSpee::=valuesetfieldreferenee FieldName ValueSetOptionli-
tySpec?
ObjeetFieldSpec::=objectfieldreference DefinedObjectClass ObjectOptionalitySpee?
ObjeetOptionalitySpee :: = OPTIONAL [ DEFAULT Object
ObjeetSetFieldSpec ::= objectsetfieldreference DefinedObjectClass ObjectSetOptionali-
tySpec?
ObjectSetOptionalitySpee :: = OPTIONAL ∣DEFAULT ObjectSet
WithSyntaxSpec : : = WITH SYNTAX SyntaxList
SyntaxList : : = "{" TokenOrGroupSpec empty + "}"
TokenOrGroupSpec ::= RequiredToken ∣OptionalGroup
OptionalGroup : : ="[" TokenOrGroupSpee empty + "]"
RequiredToken :: = Literal ∣PrimitiveFieldName
Literal :: = word ] ","
DefinedObject ::= ExternalObjeetReferenee ∣objectreference
ExternalObjectReferenee :: = moduIereferenee ". " objectreference
ObjectAssignment : := objectreference DefinedObjectClass ": : =" Object
Object ::= DefinedObjeet ∣ObjectDefn ∣ObjectFromObjeet ∣ParameterizedObjeet
ObjectDefn ::= DefaultSyntax ∣DefinedSyntax
DefaultSyntax : : = "{ ~' FieldSetting "," * "}"
FieldSetting : :-= PrimitiveFieldName Setting
DefinedSyntax ::= { DefinedSyntaxToken empty * "} "
DefinedSyntaxToken :-= Literal ∣Setting
Setting :: = Type ∣Value ∣ValueSet ∣ Object ∣ObjectSet
DefinedObjeetSet ::= ExternalObjectSetReferenee ∣objectsetreferenee
ExternalObjectSetReferenee : := modulereference ". " objeetsetreferenee
ObjeetSetAssignment :: = objectsetreferenee DefinedObjeetClass ":: =" ObjectSet
Objeetset : : = "{ " ObjeetSetSpec "}"
ObjeetSetSpec :: =
RootElementSetSpee ∣
RootElemerttSetSpee ",""..." ∣
"..." ∣
"..." ","AdditionalElementSetSpec ∣
RootElementSetSpec",""...""," AdditionalElementSetSpec
ObjectSetElements : :=
Object ∣DefinedObjectSet ∣ObjectsetFromObjeets ∣ParameterizedOhjectSet
ObjeetClassFieldType ,, = DefinedObjectClass ". " FieldName
ObjeetClassFieldValue ::= OpenTypeFieldVai [ FixedTypeFieldVal
OpenTypeFieldVal ::= Type ":" Value
FixedTypeFieldVal :. = BuiltiaValue ∣ReferencedValue
∣InformationFromObjects ::= ValueFromObject ∣ValueSetFromObjects ∣
TypeFromObjeet ∣ObjeetFromObject ∣ObjectSetFromObjects
ReferencedOb}ects :: =
DefinedObject ∣ParameterizedObject ∣
DefinedObjectSet ∣ParameterizedObjectSet
ValueFromObject : : = ReferencedObjects ". " FieldName
ValueSetFromObjects :: = ReierencedObjects ". " FieldName
TypeFromObject :: = ReferencedObjects ". " FieldName
ObjeetFromObject :: = ReferencedObjects ". " FieldName
ObjectSetFromObjects : := ReferencedObjects ". " FieldName
InstanceOfType ::= INSTANCE OF DefinedObjectClass
InstanceOfValue ::= Value
933