voruby 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (156) hide show
  1. data/LICENSE +339 -0
  2. data/REQUIREMENTS +4 -0
  3. data/Rakefile.rb +296 -0
  4. data/lib/voruby/adql/adql.rb +2735 -0
  5. data/lib/voruby/adql/ext.rb +15 -0
  6. data/lib/voruby/adql/loader.rb +5 -0
  7. data/lib/voruby/adql/operations.rb +54 -0
  8. data/lib/voruby/adql/parser.rb +160 -0
  9. data/lib/voruby/adql/transforms.rb +573 -0
  10. data/lib/voruby/ext.rb +17 -0
  11. data/lib/voruby/loader.rb +4 -0
  12. data/lib/voruby/misc/propertyfile.rb +36 -0
  13. data/lib/voruby/plastic/applications.rb +174 -0
  14. data/lib/voruby/plastic/constants.rb +30 -0
  15. data/lib/voruby/plastic/loader.rb +10 -0
  16. data/lib/voruby/plastic/plastic.rb +1 -0
  17. data/lib/voruby/resources/conesearch/conesearch.rb +9 -0
  18. data/lib/voruby/resources/conesearch/conesearch_v0_2.rb +55 -0
  19. data/lib/voruby/resources/conesearch/conesearch_v0_3.rb +50 -0
  20. data/lib/voruby/resources/conesearch/conesearch_v1_0.rb +72 -0
  21. data/lib/voruby/resources/conesearch/loader.rb +4 -0
  22. data/lib/voruby/resources/loader.rb +50 -0
  23. data/lib/voruby/resources/nodes.rb +190 -0
  24. data/lib/voruby/resources/openskynode/loader.rb +4 -0
  25. data/lib/voruby/resources/openskynode/openskynode.rb +9 -0
  26. data/lib/voruby/resources/openskynode/openskynode_v0_1.rb +54 -0
  27. data/lib/voruby/resources/sia/loader.rb +5 -0
  28. data/lib/voruby/resources/sia/sia.rb +9 -0
  29. data/lib/voruby/resources/sia/sia_v0_6.rb +90 -0
  30. data/lib/voruby/resources/sia/sia_v0_7.rb +89 -0
  31. data/lib/voruby/resources/sia/sia_v1_0.rb +122 -0
  32. data/lib/voruby/resources/stsci.rb +59 -0
  33. data/lib/voruby/resources/vodataservice/coverage_v0_2.rb +195 -0
  34. data/lib/voruby/resources/vodataservice/coverage_v0_3.rb +158 -0
  35. data/lib/voruby/resources/vodataservice/loader.rb +5 -0
  36. data/lib/voruby/resources/vodataservice/vodataservice.rb +9 -0
  37. data/lib/voruby/resources/vodataservice/vodataservice_v0_4.rb +189 -0
  38. data/lib/voruby/resources/vodataservice/vodataservice_v0_5.rb +163 -0
  39. data/lib/voruby/resources/vodataservice/vodataservice_v1_0.rb +221 -0
  40. data/lib/voruby/resources/voregistry/loader.rb +4 -0
  41. data/lib/voruby/resources/voregistry/voregistry.rb +9 -0
  42. data/lib/voruby/resources/voregistry/voregistry_v0_2.rb +40 -0
  43. data/lib/voruby/resources/voregistry/voregistry_v0_3.rb +30 -0
  44. data/lib/voruby/resources/voregistry/voregistry_v1_0.rb +86 -0
  45. data/lib/voruby/resources/voresource/loader.rb +17 -0
  46. data/lib/voruby/resources/voresource/voresource.rb +9 -0
  47. data/lib/voruby/resources/voresource/voresource_v0_10.rb +322 -0
  48. data/lib/voruby/resources/voresource/voresource_v0_9.rb +405 -0
  49. data/lib/voruby/resources/voresource/voresource_v1_0.rb +230 -0
  50. data/lib/voruby/services/ext.rb +11 -0
  51. data/lib/voruby/services/gestalt/footprint.rb +95 -0
  52. data/lib/voruby/services/gestalt/wcs_fixer.rb +105 -0
  53. data/lib/voruby/services/gestalt/wesix.rb +155 -0
  54. data/lib/voruby/services/loader.rb +7 -0
  55. data/lib/voruby/services/registry/registry.rb +53 -0
  56. data/lib/voruby/services/resolver/resolver.rb +35 -0
  57. data/lib/voruby/sesame/loader.rb +6 -0
  58. data/lib/voruby/sesame/sesame_v1_0.rb +64 -0
  59. data/lib/voruby/simple/loader.rb +6 -0
  60. data/lib/voruby/simple/parameters.rb +196 -0
  61. data/lib/voruby/simple/sap.rb +446 -0
  62. data/lib/voruby/spacetime/loader.rb +3 -0
  63. data/lib/voruby/spacetime/spacetime.rb +607 -0
  64. data/lib/voruby/stc/coords_v1_20.rb +900 -0
  65. data/lib/voruby/stc/loader.rb +55 -0
  66. data/lib/voruby/stc/region_v1_20.rb +274 -0
  67. data/lib/voruby/stc/stc_v1_20.rb +1196 -0
  68. data/lib/voruby/util.rb +27 -0
  69. data/lib/voruby/voevent/loader.rb +7 -0
  70. data/lib/voruby/voevent/voevent_v1_0.rb +213 -0
  71. data/lib/voruby/voevent/voevent_v1_1.rb +196 -0
  72. data/lib/voruby/votables/chandra.rb +410 -0
  73. data/lib/voruby/votables/cnoc.rb +393 -0
  74. data/lib/voruby/votables/data.rb +179 -0
  75. data/lib/voruby/votables/galex.rb +390 -0
  76. data/lib/voruby/votables/hst.rb +391 -0
  77. data/lib/voruby/votables/int.rb +391 -0
  78. data/lib/voruby/votables/libxml_parser.rb +411 -0
  79. data/lib/voruby/votables/libxml_votable.rb +67 -0
  80. data/lib/voruby/votables/loader.rb +10 -0
  81. data/lib/voruby/votables/meta.rb +763 -0
  82. data/lib/voruby/votables/misc.rb +51 -0
  83. data/lib/voruby/votables/nsa.rb +393 -0
  84. data/lib/voruby/votables/nsar3.rb +410 -0
  85. data/lib/voruby/votables/rexml_parser.rb +408 -0
  86. data/lib/voruby/votables/rexml_votable.rb +67 -0
  87. data/lib/voruby/votables/sdss.rb +393 -0
  88. data/lib/voruby/votables/transforms.rb +388 -0
  89. data/lib/voruby/votables/tree.rb +45 -0
  90. data/lib/voruby/votables/types.rb +391 -0
  91. data/lib/voruby/votables/votable.rb +630 -0
  92. data/lib/voruby/votables/xmm.rb +394 -0
  93. data/test/adql/test1.adql +49 -0
  94. data/test/adql/test2.adql +51 -0
  95. data/test/adql/test3.adql +81 -0
  96. data/test/adql/test4.adql +53 -0
  97. data/test/adql/test5.adql +55 -0
  98. data/test/adql/test6.adql +18 -0
  99. data/test/adql/test7.adql +48 -0
  100. data/test/adql/unittest.rb +1672 -0
  101. data/test/plastic/test.rb +44 -0
  102. data/test/plastic/test.vot +5385 -0
  103. data/test/plastic/unittest.rb +66 -0
  104. data/test/resources/conesearch/conesearch_v0_3.xml +31 -0
  105. data/test/resources/conesearch/conesearch_v1_0.xml +86 -0
  106. data/test/resources/conesearch/unittest_v0_3.rb +22 -0
  107. data/test/resources/conesearch/unittest_v1_0.rb +24 -0
  108. data/test/resources/openskynode/open_sky_node_v0_1.xml +32 -0
  109. data/test/resources/openskynode/unittest_v0_1.rb +31 -0
  110. data/test/resources/sia/simple_image_access_v0_7.xml +36 -0
  111. data/test/resources/sia/simple_image_access_v1_0.xml +122 -0
  112. data/test/resources/sia/unittest_v0_7.rb +24 -0
  113. data/test/resources/sia/unittest_v1_0.rb +29 -0
  114. data/test/resources/stsci.xml +336 -0
  115. data/test/resources/unittest_stsci.rb +25 -0
  116. data/test/resources/vodataservice/catalog_service_resource_v1_0.xml +128 -0
  117. data/test/resources/vodataservice/data_collection_resource_v0_5.xml +54 -0
  118. data/test/resources/vodataservice/data_collection_resource_v1_0.xml +117 -0
  119. data/test/resources/vodataservice/data_service_resource_v1_0.xml +115 -0
  120. data/test/resources/vodataservice/sky_service_resource_v0_10.xml +45 -0
  121. data/test/resources/vodataservice/table_service_resource_v1_0.xml +122 -0
  122. data/test/resources/vodataservice/tabular_sky_service_resource_v0_10.xml +60 -0
  123. data/test/resources/vodataservice/unittest_v0_5.rb +126 -0
  124. data/test/resources/vodataservice/unittest_v1_0.rb +151 -0
  125. data/test/resources/voregistry/authority_resource_v0_3.xml +20 -0
  126. data/test/resources/voregistry/authority_resource_v1_0.xml +82 -0
  127. data/test/resources/voregistry/registry_service_v0_3.xml +20 -0
  128. data/test/resources/voregistry/registry_service_v1_0.xml +107 -0
  129. data/test/resources/voregistry/unittest_v0_3.rb +31 -0
  130. data/test/resources/voregistry/unittest_v1_0.rb +34 -0
  131. data/test/resources/voresource/organisation_resource_v1_0.xml +90 -0
  132. data/test/resources/voresource/resource_organisation_v0_10.xml +22 -0
  133. data/test/resources/voresource/resource_service_v0_10.xml +19 -0
  134. data/test/resources/voresource/resource_v0_10.xml +19 -0
  135. data/test/resources/voresource/resource_v1_0.xml +79 -0
  136. data/test/resources/voresource/service_resource_v1_0.xml +91 -0
  137. data/test/resources/voresource/unittest_v0_10.rb +61 -0
  138. data/test/resources/voresource/unittest_v0_9.rb +4 -0
  139. data/test/resources/voresource/unittest_v1_0.rb +190 -0
  140. data/test/services/gestalt/unittest.rb +74 -0
  141. data/test/services/registry/unittest.rb +34 -0
  142. data/test/services/resolver/unittest.rb +38 -0
  143. data/test/simple/unittest.rb +46 -0
  144. data/test/spacetime/unittest.rb +39 -0
  145. data/test/stc/catalog_entry_location_v1_20.xml +112 -0
  146. data/test/stc/obs_data_location_v1_20.xml +108 -0
  147. data/test/stc/search_location_v1_20.xml +54 -0
  148. data/test/stc/stc_resource_profile_v1_20.xml +60 -0
  149. data/test/stc/unittest_v1_20.rb +620 -0
  150. data/test/voevent/unittest_v1_0.rb +79 -0
  151. data/test/voevent/unittest_v1_1.rb +70 -0
  152. data/test/voevent/voevent_v1_0.xml +96 -0
  153. data/test/voevent/voevent_v1_1.xml +76 -0
  154. data/test/votables/test.vot +366 -0
  155. data/test/votables/unittest.rb +54 -0
  156. metadata +256 -0
