File: common.rnc

package info (click to toggle)
mobyle 1.5.3%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 8,272 kB
  • ctags: 2,745
  • sloc: python: 22,649; sh: 57; makefile: 31; xml: 6; ansic: 5
file content (366 lines) | stat: -rw-r--r-- 9,784 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
datatypes xsd = "http://www.w3.org/2001/XMLSchema-datatypes" 
namespace xhtml = "http://www.w3.org/1999/xhtml"
namespace svg = "http://www.w3.org/2000/svg"

#---------------------------------------------------------------#
#                     Mobyle Generic Service Elements           #
#---------------------------------------------------------------#

Service = (
    element head { Head }&
	## Parameters list
	Parameters&
	Implementation
)

Head = (
		## name
		Name& 
		## package
		Package?&
		## version
		element version { text }?&
		## information
		element doc {
			## title
			element title { text }&
			## description
			element description { (Text*|anyXHTMLorSVG) }&
			## authors
			element authors { anyXHTMLorSVG }?&
			## reference
			element reference {
				## Document Object Identifier
				attribute doi {xsd:anyURI}?& 
				## URL
				attribute url {xsd:anyURI}?& 
				## formatted reference (text or HTML code)
				anyXHTMLorSVG
				}*&
			## documentation link(s)
			element doclink { xsd:anyURI }*&
			## download link(s)
			element sourcelink { (xsd:anyURI | xsd:string) }*&
			## homepage link(s)
			element homepagelink { xsd:anyURI }*&
			## additional comments
			Comment?
			}&
		## classification category
		element category { text }*&
		## EDAM classification category
		element edam_cat { attribute ref { xsd:string }, attribute label { xsd:string } }*&
		## bioMOBY service category
		element biomobyCategory { text }?& #this element stores the biomoby serviceType property value.
		## invocation elements
        InvocationHead&
        Interface*
    )

Name = element name {xsd:string}

Comment = element comment { (Text*|anyXHTMLorSVG) }

## package element defines elements common to all the interfaces of a package
Package = element package {
	Head
}

Parameters = element parameters {
	(Parameter | Paragraph)*
	}

Parameter = element parameter {
(
    ## technical ID
    # id so far is added to facilitate workflow developments
    attribute id { xsd:string }?&
	## program main input
	# ismaininput : if true the parameter is a primary article of the corresponding biomoby service (as used in PlayMoby)
	attribute ismaininput { xsd:boolean }?&
	## mandatory parameter
	# ismandatory : if true this parameter should be specified by the user 
	attribute ismandatory { xsd:boolean }?&
	## hidden parameter
	attribute ishidden { xsd:boolean }?&
	## show in simple forms	
	# issimple : specify if this parameter will be displayed only in the simple web form.
	attribute issimple { xsd:boolean }?&
	(
	# isout and isstdout are mutually exclusive
	## output parameter
	# isout : if true this parameter is produced by this service 
	attribute isout { xsd:boolean }? 
	| 
	## standard output parameter
	# isstdout : if true this parameter is the standart output of the service. Only one parameter can be isstdout="1" per service
	attribute isstdout { xsd:boolean }?
	)&
 	## parameter name
	Name&
	## parameter prompt
	Prompt* &
	## parameter type
	element type {
		## parameter biotype
		# the biological type of the parameter DNA & Protein ...
		# the biotypes list represents the list of accepted 'types'
		# for input parameters and the list of 'types' that an 
		# output may belong to
		element biotype { text }*&
		## parameter datatype
		# type of the data Sequence & Structure & Matrix ...
		element datatype { 
			## datatype class
			element class { text }&
			## datatype superclass
			#  superclass or class if class does not exist
			#  is a Mobyle parameter Class defined in Src/Mobyle/* or in Local/CustomClasses/*
			element superclass { text }?
			}&
		## accepted data formats
        # acceptedDataFormats is a deprecated tag, and will be removed in a future version - please use only non-nested dataFormat tags
		DataFormat*&		
		## parameter cardinality
		# the cardinality of the datatype &a number or a couple of value &  int&int or int&n
		# biotype=Protein datatype=( class = Sequence ) & format=Fasta & card=1  means
		# the user must provide 1 and only one Protein Sequence in Fasta format to fill this input parameter 
		# biotype=Protein datatype=( class = Sequence ) & format=Fasta & card=1.n  means
		# the user must provide 1 or more  Protein Sequence in Fasta format to fill this input parameter
		element card { text }?&
		## bioMOBY typing
                # the biomoby typing accepts only one format for a biomoby service
		# however many programs accept different formats for a given parameter
		# thus multiple biomoby datatypes can be specified, and a single mobyle
		# program can be seen as multiple biomoby services.
		# the name of the object in the bioMoby ontology. it's implied
		# that it's a primary and if not specify the parameter is a secondary in biomoby
		element biomoby { 
				## bioMOBY datatype
				element datatype {text}*&
				## bioMOBY namespace
				element namespace {text}*
			}?
		}&
	## parameter relevancy condition
	Precond?&
	## parameter default value(s)
	# the default value or list of values (clustalw) for the parameter
	# the vdef element is mandatory if the parameter has a vlist or a flist.
    ## EDAM type
	element edam_type { attribute ref { xsd:string }, attribute label { xsd:string } }*&
	element vdef { Value+ }?&
	(
	  	## list of authorized values
		# a list of the available values for this parameter?
		element vlist { 
			element velem { 
				ListElem			
				}+
			}?
		|
		## list of authorized computed values 
		# flist permit to associate a code with a value which is associate to a label in interface
		# you could associate different codes with different proglangs for one value
		element flist {
			element felem { 
				ListElem&
				Code+ }*
			}?
	)&
	## multiple values separator
	# the character used to split the elements of a vlist for the MultipleChoice?
	element separator { text }?&
	## parameter value validation code
	# associated a message to a code& the code permit to
	# specify the valids values for a parameter*
	element ctrl { Message& Code+ }*&
	## authorized value range
	element scale { 
		## minimum value
		element min { (Value | Code+) }&
		## maximum value 
		element max { (Value | Code+) }&
		## increment 
		element inc { text }? 
		}?&
	## comments
	Comment?&
	## example value
	element example { anyTextOrXML }?&
	## invocation part
	InvocationParameterElements?&
	## custom parameter interface
	Interface*
)|
# this is an automatically generated parameter element needed for the interface generation
## auto-generated element
(
    (
    ## auto-generated standard error
    attribute isstderr { xsd:boolean }? 
    | 
    ## auto-generated standard output parameter
    attribute isstdout { xsd:boolean }?
    )&
    Interface*
)
	
}

