Re: scope of root and meaning of public

Jim,

Thank you for your comments on SRGS. I'm sorry for the long delay in
replying.

(This is the reply from the Voice Browser Working Group to the
following mail:
http://lists.w3.org/Archives/Public/www-voice/2002JulSep/0006.html)

Your mail contains two comments. The first one regards
the scope of root rules, the second one the meaning of "activable".

1. Scope of root rules.
The group does not think that the sentence in section 4.7
("The rule declared as the root rule may be scoped as either public or
private.") is misleading.

The spec clearly distinguishes between a reference to the root rule
of a grammar and a reference to a named rule.
According to section 2.2 of the SRGS spec
<ruleref uri="grammarURI"/>
is a reference to a root rule, and
<ruleref uri="grammarURI#rulename"/>
is a reference to a named rule, whether or not the referenced rule is
declared as the root. (Further details are explained in section 2.2.2.)

A reference to a named rule is valid only if the referenced
rule is declared to be public. A reference to a grammar without a
fragment identifier, i.e. a reference to a root rule, is valid even
if the root rule of the referenced grammar is declared to be private.
(See Section 4.7 for details.)

The same reasoning applies to the activation of rules.

However, the wording of the second and third paragraphs in Section 3.2
seems to be a little confusing:
 "A rule with 'private' scope is visible only within its containing
  grammar. A private rule may be referenced only by other rules within
  the same grammar.
  One exception is that a rule declared as the root may be referenced
  externally even if it is a private rule. See Section 4.7 for details."
  
This wording will be changed in order to make the difference in semantics
between a reference to a rule and a reference to a grammar clearer. 

2. Meaning of "activable".
Your interpretation of what the spec says about the activation of
rules seems to be not quite correct. Being "activable" is not on/off
switchable at engine run-time. The grammar defines which rules can be
activated. At run-time an application may choose which subset of the
"activable" (i.e. public or root) rules are active for recognition as
stated in section 3.2. If a rule is active then the recognizer may
apply each alternative that is defined for this rule. The same holds
for any (directly or indirectly referenced) rule that the recognizer
encounters on its way down the tree. There is no mechanism to
dynamically restrict a given grammar. Specifically, when the root rule
in your example is activated, both the '$people_1st_floor' and the
'$people_2nd_floor' rules may be used during recognition, even though
these rules are not active by themselves.

If you have any further questions, please feel free to ask.

Regards,
Stefan Krause (ScanSoft)
on behalf of the Voice Browser Working Group

Received on Tuesday, 1 April 2003 10:22:19 UTC