netKarma/GEC14_report: opm.1_1.xsd

File opm.1_1.xsd, 14.0 KB (added by scjensen@umail.iu.edu, 12 years ago)

extended OPM schema required by the MDOD schema

Line 
1<?xml version="1.0" encoding="UTF-8"?>
2
3<!-- Authors: Paul Groth and Luc Moreau -->
4
5
6<xs:schema targetNamespace="http://openprovenance.org/model/v1.1.a"
7        xmlns:xs="http://www.w3.org/2001/XMLSchema"
8        xmlns:opm="http://openprovenance.org/model/v1.1.a"
9        xmlns:opmExt="http://www.dataandsearch.org/karma/query/opmExt/2012/03/"
10        xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
11        elementFormDefault="qualified"
12        attributeFormDefault="unqualified"
13        jxb:version="2.0">
14
15        <xs:import namespace="http://www.dataandsearch.org/karma/query/opmExt/2012/03/"
16                schemaLocation="opm.1_1.ext.xsd" />
17
18        <xs:element name="opmGraph" type="opm:OPMGraph">
19                <xs:annotation>
20                        <xs:documentation>A set of assertions about the provenance of things
21                        </xs:documentation>
22                </xs:annotation>
23        </xs:element>
24
25        <xs:complexType name="OPMGraph">
26                <xs:annotation>
27                        <xs:appinfo>
28                                <jxb:class>
29                                        <jxb:javadoc>
30           <![CDATA[ Java class for OPMGraph complex type. See <A href="http://twiki.ipaw.info/bin/view/Challenge/OPM1-01Review">OPMGraph</A>.]]>
31                                        </jxb:javadoc>
32                                </jxb:class>
33                        </xs:appinfo>
34                </xs:annotation>
35                <xs:sequence>
36                        <xs:element name="accounts" type="opm:Accounts" minOccurs="0" />
37                        <xs:element name="processes" type="opm:Processes"
38                                minOccurs="0" />
39                        <xs:element name="artifacts" type="opm:Artifacts"
40                                minOccurs="0" />
41                        <xs:element name="agents" type="opm:Agents" minOccurs="0" />
42                        <xs:element name="causalDependencies" type="opm:CausalDependencies"
43                                minOccurs="0" />
44                        <xs:element name="annotations" type="opm:Annotations"
45                                minOccurs="0" />
46                        <xs:element ref="opm:annotation" minOccurs="0" maxOccurs="unbounded" />
47                </xs:sequence>
48                <xs:attribute name="id" type="xs:ID" />
49        </xs:complexType>
50
51        <xs:complexType name="OPMGraphRef">
52                <xs:attribute name="ref" type="xs:IDREF" />
53        </xs:complexType>
54        <xs:complexType name="ProcessRef">
55                <xs:attribute name="ref" type="xs:IDREF" />
56        </xs:complexType>
57        <xs:complexType name="ArtifactRef">
58                <xs:attribute name="ref" type="xs:IDREF" />
59        </xs:complexType>
60        <xs:complexType name="AgentRef">
61                <xs:attribute name="ref" type="xs:IDREF" />
62        </xs:complexType>
63        <xs:complexType name="AccountRef">
64                <xs:attribute name="ref" type="xs:IDREF" />
65        </xs:complexType>
66        <xs:complexType name="RoleRef">
67                <xs:attribute name="ref" type="xs:IDREF" />
68        </xs:complexType>
69        <xs:complexType name="CausalDependencyRef">
70                <xs:attribute name="ref" type="xs:IDREF" />
71        </xs:complexType>
72        <xs:complexType name="AnnotationRef">
73                <xs:attribute name="ref" type="xs:IDREF" />
74        </xs:complexType>
75
76
77        <xs:complexType name="Account">
78                <xs:sequence>
79                        <xs:element ref="opm:annotation" minOccurs="0" maxOccurs="unbounded" />
80                </xs:sequence>
81                <xs:attribute name="id" type="xs:ID" />
82        </xs:complexType>
83
84        <xs:complexType name="Role">
85                <xs:sequence>
86                        <xs:element ref="opm:annotation" minOccurs="0" maxOccurs="unbounded" />
87                </xs:sequence>
88                <xs:attribute name="value" type="xs:string" />
89                <xs:attribute name="id" type="xs:ID" />
90        </xs:complexType>
91
92
93
94        <xs:complexType name="Annotation">
95                <xs:complexContent>
96                        <xs:extension base="opm:EmbeddedAnnotation">
97                                <xs:sequence>
98                                        <xs:choice minOccurs="0" maxOccurs="1">
99                                                <xs:element name="externalSubject" type="xs:anyURI" />
100                                                <xs:element name="localSubject" type="xs:IDREF" />
101                                        </xs:choice>
102                                </xs:sequence>
103                        </xs:extension>
104                </xs:complexContent>
105        </xs:complexType>
106
107        <xs:complexType name="EmbeddedAnnotation">
108                <xs:sequence>
109                        <xs:element name="property" type="opm:Property" minOccurs="1"
110                                maxOccurs="unbounded" />
111                        <xs:element name="account" type="opm:AccountRef"
112                                minOccurs="0" maxOccurs="unbounded" />
113                        <xs:element ref="opm:annotation" minOccurs="0" maxOccurs="unbounded" />
114                </xs:sequence>
115                <xs:attribute name="id" type="xs:ID" />
116        </xs:complexType>
117
118
119        <xs:complexType name="Property">
120                <xs:sequence>
121                        <xs:element name="value" type="xs:anyType" />
122                </xs:sequence>
123                <xs:attribute name="uri" type="xs:anyURI" />
124        </xs:complexType>
125
126
127        <xs:element name="annotation" type="opm:EmbeddedAnnotation" />
128
129        <xs:complexType name="Process">
130                <xs:sequence>
131                        <xs:element name="account" minOccurs="0" maxOccurs="unbounded"
132                                type="opm:AccountRef" />
133                        <xs:element ref="opm:annotation" minOccurs="0" maxOccurs="unbounded" />
134                </xs:sequence>
135                <xs:attribute name="id" type="xs:ID" />
136        </xs:complexType>
137
138
139        <xs:complexType name="Artifact">
140                <xs:sequence>
141                        <xs:element name="account" minOccurs="0" maxOccurs="unbounded"
142                                type="opm:AccountRef" />
143                        <xs:element ref="opm:annotation" minOccurs="0" maxOccurs="unbounded" />
144                </xs:sequence>
145                <xs:attribute name="id" type="xs:ID" />
146        </xs:complexType>
147
148
149        <xs:complexType name="Agent">
150                <xs:sequence>
151                        <xs:element name="account" minOccurs="0" maxOccurs="unbounded"
152                                type="opm:AccountRef" />
153                        <xs:element ref="opm:annotation" minOccurs="0" maxOccurs="unbounded" />
154                </xs:sequence>
155                <xs:attribute name="id" type="xs:ID" />
156        </xs:complexType>
157
158
159        <xs:complexType name="Used">
160                <xs:sequence>
161                        <xs:element name="effect" type="opm:ProcessRef" />
162                        <xs:element name="role" type="opm:Role" />
163                        <xs:element name="cause" type="opm:ArtifactRef" />
164                        <xs:element name="account" minOccurs="0" maxOccurs="unbounded"
165                                type="opm:AccountRef" />
166                        <xs:element name="time" type="opm:OTime" minOccurs="0" />
167                        <xs:element ref="opm:annotation" minOccurs="0" maxOccurs="unbounded" />
168                </xs:sequence>
169                <xs:attribute name="id" type="xs:ID" />
170        </xs:complexType>
171
172        <xs:complexType name="WasGeneratedBy">
173                <xs:sequence>
174                        <xs:element name="effect" type="opm:ArtifactRef" />
175                        <xs:element name="role" type="opm:Role" />
176                        <xs:element name="cause" type="opm:ProcessRef" />
177                        <xs:element name="account" minOccurs="0" maxOccurs="unbounded"
178                                type="opm:AccountRef" />
179                        <xs:element name="time" type="opm:OTime" minOccurs="0" />
180                        <xs:element ref="opm:annotation" minOccurs="0" maxOccurs="unbounded" />
181                </xs:sequence>
182                <xs:attribute name="id" type="xs:ID" />
183        </xs:complexType>
184
185        <xs:complexType name="WasControlledBy">
186                <xs:sequence>
187                        <xs:element name="effect" type="opm:ProcessRef" />
188                        <xs:element name="role" type="opm:Role" />
189                        <xs:element name="cause" type="opm:AgentRef" />
190                        <xs:element name="account" minOccurs="0" maxOccurs="unbounded"
191                                type="opm:AccountRef" />
192                        <xs:element name="startTime" type="opm:OTime" minOccurs="0" />
193                        <xs:element name="endTime" type="opm:OTime" minOccurs="0" />
194                        <xs:element ref="opm:annotation" minOccurs="0" maxOccurs="unbounded" />
195                </xs:sequence>
196                <xs:attribute name="id" type="xs:ID" />
197        </xs:complexType>
198
199        <xs:complexType name="WasDerivedFrom">
200                <xs:sequence>
201                        <xs:element name="effect" type="opm:ArtifactRef" />
202                        <xs:element name="cause" type="opm:ArtifactRef" />
203                        <xs:element name="account" minOccurs="0" maxOccurs="unbounded"
204                                type="opm:AccountRef" />
205                        <xs:element name="time" type="opm:OTime" minOccurs="0" />
206                        <xs:element ref="opm:annotation" minOccurs="0" maxOccurs="unbounded" />
207                </xs:sequence>
208                <xs:attribute name="id" type="xs:ID" />
209        </xs:complexType>
210
211        <xs:complexType name="WasTriggeredBy">
212                <xs:sequence>
213                        <xs:element name="effect" type="opm:ProcessRef" />
214                        <xs:element name="cause" type="opm:ProcessRef" />
215                        <xs:element name="account" minOccurs="0" maxOccurs="unbounded"
216                                type="opm:AccountRef" />
217                        <xs:element name="time" type="opm:OTime" minOccurs="0" />
218                        <xs:element ref="opm:annotation" minOccurs="0" maxOccurs="unbounded" />
219                </xs:sequence>
220                <xs:attribute name="id" type="xs:ID" />
221        </xs:complexType>
222
223
224        <xs:complexType name="UsedStar">
225                <xs:sequence>
226                        <xs:element name="effect" type="opm:ProcessRef" />
227                        <xs:element name="cause" type="opm:ArtifactRef" />
228                        <xs:element name="account" minOccurs="0" maxOccurs="unbounded"
229                                type="opm:AccountRef" />
230                        <xs:element ref="opm:annotation" minOccurs="0" maxOccurs="unbounded" />
231                </xs:sequence>
232                <xs:attribute name="id" type="xs:ID" />
233        </xs:complexType>
234
235        <xs:complexType name="WasGeneratedByStar">
236                <xs:sequence>
237                        <xs:element name="effect" type="opm:ArtifactRef" />
238                        <xs:element name="cause" type="opm:ProcessRef" />
239                        <xs:element name="account" minOccurs="0" maxOccurs="unbounded"
240                                type="opm:AccountRef" />
241                        <xs:element ref="opm:annotation" minOccurs="0" maxOccurs="unbounded" />
242                </xs:sequence>
243                <xs:attribute name="id" type="xs:ID" />
244        </xs:complexType>
245
246        <xs:complexType name="WasDerivedFromStar">
247                <xs:sequence>
248                        <xs:element name="effect" type="opm:ArtifactRef" />
249                        <xs:element name="cause" type="opm:ArtifactRef" />
250                        <xs:element name="account" minOccurs="0" maxOccurs="unbounded"
251                                type="opm:AccountRef" />
252                        <xs:element ref="opm:annotation" minOccurs="0" maxOccurs="unbounded" />
253                </xs:sequence>
254                <xs:attribute name="id" type="xs:ID" />
255        </xs:complexType>
256
257        <xs:complexType name="WasTriggeredByStar">
258                <xs:sequence>
259                        <xs:element name="effect" type="opm:ProcessRef" />
260                        <xs:element name="cause" type="opm:ProcessRef" />
261                        <xs:element name="account" minOccurs="0" maxOccurs="unbounded"
262                                type="opm:AccountRef" />
263                        <xs:element ref="opm:annotation" minOccurs="0" maxOccurs="unbounded" />
264                </xs:sequence>
265                <xs:attribute name="id" type="xs:ID" />
266        </xs:complexType>
267
268        <xs:complexType name="CausalDependencies">
269                <xs:sequence>
270                        <xs:choice minOccurs="0" maxOccurs="unbounded">
271                                <xs:element name="used" type="opm:Used" />
272                                <xs:element name="wasGeneratedBy" type="opm:WasGeneratedBy" />
273                                <xs:element name="wasTriggeredBy" type="opm:WasTriggeredBy" />
274                                <xs:element name="wasDerivedFrom" type="opm:WasDerivedFrom" />
275                                <xs:element name="wasControlledBy" type="opm:WasControlledBy" />
276                                <xs:element name="used_" type="opm:UsedStar" />
277                                <xs:element name="wasGeneratedBy_" type="opm:WasGeneratedByStar" />
278                                <xs:element name="wasTriggeredBy_" type="opm:WasTriggeredByStar" />
279                                <xs:element name="wasDerivedFrom_" type="opm:WasDerivedFromStar" />
280                               
281                                <!-- OPM CausalDependencies extension -->
282                                <xs:element name="wasExecutedOn" type="opmExt:WasExecutedOn" />
283                                <xs:element name="wasConnectedTo" type="opmExt:WasConnectedTo" />
284                                <xs:element name="wasExecutedOn_" type="opmExt:WasExecutedOnStar" />
285                                <xs:element name="wasConnectedTo_" type="opmExt:WasConnectedToStar" />                         
286                               
287                        </xs:choice>
288                </xs:sequence>
289        </xs:complexType>
290
291        <xs:complexType name="Artifacts">
292                <xs:sequence>
293                        <xs:element name="artifact" type="opm:Artifact" minOccurs="0"
294                                maxOccurs="unbounded" />
295                </xs:sequence>
296        </xs:complexType>
297
298
299        <xs:complexType name="Accounts">
300                <xs:sequence>
301                        <xs:element name="account" type="opm:Account" minOccurs="0"
302                                maxOccurs="unbounded" />
303                        <xs:element name="overlaps" type="opm:Overlaps" minOccurs="0"
304                                maxOccurs="unbounded" />
305                </xs:sequence>
306        </xs:complexType>
307
308        <xs:complexType name="Overlaps">
309                <xs:sequence>
310                        <xs:element name="account" type="opm:AccountRef"
311                                minOccurs="2" maxOccurs="2" />
312                </xs:sequence>
313        </xs:complexType>
314
315
316        <xs:complexType name="Processes">
317                <xs:sequence>
318                        <xs:element name="process" type="opm:Process" minOccurs="0"
319                                maxOccurs="unbounded" />
320                </xs:sequence>
321        </xs:complexType>
322
323        <xs:complexType name="Agents">
324                <xs:sequence>
325                        <xs:element name="agent" type="opm:Agent" minOccurs="0"
326                                maxOccurs="unbounded" />
327                </xs:sequence>
328        </xs:complexType>
329
330        <xs:complexType name="Annotations">
331                <xs:sequence>
332                        <xs:element name="annotation" type="opm:Annotation"
333                                minOccurs="0" maxOccurs="unbounded" />
334                </xs:sequence>
335        </xs:complexType>
336
337
338        <!-- Observed Time allow for interval of observation. -->
339
340        <xs:complexType name="OTime">
341                <xs:annotation>
342                        <xs:documentation>Observed Time allow for interval of observation,
343                                where an event is said to occur no earlier than a given time t1 and
344                                no later than a given time t2. When the event is observed to occur
345                                at a specific time, it is not convenient to use an interval.
346                                Instead, one can use the alternate exactlyAt attribute. We note that
347                                exactlyAt is disjoint from noEarlierThan and noLaterThan.
348                        </xs:documentation>
349                </xs:annotation>
350                <xs:sequence>
351                </xs:sequence>
352                <xs:attribute name="noEarlierThan" type="xs:dateTime" />
353                <xs:attribute name="noLaterThan" type="xs:dateTime" />
354                <xs:attribute name="exactlyAt" type="xs:dateTime" />
355        </xs:complexType>
356
357
358        <!-- XML Serialisations of OPM Core Annotations. -->
359
360
361        <xs:element name="label" type="opm:Label" substitutionGroup="opm:annotation" />
362
363        <xs:complexType name="Label">
364                <xs:complexContent>
365                        <xs:extension base="opm:EmbeddedAnnotation">
366                                <xs:attribute name="value" type="xs:string" />
367                        </xs:extension>
368                </xs:complexContent>
369        </xs:complexType>
370
371        <xs:element name="type" type="opm:Type" substitutionGroup="opm:annotation" />
372
373        <xs:complexType name="Type">
374                <xs:complexContent>
375                        <xs:extension base="opm:EmbeddedAnnotation">
376                                <xs:attribute name="value" type="xs:anyURI" />
377                        </xs:extension>
378                </xs:complexContent>
379        </xs:complexType>
380
381        <xs:element name="value" type="opm:Value" substitutionGroup="opm:annotation" />
382
383        <xs:complexType name="Value">
384                <xs:complexContent>
385                        <xs:extension base="opm:EmbeddedAnnotation">
386                                <xs:sequence>
387                                        <xs:element name="content" type="xs:anyType" minOccurs="0" />
388                                </xs:sequence>
389                                <xs:attribute name="encoding" type="xs:anyURI" />
390                        </xs:extension>
391                </xs:complexContent>
392        </xs:complexType>
393
394        <xs:element name="profile" type="opm:Profile"
395                substitutionGroup="opm:annotation" />
396
397        <xs:complexType name="Profile">
398                <xs:complexContent>
399                        <xs:extension base="opm:EmbeddedAnnotation">
400                                <xs:attribute name="value" type="xs:anyURI" />
401                        </xs:extension>
402                </xs:complexContent>
403        </xs:complexType>
404
405        <xs:element name="pname" type="opm:PName" substitutionGroup="opm:annotation" />
406
407        <xs:complexType name="PName">
408                <xs:complexContent>
409                        <xs:extension base="opm:EmbeddedAnnotation">
410                                <xs:attribute name="value" type="xs:anyURI" />
411                        </xs:extension>
412                </xs:complexContent>
413        </xs:complexType>
414
415
416</xs:schema>