W3C

Implementation Report -- Speech Recognition Grammar Specification Version 1.0

Date: 18 December 2003

Contributors:
Stefan Krause, ScanSoft (lead)
Andrew Hunt, ScanSoft (lead)
Dan Burnett, Nuance Communications
Emily Candell, Comverse
Jerry Carter, Invited Expert
Debbie Dahl, Invited Expert
Dan Evans, Nortel Networks
Debajit Ghosh, Nuance Communications
Jeff Kusnitz, IBM
Sol Lerner, ScanSoft
Bruce Lucas, IBM
Scott McGlashan, PipeBeach
Carl Mitchell, Lucent
Stephen Potter, Microsoft
Luc Van Tichelen, ScanSoft
Athos Toniolo, Loquendo
Qiru Zhou, Lucent

Introduction

The Speech Recognition Grammar Specification entered the Candidate Recommendation period on 26th June 2002. The planned date for exiting Candidate Recommendation was 30 August 2002. However, it took more time than originally expected to meet the exit criteria.

This document contains the results of particular SRGS implementations that were tested against the SRGS Test Set. The results verify that the specification is implementable and demonstrate the interoperability of implementations.

A few features cannot be fully covered by pass/fail testing for the following reasons:

The test set nevertheless contains tests for these features which, however, merely focus on the syntax. Statements on the implementability and utility of these features are contained in the testimonials listed below.

All required features in the SRGS specification have been implemented separately at least twice. All optional features have been implemented at least once.

One feature, more precisely, a special case of a particular feature has been removed from the specification due to insufficient coverage by implementations (test cases tag-repetition.grxml and tag-repetition.gram). Another feature, language attachments on rule references, has been removed from the specification because the group received negative feedback from implementers (test cases lang-ruleref.grxml and lang-ruleref.gram).

Note: This Implementation Report did not attempt conformance testing of implementations. The data presented here is intended solely to be used as proof of SRGS implementability and interoperability. It is only a snapshot of the current implementation behaviors. This data is not intended to be used for assessing or grading the performance of any individual implementation.


Testimonials

Speech Server from Lucent Speech Solutions

Lucent Speech Solutions has implemented the W3C Speech Recognition Grammar Specification in full. The specification is well written and rich with examples and details. Lucent has embedded a GRXML/ABNF grammar compiler in its VoiceXML 2.0 compliant Speech Server product. The Lucent Speech Server is designed for high density scalable solutions, where each server is capable of handling up to 192 simultaneous ASR and TTS channels.

All six user agents are implemented, as listed below:

In addition, an XML -> ABNF converter (grammar processor) has been implemented.

Note 1: Unless noted otherwise, the root rule is imported for all grammar documents.

Note 2: Quotes were added around any token that contained whitespace in the meta in.X declarations to simplify tokenization in the automated testing procedure. In abnf-keywords.gram, for example,
    meta 'in.1' is 'lexicon and public base';
was replaced by
    meta 'in.1' is 'lexicon and "public base"';

Note 3: Although the grammar processors can handle any combination of languages, our ASR engine can currently only provide missing pronunciations in the default language. If a grammar with en as the default language contained both "xyz!en" and "xyz!es", for example, "xyz!es" would have to be provided in a lexicon while "xyz!en" could be pronounced using letter-to-sound rules.


Microsoft SAPI

Microsoft has implemented the XML Form of the Speech Recognition Grammar Specification (SRGS) in a developmental version of the Microsoft Speech API (SAPI).

SAPI is an API which allows developers to use speech recognition and/or speech synthesis in their applications. To conduct the tests specified in the implementation report, a text-input interface was used with SAPI's core grammar processor. Given SAPI's ability to use the core grammar processor in speech, DTMF and text environments, we believe this successfully demonstrates coverage of SRGS in the following agents required by the Implementation Report Plan :

Previous versions of SAPI may be found at http://www.microsoft.com/speech/.

