<!--=========================================================================
Special DTD Notation:
* = 0 or more occurrences (optional element and repeatable)
? = 0 or 1 occurrences (optional element at most 1)
+ = 1 or more occurrences (required element and repeatable)
| = choice, one or the other but not both
Note:
* MMO stands for MetaMap Machine Output.
* Root element is MMO.
* The MMOSet element can contain multiple MMO subelements.
* Each "List" requires a count of how many elements are in the list, even
if the number is zero.
* IsHead is either "yes" or "no".
* IsOverMatch is either "yes" or "no".
* STs -> Semantic Type List
* ST -> Semantic Type
===========================================================================-->
<!ELEMENT MMO (Args, AAs, Negations, Utterances)>
<!ELEMENT Args (Command, Options)>
<!ELEMENT Command (#PCDATA)>
<!ELEMENT Options (Option*)>
<!ATTLIST Options
Count CDATA #REQUIRED
>
<!ELEMENT Option (OptName, OptValue?)>
<!ELEMENT OptName (#PCDATA)>
<!ELEMENT OptValue (#PCDATA)>
<!ELEMENT AAs (AA*)>
<!ATTLIST AAs
Count CDATA #REQUIRED
>
<!ELEMENT AA (AAName, AAExpansion, NumAATokens, AALen,
NumDefnTokens, DefnLen, CUIs)>
<!ELEMENT AAName (#PCDATA)>
<!ELEMENT AAExpansion (#PCDATA)>
<!ELEMENT NumAATokens (#PCDATA)>
<!ELEMENT AALen (#PCDATA)>
<!ELEMENT NumDefnTokens (#PCDATA)>
<!ELEMENT DefnLen (#PCDATA)>
<!ELEMENT CUIs (CUI*)>
<!ATTLIST CUIs
Count CDATA #REQUIRED
>
<!ELEMENT CUI (#PCDATA)>
<!ELEMENT Negations (Negation*)>
<!ATTLIST Negations
Count CDATA #REQUIRED
>
<!ELEMENT Negation (NegType, NegTrigger, NTSpans, NegConcept, NCSpans)>
<!ELEMENT NegType (#PCDATA)>
<!ELEMENT NegTrigger (#PCDATA)>
<!ELEMENT NTSpans (Span+)>
<!ATTLIST NTSpans
Count CDATA #REQUIRED
>
<!ELEMENT Span (StartPos, SpanLen)>
<!ELEMENT StartPos (#PCDATA)>
<!ELEMENT SpanLen (#PCDATA)>
<!ELEMENT NegConcept (#PCDATA)>
<!ELEMENT NCSpans (Span+)>
<!ATTLIST NCSpans
Count CDATA #REQUIRED
>
<!ELEMENT Utterances (Utterance+)>
<!ATTLIST Utterances
Count CDATA #REQUIRED
>
<!ELEMENT Utterance (PMID, Location, SeqNo, UText, UStartPos,
USpanLen, Phrases)>
<!ELEMENT PMID (#PCDATA)>
<!ELEMENT Location (#PCDATA)>
<!ELEMENT SeqNo (#PCDATA)>
<!ELEMENT UText (#PCDATA)>
<!ELEMENT UStartPos (#PCDATA)>
<!ELEMENT USpanLen (#PCDATA)>
<!ELEMENT Phrases (Phrase+)>
<!ATTLIST Phrases
Count CDATA #REQUIRED
>
<!ELEMENT Phrase (PText, Tags, PStartPos, PSpanLen,
Candidates, Mappings)>
<!ELEMENT PText (#PCDATA)>
<!ELEMENT Tags (Tag+)>
<!ATTLIST Tags
Count CDATA #REQUIRED
>
<!ELEMENT Tag (Type, LexMatch?, InputMatch, POS?, Tokens)>
<!ELEMENT Type (#PCDATA)>
<!ELEMENT LexMatch (#PCDATA)>
<!ELEMENT InputMatch (#PCDATA)>
<!ELEMENT POS (#PCDATA)>
<!ELEMENT Tokens (Token*)>
<!ATTLIST Tokens
Count CDATA #REQUIRED
>
<!ELEMENT Token (#PCDATA)>
<!ELEMENT PStartPos (#PCDATA)>
<!ELEMENT PSpanLen (#PCDATA)>
<!ELEMENT Candidates (Candidate*)>
<!ATTLIST Candidates
Count CDATA #REQUIRED
>
<!ELEMENT Candidate (NegScore, UMLSCUI, UMLSConcept, UMLSPreferred,
MatchedWords, STs, MatchMaps, IsHead, IsOverMatch,
Sources, Spans)>
<!ELEMENT NegScore (#PCDATA)>
<!ELEMENT UMLSCUI (#PCDATA)>
<!ELEMENT UMLSConcept (#PCDATA)>
<!ELEMENT UMLSPreferred (#PCDATA)>
<!ELEMENT MatchedWords (MatchedWord+)>
<!ATTLIST MatchedWords
Count CDATA #REQUIRED
>
<!ELEMENT MatchedWord (#PCDATA)>
<!ELEMENT STs (ST+)>
<!ATTLIST STs
Count CDATA #REQUIRED
>
<!ELEMENT ST (#PCDATA)>
<!ELEMENT MatchMaps (MatchMap*)>
<!ATTLIST MatchMaps
Count CDATA #REQUIRED
>
<!ELEMENT MatchMap (TWMatchPosS, TWMatchPosE, CWMatchPosS,
CWMatchPosE, Variation)>
<!ELEMENT TWMatchPosS (#PCDATA)>
<!ELEMENT TWMatchPosE (#PCDATA)>
<!ELEMENT CWMatchPosS (#PCDATA)>
<!ELEMENT CWMatchPosE (#PCDATA)>
<!ELEMENT Variation (#PCDATA)>
<!ELEMENT IsHead (#PCDATA)>
<!ELEMENT IsOverMatch (#PCDATA)>
<!ELEMENT Sources (Source+)>
<!ATTLIST Sources
Count CDATA #REQUIRED
>
<!ELEMENT Source (#PCDATA)>
<!ELEMENT Spans (Span+)>
<!ATTLIST Spans
Count CDATA #REQUIRED
>
<!ELEMENT Mappings (Mapping*)>
<!ATTLIST Mappings
Count CDATA #REQUIRED
>
<!ELEMENT Mapping (MapNegScore, Candidates)>
<!ELEMENT MapNegScore (#PCDATA)>