voruby 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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