@@ -0,0 +1,27 @@
1
+ module VORuby
2
+ module Utilities
3
+
4
+ def self.save_to(file, in_string)
5
+ out_file = File.new(file, 'w+')
6
+ out_file.puts(in_string)
7
+
8
+ return out_file
9
+ end
10
+
11
+ def self.subclass_names(klass, preserve_ns=true)
12
+ subclasses = []
13
+ ObjectSpace.each_object(Module){ |c|
14
+ if c.ancestors.include?(klass)
15
+ if !preserve_ns
16
+ subclasses << c.name.split('::')[-1]
17
+ else
18
+ subclasses << c.name
19
+ end
20
+ end
21
+ }
22
+
23
+ return subclasses
24
+ end
25
+
26
+ end
27
+ end
@@ -0,0 +1,7 @@
1
+ require 'rubygems'
2
+ require 'xml/mapping'
3
+
4
+ require 'voruby/loader'
5
+
6
+ require 'voruby/resources/nodes'
7
+ require 'voruby/resources/voresource/voresource_v0_10'
@@ -0,0 +1,213 @@
1
+ require 'voruby/voevent/loader'
2
+
3
+ require 'voruby/stc/stc_v1_20'
4
+ include VORuby::STC::V1_20
5
+
6
+ module VORuby
7
+ module VOEvent
8
+ module V1_0
9
+
10
+ # Forward declarations
11
+ class VOEvent; end
12
+ class Who; end
13
+ class Contact; end
14
+ class Communication; end
15
+ class What; end
16
+ class Param; end
17
+ class Group; end
18
+ class WhereWhen; end
19
+ class How; end
20
+ class Why; end
21
+ class Name; end
22
+ class Concept; end
23
+ class Inference; end
24
+ class Citations; end
25
+ class EventID < VORuby::Resources::VOResource::V0_10::AnyURI; end
26
+ class Description; end
27
+ class Reference; end
28
+
29
+ # VOEvent is the root element for describing observations
30
+ # of immediate astronomical events. For more information, see
31
+ # http://www.ivoa.net/twiki/bin/view/IVOA/IvoaVOEvent.
32
+ class VOEvent
33
+ include XML::Mapping
34
+
35
+ text_node :version, '@version', :optional => false, :default_value => '1.0'
36
+
37
+ text_enumeration_node :role, '@role', :optional => true, :default_value => 'observation',
38
+ :choices => ['observation', 'prediction', 'test']
39
+
40
+ object_node :who, 'Who', :class => Who, :optional => true
41
+ object_node :what, 'What', :class => What, :optional => true
42
+ object_node :where_when, 'WhereWhen', :class => WhereWhen, :optional => true
43
+ object_node :how, 'How', :class => How, :optional => true
44
+ object_node :why, 'Why', :class => Why, :optional => true
45
+ object_node :citations, 'Citations', :class => Citations, :optional => true
46
+ object_node :reference, 'Reference', :class => Reference, :optional => true
47
+ object_node :voevent_id, '@id', :class => VORuby::Resources::VOResource::V0_10::AnyURI, :optional => false
48
+ end
49
+
50
+ # Curation metadata.
51
+ class Who
52
+ include XML::Mapping
53
+
54
+ date_time_node :date, 'Date', :optional => false
55
+
56
+ array_node :publisher_ids, 'PublisherID', :class => VORuby::Resources::VOResource::V0_10::AnyURI, :optional => false,
57
+ :default_value => []
58
+ array_node :descriptions, 'Description', :class => Description, :optional => true, :default_value => []
59
+ array_node :references, 'Reference', :class => Reference, :optional => true, :default_value => []
60
+ array_node :contacts, 'Contact', :class => Contact, :optional => true, :default_value => []
61
+ end
62
+
63
+ class Contact
64
+ include XML::Mapping
65
+
66
+ text_node :username, 'Username', :optional => true
67
+ text_node :name, 'Name', :optional => true
68
+ text_node :last_name, 'LastName', :optional => true
69
+ text_node :first_name, 'FirstName', :optional => true
70
+ text_node :institution, 'Institution', :optional => true
71
+
72
+ boolean_node :principal_investigator, '@principalInvestigator', 'true', 'false', :optional => true,
73
+ :default_value => 'false'
74
+ boolean_node :principal_contact, '@principalContact', 'true', 'false', :optional => true,
75
+ :default_value => 'false'
76
+
77
+ array_node :communications, 'Communication', :class => Communication, :optional => true, :default_value => []
78
+ end
79
+
80
+ class Communication
81
+ include XML::Mapping
82
+
83
+ text_node :address_line, 'AddressLine', :optional => true
84
+ text_node :country_code, 'CountryCode', :optional => true
85
+ text_node :fax, 'Fax', :optional => true
86
+ text_node :telephone, 'Telephone', :optional => true
87
+
88
+ object_node :email, 'Email', :class => VORuby::Resources::VOResource::V0_10::AnyURI, :optional => true
89
+ object_node :uri, 'Uri', :class => VORuby::Resources::VOResource::V0_10::AnyURI, :optional => true
90
+ end
91
+
92
+ # Event Characterization.
93
+ class What
94
+ include XML::Mapping
95
+
96
+ array_node :params, 'Param', :class => Param, :default_value => []
97
+ array_node :groups, 'Group', :class => Group, :default_value => []
98
+ array_node :descriptions, 'Description', :class => Description, :default_value => []
99
+ array_node :references, 'Reference', :class => Reference, :default_values => []
100
+ end
101
+
102
+ class Param
103
+ include XML::Mapping
104
+
105
+ text_node :name, '@name', :optional => false
106
+ text_node :ucd, '@ucd', :optional => true
107
+ text_node :value, '@value', :optional => false
108
+ text_node :unit, '@unit', :optional => true
109
+ end
110
+
111
+ class Group
112
+ include XML::Mapping
113
+
114
+ text_node :name, '@name', :optional => true
115
+ text_node :group_type, '@type', :optional => true
116
+
117
+ array_node :params, 'Param', :class => Param, :optional => false
118
+ array_node :descriptions, 'Description', :class => Description, :optional => true
119
+ array_node :references, 'Reference', :class => Reference, :optional => true
120
+ end
121
+
122
+ # Space-Time Coordinates, uses the VO STC schema.
123
+ class WhereWhen
124
+ include XML::Mapping
125
+
126
+ # I haven't modeled STC yet...
127
+ object_node :observation_location, 'ObservationLocation', :class => ObservationLocationType,
128
+ :optional => true
129
+
130
+ object_node :description, 'Description', :class => Description, :optional => true
131
+ object_node :reference, 'Reference', :class => Reference, :optional => true
132
+ end
133
+
134
+ # Instrument Configuration, references to RTML documents.
135
+ class How
136
+ include XML::Mapping
137
+
138
+ array_node :descriptions, 'Description', :class => Description, :optional => true, :default_value => []
139
+ array_node :references, 'Reference', :class => Reference, :optional => true, :default_value => []
140
+ end
141
+
142
+ # Initial Scientific Assessment.
143
+ class Why
144
+ include XML::Mapping
145
+
146
+ numeric_node :importance, '@importance', :optional => true
147
+ date_time_node :expires, '@expires', :optional => true
148
+
149
+ array_node :names, 'Name', :class => Name, :optional => false
150
+ array_node :concepts, 'Concept', :class => Concept, :optional => false
151
+ array_node :inferences, 'Inference', :class => Inference, :optional => true
152
+ array_node :descriptions, 'Description', :class => Description, :optional => true
153
+ array_node :references, 'Reference', :class => Reference, :optional => true
154
+ end
155
+
156
+ class Name
157
+ include XML::Mapping
158
+
159
+ text_node :value, '', :optional => false
160
+ end
161
+
162
+ class Concept
163
+ include XML::Mapping
164
+
165
+ text_node :value, '', :optional => false
166
+ end
167
+
168
+ class Inference
169
+ include XML::Mapping
170
+
171
+ numeric_node :probability, '@probability', :optional => true
172
+ text_node :relation, '@relation', :optional => true
173
+
174
+ array_node :names, 'Name', :class => Name, :optional => false
175
+ array_node :concepts, 'Concept', :class => Concept, :optional => false
176
+ array_node :descriptions, 'Description', :class => Description, :optional => true
177
+ array_node :references, 'Reference', :class => Reference, :optional => true
178
+ end
179
+
180
+ # Follow-up Observations.
181
+ class Citations
182
+ include XML::Mapping
183
+
184
+ array_node :event_ids, 'EventID', :class => EventID, :optional => false
185
+ array_node :descriptions, 'Description', :class => Description, :optional => true
186
+ array_node :references, 'Reference', :class => Reference, :optional => true
187
+ end
188
+
189
+ class EventID
190
+ text_enumeration_node :cite, '@cite', :optional => false,
191
+ :choices => ['followup', 'supercedes', 'retraction']
192
+ end
193
+
194
+ # Human Oriented Content.
195
+ class Description
196
+ include XML::Mapping
197
+
198
+ text_node :value, '', :optional => false
199
+ end
200
+
201
+ # External Content.
202
+ class Reference
203
+ include XML::Mapping
204
+
205
+ text_node :reference_type, '@type', :optional => true
206
+ text_node :name, '@name', :optional => true
207
+
208
+ object_node :uri, '@uri', :class => VORuby::Resources::VOResource::V0_10::AnyURI, :optional => false
209
+ end
210
+
211
+ end
212
+ end
213
+ end
@@ -0,0 +1,196 @@
1
+ require 'voruby/voevent/loader'
2
+
3
+ #require 'voruby/stc/stc_v1_30'
4
+ #include VORuby::STC::V1_30
5
+
6
+ module VORuby
7
+ module VOEvent
8
+ module V1_1
9
+
10
+ # Forward declarations
11
+ class VOEvent; end
12
+ class Who; end
13
+ class Author; end
14
+ class What; end
15
+ class Param; end
16
+ class Group; end
17
+ class WhereWhen; end
18
+ class How; end
19
+ class Why; end
20
+ class Name; end
21
+ class Concept; end
22
+ class Inference; end
23
+ class Citations; end
24
+ class EventIVORN < VORuby::Resources::VOResource::V0_10::AnyURI; end
25
+ class Description; end
26
+ class Reference; end
27
+
28
+ # VOEvent is the root element for describing observations
29
+ # of immediate astronomical events. For more information, see
30
+ # http://www.ivoa.net/twiki/bin/view/IVOA/IvoaVOEvent.
31
+ class VOEvent
32
+ include XML::Mapping
33
+
34
+ text_node :version, '@version', :optional => false, :default_value => '1.1'
35
+
36
+ text_enumeration_node :role, '@role', :optional => true, :default_value => 'observation',
37
+ :choices => ['observation', 'prediction', 'utility', 'test']
38
+
39
+ object_node :who, 'Who', :class => Who, :optional => true
40
+ object_node :what, 'What', :class => What, :optional => true
41
+ object_node :where_when, 'WhereWhen', :class => WhereWhen, :optional => true
42
+ object_node :how, 'How', :class => How, :optional => true
43
+ object_node :why, 'Why', :class => Why, :optional => true
44
+ object_node :citations, 'Citations', :class => Citations, :optional => true
45
+ object_node :description, 'Description', :class => Description, :optional => true
46
+ object_node :reference, 'Reference', :class => Reference, :optional => true
47
+ object_node :ivorn, '@ivorn', :class => VORuby::Resources::VOResource::V0_10::AnyURI, :optional => false
48
+ end
49
+
50
+ # Curation Metadata.
51
+ class Who
52
+ include XML::Mapping
53
+
54
+ date_time_node :date, 'Date', :optional => false
55
+
56
+ array_node :author_ivorns, 'AuthorIVORN', :class => VORuby::Resources::VOResource::V0_10::AnyURI, :optional => false
57
+ array_node :descriptions, 'Description', :class => Description, :optional => true
58
+ array_node :references, 'Reference', :class => Reference, :optional => true
59
+ array_node :authors, 'Author', :class => Author, :optional => true
60
+ end
61
+
62
+ class Author
63
+ include XML::Mapping
64
+
65
+ text_node :title, 'title', :optional => true
66
+ text_node :short_name, 'shortName', :optional => true
67
+ text_node :logo_url, 'logoURL', :optional => true
68
+ text_node :contact_name, 'contactName', :optional => true
69
+ text_node :contact_email, 'contactEmail', :optional => true
70
+ text_node :contact_phone, 'contactPhone', :optional => true
71
+ text_node :contributor, 'contributor', :optional => true
72
+ end
73
+
74
+ # Event Characterization.
75
+ class What
76
+ include XML::Mapping
77
+
78
+ array_node :params, 'Param', :class => Param, :optional => true, :default_value => []
79
+ array_node :groups, 'Group', :class => Group, :optional => true, :default_value => []
80
+ array_node :descriptions, 'Description', :class => Description, :optional => true, :default_value => []
81
+ array_node :references, 'Reference', :class => Reference, :optional => true, :default_value => []
82
+ end
83
+
84
+ class Param
85
+ include XML::Mapping
86
+
87
+ text_node :name, '@name', :optional => false
88
+ text_node :ucd, '@ucd', :optional => true
89
+ text_node :value, '@value', :optional => false
90
+ text_node :unit, '@unit', :optional => true
91
+ end
92
+
93
+ class Group
94
+ include XML::Mapping
95
+
96
+ text_node :name, '@name', :optional => true
97
+ text_node :group_type, '@type', :optional => true
98
+
99
+ array_node :params, 'Param', :class => Param, :optional => true, :default_value => []
100
+ array_node :descriptions, 'Description', :class => Description, :optional => true, :default_value => []
101
+ array_node :references, 'Reference', :class => Reference, :optional => true, :default_value => []
102
+ end
103
+
104
+ # Space-Time Coordinates, uses the VO STC schema.
105
+ class WhereWhen
106
+ include XML::Mapping
107
+
108
+ # I haven't modeled STC yet...
109
+ #object_node :observation_location, 'ObservationLocation', :class => ObservationLocationType,
110
+ # :optional => true
111
+
112
+ object_node :description, 'Description', :class => Description, :optional => true
113
+ object_node :reference, 'Reference', :class => Reference, :optional => true
114
+ end
115
+
116
+ # Instrument Configuration, references to RTML documents.
117
+ class How
118
+ include XML::Mapping
119
+
120
+ array_node :descriptions, 'Description', :class => Description, :optional => true, :default_value => []
121
+ array_node :references, 'Reference', :class => Reference, :optional => true, :default_value => []
122
+ end
123
+
124
+ # Initial Scientific Assessment.
125
+ class Why
126
+ include XML::Mapping
127
+
128
+ numeric_node :importance, '@importance', :optional => true
129
+ date_time_node :expires, '@expires', :optional => true
130
+
131
+ array_node :names, 'Name', :class => Name, :optional => false
132
+ array_node :concepts, 'Concept', :class => Concept, :optional => false
133
+ array_node :inferences, 'Inference', :class => Inference, :optional => true
134
+ array_node :descriptions, 'Description', :class => Description, :optional => true
135
+ array_node :references, 'Reference', :class => Reference, :optional => true
136
+ end
137
+
138
+ class Name
139
+ include XML::Mapping
140
+
141
+ text_node :value, '', :optional => false
142
+ end
143
+
144
+ class Concept
145
+ include XML::Mapping
146
+
147
+ text_node :value, '', :optional => false
148
+ end
149
+
150
+ class Inference
151
+ include XML::Mapping
152
+
153
+ numeric_node :probability, '@probability', :optional => true
154
+ text_node :relation, '@relation', :optional => true
155
+
156
+ array_node :names, 'Name', :class => Name, :optional => false
157
+ array_node :concepts, 'Concept', :class => Concept, :optional => false
158
+ array_node :descriptions, 'Description', :class => Description, :optional => true
159
+ array_node :references, 'Reference', :class => Reference, :optional => true
160
+ end
161
+
162
+ # Follow-up Observations.
163
+ class Citations
164
+ include XML::Mapping
165
+
166
+ array_node :event_ivorns, 'EventIVORN', :class => EventIVORN, :optional => false
167
+ array_node :descriptions, 'Description', :class => Description, :optional => true
168
+ array_node :references, 'Reference', :class => Reference, :optional => true
169
+ end
170
+
171
+ class EventIVORN
172
+ text_enumeration_node :cite, '@cite', :optional => false,
173
+ :choices => ['followup', 'supersedes', 'retraction']
174
+ end
175
+
176
+ # Human readable text.
177
+ class Description
178
+ include XML::Mapping
179
+
180
+ text_node :value, '', :optional => false
181
+ text_node :format, '@format', :optional => true, :default_value => 'text/plain'
182
+ end
183
+
184
+ # External Content.
185
+ class Reference
186
+ include XML::Mapping
187
+
188
+ text_node :name, '@name', :optional => true
189
+ text_node :reference_type, '@type', :optional => true, :default_value => 'url'
190
+
191
+ object_node :uri, '@uri', :class => VORuby::Resources::VOResource::V0_10::AnyURI, :optional => false
192
+ end
193
+
194
+ end
195
+ end
196
+ end