Project

General

Profile

« Previous | Next » 

Revision 8613

Added by Chris Jones over 10 years ago

Add cached versions of the DataONE, Dryad, Dublin core, and Darwin Core schemas to Metacat. Remove schemaLocation attributes so that we rely on the local catalog and don't use (potentially changing) URL endpoints.

View differences:

lib/schema/dryad/dryad.xsd
1
<?xml version="1.0" encoding="UTF-8"?>
2
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dwc="http://rs.tdwg.org/dwc/terms/"
3
	xmlns:dcterms="http://purl.org/dc/terms/" xmlns="http://purl.org/dryad/schema/terms/v3.1"
4
	   xmlns:bibo="http://purl.org/dryad/schema/dryad-bibo/v3.1" targetNamespace="http://purl.org/dryad/schema/terms/v3.1">
5

  
6
	<xs:import namespace="http://purl.org/dc/terms/" />
7
	<xs:import namespace="http://rs.tdwg.org/dwc/terms/" />
8
	<xs:import namespace="http://purl.org/dryad/schema/dryad-bibo/v3.1" /> 
9
	
10
	<!-- For the Dryad data package -->
11
	<xs:element name="DryadDataPackage">
12
		<xs:complexType>
13
			<xs:sequence>
14
				<xs:element ref="dcterms:type"/>
15
				<xs:element ref="dcterms:creator" maxOccurs="unbounded"/>
16
				<xs:element ref="dcterms:dateSubmitted"/>
17
				<xs:element ref="dcterms:available"/>
18
				<xs:element ref="dcterms:title" maxOccurs="unbounded"/>
19
				<xs:element ref="dcterms:identifier" maxOccurs="unbounded"/>
20
				<xs:element ref="dcterms:description" minOccurs="0"/>
21
				<xs:element ref="dcterms:subject" minOccurs="0" maxOccurs="unbounded"/>
22
				<xs:element ref="dwc:scientificName" minOccurs="0" maxOccurs="unbounded"/>
23
				<xs:element ref="dcterms:spatial" minOccurs="0" maxOccurs="unbounded"/>
24
				<xs:element ref="dcterms:temporal" minOccurs="0" maxOccurs="unbounded"/>
25
				<xs:element ref="external" minOccurs="0" maxOccurs="unbounded"/>
26
				<xs:element ref="dcterms:references" minOccurs="0"/>
27
				<xs:element ref="bibo:pmid" minOccurs="0" />
28
				<xs:element ref="bibo:Journal" minOccurs="0" />
29
				<xs:element ref="dcterms:hasPart" maxOccurs="unbounded"/>
30
			</xs:sequence>
31
		</xs:complexType>
32
	</xs:element>
33

  
34
	<!-- For the Dryad data file -->
35
	<xs:element name="DryadDataFile">
36
		<xs:complexType>
37
			<xs:sequence>
38
				<xs:element ref="dcterms:type"/>
39
 				<xs:element ref="dcterms:creator" maxOccurs="unbounded"/>
40
				<xs:element ref="dcterms:title"/>
41
				<xs:element ref="dcterms:identifier" maxOccurs="unbounded"/>
42
				<xs:element ref="dcterms:rights"/>
43
				<xs:element ref="dcterms:description" minOccurs="0"/>
44
				<xs:element ref="dcterms:subject" minOccurs="0" maxOccurs="unbounded"/>
45
				<xs:element ref="dwc:scientificName" minOccurs="0" maxOccurs="unbounded"/>
46
				<xs:element ref="dcterms:spatial" minOccurs="0" maxOccurs="unbounded"/>
47
				<xs:element ref="dcterms:temporal" minOccurs="0" maxOccurs="unbounded"/>
48
				<xs:element ref="dcterms:dateSubmitted"/>
49
				<xs:element ref="dcterms:available"/>
50
				<xs:element ref="embargoedUntil" minOccurs="0"/>
51
				<xs:element ref="dcterms:format" minOccurs="0"/>
52
				<xs:element ref="dcterms:provenance" maxOccurs="unbounded"/>
53
				<xs:element ref="dcterms:isPartOf"/>
54
			</xs:sequence>
55
		</xs:complexType>
56
	</xs:element>
57

  
58
	<!-- Dryad defined elements -->
59
	<xs:element name="status" type="xs:string"/>
60
	<xs:element name="external" type="xs:string"/>
61
	<xs:element name="embargoedUntil" substitutionGroup="dcterms:date"/>
62

  
63
</xs:schema>
lib/schema/dryad/dryad-bibo.xsd
1
<?xml version="1.0" encoding="UTF-8"?>
2
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
3
	targetNamespace="http://purl.org/dryad/schema/dryad-bibo/v3.1" xmlns="http://purl.org/dryad/schema/dryad-bibo/v3.1"
4
	elementFormDefault="qualified" attributeFormDefault="unqualified">
5
	
6
	<!-- This is not the full bibo, just the elements we're reusing -->
7
	<xs:element name="status" type="xs:string"/>
8
	<xs:element name="Journal" type="xs:string"/>
9
	<xs:element name="issn" type="xs:string"/>
10
	<xs:element name="eissn" type="xs:string"/>
11
	<xs:element name="volume" type="xs:string"/>
12
	<xs:element name="issue" type="xs:string"/>
13
	<xs:element name="pageStart" type="xs:string"/>
14
	<xs:element name="pageEnd" type="xs:string"/>
15
	<xs:element name="pages" type="xs:string"/>
16
	<xs:element name="doi" type="xs:string"/>
17
	<xs:element name="pmid" type="xs:string"/>
18
</xs:schema>
lib/schema/dc/dc.xsd
1
<?xml version="1.0" encoding="UTF-8"?>
2
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
3
           xmlns="http://purl.org/dc/elements/1.1/"
4
           targetNamespace="http://purl.org/dc/elements/1.1/"
5
           elementFormDefault="qualified"
6
           attributeFormDefault="unqualified">
7

  
8
  <xs:annotation>
9
    <xs:documentation xml:lang="en">
10
      DCMES 1.1 XML Schema
11
      XML Schema for http://purl.org/dc/elements/1.1/ namespace
12

  
13
      Created 2008-02-11
14

  
15
      Created by 
16

  
17
      Tim Cole (t-cole3@uiuc.edu)
18
      Tom Habing (thabing@uiuc.edu)
19
      Jane Hunter (jane@dstc.edu.au)
20
      Pete Johnston (p.johnston@ukoln.ac.uk),
21
      Carl Lagoze (lagoze@cs.cornell.edu)
22

  
23
      This schema declares XML elements for the 15 DC elements from the
24
      http://purl.org/dc/elements/1.1/ namespace.
25

  
26
      It defines a complexType SimpleLiteral which permits mixed content 
27
      and makes the xml:lang attribute available. It disallows child elements by
28
      use of minOcccurs/maxOccurs.
29

  
30
      However, this complexType does permit the derivation of other complexTypes
31
      which would permit child elements.
32

  
33
      All elements are declared as substitutable for the abstract element any, 
34
      which means that the default type for all elements is dc:SimpleLiteral.
35

  
36
    </xs:documentation>
37

  
38
  </xs:annotation>
39

  
40

  
41
  <xs:import namespace="http://www.w3.org/XML/1998/namespace"
42
             schemaLocation="http://www.w3.org/2001/03/xml.xsd">
43
  </xs:import>
44

  
45
  <xs:complexType name="SimpleLiteral">
46
        <xs:annotation>
47
        <xs:documentation xml:lang="en">
48
            This is the default type for all of the DC elements.
49
            It permits text content only with optional
50
            xml:lang attribute.
51
            Text is allowed because mixed="true", but sub-elements
52
            are disallowed because minOccurs="0" and maxOccurs="0" 
53
            are on the xs:any tag.
54

  
55
    	    This complexType allows for restriction or extension permitting
56
            child elements.
57
    	</xs:documentation>
58
  	</xs:annotation>
59

  
60
   <xs:complexContent mixed="true">
61
    <xs:restriction base="xs:anyType">
62
     <xs:sequence>
63
      <xs:any processContents="lax" minOccurs="0" maxOccurs="0"/>
64
     </xs:sequence>
65
     <xs:attribute ref="xml:lang" use="optional"/>
66
    </xs:restriction>
67
   </xs:complexContent>
68
  </xs:complexType>
69

  
70
  <xs:element name="any" type="SimpleLiteral" abstract="true"/>
71

  
72
  <xs:element name="title" substitutionGroup="any"/>
73
  <xs:element name="creator" substitutionGroup="any"/>
74
  <xs:element name="subject" substitutionGroup="any"/>
