Partager via


Date Rules for French (Canada)

This content is no longer actively maintained. It is provided as is, for anyone who may still be using these technologies, with no warranties or claims of accuracy with regard to the most recent product version or service release.

The Date rules recognize dates expressed in a number of forms. The particular form that is recognized by a rule is encoded in the name of the rule. For example, the Date_Day_Month_Year rule recognizes date expressions such as "premier janvier deux mille sept."

When the year, month, or day in a date expression is ambiguous, the rules return an alternate semantic value. The default semantic value assumes a future date. Alternate semantic values presume a past date. For example, if today is June 1, 2007, and the user says "May twenty fourth," the Date_Month_Day rule returns the following values:

  • Day = 24
  • Month = 5
  • Year = 2008
  • AlternateYear = 2007

Default date semantic item values are error checked for consistency (for example, that February 29th only falls on leap years). Alternate date semantic item values are not checked for consistency. The IsValidDate semantic item value is set to false if the default semantic date is not valid.

What the Date Rules Recognize

The Date rules recognize dates expressed as the following:

  • A month name or a cardinal month number. For example, "avril, quatre."
  • A cardinal month number followed by a cardinal day number. For example, "onze dix."
  • A cardinal day number followed by a month name. For example, "huit novembre."
  • The modifier "le," followed by a cardinal day number, followed by the modifier "du," followed by a cardinal month number. For example, "le deux du trois."
  • All of the previously noted expressions followed by a cardinal year number in either two-digit or four-digit form. For example, "le seize du six deux mille sept, dix dix-neuf soixant-deux, janvier deux mille."
  • A cardinal year number in two-digit or four-digit form or a relative year expression. For example, "dix-neuf cent quatre-vingt-dix-sept, deux mille, z??ro six."
  • A cardinal day number. For example, "vingt."
  • The ordinal "premier" when used to indicate a day number.
  • Common relative day expressions. For example, "hier, aujourd'hui , demain, mardi prochain, mercredi dernier."
  • Weekday names. For example, "dimanche, vendredi."
  • A weekday name followed by "le" followed by a cardinal day number. For example, "lundi le vingt."

Rules

Date

Date_Day

Date_Day_Month

Date_Day_Month_Year

Date_MonthNum_DayNum

Date_MonthNum_DayNum_Year

Date_DayNum_MonthNum

Date_DayNum_MonthNum_Year

Date_Relative

Date_MonthNum_Year

Date_Month_Year

Date_Weekday

Date_Month

Date_MonthNum

Date_DayNum

Date_Year

Usage

<ruleref uri="Library.grxml#Date" type="application/srgs+xml"/>
<ruleref uri="Library.grxml#Date_Day" type="application/srgs+xml"/>
<ruleref uri="Library.grxml#Date_Day_Month" type="application/srgs+xml"/>
<ruleref uri="Library.grxml#Date_Day_Month_Year" type="application/srgs+xml"/>
<ruleref uri="Library.grxml#Date_MonthNum_DayNum" type="application/srgs+xml"/>
<ruleref uri="Library.grxml#Date_MonthNum_DayNum_Year" type="application/srgs+xml"/>
<ruleref uri="Library.grxml#Date_DayNum_MonthNum" type="application/srgs+xml"/>
<ruleref uri="Library.grxml#Date_DayNum_MonthNum_Year" type="application/srgs+xml"/>
<ruleref uri="Library.grxml#Date_Relative" type="application/srgs+xml"/>
<ruleref uri="Library.grxml#Date_MonthNum_Year" type="application/srgs+xml"/>
<ruleref uri="Library.grxml#Date_Month_Year" type="application/srgs+xml"/>
<ruleref uri="Library.grxml#Date_Weekday" type="application/srgs+xml"/>
<ruleref uri="Library.grxml#Date_Month" type="application/srgs+xml"/>
<ruleref uri="Library.grxml#Date_MonthNum" type="application/srgs+xml"/>
<ruleref uri="Library.grxml#Date_DayNum" type="application/srgs+xml"/>
<ruleref uri="Library.grxml#Date_Year" type="application/srgs+xml"/>

The grammar can be used as follows (using the Date rule as an example).

<grammar xmlns:sapi="http://schemas.microsoft.com/Speech/2002/06/SRGSExtensions"
         xml:lang="fr-CA" tag-format="semantics-ms/1.0" version="1.0" mode="voice"
         root="Rule1" xmlns="http://www.w3.org/2001/06/grammar">
    <rule id="Rule1" scope="public">
        <ruleref uri="Library.grxml#Date" type="application/srgs+xml"/>
    <tag>$ = $$</tag>
    </rule>
</grammar>

JScript Objects

Rule Name JScript Objects Returned

Date

