Я разбираю спецификацию ETSI TS 129 002 (3GPP TS 29.002), которая содержит определение класса для контекста приложения:
APPLICATION-CONTEXT ::= CLASS {
&Symmetric OPERATION-PACKAGE OPTIONAL,
&InitiatorConsumerOf OPERATION-PACKAGE OPTIONAL,
&ResponderConsumerOf OPERATION-PACKAGE OPTIONAL,
&code OBJECT IDENTIFIER }
WITH SYNTAX {
[ OPERATIONS OF &Symmetric ]
[ INITIATOR CONSUMER OF &InitiatorConsumerOf
RESPONDER CONSUMER OF &ResponderConsumerOf ]
ID &code }
В той же спецификации есть экземпляры этого класса, например
resetContext-v3 APPLICATION-CONTEXT ::= {
-- Responder is VLR or SGSN if Initiator is HLR or CSS
INITIATOR CONSUMER OF {
resetPackage-v3}
ID {map-ac reset(10) version3(3)} }
Насколько я понимаю, класс имеет две необязательные группы (OPERATIONS и INITIATOR...RESPONDER) и обязательную (ID). Необязательная группа сама состоит из обязательных токенов. В таком случае создание экземпляра класса будет недействительным, поскольку часть RESPONDER отсутствует. Оба фрагмента взяты из одной и той же спецификации, поэтому я предполагаю, что они не должны быть недействительными.
Дополнительный оператор в X.680 утверждает, что появление первого маркера необязательной группы делает группу присутствующей. В этом случае токен INITIATOR помечает присутствующую группу. Но тогда требуемый токен RESPONDER будет отсутствовать.
Какова правильная интерпретация дополнительной группы в этом контексте?