75
  <xs:element name="description" substitutionGroup="any"/>
76
  <xs:element name="publisher" substitutionGroup="any"/>
77
  <xs:element name="contributor" substitutionGroup="any"/>
78
  <xs:element name="date" substitutionGroup="any"/>
79
  <xs:element name="type" substitutionGroup="any"/>
80
  <xs:element name="format" substitutionGroup="any"/>
81
  <xs:element name="identifier" substitutionGroup="any"/>
82
  <xs:element name="source" substitutionGroup="any"/>
83
  <xs:element name="language" substitutionGroup="any"/>
84
  <xs:element name="relation" substitutionGroup="any"/>
85
  <xs:element name="coverage" substitutionGroup="any"/>
86
  <xs:element name="rights" substitutionGroup="any"/>
87

  
88
  <xs:group name="elementsGroup">
89
  	<xs:annotation>
90
    	<xs:documentation xml:lang="en">
91
    	    This group is included as a convenience for schema authors
92
            who need to refer to all the elements in the 
93
            http://purl.org/dc/elements/1.1/ namespace.
94
    	</xs:documentation>
95
  	</xs:annotation>
96

  
97
  <xs:sequence>
98
    <xs:choice minOccurs="0" maxOccurs="unbounded">
99
      <xs:element ref="any"/>
100
    </xs:choice>
101
    </xs:sequence>
102
  </xs:group>
103

  
104
  <xs:complexType name="elementContainer">
105
  	<xs:annotation>
106
    	<xs:documentation xml:lang="en">
107
    		This complexType is included as a convenience for schema authors who need to define a root
108
    		or container element for all of the DC elements.
109
    	</xs:documentation>
110
  	</xs:annotation>
111

  
112
    <xs:choice>
113
      <xs:group ref="elementsGroup"/>
114
    </xs:choice>
115
  </xs:complexType>
116

  
117

  
118
</xs:schema>
lib/schema/dc/dcmitype.xsd
1
<?xml version="1.0" encoding="UTF-8"?>
2
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
3
           xmlns="http://purl.org/dc/dcmitype/"
4
           targetNamespace="http://purl.org/dc/dcmitype/"
5
           elementFormDefault="qualified"
6
           attributeFormDefault="unqualified">
7

  
8
  <xs:annotation>
9
    <xs:documentation xml:lang="en">
10
      DCMI Type Vocabulary XML Schema
11
      XML Schema for http://purl.org/dc/dcmitype/ namespace
12

  
13
      Created 2008-02-11
14

  
15
      Created by 
16

  
17
      Tim Cole (t-cole3@uiuc.edu)
18
      Tom Habing (thabing@uiuc.edu)
19
      Jane Hunter (jane@dstc.edu.au)
20
      Pete Johnston (p.johnston@ukoln.ac.uk),
21
      Carl Lagoze (lagoze@cs.cornell.edu)
22

  
23
      This schema defines a simpleType which enumerates
24
      the allowable values for the DCMI Type Vocabulary.
25
    </xs:documentation>
26

  
27
 
28
  </xs:annotation>
29

  
30

  
31
  <xs:simpleType name="DCMIType">
32
     <xs:union>
33
        <xs:simpleType>
34
           <xs:restriction base="xs:Name">
35
		<xs:enumeration value="Collection"/>
36
		<xs:enumeration value="Dataset"/>
37
		<xs:enumeration value="Event"/>
38
		<xs:enumeration value="Image"/>
39
		<xs:enumeration value="MovingImage"/>
40
		<xs:enumeration value="StillImage"/>
41
		<xs:enumeration value="InteractiveResource"/>
42
		<xs:enumeration value="Service"/>
43
		<xs:enumeration value="Software"/>
44
		<xs:enumeration value="Sound"/>
45
		<xs:enumeration value="Text"/>
46
		<xs:enumeration value="PhysicalObject"/>
47
            </xs:restriction>
48
        </xs:simpleType> 
49
     </xs:union>
50
  </xs:simpleType>
51

  
52
</xs:schema>
lib/schema/dc/dcterms.xsd
1
<?xml version="1.0" encoding="UTF-8"?>
2
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
3
           xmlns:dc="http://purl.org/dc/elements/1.1/"
4
           xmlns:dcmitype="http://purl.org/dc/dcmitype/"
5
           targetNamespace="http://purl.org/dc/terms/"
6
           xmlns="http://purl.org/dc/terms/"
7
           elementFormDefault="qualified"
8
           attributeFormDefault="unqualified">
9

  
10
  <xs:annotation>
11
    <xs:documentation xml:lang="en">
12
      DCterms XML Schema
13
      XML Schema for http://purl.org/dc/terms/ namespace
14
 
15
      Created 2008-02-11
16

  
17
      Created by 
18

  
19
      Tim Cole (t-cole3@uiuc.edu)
20
      Tom Habing (thabing@uiuc.edu)
21
      Jane Hunter (jane@dstc.edu.au)
22
      Pete Johnston (p.johnston@ukoln.ac.uk),
23
      Carl Lagoze (lagoze@cs.cornell.edu)
24

  
25
      This schema declares XML elements for the DC elements and
26
      DC element refinements from the http://purl.org/dc/terms/ namespace.
27
      
28
      It reuses the complexType dc:SimpleLiteral, imported from the dc.xsd
29
      schema, which permits simple element content, and makes the xml:lang
30
      attribute available.
31

  
32
      This complexType permits the derivation of other complexTypes
33
      which would permit child elements.
34

  
35
      XML elements corresponding to DC elements are declared as substitutable for the abstract element dc:any, and 
36
      XML elements corresponding to DC element refinements are defined as substitutable for the base elements 
37
      which they refine.
38

  
39
      This means that the default type for all XML elements (i.e. corresponding to all DC elements and 
40
      element refinements) is dc:SimpleLiteral.
41

  
42
      Encoding schemes are defined as complexTypes which are restrictions
43
      of the dc:SimpleLiteral complexType. These complexTypes restrict 
44
      values to an appropriates syntax or format using data typing,
45
      regular expressions, or enumerated lists.
46
  
47
      In order to specify one of these encodings an xsi:type attribute must 
48
      be used in the instance document.
49

  
50
      Also, note that one shortcoming of this approach is that any type can be 
51
      applied to any of the elements or refinements.  There is no convenient way
52
      to restrict types to specific elements using this approach.
53

  
54
      Changes in 2008-02-11 version:
55
      
56
      Add element declarations corresponding to 15 new dcterms URIs, and amend use of substitutionGroups.
57
      
58
      Add compexType definitions corresponding to ISO639-3, RFC4646.
59
      
60
    </xs:documentation>
61

  
62
  </xs:annotation>
63

  
64

  
65
  <xs:import namespace="http://www.w3.org/XML/1998/namespace"
66
             schemaLocation="http://www.w3.org/2001/03/xml.xsd">
67
  </xs:import>
68

  
69
   <xs:import namespace="http://purl.org/dc/elements/1.1/"
70
              schemaLocation="dc.xsd"/>
71

  
72
   <xs:import namespace="http://purl.org/dc/dcmitype/"
73
              schemaLocation="dcmitype.xsd"/>
74

  
75
   <xs:element name="title" substitutionGroup="dc:title"/>
76
   <xs:element name="creator" substitutionGroup="dc:creator"/>
77
   <xs:element name="subject" substitutionGroup="dc:subject"/>
78
   <xs:element name="description" substitutionGroup="dc:description"/>
79
   <xs:element name="publisher" substitutionGroup="dc:publisher"/>
80
   <xs:element name="contributor" substitutionGroup="dc:contributor"/>
81
   <xs:element name="date" substitutionGroup="dc:date"/>
82
   <xs:element name="type" substitutionGroup="dc:type"/>
83
   <xs:element name="format" substitutionGroup="dc:format"/>
84
   <xs:element name="identifier" substitutionGroup="dc:identifier"/>
85
   <xs:element name="source" substitutionGroup="dc:source"/>
86
   <xs:element name="language" substitutionGroup="dc:language"/>
87
   <xs:element name="relation" substitutionGroup="dc:relation"/>
88
   <xs:element name="coverage" substitutionGroup="dc:coverage"/>
89
   <xs:element name="rights" substitutionGroup="dc:rights"/>
90

  
91
   <xs:element name="alternative" substitutionGroup="title"/>
92

  
93
   <xs:element name="tableOfContents" substitutionGroup="description"/>
94
   <xs:element name="abstract" substitutionGroup="description"/>
95

  
96
   <xs:element name="created" substitutionGroup="date"/>
97
   <xs:element name="valid" substitutionGroup="date"/>