As a founding member of the Speech Application Language Tags (SALT) Forum (http://www.saltforum.org) and an active member of the W3C Voice Browser and Multimodal Interaction Working Groups, Microsoft believes speech standards will play a key role in the growing market for speech applications. We consider SRGS a thorough, well-designed specification which, by providing a common syntax for speech recognition grammars, should help promote interoperability and portability in speech application development. Microsoft intends to support SRGS in its suite of forthcoming SALT products:

As required by the Implementation Report plan, some technical details of the SAPI implementation are as follows:

  1. Relationship of SAPI output to LPS
    SAPI's XML representation of recognition output was mapped explicitly to the LPS defined in Appendix H by a recursive traversal of the parse tree. In some tests a complete mapping into LPS was not always possible, for example, the content of the tag element and the exact path of external rules are not copied directly. However, since these are minor aspects of only the surface form of LPS (itself an informative part of the specification) and they in no way affect the behaviour of the grammar processor as defined in the specification, we do not consider these an unsuccessful implementation of the tests.
  2. Weights and probabilities
    As noted in the Implementation Report Plan, pass/fail testing of weights on alternatives and probabilities on repeats is not possible. We believe these features are implementable and useful. We have implemented support for both weights and repeat probabilities into our ASR grammar processor. We believe that, when properly estimated, weights and repeat probabilities have a positive effect in maximizing recognizer performance.
  3. Language support
    Speech recognition engines were not available for certain languages required by the tests. For those tests where a single language is used in the grammar and a recognition engine was not available for that language, SAPI's text input mechanism was used with the grammar processor to compile the grammar, parse the input and produce successful output, and we have considered this a successful implementation.
  4. Test set version
    The SAPI implementation was run on the set of tests posted at: http://www.w3.org/2002/06/srgs-irp/ on 24 October 2002 (see http://lists.w3.org/Archives/Public/www-voice/2002OctDec/0039.html for details).
  5. Unimplemented features
    As noted in the results of the tests, the following features of the specification have not been implemented.
    • multiple languages within the same grammar
      This appears to be a useful feature for certain deployment scenarios.
    • lexicon content
      Although we have implemented the syntax of <lexicon> (and thereby the correct test set behaviour), we have not implemented the semantics of lexicon look-up. The ability to specify pronunciations is clearly a very useful feature.
    • repetition of tag elements equivalent to a single tag element (tag-repetition.grxml.)
      In our belief, where tag elements are repeated without tokens for input, this is a developer error, and platforms should not be required to resolve the repetition to a single tag.

IBM Java Speech API support for W3C Speech Recognition Grammar Specification

IBM has implemented the W3C Speech Recognition Grammar Specification, both XML Form and ABNF in its WebSphere Voice Server VoiceXML browser products, as well as in its Java Speech API implementation. The results are attached.

The following features are not supported :


BeVocal Foundation Platform

BeVocal has implemented the XML and ABNF form of the Speech Recognition Grammar Specification [SRGS] in the Grammar module of its VoiceXML 2.0 Interpreter. The VoiceXML 2.0 Interpreter is the core of the BeVocal Foundation Platform which is currently hosting Carrier and Enterprise voice applications.

BeVocal has provided advanced VoiceXML 2.0 and grammar (XML and ABNF) features to our developer community through frequent releases to BeVocal Cafe (http://cafe.bevocal.com). This has enabled BeVocal to provide real implementation feedback about SRGS to the W3C Voice Browser Working Group.

The SRGS Candidate Recommendation is a significant milestone to the voice industry and also the voice application development community. Not only is it already implemented and used in production by a number of voice solutions providers like BeVocal, but it is well-written, concise, with clear examples for developers.

In addition to an XML form, SRGS provides a more concise ABNF form for grammar developers. At BeVocal, both forms create the same internal representation, which is a testament to how well the two forms are aligned in design and features.

BeVocal is providing the following Implementation Report on a specific set of ABNF features which have been implemented and tested on an internal prototype. An estimated production release for these features is in the next release following our Q1 release.

Note also that BeVocal has implemented rule weights and repeat probabilities as described in SRGS, in both our ABNF and XML implementation.


SpeechWorks OpenSpeech Recognizer

SpeechWorks has implemented the W3C Speech Recognition Grammar Specification fully in OpenSpeech Recognizer, our high performance network-based speech recognition engine that is optimized for VoiceXML applications. Through this native implementation we provide an easy path for telephony platform vendors to support the grammar specification in their own DTMF- and ASR-capable products. The SpeechWorks implementation features complete multilingual capabilities allowing arbitrary grammatical constructs using an unlimited number of languages and Unicode character encodings, along with embedded ECMA-262 scripts for application-specific search pruning and semantic result computation. Based on our own experience and feedback from many partners and customers, we give a strong endorsement to SRGS as practical, expressive, and complete.

Note: While we did implement language attachments on rule references, this feature was found to be unnecessary and confusing to many users. We support its removal.


Loquendo Speech Suite

Loquendo believes in the W3C standardization activity for the global speech technology market and announces the W3C Speech Recognition Grammar Specification implementation in Loquendo ASR product, which is part of the high-quality Loquendo Speech Suite. Loquendo's Speech Suite offers all that is necessary for developing any kind of flexible speech-enabled services. It enables you to choose from Loquendo's technological components range including Loquendo TTS, Loquendo ASR and VoiceXML Interpreter, and exploits them using a flexible integration infrastructure.

The current implementation fully supports the XML format of W3C SRGS (ABNF format is not yet supported) and it is being extended to support DTMF input.

Loquendo implementation was run on the official test set ("srgs-test-set-20021017.zip") by applying the following changes: ignore the removed tests ("tag-repetition", "lang-ruleref") and manual update to the latest tests regarding media-type handling. The tests ran on a development version of the grammar processor which allows a better internal LPS output structure.

Technical details of Loquendo implementation are the following:


Test Results

Summary

Section XML ABNF
Number of tests Coverage Number of tests Coverage
Section 2. Rule Expansions 44 100% 50 100%
Section 3. Rule Definitions 10 100% 11 100%
Section 4. Grammar Documents 34 100% 40 100%
Section 5. Conformance 8 100% 7 100%
Appendix E. DTMF Grammars 4 100% 6 100%
Appendix J. Example Grammars 8 100% 6 100%
Total 109 100% 121 100%

The following two tables indicate the outcome of each single test. Possible outcomes are "pass", "fail" or "no-lang". "Pass" means that the output of the grammar processor was equivalent to the output specified in the respective test file for all inputs in this test file. "No-lang" means the recognizer did not have the capability to support a specific language or combination of languages required for a grammar.

Tests marked as "removed" in the status column have been removed from the test set because the tested feature has been removed from the specification.

Results for Each Test in XML Form

Test ID Ref Description Level Speech Server from Lucent Speech Solutions Microsoft SAPI IBM Java Speech API support for W3C Speech Recognition Grammar Specification SpeechWorks OpenSpeech Recognizer Loquendo Speech Suite Status
token-basic.grxml 2.1 basic tokens required pass pass pass pass pass complete
token-quoted.grxml 2.1 quoted tokens required pass pass pass pass pass complete
token-unicode.grxml 2.1 Unicode tokens required pass pass pass pass pass complete
token-element.grxml 2.1 token delimited by "token" element required pass pass pass pass pass complete
ruleref-nonexistent-local.grxml 2.2 reference to a non-existent local rule reference required pass pass pass pass pass complete
duplicated-rulenames.grxml 2.2 duplicate rulenames required pass pass pass pass pass complete
duplicated-special-rulenames.grxml 2.2 redefining special rulenames required pass pass pass pass pass complete
ruleref-local.grxml 2.2.1 local rule reference required pass pass pass pass pass complete
ruleref-ext-rule.grxml 2.2.2 reference to a named rule of a grammar identified by a URI required pass pass complete
ruleref-ext-root.grxml 2.2.2 reference to the root rule of a grammar identified by a URI required pass pass complete
ruleref-ext-rule-mediatype.grxml 2.2.2 reference to a named rule of a grammar identified by a URI with a Media Type required pass pass complete
ruleref-ext-root-mediatype.grxml 2.2.2 reference to the root rule of a grammar identified by a URI with a Media Type required pass pass complete
ruleref-mismatch-modes.grxml 2.2.2 modes do not agree between rulerefs required pass pass pass pass pass complete
ruleref-mismatch-mediatype.grxml 2.2.2 media type specified does not match actual content required pass pass complete
special-null.grxml 2.2.3 special rule definitions ($NULL) required pass pass pass pass pass complete
special-void.grxml 2.2.3 special rule definitions ($VOID) required pass pass pass pass pass complete
special-garbage.grxml 2.2.3 special rule definitions ($GARBAGE) required pass pass pass pass pass complete
lang-ruleref.grxml 2.2.5 xml:lang attribute on ruleref optional pass no-lang no-lang pass   removed
sequence-token.grxml 2.3 sequence of tokens required pass pass pass pass pass complete
sequence-ruleref.grxml 2.3 sequence of rule references required pass pass pass pass pass complete
sequence-ruleref-token.grxml 2.3 sequence of tokens and rule references required pass pass pass pass pass complete
sequence-item-empty.grxml 2.3 empty item element required pass pass pass pass pass complete
sequence-item-whitespace.grxml 2.3 element containing only whitespace required pass pass pass pass pass complete
alternatives-no-weights.grxml 2.4 a set of alternatives with no weights required pass pass pass pass pass complete
alternatives-all-weights.grxml 2.4 a set of alternatives with a legal weight on every alternative required pass pass pass pass pass complete
alternatives-some-weights.grxml 2.4 a set of alternatives with legal weights on one or many but not all alternatives required pass pass pass pass pass complete
alternatives-one-with-weight.grxml 2.4 a single alternative with a weight required pass pass pass pass pass complete
alternatives-one-no-weight.grxml 2.4 a single alternative without a weight required pass pass pass pass pass complete
alternative-null.grxml 2.4 alternative reference to NULL required pass pass pass pass pass complete
alternative-one-tag.grxml 2.4 alternative reference to a single tag required pass pass pass pass pass complete
alternative-one-item.grxml 2.4 one-of element containing a single item required pass pass pass pass pass complete
repeat-n-exact.grxml 2.5 2.5 repeat an expansion exactly "n" times required pass pass pass pass pass complete
repeat-m-n-times.grxml 2.5 repeat an expansion between "n" and "m" times required pass pass pass pass pass complete
repeat-m-or-more.grxml 2.5 repeat an expansion "m" or more times required pass pass pass pass pass complete
repeat-optional.grxml 2.5 optional expansion required pass pass pass pass pass complete
repeat-with-probs.grxml 2.5 repeat probabilities required pass pass pass pass pass complete
repeat-optional-void.grxml 2.5 optional VOID equivalent to NULL required pass pass pass pass pass complete
repeat-many-null.grxml 2.5 any number of NULL's is equivalent to a single NULL required pass pass pass pass pass complete
repeat-0-times.grxml 2.5 zero repetitions never matched required pass pass pass pass pass complete
tag-many.grxml 2.6 any number of tags may be included required pass pass pass pass pass complete
tag-repetition.grxml 2.5 any number of possible repetitions of a tag is equivalent to a single instance of the tag required fail fail pass fail   removed
tag-standalone.grxml 2.6 standalone tags are legal required pass pass pass pass pass complete
xml_lang-token-single-lang.grxml 2.7 xml:lang attribute on token optional pass no-lang

pass

pass pass complete
xml_lang-item-single-lang.grxml 2.7 xml:lang attribute on item optional pass no-lang pass pass pass complete
xml_lang-one-of-single-lang.grxml 2.7 xml:lang attribute on one-of optional pass no-lang pass pass pass complete
lang-sequence.grxml 2.7 xml:lang attribute on sequence optional pass no-lang pass pass pass complete
rule-basic-def.grxml 3.1 rule definition required pass pass pass pass pass complete
rule-no-empty.grxml 3.1 no empty expansions required pass pass pass pass pass complete
rule-tag.grxml 3.1 single tag expansion required pass pass pass pass pass complete
rule-empty-item.grxml 3.1 empty item expansion required pass pass pass pass pass complete
rule-null.grxml 3.1 NULL expansion required pass pass pass pass pass complete
rule-private.grxml 3.2 declaration of private rule required pass pass pass pass pass complete
rule-public.grxml 3.2 declaration of public rule required pass pass pass pass pass complete
ruleref-ext-private-root.grxml 3.2 external reference to private root rule required pass pass pass pass pass complete
ruleref-ext-private-rule.grxml 3.2 external reference to private non-root rule required pass pass pass pass pass complete
example.grxml 3.3 example phrases required pass pass pass pass pass complete
no-rules.grxml 4 Grammar with no rules required pass pass pass pass pass complete
no-version.grxml 4 Grammar with no version required pass pass pass pass pass complete
no-namespace.grxml 4 XML grammar with no namespace required pass pass pass pass pass complete
no-doctype.grxml 4 XML grammar with no DOCTYPE required pass pass pass pass pass complete
doctype.grxml 4 XML grammar with a DOCTYPE required pass pass pass pass pass complete
korean-yesno-utf16-le.grxml 4.2 UTF16 Little Endian Korean XML grammar required pass pass pass pass no-lang complete
korean-yesno-utf16-be.grxml 4.2 UTF16 Big Endian Korean XML grammar required pass pass pass pass no-lang complete
header-encoding-none.grxml 4.4 no character encoding required pass pass pass pass pass complete
korean-yesno-utf8.grxml 4.4 UTF8 Korean XML grammar required pass pass pass pass no-lang complete
language-missing.grxml 4.5 language declaration missing is an error required pass pass pass pass pass complete
language-en-us.grxml 4.5 language declaration of en-US for mode="voice" required pass pass pass pass pass complete
language-other.grxml 4.5 other language declaration for mode="voice" required pass pass pass pass pass complete
language-dtmf-ignore.grxml 4.5 language declaration ignored for mode="dtmf" optional pass pass pass pass fail complete
no-language-no-mode.grxml 4.5 Grammar with no mode and no language required pass pass pass pass pass complete
mode-none.grxml 4.6 no mode declaration implies voice required pass pass pass pass pass complete
mode-voice.grxml 4.6 mode declaration voice required pass pass pass pass pass complete
mode-dtmf.grxml 4.6 mode declaration dtmf optional pass pass pass pass fail complete
root-rule-decl.grxml 4.7 root rule declaration required pass pass pass pass pass complete
root-rule-decl-missing.grxml 4.7 root rule declaration missing required pass pass pass pass pass complete
uri-ref-undefined-root-referenced.grxml 4.7 grammar ref with no fragment and no root rule required pass pass pass pass pass complete
uri-ref-undefined-root-referring.grxml 4.7 grammar ref with no fragment and no root rule required pass pass pass pass pass complete
undefined-root.grxml 4.7 reference to undefined root rule required pass pass pass pass pass complete
tag-format-decl.grxml 4.8 tag format declaration required pass pass pass pass pass complete
tag-format-decl-missing.grxml 4.8 omitted tag format declaration required pass pass pass pass pass complete
base-declaration.grxml 4.9 base uri declaration required pass pass pass pass pass complete
metabase-declaration.grxml 4.9.1 meta declaration of base uri required pass pass pass pass pass complete
base-metabase.grxml 4.9.1 base uri precedence required pass pass pass pass pass complete
lexicon-none.grxml 4.10 zero pronunciation lexicon declarations required pass pass pass pass pass complete
lexicon-one.grxml 4.10 one pronunciation lexicon declaration required pass pass pass pass fail complete
lexicon-many.grxml 4.10 many pronunciation lexicon declarations required pass pass pass pass fail complete
meta.grxml 4.11 meta declarations required pass pass pass pass pass complete
meta-http.grxml 4.11 HTTP response headers required pass pass pass pass pass complete
rdf-metadata.grxml 4.11.2 RDF meta data required pass pass pass pass pass complete
comment-xml.grxml 4.12 comments required pass pass pass pass pass complete
conformance-1.grxml 5.4 conforming grammar processor: parse all language declarations required pass pass pass pass pass complete
conformance-2.grxml 5.4 inform hosting environment of unsupported language required pass pass pass pass pass complete
conformance-3.grxml 5.4 activate root, single public rule, set of public rules or roots of one or many grammars directly or indirectly referenced (multiple languages) optional pass no-lang pass pass pass complete
conformance-4.grxml 5.4 activate root, single public rule, set of public rules or roots of one or many grammars directly or indirectly referenced (same language) required pass pass pass pass pass complete
conformance-5.grxml 5.4 handling of non-standard elements and attributes required pass pass pass pass pass complete
recursion.grxml 5.4 recursive grammar optional pass pass pass fail pass complete
conformance-6.grxml 5.4 inform hosting environment if unable to process content required pass pass pass pass pass complete
conformance-7.grxml 5.7 references to ABNF grammars within XML grammars optional pass pass pass pass pass complete
dtmf-sequence.grxml AppE simple DTMF grammar with a sequence optional pass pass pass pass fail complete
dtmf-full.grxml AppE DTMF grammar with alternatives and sequences optional pass pass pass pass fail complete
dtmf-pound-star.grxml AppE DTMF grammar with "pound" and "star" as symbols optional pass pass pass pass fail complete
dtmf-simple.grxml AppE simple DTMF grammar with one character optional pass pass pass pass fail complete
example-1.grxml AppJ.1 Example 1 XML required pass pass pass pass pass complete
example-2-booking.grxml AppJ.2 Example 2 booking required pass pass pass pass pass complete
example-2-places.grxml AppJ.2 Example 2 places required pass pass pass pass pass complete
example-3-korean-yesno-unicode.grxml AppJ.3 Example 3 required pass pass pass pass no-lang complete
example-3-korean-yesno-utf8.grxml AppJ.3 Example 3 required pass pass pass pass no-lang complete
example-4-chinese-digits-unicode.grxml AppJ.4 Example 4 Chinese digits required pass pass pass pass no-lang complete
example-4-chinese-digits-utf8.grxml AppJ.4 Example 4 Chinese digits required pass pass pass pass no-lang complete
example-5-swedish-boolean.grxml AppJ.5 Example 5 Swedish boolean required pass pass pass pass pass complete

Results for Each Test in ABNF Form

Test ID Ref Description Level Speech Server from Lucent Speech Solutions IBM Java Speech API support for W3C Speech Recognition Grammar Specification BeVocal Foundation Platform Status
token-basic.gram 2.1 basic tokens required pass pass complete
token-quoted.gram 2.1 quoted tokens required pass pass complete
token-unicode.gram 2.1 Unicode tokens required pass pass complete
token-element.gram 2.1 token delimited by "token" element required pass pass complete
ruleref-nonexistent-local.gram 2.2 reference to a non-existent local rule reference required pass pass complete
duplicated-rulenames.gram 2.2 duplicate rulenames required pass pass complete
duplicated-special-rulenames.gram 2.2 redefining special rulenames required pass pass complete
ruleref-local.gram 2.2.1 local rule reference required pass pass complete
ruleref-ext-rule.gram 2.2.2 reference to a named rule of a grammar identified by a URI required pass incomplete
ruleref-ext-root.gram 2.2.2 reference to the root rule of a grammar identified by a URI required pass incomplete
ruleref-ext-rule-mediatype.gram 2.2.2 reference to a named rule of a grammar identified by a URI with a Media Type required pass incomplete
ruleref-ext-root-mediatype.gram 2.2.2 reference to the root rule of a grammar identified by a URI with a Media Type required pass incomplete
ruleref-mismatch-modes.gram 2.2.2 modes do not agree between rulerefs required pass pass complete
ruleref-mismatch-mediatype.gram 2.2.2 media type specified does not match actual content required pass pass complete
special-null.gram 2.2.3 special rule definitions ($NULL) required pass pass complete
special-void.gram 2.2.3 special rule definitions ($VOID) required pass pass complete
special-garbage.gram 2.2.3 special rule definitions ($GARBAGE) required pass pass complete
lang-ruleref.gram 2.2.5 language attachment on ruleref optional pass no-lang removed
sequence-token.gram 2.3 sequence of tokens required pass pass complete
sequence-ruleref.gram 2.3 sequence of rule references required pass pass complete
sequence-ruleref-token.gram 2.3 sequence of tokens and rule references required pass pass complete
sequence-parentheses-empty.gram 2.3 empty parenthetical required pass pass complete
sequence-parentheses.gram 2.3 parenthesis for explicit encapsulation required pass pass complete
alternatives-no-weights.gram 2.4 a set of alternatives with no weights required pass pass complete
alternatives-all-weights.gram 2.4 a set of alternatives with a legal weight on every alternative required pass pass complete
alternatives-some-weights.gram 2.4 a set of alternatives with legal weights on one or many but not all alternatives required pass pass complete
alternatives-one-with-weight.gram 2.4 a single alternative with a weight required pass pass complete
alternative-null.gram 2.4 alternative reference to NULL required pass pass complete
alternative-empty-paren.gram 2.4 alternative reference to "()" required pass pass complete
alternative-one-tag.gram 2.4 alternative reference to a single tag required pass pass complete
repeat-abnf-symbols.gram 2.5 "*" and "?" reserved required pass pass complete
wrong-repeat-abnf-symbols.gram 2.5 illegal use of "*", "+" and "?" required pass pass complete
repeat-n-exact.gram 2.5 2.5 repeat an expansion exactly "n" times required pass pass complete
repeat-m-n-times.gram 2.5 repeat an expansion between "n" and "m" times required pass pass complete
repeat-m-or-more.gram 2.5 repeat an expansion "m" or more times required pass pass complete
repeat-optional.gram 2.5 optional expansion required pass pass complete
repeat-with-probs.gram 2.5 repeat probabilities required pass pass complete
repeat-optional-void.gram 2.5 optional VOID equivalent to NULL required pass pass complete
repeat-many-null.gram 2.5 any number of NULL's is equivalent to a single NULL required pass pass complete
repeat-0-times.gram 2.5 zero repetitions never matched required pass pass complete
tag-many.gram 2.6 any number of tags may be included required pass pass complete
tag-repetition.gram 2.5 any number of possible repetitions of a tag is equivalent to a single instance of the tag required fail pass removed
tag-standalone.gram 2.6 standalone tags are legal required pass pass complete
tag-delimit-1.gram 2.6 tag delimited by "{" and "}" required pass pass complete
wrong-tag-delimit-1.gram 2.6 wrong use of tag delimiters required pass pass complete
tag-delimit-2.gram 2.6 tag delimited by "{!{" and "}!}" required pass pass complete
wrong-tag-delimit-2.gram 2.6 wrong use of tag delimiters required pass pass complete
lang-attachment-token-single-lang.gram 2.7 language attachment on token optional pass pass complete
lang-attachment-item-single-lang.gram 2.7 language attachment on item optional pass pass complete
lang-attachment-one-of-single-lang.gram 2.7 language attachment on one-of optional pass pass complete
lang-sequence.gram 2.7 language attachment on sequence optional pass pass complete
abnf-precedence.gram 2.8 precedence required pass pass pass complete
rule-basic-def.gram 3.1 rule definition required pass pass complete
rule-no-empty.gram 3.1 no empty expansions required pass pass complete
rule-tag.gram 3.1 single tag expansion required pass pass complete
rule-empty-item.gram 3.1 empty item expansion required pass pass complete
rule-null.gram 3.1 NULL expansion required pass pass complete
rule-private.gram 3.2 declaration of private rule required pass pass complete
rule-public.gram 3.2 declaration of public rule required pass pass complete
ruleref-ext-private-root.gram 3.2 external reference to private root rule required pass pass complete
ruleref-ext-private-rule.gram 3.2 external reference to private non-root rule required pass pass complete
example.gram 3.3 example phrases required pass pass complete
example-end.gram 3.3 comment with example at the end required pass pass complete
no-rules.gram 4 Grammar with no rules required pass pass complete
no-version.gram 4 Grammar with no version required pass pass complete
unrecognized-header.gram 4 Unrecognized ABNF Header required pass pass complete
multiple-header.gram 4 Multiple ABNF Header required pass pass complete
korean-yesno-utf16-le.gram 4.2 UTF16 Little Endian Korean grammar required pass pass complete
korean-yesno-utf16-be.gram 4.2 UTF16 Big Endian Korean grammar required pass pass complete
byte-order-mark.gram 4.2 byte order mark preceding # required pass pass complete
byte-order-mark-unicode.gram 4.2 byte order mark preceding # required pass pass complete
no-abnf-sih-header.gram 4.2 Invalid ABNF Self-identifying header required pass pass complete
wrong-abnf-sih-version.gram 4.2 Wrong version number in ABNF Self-identifying header required pass pass complete
no-abnf-sih-version.gram 4.2 Missing version number in ABNF Self-identifying header required pass pass complete
abnf-sih-header-no-newline.gram 4.2 No newline after ABNF header required pass pass complete
header-encoding-none.gram 4.4 no character encoding required pass pass complete
korean-yesno-utf8.gram 4.4 UTF8 Korean ABNF grammar required pass pass complete
language-missing.gram 4.5 language declaration missing is an error required pass pass pass complete
language-en-us.gram 4.5 language declaration of en-US for mode="voice" required pass pass complete
language-other.gram 4.5 other language declaration for mode="voice" required pass pass complete
language-dtmf-ignore.gram 4.5 language declaration ignored for mode="dtmf" optional pass pass complete
no-language-no-mode.gram 4.5 Grammar with no mode and no language required pass pass pass complete
mode-none.gram 4.6 no mode declaration implies voice required pass pass complete
mode-voice.gram 4.6 mode declaration voice required pass pass complete
mode-dtmf.gram 4.6 mode declaration dtmf optional pass pass complete
root-rule-decl.gram 4.7 root rule declaration required pass pass complete
root-rule-decl-missing.gram 4.7 root rule declaration missing required pass pass complete
uri-ref-undefined-root-referenced.gram 4.7 grammar ref with no fragment and no root rule required pass pass complete
uri-ref-undefined-root-referring.gram 4.7 grammar ref with no fragment and no root rule required pass pass complete
undefined-root.gram 4.7 reference to undefined root rule required pass pass complete
tag-format-decl.gram 4.8 tag format declaration required pass pass complete
tag-format-decl-missing.gram 4.8 omitted tag format declaration required pass pass complete
base-declaration.gram 4.9 base uri declaration required pass pass complete
metabase-declaration.gram 4.9.1 meta declaration of base uri required pass pass pass complete
base-metabase.gram 4.9.1 base uri precedence required pass pass complete
lexicon-none.gram 4.10 zero pronunciation lexicon declarations required pass pass complete
lexicon-one.gram 4.10 one pronunciation lexicon declaration required pass pass complete
lexicon-many.gram 4.10 many pronunciation lexicon declarations required pass pass complete
meta.gram 4.11 meta declarations required pass pass complete
meta-http.gram 4.11 HTTP response headers required pass pass complete
comment-abnf.gram 4.12 comments required pass pass complete
comment-interspersed.gram 4.12 header with comments interspersed required pass pass complete
abnf-keywords.gram 4.14 grammar using ABNF keywords required pass pass complete
conformance-1.gram 5.6 conforming grammar processor: parse all language declarations required pass pass pass complete
conformance-2.gram 5.6 inform hosting environment of unsupported language required pass pass pass complete
conformance-3.gram 5.6 activate root, single public rule, set of public rules or roots of one or many grammars directly or indirectly referenced (multiple languages) optional pass pass complete
conformance-4.gram 5.6 activate root, single public rule, set of public rules or roots of one or many grammars directly or indirectly referenced (same language) required pass pass complete
conformance-5.gram 5.6 inform hosting environment if unable to process content required pass pass complete
recursion.gram 5.6 recursive grammar optional pass pass complete
conformance-6.gram 5.7 references to XML grammars within ABNF grammars optional pass pass complete
dtmf-simple.gram AppE simple DTMF grammar with one character optional pass pass complete
dtmf-sequence.gram AppE simple DTMF grammar with a sequence optional pass pass complete
dtmf-full.gram AppE DTMF grammar with alternatives and sequences optional pass pass complete
dtmf-pound-star-text.gram AppE DTMF grammar with "pound" and "star" as text optional pass pass complete
dtmf-pound-and-star.gram AppE DTMF grammar with "pound" and "star" as symbols optional pass pass complete
dtmf-star-no-quotes.gram AppE DTMF grammar with "star" unquoted required pass pass complete
example-1.gram AppJ.1 Example 1 ABNF required pass pass complete
example-2-booking.gram AppJ.2 Example 2 booking required pass pass complete
example-2-places.gram AppJ.2 Example 2 places required pass pass complete
example-3-korean-yesno-utf8.gram AppJ.3 Example 3 Chinese digits required pass pass complete
example-4-chinese-digits-utf8.gram AppJ.4 Example 4 Chinese digits required pass pass complete
example-5-swedish-boolean.gram AppJ.5 Example 5 Swedish boolean required pass pass complete