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