98
   <xs:element name="available" substitutionGroup="date"/>
99
   <xs:element name="issued" substitutionGroup="date"/>
100
   <xs:element name="modified" substitutionGroup="date"/>
101
   <xs:element name="dateAccepted" substitutionGroup="date"/>
102
   <xs:element name="dateCopyrighted" substitutionGroup="date"/>
103
   <xs:element name="dateSubmitted" substitutionGroup="date"/>
104

  
105
   <xs:element name="extent" substitutionGroup="format"/>
106
   <xs:element name="medium" substitutionGroup="format"/>
107

  
108
   <xs:element name="isVersionOf" substitutionGroup="relation"/>
109
   <xs:element name="hasVersion" substitutionGroup="relation"/>
110
   <xs:element name="isReplacedBy" substitutionGroup="relation"/>
111
   <xs:element name="replaces" substitutionGroup="relation"/>
112
   <xs:element name="isRequiredBy" substitutionGroup="relation"/>
113
   <xs:element name="requires" substitutionGroup="relation"/>
114
   <xs:element name="isPartOf" substitutionGroup="relation"/>
115
   <xs:element name="hasPart" substitutionGroup="relation"/>
116
   <xs:element name="isReferencedBy" substitutionGroup="relation"/>
117
   <xs:element name="references" substitutionGroup="relation"/>
118
   <xs:element name="isFormatOf" substitutionGroup="relation"/>
119
   <xs:element name="hasFormat" substitutionGroup="relation"/>
120
   <xs:element name="conformsTo" substitutionGroup="relation"/>
121

  
122
   <xs:element name="spatial" substitutionGroup="coverage"/>
123
   <xs:element name="temporal" substitutionGroup="coverage"/>
124

  
125
   <xs:element name="audience" substitutionGroup="dc:any"/>
126
   <xs:element name="accrualMethod" substitutionGroup="dc:any"/>
127
   <xs:element name="accrualPeriodicity" substitutionGroup="dc:any"/>
128
   <xs:element name="accrualPolicy" substitutionGroup="dc:any"/>
129
   <xs:element name="instructionalMethod" substitutionGroup="dc:any"/>
130
   <xs:element name="provenance" substitutionGroup="dc:any"/>
131
   <xs:element name="rightsHolder" substitutionGroup="dc:any"/>
132

  
133
   <xs:element name="mediator" substitutionGroup="audience"/>
134
   <xs:element name="educationLevel" substitutionGroup="audience"/>
135

  
136
   <xs:element name="accessRights" substitutionGroup="rights"/>
137
   <xs:element name="license" substitutionGroup="rights"/>
138

  
139
   <xs:element name="bibliographicCitation" substitutionGroup="identifier"/>
140

  
141
  <xs:complexType name="LCSH">
142
   <xs:simpleContent>
143
    <xs:restriction base="dc:SimpleLiteral">
144
        <xs:simpleType>
145
          <xs:restriction base="xs:string"/>
146
        </xs:simpleType>
147
        <xs:attribute ref="xml:lang" use="prohibited"/>
148
    </xs:restriction>
149
   </xs:simpleContent>
150
  </xs:complexType>
151

  
152
  <xs:complexType name="MESH">
153
   <xs:simpleContent>
154
    <xs:restriction base="dc:SimpleLiteral">
155
        <xs:simpleType>
156
          <xs:restriction base="xs:string"/>
157
        </xs:simpleType>
158
        <xs:attribute ref="xml:lang" use="prohibited"/>
159
    </xs:restriction>
160
   </xs:simpleContent>
161
  </xs:complexType>
162

  
163
  <xs:complexType name="DDC">
164
   <xs:simpleContent>
165
    <xs:restriction base="dc:SimpleLiteral">
166
        <xs:simpleType>
167
          <xs:restriction base="xs:string"/>
168
        </xs:simpleType>
169
        <xs:attribute ref="xml:lang" use="prohibited"/>
170
    </xs:restriction>
171
   </xs:simpleContent>
172
  </xs:complexType>
173

  
174
  <xs:complexType name="LCC">
175
   <xs:simpleContent>
176
    <xs:restriction base="dc:SimpleLiteral">
177
        <xs:simpleType>
178
          <xs:restriction base="xs:string"/>
179
        </xs:simpleType>
180
        <xs:attribute ref="xml:lang" use="prohibited"/>
181
    </xs:restriction>
182
   </xs:simpleContent>
183
  </xs:complexType>
184

  
185
  <xs:complexType name="UDC">
186
   <xs:simpleContent>
187
    <xs:restriction base="dc:SimpleLiteral">
188
        <xs:simpleType>
189
          <xs:restriction base="xs:string"/>
190
        </xs:simpleType>
191
        <xs:attribute ref="xml:lang" use="prohibited"/>
192
    </xs:restriction>
193
   </xs:simpleContent>
194
  </xs:complexType>
195

  
196
  <xs:complexType name="Period">
197
   <xs:simpleContent>
198
    <xs:restriction base="dc:SimpleLiteral">
199
        <xs:simpleType>
200
          <xs:restriction base="xs:string"/>
201
        </xs:simpleType>
202
        <xs:attribute ref="xml:lang" use="prohibited"/>
203
    </xs:restriction>
204
   </xs:simpleContent>
205
  </xs:complexType>
206

  
207
  <xs:complexType name="W3CDTF">
208
   <xs:simpleContent>
209
    <xs:restriction base="dc:SimpleLiteral">
210
        <xs:simpleType>
211
           <xs:union memberTypes="xs:gYear xs:gYearMonth xs:date xs:dateTime"/>
212
        </xs:simpleType>
213
        <xs:attribute ref="xml:lang" use="prohibited"/>
214
    </xs:restriction>
215
   </xs:simpleContent>
216
  </xs:complexType> 
217

  
218
  <xs:complexType name="DCMIType">
219
   <xs:simpleContent>
220
    <xs:restriction base="dc:SimpleLiteral">
221
        <xs:simpleType>
222
          <xs:restriction base="dcmitype:DCMIType"/>
223
        </xs:simpleType>
224
        <xs:attribute ref="xml:lang" use="prohibited"/>
225
    </xs:restriction>
226
   </xs:simpleContent>
227
  </xs:complexType>
228

  
229
  <xs:complexType name="IMT">
230
   <xs:simpleContent>
231
    <xs:restriction base="dc:SimpleLiteral">
232
        <xs:simpleType>
233
          <xs:restriction base="xs:string"/>
234
        </xs:simpleType>
235
        <xs:attribute ref="xml:lang" use="prohibited"/>
236
    </xs:restriction>
237
   </xs:simpleContent>
238
  </xs:complexType>
239

  
240
  <xs:complexType name="URI">
241
   <xs:simpleContent>
242
    <xs:restriction base="dc:SimpleLiteral">
243
        <xs:simpleType>
244
          <xs:restriction base="xs:anyURI"/>
245
        </xs:simpleType>
246
        <xs:attribute ref="xml:lang" use="prohibited"/>
247
    </xs:restriction>
248
   </xs:simpleContent>
249
  </xs:complexType> 
250

  
251
  <xs:complexType name="ISO639-2">
252
   <xs:simpleContent>
253
    <xs:restriction base="dc:SimpleLiteral">
254
        <xs:simpleType>
255
          <xs:restriction base="xs:string"/>
256
        </xs:simpleType>
257
        <xs:attribute ref="xml:lang" use="prohibited"/>
258
    </xs:restriction>
259
   </xs:simpleContent>
260
  </xs:complexType>
261

  
262
  <xs:complexType name="ISO639-3">
263
   <xs:simpleContent>
264
    <xs:restriction base="dc:SimpleLiteral">
265
        <xs:simpleType>
266
          <xs:restriction base="xs:string"/>
267
        </xs:simpleType>
268
        <xs:attribute ref="xml:lang" use="prohibited"/>
269
    </xs:restriction>
270
   </xs:simpleContent>
271
  </xs:complexType>
272

  
273
  <xs:complexType name="RFC1766">
274
   <xs:simpleContent>
275
    <xs:restriction base="dc:SimpleLiteral">
276
        <xs:simpleType>
277
          <xs:restriction base="xs:language"/>
278
        </xs:simpleType>
279
        <xs:attribute ref="xml:lang" use="prohibited"/>
280
    </xs:restriction>
281
   </xs:simpleContent>
282
  </xs:complexType>
283

  
284
  <xs:complexType name="RFC3066">
285
   <xs:simpleContent>
286
    <xs:restriction base="dc:SimpleLiteral">
287
        <xs:simpleType>
288
          <xs:restriction base="xs:language"/>
289
        </xs:simpleType>
