<?xml version="1.0" encoding="UTF-8"?>
<!--  *************************************************************** -->
<!-- VIOLIN Markup Language (VIOLINML) -->
<!-- Document Type Definition (DTD) -->
<!-- He Group, University of Michigan -->
<!---->
<!-- Description: Data exchange format for VIOLIN data -->
<!-- Authors: Yongqun He, Zuoshuang Xiang -->
<!-- Date: July 31, 2007 -->
<!-- Version: 1.0 -->
<!--  *************************************************************** -->
<!-- 'VIOLIN' defines the top level structure of VIOLIN information. -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="VIOLIN">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="pathogen"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="host"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="vaccine"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="gene"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="reference"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="curation"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <!--  *************************************************************** -->
  <!-- Pathogen Information -->
  <!--  *************************************************************** -->
  <!-- 'pathogen' describes the pathogen information -->
  <xs:element name="pathogen">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="pathogen_name"/>
        <xs:element ref="taxon_id"/>
        <xs:element ref="pathogenesis"/>
        <xs:element ref="disease_name"/>
        <xs:element ref="protective_immunity"/>
        <xs:element ref="host_range"/>
        <xs:element ref="introduction"/>
      </xs:sequence>
      <xs:attribute name="pathogen_id" use="required" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!-- 'pathogen_id' is a unique ID assigned to a pathogen. -->
  <!-- 'pathogen_name' is the name of a pathogen. -->
  <xs:element name="pathogen_name" type="xs:string"/>
  <!-- 'disease_name' is the name(s) of a disease. -->
  <xs:element name="disease_name" type="xs:string"/>
  <!-- 'pathogenesis' describes how a pathogen causes a disease. -->
  <xs:element name="pathogenesis">
    <xs:complexType mixed="true">
      <xs:attribute name="refs" type="xs:IDREFS"/>
    </xs:complexType>
  </xs:element>
  <!-- 'refs' describes the reference IDs assigned in the 'references' section and were used for any references that provide information for current section. -->
  <!-- 'protective_immunity' describes protective immunity required for a vaccine to protect against pathogenic infection. -->
  <xs:element name="protective_immunity">
    <xs:complexType mixed="true">
      <xs:attribute name="refs" type="xs:IDREFS"/>
    </xs:complexType>
  </xs:element>
  <!-- 'refs' describes the reference IDs assigned in the 'references' section and were used for any references that provide information for current section. -->
  <!-- 'host_range' describes the infection range of a pathogen. -->
  <xs:element name="host_range">
    <xs:complexType mixed="true">
      <xs:attribute name="refs" type="xs:IDREFS"/>
    </xs:complexType>
  </xs:element>
  <!-- 'refs' describes the reference IDs assigned in the 'references' section and were used for any references that provide information for current section. -->
  <!-- 'introduction' includes introductory information. -->
  <xs:element name="introduction">
    <xs:complexType mixed="true">
      <xs:attribute name="refs" type="xs:IDREFS"/>
    </xs:complexType>
  </xs:element>
  <!-- 'refs' describes the reference IDs assigned in the 'references' section and were used for any references that provide information for current section. -->
  <!--  *************************************************************** -->
  <!-- Host Information -->
  <!--  *************************************************************** -->
  <!-- 'host' describes a host species. -->
  <xs:element name="host">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="common_name"/>
        <xs:element ref="scientific_name"/>
        <xs:element ref="taxon_id"/>
      </xs:sequence>
      <xs:attribute name="host_id" use="required" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!-- 'host_id' is a unique ID assigned to a host in VIOLIN. -->
  <!-- 'common_name' describes the common name of a species, or variant. -->
  <xs:element name="common_name" type="xs:string"/>
  <!-- 'scientific_name' describes a scientific name of a species, or a variant. -->
  <xs:element name="scientific_name" type="xs:string"/>
  <!-- 'taxon_id' describes a NCBI taxonomy ID. -->
  <xs:element name="taxon_id" type="xs:string"/>
  <!--  *************************************************************** -->
  <!-- Vaccine Information -->
  <!--  *************************************************************** -->
  <!-- '' describes -->
  <xs:element name="vaccine">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="vaccine_name"/>
        <xs:element ref="brand_name"/>
        <xs:element ref="type"/>
        <xs:element ref="description"/>
        <xs:element ref="adjuvant"/>
        <xs:element ref="storage"/>
        <xs:element ref="virulence"/>
        <xs:element ref="preparation"/>
        <xs:element ref="antigen"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="gene_engineering"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="host_response"/>
      </xs:sequence>
      <xs:attribute name="vaccine_id" use="required" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!-- 'vaccine_id' is a unique ID assigned to a vaccine. -->
  <!-- 'vaccine_name' is the name of a vaccine. -->
  <xs:element name="vaccine_name" type="xs:string"/>
  <!-- 'brand_name' describes a commercial brand name of a vaccine. -->
  <xs:element name="brand_name" type="xs:string"/>
  <!-- 'type' describes a specific type. -->
  <xs:element name="type" type="xs:string"/>
  <!-- 'description' describes information about a specific topic. -->
  <xs:element name="description">
    <xs:complexType mixed="true">
      <xs:attribute name="refs" type="xs:IDREFS"/>
    </xs:complexType>
  </xs:element>
  <!-- 'refs' describes the reference IDs assigned in the 'references' section and were used for any references that provide information for current section. -->
  <!-- 'adjuvant' describes the adjuvant used for vaccine immunization. An adjuvant boosts immune response stimulated by a vaccine. -->
  <xs:element name="adjuvant">
    <xs:complexType mixed="true">
      <xs:attribute name="refs" type="xs:IDREFS"/>
    </xs:complexType>
  </xs:element>
  <!-- 'refs' describes the reference IDs assigned in the 'references' section and were used for any references that provide information for current section. -->
  <!-- 'storage' describes how a vaccine is stored. -->
  <xs:element name="storage">
    <xs:complexType mixed="true">
      <xs:attribute name="refs" type="xs:IDREFS"/>
    </xs:complexType>
  </xs:element>
  <!-- 'refs' describes the reference IDs assigned in the 'references' section and were used for any references that provide information for current section. -->
  <!-- 'virulence' describes virulence of a vaccine. -->
  <xs:element name="virulence">
    <xs:complexType mixed="true">
      <xs:attribute name="refs" type="xs:IDREFS"/>
    </xs:complexType>
  </xs:element>
  <!-- 'refs' describes the reference IDs assigned in the 'references' section and were used for any references that provide information for current section. -->
  <!-- 'preparation' describes how a vaccine is prepared. -->
  <xs:element name="preparation">
    <xs:complexType mixed="true">
      <xs:attribute name="refs" type="xs:IDREFS"/>
    </xs:complexType>
  </xs:element>
  <!-- 'refs' describes the reference IDs assigned in the 'references' section and were used for any references that provide information for current section. -->
  <!-- 'antigen' describes an antigen that is able to stimulate immune response in a host. -->
  <xs:element name="antigen">
    <xs:complexType mixed="true">
      <xs:attribute name="refs" type="xs:IDREFS"/>
    </xs:complexType>
  </xs:element>
  <!-- 'refs' describes the reference IDs assigned in the 'references' section and were used for any references that provide information for current section. -->
  <!-- 'gene_engineering' describes the genetic engineering of a pathogen gene(s) for the purpose of vaccine development. -->
  <xs:element name="gene_engineering">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="type"/>
        <xs:element ref="description"/>
      </xs:sequence>
      <xs:attribute name="gene_engineering_id" use="required" type="xs:ID"/>
      <xs:attribute name="gene_id" use="required" type="xs:IDREF"/>
    </xs:complexType>
  </xs:element>
  <!-- 'gene_engineering_id' is a unique ID assigned to a section of gene engineering data stored in VIOLIN. 'gene_id' refers to an ID for a specific gene stored in VIOLIN. -->
  <!-- 'host_response' describes -->
  <xs:element name="host_response">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="immune_response"/>
        <xs:element ref="host_strain"/>
        <xs:element ref="vaccination_protocol"/>
        <xs:element ref="persistence"/>
        <xs:element ref="protection_efficacy"/>
        <xs:element ref="side_effects"/>
        <xs:element ref="challenge_protocol"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="host_gene_response"/>
        <xs:element ref="description"/>
      </xs:sequence>
      <xs:attribute name="host_response_id" use="required" type="xs:ID"/>
      <xs:attribute name="host_id" use="required" type="xs:IDREF"/>
    </xs:complexType>
  </xs:element>
  <!-- 'host_response_id' is a unique ID assigned for a specific host response. 'host_id' refers to an ID for a specific host stored in VIOLIN. -->
  <!-- 'immune_response' describes a host response to a vaccine. -->
  <xs:element name="immune_response">
    <xs:complexType mixed="true">
      <xs:attribute name="refs" type="xs:IDREFS"/>
    </xs:complexType>
  </xs:element>
  <!-- 'refs' describes the reference IDs assigned in the 'references' section and were used for any references that provide information for current section. -->
  <!-- 'host_strain' is a strain of a host species, for example, BALB/c mice. -->
  <xs:element name="host_strain">
    <xs:complexType mixed="true">
      <xs:attribute name="refs" type="xs:IDREFS"/>
    </xs:complexType>
  </xs:element>
  <!-- 'refs' describes the reference IDs assigned in the 'references' section and were used for any references that provide information for current section. -->
  <!-- 'vaccination_protocol' is the vaccination_protocol of a vaccine vaccination.  NOTE: This one will be DELETED. -->
  <xs:element name="vaccination_protocol">
    <xs:complexType mixed="true">
      <xs:attribute name="refs" type="xs:IDREFS"/>
    </xs:complexType>
  </xs:element>
  <!-- 'refs' describes the reference IDs assigned in the 'references' section and were used for any references that provide information for current section. -->
  <!-- 'persistence' describes the persistence (how long it stays) of a vaccine in a host body. -->
  <xs:element name="persistence">
    <xs:complexType mixed="true">
      <xs:attribute name="refs" type="xs:IDREFS"/>
    </xs:complexType>
  </xs:element>
  <!-- 'refs' describes the reference IDs assigned in the 'references' section and were used for any references that provide information for current section. -->
  <!-- 'protection_efficacy' describes the protection_efficacy of a vaccine. -->
  <xs:element name="protection_efficacy">
    <xs:complexType mixed="true">
      <xs:attribute name="refs" type="xs:IDREFS"/>
    </xs:complexType>
  </xs:element>
  <!-- 'refs' describes the reference IDs assigned in the 'references' section and were used for any references that provide information for current section. -->
  <!-- 'side_effects' describes the side effects of a vaccine in a host. -->
  <xs:element name="side_effects">
    <xs:complexType mixed="true">
      <xs:attribute name="refs" type="xs:IDREFS"/>
    </xs:complexType>
  </xs:element>
  <!-- 'refs' describes the reference IDs assigned in the 'references' section and were used for any references that provide information for current section. -->
  <!-- 'challenge_protocol' describes a protocol for a challenge experiment. -->
  <xs:element name="challenge_protocol">
    <xs:complexType mixed="true">
      <xs:attribute name="refs" type="xs:IDREFS"/>
    </xs:complexType>
  </xs:element>
  <!-- 'refs' describes the reference IDs assigned in the 'references' section and were used for any references that provide information for current section. -->
  <!-- 'host_gene_response' describes an gene expression profile of a host gene. -->
  <xs:element name="host_gene_response">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="description"/>
      </xs:sequence>
      <xs:attribute name="host_gene_response_id" use="required" type="xs:ID"/>
      <xs:attribute name="gene_id" use="required" type="xs:IDREF"/>
    </xs:complexType>
  </xs:element>
  <!-- 'host_gene_response_id' is a unique ID for a section of host gene response; 'gene_id' is an reference to a gene that is stored in VIOLIN. -->
  <!--  *************************************************************** -->
  <!-- Gene Information -->
  <!--  *************************************************************** -->
  <!-- 'gene' describes information about a gene stored in the VIOLIN database. -->
  <xs:element name="gene">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="gene_name"/>
        <xs:element ref="ncbi_gene_id"/>
        <xs:element ref="xrefs"/>
        <xs:element ref="phi_annotation"/>
        <xs:element ref="dna_sequence"/>
        <xs:element ref="protein_sequence"/>
        <xs:element ref="strain"/>
        <xs:element ref="taxonomy_id"/>
        <xs:element ref="ncbi_protein_id"/>
        <xs:element ref="protein_refseq"/>
        <xs:element ref="protein_name"/>
        <xs:element ref="chromosome"/>
        <xs:element ref="segment"/>
        <xs:element ref="gene_locus_tag"/>
        <xs:element ref="gene_start"/>
        <xs:element ref="gene_end"/>
        <xs:element ref="gene_strand"/>
        <xs:element ref="gene_refseq"/>
        <xs:element ref="protein_note"/>
        <xs:element ref="protein_annotation"/>
        <xs:element ref="protein_pi"/>
        <xs:element ref="protein_weight"/>
        <xs:element ref="protein_length"/>
        <xs:element ref="phi_function"/>
        <xs:element ref="plasmid"/>
      </xs:sequence>
      <xs:attribute name="gene_id" use="required" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!-- 'gene_id' is a unique ID assigned to a gene. -->
  <!-- 'gene_name' is the short name of the gene. -->
  <xs:element name="gene_name" type="xs:string"/>
  <!-- 'ncbi_gene_id' is the Gene ID of the NCBI Gene database. -->
  <xs:element name="ncbi_gene_id" type="xs:string"/>
  <!-- 'xrefs' describes cross reference ID from other databases. It has a format of "DB_name: DB_id; another_DB_name: another_DB_id" -->
  <xs:element name="xrefs" type="xs:string"/>
  <!-- 'phi_annotation' is the annotation of pathogen host interaction -->
  <xs:element name="phi_annotation" type="xs:string"/>
  <!-- 'dna_sequence' is the sequence of a DNA fragment -->
  <xs:element name="dna_sequence" type="xs:string"/>
  <!-- 'protein_sequence' is the sequence of a protein. -->
  <xs:element name="protein_sequence" type="xs:string"/>
  <!-- 'strain' is the name of a sequenced microorganism, for example, a bacterium, a virus, or a parasite. -->
  <xs:element name="strain" type="xs:string"/>
  <!-- 'taxonomy_id' is the NCBI taxonomy ID. -->
  <xs:element name="taxonomy_id" type="xs:string"/>
  <!-- 'ncbi_protein_id' is the NCBI protein ID. It should be a integer. -->
  <xs:element name="ncbi_protein_id" type="xs:string"/>
  <!-- 'protein_refseq' is the NCBI protein RefSeq No. -->
  <xs:element name="protein_refseq" type="xs:string"/>
  <!-- 'protein_name' is the name of the coded protein. -->
  <xs:element name="protein_name" type="xs:string"/>
  <!-- 'chromosome' is the chromosome on which the gene located. -->
  <xs:element name="chromosome" type="xs:string"/>
  <!-- 'segment' is the segement on which the gene located. -->
  <xs:element name="segment" type="xs:string"/>
  <!-- 'gene_locus_tag' is the NCBI gene locus tag. -->
  <xs:element name="gene_locus_tag" type="xs:string"/>
  <!-- 'gene_start' is the starting position of the gene. -->
  <xs:element name="gene_start" type="xs:string"/>
  <!-- 'gene_end' is the the ending position of the gene. -->
  <xs:element name="gene_end" type="xs:string"/>
  <!-- 'gene_strand' is the coding direction of the gene. -->
  <xs:element name="gene_strand" type="xs:string"/>
  <!-- 'gene_refseq' is the NCBI gene RefSeq No. -->
  <xs:element name="gene_refseq" type="xs:string"/>
  <!-- 'protein_note' is the note about the protein. -->
  <xs:element name="protein_note" type="xs:string"/>
  <!-- 'protein_annotation' is the annotation about the protein. -->
  <xs:element name="protein_annotation" type="xs:string"/>
  <!-- 'protein_pi' is the pI of the protein. -->
  <xs:element name="protein_pi" type="xs:string"/>
  <!-- 'protein_weight' is the weight of the protein. -->
  <xs:element name="protein_weight" type="xs:string"/>
  <!-- 'protein_length' is the length of the protein. -->
  <xs:element name="protein_length" type="xs:string"/>
  <!-- 'phi_function' is the function category in terms of pathogen host interaction. -->
  <xs:element name="phi_function" type="xs:string"/>
  <!-- 'plasmid' is the plasmid on wchich the gene located. -->
  <xs:element name="plasmid" type="xs:string"/>
  <!--  *************************************************************** -->
  <!-- Reference -->
  <!--  *************************************************************** -->
  <!-- 'references' describes the data sources used in the document. Data may be obtained from journals, books, websites, and theses -->
  <xs:element name="reference">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="reference_name"/>
        <xs:element ref="reference_type"/>
        <xs:element ref="authors"/>
        <xs:element ref="title"/>
        <xs:element ref="year"/>
        <xs:element ref="volume"/>
        <xs:element ref="issue"/>
        <xs:element ref="pages"/>
        <xs:element ref="journal_book_name"/>
        <xs:element ref="publisher"/>
        <xs:element ref="publisher_location"/>
        <xs:element ref="book_editors"/>
        <xs:element ref="isbn"/>
        <xs:element ref="university"/>
        <xs:element ref="university_location"/>
        <xs:element ref="degree"/>
        <xs:element ref="url"/>
        <xs:element ref="file_name"/>
      </xs:sequence>
      <xs:attribute name="reference_id" use="required" type="xs:ID"/>
    </xs:complexType>
  </xs:element>
  <!-- 'reference_id' is a unique ID assigned to a reference. -->
  <!-- 'reference_name' is a short identifier of a reference. -->
  <xs:element name="reference_name" type="xs:string"/>
  <!-- 'reference_type' is the type reference. -->
  <xs:element name="reference_type" type="xs:string"/>
  <!-- 'authors' is the list of the authors of a reference. -->
  <xs:element name="authors" type="xs:string"/>
  <!-- 'title' is the title of a reference. -->
  <xs:element name="title" type="xs:string"/>
  <!-- 'year' is the year when a reference is published. -->
  <xs:element name="year" type="xs:string"/>
  <!-- 'volume' describes a journal volume -->
  <xs:element name="volume" type="xs:string"/>
  <!-- 'issue' describes a journal issue -->
  <xs:element name="issue" type="xs:string"/>
  <!-- 'pages' is the range of pages for an article. -->
  <xs:element name="pages" type="xs:string"/>
  <!-- 'journal_book_name' is the name of a journal or a book. -->
  <xs:element name="journal_book_name" type="xs:string"/>
  <!-- 'publisher' is the book publisher -->
  <xs:element name="publisher" type="xs:string"/>
  <!-- 'publisher_location' is the location of a book publisher. -->
  <xs:element name="publisher_location" type="xs:string"/>
  <!-- 'book_editors' means the editors of a book. -->
  <xs:element name="book_editors" type="xs:string"/>
  <!-- 'isbn' menas International Standard Book Number. It is a unique commercial book identifier barcode. -->
  <xs:element name="isbn" type="xs:string"/>
  <!-- 'degree' means a Ph.D. or M.S. or other academic degree. -->
  <xs:element name="degree" type="xs:string"/>
  <!-- 'university' is the name of a university -->
  <xs:element name="university" type="xs:string"/>
  <!-- 'university_location' is the location of a univerisity, it should include city name, state/province, and country name. -->
  <xs:element name="university_location" type="xs:string"/>
  <!-- 'url' stands for Uniform resource locator, it represents a web page address. -->
  <xs:element name="url" type="xs:string"/>
  <!-- 'file_name' is the name of an updated file  -->
  <xs:element name="file_name" type="xs:string"/>
</xs:schema>
<!-- The End -->
