SDD Part 0: Introduction and Primer to the SDD Standard

3.11 Dependencies in SDD

Dependencies are logical relationships between characters such that a state of one character controls the presence (or absence) of another feature in interactive keys.

Consider, for example, the following features:

depend.jpg

Wing colour and Wing shape only have meaning when wings are present – if wings are absent, they are logically inappropriate in the key. Relationships of this kind are generally accomodated within interactive identification applications by the use of dependencies. For the above example a negative dependency may be set such that if a user chooses the state Wings: absent, then the characters Wing Colour and Wing Shape will be removed from characters Available. Alternatively, some applications allow a positive dependency to be set so for example Wing Colour and Wing Shape are initially hidden and only appear if a user chooses the state Wings: present. Dependencies can help to keep the character list cleaner and less cluttered, and help make some features work better.

In SDD dependencies are defined by <DependencyRules> within the <CharacterTree> element.

A simple SDD code instance representing dependency definition has the basic structure shown below and in Example 3.11.1.

chartreenodeseq.gif

Example 3.11.1 - Negative dependencies in SDD.

        <Nodes>
          <CharNode>
            <DependencyRules>
              <InapplicableIf>
                <State ref="s13"/>
              </InapplicableIf>
            </DependencyRules>
            <Character ref="c1"/>
          </CharNode>
          <CharNode>
            <DependencyRules>
              <InapplicableIf>
                <State ref="s4"/>
                <State ref="s13"/>
              </InapplicableIf>
            </DependencyRules>
            <Character ref="c2"/>
          </CharNode>

        ... etc.
        
        </Nodes> 

Positive dependencies are expressed in the same fashion with the <InapplicableIf> tag

It is currently unknown how applications which enforce referential integrity between scored data and dependencies will manage data imported from applications which do not enforce referential integrity.

-- DonovanSharp - 01 Jun 2006