290
        <xs:attribute ref="xml:lang" use="prohibited"/>
291
    </xs:restriction>
292
   </xs:simpleContent>
293
  </xs:complexType>
294

  
295
  <xs:complexType name="RFC4646">
296
   <xs:simpleContent>
297
    <xs:restriction base="dc:SimpleLiteral">
298
        <xs:simpleType>
299
          <xs:restriction base="xs:language"/>
300
        </xs:simpleType>
301
        <xs:attribute ref="xml:lang" use="prohibited"/>
302
    </xs:restriction>
303
   </xs:simpleContent>
304
  </xs:complexType>
305

  
306
  <xs:complexType name="Point">
307
   <xs:simpleContent>
308
    <xs:restriction base="dc:SimpleLiteral">
309
        <xs:simpleType>
310
          <xs:restriction base="xs:string"/>
311
        </xs:simpleType>
312
        <xs:attribute ref="xml:lang" use="prohibited"/>
313
    </xs:restriction>
314
   </xs:simpleContent>
315
  </xs:complexType>
316

  
317
  <xs:complexType name="ISO3166">
318
   <xs:simpleContent>
319
    <xs:restriction base="dc:SimpleLiteral">
320
        <xs:simpleType>
321
          <xs:restriction base="xs:string"/>
322
        </xs:simpleType>
323
        <xs:attribute ref="xml:lang" use="prohibited"/>
324
    </xs:restriction>
325
   </xs:simpleContent>
326
  </xs:complexType>
327

  
328
  <xs:complexType name="Box">
329
   <xs:simpleContent>
330
    <xs:restriction base="dc:SimpleLiteral">
331
        <xs:simpleType>
332
          <xs:restriction base="xs:string"/>
333
        </xs:simpleType>
334
        <xs:attribute ref="xml:lang" use="prohibited"/>
335
    </xs:restriction>
336
   </xs:simpleContent>
337
  </xs:complexType>
338

  
339
  <xs:complexType name="TGN">
340
   <xs:simpleContent>
341
    <xs:restriction base="dc:SimpleLiteral">
342
        <xs:simpleType>
343
          <xs:restriction base="xs:string"/>
344
        </xs:simpleType>
345
        <xs:attribute ref="xml:lang" use="prohibited"/>
346
    </xs:restriction>
347
   </xs:simpleContent>
348
  </xs:complexType>
349

  
350
  <xs:group name="elementsAndRefinementsGroup">
351
  	<xs:annotation>
352
    	<xs:documentation xml:lang="en">
353
    		This group is included as a convenience for schema authors
354
            who need to refer to all the DC elements and element refinements 
355
            in the http://purl.org/dc/elements/1.1/ and 
356
            http://purl.org/dc/terms namespaces. 
357
            N.B. Refinements available via substitution groups.
358
    	</xs:documentation>
359
  	</xs:annotation>
360

  
361
  <xs:sequence>
362
    <xs:choice minOccurs="0" maxOccurs="unbounded">
363
	<xs:element ref="dc:any" />
364
    </xs:choice>
365
  </xs:sequence>
366
  </xs:group>	
367

  
368
  <xs:complexType name="elementOrRefinementContainer">
369
  	<xs:annotation>
370
    	<xs:documentation xml:lang="en">
371
    		This is included as a convenience for schema authors who need to define a root
372
    		or container element for all of the DC elements and element refinements.
373
    	</xs:documentation>
374
  	</xs:annotation>
375

  
376
    <xs:choice>
377
      <xs:group ref="elementsAndRefinementsGroup"/>
378
    </xs:choice>
379
  </xs:complexType>
380

  
381

  
382
</xs:schema>
lib/schema/dataone/dataoneTypes_v1.1.xsd
1
<?xml version="1.0" encoding="UTF-8"?>
2
<xs:schema  targetNamespace="http://ns.dataone.org/service/types/v1.1"
3
	xmlns:d1="http://ns.dataone.org/service/types/v1"
4
    xmlns:d1_v1.1="http://ns.dataone.org/service/types/v1.1"
5
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
6
    version="1.1.0"
7
    elementFormDefault="unqualified" attributeFormDefault="unqualified">
8

  
9
<!-- 
10
$HeadURL: https://repository.dataone.org/software/cicore/branches/D1_SCHEMA_v1.1/dataoneTypes.xsd $
11
$Id: dataoneTypes.xsd 10341 2012-10-10 14:07:49Z vieglais $
12

  
13
About this document:
14

  
15
  This XML Schema document defines the common data structures that are used
16
  to support messaging between the major components of the DataONE
17
  infrastructure and to guide structure design for storage of information
18
  required for normal operations.
19

  
20
License:
21

  
22
  This work was created by participants in the DataONE project, and is
23
  jointly copyrighted by participating institutions in DataONE. For
24
  more information on DataONE, see our web site at http://dataone.org.
25

  
26
    Copyright 2011
27

  
28
  Licensed under the Apache License, Version 2.0 (the "License");
29
  you may not use this file except in compliance with the License.
30
  You may obtain a copy of the License at
31

  
32
    http://www.apache.org/licenses/LICENSE-2.0
33

  
34
  Unless required by applicable law or agreed to in writing, software
35
  distributed under the License is distributed on an "AS IS" BASIS,
36
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
37
  See the License for the specific language governing permissions and
38
  limitations under the License.
39

  
40
Formatting: 
41

  
42
  - This document should be saved as a UTF-8 encoded file.
43

  
44
  - Indent using spaces, not tabs, with two spaces per indent level.
45

  
46
  - Line wrapping should be set to 80 chars, adjusted as necessary
47

  
48
  - Documentation entries contain formatting instructions for integration with
49
    the DataONE architecture documentation, available at:
50

  
51
      http://mule1.dataone.org/ArchitectureDocs-current
52

  
53
-->
54

  
55
<!-- ************************************
56
        DEFINE REUSABLE SIMPLE TYPES HERE 
57
        ************************************ -->
58

  
59

  
60

  
61
  <!-- ***************************************
62
          DEFINE REUSABLE COMPLEX  TYPES HERE 
63
          *************************************** -->
64

  
65
  <!-- NOTE THAT ALL SERIALIZEABLE ROOT ELEMENTS FOR MESSAGES SHOULD BE OF A
66
       COMPLEX TYPE -->
67
    <xs:import namespace="http://ns.dataone.org/service/types/v1" 
68
        schemaLocation="http://ns.dataone.org/service/types/v1" />
69

  
70

  
71
  <!-- QueryEngineDescription -->
72
  <xs:complexType name="QueryEngineDescription">
73
    <xs:annotation>
74
      <xs:documentation>Describes a query engine that can be used to search content on the node. 
75
      Query engines may be general purpose or specialized for particular communities or domains.</xs:documentation>
76
    </xs:annotation>
77
    <xs:sequence>
78
      <xs:element name="queryEngineVersion" type="xs:string" minOccurs="1" maxOccurs="1">
79
        <xs:annotation>
80
          <xs:documentation>The version of the underlying query engine. Used by clients to determine possible
81
          compatibility concerns or features available.</xs:documentation>
82
        </xs:annotation>
83
      </xs:element>
84
      <xs:element name="querySchemaVersion" type="xs:string" minOccurs="0" maxOccurs="1">
85
        <xs:annotation>
86
          <xs:documentation>Version of the schema in use by the query engine, e.g. &quot;1.0.1&quot;</xs:documentation>
87
        </xs:annotation>
88
      </xs:element>
89
      <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1">
90
        <xs:annotation>
91
          <xs:documentation>The full, human readable name of the query engine. For example: 
92
            &quot;Apache SOLR&quot;</xs:documentation>
93
        </xs:annotation>
94
      </xs:element>
95
      <xs:element name="additionalInfo" type="d1:NonEmptyString" minOccurs="0" maxOccurs="unbounded">
96
        <xs:annotation>
97
          <xs:documentation>An optional human readable description of the query engine. This can be 
98
            used to describe any special capabilities or intended uses for the query engine. For example, 
99
            a query engine may be tuned to suit a particular audience or domain as opposed to providing 
100
            a general purpose discovery mechanism.</xs:documentation>
101
          <xs:documentation>This field may also contain links to additional information about the query engine, 
102
          such as documentation for the search syntax provided by the query engine implemntors.</xs:documentation>
103
          </xs:annotation>
104
      </xs:element>
105
      <xs:element name="queryField" type="d1_v1.1:QueryField" minOccurs="0" maxOccurs="unbounded">
106
        <xs:annotation>
107
          <xs:documentation>A list of query fields supported by the query engine.</xs:documentation>
108
        </xs:annotation>
109
      </xs:element>
