<!-- sigmlstream.dtd

    2003-01-07:
    add a 'duration' attribute to the sigmlstream element.
    RE

    2002-11-27:
    sigmlstream based on the sigmlh4 DTD.
    JRWG.
    
    2001-07-27:
    Introduction of sigmlh4 DTD, with changes arising from the
    conversion of the h2s translator to process HamNoSys 4.
    (RE)
    -use sigmlh4manual rather than sigmlmanual;

    This is the DTD for the top level of core SiGML 1.0, describing
    how to combine various sources of signing information into a
    single stream.
    The HamNoSys-based representations of manual and non-manual
    gestures, so-called core SiGML 1.0, are split off into separate
    files, sigmlmanual.dtd and sigmlnonmanual.dtd,
    which are included in this one.
-->


<!--
We use a SMIL-like representation of for a sign's speed attribute,
which has a numeric value with 1.0 as the implicit standard value.
-->
<!ENTITY % speed
    "speed  CDATA  #IMPLIED"
>


<!--
A gloss for a sign is an arbitrary string, naming that sign.
The language of the gloss word, and the sign language of the
glossed sign may also be specified (the former by its standard
ISO code).
-->

<!ENTITY % gloss_attribs
    "gloss_language  CDATA  #IMPLIED
    sign_language  CDATA  #IMPLIED"
>

<!ENTITY % glossoption_attribs
    "gloss  CDATA  #IMPLIED
    %gloss_attribs;"
>

<!ENTITY % sigml_sign "mocap_sign 
|bonesanimation_sign
|hamgestural_sign
|gloss_sign">

<!ENTITY % sigml_segment "%sigml_sign;|hamgestural_segment"
>

<!--
A SiGML document consists of an optional signing avatar
characterization followed by a sequence of signing segments.

sigmlsection's present and sigmlstream's duration attributes are
clock values of the form
        HH:MM:SS.CC
representing hours, minutes, seconds, and hundredths of a second.
-duration attribute added by RE, 2003-01-07.
-->

<!ELEMENT sigml ( avatar?, ( %sigml_segment; )* )>

<!ELEMENT sigmlsection ( avatar?, ( %sigml_segment; )* )>
<!ATTLIST sigmlsection
    present  CDATA  #IMPLIED
>

<!ELEMENT sigmlstream ( sigmlsection* )>
<!ATTLIST sigmlstream
    duration CDATA  #IMPLIED
>

<!--
A signing avatar may have a name, as used by Televirtual avatar
software (e.g. visia),  and a URI for any relevant avatar
description data (e.g. for a VRML avatar).
-->

<!ELEMENT avatar EMPTY>
<!ATTLIST avatar
    name  CDATA  #IMPLIED
    definition_uri  CDATA  #IMPLIED
>


<!--
(0) A Motion capture data sign is specified by the name of
the motion capture data (.all) file (excluding the suffix).
Eventually this should be a URI, but Televirtual currently
require these files to be in an avatar-specific directory.
-->

<!ELEMENT mocap_sign EMPTY>
<!ATTLIST mocap_sign
    mocap_uri  CDATA  #REQUIRED
    %glossoption_attribs;
    %speed;
>


<!--
(1) A Bone set animation sign is specified by the location of the
time-stamped boneset sequence data (.baf file).
-->

<!ELEMENT bonesanimation_sign EMPTY>
<!ATTLIST bonesanimation_sign
    bonesdata_uri  CDATA  #REQUIRED
    %glossoption_attribs;
    %speed;
>


<!--
(2) A HamNoSys-style gestural sign is specified by a an optional
manual part and an optional non-manual part.
-->

<!ELEMENT hamgestural_sign
    (
        ( sign_manual, sign_nonmanual? )
    |
        ( sign_nonmanual, sign_manual? )
    )?
>
<!ATTLIST hamgestural_sign
    %glossoption_attribs;
    %speed;
>


<!--
(3) A gloss sign is defined by the standard gloss attributes, but
in this case the gloss name is required rather than optional.
-->

<!ELEMENT gloss_sign EMPTY>
<!ATTLIST gloss_sign
    gloss  CDATA  #REQUIRED
    %gloss_attribs;
    %speed;
>


<!--
A gestural segment allows a single unit of non-manual signing
to accompany a (non-trivial) sequence of signing gestures.
If any feature is specified both at the segment level and at
the level of an individual sign within the segment, then the
latter specification takes precedence over the former (or, in
the case of speed, is interpreted relative to the former, as
in SMIL).  This applies to the following features:
    -specification for a given non-manual tier;
    -gloss/sign language attributes;
    -speed.
Speed example: if the segment has "speed='2'" and an enclosed
sign has "speed='0.75'", then the effective speed value for
that sign is 1.5.
-->

<!ELEMENT hamgestural_segment
    (
        ( hamgestural_sign, hamgestural_sign+, sign_nonmanual )
    |
        ( sign_nonmanual, hamgestural_sign, hamgestural_sign+ )
    )
>
<!ATTLIST hamgestural_segment
    %gloss_attribs;
    %speed;
>


<!--
Include the DTDs for manual and non-manual core SiGML.
-->

<!ENTITY % sigmlmanualdtd SYSTEM "sigmlh4manual.dtd">
%sigmlmanualdtd;

<!ENTITY % sigmlnonmanualdtd SYSTEM "sigmlnonmanual.dtd">
%sigmlnonmanualdtd;


<!-- End of SiGML DTD -->