$Date
$Date.Day:
????????$Date.Day._value: integer [1...31]
????????$Date.Day._attributes.name: string ["Explicit", "Derived"]
$Date.Month:
????????$Date.Month._value: integer [1...12]
????????$Date.Month._attributes.name: string ["Explicit", "Derived"]
$Year:
????????$Year._value: integer [1900...2099]
????????$Year._attributes.name: string ["Explicit", "Derived", "Assumed"]
????????$Year._attributes.form: string ["Short Form", "Long Form"]
$Date.IsValidDate: string ["true", "false"]

Date_Day

$Date_Day.Day:
????????$Date_Day.Day._value: integer [1...31]
????????$Date_Day.Day._attributes.name: string ["Explicit"]
$Date_Day.Month:
????????$Date_Day.Month._value: integer [1...12]
????????$Date_Day.Month._attributes.name: string ["Assumed"]
$Date_Day.Year: 
????????$Date_Day.Year._value: integer [1900...2099]
????????$Date_Day.Year._attributes.name: string ["Assumed"]
$Date_Day.AlternateMonth:
????????$Date_Day.AlternateMonth._value: integer [1...12]
$Date_Day.AlternateYear:
????????$Date_Day.AlternateYear._value: integer [1900...2099]
$Date_Day.IsValidDate: string ["true", "false"]

Date_Day_Month

$Date_Day_Month.Day:
????????$Date_Day_Month.Day._value: integer [1...31]
????????$Date_Day_Month.Day._attributes.name: string ["Explicit"]
$Date_Day_Month.Month:
????????$Date_Day_Month.Month._value: integer [1...12]
????????$Date_Day_Month.Month._attributes.name: string ["Explicit"]
$Date_Day_Month.Year: 
????????$Date_Day_Month.Year._value: integer [1900...2099]
????????$Date_Day_Month.Year._attributes.name: string ["Assumed"]
$Date_Day_Month.AlternateYear:
????????$Date_Day_Month.AlternateYear._value: integer [1900...2099]
$Date_Day_Month.IsValidDate: string ["true", "false"]

Date_Day_Month_Year

$Date_Day_Month_Year.Day:
????????$Date_Day_Month_Year.Day._value: integer [1...31]
????????$Date_Day_Month_Year.Day._attributes.name: string ["Explicit"]
$Date_Day_Month_Year.Month:
????????$Date_Day_Month_Year.Month._value: integer [1...12]
????????$Date_Day_Month_Year.Month._attributes.name: string ["Explicit"]
$Date_Day_Month_Year.Year: 
????????$Date_Day_Month_Year.Year._value: integer [1900...2099]
????????$Date_Day_Month_Year.Year._attributes.name: string ["Assumed"]
????????$Date_Day_Month_Year.Year._attributes.form: string ["Short Form", "Long Form"]
$Date_Day_Month_Year.IsValidDate: string ["true", "false"]

Date_MonthNum_DayNum

$Date_MonthNum_DayNum.Month:
????????$Date_MonthNum_DayNum.Month._value: integer [1...12]
????????$Date_MonthNum_DayNum.Month._attributes.name: string ["Explicit"]
$Date_MonthNum_DayNum.Day:
????????$Date_MonthNum_DayNum.Day._value: integer [1...31]
????????$Date_MonthNum_DayNum.Day._attributes.name: string ["Explicit"]
$Date_MonthNum_DayNum.Year: 
????????$Date_MonthNum_DayNum.Year._value: integer [1900...2099]
????????$Date_MonthNum_DayNum.Year._attributes.name: string ["Assumed"]
$Date_MonthNum_DayNum.AlternateYear:
????????$Date_MonthNum_DayNum.AlternateYear._value: integer [1900...2099]
$Date_MonthNum_DayNum.IsValidDate: string ["true", "false"]

Date_MonthNum_DayNum_Year

$Date_MonthNum_DayNum_Year.Month:
????????$Date_MonthNum_DayNum_Year.Month._value: integer [1...12]
????????$Date_MonthNum_DayNum_Year.Month._attributes.name: string ["Explicit"]
$Date_MonthNum_DayNum_Year.Day:
????????$Date_MonthNum_DayNum_Year.Day._value: integer [1...31]
????????$Date_MonthNum_DayNum_Year.Day._attributes.name: string ["Explicit"]
$Date_MonthNum_DayNum_Year.Year: 
????????$Date_MonthNum_DayNum_Year.Year._value: integer [1900...2099]
????????$Date_MonthNum_DayNum_Year.Year._attributes.name: string ["Assumed"]
$Date_MonthNum_DayNum_Year.IsValidDate: string ["true", "false"]

Date_DayNum_MonthNum