110
    </xs:sequence>
111
  </xs:complexType>
112
  
113
  <!-- QueryEngineList -->
114
  <xs:complexType name="QueryEngineList">
115
    <xs:annotation>
116
      <xs:documentation>A list of query engine names that indicate the possible values for 
117
        CNRead.getQueryEngineDescription and CNRead.query REST API endpoints.</xs:documentation>
118
    </xs:annotation>
119
    <xs:sequence>
120
      <xs:element name ="queryEngine" type="d1:NonEmptyString" 
121
        minOccurs="0" maxOccurs="unbounded">
122
        <xs:annotation>
123
          <xs:documentation>The name of a queryEngine. This value will be used as a path element in 
124
            REST API calls and so should not contain characters that will need to be escaped.</xs:documentation>
125
        </xs:annotation>
126
      </xs:element>
127
    </xs:sequence>
128
  </xs:complexType>
129

  
130
  <!-- QueryField -->
131
  <xs:complexType name="QueryField">
132
    <xs:annotation>
133
      <xs:documentation></xs:documentation>
134
    </xs:annotation>
135
    <xs:sequence>
136
      <xs:element name="name" type="d1:NonEmptyString" minOccurs="1" maxOccurs="1">
137
        <xs:annotation>
138
          <xs:documentation>The name of the field as used programmatically when 
139
            constructing queries or other rferences to the field.</xs:documentation>
140
        </xs:annotation>
141
      </xs:element>
142
      <xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="unbounded">
143
        <xs:annotation>
144
          <xs:documentation>An optional, repeatable, brief description of the field that can be
145
          used to help guide developers or end users in appropriate use of the field. May for 
146
          example, contain a links to additional documentation.</xs:documentation>
147
        </xs:annotation>
148
      </xs:element>
149
      <xs:element name="type" type="d1:NonEmptyString" minOccurs="1" maxOccurs="1">
150
        <xs:annotation>
151
          <xs:documentation>The type of the field, expressed in the language peculiar to the 
152
          query engine being described.</xs:documentation>
153
        </xs:annotation>
154
      </xs:element>
155
      <xs:element name="searchable" type="xs:boolean" minOccurs="1" maxOccurs="1">
156
        <xs:annotation>
157
          <xs:documentation>Indicates if the field may be used in constructing queries (as opposed 
158
            to only appearing in results)</xs:documentation>
159
        </xs:annotation>        
160
      </xs:element>
161
      <xs:element name="returnable" type="xs:boolean" minOccurs="1" maxOccurs="1">
162
        <xs:annotation>
163
          <xs:documentation>Indicates if the field values may be returned in search results.</xs:documentation>
164
        </xs:annotation>        
165
      </xs:element>
166
      <xs:element name="sortable" type="xs:boolean" minOccurs="1" maxOccurs="1">
167
        <xs:annotation>
168
          <xs:documentation>Indicates if the field can be used for sorting results.</xs:documentation>
169
        </xs:annotation>        
170
      </xs:element>
171
      <xs:element name="multivalued" type="xs:boolean" minOccurs="0" maxOccurs="1">
172
        <xs:annotation>
173
          <xs:documentation>Indicates if the field may contain multiple values. Some query engines
174
          such as SOLR support this capability.</xs:documentation>
175
        </xs:annotation>        
176
      </xs:element>
177
    </xs:sequence>
178
  </xs:complexType>
179

  
180

  
181
  <!-- ******************************************
182
          DEFINE ROOT ELEMENTS OF MESSAGES HERE 
183
          ****************************************** -->
184
  <!-- NOTE THAT ALL SERIALIZEABLE ROOT ELEMENTS FOR MESSAGES SHOULD BE OF A 
185
       COMPLEX TYPE -->
186

  
187
  <!-- These root-level element definitions are provided for selected types so
188
       that those types can be used in serialized messages in method calls in
189
       DataONE. Any type that is included as a parameter to or a return type
190
       from a DataONE service should have a corresponding root element of that
191
       type defined here.
192
  -->
193

  
194
  <xs:element name="queryEngineList" type="d1_v1.1:QueryEngineList" />
195
  <xs:element name="queryEngineDescription" type="d1_v1.1:QueryEngineDescription"></xs:element>
196
</xs:schema>
197

  
lib/schema/dataone/dataoneTypes.xsd
1
<?xml version="1.0" encoding="UTF-8"?>
2
<xs:schema  targetNamespace="http://ns.dataone.org/service/types/v1"
3
    xmlns:d1="http://ns.dataone.org/service/types/v1"
4
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
5
    version="1.0.3"
6
    elementFormDefault="unqualified" attributeFormDefault="unqualified">
7

  
8
<!-- 
9
$HeadURL$
10
$Id$
11

  
12
About this document:
13

  
14
  This XML Schema document defines the common data structures that are used
15
  to support messaging between the major components of the DataONE
16
  infrastructure and to guide structure design for storage of information
17
  required for normal operations.
18

  
19
License:
20

  
21
  This work was created by participants in the DataONE project, and is
22
  jointly copyrighted by participating institutions in DataONE. For
23
  more information on DataONE, see our web site at http://dataone.org.
24

  
25
    Copyright 2011
26

  
27
  Licensed under the Apache License, Version 2.0 (the "License");
28
  you may not use this file except in compliance with the License.
29
  You may obtain a copy of the License at
30

  
31
    http://www.apache.org/licenses/LICENSE-2.0
32

  
33
  Unless required by applicable law or agreed to in writing, software
34
  distributed under the License is distributed on an "AS IS" BASIS,
35
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
36
  See the License for the specific language governing permissions and
37
  limitations under the License.
38

  
39
Formatting: 
40

  
41
  - This document should be saved as a UTF-8 encoded file.
42

  
43
  - Indent using spaces, not tabs, with two spaces per indent level.
44

  
45
  - Line wrapping should be set to 80 chars, adjusted as necessary
46

  
47
  - Documentation entries contain formatting instructions for integration with
48
    the DataONE architecture documentation, available at:
49

  
50
      http://mule1.dataone.org/ArchitectureDocs-current
51

  
52
-->
53

  
54
<!-- ************************************
55
        DEFINE REUSABLE SIMPLE TYPES HERE 
56
        ************************************ -->
57

  
58
  <!-- ChecksumAlgorithm -->
59
  <xs:simpleType name="ChecksumAlgorithm">
60
    <xs:annotation>
61
      <xs:documentation>The cryptographic hash algorithm used to calculate a
62
      checksum. DataONE recognizes the Library of Congress list of
63
      cryptographic hash algorithms that can be used as names in this field,
64
      and specifically uses the *madsrdf:authoritativeLabel* field as the name
65
      of the algorithm in this field. See: `Library of Congress Cryptographic
66
      Algorithm Vocabulary`_. All compliant implementations must support at
67
      least SHA-1 and MD5, but may support other algorithms as well.</xs:documentation>
68
      <xs:documentation>Valid entries include: SHA-1, MD5</xs:documentation>
69
      <xs:documentation>The default checksum is *SHA-1*.</xs:documentation>
70
      <xs:documentation>.. _Library of Congress Cryptographic Algorithm Vocabulary: http://id.loc.gov/vocabulary/cryptographicHashFunctions.rdf
71
      </xs:documentation>
72
    </xs:annotation>
73
    <xs:restriction base="xs:string">
74
    </xs:restriction>
75
  </xs:simpleType> 
76

  
77
  <!-- CrontabEntry -->
78
  <xs:simpleType name="CrontabEntry">
79
    <xs:annotation>
80
      <xs:documentation>A single value in the series of values that together 
81
      form a single crontab entry. The format follows the syntax conventions 
82
      defined by the `Quartz Scheduler`_, as excerpted here under the Apache 2 license:</xs:documentation>
83
      <xs:documentation>.. _Quartz Scheduler: http://www.quartz-scheduler.org/api/2.1.0/org/quartz/CronExpression.html</xs:documentation>
84
      <xs:documentation>.. include:: Types_crontabentry.txt</xs:documentation>
85
        </xs:annotation> <xs:restriction base="xs:token">
86
      <xs:pattern value="([\?\*\d/#,\-a-zA-Z])+"/> </xs:restriction>
87
      </xs:simpleType>
88

  
89
  <!-- CrontabEntrySeconds -->
90
  <xs:simpleType name="CrontabEntrySeconds">
91
    <xs:annotation>
92
      <xs:documentation>A restriction on the seconds field in a single 
93
      Schedule entry, following the syntax conventions defined by the `Quartz
94
      Scheduler`_.</xs:documentation>
95
      <xs:documentation>The wildcard character value is not allowed in this
