13df214ff56028b87f091e904ea53e4df671037f
[jalview.git] / schemas / uniprot.xsd
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- *****************************************************************************
3         UniProt Knowledgebase
4         Version:        $Revision: 1.3 $
5         Date:           $Date: 2015/04/07 15:00:57 $
6
7         Copyright (c) 2011 UniProt consortium
8         All rights reserved.
9 *******************************************************************************-->
10 <xs:schema targetNamespace="http://uniprot.org/uniprot" xmlns:xs="http://www.w3.org/2001/XMLSchema"
11            xmlns="http://uniprot.org/uniprot" elementFormDefault="qualified">
12     <!-- XML Schema definition for the UniProtKB XML format
13          Tested with:
14          -XSV (XML Schema Validator), http://www.w3.org/2001/03/webdata/xsv
15          -->
16     <!-- Root element definition begins -->
17     <xs:element name="uniprot">
18         <xs:annotation>
19             <xs:documentation>Describes a collection of UniProtKB entries.</xs:documentation>
20         </xs:annotation>
21         <xs:complexType>
22             <xs:sequence>
23                 <xs:element ref="entry" maxOccurs="unbounded"/>
24                 <xs:element ref="copyright" minOccurs="0"/>
25             </xs:sequence>
26         </xs:complexType>
27     </xs:element>
28     <!-- Root element definition ends -->
29
30     <!-- Entry definition begins -->
31     <xs:element name="entry">
32         <xs:annotation>
33             <xs:documentation>Describes a UniProtKB entry.</xs:documentation>
34         </xs:annotation>
35         <xs:complexType>
36             <xs:sequence>
37                 <xs:element name="accession" type="xs:string" maxOccurs="unbounded"/>
38                 <xs:element name="name" type="xs:string" maxOccurs="unbounded"/>
39                 <xs:element name="protein" type="proteinType"/>
40                 <xs:element name="gene" type="geneType" minOccurs="0" maxOccurs="unbounded"/>
41                 <xs:element name="organism" type="organismType" />
42                 <xs:element name="organismHost" type="organismType" minOccurs="0" maxOccurs="unbounded"/>
43                 <xs:element name="geneLocation" type="geneLocationType" minOccurs="0" maxOccurs="unbounded"/>
44                 <xs:element name="reference" type="referenceType" maxOccurs="unbounded"/>
45                 <xs:element name="comment" type="commentType" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
46                 <xs:element name="dbReference" type="dbReferenceType" minOccurs="0" maxOccurs="unbounded"/>
47                 <xs:element name="proteinExistence" type="proteinExistenceType"/>
48                 <xs:element name="keyword" type="keywordType" minOccurs="0" maxOccurs="unbounded"/>
49                 <xs:element name="feature" type="featureType" minOccurs="0" maxOccurs="unbounded"/>
50                 <xs:element name="evidence" type="evidenceType" minOccurs="0" maxOccurs="unbounded"/>
51                 <xs:element name="sequence" type="sequenceType"/>
52             </xs:sequence>
53             <xs:attribute name="dataset" use="required">
54                 <xs:simpleType>
55                     <xs:restriction base="xs:string">
56                         <xs:enumeration value="Swiss-Prot"/>
57                         <xs:enumeration value="TrEMBL"/>
58                     </xs:restriction>
59                 </xs:simpleType>
60             </xs:attribute>
61             <xs:attribute name="created" type="xs:date" use="required"/>
62             <xs:attribute name="modified" type="xs:date" use="required"/>
63             <xs:attribute name="version" type="xs:int" use="required"/>
64         </xs:complexType>
65     </xs:element>
66     <!-- Entry definition ends -->
67
68     <xs:element name="copyright" type="xs:string"/>
69
70     <!-- Protein names definition begins -->
71     <xs:complexType name="proteinType">
72         <xs:annotation>
73             <xs:documentation>Describes the names for the protein and parts thereof.
74             Equivalent to the flat file DE-line.</xs:documentation>
75         </xs:annotation>
76         <xs:sequence>
77             <xs:group ref="proteinNameGroup"/>
78             <xs:element name="domain" minOccurs="0" maxOccurs="unbounded">
79                 <xs:annotation>
80                     <xs:documentation>Describes names of "domains".
81                     Equivalent to the flat file DE-line Includes: section.</xs:documentation>
82                 </xs:annotation>
83                 <xs:complexType>
84                     <xs:group ref="proteinNameGroup"/>
85                 </xs:complexType>
86             </xs:element>
87             <xs:element name="component" minOccurs="0" maxOccurs="unbounded">
88                 <xs:annotation>
89                     <xs:documentation>Describes names of processed products.
90                     Equivalent to the flat file DE-line Contains: section.</xs:documentation>
91                 </xs:annotation>
92                 <xs:complexType>
93                     <xs:group ref="proteinNameGroup"/>
94                 </xs:complexType>
95             </xs:element>
96         </xs:sequence>
97     </xs:complexType>
98     <xs:group name="proteinNameGroup">
99         <xs:sequence>
100             <xs:element name="recommendedName" minOccurs="0">
101                 <xs:complexType>
102                     <xs:sequence>
103                         <xs:element name="fullName" type="evidencedStringType"/>
104                         <xs:element name="shortName" type="evidencedStringType" minOccurs="0" maxOccurs="unbounded"/>
105                         <xs:element name="ecNumber" type="evidencedStringType" minOccurs="0" maxOccurs="unbounded"/>
106                     </xs:sequence>
107                     <!-- xs:attribute name="ref" type="xs:string" use="optional"/ -->
108                 </xs:complexType>
109             </xs:element>
110             <xs:element name="alternativeName" minOccurs="0" maxOccurs="unbounded">
111                 <xs:complexType>
112                     <xs:sequence>
113                         <xs:element name="fullName" type="evidencedStringType" minOccurs="0"/>
114                         <xs:element name="shortName" type="evidencedStringType" minOccurs="0" maxOccurs="unbounded"/>
115                         <xs:element name="ecNumber" type="evidencedStringType" minOccurs="0" maxOccurs="unbounded"/>
116                     </xs:sequence>
117                     <!-- xs:attribute name="ref" type="xs:string" use="optional"/ -->
118                 </xs:complexType>
119             </xs:element>
120             <xs:element name="submittedName" minOccurs="0" maxOccurs="unbounded">
121                 <xs:complexType>
122                     <xs:sequence>
123                         <xs:element name="fullName" type="evidencedStringType"/>
124                         <xs:element name="ecNumber" type="evidencedStringType" minOccurs="0" maxOccurs="unbounded"/>
125                     </xs:sequence>
126                     <!-- xs:attribute name="ref" type="xs:string" use="optional"/ -->
127                 </xs:complexType>
128             </xs:element>
129             <xs:element name="allergenName" type="evidencedStringType" minOccurs="0"/>
130             <xs:element name="biotechName" type="evidencedStringType" minOccurs="0"/>
131             <xs:element name="cdAntigenName" type="evidencedStringType" minOccurs="0" maxOccurs="unbounded"/>
132             <xs:element name="innName" type="evidencedStringType" minOccurs="0" maxOccurs="unbounded"/>
133         </xs:sequence>
134     </xs:group>
135     <!-- Protein names definition ends -->
136
137     <!-- Gene names definition begins -->
138     <xs:complexType name="geneType">
139         <xs:annotation>
140             <xs:documentation>Describes a gene.
141             Equivalent to the flat file GN-line.</xs:documentation>
142         </xs:annotation>
143         <xs:sequence>
144             <xs:element name="name" type="geneNameType" maxOccurs="unbounded"/>
145         </xs:sequence>
146     </xs:complexType>
147     <xs:complexType name="geneNameType">
148         <xs:annotation>
149             <xs:documentation>Describes different types of gene designations.
150             Equivalent to the flat file GN-line.</xs:documentation>
151         </xs:annotation>
152         <xs:simpleContent>
153             <xs:extension base="xs:string">
154                 <xs:attribute name="evidence" type="intListType" use="optional"/>
155                 <xs:attribute name="type" use="required">
156                     <xs:simpleType>
157                         <xs:restriction base="xs:string">
158                             <xs:enumeration value="primary"/>
159                             <xs:enumeration value="synonym"/>
160                             <xs:enumeration value="ordered locus"/>
161                             <xs:enumeration value="ORF"/>
162                         </xs:restriction>
163                     </xs:simpleType>
164                 </xs:attribute>
165             </xs:extension>
166         </xs:simpleContent>
167     </xs:complexType>
168     <!-- Gene names definition ends -->
169
170     <!-- Organism definition begins -->
171     <xs:complexType name="organismType">
172         <xs:annotation>
173             <xs:documentation>Describes the source organism.</xs:documentation>
174         </xs:annotation>
175         <xs:sequence>
176             <xs:element name="name" type="organismNameType" maxOccurs="unbounded">
177                 <xs:annotation>
178                     <xs:documentation>Describes the names of the source organism.
179                     Equivalent to the flat file OS-line.</xs:documentation>
180                 </xs:annotation>
181             </xs:element>
182             <xs:element name="dbReference" type="dbReferenceType" maxOccurs="unbounded">
183                 <xs:annotation>
184                     <xs:documentation>Describes a cross-reference to the NCBI taxonomy database.
185                     Equivalent to the flat file OX-line.</xs:documentation>
186                 </xs:annotation>
187             </xs:element>
188             <xs:element name="lineage" minOccurs="0">
189                 <xs:annotation>
190                     <xs:documentation>Describes the lineage of the source organism.
191                     Equivalent to the flat file OC-line.</xs:documentation>
192                 </xs:annotation>
193                 <xs:complexType>
194                     <xs:sequence>
195                         <xs:element name="taxon" type="xs:string" maxOccurs="unbounded"/>
196                     </xs:sequence>
197                 </xs:complexType>
198             </xs:element>
199         </xs:sequence>
200         <xs:attribute name="evidence" type="intListType" use="optional"/>
201     </xs:complexType>
202     <xs:complexType name="organismNameType">
203         <xs:annotation>
204             <xs:documentation>Describes different types of source organism names.</xs:documentation>
205         </xs:annotation>
206         <xs:simpleContent>
207             <xs:extension base="xs:string">
208                 <xs:attribute name="type" use="required">
209                     <xs:simpleType>
210                         <xs:restriction base="xs:string">
211                             <xs:enumeration value="common"/>
212                             <xs:enumeration value="full"/>
213                             <xs:enumeration value="scientific"/>
214                             <xs:enumeration value="synonym"/>
215                             <xs:enumeration value="abbreviation"/>
216                         </xs:restriction>
217                     </xs:simpleType>
218                 </xs:attribute>
219             </xs:extension>
220         </xs:simpleContent>
221     </xs:complexType>
222     <!-- Organism definition ends -->
223
224     <!-- Gene location definition begins -->
225     <xs:complexType name="geneLocationType">
226         <xs:annotation>
227             <xs:documentation>Describes non-nuclear gene locations (organelles and plasmids).
228             Equivalent to the flat file OG-line.</xs:documentation>
229         </xs:annotation>
230         <xs:sequence>
231             <xs:element name="name" type="statusType" minOccurs="0" maxOccurs="unbounded"/>
232         </xs:sequence>
233         <xs:attribute name="type" use="required">
234             <xs:simpleType>
235                 <xs:restriction base="xs:string">
236                     <xs:enumeration value="apicoplast"/>
237                     <xs:enumeration value="chloroplast"/>
238                     <xs:enumeration value="organellar chromatophore"/>
239                     <xs:enumeration value="cyanelle"/>
240                     <xs:enumeration value="hydrogenosome"/>
241                     <xs:enumeration value="mitochondrion"/>
242                     <xs:enumeration value="non-photosynthetic plastid"/>
243                     <xs:enumeration value="nucleomorph"/>
244                     <xs:enumeration value="plasmid"/>
245                     <xs:enumeration value="plastid"/>
246                 </xs:restriction>
247             </xs:simpleType>
248         </xs:attribute>
249         <xs:attribute name="evidence" type="intListType" use="optional"/>
250     </xs:complexType>
251     <xs:complexType name="statusType">
252         <xs:annotation>
253             <xs:documentation>Indicates whether the name of a plasmid is known or unknown.</xs:documentation>
254         </xs:annotation>
255         <xs:simpleContent>
256             <xs:extension base="xs:string">
257                 <xs:attribute name="status" use="optional" default="known">
258                     <xs:simpleType>
259                         <xs:restriction base="xs:string">
260                             <xs:enumeration value="known"/>
261                             <xs:enumeration value="unknown"/>
262                         </xs:restriction>
263                     </xs:simpleType>
264                 </xs:attribute>
265             </xs:extension>
266         </xs:simpleContent>
267     </xs:complexType>
268     <!-- Gene location definition ends -->
269
270     <!-- Reference definition begins -->
271     <xs:complexType name="referenceType">
272         <xs:annotation>
273             <xs:documentation>Describes a citation and a summary of its content.
274             Equivalent to the flat file RN-, RP-, RC-, RX-, RG-, RA-, RT- and RL-lines.</xs:documentation>
275         </xs:annotation>
276         <xs:sequence>
277             <xs:element name="citation" type="citationType"/>
278             <xs:group ref="sptrCitationGroup"/>
279         </xs:sequence>
280         <xs:attribute name="evidence" type="intListType" use="optional"/>
281         <xs:attribute name="key" type="xs:string" use="required"/>
282     </xs:complexType>
283     <!-- Reference definition ends -->
284
285     <!-- Citation definition begins -->
286     <xs:complexType name="citationType">
287         <xs:annotation>
288             <xs:documentation>Describes different types of citations.
289             Equivalent to the flat file RX-, RG-, RA-, RT- and RL-lines.</xs:documentation>
290         </xs:annotation>
291         <xs:sequence>
292             <xs:element name="title" type="xs:string" minOccurs="0">
293                 <xs:annotation>
294                     <xs:documentation>Describes the title of a citation.
295                     Equivalent to the flat file RT-line.</xs:documentation>
296                 </xs:annotation>
297             </xs:element>
298             <xs:element name="editorList" type="nameListType" minOccurs="0">
299                 <xs:annotation>
300                     <xs:documentation>Describes the editors of a book (only used for books).
301                     Equivalent to part of the flat file RL-line of books.</xs:documentation>
302                 </xs:annotation>
303             </xs:element>
304             <xs:element name="authorList" type="nameListType" minOccurs="0">
305                 <xs:annotation>
306                     <xs:documentation>Describes the authors of a citation.
307                     Equivalent to the flat file RA-line.</xs:documentation>
308                 </xs:annotation>
309             </xs:element>
310             <xs:element name="locator" type="xs:string" minOccurs="0">
311                 <xs:annotation>
312                     <xs:documentation>Describes the location (URL) of an online journal article.
313                     No flat file equivalent.</xs:documentation>
314                 </xs:annotation>
315             </xs:element>
316             <xs:element name="dbReference" type="dbReferenceType" minOccurs="0" maxOccurs="unbounded">
317                 <xs:annotation>
318                     <xs:documentation>Describes cross-references to bibliography databases (MEDLINE, PubMed, AGRICOLA) or other online resources (DOI).
319                     Equivalent to the flat file RX-line.</xs:documentation>
320                 </xs:annotation>
321             </xs:element>
322         </xs:sequence>
323         <xs:attribute name="type" use="required">
324             <xs:annotation>
325                 <xs:documentation>Describes the type of a citation.</xs:documentation>
326             </xs:annotation>
327             <xs:simpleType>
328                 <xs:restriction base="xs:string">
329                     <xs:enumeration value="book"/>
330                     <xs:enumeration value="journal article"/>
331                     <xs:enumeration value="online journal article"/>
332                     <xs:enumeration value="patent"/>
333                     <xs:enumeration value="submission"/>
334                     <xs:enumeration value="thesis"/>
335                     <xs:enumeration value="unpublished observations"/>
336                 </xs:restriction>
337             </xs:simpleType>
338         </xs:attribute>
339         <xs:attribute name="date" use="optional">
340             <xs:simpleType>
341                 <xs:union memberTypes="xs:date xs:gYearMonth xs:gYear"/>
342             </xs:simpleType>
343         </xs:attribute>
344         <xs:attribute name="name" type="xs:string" use="optional">
345             <xs:annotation>
346                 <xs:documentation>Describes the name of an (online) journal or book.</xs:documentation>
347             </xs:annotation>
348         </xs:attribute>
349         <xs:attribute name="volume" type="xs:string" use="optional">
350             <xs:annotation>
351                 <xs:documentation>Describes the volume of a journal or book.</xs:documentation>
352             </xs:annotation>
353         </xs:attribute>
354         <xs:attribute name="first" type="xs:string" use="optional">
355             <xs:annotation>
356                 <xs:documentation>Describes the first page of an article.</xs:documentation>
357             </xs:annotation>
358         </xs:attribute>
359         <xs:attribute name="last" type="xs:string" use="optional">
360             <xs:annotation>
361                 <xs:documentation>Describes the last page of an article.</xs:documentation>
362             </xs:annotation>
363         </xs:attribute>
364         <xs:attribute name="publisher" type="xs:string" use="optional">
365             <xs:annotation>
366                 <xs:documentation>Describes the publisher of a book.</xs:documentation>
367             </xs:annotation>
368         </xs:attribute>
369         <xs:attribute name="city" type="xs:string" use="optional">
370             <xs:annotation>
371                 <xs:documentation>Describes the city where a book was published.</xs:documentation>
372             </xs:annotation>
373         </xs:attribute>
374         <xs:attribute name="db" type="xs:string" use="optional">
375             <xs:annotation>
376                 <xs:documentation>Describes the database name of submissions.</xs:documentation>
377             </xs:annotation>
378         </xs:attribute>
379         <xs:attribute name="number" type="xs:string" use="optional">
380             <xs:annotation>
381                 <xs:documentation>Describes a patent number.</xs:documentation>
382             </xs:annotation>
383         </xs:attribute>
384         <xs:attribute name="institute" type="xs:string" use="optional">
385             <xs:annotation>
386                 <xs:documentation>Describes the institute where a thesis was made.</xs:documentation>
387             </xs:annotation>
388         </xs:attribute>
389         <xs:attribute name="country" type="xs:string" use="optional">
390             <xs:annotation>
391                 <xs:documentation>Describes the country where a thesis was made.</xs:documentation>
392             </xs:annotation>
393         </xs:attribute>
394     </xs:complexType>
395     <xs:complexType name="consortiumType">
396         <xs:annotation>
397             <xs:documentation>Describes the authors of a citation when these are represented by a consortium.
398             Equivalent to the flat file RG-line.</xs:documentation>
399         </xs:annotation>
400         <xs:attribute name="name" type="xs:string" use="required"/>
401     </xs:complexType>
402     <xs:complexType name="personType">
403         <xs:attribute name="name" type="xs:string" use="required"/>
404     </xs:complexType>
405     <xs:complexType name="nameListType">
406         <xs:choice maxOccurs="unbounded">
407             <xs:element name="consortium" type="consortiumType"/>
408             <xs:element name="person" type="personType"/>
409         </xs:choice>
410     </xs:complexType>
411     <!-- Citation definition ends -->
412
413     <!-- Citation summary definition begins -->
414     <xs:group name="sptrCitationGroup">
415         <xs:annotation>
416             <xs:documentation>Groups a citation's scope and source descriptions.</xs:documentation>
417         </xs:annotation>
418         <xs:sequence>
419             <xs:element name="scope" type="xs:string" maxOccurs="unbounded">
420                 <xs:annotation>
421                     <xs:documentation>Describes the scope of a citation.
422                     Equivalent to the flat file RP-line.</xs:documentation>
423                 </xs:annotation>
424             </xs:element>
425             <xs:element name="source" type="sourceDataType" minOccurs="0"/>
426         </xs:sequence>
427     </xs:group>
428     <xs:complexType name="sourceDataType">
429         <xs:annotation>
430             <xs:documentation>Describes the source of the sequence according to the citation.
431             Equivalent to the flat file RC-line.</xs:documentation>
432         </xs:annotation>
433         <xs:choice maxOccurs="unbounded">
434             <xs:element name="strain">
435                 <xs:complexType>
436                     <xs:simpleContent>
437                         <xs:extension base="xs:string">
438                             <xs:attribute name="evidence" type="intListType" use="optional"/>
439                         </xs:extension>
440                     </xs:simpleContent>
441                 </xs:complexType>
442             </xs:element>
443             <xs:element name="plasmid">
444                 <xs:complexType>
445                     <xs:simpleContent>
446                         <xs:extension base="xs:string">
447                             <xs:attribute name="evidence" type="intListType" use="optional"/>
448                         </xs:extension>
449                     </xs:simpleContent>
450                 </xs:complexType>
451             </xs:element>
452             <xs:element name="transposon">
453                 <xs:complexType>
454                     <xs:simpleContent>
455                         <xs:extension base="xs:string">
456                             <xs:attribute name="evidence" type="intListType" use="optional"/>
457                         </xs:extension>
458                     </xs:simpleContent>
459                 </xs:complexType>
460             </xs:element>
461             <xs:element name="tissue">
462                 <xs:complexType>
463                     <xs:simpleContent>
464                         <xs:extension base="xs:string">
465                             <xs:attribute name="evidence" type="intListType" use="optional"/>
466                         </xs:extension>
467                     </xs:simpleContent>
468                 </xs:complexType>
469             </xs:element>
470         </xs:choice>
471     </xs:complexType>
472     <!-- Citation summary definition ends -->
473
474     <!-- Comment definition begins -->
475     <xs:complexType name="commentType">
476         <xs:annotation>
477             <xs:documentation>Describes different types of general annotations.
478             Equivalent to the flat file CC-line.</xs:documentation>
479         </xs:annotation>
480         <xs:sequence>
481             <xs:element name="molecule" type="moleculeType" minOccurs="0"/>
482             <xs:choice minOccurs="0">
483                 <xs:group ref="bpcCommentGroup"/>
484
485                 <xs:sequence>
486                     <xs:annotation>
487                         <xs:documentation>Used in 'cofactor' annotations.</xs:documentation>
488                     </xs:annotation>
489                     <xs:element name="cofactor" type="cofactorType" maxOccurs="unbounded"/>
490                 </xs:sequence>
491
492                 <xs:sequence>
493                     <xs:annotation>
494                         <xs:documentation>Used in 'subcellular location' annotations.</xs:documentation>
495                     </xs:annotation>
496                     <xs:element name="subcellularLocation" type="subcellularLocationType" maxOccurs="unbounded"/>
497                 </xs:sequence>
498
499                 <xs:element name="conflict">
500                     <xs:annotation>
501                         <xs:documentation>Used in 'sequence caution' annotations.</xs:documentation>
502                     </xs:annotation>
503                     <xs:complexType>
504                         <xs:sequence>
505                             <xs:element name="sequence" minOccurs="0">
506                                 <xs:complexType>
507                                     <xs:attribute name="resource" use="required">
508                                         <xs:simpleType>
509                                             <xs:restriction base="xs:string">
510                                                 <xs:enumeration value="EMBL-CDS"/>
511                                                 <xs:enumeration value="EMBL"/>
512                                             </xs:restriction>
513                                         </xs:simpleType>
514                                     </xs:attribute>
515                                     <xs:attribute name="id" type="xs:string" use="required"/>
516                                     <xs:attribute name="version" type="xs:int" use="optional"/>
517                                 </xs:complexType>
518                             </xs:element>
519                         </xs:sequence>
520                         <xs:attribute name="type" use="required">
521                             <xs:simpleType>
522                                 <xs:restriction base="xs:string">
523                                     <xs:enumeration value="frameshift"/>
524                                     <xs:enumeration value="erroneous initiation"/>
525                                     <xs:enumeration value="erroneous termination"/>
526                                     <xs:enumeration value="erroneous gene model prediction"/>
527                                     <xs:enumeration value="erroneous translation"/>
528                                     <xs:enumeration value="miscellaneous discrepancy"/>
529                                 </xs:restriction>
530                             </xs:simpleType>
531                         </xs:attribute>
532                         <xs:attribute name="ref" type="xs:string" use="optional">
533                             <xs:annotation>
534                                 <xs:documentation>Refers to the 'key' attribute of a 'reference' element.</xs:documentation>
535                             </xs:annotation>
536                         </xs:attribute>
537                     </xs:complexType>
538                 </xs:element>
539
540                 <xs:sequence>
541                     <xs:element name="link" minOccurs="0" maxOccurs="unbounded">
542                         <xs:annotation>
543                             <xs:documentation>Used in 'online information' annotations.</xs:documentation>
544                         </xs:annotation>
545                         <xs:complexType>
546                             <xs:attribute name="uri" type="xs:anyURI" use="required"/>
547                         </xs:complexType>
548                     </xs:element>
549                 </xs:sequence>
550
551                 <xs:sequence>
552                     <xs:annotation>
553                         <xs:documentation>Used in 'alternative products' annotations.</xs:documentation>
554                     </xs:annotation>
555                     <xs:element name="event" type="eventType" maxOccurs="4"/>
556                     <xs:element name="isoform" type="isoformType" minOccurs="0" maxOccurs="unbounded"/>
557                 </xs:sequence>
558
559                 <xs:sequence>
560                     <xs:annotation>
561                         <xs:documentation>Used in 'interaction' annotations.</xs:documentation>
562                     </xs:annotation>
563                     <xs:element name="interactant" type="interactantType" minOccurs="2" maxOccurs="2"/>
564                     <xs:element name="organismsDiffer" type="xs:boolean" default="false"/>
565                     <xs:element name="experiments" type="xs:int"/>
566                 </xs:sequence>
567                 
568                 <xs:element name="disease">
569                     <xs:annotation>
570                         <xs:documentation>Used in 'disease' annotations.</xs:documentation>
571                     </xs:annotation>
572                     <xs:complexType>
573                         <xs:sequence>
574                             <xs:element name="name" type="xs:string"/>
575                             <xs:element name="acronym" type="xs:string"/>
576                             <xs:element name="description" type="xs:string"/>
577                             <xs:element name="dbReference" type="dbReferenceType"/>
578                         </xs:sequence>
579                         <xs:attribute name="id" type="xs:string" use="required"/>
580                     </xs:complexType>
581                 </xs:element>
582
583             </xs:choice>
584
585             <xs:element name="location" type="locationType" minOccurs="0" maxOccurs="unbounded">
586                 <xs:annotation>
587                     <xs:documentation>Used in 'mass spectrometry' and 'sequence caution' annotations.</xs:documentation>
588                 </xs:annotation>
589             </xs:element>
590
591             <xs:element name="text" type="evidencedStringType" minOccurs="0" maxOccurs="unbounded"/>
592
593         </xs:sequence>
594
595         <xs:attribute name="type" use="required">
596             <xs:annotation>
597                 <xs:documentation>Describes the type of a general annotation.
598                 Equivalent to the flat file CC comment topics (except for "DATABASE" which is translated to "online information").</xs:documentation>
599             </xs:annotation>
600             <xs:simpleType>
601                 <xs:restriction base="xs:string">
602                     <xs:enumeration value="allergen"/>
603                     <xs:enumeration value="alternative products"/>
604                     <xs:enumeration value="biotechnology"/>
605                     <xs:enumeration value="biophysicochemical properties"/>
606                     <xs:enumeration value="catalytic activity"/>
607                     <xs:enumeration value="caution"/>
608                     <xs:enumeration value="cofactor"/>
609                     <xs:enumeration value="developmental stage"/>
610                     <xs:enumeration value="disease"/>
611                     <xs:enumeration value="domain"/>
612                     <xs:enumeration value="disruption phenotype"/>
613                     <xs:enumeration value="activity regulation"/>
614                     <xs:enumeration value="function"/>
615                     <xs:enumeration value="induction"/>
616                     <xs:enumeration value="miscellaneous"/>
617                     <xs:enumeration value="pathway"/>
618                     <xs:enumeration value="pharmaceutical"/>
619                     <xs:enumeration value="polymorphism"/>
620                     <xs:enumeration value="PTM"/>
621                     <xs:enumeration value="RNA editing"/>
622                     <xs:enumeration value="similarity"/>
623                     <xs:enumeration value="subcellular location"/>
624                     <xs:enumeration value="sequence caution"/>
625                     <xs:enumeration value="subunit"/>
626                     <xs:enumeration value="tissue specificity"/>
627                     <xs:enumeration value="toxic dose"/>
628                     <xs:enumeration value="online information"/>
629                     <xs:enumeration value="mass spectrometry"/>
630                     <xs:enumeration value="interaction"/>
631                 </xs:restriction>
632             </xs:simpleType>
633         </xs:attribute>
634
635         <xs:attribute name="locationType" type="xs:string" use="optional">
636             <xs:annotation>
637                 <xs:documentation>Describes the type of sequence location in 'RNA editing' annotations. Common values are "Not_applicable" and "Undetermined".</xs:documentation>
638             </xs:annotation>
639         </xs:attribute>
640
641         <xs:attribute name="name" type="xs:string" use="optional">
642             <xs:annotation>
643                 <xs:documentation>Describes an optional name for an 'online information'.</xs:documentation>
644             </xs:annotation>
645         </xs:attribute>
646
647         <xs:attribute name="mass" type="xs:float" use="optional">
648             <xs:annotation>
649                 <xs:documentation>Describes the molecular mass in 'mass spectrometry' annotations.</xs:documentation>
650             </xs:annotation>
651         </xs:attribute>
652         <xs:attribute name="error" type="xs:string" use="optional">
653             <xs:annotation>
654                 <xs:documentation>Describes the error of the mass measurement in 'mass spectrometry' annotations.</xs:documentation>
655             </xs:annotation>
656         </xs:attribute>
657         <xs:attribute name="method" type="xs:string" use="optional">
658             <xs:annotation>
659                 <xs:documentation>Describes the experimental method in 'mass spectrometry' annotations.</xs:documentation>
660             </xs:annotation>
661         </xs:attribute>
662
663         <xs:attribute name="evidence" type="intListType" use="optional"/>
664     </xs:complexType>
665
666     <xs:group name="bpcCommentGroup">
667         <xs:annotation>
668             <xs:documentation>Describes different types of biophysicochemical properties.</xs:documentation>
669         </xs:annotation>
670         <xs:sequence>
671             <xs:element name="absorption" minOccurs="0">
672                 <xs:complexType>
673                     <xs:sequence>
674                         <xs:element name="max" type="evidencedStringType" minOccurs="0"/>
675                         <xs:element name="text" type="evidencedStringType" minOccurs="0" maxOccurs="unbounded"/>
676                     </xs:sequence>
677                 </xs:complexType>
678             </xs:element>
679             <xs:element name="kinetics" minOccurs="0">
680                 <xs:complexType>
681                     <xs:sequence>
682                         <xs:element name="KM" type="evidencedStringType" minOccurs="0" maxOccurs="unbounded"/>
683                         <xs:element name="Vmax" type="evidencedStringType" minOccurs="0" maxOccurs="unbounded"/>
684                         <xs:element name="text" type="evidencedStringType" minOccurs="0" maxOccurs="unbounded"/>
685                     </xs:sequence>
686                 </xs:complexType>
687             </xs:element>
688             <xs:element name="phDependence" minOccurs="0">
689                 <xs:complexType>
690                     <xs:sequence>
691                         <xs:element name="text" type="evidencedStringType" maxOccurs="unbounded"/>
692                     </xs:sequence>
693                 </xs:complexType>
694             </xs:element>
695             <xs:element name="redoxPotential" minOccurs="0">
696                 <xs:complexType>
697                     <xs:sequence>
698                         <xs:element name="text" type="evidencedStringType" maxOccurs="unbounded"/>
699                     </xs:sequence>
700                 </xs:complexType>
701             </xs:element>
702             <xs:element name="temperatureDependence" minOccurs="0">
703                 <xs:complexType>
704                     <xs:sequence>
705                         <xs:element name="text" type="evidencedStringType" maxOccurs="unbounded"/>
706                     </xs:sequence>
707                 </xs:complexType>
708             </xs:element>
709         </xs:sequence>
710     </xs:group>
711
712     <xs:complexType name="cofactorType">
713         <xs:annotation>
714             <xs:documentation>Describes a cofactor.</xs:documentation>
715         </xs:annotation>
716         <xs:sequence>
717             <xs:element name="name" type="xs:string"/>
718             <xs:element name="dbReference" type="dbReferenceType"/>
719         </xs:sequence>
720         <xs:attribute name="evidence" type="intListType" use="optional"/>
721     </xs:complexType>
722
723     <xs:complexType name="subcellularLocationType">
724         <xs:annotation>
725             <xs:documentation>Describes the subcellular location and optionally the topology and orientation of a molecule.</xs:documentation>
726         </xs:annotation>
727         <xs:sequence>
728             <xs:element name="location" type="evidencedStringType" maxOccurs="unbounded"/>
729             <xs:element name="topology" type="evidencedStringType" minOccurs="0" maxOccurs="unbounded"/>
730             <xs:element name="orientation" type="evidencedStringType" minOccurs="0" maxOccurs="unbounded"/>
731         </xs:sequence>
732     </xs:complexType>
733
734     <xs:complexType name="eventType">
735         <xs:annotation>
736             <xs:documentation>Describes the type of events that cause alternative products.</xs:documentation>
737         </xs:annotation>
738         <xs:attribute name="type" use="required">
739             <xs:simpleType>
740                 <xs:restriction base="xs:string">
741                     <xs:enumeration value="alternative splicing"/>
742                     <xs:enumeration value="alternative initiation"/>
743                     <xs:enumeration value="alternative promoter"/>
744                     <xs:enumeration value="ribosomal frameshifting"/>
745                 </xs:restriction>
746             </xs:simpleType>
747         </xs:attribute>
748     </xs:complexType>
749
750     <xs:complexType name="isoformType">
751         <xs:annotation>
752             <xs:documentation>Describes isoforms in 'alternative products' annotations.</xs:documentation>
753         </xs:annotation>
754         <xs:sequence>
755             <xs:element name="id" type="xs:string" maxOccurs="unbounded"/>
756             <xs:element name="name" maxOccurs="unbounded">
757                 <xs:complexType>
758                     <xs:simpleContent>
759                         <xs:extension base="xs:string">
760                             <xs:attribute name="evidence" type="intListType" use="optional"/>
761                         </xs:extension>
762                     </xs:simpleContent>
763                 </xs:complexType>
764             </xs:element>
765             <xs:element name="sequence">
766                 <xs:complexType>
767                     <xs:attribute name="type" use="required">
768                         <xs:simpleType>
769                             <xs:restriction base="xs:string">
770                                 <xs:enumeration value="not described"/>
771                                 <xs:enumeration value="described"/>
772                                 <xs:enumeration value="displayed"/>
773                                 <xs:enumeration value="external"/>
774                             </xs:restriction>
775                         </xs:simpleType>
776                     </xs:attribute>
777                     <xs:attribute name="ref" type="xs:string" use="optional"/>
778                 </xs:complexType>
779             </xs:element>
780             <xs:element name="text" type="evidencedStringType" minOccurs="0" maxOccurs="unbounded"/>
781         </xs:sequence>
782     </xs:complexType>
783
784     <xs:group name="interactantGroup">
785         <xs:sequence>
786             <xs:element name="id" type="xs:string"/>
787             <xs:element name="label" type="xs:string" minOccurs="0"/>
788         </xs:sequence>
789     </xs:group>
790     <xs:complexType name="interactantType">
791         <xs:group ref="interactantGroup" minOccurs="0"/>
792         <xs:attribute name="intactId" type="xs:string" use="required"/>
793     </xs:complexType>
794     <!-- Comment definition ends -->
795
796     <!-- Database cross-reference definition begins -->
797     <xs:complexType name="dbReferenceType">
798         <xs:annotation>
799             <xs:documentation>Describes a database cross-reference.
800             Equivalent to the flat file DR-line.
801             </xs:documentation>
802         </xs:annotation>
803         <xs:sequence>
804             <xs:element name="molecule" type="moleculeType" minOccurs="0"/>
805             <xs:element name="property" type="propertyType" minOccurs="0" maxOccurs="unbounded"/>
806         </xs:sequence>
807         <xs:attribute name="type" type="xs:string" use="required">
808             <xs:annotation>
809                 <xs:documentation>Describes the name of the database.</xs:documentation>
810             </xs:annotation>
811         </xs:attribute>
812         <xs:attribute name="id" type="xs:string" use="required">
813             <xs:annotation>
814                 <xs:documentation>Describes a unique database identifier.</xs:documentation>
815             </xs:annotation>
816         </xs:attribute>
817         <xs:attribute name="evidence" type="intListType" use="optional"/>
818         <!-- xs:attribute name="key" type="xs:string" use="optional"/ -->
819     </xs:complexType>
820
821     <xs:complexType name="propertyType">
822         <xs:attribute name="type" type="xs:string" use="required"/>
823         <xs:attribute name="value" type="xs:string" use="required"/>
824     </xs:complexType>
825     <!-- Database cross-reference definition ends -->
826
827     <!-- Protein existence definition begins -->
828     <xs:complexType name="proteinExistenceType">
829         <xs:annotation>
830             <xs:documentation>Describes the evidence for the protein's existence.
831             Equivalent to the flat file PE-line.</xs:documentation>
832         </xs:annotation>
833         <xs:attribute name="type" use="required">
834             <xs:simpleType>
835                 <xs:restriction base="xs:string">
836                     <xs:enumeration value="evidence at protein level"/>
837                     <xs:enumeration value="evidence at transcript level"/>
838                     <xs:enumeration value="inferred from homology"/>
839                     <xs:enumeration value="predicted"/>
840                     <xs:enumeration value="uncertain"/>
841                 </xs:restriction>
842             </xs:simpleType>
843         </xs:attribute>
844     </xs:complexType>
845     <!-- Protein existence definition ends -->
846
847     <!-- Keyword definition begins -->
848     <xs:complexType name="keywordType">
849         <xs:simpleContent>
850             <xs:extension base="xs:string">
851                 <xs:attribute name="evidence" type="intListType" use="optional"/>
852                 <xs:attribute name="id" type="xs:string" use="required"/>
853             </xs:extension>
854         </xs:simpleContent>
855     </xs:complexType>
856     <!-- Keyword definition ends -->
857
858     <!-- Feature definition begins -->
859     <xs:complexType name="featureType">
860         <xs:annotation>
861             <xs:documentation>Describes different types of sequence annotations.
862             Equivalent to the flat file FT-line.</xs:documentation>
863         </xs:annotation>
864         <xs:sequence>
865             <xs:element name="original" type="xs:string" minOccurs="0">
866                <xs:annotation>
867                     <xs:documentation>Describes the original sequence in annotations that describe natural or artifical sequence variations.</xs:documentation>
868                 </xs:annotation>
869             </xs:element>
870             <xs:element name="variation" type="xs:string" minOccurs="0" maxOccurs="unbounded">
871               <xs:annotation>
872                     <xs:documentation>Describes the variant sequence in annotations that describe natural or artifical sequence variations.</xs:documentation>
873                 </xs:annotation>
874             </xs:element>
875             <xs:element name="location" type="locationType">
876                 <xs:annotation>
877                     <xs:documentation>Describes the sequence coordinates of the annotation.</xs:documentation>
878                 </xs:annotation>
879             </xs:element>
880         </xs:sequence>
881         <xs:attribute name="type" use="required">
882             <xs:annotation>
883                 <xs:documentation>Describes the type of a sequence annotation.
884                 Equivalent to the flat file FT feature keys, but using full terms instead of acronyms.</xs:documentation>
885             </xs:annotation>
886             <xs:simpleType>
887                 <xs:restriction base="xs:string">
888                     <xs:enumeration value="active site"/>
889                     <xs:enumeration value="binding site"/>
890                     <xs:enumeration value="calcium-binding region"/>
891                     <xs:enumeration value="chain"/>
892                     <xs:enumeration value="coiled-coil region"/>
893                     <xs:enumeration value="compositionally biased region"/>
894                     <xs:enumeration value="cross-link"/>
895                     <xs:enumeration value="disulfide bond"/>
896                     <xs:enumeration value="DNA-binding region"/>
897                     <xs:enumeration value="domain"/>
898                     <xs:enumeration value="glycosylation site"/>
899                     <xs:enumeration value="helix"/>
900                     <xs:enumeration value="initiator methionine"/>
901                     <xs:enumeration value="lipid moiety-binding region"/>
902                     <xs:enumeration value="metal ion-binding site"/>
903                     <xs:enumeration value="modified residue"/>
904                     <xs:enumeration value="mutagenesis site"/>
905                     <xs:enumeration value="non-consecutive residues"/>
906                     <xs:enumeration value="non-terminal residue"/>
907                     <xs:enumeration value="nucleotide phosphate-binding region"/>
908                     <xs:enumeration value="peptide"/>
909                     <xs:enumeration value="propeptide"/>
910                     <xs:enumeration value="region of interest"/>
911                     <xs:enumeration value="repeat"/>
912                     <xs:enumeration value="non-standard amino acid"/>
913                     <xs:enumeration value="sequence conflict"/>
914                     <xs:enumeration value="sequence variant"/>
915                     <xs:enumeration value="short sequence motif"/>
916                     <xs:enumeration value="signal peptide"/>
917                     <xs:enumeration value="site"/>
918                     <xs:enumeration value="splice variant"/>
919                     <xs:enumeration value="strand"/>
920                     <xs:enumeration value="topological domain"/>
921                     <xs:enumeration value="transit peptide"/>
922                     <xs:enumeration value="transmembrane region"/>
923                     <xs:enumeration value="turn"/>
924                     <xs:enumeration value="unsure residue"/>
925                     <xs:enumeration value="zinc finger region"/>
926                     <xs:enumeration value="intramembrane region"/>
927                 </xs:restriction>
928             </xs:simpleType>
929         </xs:attribute>
930         <xs:attribute name="status" use="optional">
931             <xs:simpleType>
932                 <xs:restriction base="xs:string">
933                     <xs:enumeration value="by similarity"/>
934                     <xs:enumeration value="probable"/>
935                     <xs:enumeration value="potential"/>
936                 </xs:restriction>
937             </xs:simpleType>
938         </xs:attribute>
939         <xs:attribute name="id" type="xs:string" use="optional"/>
940         <xs:attribute name="description" type="xs:string" use="optional"/>
941         <xs:attribute name="evidence" type="intListType" use="optional"/>
942         <xs:attribute name="ref" type="xs:string" use="optional"/>
943     </xs:complexType>
944
945     <xs:complexType name="locationType">
946         <xs:annotation>
947             <xs:documentation>Describes a sequence location as either a range with a begin and end or as a position. The 'sequence' attribute is only used when the location is not on the canonical sequence displayed in the current entry.</xs:documentation>
948         </xs:annotation>
949         <xs:choice>
950             <xs:sequence>
951                 <xs:element name="begin" type="positionType"/>
952                 <xs:element name="end" type="positionType"/>
953             </xs:sequence>
954             <xs:element name="position" type="positionType"/>
955         </xs:choice>
956         <xs:attribute name="sequence" type="xs:string" use="optional"/>
957     </xs:complexType>
958
959     <xs:complexType name="positionType">
960         <xs:attribute name="position" type="xs:unsignedLong" use="optional"/>
961         <xs:attribute name="status" use="optional" default="certain">
962             <xs:simpleType>
963                 <xs:restriction base="xs:string">
964                     <xs:enumeration value="certain"/>
965                     <xs:enumeration value="uncertain"/>
966                     <xs:enumeration value="less than"/>
967                     <xs:enumeration value="greater than"/>
968                     <xs:enumeration value="unknown"/>
969                 </xs:restriction>
970             </xs:simpleType>
971         </xs:attribute>
972         <xs:attribute name="evidence" type="intListType" use="optional"/>
973     </xs:complexType>
974     <!-- Feature definition ends -->
975
976     <!-- Sequence definition begins -->
977     <xs:complexType name="sequenceType">
978         <xs:simpleContent>
979             <xs:extension base="xs:string">
980                 <xs:attribute name="length" type="xs:int" use="required"/>
981                 <xs:attribute name="mass" type="xs:int" use="required"/>
982                 <xs:attribute name="checksum" type="xs:string" use="required"/>
983                 <xs:attribute name="modified" type="xs:date" use="required"/>
984                 <xs:attribute name="version" type="xs:int" use="required"/>
985                 <xs:attribute name="precursor" type="xs:boolean" use="optional"/>
986                 <xs:attribute name="fragment" use="optional">
987                     <xs:simpleType>
988                         <xs:restriction base="xs:string">
989                             <xs:enumeration value="single"/>
990                             <xs:enumeration value="multiple"/>
991                         </xs:restriction>
992                     </xs:simpleType>
993                 </xs:attribute>
994             </xs:extension>
995         </xs:simpleContent>
996     </xs:complexType>
997     <!-- Sequence definition ends -->
998
999     <!-- Molecule definition begins -->
1000     <xs:complexType name="moleculeType">
1001         <xs:annotation>
1002             <xs:documentation>Describes a molecule by name or unique identifier.</xs:documentation>
1003         </xs:annotation>
1004         <xs:simpleContent>
1005             <xs:extension base="xs:string">
1006                 <xs:attribute name="id" type="xs:string" use="optional"/>
1007             </xs:extension>
1008         </xs:simpleContent>
1009     </xs:complexType>
1010     <!-- Molecule definition ends -->
1011
1012     <!-- Evidence definition begins -->
1013     <xs:complexType name="evidenceType">
1014         <xs:annotation>
1015             <xs:documentation>Describes the evidence for an annotation.
1016             No flat file equivalent.</xs:documentation>
1017         </xs:annotation>
1018         <xs:sequence>
1019             <xs:element name="source" type="sourceType" minOccurs="0"/>
1020             <xs:element name="importedFrom" type="importedFromType" minOccurs="0"/>
1021         </xs:sequence>
1022         <xs:attribute name="type" type="xs:string" use="required">
1023             <xs:annotation>
1024                 <xs:documentation>Describes the type of an evidence using the Evidence Code Ontology (http://www.obofoundry.org/cgi-bin/detail.cgi?id=evidence_code).</xs:documentation>
1025             </xs:annotation>
1026         </xs:attribute>
1027         <xs:attribute name="key" type="xs:integer" use="required">
1028             <xs:annotation>
1029                 <xs:documentation>A unique key to link annotations (via 'evidence' attributes) to evidences.</xs:documentation>
1030             </xs:annotation>
1031         </xs:attribute>
1032     </xs:complexType>
1033     <xs:complexType name="sourceType">
1034         <xs:annotation>
1035             <xs:documentation>Describes the source of the data using a database cross-reference (or a 'ref' attribute when the source cannot be found in a public data source, such as PubMed, and is cited only within the UniProtKB entry).</xs:documentation>
1036         </xs:annotation>
1037         <xs:sequence>
1038             <xs:element name="dbReference" type="dbReferenceType" minOccurs="0"/>
1039         </xs:sequence>
1040         <xs:attribute name="ref" type="xs:integer" use="optional"/>
1041     </xs:complexType>
1042     <xs:complexType name="importedFromType">
1043         <xs:annotation>
1044             <xs:documentation>Describes the source of the evidence, when it is not assigned by UniProt, but imported from an external database.</xs:documentation>
1045         </xs:annotation>
1046         <xs:sequence>
1047             <xs:element name="dbReference" type="dbReferenceType"/>
1048         </xs:sequence>
1049     </xs:complexType>
1050     <!-- Evidence definition ends -->
1051
1052     <xs:complexType name="evidencedStringType">
1053         <xs:simpleContent>
1054             <xs:extension base="xs:string">
1055                 <xs:attribute name="evidence" type="intListType" use="optional"/>
1056                 <xs:attribute name="status" use="optional">
1057                     <xs:simpleType>
1058                         <xs:restriction base="xs:string">
1059                             <xs:enumeration value="by similarity"/>
1060                             <xs:enumeration value="probable"/>
1061                             <xs:enumeration value="potential"/>
1062                         </xs:restriction>
1063                     </xs:simpleType>
1064                 </xs:attribute>
1065             </xs:extension>
1066         </xs:simpleContent>
1067     </xs:complexType>
1068
1069     <xs:simpleType name="intListType">
1070        <xs:list itemType="xs:int"/>
1071    </xs:simpleType>
1072 </xs:schema>