ListElem = 
	(
	## undefined value
	# the undef attribute specifies if an element is an alias for a non specified value.
	# this links a label to the undefined value in the selectbox of the web form.
	attribute undef { xsd:boolean }?& 
	## value
	Value& 
	## label
	Label
	)

DataFormat =
	## data format 
	#  the format of the data 
	# if datatype == Sequence  format could have this values :
	# IG & GENBANK & NBRF & EMBL & GCG & DNASTRIDER & FASTA & RAW & 
	# PIR & XML & SWISSPROT & GDE  &
	element dataFormat {
	            ## force data reformatting
		    	attribute force { xsd:boolean }?&
		    	DynamicFunction }

DynamicFunction = 
    (
    text | 
    element test {
        attribute param { text },
        (attribute eq { text }|
        attribute ne { text }|
        attribute lt { text }|
        attribute gt { text }|
        attribute le { text }|
        attribute ge { text }),
        DynamicFunction
    } |
    element ref {attribute param {text}}
    )*

Prompt =
	## prompt 
	element prompt { Lang?& text }

Lang = 
	## language
	#  lang as in RFC-1766 (e.g.& en-US& fr& fr-FR& etc.)
	attribute lang { xsd:language }

Label = 
	## label
	# the text associated to a value which will be display on the form
	element label { text }

Message =
	## message 
	# a message displayed when the control fail
	element message { Text+ }

Precond =
	## relevancy condition 
	# in parameter : the parameter is linked to a condition
	# ex : this parameter could be used only if an other parameter has been specified
	element precond { Code+ }

Value = 
	## value
	element value { text }

Code = 
	## code snippet in a programming language
	element code {
		## programming language (e.g., python, perl, etc.)
		attribute proglang {text},
		non-empty-string
		}

## text element
Text = 
	element text {
		Lang&
		text 
		}
## HTML element
anyXHTMLorSVG = (
	element xhtml:* {
   (attribute * { text }
    | text
    | anyXHTMLorSVG)*
}|text|element svg:* {
   (attribute * { text }
    | text
    | anyXHTMLorSVG)*
})*

anyTextOrXML = (
element * {
   (attribute * { text }
    | text
    | anyTextOrXML)*
}|text
)

## paragraph
Paragraph = element paragraph {
	Name&
	Prompt*&
	Precond*&
	Comment?&
	Parameters& 
  InvocationParagraph&
	## custom paragraph layout/interface
	(Layout|Interface*)?
}

## box-model layout
Layout = element layout {
	(Hbox | Vbox)+
}

## horizontal box
Hbox = element hbox {
	(Box | Layout) + 
}

## vertical box
Vbox = element vbox {
	(Box | Layout) + 
}

## box
Box = element box { text }

## custom interface specification
Interface = element interface {
	## override default Choice parameter display
	(attribute field {"select"|"radio"}|
    (attribute type {InterfaceType}&
     attribute generated {"true"}?&
	## override HTML display code
	anyXHTMLorSVG))
}


Email = element email {xsd:token {pattern = "[a-z0-9\-\._]+@([a-z0-9\-]+\.)+([a-z]){2,4}"}}

non-empty-string = xsd:token { minLength = "1" }

Implementation = empty

InvocationHead = empty

InvocationParameterElements = empty

InvocationParagraph = empty

InterfaceType = empty