96
      (seconds) field as this would create an impractical synchronization
97
      schedule</xs:documentation>
98
      <xs:documentation>.. _Quartz Scheduler: http://www.quartz-scheduler.org/api/2.1.0/org/quartz/CronExpression.html</xs:documentation>
99
    </xs:annotation>
100
    <xs:restriction base="xs:token">
101
      <xs:pattern value="[0-5]?\d"/>
102
    </xs:restriction>
103
  </xs:simpleType> 
104

  
105
  <!-- Event Enumeration -->
106
  <xs:simpleType name="Event">
107
    <xs:annotation>
108
      <xs:documentation>The controlled list of events that are logged, which
109
      will include *create*, *update*, *delete*, *read*, *replicate*,
110
      *synchronization_failed* and *replication_failed*
111
      events.</xs:documentation>
112
    </xs:annotation>
113
    <xs:restriction base="xs:string">
114
      <xs:enumeration value="create"/>
115
      <xs:enumeration value="read"/>
116
      <xs:enumeration value="update"/>
117
      <xs:enumeration value="delete"/>
118
      <xs:enumeration value="replicate"/>
119
      <xs:enumeration value="synchronization_failed"/>
120
      <xs:enumeration value="replication_failed"/>
121
    </xs:restriction>
122
  </xs:simpleType>
123

  
124
  <!-- NodeState -->
125
  <xs:simpleType name="NodeState">
126
    <xs:annotation>
127
      <xs:documentation>An indicator of the current node accessibility. Nodes
128
      that are marked *down* are inaccessible for service operations, those
129
      that are *up* are in the normal accessible state, and *unknown*
130
      indicates that the state has not been determined yet.</xs:documentation>
131
    </xs:annotation>
132
    <xs:restriction base="xs:NMTOKEN">
133
      <xs:enumeration value="up"/>
134
      <xs:enumeration value="down"/>
135
      <xs:enumeration value="unknown"/>
136
    </xs:restriction>
137
  </xs:simpleType>
138

  
139
  <!-- NodeType Enumeration -->
140
  <xs:simpleType name="NodeType">
141
    <xs:annotation>
142
      <xs:documentation>The type of this node, which is either *mn* for
143
      Member Nodes, or *cn* for Coordinating Nodes.</xs:documentation>
144
    </xs:annotation>
145
    <xs:restriction base="xs:NMTOKEN">
146
      <xs:enumeration value="mn"/>
147
      <xs:enumeration value="cn"/>
148
      <xs:enumeration value="Monitor"/>
149
    </xs:restriction>
150
  </xs:simpleType>
151

  
152
  <!-- NonEmptyString -->
153
  <xs:simpleType name="NonEmptyString">
154
    <xs:annotation>
155
      <xs:documentation>A derived string type with at least length 1 and it
156
      must contain non-whitespace.</xs:documentation>
157
    </xs:annotation>
158
      <xs:restriction base="xs:string">
159
        <xs:minLength value="1"/>
160
        <xs:pattern value="[\s]*[\S][\s\S]*"/>
161
      </xs:restriction>
162
  </xs:simpleType>
163

  
164
  <!-- ObjectFormatIdentifier -->
165
  <xs:simpleType name="ObjectFormatIdentifier">
166
    <xs:annotation>
167
      <xs:documentation>A string used to identify an instance of
168
      :class:`Types.ObjectFormat` and MUST be unique within an instance of
169
      :class:`Types.ObjectFormatList`. </xs:documentation>
170
    </xs:annotation>
171
    <xs:restriction base="d1:NonEmptyString"></xs:restriction>
172
  </xs:simpleType>
173

  
174
  <!-- NonEmptyString800 -->
175
  <xs:simpleType name="NonEmptyString800">
176
    <xs:annotation>
177
      <xs:documentation> An NonEmptyString800 is a NonEmptyString string with
178
      a maximum length of 800 characters.</xs:documentation>
179
    </xs:annotation>
180
    <xs:restriction base="d1:NonEmptyString">
181
      <xs:maxLength value="800"></xs:maxLength>
182
    </xs:restriction>
183
  </xs:simpleType>
184

  
185
  <!-- NonEmptyNowhitespaceString800 -->
186
  <xs:simpleType name="NonEmptyNoWhitespaceString800">
187
    <xs:annotation>
188
      <xs:documentation>A NonEmptyNoWhitespaceString800 is a NonEmptyString800
189
      string that doesn't allow whitespace characters (space, tab, newline,
190
      carriage return). Unicode whitespace characters outside of the ASCII
191
      character set need to be checked programmatically.</xs:documentation>
192
    </xs:annotation>
193
    <xs:restriction base="d1:NonEmptyString800">
194
      <xs:pattern value="\S+"/>
195
    </xs:restriction>
196
  </xs:simpleType>
197

  
198
  <!-- Permission = permitted action -->
199
  <xs:simpleType name="Permission">
200
    <xs:annotation>
201
      <xs:documentation>A string value indicating the set of actions that can
202
      be performed on a resource as specified in an access policy. The set of
203
      permissions include the ability to read a resource (*read*), modify a
204
      resource (*write*), and to change the set of access control policies for
205
      a resource (*changePermission*). Permission levels are cumulative, in
206
      that write permission implicitly grants read access, and
207
      changePermission permission implicitly grants write access (and
208
      therefore read as well). If a subject is granted multiple permissions,
209
      the highest level of access applies.</xs:documentation>
210
    </xs:annotation>
211
    <xs:restriction base="xs:string">
212
      <xs:enumeration value="read" />
213
      <xs:enumeration value="write" />
214
      <xs:enumeration value="changePermission" />
215
    </xs:restriction>
216
  </xs:simpleType>
217

  
218
  <!-- ReplicationStatus -->
219
  <xs:simpleType name="ReplicationStatus">
220
    <xs:annotation>
221
      <xs:documentation>An enumerated string value indicating the current
222
      state of a replica of an object. When an object identified needs to be
223
      replicated, it is added to the replication task queue and is marked as
224
      *queued*; a CN will pick up that task and request that it be replicated
225
      to a MN and marks that it as *requested*; when a MN finishes replicating
226
      the object, it informs the CN that it is finished and it is marked as
227
      *completed*.</xs:documentation>
228
      <xs:documentation> If an MN is unable to complete replication, the
229
      replication status is marked as *failed*.</xs:documentation>
230
      <xs:documentation>Periodically a CN checks each replica to be sure it is
231
      both available and valid (matching checksum with original), and if it is
232
      either inaccessible or invalid then it marks it as *invalidated*, which
233
      indicates that the object replication needs to be invoked
234
      again.</xs:documentation>
235
      <xs:documentation>The replication process is described in Use Case 09 
236
      (:doc:`/design/UseCases/09_uc`).</xs:documentation>
237
    </xs:annotation>
238
    <xs:restriction base="xs:string">
239
      <xs:enumeration value="queued" />
240
      <xs:enumeration value="requested" />
241
      <xs:enumeration value="completed" />
242
      <xs:enumeration value="failed" />
243
      <xs:enumeration value="invalidated" />
244
    </xs:restriction>
245
  </xs:simpleType>
246

  
247
  <!-- ServiceName -->
248
  <xs:simpleType name="ServiceName">
249
    <xs:annotation>
250
      <xs:documentation>The name of a service that is available on a
251
      Node.</xs:documentation>
252
    </xs:annotation>
253
    <xs:restriction base="d1:NonEmptyString"/>
254
  </xs:simpleType>
255

  
256
  <!-- ServiceVersion -->
257
  <xs:simpleType name="ServiceVersion">
258
    <xs:annotation>
259
      <xs:documentation>The version of a service provided by a Node. Service
260
      versions are expressed as version labels such as "v1", "v2". DataONE
261
      services are released only as major service versions; patches to
262
      services are not indicated in this version label.</xs:documentation>
263
    </xs:annotation>
264
    <xs:restriction base="d1:NonEmptyString"/>
265
  </xs:simpleType>
266

  
267
  <!-- ***************************************
268
          DEFINE REUSABLE COMPLEX  TYPES HERE 
269
          *************************************** -->
270

  
271
  <!-- NOTE THAT ALL SERIALIZEABLE ROOT ELEMENTS FOR MESSAGES SHOULD BE OF A
272
       COMPLEX TYPE -->
273

  
274
  <!-- AccessPolicy -->
275
  <xs:complexType name="AccessPolicy">
276
    <xs:annotation>
277
      <xs:documentation>A set of rules that specifies as a whole the allowable
278
      permissions that a given user, group, or system has for accessing a
279
      resource, including data, metadata, resource map, and service resources.
