GSAS: GENIObject.xsd

File GENIObject.xsd, 9.2 KB (added by hmussman@bbn.com, 6 years ago)
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<xs:schema xmlns:geni="http://geni.net/schema" targetNamespace="http://geni.net/schema"
3    xmlns="http://geni.net/schema" xmlns:xs="http://www.w3.org/2001/XMLSchema"
4    elementFormDefault="qualified" version="1.0">
5    <xs:import namespace="http://www.w3.org/XML/1998/namespace"
6        schemaLocation="http://www.w3.org/2001/03/xml.xsd"/>
7    <xs:element name="Project" type="Project_Type"/>
8    <xs:element name="Experiment" type="Experiment_Type"/>
9    <xs:element name="Step" type="StepType_Type"/>
10    <xs:element name="Artifact" type="Artifact_Type"/>
11    <xs:element name="Object" type="Archive_Type"/>
12    <xs:complexType name="Project_Type">
13        <xs:complexContent>
14            <xs:extension base="BaseDescription_Type">
15                <xs:sequence>
16                    <xs:element name="PrincipalInvestigator" type="Entity_Type"/>
17                    <xs:element minOccurs="0" name="Experiments" type="Experiments_Type"/>
18                </xs:sequence>
19            </xs:extension>
20        </xs:complexContent>
21    </xs:complexType>
22    <xs:complexType name="Experiment_Type">
23        <xs:complexContent>
24            <xs:extension base="BaseDescription_Type">
25                <xs:sequence>
26                    <xs:element name="Experimenter" type="Entity_Type" maxOccurs="unbounded"/>
27                    <xs:element minOccurs="0" name="Steps" type="Steps_Type"/>
28                </xs:sequence>
29            </xs:extension>
30        </xs:complexContent>
31    </xs:complexType>
32    <xs:complexType name="StepType_Type">
33        <xs:complexContent>
34            <xs:extension base="BaseDescription_Type">
35                <xs:sequence>
36                    <xs:element name="Primary" type="StepControlledVocabulary_Type"/>
37                    <xs:element maxOccurs="unbounded" minOccurs="0" name="Secondary"
38                        type="xs:string"/>
39
40                    <xs:element minOccurs="0" name="Resources" type="Resources_Type"/>
41                    <xs:element minOccurs="0" name="Artifacts" type="Artifacts_Type"/>
42                </xs:sequence>
43            </xs:extension>
44        </xs:complexContent>
45    </xs:complexType>
46    <xs:complexType name="Artifact_Type">
47        <xs:sequence>
48            <xs:element name="Name" type="xs:string"/>
49            <xs:element name="Type" type="ArtifactType_Type"/>
50            <xs:element name="Interpretation" type="ArtifactInterpretation_Type"/>
51            <xs:element minOccurs="0" name="Attribution" type="ArtifactAttribution_Type"/>
52        </xs:sequence>
53    </xs:complexType>
54    <xs:complexType name="Archive_Type">
55        <xs:sequence>
56            <xs:element name="Handle" type="Handle_Type"/>
57            <xs:element name="DataLastArchived" type="xs:dateTime"/>
58            <xs:element name="Public" type="xs:boolean"/>
59            <xs:element name="Creator" type="Entity_Type"/>
60            <xs:element name="Title" type="Title_Type"/>
61            <xs:element name="Publisher" type="Entity_Type"/>
62            <xs:element name="PublicationYear" type="xs:gYear"/>
63            <xs:element name="Subject" type="LanguageString_Type"/>
64            <xs:element name="Description" type="LanguageString_Type"/>
65            <xs:choice>
66                <xs:element ref="Project"/>
67                <xs:element ref="Experiment"/>
68                <xs:element ref="Step"/>
69                <xs:element ref="Artifact"/>
70            </xs:choice>
71        </xs:sequence>
72    </xs:complexType>
73    <xs:complexType name="GENIResource_Type">
74        <xs:sequence>
75            <xs:element name="ResourceID" type="xs:string"/>
76            <xs:element name="ResourceType" type="ResourceControlledVocabulary_Type"/>
77        </xs:sequence>
78    </xs:complexType>
79    <xs:complexType name="ArtifactType_Type">
80        <xs:sequence>
81            <xs:element name="Primary" type="ArtifactControlledVocabulary_Type"/>
82            <xs:element maxOccurs="unbounded" minOccurs="0" name="Secondary" type="xs:string"/>
83            <xs:element minOccurs="0" name="Version" type="xs:string"/>
84        </xs:sequence>
85    </xs:complexType>
86    <xs:complexType name="ArtifactInterpretation_Type">
87        <xs:sequence>
88            <xs:element name="Description" type="xs:string"/>
89            <xs:element minOccurs="0" name="Version" type="xs:string"/>
90            <xs:element name="Executable" type="xs:anyURI" maxOccurs="unbounded" minOccurs="0"/>
91        </xs:sequence>
92    </xs:complexType>
93    <xs:complexType name="ArtifactAttribution_Type">
94        <xs:sequence>
95            <xs:element name="Project" type="Title_Type" minOccurs="0"/>
96            <xs:element name="Entity" type="Entity_Type" minOccurs="0" maxOccurs="unbounded"/>
97            <xs:element name="SupportReceived" type="xs:dateTime" minOccurs="0"/>
98        </xs:sequence>
99    </xs:complexType>
100    <xs:complexType name="Experimenter_Type">
101        <xs:sequence>
102            <xs:element name="Experimenter" type="Entity_Type" maxOccurs="unbounded"/>
103            <xs:element name="Duration" type="DateTimeInterval_Type"/>
104        </xs:sequence>
105    </xs:complexType>
106
107    <xs:simpleType name="StepControlledVocabulary_Type">
108        <xs:restriction base="xs:string">
109            <xs:enumeration value="VocabularyEntry1"/>
110            <xs:enumeration value="VocabularyEntry2"/>
111        </xs:restriction>
112    </xs:simpleType>
113
114    <xs:simpleType name="ResourceControlledVocabulary_Type">
115        <xs:restriction base="xs:string">
116            <xs:enumeration value="Slice"/>
117        </xs:restriction>
118    </xs:simpleType>
119
120    <xs:simpleType name="ArtifactControlledVocabulary_Type">
121        <xs:restriction base="xs:string">
122            <xs:enumeration value="LogFile"/>
123        </xs:restriction>
124    </xs:simpleType>
125
126    <xs:complexType name="BaseDescription_Type" abstract="true">
127        <xs:sequence>
128            <xs:choice>
129                <xs:sequence>
130                    <xs:element name="Identifier" type="xs:string"/>
131                    <xs:element minOccurs="0" name="Title" type="Title_Type"/>
132                </xs:sequence>
133                <xs:element name="Title" type="Title_Type"/>
134            </xs:choice>
135            <xs:element name="Duration" type="DateTimeInterval_Type"/>
136        </xs:sequence>
137    </xs:complexType>
138    <xs:complexType name="Title_Type">
139        <xs:sequence>
140            <xs:element name="Title" type="LanguageString_Type"/>
141            <xs:element minOccurs="0" name="Keywords">
142                <xs:complexType>
143                    <xs:sequence>
144                        <xs:element name="Keyword" type="LanguageString_Type"/>
145                    </xs:sequence>
146                </xs:complexType>
147            </xs:element>
148            <xs:element minOccurs="0" name="Abstract" type="LanguageString_Type"/>
149            <xs:element minOccurs="0" name="Notes" type="LanguageString_Type"/>
150        </xs:sequence>
151    </xs:complexType>
152    <xs:complexType name="DateTimeInterval_Type">
153        <xs:sequence>
154            <xs:element name="Start" type="xs:dateTime"/>
155            <xs:element name="End" type="xs:dateTime"/>
156        </xs:sequence>
157    </xs:complexType>
158    <xs:complexType name="Individual_Type">
159        <xs:sequence>
160            <xs:element name="FirstName" type="LanguageString_Type"/>
161            <xs:element name="MiddleName" type="LanguageString_Type" minOccurs="0"/>
162            <xs:element name="LastName" type="LanguageString_Type"/>
163        </xs:sequence>
164    </xs:complexType>
165    <xs:complexType name="Organization_Type">
166        <xs:sequence>
167            <xs:element name="Name" type="LanguageString_Type"/>
168            <xs:element name="Address" type="LanguageString_Type" minOccurs="0"/>
169            <xs:element name="PhoneNumber" type="xs:string" minOccurs="0"/>
170            <xs:element name="PointOfContact" type="Individual_Type" minOccurs="0"/>
171            <xs:element name="Reference" type="xs:anyURI" minOccurs="0"/>
172        </xs:sequence>
173    </xs:complexType>
174    <xs:complexType name="LanguageString_Type">
175        <xs:simpleContent>
176            <xs:extension base="xs:string">
177                <xs:attribute ref="xml:lang" use="optional"/>
178            </xs:extension>
179        </xs:simpleContent>
180    </xs:complexType>
181    <xs:complexType name="Entity_Type">
182        <xs:choice>
183            <xs:element name="Person" type="Individual_Type"/>
184            <xs:element name="Organization" type="Organization_Type"/>
185        </xs:choice>
186    </xs:complexType>
187    <xs:simpleType name="Handle_Type">
188        <xs:restriction base="xs:string">
189            <xs:pattern value="[^/]+/.{1,1024}"/>
190        </xs:restriction>
191    </xs:simpleType>
192    <xs:complexType name="Experiments_Type">
193        <xs:sequence>
194            <xs:element maxOccurs="unbounded" ref="Experiment"/>
195        </xs:sequence>
196    </xs:complexType>
197    <xs:complexType name="Steps_Type">
198        <xs:sequence>
199            <xs:element maxOccurs="unbounded" ref="Step"/>
200        </xs:sequence>
201    </xs:complexType>
202    <xs:complexType name="Artifacts_Type">
203        <xs:sequence>
204            <xs:element maxOccurs="unbounded" ref="Artifact"/>
205        </xs:sequence>
206    </xs:complexType>
207    <xs:complexType name="Resources_Type">
208        <xs:sequence>
209            <xs:element maxOccurs="unbounded" name="Resource" type="GENIResource_Type"/>
210        </xs:sequence>
211    </xs:complexType>
212</xs:schema>