f577ef846f913fefd55340fc889aaf5ae568fe67
[cdmlib.git] / cdmlib-io / src / main / resources / schema / cdm / agent.xsd
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xs:schema elementFormDefault="qualified"
3 attributeFormDefault="unqualified" version="1.0"
4 targetNamespace="http://etaxonomy.eu/cdm/model/agent/1.0" xmlns:agent="http://etaxonomy.eu/cdm/model/agent/1.0"
5 xmlns:common="http://etaxonomy.eu/cdm/model/common/1.0" xmlns:location="http://etaxonomy.eu/cdm/model/location/1.0"
6 xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:media="http://etaxonomy.eu/cdm/model/media/1.0"
7 xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
8 jxb:extensionBindingPrefixes="xjc" jxb:version="2.1"
9 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10 xsi:schemaLocation="http://www.w3.org/XML/1998/namespace
11 http://www.w3.org/2005/08/xml.xsd
12 http://www.w3.org/2001/XMLSchema
13 http://www.w3.org/2001/XMLSchema.xsd">
14 <xs:import namespace="http://etaxonomy.eu/cdm/model/common/1.0"
15 schemaLocation="common.xsd" />
16 <xs:import namespace="http://etaxonomy.eu/cdm/model/media/1.0"
17 schemaLocation="media.xsd" />
18 <xs:import namespace="http://etaxonomy.eu/cdm/model/location/1.0"
19 schemaLocation="location.xsd" />
20 <xs:annotation>
21 <xs:appinfo>
22 <jxb:schemaBindings>
23 <jxb:package name="eu.etaxonomy.cdm.model.agent" />
24 </jxb:schemaBindings>
25 </xs:appinfo>
26 </xs:annotation>
27
28 <xs:element name="Address" type="agent:Address" />
29
30 <xs:element name="Contact" type="agent:Contact" />
31
32 <xs:element name="Institution" type="agent:Institution" />
33
34 <xs:element name="InstitutionType" type="agent:InstitutionType" />
35
36 <xs:element name="InstitutionalMembership" type="agent:InstitutionalMembership" />
37
38 <xs:element name="Person" type="agent:Person"/>
39
40 <xs:element name="Team" type="agent:Team" />
41
42
43 <xs:complexType name="Address">
44 <xs:complexContent>
45 <xs:extension base="common:VersionableEntity">
46 <xs:sequence>
47 <xs:element name="POBox" type="xs:string" minOccurs="0"/>
48 <xs:element name="Street" type="xs:string" minOccurs="0"/>
49 <xs:element name="Postcode" type="xs:string" minOccurs="0"/>
50 <xs:element name="Locality" type="xs:string"/>
51 <xs:element name="Region" type="xs:string" minOccurs="0"/>
52 <xs:element name="Country" type="xs:IDREF" minOccurs="0"/>
53 <xs:element name="Location" type="location:Point" minOccurs="0"/>
54 </xs:sequence>
55 </xs:extension>
56 </xs:complexContent>
57 </xs:complexType>
58
59 <xs:complexType name="Person">
60 <xs:complexContent>
61 <xs:extension base="agent:TeamOrPersonBase">
62 <xs:sequence>
63 <xs:element name="Prefix" type="xs:string" minOccurs="0"/>
64 <xs:element name="FirstName" type="xs:string" minOccurs="0"/>
65 <xs:element name="LastName" type="xs:string" minOccurs="0"/>
66 <xs:element name="Suffix" type="xs:string" minOccurs="0"/>
67 <xs:element name="Lifespan" type="common:TimePeriod" minOccurs="0"/>
68 <xs:element name="InstitutionalMemberships" minOccurs="0">
69 <xs:complexType>
70 <xs:sequence>
71 <xs:element ref="agent:InstitutionalMembership" minOccurs="0" maxOccurs="unbounded"/>
72 </xs:sequence>
73 </xs:complexType>
74 </xs:element>
75 <xs:element name="Keywords" minOccurs="0">
76 <xs:complexType>
77 <xs:sequence>
78 <xs:element name="Keyword" type="xs:IDREF" minOccurs="0" maxOccurs="unbounded"/>
79 </xs:sequence>
80 </xs:complexType>
81 </xs:element>
82 </xs:sequence>
83 </xs:extension>
84 </xs:complexContent>
85 </xs:complexType>
86
87
88
89 <xs:complexType name="AgentBase" abstract="true">
90 <xs:complexContent>
91 <xs:extension base="media:IdentifiableMediaEntity">
92 <xs:sequence>
93 <xs:element name="Contact" type="agent:Contact"
94 minOccurs="0" />
95 </xs:sequence>
96 </xs:extension>
97 </xs:complexContent>
98 </xs:complexType>
99
100 <xs:complexType name="InstitutionalMembership">
101 <xs:complexContent>
102 <xs:extension base="common:VersionableEntity">
103 <xs:sequence>
104 <xs:element name="Period" type="common:TimePeriod"
105 minOccurs="0" />
106 <xs:element name="Department" type="xs:string"
107 minOccurs="0" />
108 <xs:element name="Role" type="xs:string" minOccurs="0" />
109 <xs:element name="Institution" type="xs:IDREF" />
110 <xs:element name="Person" type="xs:IDREF" />
111 </xs:sequence>
112 </xs:extension>
113 </xs:complexContent>
114 </xs:complexType>
115
116 <xs:complexType name="Institution">
117 <xs:complexContent>
118 <xs:extension base="agent:AgentBase">
119 <xs:sequence>
120 <xs:element name="Code" type="xs:string" minOccurs="0" />
121 <xs:element name="Name" type="xs:string" minOccurs="0" />
122 <xs:element name="Types" minOccurs="0">
123 <xs:complexType>
124 <xs:sequence>
125 <xs:element name="Type" type="xs:IDREF" minOccurs="0"
126 maxOccurs="unbounded" />
127 </xs:sequence>
128 </xs:complexType>
129 </xs:element>
130 <xs:element name="IsPartOf" type="xs:IDREF" minOccurs="0" />
131 </xs:sequence>
132 </xs:extension>
133 </xs:complexContent>
134 </xs:complexType>
135
136 <xs:complexType name="InstitutionType">
137 <xs:complexContent>
138 <xs:extension base="common:DefinedTermBase">
139 <xs:sequence />
140 </xs:extension>
141 </xs:complexContent>
142 </xs:complexType>
143
144 <xs:complexType name="Contact">
145 <xs:sequence>
146 <xs:element name="EmailAddresses" minOccurs="0">
147 <xs:complexType>
148 <xs:sequence>
149 <xs:element name="EmailAddress" minOccurs="0"
150 maxOccurs="unbounded">
151 <xs:simpleType>
152 <xs:restriction base="xs:string">
153 <xs:pattern
154 value="[A-Za-z0-9!#-'\*\+\-/=\?\^_`\{-~]+(\.[A-Za-z0-9!#-'\*\+\-/=\?\^_`\{-~]+)*@[A-Za-z0-9!#-'\*\+\-/=\?\^_`\{-~]+(\.[A-Za-z0-9!#-'\*\+\-/=\?\^_`\{-~]+)*" />
155 </xs:restriction>
156 </xs:simpleType>
157 </xs:element>
158 </xs:sequence>
159 </xs:complexType>
160 </xs:element>
161 <xs:element name="URLs" minOccurs="0">
162 <xs:complexType>
163 <xs:sequence>
164 <xs:element name="URL" type="xs:anyURI" minOccurs="0"
165 maxOccurs="unbounded" />
166 </xs:sequence>
167 </xs:complexType>
168 </xs:element>
169 <xs:element name="PhoneNumbers" minOccurs="0">
170 <xs:complexType>
171 <xs:sequence>
172 <xs:element name="PhoneNumber" type="xs:string"
173 minOccurs="0" maxOccurs="unbounded" />
174 </xs:sequence>
175 </xs:complexType>
176 </xs:element>
177 <xs:element name="FaxNumbers" minOccurs="0">
178 <xs:complexType>
179 <xs:sequence>
180 <xs:element name="FaxNumber" type="xs:string"
181 minOccurs="0" maxOccurs="unbounded" />
182 </xs:sequence>
183 </xs:complexType>
184 </xs:element>
185 <xs:element name="Addresses" minOccurs="0">
186 <xs:complexType>
187 <xs:sequence>
188 <xs:element ref="agent:Address" minOccurs="0"
189 maxOccurs="unbounded" />
190 </xs:sequence>
191 </xs:complexType>
192 </xs:element>
193 </xs:sequence>
194 </xs:complexType>
195
196 <xs:complexType name="TeamOrPersonBase" abstract="true">
197 <xs:complexContent>
198 <xs:extension base="agent:AgentBase">
199 <xs:sequence>
200 <xs:element name="NomenclaturalTitle" type="xs:string" minOccurs="0"/>
201 </xs:sequence>
202 </xs:extension>
203 </xs:complexContent>
204 </xs:complexType>
205
206 <xs:complexType name="Team">
207 <xs:complexContent>
208 <xs:extension base="agent:TeamOrPersonBase">
209 <xs:sequence>
210 <xs:element name="ProtectedNomenclaturalTitleCache"
211 type="xs:boolean" />
212 <xs:element name="TeamMembers" minOccurs="0">
213 <xs:complexType>
214 <xs:sequence>
215 <xs:element name="TeamMember" type="xs:IDREF"
216 minOccurs="0" maxOccurs="unbounded" />
217 </xs:sequence>
218 </xs:complexType>
219 </xs:element>
220 </xs:sequence>
221 </xs:extension>
222 </xs:complexContent>
223 </xs:complexType>
224 </xs:schema>
225