280
      An access policy consists of a sequence of allow rules that grant
281
      permissions to principals, which can be individual users, groups of
282
      users, symbolic users, or systems and services.</xs:documentation>
283
    </xs:annotation>
284
    <xs:sequence>
285
      <xs:element name="allow" type="d1:AccessRule" minOccurs="1" 
286
        maxOccurs="unbounded" />
287
    </xs:sequence>
288
  </xs:complexType>
289

  
290
  <!-- AccessRule -->
291
  <xs:complexType name="AccessRule">
292
    <xs:annotation>
293
      <xs:documentation>A rule that is used to allow a :term:`subject` to
294
      perform an action (such as read or write) on an object in DataONE. Rules
295
      are tuples (subject, permission) specifying which permissions are
296
      allowed for the subjects(s). If a subject is granted multiple
297
      permissions, the highest level of access applies. The resource on which
298
      the access control rules are being applied is determined by the
299
      containing :term:`SystemMetadata` document, or in the case of methods
300
      such as :func:`CNAuthorization.setAccessPolicy`, by the :term:`pid` in
301
      the method parameters.</xs:documentation>
302
      <xs:documentation>Access control rules are specified by the
303
      :term:`Origin Member Node` when the object is first registered in
304
      DataONE. If no rules are specified at that time, then the object is
305
      deemed to be private and the only user with access to the object (read,
306
      write, or otherwise) is the :term:`Rights Holder`.</xs:documentation>
307
    </xs:annotation>
308
    <xs:sequence>
309
      <xs:element name="subject" type="d1:Subject" 
310
                  minOccurs="1" maxOccurs="unbounded" />
311
      <xs:element name="permission" type="d1:Permission" 
312
                  minOccurs="1" maxOccurs="unbounded" />
313
    </xs:sequence>
314
  </xs:complexType>
315

  
316
  <!-- Checksum -->
317
  <xs:complexType name="Checksum">
318
    <xs:annotation>
319
      <xs:documentation>Represents the value of a computed :term:`checksum`
320
      expressed as a hexadecimal formatted version of the message digest. Note
321
      that these hex values should be treated as case-insensitive strings, in
322
      that leading zeros must be preserved, and digests can use a mixture of
323
      upper and lower case letters to represent the hex values. Comparison
324
      algorithms MUST be able to handle any variant of these representations
325
      (e.g., by performing a case-insensitive string match on hex digests from
326
      the same algorithm).</xs:documentation>
327
    </xs:annotation>
328
    <xs:simpleContent>
329
      <xs:extension base="xs:string">
330
        <xs:attribute name="algorithm" type="d1:ChecksumAlgorithm"
331
            use="required"/>
332
      </xs:extension>
333
    </xs:simpleContent>
334
  </xs:complexType>
335

  
336
  <!-- ChecksumAlgorithmList -->
337
  <xs:complexType name="ChecksumAlgorithmList">
338
    <xs:annotation>
339
      <xs:documentation>Represents a list of :term:`checksum`
340
      algorithms.</xs:documentation>
341
    </xs:annotation>
342
    <xs:sequence>
343
      <xs:element name ="algorithm" type="d1:ChecksumAlgorithm" 
344
                  minOccurs="1" maxOccurs="unbounded"/>
345
    </xs:sequence>
346
  </xs:complexType>
347

  
348
  <!-- Group -->
349
  <xs:complexType name="Group">
350
    <xs:annotation>
351
      <xs:documentation>Group represents metadata about a :term:`Subject` that
352
      represents a collection of other Subjects. Groups provide a convenient
353
      mechanism to express access rules for certain roles that are not
354
      necessarily tied to particular :term:`principals` over
355
      time.</xs:documentation>
356
    </xs:annotation>
357
    <xs:sequence>
358
      <xs:element name="subject" type="d1:Subject" minOccurs="1" maxOccurs="1" >
359
        <xs:annotation>
360
          <xs:documentation>The unique, immutable identifier of the
361
          :term:`group`. Group subjects must not be reused, and so they are
362
          both immutable and can not be deleted from the DataONE
363
          system.</xs:documentation>
364
        </xs:annotation>
365
      </xs:element>
366
      <xs:element name="groupName" type="d1:NonEmptyString" 
367
          minOccurs="1" maxOccurs="1" >
368
          <xs:annotation>
369
            <xs:documentation>The name of the Group.</xs:documentation>
370
          </xs:annotation>
371
      </xs:element>
372
      <xs:element name="hasMember" type="d1:Subject" minOccurs="0"
373
         maxOccurs="unbounded" >
374
          <xs:annotation>
375
            <xs:documentation>A :term:`Subject` that is a member of this
376
            group, expressed using the unique identifier for that
377
            Subject.</xs:documentation>
378
          </xs:annotation>
379
      </xs:element>
380
    <xs:element name="rightsHolder" type="d1:Subject" minOccurs="1" 
381
                maxOccurs="unbounded">
382
      <xs:annotation>
383
        <xs:documentation>Represents the list of owners of this :term:`group`.
384
        All groups are readable by anyone in the DataONE system, but can only
385
        be modified by subjects listed in *rightsHolder* fields. Designation
386
        as a :term:`rightsHolder` allows the subject, or their equivalent
387
        identities, to make changes to the mutable properties of the group,
388
        including its name, membership list and rights holder list. The
389
        subject of the group itself is immutable. </xs:documentation>
390
      </xs:annotation>
391
    </xs:element>
392
      </xs:sequence>
393
  </xs:complexType>
394

  
395
  <!-- Identifier  -->
396
  <xs:complexType name="Identifier">
397
    <xs:annotation>
398
      <xs:documentation>An :term:`identifier` (:term:`PID`) in the DataONE
399
      system that is used to uniquely and globally identify an object.
400
      Identifiers can not be reused once assigned. Identifiers can not be 
401
      deleted from the DataONE system.Identifiers are represented by a Unicode 
402
      string of printable characters, excluding :term:`whitespace`. All 
403
      representations of identifiers must be encoded in 7-bit ASCII or 
404
      UTF-8.</xs:documentation>
405
      <xs:documentation>Identifiers have a maximum length of 800 characters,
406
      and a variety of other properties designed for preservation and
407
      longevity. Some discussion on this is described in the `PID
408
      documentation`_ and in decision `ticket 577`_. </xs:documentation>
409
      <xs:documentation>.. _ticket 577: https://redmine.dataone.org/issues/577
410
      </xs:documentation>
411
      <xs:documentation>.. _PID documentation: http://mule1.dataone.org/ArchitectureDocs-current/design/PIDs.html
412
      </xs:documentation>
413
    </xs:annotation>
414
    <xs:simpleContent>
415
      <xs:extension base="d1:NonEmptyNoWhitespaceString800" />
416
    </xs:simpleContent>
417
  </xs:complexType>
418

  
419
  <!--  Log -->
420
  <xs:complexType name="Log">
421
    <xs:annotation>
422
      <xs:documentation>Represents a collection of :class:`Types.LogEntry`
423
      elements, used to transfer log information between DataONE
424
      components.</xs:documentation>
425
    </xs:annotation>
426
    <xs:complexContent>
427
      <xs:extension base="d1:Slice">
428
        <xs:sequence>
429
          <xs:element name="logEntry" type="d1:LogEntry" minOccurs="0"
430
            maxOccurs="unbounded" />
431
        </xs:sequence>
432
      </xs:extension>
433
    </xs:complexContent>
434
  </xs:complexType>
435

  
436
  <!-- LogEntry -->
437
  <xs:complexType name="LogEntry">
438
    <xs:annotation>
439
      <xs:documentation>A single log entry as reported by a Member Node or
440
      Coordinating Node through the :func:`MNCore.getLogRecords` or
441
      :func:`CNCore.getLogRecords` methods.</xs:documentation>
442
    </xs:annotation>
443
    <xs:sequence>
444
      <xs:element name="entryId" type="d1:NonEmptyString" 
445
          minOccurs="1" maxOccurs="1">
446
        <xs:annotation>
447
          <xs:documentation>A unique identifier for this log entry. The
448
          identifier should be unique for a particular node; This is not drawn
449
          from the same value space as other identifiers in DataONE, and so is
450
          not subjec to the same restrictions.</xs:documentation>
451
        </xs:annotation>
452
      </xs:element>
453
      <xs:element name="identifier" type="d1:Identifier" 
454
          minOccurs="1" maxOccurs="1">
455
        <xs:annotation>
456
          <xs:documentation>The :term:`identifier` of the object that was the
457
          target of the operation which generated this log entry.</xs:documentation>
458
        </xs:annotation>
459
      </xs:element>