$Date_DayNum_MonthNum.Day:
????????$Date_DayNum_MonthNum.Day._value: integer [1...31]
????????$Date_DayNum_MonthNum.Day._attributes.name: string ["Explicit"]
$Date_DayNum_MonthNum.Month:
????????$Date_DayNum_MonthNum.Month._value: integer [1...12]
????????$Date_DayNum_MonthNum.Month._attributes.name: string ["Explicit"]
$Date_DayNum_MonthNum.Year: 
????????$Date_DayNum_MonthNum.$Year._value: integer [1900...2099]
????????$Date_DayNum_MonthNum.$Year._attributes.name: string ["Assumed"]
$Date_DayNum_MonthNum.AlternateYear:
????????$Date_DayNum_MonthNum.AlternateYear._value: integer [1900...2099]
$Date_DayNum_MonthNum.IsValidDate: string ["true", "false"]

Date_DayNum_MonthNum_Year

$Date_DayNum_MonthNum_Year.Day:
????????$Date_DayNum_MonthNum_Year.Day._value: integer [1...31]
????????$Date_DayNum_MonthNum_Year.Day._attributes.name: string ["Explicit"]
$Date_DayNum_MonthNum_Year.Month:
????????$Date_DayNum_MonthNum_Year.Month._value: integer [1...12]
????????$Date_DayNum_MonthNum_Year.Month._attributes.name: string ["Explicit"]
$Date_DayNum_MonthNum_Year.Year: 
????????$Date_DayNum_MonthNum_Year.$Year._value: integer [1900...2099]
????????$Date_DayNum_MonthNum_Year.$Year._attributes.name: string ["Assumed"]
????????$Date_DayNum_MonthNum_Year.Year._attributes.form: string ["Short Form", "Long Form"]
$Date_DayNum_MonthNum_Year.IsValidDate: string ["true", "false"]

Date_Relative

$Date_Relative.Month:
$Date_Relative.Month._value: integer [1...12]
$Date_Relative.Month._attributes.name: string ["Assumed", "Derived"]
$Date_Relative.Day:
$Date_Relative.Day._value: integer [1...31]
$Date_Relative.Day._attributes.name: string ["Assumed", "Derived"]
$Date_Relative.Year:
$Date_Relative.Year._value: integer [1900...2099]
$Date_Relative.Year._attributes.name: string ["Derived"]
$Date_Relative.AlternateMonth (Optional):
$Date_Relative.AlternateMonth._value: integer [1...12]
$Date_Relative.AlternateDay (Optional):
$Date_Relative.AlternateDay._value: integer [1...31]
$Date_Relative.AlternateYear (Optional):
$Date_Relative.AlternateYear._value: integer [1900...2099]
$Date_Relative.Day.IsValidDate: string ["true", "false"]

Date_MonthNum_Year

$Date_MonthNum_Year.Month:
????????$Date_MonthNum_Year.Month._value: integer [1...12]
????????$Date_MonthNum_Year.Month._attributes.name: string ["Explicit"]
$Date_MonthNum_Year.Year: 
????????$Date_MonthNum_Year.Year._value: integer [1900...2099]
????????$Date_MonthNum_Year.Year._attributes.name: string ["Derived", "Explicit"]
????????$Date_MonthNum_Year.Year._attributes.form: string ["Short Form", "Long Form"]
$Date_MonthNum_Year.IsValidDate: string ["true", "false"]

Date_Month_Year

$Date_Month_Year.IsValidDate: string ["true", "false"]
$Date_Month_Year.Month:
????????$Date_Month_Year.Month._value: integer [1...12]
????????$Date_Month_Year.Month._attributes.name: string ["Explicit"]
$Date_Month_Year.Year: 
????????$Date_Month_Year.Year._value: integer [1900...2099]
????????$Date_Month_Year.Year._attributes.name: string ["Derived", "Explicit"]
????????$Date_Month_Year.Year._attributes.form: string ["Short Form", "Long Form"]

Date_Weekday

$Date_Weekday._value : integer [1...7] Sunday=1, Monday=2, ..., Saturday=7

Date_Month

$Date_Month._value: integer [1...12]

Date_MonthNum

$Date_MonthNum._value: integer [1...12]

Date_DayNum

$Date_DayNum._value: integer [1...31]

Date_Year

$Date_Year._value: integer [1900...2099]
????????$Date_Year._attributes.name: string ["Derived", "Explicit"]
????????$Date_Year._attributes.form: string ["Long Form", "Short Form"]
Bb857045.note(en-us,office.12).gifNote:
The Date_Year rule supports years between 1900 and 2099. If the caller specifies only the last two digits (DD) of a year, the behavior is as follows: If DD > 30 returns 20DD; else if DD ??? 30 returns 19DD.

Examples: Date_MonthNum_DayNum

Example 1

Assume that the current date is Monday, January 15, 2007.

User says: "quatre z??ro deux."

SML returned by the recognition engine.

<SML text="quatre z??ro deux" utteranceConfidence="1.000" confidence="1.000">

????????<Day confidence="1.000" name="Explicit">2</Day>

????????<Month confidence="1.000" name="Explicit">4</Month>

????????<Year confidence="1.000" name="Assumed">2007</Year>

????????<AlternateYear confidence="1.000">2006</AlternateYear>

????????<IsValidDate confidence="1.000">true</IsValidDate>

</SML>

Example 2

Assume that the current date is Monday, January 15, 2007.

User says: "z??ro un z??ro neuf."

SML returned by the recognition engine.

<SML text="z??ro un z??ro neuf" utteranceConfidence="1.000" confidence="1.000">

????????<Day confidence="1.000" name="Explicit">9</Day>

????????<Month confidence="1.000" name="Explicit">1</Month>

????????<Year confidence="1.000" name="Assumed">2007</Year>

????????<AlternateYear confidence="1.000">2006</AlternateYear>

????????<IsValidDate confidence="1.000">true</IsValidDate>

</SML>

Example: Date_Day_Month

Example 1

Assume that the current date is Monday, January 15, 2007.

User says: "six mai."

SML returned by the recognition engine.

<SML text="six mai" utteranceConfidence="1.000" confidence="1.000">

????????<Day confidence="1.000" name="Explicit">6</Day>

????????<Month confidence="1.000">5</Month>

????????<Year confidence="1.000" name="Assumed">2007</Year>

????????<AlternateYear confidence="1.000">2006</AlternateYear>

????????<IsValidDate confidence="1.000">true</IsValidDate>

</SML>

Examples: Date_Day_Month_Year

Example 1

Assume that the current date is Monday, January 15, 2007.

User says: "trois janvier z??ro neuf."

SML returned by the recognition engine.

<SML text="trois janvier z??ro neuf" utteranceConfidence="1.000" confidence="1.000">

????????<Day confidence="1.000" name="Explicit">3</Day>

????????<Month confidence="1.000">1</Month>

????????<IsValidDate confidence="1.000">true</IsValidDate>

????????<Year confidence="1.000" name="Derived" form="Short Form">2009</Year>

</SML>

Example 2

Assume that the current date is Monday, January 15, 2007.

User says: "trois janvier dix-neuf cent dix-neuf."

SML returned by the recognition engine.

<SML text="trois janvier dix-neuf cent dix-neuf" utteranceConfidence="1.000" confidence="1.000">

????????<Day confidence="1.000" name="Explicit">3</Day>

????????<Month confidence="1.000">1</Month>

????????<IsValidDate confidence="1.000">true</IsValidDate>

????????<Year confidence="1.000" name="Explicit" form="Long Form">1919</Year>

</SML>

Examples: Date_Year

Example 1

User says: "cinquante-trois."

SML returned by the recognition engine.

<SML text="cinquante-trois" utteranceConfidence="1.000" confidence="1.000" name="Derived" form="Short Form">1953</SML>

Example 2

User says: "deux mille sept."

SML returned by the recognition engine.

<SML text="deux mille sept" utteranceConfidence="1.000" confidence="1.000" name="Explicit" form="Long Form">2007</SML>

Examples: Date_Relative

Example 1

Assume that the current date is Monday, January 15, 2007.

User says: "mardi."

SML returned by the recognition engine.

<SML text="mardi" utteranceConfidence="1.000" confidence="1.000">

????????<Day confidence="1.000" name="Assumed">16</Day>

????????<Month confidence="1.000" name="Assumed">1</Month>

????????<Year confidence="1.000" name="Assumed">2007</Year>

????????<AlternateMonth confidence="1.000">1</AlternateMonth>

????????<AlternateYear confidence="1.000">2007</AlternateYear>

????????<AlternateDay confidence="1.000">9</AlternateDay>

????????<IsValidDate confidence="1.000">true</IsValidDate>

</SML>

Example 2

Assume that the current date is Monday, January 15, 2007.

User says: "mardi prochain."

SML returned by the recognition engine.

<SML text="mardi prochain" utteranceConfidence="1.000" confidence="1.000">

????????<Day confidence="1.000" name="Derived">16</Day>

????????<Month confidence="1.000" name="Derived">1</Month>

????????<Year confidence="1.000" name="Derived">2007</Year>

????????<IsValidDate confidence="1.000">true</IsValidDate>

</SML>

Example 3

Assume that the current date is Monday, January 15, 2007.

User says: "mardi dernier."

SML returned by the recognition engine.

<SML text="mardi dernier" utteranceConfidence="1.000" confidence="1.000">

????????<Day confidence="1.000" name="Derived">9</Day>

????????<Month confidence="1.000" name="Derived">1</Month>

????????<Year confidence="1.000" name="Derived">2007</Year>

????????<IsValidDate confidence="1.000">true</IsValidDate>

</SML>