<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE Project [
    <!ELEMENT Project (Description?, Task*, Domain*, Bridge*, ModelPopulation*, MetamodelPopulation*, DomainChart?,
                       Configuration*)>
    <!ATTLIST Project
        Name           CDATA #REQUIRED
        Notation       (ShlaerMellor | ExecutableUML | ExecutableUML2) "ShlaerMellor"
        Location       CDATA ""
        LocationFormat CDATA #FIXED "OOA Interchange Format 0.04">
    <!ELEMENT Description (#PCDATA)>
    <!ATTLIST Description
        TextFormat (Plain | HTML) "Plain">
    <!ELEMENT Task (Description?)>
    <!ATTLIST Task
        Name CDATA #REQUIRED>
    <!ELEMENT Domain (MissionStatement?, InformationModel?, Activity*)>
    <!ATTLIST Domain
        Name           CDATA #REQUIRED
        DomainCategory (Application | Service | Architectural | Implementation) "Service">
    <!ELEMENT MissionStatement (#PCDATA)>
    <!ATTLIST MissionStatement
        TextFormat (Plain | HTML) "Plain">
    <!ELEMENT InformationModel (Description?,
                                (BooleanType | EnumeratedType | SymbolicType | NumericType | ArbitraryIDType)*,
                                Object*,
                                (SimpleRelationship | AssociativeRelationship | ComposedRelationship
                                                    | MathematicallyDependentRelationship | SubtypeSupertypeRelationship)*,
                                Subsystem*,
                                (LifecycleModel | SingleAssignerModel | MultipleAssignerModel
                                                | Terminator | PolymorphicDestination)*,
                                ((SubsystemRelationshipModel?, SubsystemCommunicationModel?)
                                    | (ObjectInformationModel?, ObjectCommunicationModel?, Report?)),
                                PatternFile*)>
    <!ATTLIST InformationModel
        Name                        CDATA #REQUIRED
        ManualObjectNumbering       (False | True) "False"
        ManualRelationshipNumbering (False | True) "False">
    <!ELEMENT BooleanType (Description?)>
    <!ATTLIST BooleanType
        Name         CDATA #REQUIRED
        Predefined   (False | True) "False"
        FalseAlias   CDATA "FALSE"
        TrueAlias    CDATA "TRUE"
        DefaultValue CDATA #IMPLIED>
    <!ELEMENT EnumeratedType (Description?, LegalValue+)>
    <!ATTLIST EnumeratedType
        Name         CDATA #REQUIRED
        Predefined   (False | True) "False"
        DefaultValue CDATA #IMPLIED>
    <!ELEMENT LegalValue (Description?)>
    <!ATTLIST LegalValue
        Name CDATA #REQUIRED>
    <!ELEMENT SymbolicType (Description?, Pattern?)>
    <!ATTLIST SymbolicType
        Name          CDATA #REQUIRED
        Predefined   (False | True) "False"
        MinimumLength CDATA "0"
        MaximumLength CDATA #IMPLIED
        DefaultValue  CDATA #IMPLIED>
    <!ELEMENT Pattern (#PCDATA)>
    <!ELEMENT NumericType (Description?)>
    <!ATTLIST NumericType
        Name                   CDATA #REQUIRED
        Predefined             (False | True) "False"
        ValueFormat            (Binary | Octal | Decimal | Hexadecimal | Time) "Decimal"
        Unit                   CDATA ""
        TimeUnit               (Year | Month | Day | Hour | Minute | Second
                                     | Millisecond | Microsecond | Nanosecond) #IMPLIED
        MinimumValue           CDATA #IMPLIED
        MaximumValue           CDATA #IMPLIED
        PreferredDecimalPlaces CDATA "0"
        MaximumDecimalPlaces   CDATA #IMPLIED
        Precision              CDATA #IMPLIED
        DefaultValue           CDATA #IMPLIED>
    <!ELEMENT ArbitraryIDType (Description?)>
    <!ATTLIST ArbitraryIDType
        Name                                    CDATA #REQUIRED
        Predefined                              (False | True) "False"
        Ordinal                                 (False | True) "False"
        IdentifiedObject                        CDATA ""
        ChildParentRelationship                 CDATA ""
        ChildMappedToParent                     (False | True) #IMPLIED
        MinimumValue                            CDATA "0"
        MaximumValue                            CDATA #IMPLIED
        UnallocatedPercentageBeforeReallocation CDATA #IMPLIED
        MinimumUnallocatedBeforeReallocation    CDATA "1">
    <!ELEMENT Object (Description?,
                      (SimpleAttribute | ArbitraryIDAttribute | MathematicallyDependentAttribute
                                       | ReferentialAttribute | PolymorphicAttribute)*,
                      Identifier*)>
    <!ATTLIST Object
        Name           CDATA #REQUIRED
        FirstLetters   CDATA #IMPLIED
        CustomLetters  CDATA ""
        KeyLetters     CDATA #IMPLIED
        ManualNumber   CDATA ""
        Number         CDATA #IMPLIED
        ObjectCategory (TangibleThing | Role | Incident | Interaction | Specification) #IMPLIED
        Prominent      (False | True) "False">
    <!ELEMENT SimpleAttribute (Description?, ValueDomain?)>
    <!ATTLIST SimpleAttribute
        Name               CDATA #REQUIRED
        Naming             (False | True) "False"
        IdentifyingSuffix  CDATA #IMPLIED
        ManualDataType     CDATA ""
        DataType           CDATA #IMPLIED
        DataTypeAcceptable (False | True) #IMPLIED
        InitialValue       CDATA #IMPLIED
        Final              (False | True) "False"
        ManualConditional  (False | True) "False"
        Conditional        (False | True) #IMPLIED>
    <!ELEMENT ValueDomain (#PCDATA)>
    <!ATTLIST ValueDomain
        TextFormat (Plain | HTML) "Plain">
    <!ELEMENT ArbitraryIDAttribute (Description?, ValueDomain?)>
    <!ATTLIST ArbitraryIDAttribute
        Name               CDATA #REQUIRED
        IdentifyingSuffix  CDATA #IMPLIED
        ManualDataType     CDATA ""
        DataType           CDATA #IMPLIED
        DataTypeAcceptable (False | True) #IMPLIED
        ManualConditional  (False | True) "False"
        Conditional        (False | True) #IMPLIED>
    <!ELEMENT MathematicallyDependentAttribute (Description?, ValueDomain?)>
    <!ATTLIST MathematicallyDependentAttribute
        Name               CDATA #REQUIRED
        IdentifyingSuffix  CDATA #IMPLIED
        ManualDataType     CDATA ""
        DataType           CDATA #IMPLIED
        DataTypeAcceptable (False | True) #IMPLIED
        ManualConditional  (False | True) "False"
        Conditional        (False | True) #IMPLIED>
    <!ELEMENT ReferentialAttribute (Description?)>
    <!ATTLIST ReferentialAttribute
        Name                  CDATA #REQUIRED
        IdentifyingSuffix     CDATA #IMPLIED
        ReferentialSuffix     CDATA #IMPLIED
        BaseObject            CDATA #IMPLIED
        BaseAttribute         CDATA #IMPLIED
        BaseAttributeStatus   (Unresolved | PartiallyResolved | FullyResolved | Incompatible
                                          | MultipleBaseAttributes | OnlyCircularReferences) #IMPLIED
        ManualDataType        CDATA ""
        DataType              CDATA #IMPLIED
        DataTypeAcceptable    (False | True) #IMPLIED
        LiteralValue          CDATA #IMPLIED
        ManualConditional     (False | True) "False"
        NavigationConditional (False | True) #IMPLIED
        Conditional           (False | True) #IMPLIED>
    <!ELEMENT PolymorphicAttribute (PolymorphicAttributeMapping*, Description?)>
    <!ATTLIST PolymorphicAttribute
        Name                         CDATA #REQUIRED
        IdentifyingSuffix            CDATA #IMPLIED
        SubtypeSupertypeRelationship CDATA ""
        MappingComplete              (False | True) #IMPLIED
        MappingCompatible            (False | True) #IMPLIED
        ManualDataType               CDATA ""
        DataType                     CDATA #IMPLIED
        DataTypeAcceptable           (False | True) #IMPLIED
        ManualConditional            (False | True) "False"
        Conditional                  (False | True) #IMPLIED>
    <!ELEMENT PolymorphicAttributeMapping EMPTY>
    <!ATTLIST PolymorphicAttributeMapping
        SubtypeObject    CDATA #REQUIRED
        SubtypeAttribute CDATA #REQUIRED>
    <!ELEMENT Identifier (IdentifyingAttribute+)>
    <!ATTLIST Identifier
        IdentifierID CDATA #IMPLIED
        Preferred    (False | True) "False">
    <!ELEMENT IdentifyingAttribute EMPTY>
    <!ATTLIST IdentifyingAttribute
        Attribute CDATA #REQUIRED>
    <!ELEMENT SimpleRelationship (Description?,
                                  ((FirstParticipant, SecondParticipant) | (SecondParticipant, FirstParticipant)),
                                  LoopTraversalMapping*)>
    <!ATTLIST SimpleRelationship
        ManualNumber   CDATA ""
        Number         CDATA #IMPLIED
        RelationshipID CDATA #REQUIRED>
    <!ELEMENT FirstParticipant (FirstToSecondMapping?)>
    <!ATTLIST FirstParticipant
        Object      CDATA #REQUIRED
        Role        CDATA "FIRST"
        VerbPhrase  CDATA ""
        Many        (False | True) "False"
        Conditional (False | True) "False">
    <!ELEMENT FirstToSecondMapping (ReferentialAttributeMapping+)>
    <!ATTLIST FirstToSecondMapping
        TargetIdentifier CDATA #REQUIRED>
    <!ELEMENT ReferentialAttributeMapping EMPTY>
    <!ATTLIST ReferentialAttributeMapping
        ReferentialAttribute CDATA #REQUIRED
        IdentifyingAttribute CDATA #REQUIRED
        Constrained          (False | True) "False"
        LoopConstrained      (False | True) #IMPLIED>
    <!ELEMENT SecondParticipant (SecondToFirstMapping?)>
    <!ATTLIST SecondParticipant
        Object      CDATA #REQUIRED
        Role        CDATA "SECOND"
        VerbPhrase  CDATA ""
        Many        (False | True) "False"
        Conditional (False | True) "False">
    <!ELEMENT SecondToFirstMapping (ReferentialAttributeMapping+)>
    <!ATTLIST SecondToFirstMapping
        TargetIdentifier CDATA #REQUIRED>
    <!ELEMENT LoopTraversalMapping EMPTY>
    <!ATTLIST LoopTraversalMapping
        TraversedRelationship CDATA #REQUIRED
        SourceObject          CDATA #IMPLIED
        SourceRole            CDATA #IMPLIED
        SourceRoleRequired    CDATA #IMPLIED
        TargetObject          CDATA #REQUIRED
        TargetRole            CDATA #IMPLIED
        TargetRoleRequired    CDATA #IMPLIED>
    <!ELEMENT AssociativeRelationship (Description?, FirstParticipant, SecondParticipant, AssociativeParticipant,
                                       LoopTraversalMapping*)>
    <!ATTLIST AssociativeRelationship
        ManualNumber   CDATA ""
        Number         CDATA #IMPLIED
        RelationshipID CDATA #REQUIRED>
    <!ELEMENT AssociativeParticipant (AssociativeToFirstMapping?, AssociativeToSecondMapping?)>
    <!ATTLIST AssociativeParticipant
        Object          CDATA #REQUIRED
        Role            CDATA #FIXED "ASSOCIATIVE"
        VerbPhrase      CDATA ""
        ConnectorPhrase CDATA ""
        Many            (False | True) "False"
        Conditional     (False | True) "False">
    <!ELEMENT AssociativeToFirstMapping (ReferentialAttributeMapping+)>
    <!ATTLIST AssociativeToFirstMapping
        TargetIdentifier CDATA #REQUIRED>
    <!ELEMENT AssociativeToSecondMapping (ReferentialAttributeMapping+)>
    <!ATTLIST AssociativeToSecondMapping
        TargetIdentifier CDATA #REQUIRED>
    <!ELEMENT ComposedRelationship (Description?,
                                    ((FirstParticipant, SecondParticipant) | (SecondParticipant, FirstParticipant)),
                                    LoopTraversalMapping, LoopTraversalMapping+)>
    <!ATTLIST ComposedRelationship
        ManualNumber   CDATA ""
        Number         CDATA #IMPLIED
        RelationshipID CDATA #REQUIRED>
    <!ELEMENT MathematicallyDependentRelationship (Description?, FirstParticipant, SecondParticipant,
                                                   LoopTraversalMapping*)>
    <!ATTLIST MathematicallyDependentRelationship
        ManualNumber   CDATA ""
        Number         CDATA #IMPLIED
        RelationshipID CDATA #REQUIRED>
    <!ELEMENT SubtypeSupertypeRelationship (Description?, SupertypeParticipant, SubtypeParticipant, SubtypeParticipant+)>
    <!ATTLIST SubtypeSupertypeRelationship
        ManualNumber   CDATA ""
        Number         CDATA #IMPLIED
        RelationshipID CDATA #REQUIRED>
    <!ELEMENT SupertypeParticipant EMPTY>
    <!ATTLIST SupertypeParticipant
        Object CDATA #REQUIRED
        Role   CDATA #FIXED "SUPERTYPE">
    <!ELEMENT SubtypeParticipant (SubtypeToSupertypeMapping?)>
    <!ATTLIST SubtypeParticipant
        Object CDATA #REQUIRED
        Role   CDATA #FIXED "SUBTYPE">
    <!ELEMENT SubtypeToSupertypeMapping (ReferentialAttributeMapping+)>
    <!ATTLIST SubtypeToSupertypeMapping
        TargetIdentifier CDATA #REQUIRED>
    <!ELEMENT Subsystem (Description?, AssignedObject*, AssignedRelationship*, Activity*,
                         ObjectInformationModel?, ObjectCommunicationModel?, Report?)>
    <!ATTLIST Subsystem
        Name                CDATA #REQUIRED
        PrefixLetters       CDATA ""
        ManualLowestNumber  CDATA ""
        ManualHighestNumber CDATA ""
        LowestNumber        CDATA #IMPLIED
        HighestNumber       CDATA #IMPLIED>
    <!ELEMENT AssignedObject EMPTY>
    <!ATTLIST AssignedObject
        Object CDATA #REQUIRED>
    <!ELEMENT AssignedRelationship EMPTY>
    <!ATTLIST AssignedRelationship
        Relationship CDATA #REQUIRED>
    <!ELEMENT Activity (ShortNote?, LongNote?)>
    <!ATTLIST Activity
        Task   CDATA #REQUIRED
        Row    CDATA #IMPLIED
        Column CDATA #IMPLIED>
    <!ELEMENT ShortNote (#PCDATA)>
    <!ATTLIST ShortNote
        TextFormat (Plain | HTML) "Plain">
    <!ELEMENT LongNote (#PCDATA)>
    <!ATTLIST LongNote
        TextFormat (Plain | HTML) "Plain">
    <!ELEMENT LifecycleModel (Description?,
                              (AttributeDataItem | TransientDataItem)*,
                              (CreationEvent | TransitionEvent)*,
                              TransitionNote*,
                              (SimpleState | CreationState | DeletionState)*,
                              StateTransitionDiagram?)>
    <!ATTLIST LifecycleModel
        ActiveObject         CDATA #REQUIRED
        ManualEventNumbering (False | True) "False"
        LabelPrefix          CDATA #IMPLIED
        ManualStateNumbering (False | True) "False">
    <!ELEMENT AttributeDataItem (Description?)>
    <!ATTLIST AttributeDataItem
        Name        CDATA #REQUIRED
        Object      CDATA #REQUIRED
        Attribute   CDATA #REQUIRED
        Many        (False | True) "False"
        Conditional (False | True) "False">
    <!ELEMENT TransientDataItem (Description?)>
    <!ATTLIST TransientDataItem
        Name        CDATA #REQUIRED
        DataType    CDATA ""
        Many        (False | True) "False"
        Conditional (False | True) "False">
    <!ELEMENT CreationEvent (CarriedDataItem*, Description?)>
    <!ATTLIST CreationEvent
        Meaning       CDATA #REQUIRED
        ManualNumber  CDATA ""
        Number        CDATA #IMPLIED
        Label         CDATA #IMPLIED>
    <!ELEMENT CarriedDataItem EMPTY>
    <!ATTLIST CarriedDataItem
        SupplementalDataItem CDATA #REQUIRED>
    <!ELEMENT TransitionEvent (CarriedDataItem*, Description?)>
    <!ATTLIST TransitionEvent
        Meaning       CDATA #REQUIRED
        ManualNumber  CDATA ""
        Number        CDATA #IMPLIED
        Label         CDATA #IMPLIED>
    <!ELEMENT TransitionNote (Description?)>
    <!ATTLIST TransitionNote
        TransitionNoteID CDATA #IMPLIED>
    <!ELEMENT SimpleState (Description?, ReceivedDataItem*, SimpleAction?, InternalEvent*,
                           (NewStateTransition | EventIgnoredTransition | CannotHappenTransition)*)>
    <!ATTLIST SimpleState
        Name                       CDATA #REQUIRED
        ManualNumber               CDATA ""
        Number                     CDATA #IMPLIED
        InitialState               (False | True) "False"
        FinalState                 (False | True) #IMPLIED
        WaitState                  (False | True) #IMPLIED
        TransitionEventsCompatible (False | True) #IMPLIED>
    <!ELEMENT ReceivedDataItem EMPTY>
    <!ATTLIST ReceivedDataItem
        SupplementalDataItem CDATA #REQUIRED>
    <!ELEMENT SimpleAction (StatementBlock?)>
    <!ATTLIST SimpleAction
        MaximumVisibleLOC CDATA "">
    <!ELEMENT StatementBlock (#PCDATA)>
    <!ELEMENT InternalEvent EMPTY>
    <!ATTLIST InternalEvent
        Event CDATA #REQUIRED>
    <!ELEMENT NewStateTransition EMPTY>
    <!ATTLIST NewStateTransition
        TransitionEvent    CDATA #REQUIRED
        NewState           CDATA #REQUIRED
        NewStateCompatible (False | True) #IMPLIED
        TransferOfControl  (False | True) "False"
        TransitionNote     CDATA "">
    <!ELEMENT EventIgnoredTransition EMPTY>
    <!ATTLIST EventIgnoredTransition
        TransitionEvent CDATA #REQUIRED
        TransitionNote  CDATA "">
    <!ELEMENT CannotHappenTransition EMPTY>
    <!ATTLIST CannotHappenTransition
        TransitionEvent CDATA #REQUIRED
        TransitionNote  CDATA "">
    <!ELEMENT CreationState (Description?, ReceivedDataItem*, SimpleAction?, InternalEvent*,
                             (NewStateTransition | EventIgnoredTransition | CannotHappenTransition)*)>
    <!ATTLIST CreationState
        Name                    CDATA #REQUIRED
        ManualNumber            CDATA ""
        Number                  CDATA #IMPLIED
        CreationEvent           CDATA #REQUIRED
        CreationEventCompatible (False | True) #IMPLIED
        InitialState            (False | True) "False"
        FinalState              (False | True) #IMPLIED
        WaitState               (False | True) #IMPLIED>
    <!ELEMENT DeletionState (Description?, ReceivedDataItem*, SimpleAction?, InternalEvent*)>
    <!ATTLIST DeletionState
        Name                       CDATA #REQUIRED
        ManualNumber               CDATA ""
        Number                     CDATA #IMPLIED
        TransitionEventsCompatible (False | True) #IMPLIED>
    <!ELEMENT SingleAssignerModel (Description?, (AttributeDataItem | TransientDataItem)*,
                                   TransitionEvent*, TransitionNote*, SimpleState*, StateTransitionDiagram?)>
    <!ATTLIST SingleAssignerModel
        CompetitiveRelationship CDATA #REQUIRED
        ManualEventNumbering    (False | True) "False"
        LabelPrefix             CDATA #IMPLIED
        ManualStateNumbering    (False | True) "False">
    <!ELEMENT MultipleAssignerModel (Description?, (AttributeDataItem | TransientDataItem)*,
                                     TransitionEvent*, TransitionNote*, SimpleState*, StateTransitionDiagram?)>
    <!ATTLIST MultipleAssignerModel
        CompetitiveRelationship CDATA #REQUIRED
        PartitioningObject      CDATA #REQUIRED
        ManualEventNumbering    (False | True) "False"
        LabelPrefix             CDATA #IMPLIED
        ManualStateNumbering    (False | True) "False">
    <!ELEMENT Terminator (Description?, (AttributeDataItem | TransientDataItem)*, DomainCrossingEvent*, ExternalEvent*)>
    <!ATTLIST Terminator
        Name                 CDATA #REQUIRED
        FirstLetters         CDATA #IMPLIED
        CustomLetters        CDATA ""
        KeyLetters           CDATA #IMPLIED
        ManualEventNumbering (False | True) "False"
        LabelPrefix          CDATA #IMPLIED>
    <!ELEMENT DomainCrossingEvent (CarriedDataItem*, Description?)>
    <!ATTLIST DomainCrossingEvent
        Meaning       CDATA #REQUIRED
        ManualNumber  CDATA ""
        Number        CDATA #IMPLIED
        Label         CDATA #IMPLIED>
    <!ELEMENT ExternalEvent EMPTY>
    <!ATTLIST ExternalEvent
        Event CDATA #REQUIRED>
    <!ELEMENT PolymorphicDestination (Description?, (AttributeDataItem | TransientDataItem)*, PolymorphicEvent*)>
    <!ATTLIST PolymorphicDestination
        SubtypeSupertypeRelationship CDATA #REQUIRED
        ManualEventNumbering         (False | True) "False"
        LabelPrefix                  CDATA #IMPLIED>
    <!ELEMENT PolymorphicEvent (CarriedDataItem*, Description?, PolymorphicEventMapping*)>
    <!ATTLIST PolymorphicEvent
        Meaning           CDATA #REQUIRED
        ManualNumber      CDATA ""
        Number            CDATA #IMPLIED
        Label             CDATA #IMPLIED
        MappingComplete   CDATA #IMPLIED
        MappingCompatible CDATA #IMPLIED>
    <!ELEMENT PolymorphicEventMapping EMPTY>
    <!ATTLIST PolymorphicEventMapping
        SubtypeEvent CDATA #REQUIRED>
    <!ELEMENT PatternFile (#PCDATA)>
    <!ATTLIST PatternFile
        Path         CDATA #IMPLIED
        RelativePath CDATA #IMPLIED
        Cached       (False | True) "False"
        RuleSetName  CDATA #REQUIRED>
    <!ELEMENT Bridge (ClientAssumptions?, ServerRequirements?)>
    <!ATTLIST Bridge
        ClientDomain CDATA #REQUIRED
        ServerDomain CDATA #REQUIRED>
    <!ELEMENT ClientAssumptions (#PCDATA)>
    <!ATTLIST ClientAssumptions
        TextFormat (Plain | HTML) "Plain">
    <!ELEMENT ServerRequirements (#PCDATA)>
    <!ATTLIST ServerRequirements
        TextFormat (Plain | HTML) "Plain">
    <!ELEMENT ModelPopulation (Description?, DomainPopulation*)>
    <!ATTLIST ModelPopulation
        Name CDATA #REQUIRED>
    <!ELEMENT DomainPopulation (ObjectInstanceTable*, RelationshipInstanceTable*)>
    <!ATTLIST DomainPopulation
        Domain CDATA #REQUIRED>
    <!ELEMENT ObjectInstanceTable (ObjectInstance*)>
    <!ATTLIST ObjectInstanceTable
        Object CDATA #REQUIRED>
    <!ELEMENT ObjectInstance (AttributeInstance*)>
    <!ATTLIST ObjectInstance
        ObjectInstanceID CDATA #IMPLIED>
    <!ELEMENT AttributeInstance EMPTY>
    <!ATTLIST AttributeInstance
        Attribute      CDATA #REQUIRED
        AttributeValue CDATA #IMPLIED>
    <!ELEMENT RelationshipInstanceTable (RelationshipInstance*)>
    <!ATTLIST RelationshipInstanceTable
        Relationship CDATA #REQUIRED>
    <!ELEMENT RelationshipInstance (ParticipantInstance, ParticipantInstance, ParticipantInstance?)>
    <!ELEMENT ParticipantInstance EMPTY>
    <!ATTLIST ParticipantInstance
        Object         CDATA #REQUIRED
        Role           CDATA #IMPLIED
        ObjectInstance CDATA #REQUIRED>
    <!ELEMENT MetamodelPopulation EMPTY>
    <!ATTLIST MetamodelPopulation
        MetamodelVersion CDATA #REQUIRED>
    <!ELEMENT Configuration (Description?, ArchetypeFile*, Translation*)>
    <!ATTLIST Configuration
        Name CDATA #REQUIRED>
    <!ELEMENT ArchetypeFile (#PCDATA)>
    <!ATTLIST ArchetypeFile
        Path         CDATA #IMPLIED
        RelativePath CDATA #IMPLIED
        Cached       (False | True) "False">
    <!ELEMENT Translation (ErrorMessages?, GeneratedFile*, Notes?)>
    <!ATTLIST Translation
        ArchetypeFile CDATA #REQUIRED
        StartTime     CDATA #REQUIRED
        Duration      CDATA #REQUIRED
        ExitStatus    CDATA #REQUIRED>
    <!ELEMENT ErrorMessages (#PCDATA)>
    <!ATTLIST ErrorMessages
        TextFormat (Plain | HTML) "Plain">
    <!ELEMENT GeneratedFile (#PCDATA)>
    <!ATTLIST GeneratedFile
        Path         CDATA #IMPLIED
        RelativePath CDATA #IMPLIED
        Cached       (False | True) "False">
    <!ELEMENT Notes (#PCDATA)>
    <!ATTLIST Notes
        TextFormat (Plain | HTML) "Plain">
    <!ELEMENT DomainChart (Shape*, BinaryLink*)>
    <!ATTLIST DomainChart
        Path         CDATA #IMPLIED
        RelativePath CDATA #IMPLIED
        Width        CDATA #REQUIRED
        Height       CDATA #REQUIRED
        Font         CDATA #REQUIRED
        Notation     (ShlaerMellor | ExecutableUML | ExecutableUML2) "ShlaerMellor">
    <!ELEMENT SubsystemRelationshipModel (Shape*, BinaryLink*)>
    <!ATTLIST SubsystemRelationshipModel
        Path         CDATA #IMPLIED
        RelativePath CDATA #IMPLIED
        Width        CDATA #REQUIRED
        Height       CDATA #REQUIRED
        Font         CDATA #REQUIRED
        Notation     (ShlaerMellor | ExecutableUML | ExecutableUML2) "ShlaerMellor">
    <!ELEMENT SubsystemCommunicationModel (Shape*, BinaryLink*)>
    <!ATTLIST SubsystemCommunicationModel
        Path         CDATA #IMPLIED
        RelativePath CDATA #IMPLIED
        Width        CDATA #REQUIRED
        Height       CDATA #REQUIRED
        Font         CDATA #REQUIRED
        Notation     (ShlaerMellor | ExecutableUML | ExecutableUML2) "ShlaerMellor">
    <!ELEMENT ObjectInformationModel (Shape*, (BinaryLink | SpurLink | ParentLink | ChildLink)*)>
    <!ATTLIST ObjectInformationModel
        Path         CDATA #IMPLIED
        RelativePath CDATA #IMPLIED
        Width        CDATA #REQUIRED
        Height       CDATA #REQUIRED
        Font         CDATA #REQUIRED
        Notation     (ShlaerMellor | ExecutableUML | ExecutableUML2) "ShlaerMellor">
    <!ELEMENT ObjectCommunicationModel (Shape*, BinaryLink*)>
    <!ATTLIST ObjectCommunicationModel
        Path         CDATA #IMPLIED
        RelativePath CDATA #IMPLIED
        Width        CDATA #REQUIRED
        Height       CDATA #REQUIRED
        Font         CDATA #REQUIRED
        Notation     (ShlaerMellor | ExecutableUML | ExecutableUML2) "ShlaerMellor">
    <!ELEMENT StateTransitionDiagram (Shape*, (BinaryLink | SimpleUnaryLink)*)>
    <!ATTLIST StateTransitionDiagram
        Path         CDATA #IMPLIED
        RelativePath CDATA #IMPLIED
        Width        CDATA #REQUIRED
        Height       CDATA #REQUIRED
        Font         CDATA #REQUIRED
        Notation     (ShlaerMellor | ExecutableUML | ExecutableUML2) "ShlaerMellor">
    <!ELEMENT Shape EMPTY>
    <!ATTLIST Shape
        Name               CDATA #REQUIRED
        X                  CDATA #REQUIRED
        Y                  CDATA #REQUIRED
        Width              CDATA #REQUIRED
        Height             CDATA #REQUIRED
        PreferredSizeUsage (None | UseAsSize | UseAsMinimumSize | UseAsMaximumSize) "UseAsSize">
    <!ELEMENT BinaryLink (WayPoint*)>
    <!ATTLIST BinaryLink
        LinkID             CDATA #REQUIRED
        SourceShape        CDATA #REQUIRED
        TargetShape        CDATA #REQUIRED
        LabelAnchorFlipped (False | True) "False">
    <!ELEMENT WayPoint EMPTY>
    <!ATTLIST WayPoint
        X CDATA #REQUIRED
        Y CDATA #REQUIRED>
    <!ELEMENT SimpleUnaryLink (WayPoint*, TargetPoint)>
    <!ATTLIST SimpleUnaryLink
        LinkID      CDATA #REQUIRED
        SourceShape CDATA #REQUIRED>
    <!ELEMENT TargetPoint EMPTY>
    <!ATTLIST TargetPoint
        X CDATA #REQUIRED
        Y CDATA #REQUIRED>
    <!ELEMENT SpurLink (WayPoint*, TargetPoint)>
    <!ATTLIST SpurLink
        LinkID      CDATA #REQUIRED
        SourceShape CDATA #REQUIRED>
    <!ELEMENT ParentLink (WayPoint*, TargetPoint)>
    <!ATTLIST ParentLink
        LinkID      CDATA #REQUIRED
        SourceShape CDATA #REQUIRED>
    <!ELEMENT ChildLink (WayPoint*)>
    <!ATTLIST ChildLink
        LinkID      CDATA #REQUIRED
        SourceShape CDATA #REQUIRED>
    <!ELEMENT Report (Attachment*)>
    <!ATTLIST Report
        Path         CDATA #IMPLIED
        RelativePath CDATA #IMPLIED
        Id           CDATA #REQUIRED>
    <!ELEMENT Attachment EMPTY>
    <!ATTLIST Attachment
        Path         CDATA #IMPLIED
        RelativePath CDATA #IMPLIED
        Id           CDATA #REQUIRED>
]>
<Project Name="OOA88 Appendix A" Location="file:///C:/DataFiles/Projects/OOATool/website/ooa/OOA88AppendixA/OOA88AppendixA.ooa" LocationFormat="OOA Interchange Format 0.04">
    <Domain Name="Management of Magnetic Tapes" DomainCategory="Application">
        <InformationModel Name="Management of Magnetic Tapes">
            <Description>This information model is concerned with the management of magnetic tapes and
                related equipment in a computer center. A graphical representation of the model
                is given together with the various object and attribute descriptions that comprise
                the textual representation of the model. The purpose of this appendix is to convey
                an understanding of the amount of work that might be required in developing an
                information model of a real-world problem.</Description>
            <Object Name="TSAR">
                <Description TextFormat="HTML">A tape store and retrieval unit (TSAR) is a housing about 10
                    feet long, 7 feet high, and 8 feet wide. Inside the TSAR are several thousand
                    storage slots in which reels of magnetic tape can be placed. The TSAR is equipped
                    with a robot which can be directed to travel about within the TSAR and to move
                    magnetic tapes from one slot to another.
                    &lt;/p&gt;&lt;p&gt;
                    Arranged adjacent to the TSAR are several magnetic tape drives. These
                    tape drives have been positioned in such a way that the robot can reach and
                    manipulate them in order to mount and dismount tapes.
                    &lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;img src=&quot;TSARTopView.png&quot; alt=&quot;TSAR Top View&quot;&gt;&lt;/p&gt;&lt;p&gt;
                    The slots used for storage of tape are located along the long (10 foot) walls
                    of the TSAR housing.</Description>
                <SimpleAttribute Name="TSAR ID">
                    <Description TextFormat="HTML">Each TSAR has been assigned an identifier which is used by the operations and
                        maintenance staff to distinguish between the TSARs in service at the computer
                        center. The identifier is a single alphabetic character, painted conspicuously on
                        the TSAR housing itself.
                        &lt;/p&gt;&lt;p&gt;
                        The TSAR identifiers are assigned by the Chief of Operations.</Description>
                    <ValueDomain>See above</ValueDomain>
                </SimpleAttribute>
                <SimpleAttribute Name="Manufacturer">
                    <Description>This attribute records the name of the manufacturer of the TSAR.</Description>
                    <ValueDomain>manufacturer names</ValueDomain>
                </SimpleAttribute>
                <SimpleAttribute Name="Model Number">
                    <Description TextFormat="HTML">At the moment, there are several kinds of TSARs in service, which differ in minor
                        ways. Some models have storage slots along both of the long walls of the housing;
                        other models have only one long wall so equipped. In addition, the storage slots
                        on some models are closer together, providing a closer packing and, therfore, a
                        larger number of tapes can be placed in the same sized housing. Details on these
                        and other minor differences between models of TSARs can be found in the manufacturer's
                        technical and maintenance manuals.
                        &lt;/p&gt;&lt;p&gt;
                        The Model Number attribute records the manufacturer-stated model number
                        for the TSAR.</Description>
                    <ValueDomain>model numbers (as stated by the manufacturers)</ValueDomain>
                </SimpleAttribute>
                <SimpleAttribute Name="Serial Number">
                    <Description>Every TSAR housing is given a serial number at the time of manufacture. This
                        attribute records that serial number, as bestowed by the manufacturer of the TSAR.</Description>
                    <ValueDomain>serial numbers, as given by the manufacturers</ValueDomain>
                </SimpleAttribute>
                <Identifier IdentifierID="TSAR.I" Preferred="True">
                    <IdentifyingAttribute Attribute="TSAR ID"/>
                </Identifier>
                <Identifier IdentifierID="TSAR.I2">
                    <IdentifyingAttribute Attribute="Manufacturer"/>
                    <IdentifyingAttribute Attribute="Model Number"/>
                    <IdentifyingAttribute Attribute="Serial Number"/>
                </Identifier>
            </Object>
            <Object Name="TSAR Tape Location">
                <Description TextFormat="HTML">Associated with each TSAR are a number of defined tape locations
                    which can be reached by the tape robot. These locations fall into two
                    types: (1) the tape storage slots (see object description for Tape Storage Slot) and
                    (2) the magnetic tape drives accessible by the robot. The TSAR Tape Location
                    object provides the formalization of both types of tape location within the TSARs.
                    &lt;/p&gt;&lt;p&gt;
                    Within a given TSAR, the tape locations are arranged along one or both of
                    the long walls. Every tape location on a given wall is known by its &quot;tier number&quot;,
                    which is proportional to the vertical distance from the floor of the TSAR housing,
                    and a &quot;rank number&quot;, which is proportional to the horizontal distance from the
                    left end of the wall as the robot faces it. The basic scheme for tape locations is
                    shown in the following sketch.
                    &lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;img src=&quot;TSARTapeLocation.png&quot; alt=&quot;TSAR Tape Location&quot;&gt;&lt;/p&gt;&lt;p&gt;
                    Note that each of the magnetic tape drives has been assigned a tier number
                    and a rank number, corresponding to the correct horizontal and vertical position
                    for directing the robot.
                    &lt;/p&gt;&lt;p&gt;
                    TSARs, walls, tiers, and ranks form a natural identification scheme for TSAR
                    tape locations. Note, however, that not all combinations of tier number and rank
                    number correspond to a place where the robot can put a tape, since there are no
                    tape storage slots in the area where the tape drives abut the TSAR housing.</Description>
                <ReferentialAttribute Name="TSAR ID">
                    <Description>Each tape location accessible by a tape robot is identified by the TSAR within
                        which it lies plus a wall number, tier number, and rank number within the TSAR.
                        This attribute provides the TSAR component of the identifier of the tape location.</Description>
                </ReferentialAttribute>
                <SimpleAttribute Name="Wall Number">
                    <Description>Each wall of the TSAR housing has been assigned a number (0 or 1) to identify
                        it. This attribute tells on which wall the tape location has been placed.</Description>
                    <ValueDomain>wall numbers</ValueDomain>
                </SimpleAttribute>
                <SimpleAttribute Name="Tier Number">
                    <Description>The tape locations within the TSAR are arranged in horizontal rows, or tiers.
                        Each tier of tape slots is assigned a tier number, which is proportional to the
                        distance of the tier from the floor of the housing. Tiers are numbered from 0 at
                        the bottom to 6 at the top of the wall.</Description>
                    <ValueDomain>tier numbers</ValueDomain>
                </SimpleAttribute>
                <SimpleAttribute Name="Rank Number">
                    <Description>Each tape location is assigned a rank number, which is proportional to the distance
                        of the tape location from one end of the wall. Rank numbers start at zero at the
                        left end of the wall (as seen by the robot), and continue to a maximum value at
                        the right end.</Description>
                    <ValueDomain>rank numbers</ValueDomain>
                </SimpleAttribute>
                <SimpleAttribute Name="Tape Location ID">
                    <Description TextFormat="HTML">This attribute provides an arbitrary identifier, created for the purposes of this
                        model, for a tape location within a TSAR. The attribute was created to provide
                        a concise way of modeling the subtype/supertype relationship that prevails between
                        the TSAR Tape Location object and the Tape Storage Slots/Robot-Loaded Drive
                        objects.
                        &lt;/p&gt;&lt;p&gt;
                        The domain of this attribute is arbitrary. Should such an identifier be required
                        in implementation of an automated system, the domain could be defined
                        as integers. Alternatively, a naming scheme based on the TSAR ID, wall number,
                        tier number, and rank number could be devised.</Description>
                    <ValueDomain>See above</ValueDomain>
                </SimpleAttribute>
                <Identifier IdentifierID="TSAR Tape Location.I" Preferred="True">
                    <IdentifyingAttribute Attribute="TSAR ID"/>
                    <IdentifyingAttribute Attribute="Tape Location ID"/>
                </Identifier>
                <Identifier IdentifierID="TSAR Tape Location.I2">
                    <IdentifyingAttribute Attribute="TSAR ID"/>
                    <IdentifyingAttribute Attribute="Wall Number"/>
                    <IdentifyingAttribute Attribute="Tier Number"/>
                    <IdentifyingAttribute Attribute="Rank Number"/>
                </Identifier>
            </Object>
            <Object Name="Tape Storage Slot">
                <Description>A Tape Storage Slot is TSAR Tape Location that is used for
                    storage of magnetic tapes within the TSAR. The tape locations corresponding to
                    the robot-loaded magnetic tape drives are not considered to be tape storage slots.</Description>
                <ReferentialAttribute Name="TSAR ID">
                    <Description>This attribute tells which TSAR contains the tape storage slot, and so formalizes
                        the relationship Tape Storage Slot IS IN TSAR.</Description>
                </ReferentialAttribute>
                <ReferentialAttribute Name="TSAR Tape Location ID">
                    <Description>Each tape storage slot is regarded as being a tape location. This attribute provides
                        the identifier of the tape location that corresponds to this tape storage slot, and
                        so formalizes the relationship Tape Storage Slot IS A (SUBTYPE OF) TSAR Tape
                        Location.</Description>
                </ReferentialAttribute>
                <ReferentialAttribute Name="Assigned Tape Reel ID">
                    <Description>Each tape reel selected for storage within a TSAR is assigned to a tape storage
                        slot. This attribute tells which reel, if any, is assigned to this tape storage slot,
                        and so formalizes the relationship TSAR Tape Reel IS ASSIGNED TO Tape
                        Storage Slot.</Description>
                </ReferentialAttribute>
                <Identifier IdentifierID="Tape Storage Slot.I" Preferred="True">
                    <IdentifyingAttribute Attribute="TSAR ID"/>
                    <IdentifyingAttribute Attribute="TSAR Tape Location ID"/>
                </Identifier>
            </Object>
            <Object Name="Robot-Loaded Drive">
                <Description>A Robot-Loaded Drive is a magnetic tape drive that has been
                    specially constructed to allow loading of tapes on it by a tape robot. In every
                    other regard, a Robot-Loaded Drive is an entirely standard tape drive.</Description>
                <ReferentialAttribute Name="Drive Number">
                    <Description TextFormat="HTML">Every magnetic tape drive in the facility is assigned a unique drive number by the
                        operations staff. This attribute provides the drive number for a robot-loaded tape
                        drive.
                        &lt;/p&gt;&lt;p&gt;
                        See also the description of Drive.Drive Number.
                        &lt;/p&gt;&lt;p&gt;
                        This attribute is used to establish the relationship Robot-Loaded Drive IS A
                        (SUBTYPE OF) Drive.</Description>
                </ReferentialAttribute>
                <ReferentialAttribute Name="TSAR ID">
                    <Description>Each robot-loaded drive is placed adjacent to a TSAR housing in such a way that
                        the tape loading station of the drive lines up with a special loading slot on the
                        TSAR housing. This attribute formalizes the relationship Robot-Loaded Drive
                        IS ADJACENT TO TSAR.</Description>
                </ReferentialAttribute>
                <ReferentialAttribute Name="TSAR Tape Location ID">
                    <Description TextFormat="HTML">Each robot-loaded drive can be viewed as a tape location within a TSAR, in that
                        it provides a place to which the robot can deliver tapes. This situation is reflected
                        in the model by the relationship Robot-Loaded Drive IS A (SUBTYPE OF) TSAR
                        Tape Location.
                        &lt;/p&gt;&lt;p&gt;
                        This attribute, together with Robot-Loaded Drive.TSAR ID, formlizes the
                        relationship Robot-Loaded Drive IS A TSAR Tape Location.</Description>
                </ReferentialAttribute>
                <Identifier IdentifierID="Robot-Loaded Drive.I" Preferred="True">
                    <IdentifyingAttribute Attribute="Drive Number"/>
                </Identifier>
                <Identifier IdentifierID="Robot-Loaded Drive.I2">
                    <IdentifyingAttribute Attribute="TSAR ID"/>
                    <IdentifyingAttribute Attribute="TSAR Tape Location ID"/>
                </Identifier>
            </Object>
            <Object Name="Tape Robot" CustomLetters="TRob">
                <Description TextFormat="HTML">A tape robot is a mechanical device that is capable of fetching
                    a tape from a tape location in a TSAR, travelling to another point in the TSAR,
                    and depositing the tape in a new tape location. The tape robot runs on tracks
                    fixed to the floor of the TSAR housing.
                    &lt;/p&gt;&lt;p&gt;
                    The tape robot is a computer-controllable device.</Description>
                <ReferentialAttribute Name="TSAR ID">
                    <Description>Each tape robot is housed in exactly one TSAR. This attribute tells the name of
                        the TSAR in which the robot is housed, and so formalizes the relationship Tape
                        Robot IS HOUSED IN TSAR.</Description>
                </ReferentialAttribute>
                <SimpleAttribute Name="Cycle State">
                    <Description TextFormat="HTML">The motions that the tape robot goes through are described as states in an operational
                        cycle. Under normal circumstances, the robot progresses serially through
                        states 1 to 6, as follows:
                        &lt;ol&gt;
                        &lt;li&gt;Idle. The robot is motionless and ready to accept a new &quot;tape move&quot; comand.&lt;/li&gt;
                        &lt;li&gt;Accepting Command. The robot is accepting a &quot;tape move&quot; command.
                        &#32;   Each tape move command specifies a source wall, source tier, and source
                        &#32;   rank, as well as a target wall, target tier, and target rank. The meaning of
                        &#32;   the command is to move a tape from the source to the target location.&lt;/li&gt;
                        &lt;li&gt;Seeking Source. The robot is moving to the source tape location.&lt;/li&gt;
                        &lt;li&gt;At Source. The robot is positioned in front of the source tape location and
                        &#32;   is picking up the tape.&lt;/li&gt;
                        &lt;li&gt;Seeking Target. The robot is moving to the target tape location.&lt;/li&gt;
                        &lt;li&gt;At Target. The robot is positioned in front of the target tape location and
                        &#32;   is depositing the tape. Following this state, the robot will return to the Idle
                        &#32;   state.
                        &#32;   &lt;br&gt;&lt;br&gt;There are also several error states:&lt;br&gt;&lt;br&gt;
                        &lt;/li&gt;
                        &lt;li&gt;No Tape at Source. If the robot enters this state, the computer must issue
                        &#32;   a &quot;robot reset&quot; command to return the robot to the Idle state.&lt;/li&gt;
                        &lt;li&gt;Dropped Tape. This state occurs if the robot ever picks up the source tape,
                        &#32;   but loses it before depositing it at the target tape location. If the robot enters
                        &#32;   this state, the operations staff must enter the TSAR housing and pick up the
                        &#32;   dropped tape; after which the computer must issue a &quot;robot reset&quot; command
                        &#32;   to return the robot to the Idle state.&lt;/li&gt;
                        &lt;li&gt;Reset with Tape in Hand. This state occurs if a &quot;robot reset&quot; command is
                        &#32;   given when the robot is carrying a tape.&lt;/li&gt;
                        &lt;/ol&gt;</Description>
                    <ValueDomain>[ idle | accepting command | seeking source | at source | seeking target
                        | at target | no tape at source | dropped tape | reset with tape in hand ]</ValueDomain>
                </SimpleAttribute>
                <SimpleAttribute Name="Current Wall Number">
                    <Description>The wall currently being accessed by the tape robot. When the tape robot is in
                        motion, the current wall number is considered to be the number of the last wall
                        accessed.</Description>
                    <ValueDomain>wall numbers</ValueDomain>
                </SimpleAttribute>
                <SimpleAttribute Name="Desired Wall Number">
                    <Description>The wall to which the tape robot is being directed. Under normal circumstances,
                        the desired wall number will differ from the current wall number only when the
                        tape robot is in motion. If, however, the robot is broken, it may stop before it
                        reaches the new (desired) wall number.</Description>
                    <ValueDomain>wall numbers</ValueDomain>
                </SimpleAttribute>
                <SimpleAttribute Name="Current Tier Number">
                    <Description>The tier currently being accessed by the robot. When the robot is in motion, the
                        current tier number is undefined.</Description>
                    <ValueDomain>tier numbers or undefined</ValueDomain>
                </SimpleAttribute>
                <SimpleAttribute Name="Desired Tier Number">
                    <Description>The tier to which the tape robot is being directed. Unless the robot is broken,
                        the desired tier number will diff from the current tier number only when the tape
                        robot is in motion.</Description>
                    <ValueDomain>tier numbers</ValueDomain>
                </SimpleAttribute>
                <SimpleAttribute Name="Current Rank Number">
                    <Description>The rank currently being accessed by the robot. When the robot is in motion,
                        the current rank number is undefined.</Description>
                    <ValueDomain>rank numbers or undefined</ValueDomain>
                </SimpleAttribute>
                <SimpleAttribute Name="Desired Rank Number">
                    <Description>The rank to which the tape robot is being directed. Unless the robot is broken,
                        the desired rank number will differ from the current rank number only when the
                        tape robot is in motion.</Description>
                    <ValueDomain>rank numbers</ValueDomain>
                </SimpleAttribute>
                <ReferentialAttribute Name="Computer Name">
                    <Description>Each tape robot is controlled by exactly one computer. This attribute provides
                        the name of that computer, so formalizing the relationship Tape Robot IS CONTROLLED BY
                        Computer.</Description>
                </ReferentialAttribute>
                <Identifier IdentifierID="Tape Robot.I" Preferred="True">
                    <IdentifyingAttribute Attribute="TSAR ID"/>
                </Identifier>
            </Object>
            <Object Name="Drive">
                <Description TextFormat="HTML">A Drive is a computer-controlled magnetic tape drive which is used to read
                    and write industry-standard magnetic tapes for programs running on the computer
                    to which it is interfaced.
                    &lt;/p&gt;&lt;p&gt;
                    Each tape drive in the computer center is assigned one of two roles: It can
                    be acting as an operator-loaded drive, in which case it can be interfaced to any of
                    the general purpose computers, or it can be acting as a robot-loaded drive. In
                    this case, the drive must be interfaced to a computer that is equipped with a TSAR.</Description>
                <SimpleAttribute Name="Drive Number">
                    <Description TextFormat="HTML">Each tape drive has been assigned a drive number which is used by the operations
                        and maintenance staff to distinguish between the drives in service at the computer
                        center. The drive numbers are posted on the fronts of the drives.
                        &lt;/p&gt;&lt;p&gt;
                        Drive numbers are assigned from the integers by the maintenance group.</Description>
                    <ValueDomain>See above.</ValueDomain>
                </SimpleAttribute>
                <SimpleAttribute Name="Number of Tracks">
                    <Description>Each tape drive is equipped with magnetic heads which read and write bits in tracks
                        longitudinally on the tape. The number of tracks that can be read or written is
                        determined by the construction of the magnetic heads and supporting electronics.</Description>
                    <ValueDomain>number of tracks (7 or 9)</ValueDomain>
                </SimpleAttribute>
                <SimpleAttribute Name="Density">
                    <Description TextFormat="HTML">Drives may read and write data in a variety of densities, measured in bits per
                        (longitudinal) inch of tape. Standard densities available with the more modern
                        drives are 800 bpi (bits per inch), 1600 bpi, and 6250 bpi. The computer center
                        also maintains a few older drives to allow access to tapes which were originally
                        written at 200 or 556 bpi.
                        &lt;/p&gt;&lt;p&gt;
                        Some drives allow a choice of density. Density selection, if available, is
                        under computer control.
                        &lt;/p&gt;&lt;p&gt;
                        The Drive.Density attribute models the &lt;i&gt;set&lt;/i&gt; of densities available on the drive.</Description>
                    <ValueDomain>[ 800 | 1600 | 6250 | 800 &amp; 1600 &amp; 6250 | 200 &amp; 556 ]</ValueDomain>
                </SimpleAttribute>
                <Identifier IdentifierID="Drive.I" Preferred="True">
                    <IdentifyingAttribute Attribute="Drive Number"/>
                </Identifier>
            </Object>
            <Object Name="Operator-Loaded Drive">
                <Description>An Operator-Loaded Drive is a magnetic tape drive that is not
                    associated with a TSAR and, therfore, must have magnetic tapes mounted on it
                    by an operator.</Description>
                <ReferentialAttribute Name="Drive Number">
                    <Description>This attribute provides the drive number of the operator-loaded drive. It formalizes
                        the relationship Operator-Loaded Drive IS A (SUBTYPE OF) Drive.</Description>
                </ReferentialAttribute>
                <ReferentialAttribute Name="Computer Name">
                    <Description>This attribute tells which computer the operator-loaded drive has been interfaced
                        with. See the description of the relationship Drive IS CONTROLLED AND
                        ACCESSED BY Computer.</Description>
                </ReferentialAttribute>
                <Identifier IdentifierID="Operator-Loaded Drive.I" Preferred="True">
                    <IdentifyingAttribute Attribute="Drive Number"/>
                </Identifier>
            </Object>
            <Object Name="Computer">
                <Description>The computer center operates a number of general-purpose computers
                    for use by various departments of the company. Only general-purpose
                    computers housed at the computer center and under the control of the operations
                    staff are considered to be Computers in this model. Personal computers, network
                    concentrartors, and various sepcial purpose machines do not qualify.</Description>
                <SimpleAttribute Name="Computer Name">
                    <Description TextFormat="HTML">Every computer is assigned a name by the Operations Department. These names
                        are in widespread use by operations, maintenance, and the computer users. The
                        names are not posted on the machines, but appear on the Machine Schedule board
                        in the user's lobby.
                        &lt;/p&gt;&lt;p&gt;
                        At one time the computers were named by a numbering system. Currently,
                        however, they are named after Sesame Street characters: Big Bird, Oscar the
                        Grouch, Cookie Monster, and the like.</Description>
                    <ValueDomain>See Above</ValueDomain>
                </SimpleAttribute>
                <SimpleAttribute Name="Manufacturer">
                    <Description>This attribute provides the name of the manufacturer of the computer.</Description>
                    <ValueDomain>computer manufacturers</ValueDomain>
                </SimpleAttribute>
                <SimpleAttribute Name="Model Number">
                    <Description>The model number of the computer, as stated by the manufacturer.</Description>
                    <ValueDomain>manufacturer model numbers</ValueDomain>
                </SimpleAttribute>
                <SimpleAttribute Name="Serial Number">
                    <Description>The serial number given to the central processor by the manufacturer.</Description>
                    <ValueDomain>manufacturer's serial numbers</ValueDomain>
                </SimpleAttribute>
                <SimpleAttribute Name="Operating System">
                    <Description>The name of the operating system used on this computer when in production.</Description>
                    <ValueDomain>operating system names</ValueDomain>
                </SimpleAttribute>
                <Identifier IdentifierID="Computer.I" Preferred="True">
                    <IdentifyingAttribute Attribute="Computer Name"/>
                </Identifier>
                <Identifier IdentifierID="Computer.I2">
                    <IdentifyingAttribute Attribute="Manufacturer"/>
                    <IdentifyingAttribute Attribute="Model Number"/>
                    <IdentifyingAttribute Attribute="Serial Number"/>
                </Identifier>
            </Object>
            <Object Name="Tape Reel">
                <Description>A Tape Reel is a magnetic tape which has been assigned a Tape Reel ID.</Description>
                <SimpleAttribute Name="Tape Reel ID">
                    <Description>Each tape is assigned a unique identifier by the Operations staff before it is placed
                        into service. The identifier is of the form yy-mm-v-n, where yy are the last two
                        digits of the year, mm is a one or two digit month number, v is a single letter code
                        identifying the company division to which the tape will be allocated, and n is a
                        sequence number assigned sequentially through the month. The information encoded
                        in the ID is purely for the convenience of the Operations staff, and is of no
                        consequence to the usage of the tape.</Description>
                    <ValueDomain>See above</ValueDomain>
                </SimpleAttribute>
                <SimpleAttribute Name="Number of Tracks">
                    <Description>The number of tracks written on the tape. This attribute is established at the time
                        the tape is first written (&quot;initialized&quot;, in the terminology of the computer center).
                        See description of Drive.Number of Tracks.</Description>
                    <ValueDomain>Same as Drive.Number of Tracks</ValueDomain>
                </SimpleAttribute>
                <SimpleAttribute Name="Density">
                    <Description>The density at which the tape was written. This attribute is established at the time
                        the tape is initialized.</Description>
                    <ValueDomain>Same as Drive.Density</ValueDomain>
                </SimpleAttribute>
                <Identifier IdentifierID="Tape Reel.I" Preferred="True">
                    <IdentifyingAttribute Attribute="Tape Reel ID"/>
                </Identifier>
            </Object>
            <Object Name="Operator-Accessible Tape Reel">
                <Description>An operator-accessible tape reel is a reel of magnetic tape that
                    is stored outside of the TSARs. Operator-accessible reels must be mounted on
                    the operator accessible tape drives for use by programs.</Description>
                <ReferentialAttribute Name="Tape Reel ID">
                    <Description>This attribute provides the identifier of a tape reel that has been classified as an
                        operator accessible tape reel.</Description>
                </ReferentialAttribute>
                <Identifier IdentifierID="Operator-Accessible Tape Reel.I" Preferred="True">
                    <IdentifyingAttribute Attribute="Tape Reel ID"/>
                </Identifier>
            </Object>
            <Object Name="TSAR Tape Reel">
                <Description>A TSAR tape reel is a tape reel that has been placed in a TSAR.</Description>
                <ReferentialAttribute Name="Tape Reel ID">
                    <Description>This attribute provides the identifier of a tape reel that has been classified as a
                        TSAR tape reel.</Description>
                </ReferentialAttribute>
                <ReferentialAttribute Name="TSAR ID">
                    <Description TextFormat="HTML">At any time, a TSAR tape reel is to be found somewhere within the TSAR to
                        which it has been assigned.
                        &lt;/p&gt;&lt;p&gt;
                        This attribute, together with TSAR Tape Reel.Current Tape Location ID,
                        formalizes the relationship TSAR Tape Reel IS CURRENTLY LOCATED IN
                        TSAR Tape Location.</Description>
                </ReferentialAttribute>
                <ReferentialAttribute Name="Current Tape Location ID">
                    <Description>This attribute tells which tape location within the TSAR currently holds the TSAR
                        tape reel.</Description>
                </ReferentialAttribute>
                <Identifier IdentifierID="TSAR Tape Reel.I" Preferred="True">
                    <IdentifyingAttribute Attribute="Tape Reel ID"/>
                </Identifier>
            </Object>
            <Object Name="Tape Mount">
                <Description TextFormat="HTML">A tape mount is the mounting of a tape reel on a tape drive for
                    the purposes of access by a program.
                    &lt;/p&gt;&lt;p&gt;
                    Tape mounts come in two types: Mounts done by an operator (formalized
                    as Operator Tape Mounts) and Mounts done by a tape robot (formalized as TSAR
                    Tape Mounts). This typing is reflected in the model by the subtype/supertype
                    relationship between Tape Mount, Operator Tape Mount, and TSAR Tape Mount.</Description>
                <SimpleAttribute Name="Mount ID">
                    <Description>An arbitrary identifier assigned to the Tape Mount for purposes of formalizing
                        the subtype/supertype relationship Operator Tape Mount/TSAR Tape Mount IS
                        A Tape Mount.</Description>
                    <ValueDomain>See above</ValueDomain>
                </SimpleAttribute>
                <SimpleAttribute Name="Date of Mount">
                    <Description>Every tape mount occurs on a date. This attribute reflects the date on which the
                        mount took place.</Description>
                    <ValueDomain>dates</ValueDomain>
                </SimpleAttribute>
                <SimpleAttribute Name="Time of Mount">
                    <Description>Every tape mount occurs at a specific time of day. This attribute records the time
                        at which the mount took place.</Description>
                    <ValueDomain>times</ValueDomain>
                </SimpleAttribute>
                <ReferentialAttribute Name="Request ID">
                    <Description>Tape mounts are done at the request of a program that needs access to the tape.
                        This attribute records the request that occasioned the mount. See also the description
                        for the Tape Request object.</Description>
                </ReferentialAttribute>
                <Identifier IdentifierID="Tape Mount.I" Preferred="True">
                    <IdentifyingAttribute Attribute="Mount ID"/>
                </Identifier>
            </Object>
            <Object Name="Operator Tape Mount">
                <Description TextFormat="HTML">An Operator Tape Mount is the mounting of an operator-accessible
                    tape reel on an operator-loaded drive.
                    &lt;/p&gt;&lt;p&gt;
                    Operator Tape Mount is an associative object used to formalize the (Mc:Mc)
                    relationship Operator-Accessible Tape Reel HAS BEEN MOUNTED ON
                    Operator-Loaded drive.</Description>
                <ReferentialAttribute Name="Tape Reel ID">
                    <Description>This attribute tells which tape reel participated in the mount.</Description>
                </ReferentialAttribute>
                <ReferentialAttribute Name="Drive Number">
                    <Description>This attribute tells which tape drive participated in the mount.</Description>
                </ReferentialAttribute>
                <ReferentialAttribute Name="Mount ID">
                    <Description>This attribute formalizes the relationship Operator Tape Mount IS A (SUBTYPE
                        OF) Tape Mount.</Description>
                </ReferentialAttribute>
                <Identifier IdentifierID="Operator Tape Mount.I" Preferred="True">
                    <IdentifyingAttribute Attribute="Mount ID"/>
                </Identifier>
            </Object>
            <Object Name="TSAR Tape Mount">
                <Description TextFormat="HTML">A TSAR tape mount is the mounting of a TSAR tape reel on a
                    robot-loaded drive.
                    &lt;/p&gt;&lt;p&gt;
                    TSAR Tape Mount is as associated object used to formalize the (Mc:Mc)
                    relationship TSAR Tape Reel HAS BEEN MOUNTED ON Robot-Loaded Drive.</Description>
                <ReferentialAttribute Name="Tape Reel ID">
                    <Description>This attribute tells which tape reel participated in the TSAR tape mount.</Description>
                </ReferentialAttribute>
                <ReferentialAttribute Name="Drive Number">
                    <Description>This attribute tells which tape drive participated in the mount.</Description>
                </ReferentialAttribute>
                <ReferentialAttribute Name="Mount ID">
                    <Description>This attribute formalizes the relationship TSAR Tape Mount IS A (SUBTYPE
                        OF) Tape Mount.</Description>
                </ReferentialAttribute>
                <Identifier IdentifierID="TSAR Tape Mount.I" Preferred="True">
                    <IdentifyingAttribute Attribute="Mount ID"/>
                </Identifier>
            </Object>
            <Object Name="Tape Request" CustomLetters="TReq">
                <Description TextFormat="HTML">Whenever a program requires a tape (other than a scratch tape),
                    it issues a tape request. Each tape request specifies the particular type required,
                    the computer and program to which the tape is to be made available, and the time
                    and date of the request.
                    &lt;/p&gt;&lt;p&gt;
                    Each tape request is eventually satisfied by a tape mount.
                    &lt;/p&gt;&lt;p&gt;
                    Tape Request is an associative object used to formalize the relationship Tape
                    Reel WAS REQUESTED FOR USE BY PROGRAM RUNNING ON Computer
                    (Mc:Mc).</Description>
                <SimpleAttribute Name="Request ID">
                    <Description TextFormat="HTML">Each tape request within a particular computer is assigned a request ID&amp;#8212;a number&amp;#8212;
                        by the operating system. This attribute records that request ID.</Description>
                    <ValueDomain>See above</ValueDomain>
                </SimpleAttribute>
                <ReferentialAttribute Name="Computer Name">
                    <Description>Each tape request originates in a single computer. This attribute records the
                        computer in which the request was generated.</Description>
                </ReferentialAttribute>
                <ReferentialAttribute Name="Tape Reel ID">
                    <Description>This attribute tells which tape reel was being asked for in this tape request.</Description>
                </ReferentialAttribute>
                <SimpleAttribute Name="Date">
                    <Description>This attribute records the date of the tape request.</Description>
                    <ValueDomain>dates</ValueDomain>
                </SimpleAttribute>
                <SimpleAttribute Name="Time">
                    <Description>This attribute records the time of the tape request. It is assumed that time is
                        recorded to such precision that a single tape reel cannot be requested twice at the
                        same Tape Request.Time by programs running in the same computer.</Description>
                    <ValueDomain>times</ValueDomain>
                </SimpleAttribute>
                <SimpleAttribute Name="Program Requesting">
                    <Description>Every tape request is generated by a program. This attribute records the name
                        of the program that generated the tape request.</Description>
                    <ValueDomain>program names</ValueDomain>
                </SimpleAttribute>
                <Identifier IdentifierID="Tape Request.I">
                    <IdentifyingAttribute Attribute="Request ID"/>
                </Identifier>
                <Identifier IdentifierID="Tape Request.I2" Preferred="True">
                    <IdentifyingAttribute Attribute="Computer Name"/>
                    <IdentifyingAttribute Attribute="Tape Reel ID"/>
                    <IdentifyingAttribute Attribute="Date"/>
                    <IdentifyingAttribute Attribute="Time"/>
                </Identifier>
            </Object>
            <SimpleRelationship RelationshipID="R1">
                <Description TextFormat="HTML">Every TSAR housing comes equipped with a tape robot since this is necessary for
                    the TSAR to accomplish the function for which it was designed. Every tape robot
                    on site is installed in a TSAR.
                    &lt;/p&gt;&lt;p&gt;
                    The relationship is formalized by the referential attribute Tape Robot.TSAR
                    ID.</Description>
                <FirstParticipant Object="TSAR" VerbPhrase="houses">
                </FirstParticipant>
                <SecondParticipant Object="Tape Robot" VerbPhrase="is&#10;housed&#10;in">
                    <SecondToFirstMapping TargetIdentifier="TSAR.I">
                        <ReferentialAttributeMapping ReferentialAttribute="TSAR ID" IdentifyingAttribute="TSAR ID"/>
                    </SecondToFirstMapping>
                </SecondParticipant>
            </SimpleRelationship>
            <SimpleRelationship RelationshipID="R2">
                <Description TextFormat="HTML">Every tape storage slot, by definition, is a part of and inside exactly one
                    TSAR. Each TSAR comes equipped with tape storage slots, since the tape
                    storage slot is an essential aspect of the TSAR.
                    &lt;/p&gt;&lt;p&gt;
                    The relationship is formalized by the referential attribute Tape Storage
                    Slot.TSAR ID.</Description>
                <FirstParticipant Object="TSAR" VerbPhrase="contains">
                </FirstParticipant>
                <SecondParticipant Object="Tape Storage Slot" VerbPhrase="is in" Many="True">
                    <SecondToFirstMapping TargetIdentifier="TSAR.I">
                        <ReferentialAttributeMapping ReferentialAttribute="TSAR ID" IdentifyingAttribute="TSAR ID"/>
                    </SecondToFirstMapping>
                </SecondParticipant>
            </SimpleRelationship>
            <SimpleRelationship RelationshipID="R3">
                <Description TextFormat="HTML">By construction of a TSAR, each tape robot has access to all the tape locations
                    within a TSAR. Every tape location within a TSAR can be accessed by the
                    tape robot that is contained in the TSAR.
                    &lt;/p&gt;&lt;p&gt;
                    The relationship is formalized by the attribute TSAR Tape Location.TSAR
                    ID.</Description>
                <FirstParticipant Object="Tape Robot" VerbPhrase="has&#10;access&#10;to">
                </FirstParticipant>
                <SecondParticipant Object="TSAR Tape Location" VerbPhrase="can be&#10;accessed by" Many="True">
                    <SecondToFirstMapping TargetIdentifier="Tape Robot.I">
                        <ReferentialAttributeMapping ReferentialAttribute="TSAR ID" IdentifyingAttribute="TSAR ID"/>
                    </SecondToFirstMapping>
                </SecondParticipant>
            </SimpleRelationship>
            <SubtypeSupertypeRelationship RelationshipID="R4">
                <Description TextFormat="HTML">TSAR Tape Location is defined to be the union of all places within the TSAR
                    in which the robot can place a tape. There are exactly two types of such
                    places: the tape storage slots and the robot-loaded magnetic tape drives.
                    &lt;/p&gt;&lt;p&gt;
                    The relationship is captured by the combination of attributes TSAR ID and
                    TSAR Tape Location ID, which occur in all three objects concerned.</Description>
                <SupertypeParticipant Object="TSAR Tape Location"/>
                <SubtypeParticipant Object="Robot-Loaded Drive">
                    <SubtypeToSupertypeMapping TargetIdentifier="TSAR Tape Location.I">
                        <ReferentialAttributeMapping ReferentialAttribute="TSAR ID" IdentifyingAttribute="TSAR ID"/>
                        <ReferentialAttributeMapping ReferentialAttribute="TSAR Tape Location ID" IdentifyingAttribute="Tape Location ID"/>
                    </SubtypeToSupertypeMapping>
                </SubtypeParticipant>
                <SubtypeParticipant Object="Tape Storage Slot">
                    <SubtypeToSupertypeMapping TargetIdentifier="TSAR Tape Location.I">
                        <ReferentialAttributeMapping ReferentialAttribute="TSAR ID" IdentifyingAttribute="TSAR ID"/>
                        <ReferentialAttributeMapping ReferentialAttribute="TSAR Tape Location ID" IdentifyingAttribute="Tape Location ID"/>
                    </SubtypeToSupertypeMapping>
                </SubtypeParticipant>
            </SubtypeSupertypeRelationship>
            <SimpleRelationship RelationshipID="R5">
                <Description TextFormat="HTML">In order for a TSAR to fulfill its function as a computer-controllable source
                    of information from magnetic tapes, it must be equipped with at least one
                    robot-loaded tape drive. The TSARs in use at the facility provide for several
                    robot-loaded drives (4 or 6, depending on the model).
                    &lt;/p&gt;&lt;p&gt;
                    A tape drive is considered to be a robot-loaded drive only when it is installed
                    adjacent to a TSAR, since it can be loaded by the tape robot only when
                    placed adjacent to a TSAR.
                    &lt;/p&gt;&lt;p&gt;
                    The relationship is formalized by the referential attribute Robot-Loaded
                    Drive.TSAR ID.</Description>
                <FirstParticipant Object="TSAR" VerbPhrase="is adjacent to">
                </FirstParticipant>
                <SecondParticipant Object="Robot-Loaded Drive" VerbPhrase="is adjacent to" Many="True">
                    <SecondToFirstMapping TargetIdentifier="TSAR.I">
                        <ReferentialAttributeMapping ReferentialAttribute="TSAR ID" IdentifyingAttribute="TSAR ID"/>
                    </SecondToFirstMapping>
                </SecondParticipant>
            </SimpleRelationship>
            <SimpleRelationship RelationshipID="R6">
                <Description TextFormat="HTML">Every tape robot is interfaced to one computer, under whose control the
                    robot operates. A given computer can control any number of tape robots.
                    &lt;/p&gt;&lt;p&gt;
                    The relationship is formalized by the referential attribute Tape Robot.Computer
                    Name.</Description>
                <FirstParticipant Object="Computer" VerbPhrase="controls">
                </FirstParticipant>
                <SecondParticipant Object="Tape Robot" VerbPhrase="is controlled by" Many="True" Conditional="True">
                    <SecondToFirstMapping TargetIdentifier="Computer.I">
                        <ReferentialAttributeMapping ReferentialAttribute="Computer Name" IdentifyingAttribute="Computer Name"/>
                    </SecondToFirstMapping>
                </SecondParticipant>
            </SimpleRelationship>
            <SimpleRelationship RelationshipID="R7">
                <Description TextFormat="HTML">Every tape reel that is placed in a TSAR for access is assigned a tape storage
                    slot. The tape reel is kept in the assigned tape storage slot whenever it is
                    not mounted on a robot-loaded drive.
                    &lt;/p&gt;&lt;p&gt;
                    Each tape storage slot has, at most, a single tape reel assigned to it.
                    &lt;/p&gt;&lt;p&gt;
                    This relationship is formalized by the referential attribute Tape Storage
                    Slot.Assigned Tape Reel ID.</Description>
                <FirstParticipant Object="TSAR Tape Reel" VerbPhrase="is&#10;assigned&#10;to" Conditional="True">
                </FirstParticipant>
                <SecondParticipant Object="Tape Storage Slot" VerbPhrase="is allocated&#10;for storage of">
                    <SecondToFirstMapping TargetIdentifier="TSAR Tape Reel.I">
                        <ReferentialAttributeMapping ReferentialAttribute="Assigned Tape Reel ID" IdentifyingAttribute="Tape Reel ID"/>
                    </SecondToFirstMapping>
                </SecondParticipant>
            </SimpleRelationship>
            <SimpleRelationship RelationshipID="R8">
                <Description TextFormat="HTML">Each TSAR tape location can contain at most one TSAR tape reel at any
                    given time. Each TSAR tape reel is located in some TSAR tape location at
                    any time.
                    &lt;/p&gt;&lt;p&gt;
                    This relationship is formalized by the referential attribute TSAR Tape
                    Reel.Current Tape Location ID.</Description>
                <FirstParticipant Object="TSAR Tape Location" VerbPhrase="currently&#10;contains">
                </FirstParticipant>
                <SecondParticipant Object="TSAR Tape Reel" VerbPhrase="is&#10;currently&#10;located&#10;in" Conditional="True">
                    <SecondToFirstMapping TargetIdentifier="TSAR Tape Location.I">
                        <ReferentialAttributeMapping ReferentialAttribute="TSAR ID" IdentifyingAttribute="TSAR ID"/>
                        <ReferentialAttributeMapping ReferentialAttribute="Current Tape Location ID" IdentifyingAttribute="Tape Location ID"/>
                    </SecondToFirstMapping>
                </SecondParticipant>
            </SimpleRelationship>
            <SubtypeSupertypeRelationship RelationshipID="R9">
                <Description TextFormat="HTML">Each tape reel in this facility has been assigned to one of two categories: reels
                    to be loaded by operators (in which case the reel is placed in the tape vault)
                    and reels to be loaded by robots (in which case the reel is placed in a TSAR).
                    &lt;/p&gt;&lt;p&gt;
                    The relationship is formalized by the attribute Tape Reel ID, which occurs
                    in all three objects concerned.</Description>
                <SupertypeParticipant Object="Tape Reel"/>
                <SubtypeParticipant Object="Operator-Accessible Tape Reel">
                    <SubtypeToSupertypeMapping TargetIdentifier="Tape Reel.I">
                        <ReferentialAttributeMapping ReferentialAttribute="Tape Reel ID" IdentifyingAttribute="Tape Reel ID"/>
                    </SubtypeToSupertypeMapping>
                </SubtypeParticipant>
                <SubtypeParticipant Object="TSAR Tape Reel">
                    <SubtypeToSupertypeMapping TargetIdentifier="Tape Reel.I">
                        <ReferentialAttributeMapping ReferentialAttribute="Tape Reel ID" IdentifyingAttribute="Tape Reel ID"/>
                    </SubtypeToSupertypeMapping>
                </SubtypeParticipant>
            </SubtypeSupertypeRelationship>
            <SubtypeSupertypeRelationship RelationshipID="R10">
                <Description TextFormat="HTML">The tape drives in the facility have been divided into two classes: those to be
                    loaded by operators and those to be loaded by robots. Every drive is so
                    classified.
                    &lt;/p&gt;&lt;p&gt;
                    The relationship is formalized by the attribute Drive Number, which occurs
                    in all three objects concerned.</Description>
                <SupertypeParticipant Object="Drive"/>
                <SubtypeParticipant Object="Operator-Loaded Drive">
                    <SubtypeToSupertypeMapping TargetIdentifier="Drive.I">
                        <ReferentialAttributeMapping ReferentialAttribute="Drive Number" IdentifyingAttribute="Drive Number"/>
                    </SubtypeToSupertypeMapping>
                </SubtypeParticipant>
                <SubtypeParticipant Object="Robot-Loaded Drive">
                    <SubtypeToSupertypeMapping TargetIdentifier="Drive.I">
                        <ReferentialAttributeMapping ReferentialAttribute="Drive Number" IdentifyingAttribute="Drive Number"/>
                    </SubtypeToSupertypeMapping>
                </SubtypeParticipant>
            </SubtypeSupertypeRelationship>
            <SimpleRelationship RelationshipID="R11">
                <Description TextFormat="HTML">Every tape drive is interfaced to exactly one computer, while a given computer
                    can be interfaced to zero or more tape drives.
                    &lt;/p&gt;&lt;p&gt;
                    The relationship is formalized by two paths, depending on the type of drive
                    concerned. If the drive is an operator-loaded drive, the relationship is formalized
                    by the referential attribute Operator-Loaded Drive.Computer Name.
                    If the drive is a robot-loaded drive, the relationship is reflected in the model
                    by a query chain: Robot-Loaded Drive.TSAR ID tells what TSAR the drive
                    is adjacent to, Tape Robot.TSAR ID tells what tape robot loads the drive,
                    and Tape Robot.Computer Name gives the name of the computer controlling
                    the robot. This computer must be the one which is controlling and accessing
                    the robot-loaded drive (or else we would be able to load a drive by a request
                    from one computer, but not able to read the data from the tape).</Description>
                <FirstParticipant Object="Computer" VerbPhrase="controls&#10;and accesses">
                </FirstParticipant>
                <SecondParticipant Object="Operator-Loaded Drive" VerbPhrase="is controlled&#10;and accessed by" Many="True" Conditional="True">
                    <SecondToFirstMapping TargetIdentifier="Computer.I">
                        <ReferentialAttributeMapping ReferentialAttribute="Computer Name" IdentifyingAttribute="Computer Name"/>
                    </SecondToFirstMapping>
                </SecondParticipant>
            </SimpleRelationship>
            <AssociativeRelationship RelationshipID="R12">
                <Description TextFormat="HTML">Operator Tape Mount is an associative object that is used to capture the
                    (Mc:Mc) relationship Operator-Accessible Tape Reel HAS BEEN MOUNTED
                    ON Operator-Loaded Drive. The (Mc:Mc) relationship is captured in attributes
                    Operator Tape Mount.Tape Reel ID (which refers to an Operator-Accessible
                    Tape Reel) and Operator Tape Mount.Drive Number (which refers
                    to an Operator-Loaded Drive).
                    &lt;/p&gt;&lt;p&gt;
                    The underlying (Mc:Mc) relationship gives rise to an &quot;incident&quot; object: the
                    mounting of the tape, which occurs at a specific time and date.</Description>
                <FirstParticipant Object="Operator-Accessible Tape Reel" VerbPhrase="has been&#10;mounted on" Many="True" Conditional="True">
                </FirstParticipant>
                <SecondParticipant Object="Operator-Loaded Drive" VerbPhrase="has had&#10;mounted on" Many="True" Conditional="True">
                </SecondParticipant>
                <AssociativeParticipant Object="Operator Tape Mount" VerbPhrase="is the mounting of" ConnectorPhrase="on" Many="True">
                    <AssociativeToFirstMapping TargetIdentifier="Operator-Accessible Tape Reel.I">
                        <ReferentialAttributeMapping ReferentialAttribute="Tape Reel ID" IdentifyingAttribute="Tape Reel ID"/>
                    </AssociativeToFirstMapping>
                    <AssociativeToSecondMapping TargetIdentifier="Operator-Loaded Drive.I">
                        <ReferentialAttributeMapping ReferentialAttribute="Drive Number" IdentifyingAttribute="Drive Number"/>
                    </AssociativeToSecondMapping>
                </AssociativeParticipant>
            </AssociativeRelationship>
            <AssociativeRelationship RelationshipID="R13">
                <Description TextFormat="HTML">TSAR Tape Mount is an associative object that is used to capture the (Mc:Mc)
                    relationship TSAR TapeReel HAS BEEN MOUNTED ON Robot-Loaded
                    Drive. The (Mc:Mc) relationship is captured in attributes TSAR Tape
                    Mount.Tape Reel ID (which refers to a TSAR Tape Reel) and TSAR Tape
                    Mount.Drive Number (which refers to a Robot-Loaded Drive).
                    &lt;/p&gt;&lt;p&gt;
                    The underlying (Mc:Mc) relationship also gives rise to an &quot;incident&quot; object:
                    the mounting of the tape, which occurs at a specific time and date.</Description>
                <FirstParticipant Object="TSAR Tape Reel" VerbPhrase="has been&#10;mounted on" Many="True" Conditional="True">
                </FirstParticipant>
                <SecondParticipant Object="Robot-Loaded Drive" VerbPhrase="has had&#10;mounted on" Many="True" Conditional="True">
                </SecondParticipant>
                <AssociativeParticipant Object="TSAR Tape Mount" VerbPhrase="is the mounting of" ConnectorPhrase="on" Many="True">
                    <AssociativeToFirstMapping TargetIdentifier="TSAR Tape Reel.I">
                        <ReferentialAttributeMapping ReferentialAttribute="Tape Reel ID" IdentifyingAttribute="Tape Reel ID"/>
                    </AssociativeToFirstMapping>
                    <AssociativeToSecondMapping TargetIdentifier="Robot-Loaded Drive.I">
                        <ReferentialAttributeMapping ReferentialAttribute="Drive Number" IdentifyingAttribute="Drive Number"/>
                    </AssociativeToSecondMapping>
                </AssociativeParticipant>
            </AssociativeRelationship>
            <SubtypeSupertypeRelationship RelationshipID="R14">
                <Description TextFormat="HTML">Every mounting of a tape is done by either a robot or by an operator.
                    &lt;/p&gt;&lt;p&gt;
                    The relationship is captured in the model by the attribute Mount ID, which
                    occurs in all three objects concerned.</Description>
                <SupertypeParticipant Object="Tape Mount"/>
                <SubtypeParticipant Object="Operator Tape Mount">
                    <SubtypeToSupertypeMapping TargetIdentifier="Tape Mount.I">
                        <ReferentialAttributeMapping ReferentialAttribute="Mount ID" IdentifyingAttribute="Mount ID"/>
                    </SubtypeToSupertypeMapping>
                </SubtypeParticipant>
                <SubtypeParticipant Object="TSAR Tape Mount">
                    <SubtypeToSupertypeMapping TargetIdentifier="Tape Mount.I">
                        <ReferentialAttributeMapping ReferentialAttribute="Mount ID" IdentifyingAttribute="Mount ID"/>
                    </SubtypeToSupertypeMapping>
                </SubtypeParticipant>
            </SubtypeSupertypeRelationship>
            <AssociativeRelationship RelationshipID="R15">
                <Description TextFormat="HTML">There is a (Mc:Mc) relationship between computers and tape reels, in that a
                    tape reel can be requested any number of times by programs running on the
                    computers. Similarly, a program can generate requests for any number of
                    tape reels.
                    &lt;/p&gt;&lt;p&gt;
                    This (Mc:Mc) relationship is the basis for the associative object Tape Request,
                    that formalizes the relationship by attributes Tape Request.Computer Name
                    and Tape Request.Tape Reel ID.</Description>
                <FirstParticipant Object="Tape Reel" VerbPhrase="was requested&#10;by program&#10;running on" Many="True" Conditional="True">
                </FirstParticipant>
                <SecondParticipant Object="Computer" Many="True" Conditional="True">
                </SecondParticipant>
                <AssociativeParticipant Object="Tape Request" VerbPhrase="is a request for use of" ConnectorPhrase="by program running on" Many="True">
                    <AssociativeToFirstMapping TargetIdentifier="Tape Reel.I">
                        <ReferentialAttributeMapping ReferentialAttribute="Tape Reel ID" IdentifyingAttribute="Tape Reel ID"/>
                    </AssociativeToFirstMapping>
                    <AssociativeToSecondMapping TargetIdentifier="Computer.I">
                        <ReferentialAttributeMapping ReferentialAttribute="Computer Name" IdentifyingAttribute="Computer Name"/>
                    </AssociativeToSecondMapping>
                </AssociativeParticipant>
            </AssociativeRelationship>
            <SimpleRelationship RelationshipID="R16">
                <Description TextFormat="HTML">A particular tape mount is generated in response to a single tape request.
                    Every tape request will generate at most one tape mount. If the tape request
                    is for a TSAR tape reel and if the computer for which the tape was requested
                    does not have access to the TSAR containing the tape, the request will not
                    be satisfied and no tape mount will occur.
                    &lt;/p&gt;&lt;p&gt;
                    The relationship is captured by means of the referential attribute Tape
                    Mount.Request ID.</Description>
                <SecondParticipant Object="Tape Request" VerbPhrase="was&#10;satisfied&#10;by">
                </SecondParticipant>
                <FirstParticipant Object="Tape Mount" VerbPhrase="satisfied" Conditional="True">
                    <FirstToSecondMapping TargetIdentifier="Tape Request.I">
                        <ReferentialAttributeMapping ReferentialAttribute="Request ID" IdentifyingAttribute="Request ID"/>
                    </FirstToSecondMapping>
                </FirstParticipant>
            </SimpleRelationship>
            <ComposedRelationship RelationshipID="R17">
                <Description TextFormat="HTML">See R11 relationship description.</Description>
                <FirstParticipant Object="Computer" VerbPhrase="controls&#10;and accesses">
                </FirstParticipant>
                <SecondParticipant Object="Robot-Loaded Drive" VerbPhrase="is controlled&#10;and accessed by" Many="True" Conditional="True">
                </SecondParticipant>
                <LoopTraversalMapping TraversedRelationship="R5" TargetObject="TSAR"/>
                <LoopTraversalMapping TraversedRelationship="R1" TargetObject="Tape Robot"/>
                <LoopTraversalMapping TraversedRelationship="R6" TargetObject="Computer"/>
            </ComposedRelationship>
            <ObjectInformationModel RelativePath="GraphicalModel.png" Width="1500" Height="1000" Font="SansSerif-plain-12">
                <Shape Name="TSAR" X="1031" Y="521" Width="182" Height="112"/>
                <Shape Name="TSAR Tape Location" X="909" Y="154" Width="204" Height="128"/>
                <Shape Name="Tape Storage Slot" X="1028" Y="358" Width="203" Height="96"/>
                <Shape Name="Robot-Loaded Drive" X="555" Y="487" Width="215" Height="96"/>
                <Shape Name="Tape Robot" X="1296" Y="465" Width="182" Height="192"/>
                <Shape Name="Drive" X="326" Y="644" Width="182" Height="96"/>
                <Shape Name="Operator-Loaded Drive" X="245" Y="489" Width="239" Height="80"/>
                <Shape Name="Computer" X="808" Y="672" Width="182" Height="128"/>
                <Shape Name="Tape Reel" X="424" Y="15" Width="182" Height="96"/>
                <Shape Name="Operator-Accessible Tape Reel" X="181" Y="189" Width="308" Height="80"/>
                <Shape Name="TSAR Tape Reel" X="556" Y="189" Width="208" Height="96"/>
                <Shape Name="Tape Mount" X="259" Y="841" Width="182" Height="112"/>
                <Shape Name="Operator Tape Mount" X="73" Y="338" Width="233" Height="96"/>
                <Shape Name="TSAR Tape Mount" X="423" Y="337" Width="196" Height="96"/>
                <Shape Name="Tape Request" X="644" Y="812" Width="187" Height="144"/>
                <BinaryLink LinkID="R1" SourceShape="TSAR" TargetShape="Tape Robot">
                    <WayPoint X="1254" Y="573"/>
                </BinaryLink>
                <BinaryLink LinkID="R2" SourceShape="TSAR" TargetShape="Tape Storage Slot">
                    <WayPoint X="1096" Y="487"/>
                </BinaryLink>
                <BinaryLink LinkID="R3" SourceShape="Tape Robot" TargetShape="TSAR Tape Location">
                    <WayPoint X="1377" Y="225"/>
                </BinaryLink>
                <ParentLink LinkID="R4" SourceShape="TSAR Tape Location">
                    <TargetPoint X="1011" Y="331"/>
                </ParentLink>
                <BinaryLink LinkID="R5" SourceShape="TSAR" TargetShape="Robot-Loaded Drive">
                    <WayPoint X="900" Y="553"/>
                </BinaryLink>
                <BinaryLink LinkID="R6" SourceShape="Computer" TargetShape="Tape Robot">
                    <WayPoint X="1377" Y="731"/>
                </BinaryLink>
                <BinaryLink LinkID="R7" SourceShape="TSAR Tape Reel" TargetShape="Tape Storage Slot">
                    <WayPoint X="710" Y="119"/>
                    <WayPoint X="1178" Y="119"/>
                </BinaryLink>
                <BinaryLink LinkID="R8" SourceShape="TSAR Tape Location" TargetShape="TSAR Tape Reel">
                    <WayPoint X="836" Y="230"/>
                </BinaryLink>
                <ParentLink LinkID="R9" SourceShape="Tape Reel">
                    <TargetPoint X="520" Y="145"/>
                </ParentLink>
                <ParentLink LinkID="R10" SourceShape="Drive">
                    <TargetPoint X="428" Y="602"/>
                </ParentLink>
                <BinaryLink LinkID="R11" SourceShape="Computer" TargetShape="Operator-Loaded Drive">
                    <WayPoint X="280" Y="751"/>
                </BinaryLink>
                <BinaryLink LinkID="R12" SourceShape="Operator-Accessible Tape Reel" TargetShape="Operator-Loaded Drive">
                    <WayPoint X="342" Y="377"/>
                </BinaryLink>
                <BinaryLink LinkID="R13" SourceShape="TSAR Tape Reel" TargetShape="Robot-Loaded Drive">
                    <WayPoint X="657" Y="384"/>
                </BinaryLink>
                <ParentLink LinkID="R14" SourceShape="Tape Mount">
                    <TargetPoint X="337" Y="792"/>
                </ParentLink>
                <BinaryLink LinkID="R15" SourceShape="Tape Reel" TargetShape="Computer">
                    <WayPoint X="43" Y="55"/>
                    <WayPoint X="43" Y="968"/>
                    <WayPoint X="888" Y="968"/>
                </BinaryLink>
                <BinaryLink LinkID="R16" SourceShape="Tape Mount" TargetShape="Tape Request">
                    <WayPoint X="542" Y="893"/>
                </BinaryLink>
                <BinaryLink LinkID="R17" SourceShape="Computer" TargetShape="Robot-Loaded Drive">
                    <WayPoint X="697" Y="701"/>
                </BinaryLink>
                <ChildLink LinkID="R4" SourceShape="Robot-Loaded Drive">
                    <WayPoint X="716" Y="331"/>
                </ChildLink>
                <ChildLink LinkID="R4" SourceShape="Tape Storage Slot">
                    <WayPoint X="1092" Y="331"/>
                </ChildLink>
                <ChildLink LinkID="R9" SourceShape="Operator-Accessible Tape Reel">
                    <WayPoint X="340" Y="145"/>
                </ChildLink>
                <ChildLink LinkID="R9" SourceShape="TSAR Tape Reel">
                    <WayPoint X="602" Y="145"/>
                </ChildLink>
                <ChildLink LinkID="R10" SourceShape="Operator-Loaded Drive">
                    <WayPoint X="378" Y="602"/>
                </ChildLink>
                <ChildLink LinkID="R10" SourceShape="Robot-Loaded Drive">
                    <WayPoint X="619" Y="602"/>
                </ChildLink>
                <SpurLink LinkID="R12" SourceShape="Operator Tape Mount">
                    <WayPoint X="322" Y="384"/>
                    <TargetPoint X="342" Y="384"/>
                </SpurLink>
                <SpurLink LinkID="R13" SourceShape="TSAR Tape Mount">
                    <WayPoint X="636" Y="383"/>
                    <TargetPoint X="657" Y="383"/>
                </SpurLink>
                <ChildLink LinkID="R14" SourceShape="Operator Tape Mount">
                    <WayPoint X="171" Y="792"/>
                </ChildLink>
                <ChildLink LinkID="R14" SourceShape="TSAR Tape Mount">
                    <WayPoint X="519" Y="792"/>
                </ChildLink>
                <SpurLink LinkID="R15" SourceShape="Tape Request">
                    <WayPoint X="857" Y="886"/>
                    <TargetPoint X="888" Y="886"/>
                </SpurLink>
            </ObjectInformationModel>
            <ObjectCommunicationModel Width="800" Height="600" Font="SansSerif-plain-12">
            </ObjectCommunicationModel>
            <Report RelativePath="InformationModelReport.html" Id="Information Model Report">
                <Attachment RelativePath="GraphicalModel.png" Id="Graphical Model"/>
                <Attachment RelativePath="TSARTopView.png" Id="TSAR Top View"/>
                <Attachment RelativePath="TSARTapeLocation.png" Id="TSAR Tape location"/>
            </Report>
        </InformationModel>
    </Domain>
    <DomainChart Width="800" Height="600" Font="SansSerif-plain-12">
        <Shape Name="Management of Magnetic Tapes" X="25" Y="18" Width="268" Height="96"/>
    </DomainChart>
</Project>