460
      <xs:element name="ipAddress" type="xs:string"
461
          minOccurs="1" maxOccurs="1">
462
        <xs:annotation>
463
          <xs:documentation>The IP address, as reported by the service receiving
464
          the request, of the request origin.</xs:documentation>
465
        </xs:annotation>
466
      </xs:element>
467
      <xs:element name="userAgent" type="xs:string"
468
          minOccurs="1" maxOccurs="1">
469
        <xs:annotation>
470
          <xs:documentation>The user agent of the client making the request, as
471
          reported in the User-Agent HTTP header.</xs:documentation>
472
        </xs:annotation>
473
      </xs:element>
474
      <xs:element name="subject" type="d1:Subject"
475
          minOccurs="1" maxOccurs="1">
476
        <xs:annotation>
477
          <xs:documentation>The :term:`Subject` used for making the request.
478
          This may be the DataONE :term:`public` user if the request is not
479
          authenticated, otherwise it will be the *Subject* of the certificate
480
          used for authenticating the request.</xs:documentation>
481
        </xs:annotation>
482
      </xs:element>
483
      <xs:element name="event" type="d1:Event"
484
          minOccurs="1" maxOccurs="1">
485
        <xs:annotation>
486
          <xs:documentation>An entry from the :class:`Types.Event` enumeration
487
          indicating the type of operation that triggered the log message.</xs:documentation>
488
        </xs:annotation>
489
      </xs:element>
490
      <xs:element name="dateLogged" type="xs:dateTime"
491
          minOccurs="1" maxOccurs="1">
492
        <xs:annotation>
493
          <xs:documentation>A :class:`Types.DateTime` time stamp indicating when
494
          the event triggering the log message ocurred. Note that all time
495
          stamps in DataONE are in UTC.</xs:documentation>
496
        </xs:annotation>
497
      </xs:element>
498
      <xs:element name="nodeIdentifier" type="d1:NodeReference"
499
          minOccurs="1" maxOccurs="1">
500
        <xs:annotation>
501
          <xs:documentation>The unique identifier for the node where the log
502
          message was generated.</xs:documentation>
503
        </xs:annotation>
504
      </xs:element>
505
    </xs:sequence>
506
  </xs:complexType>
507

  
508
  <!-- Node -->
509
  <xs:complexType name="Node">
510
    <xs:annotation>
511
      <xs:documentation>A set of values that describe a member or coordinating
512
      node, its Internet location, and the services it supports. Several nodes
513
      may exist on a single physical device or hostname. </xs:documentation>
514
    </xs:annotation>
515
    <xs:sequence>
516
      <xs:element name="identifier" type="d1:NodeReference" minOccurs="1" 
517
                  maxOccurs="1">
518
        <xs:annotation>
519
          <xs:documentation>A unique identifier for the node of the form 
520
          ``urn:node:NODEID`` where NODEID is the node specific identifier. 
521
          This value MUST NOT change for future implementations of the 
522
          same node, whereas the *baseURL* may change in the future. 
523
          </xs:documentation>
524
        </xs:annotation>
525
      </xs:element>
526
      <xs:element name="name" type="d1:NonEmptyString" minOccurs="1" maxOccurs="1" >
527
        <xs:annotation>
528
          <xs:documentation>A human readable name of the Node. This name can
529
          be used as a label in many systems to represent the node, and thus
530
          should be short, but understandable. </xs:documentation>
531
        </xs:annotation>
532
      </xs:element>
533
      <xs:element name="description" type="d1:NonEmptyString" minOccurs="1" 
534
                  maxOccurs="1">
535
        <xs:annotation>
536
          <xs:documentation>Description of a Node, explaining the community it
537
          serves and other relevant information about the node, such as what
538
          content is maintained by this node and any other free style notes.
539
          </xs:documentation>
540
        </xs:annotation>
541
      </xs:element>
542
      <xs:element name="baseURL" type="xs:anyURI" minOccurs="1" maxOccurs="1">        
543
        <xs:annotation>
544
           <xs:documentation>The base URL of the node, indicating the
545
           protocol, fully qualified domain name, and path to the implementing
546
           service, excluding the version of the API. e.g.
547
           ``https://server.example.edu/app/d1/mn`` rather than
548
           ``https://server.example.edu/app/d1/mn/v1``</xs:documentation>
549
        </xs:annotation>                        
550
      </xs:element>
551
      <xs:element name="services" type="d1:Services" minOccurs="0" maxOccurs="1">
552
        <xs:annotation>
553
          <xs:documentation>A list of services that are provided by this node.
554
          Used in node descriptions so that nodes can provide metadata about
555
          each service they implement and support.</xs:documentation>
556
        </xs:annotation>      
557
      </xs:element>            
558
      <xs:element name="synchronization" type="d1:Synchronization" minOccurs="0"
559
        maxOccurs="1">
560
        <xs:annotation>
561
          <xs:documentation>Configuration information for the process by which
562
            content is harvested from Member Nodes to Coordinating Nodes. This
563
            includes the schedule on which harvesting should occur, and metadata
564
            about the last synchronization attempts for the
565
            node.</xs:documentation>
566
        </xs:annotation>
567
      </xs:element>
568
      <xs:element name="nodeReplicationPolicy" type="d1:NodeReplicationPolicy"
569
        minOccurs="0" maxOccurs="1">
570
        <xs:annotation>
571
          <xs:documentation>The replication policy for this node that expresses
572
            constraints on object size, total objects, source nodes, and object
573
            format types. A node may want to restrict replication from only
574
            certain peer nodes, may have file size limits, total allocated size
575
            limits, or may want to focus on being a replica target for
576
            domain-specific object formats.</xs:documentation>
577
        </xs:annotation>
578
      </xs:element>
579
      <xs:element name="ping" type="d1:Ping" minOccurs="0" maxOccurs="1">
580
         <xs:annotation>
581
           <xs:documentation>Stored results from the :func:`MNCore.ping` and
582
           :func:`CNCore.ping` methods.</xs:documentation>
583
         </xs:annotation>
584
      </xs:element>
585
      <xs:element name="subject" type="d1:Subject" minOccurs="0" 
586
                  maxOccurs="unbounded">
587
        <xs:annotation>
588
          <xs:documentation>The :term:`Subject` of this node, which can be
589
          repeated as needed. The *Node.subject* represents the identifier of
590
          the node that would be found in X.509 certificates used to securely
591
          communicate with this node. Thus, it is an :term:`X.509
592
          Distinguished Name` that applies to the host on which the Node is
593
          operating. When (and if) this hostname changes the new subject for
594
          the node would be added to the Node to track the subject that has
595
          been used in various access control rules over time.
596
          </xs:documentation>
597
        </xs:annotation>
598
      </xs:element>
599
      <xs:element name="contactSubject" type="d1:Subject" minOccurs="1" 
600
                  maxOccurs="unbounded">
601
        <xs:annotation>
602
          <xs:documentation>The appropriate person or group to contact
603
          regarding the disposition, management, and status of this Member
604
          Node. The *Node.contactSubject* is an :term:`X.509 Distinguished
605
          Name` for a person or group that can be used to look up current
606
          contact details (e.g., name, email address) for the contact in the
607
          DataONE Identity service. DataONE uses the *contactSubject* to
608
          provide notices of interest to DataONE nodes, including information
609
          such as policy changes, maintenance updates, node outage
610
          notifications, among other information useful for administering a
611
          node. Each node that is registered with DataONE must provide at
612
          least one *contactSubject* that has been :term:`verified` with
613
          DataONE. </xs:documentation>
614
        </xs:annotation>
615
      </xs:element>
616
    </xs:sequence>
617
    <xs:attribute name="replicate" use="required" type="xs:boolean">
618
      <xs:annotation>
619
        <xs:documentation>Set to *true* if the node is willing to be a
620
        :term:`replication target`, otherwise *false*.</xs:documentation>
621
      </xs:annotation>
622
    </xs:attribute>
623
    <xs:attribute name="synchronize" use="required" type="xs:boolean">
624
      <xs:annotation>
625
        <xs:documentation>Set to *true* if the node should be
626
        :term:`synchronized` by a Coordinating Node, otherwise
627
        *false*.</xs:documentation>
628
     </xs:annotation>
629
    </xs:attribute>
630
    <xs:attribute name="type" use="required" type="d1:NodeType">
631
      <xs:annotation>
632
        <xs:documentation>The type of the node (Coordinating, Member), chosen 
633
        from the :class:`Types.NodeType` type.</xs:documentation>
634
      </xs:annotation>
635
    </xs:attribute>
636
    <xs:attribute name="state" use="required" type="d1:NodeState" >
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff