voruby 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +339 -0
- data/REQUIREMENTS +4 -0
- data/Rakefile.rb +296 -0
- data/lib/voruby/adql/adql.rb +2735 -0
- data/lib/voruby/adql/ext.rb +15 -0
- data/lib/voruby/adql/loader.rb +5 -0
- data/lib/voruby/adql/operations.rb +54 -0
- data/lib/voruby/adql/parser.rb +160 -0
- data/lib/voruby/adql/transforms.rb +573 -0
- data/lib/voruby/ext.rb +17 -0
- data/lib/voruby/loader.rb +4 -0
- data/lib/voruby/misc/propertyfile.rb +36 -0
- data/lib/voruby/plastic/applications.rb +174 -0
- data/lib/voruby/plastic/constants.rb +30 -0
- data/lib/voruby/plastic/loader.rb +10 -0
- data/lib/voruby/plastic/plastic.rb +1 -0
- data/lib/voruby/resources/conesearch/conesearch.rb +9 -0
- data/lib/voruby/resources/conesearch/conesearch_v0_2.rb +55 -0
- data/lib/voruby/resources/conesearch/conesearch_v0_3.rb +50 -0
- data/lib/voruby/resources/conesearch/conesearch_v1_0.rb +72 -0
- data/lib/voruby/resources/conesearch/loader.rb +4 -0
- data/lib/voruby/resources/loader.rb +50 -0
- data/lib/voruby/resources/nodes.rb +190 -0
- data/lib/voruby/resources/openskynode/loader.rb +4 -0
- data/lib/voruby/resources/openskynode/openskynode.rb +9 -0
- data/lib/voruby/resources/openskynode/openskynode_v0_1.rb +54 -0
- data/lib/voruby/resources/sia/loader.rb +5 -0
- data/lib/voruby/resources/sia/sia.rb +9 -0
- data/lib/voruby/resources/sia/sia_v0_6.rb +90 -0
- data/lib/voruby/resources/sia/sia_v0_7.rb +89 -0
- data/lib/voruby/resources/sia/sia_v1_0.rb +122 -0
- data/lib/voruby/resources/stsci.rb +59 -0
- data/lib/voruby/resources/vodataservice/coverage_v0_2.rb +195 -0
- data/lib/voruby/resources/vodataservice/coverage_v0_3.rb +158 -0
- data/lib/voruby/resources/vodataservice/loader.rb +5 -0
- data/lib/voruby/resources/vodataservice/vodataservice.rb +9 -0
- data/lib/voruby/resources/vodataservice/vodataservice_v0_4.rb +189 -0
- data/lib/voruby/resources/vodataservice/vodataservice_v0_5.rb +163 -0
- data/lib/voruby/resources/vodataservice/vodataservice_v1_0.rb +221 -0
- data/lib/voruby/resources/voregistry/loader.rb +4 -0
- data/lib/voruby/resources/voregistry/voregistry.rb +9 -0
- data/lib/voruby/resources/voregistry/voregistry_v0_2.rb +40 -0
- data/lib/voruby/resources/voregistry/voregistry_v0_3.rb +30 -0
- data/lib/voruby/resources/voregistry/voregistry_v1_0.rb +86 -0
- data/lib/voruby/resources/voresource/loader.rb +17 -0
- data/lib/voruby/resources/voresource/voresource.rb +9 -0
- data/lib/voruby/resources/voresource/voresource_v0_10.rb +322 -0
- data/lib/voruby/resources/voresource/voresource_v0_9.rb +405 -0
- data/lib/voruby/resources/voresource/voresource_v1_0.rb +230 -0
- data/lib/voruby/services/ext.rb +11 -0
- data/lib/voruby/services/gestalt/footprint.rb +95 -0
- data/lib/voruby/services/gestalt/wcs_fixer.rb +105 -0
- data/lib/voruby/services/gestalt/wesix.rb +155 -0
- data/lib/voruby/services/loader.rb +7 -0
- data/lib/voruby/services/registry/registry.rb +53 -0
- data/lib/voruby/services/resolver/resolver.rb +35 -0
- data/lib/voruby/sesame/loader.rb +6 -0
- data/lib/voruby/sesame/sesame_v1_0.rb +64 -0
- data/lib/voruby/simple/loader.rb +6 -0
- data/lib/voruby/simple/parameters.rb +196 -0
- data/lib/voruby/simple/sap.rb +446 -0
- data/lib/voruby/spacetime/loader.rb +3 -0
- data/lib/voruby/spacetime/spacetime.rb +607 -0
- data/lib/voruby/stc/coords_v1_20.rb +900 -0
- data/lib/voruby/stc/loader.rb +55 -0
- data/lib/voruby/stc/region_v1_20.rb +274 -0
- data/lib/voruby/stc/stc_v1_20.rb +1196 -0
- data/lib/voruby/util.rb +27 -0
- data/lib/voruby/voevent/loader.rb +7 -0
- data/lib/voruby/voevent/voevent_v1_0.rb +213 -0
- data/lib/voruby/voevent/voevent_v1_1.rb +196 -0
- data/lib/voruby/votables/chandra.rb +410 -0
- data/lib/voruby/votables/cnoc.rb +393 -0
- data/lib/voruby/votables/data.rb +179 -0
- data/lib/voruby/votables/galex.rb +390 -0
- data/lib/voruby/votables/hst.rb +391 -0
- data/lib/voruby/votables/int.rb +391 -0
- data/lib/voruby/votables/libxml_parser.rb +411 -0
- data/lib/voruby/votables/libxml_votable.rb +67 -0
- data/lib/voruby/votables/loader.rb +10 -0
- data/lib/voruby/votables/meta.rb +763 -0
- data/lib/voruby/votables/misc.rb +51 -0
- data/lib/voruby/votables/nsa.rb +393 -0
- data/lib/voruby/votables/nsar3.rb +410 -0
- data/lib/voruby/votables/rexml_parser.rb +408 -0
- data/lib/voruby/votables/rexml_votable.rb +67 -0
- data/lib/voruby/votables/sdss.rb +393 -0
- data/lib/voruby/votables/transforms.rb +388 -0
- data/lib/voruby/votables/tree.rb +45 -0
- data/lib/voruby/votables/types.rb +391 -0
- data/lib/voruby/votables/votable.rb +630 -0
- data/lib/voruby/votables/xmm.rb +394 -0
- data/test/adql/test1.adql +49 -0
- data/test/adql/test2.adql +51 -0
- data/test/adql/test3.adql +81 -0
- data/test/adql/test4.adql +53 -0
- data/test/adql/test5.adql +55 -0
- data/test/adql/test6.adql +18 -0
- data/test/adql/test7.adql +48 -0
- data/test/adql/unittest.rb +1672 -0
- data/test/plastic/test.rb +44 -0
- data/test/plastic/test.vot +5385 -0
- data/test/plastic/unittest.rb +66 -0
- data/test/resources/conesearch/conesearch_v0_3.xml +31 -0
- data/test/resources/conesearch/conesearch_v1_0.xml +86 -0
- data/test/resources/conesearch/unittest_v0_3.rb +22 -0
- data/test/resources/conesearch/unittest_v1_0.rb +24 -0
- data/test/resources/openskynode/open_sky_node_v0_1.xml +32 -0
- data/test/resources/openskynode/unittest_v0_1.rb +31 -0
- data/test/resources/sia/simple_image_access_v0_7.xml +36 -0
- data/test/resources/sia/simple_image_access_v1_0.xml +122 -0
- data/test/resources/sia/unittest_v0_7.rb +24 -0
- data/test/resources/sia/unittest_v1_0.rb +29 -0
- data/test/resources/stsci.xml +336 -0
- data/test/resources/unittest_stsci.rb +25 -0
- data/test/resources/vodataservice/catalog_service_resource_v1_0.xml +128 -0
- data/test/resources/vodataservice/data_collection_resource_v0_5.xml +54 -0
- data/test/resources/vodataservice/data_collection_resource_v1_0.xml +117 -0
- data/test/resources/vodataservice/data_service_resource_v1_0.xml +115 -0
- data/test/resources/vodataservice/sky_service_resource_v0_10.xml +45 -0
- data/test/resources/vodataservice/table_service_resource_v1_0.xml +122 -0
- data/test/resources/vodataservice/tabular_sky_service_resource_v0_10.xml +60 -0
- data/test/resources/vodataservice/unittest_v0_5.rb +126 -0
- data/test/resources/vodataservice/unittest_v1_0.rb +151 -0
- data/test/resources/voregistry/authority_resource_v0_3.xml +20 -0
- data/test/resources/voregistry/authority_resource_v1_0.xml +82 -0
- data/test/resources/voregistry/registry_service_v0_3.xml +20 -0
- data/test/resources/voregistry/registry_service_v1_0.xml +107 -0
- data/test/resources/voregistry/unittest_v0_3.rb +31 -0
- data/test/resources/voregistry/unittest_v1_0.rb +34 -0
- data/test/resources/voresource/organisation_resource_v1_0.xml +90 -0
- data/test/resources/voresource/resource_organisation_v0_10.xml +22 -0
- data/test/resources/voresource/resource_service_v0_10.xml +19 -0
- data/test/resources/voresource/resource_v0_10.xml +19 -0
- data/test/resources/voresource/resource_v1_0.xml +79 -0
- data/test/resources/voresource/service_resource_v1_0.xml +91 -0
- data/test/resources/voresource/unittest_v0_10.rb +61 -0
- data/test/resources/voresource/unittest_v0_9.rb +4 -0
- data/test/resources/voresource/unittest_v1_0.rb +190 -0
- data/test/services/gestalt/unittest.rb +74 -0
- data/test/services/registry/unittest.rb +34 -0
- data/test/services/resolver/unittest.rb +38 -0
- data/test/simple/unittest.rb +46 -0
- data/test/spacetime/unittest.rb +39 -0
- data/test/stc/catalog_entry_location_v1_20.xml +112 -0
- data/test/stc/obs_data_location_v1_20.xml +108 -0
- data/test/stc/search_location_v1_20.xml +54 -0
- data/test/stc/stc_resource_profile_v1_20.xml +60 -0
- data/test/stc/unittest_v1_20.rb +620 -0
- data/test/voevent/unittest_v1_0.rb +79 -0
- data/test/voevent/unittest_v1_1.rb +70 -0
- data/test/voevent/voevent_v1_0.xml +96 -0
- data/test/voevent/voevent_v1_1.xml +76 -0
- data/test/votables/test.vot +366 -0
- data/test/votables/unittest.rb +54 -0
- metadata +256 -0
@@ -0,0 +1,158 @@
|
|
1
|
+
require 'voruby/resources/vodataservice/loader'
|
2
|
+
|
3
|
+
module VORuby
|
4
|
+
module Resources
|
5
|
+
module VODataServiceCoverage
|
6
|
+
module V0_3
|
7
|
+
|
8
|
+
# Forward declarations
|
9
|
+
class Coverage; end
|
10
|
+
class Spatial; end
|
11
|
+
class Region; end
|
12
|
+
class Spectral; end
|
13
|
+
class Waveband; end
|
14
|
+
class WavelengthRange; end
|
15
|
+
class Temporal; end
|
16
|
+
class AllSky < Region; end
|
17
|
+
class CoordFrame; end
|
18
|
+
class CoordRange < Region; end
|
19
|
+
class AngleRange; end
|
20
|
+
class CircleRegion < Region; end
|
21
|
+
class Position; end
|
22
|
+
|
23
|
+
class Coverage
|
24
|
+
include XML::Mapping
|
25
|
+
|
26
|
+
# the spatial coverage of a resource
|
27
|
+
object_node :spatial, 'spatial', :class => Spatial, :optional => true
|
28
|
+
# the spectral coverage of a resource
|
29
|
+
object_node :spectral, 'spectral', :class => Spectral, :optional => true
|
30
|
+
# the temporal coverage of a resource
|
31
|
+
object_node :temporal, 'temporal', :class => Temporal, :optional => true
|
32
|
+
end
|
33
|
+
|
34
|
+
class Spatial
|
35
|
+
include XML::Mapping
|
36
|
+
|
37
|
+
# the spatial (angular) resolution that is typical of the observations of interest, in decimal degrees.
|
38
|
+
numeric_node :resolution, 'resolution', :optional => true
|
39
|
+
# the intrinsic size scale, given in arcseconds, associated with data items contained in a resource.
|
40
|
+
numeric_node :region_of_regard, 'regionOfRegard', :optional => true
|
41
|
+
|
42
|
+
# a coverage area of the sky
|
43
|
+
unmarshaller = Proc.new{ |xml|
|
44
|
+
ns_prefix, type = xml.attributes['type'].split(':')
|
45
|
+
type = ns_prefix if !type
|
46
|
+
|
47
|
+
the_module = NAMESPACE_MODULE_MAP[xml.namespace(ns_prefix)]
|
48
|
+
the_module = 'VORuby::Resources::VODataServiceCoverage::V0_3' if !the_module
|
49
|
+
|
50
|
+
# The name of the appropriate class corresponds to the type.
|
51
|
+
begin
|
52
|
+
eval("#{the_module}::#{type}.load_from_xml(xml)") # Would like to get rid of this eval somehow...
|
53
|
+
rescue NameError
|
54
|
+
Region.load_from_xml(xml)
|
55
|
+
end
|
56
|
+
}
|
57
|
+
array_node :regions, 'region', :unmarshaller => unmarshaller, :optional => true, :default_value => []
|
58
|
+
end
|
59
|
+
|
60
|
+
class Region
|
61
|
+
include XML::Mapping
|
62
|
+
end
|
63
|
+
|
64
|
+
class Spectral
|
65
|
+
include XML::Mapping
|
66
|
+
|
67
|
+
# the spectral resolution that is typical of the
|
68
|
+
# observations of interest, given as a ratio of the wavelength
|
69
|
+
# width (delta-lambda) to the observing wavelength (lambda).
|
70
|
+
numeric_node :resolution, 'resolution', :optional => true
|
71
|
+
|
72
|
+
# a range of the electro-magnetic spectrum specified by a lower and upper wavelength limit
|
73
|
+
object_node :range, 'range', :class => WavelengthRange, :optional => true
|
74
|
+
|
75
|
+
# a named spectral region of the electro-magnetic spectrum
|
76
|
+
array_node :wavebands, 'waveband', :class => Waveband, :optional => true, :default_value => []
|
77
|
+
end
|
78
|
+
|
79
|
+
class Waveband
|
80
|
+
include XML::Mapping
|
81
|
+
|
82
|
+
text_enumeration_node :value, '', :optional => false,
|
83
|
+
:choices => ['Radio', 'Millimeter', 'Infrared', 'Optical', 'UV', 'EUV', 'X-ray', 'Gamma-ray']
|
84
|
+
end
|
85
|
+
|
86
|
+
class WavelengthRange
|
87
|
+
include XML::Mapping
|
88
|
+
|
89
|
+
# the minimum wavelength
|
90
|
+
numeric_node :min, 'min', :optional => false
|
91
|
+
# the minimum wavelength
|
92
|
+
numeric_node :max, 'max', :optional => false
|
93
|
+
end
|
94
|
+
|
95
|
+
class Temporal
|
96
|
+
include XML::Mapping
|
97
|
+
|
98
|
+
# the earliest temporal coverage of the resource
|
99
|
+
date_time_node :start_time, 'startTime', :optional => true
|
100
|
+
# the latest temporal coverage of the resource
|
101
|
+
date_time_node :end_time, 'endTime', :optional => true
|
102
|
+
|
103
|
+
# the temporal resolution that is typical of the observations of interest, in seconds.
|
104
|
+
numeric_node :resolution, 'resolution', :optional => true
|
105
|
+
end
|
106
|
+
|
107
|
+
# A coverage area covering the entire sky.
|
108
|
+
class AllSky; end
|
109
|
+
|
110
|
+
class CoordFrame
|
111
|
+
include XML::Mapping
|
112
|
+
|
113
|
+
text_enumeration_node :value, '', :optional => false,
|
114
|
+
:choices => ['ICRS', 'FK5', 'FK4', 'ECL', 'GAL', 'SGAL']
|
115
|
+
end
|
116
|
+
|
117
|
+
# A coverage area of the sky characterized by a range of longitude and latitude.
|
118
|
+
class CoordRange
|
119
|
+
# a coordinate system frame
|
120
|
+
object_node :coord_frame, 'coordFrame', :class => CoordFrame, :optional => false
|
121
|
+
# the range in longitude
|
122
|
+
object_node :long, 'long', :class => AngleRange, :optional => false
|
123
|
+
# the range in latitude
|
124
|
+
object_node :lat, 'lat', :class => AngleRange, :optional => false
|
125
|
+
end
|
126
|
+
|
127
|
+
class AngleRange
|
128
|
+
include XML::Mapping
|
129
|
+
|
130
|
+
# the minimum angle
|
131
|
+
numeric_node :min, 'min', :optional => false
|
132
|
+
# the maximum angle
|
133
|
+
numeric_node :max, 'max', :optional => false
|
134
|
+
end
|
135
|
+
|
136
|
+
# A coverage area of the sky characterized by a central position and angular radius.
|
137
|
+
class CircleRegion
|
138
|
+
# a coordinate system frame
|
139
|
+
object_node :coord_frame, 'coordFrame', :class => CoordFrame, :optional => false
|
140
|
+
# the position of the center of the circle/cone
|
141
|
+
object_node :center, 'center', :class => Position, :optional => false
|
142
|
+
# the radius of the circle in degrees
|
143
|
+
numeric_node :radius, 'radius', :optional => false
|
144
|
+
end
|
145
|
+
|
146
|
+
class Position
|
147
|
+
include XML::Mapping
|
148
|
+
|
149
|
+
# the longitude component of the sky position
|
150
|
+
numeric_node :long, 'long', :optional => false
|
151
|
+
# the latitude component of the sky position
|
152
|
+
numeric_node :lat, 'lat', :optional => false
|
153
|
+
end
|
154
|
+
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
@@ -0,0 +1,189 @@
|
|
1
|
+
require 'voruby/resources/vodataservice/loader'
|
2
|
+
|
3
|
+
require 'voruby/resources/voresource/voresource_v0_9'
|
4
|
+
require 'voruby/resources/vodataservice/coverage_v0_2'
|
5
|
+
|
6
|
+
include VORuby::Resources::VOResource::V0_9
|
7
|
+
include VORuby::Resources::VODataServiceCoverage::V0_2
|
8
|
+
|
9
|
+
module VORuby
|
10
|
+
module Resources
|
11
|
+
module VODataService
|
12
|
+
module V0_4
|
13
|
+
|
14
|
+
# Forward declarations
|
15
|
+
class DataCollectionType < ResourceType; end
|
16
|
+
class DataCollection < DataCollectionType; end
|
17
|
+
class AccessType; end
|
18
|
+
class Access < AccessType; end
|
19
|
+
class FormatType; end
|
20
|
+
class Format < FormatType; end
|
21
|
+
class RightsType; end
|
22
|
+
class Rights < Rights; end
|
23
|
+
class SkyServiceType < ServiceType; end
|
24
|
+
class SkyService < SkyServiceType; end
|
25
|
+
class ExtendedInterfaceType < InterfaceType; end
|
26
|
+
class ParamHTTPType < ExtendedInterfaceType; end
|
27
|
+
class ParamHTTP < ParamHTTPType; end
|
28
|
+
class HTTPQueryType; end
|
29
|
+
class HTTPResults; end
|
30
|
+
class VOTableColumns; end
|
31
|
+
class TabularSkyServiceType < SkyServiceType; end
|
32
|
+
class TabularSkyService < TabularSkyServiceType; end
|
33
|
+
class TableType; end
|
34
|
+
class Table < TableType; end
|
35
|
+
class ParamType; end
|
36
|
+
class Column < ParamType; end
|
37
|
+
class DataType; end
|
38
|
+
class Unit; end
|
39
|
+
class UCD; end
|
40
|
+
class CoverageType; end
|
41
|
+
|
42
|
+
# A logical grouping of data which, in general, is composed of one or more accessible datasets.
|
43
|
+
class DataCollection; end
|
44
|
+
class DataCollectionType
|
45
|
+
object_node :coverage, 'Coverage', :class => Coverage, :optional => true
|
46
|
+
object_node :access, 'Access', :class => Access, :optional => true
|
47
|
+
|
48
|
+
array_node :facilities, 'Facility', :class => ResourceType, :optional => true, :default_value => []
|
49
|
+
array_node :instruments, 'Instrument', :class => Instrument, :optional => true, :default_value => []
|
50
|
+
end
|
51
|
+
|
52
|
+
# A description about how a data collection may be accessed.
|
53
|
+
class Access; end
|
54
|
+
class AccessType
|
55
|
+
include XML::Mapping
|
56
|
+
|
57
|
+
object_node :rights, 'Rights', :class => Rights, :optional => true
|
58
|
+
object_node :access_url, 'AccessURL', :class => AccessURL, :optional => true
|
59
|
+
|
60
|
+
array_node :format, 'Format', :class => Format, :optional => true, :default_value => []
|
61
|
+
end
|
62
|
+
|
63
|
+
# The physical or digital manifestation of the information supported by a resource.
|
64
|
+
class Format; end
|
65
|
+
class FormatType
|
66
|
+
include XML::Mapping
|
67
|
+
|
68
|
+
text_node :value, '', :optional => false
|
69
|
+
boolean_node :is_mime_type, '@isMIMEType', 'true', 'false', :optional => true, :default_value => 'false'
|
70
|
+
end
|
71
|
+
|
72
|
+
# Information about rights held in and over the resource.
|
73
|
+
class Rights; end
|
74
|
+
class RightsType
|
75
|
+
include XML::Mapping
|
76
|
+
|
77
|
+
text_enumeration_node :value, '', :optional => false,
|
78
|
+
:choices => ['public', 'secure', 'proprietary']
|
79
|
+
end
|
80
|
+
|
81
|
+
# A service for accessing astronomical data.
|
82
|
+
class SkyService; end
|
83
|
+
class SkyServiceType
|
84
|
+
object_node :coverage, 'Coverage', :class => Coverage, :optional => false
|
85
|
+
|
86
|
+
array_node :facilities, 'Facility', :class => Facility, :optional => true, :default_value => []
|
87
|
+
array_node :instruments, 'Instrument', :class => Instrument, :optional => true, :default_value => []
|
88
|
+
end
|
89
|
+
|
90
|
+
# A service invoked via an HTTP Query (either Get or Post) with a set of arguments consisting of keyword name-value pairs.
|
91
|
+
class ParamHTTP; end
|
92
|
+
class ParamHTTPType
|
93
|
+
object_node :qtype, '@qtype', 'HTTPQueryType', :optional => true
|
94
|
+
object_node :http_results, 'HTTPResults', :class => HTTPResults, :optional => false
|
95
|
+
|
96
|
+
array_node :params, 'Param', :class => Param, :optional => true, :default_value => []
|
97
|
+
end
|
98
|
+
|
99
|
+
# This is used as a base type for extended Interface types. It simply restricts the value of Invocation to be "Extended".
|
100
|
+
class ExtendedInterfaceType
|
101
|
+
object_node :invocation, 'Invocation', :class => Invocation, :optional => false
|
102
|
+
object_node :description, 'Description', :class => Description, :optional => true
|
103
|
+
object_node :access_url, 'AccessURL', :class => AccessURL, :optional => false
|
104
|
+
end
|
105
|
+
|
106
|
+
# The type of HTTP request, either GET or POST.
|
107
|
+
class HTTPQueryType
|
108
|
+
include XML::Mapping
|
109
|
+
|
110
|
+
text_enumeration_node :value, '', :optional => false,
|
111
|
+
:choices => ['GET', 'POST']
|
112
|
+
end
|
113
|
+
|
114
|
+
# The MIME type of a document returned by an HTTP Get.
|
115
|
+
class HTTPResults
|
116
|
+
include XML::Mapping
|
117
|
+
|
118
|
+
text_enumeration_node :value, '', :optional => false
|
119
|
+
end
|
120
|
+
|
121
|
+
# This element is recommended for use within extensions of the Capability element.
|
122
|
+
class VOTableColumns
|
123
|
+
include XML::Mapping
|
124
|
+
|
125
|
+
# Requires VOTable model
|
126
|
+
#object_node :fields, 'FIELD', :class => Field, :optional => true, :default_value => []
|
127
|
+
end
|
128
|
+
|
129
|
+
# A service that interacts with one or more specified tables having some coverage of the sky, time, and/or frequency.
|
130
|
+
class TabularSkyService; end
|
131
|
+
class TabularSkyServiceType
|
132
|
+
array_node :tables, 'Table', :class => Table, :optional => true, :default_value => []
|
133
|
+
end
|
134
|
+
|
135
|
+
# A description of a table and its columns.
|
136
|
+
class Table; end
|
137
|
+
class TableType
|
138
|
+
include XML::Mapping
|
139
|
+
|
140
|
+
text_node :role, '@role', :optional => true
|
141
|
+
|
142
|
+
object_node :name, 'Name', :class => Name, :optional => true
|
143
|
+
object_node :description, 'Description', :class => Description, :optional => true
|
144
|
+
|
145
|
+
array_node :columns, 'Column', :class => Column, :optional => true, :default_value => []
|
146
|
+
end
|
147
|
+
|
148
|
+
# A description of a table column.
|
149
|
+
class Column; end
|
150
|
+
|
151
|
+
class ParamType
|
152
|
+
include XML::Mapping
|
153
|
+
|
154
|
+
object_node :name, 'Name', :class => Name, :optional => false
|
155
|
+
object_node :description, 'Description', :class => Description, :optional => true
|
156
|
+
object_node :data_type, 'DataType', :class => DataType, :optional => true
|
157
|
+
object_node :unit, 'Unit', :class => Unit, :optional => true
|
158
|
+
object_node :ucd, 'UCD', :class => UCD, :optional => true
|
159
|
+
end
|
160
|
+
|
161
|
+
# A (VOTable-supported) data type.
|
162
|
+
class DataType
|
163
|
+
include XML::Mapping
|
164
|
+
|
165
|
+
text_node :arraysize, '@arraysize', :optional => true
|
166
|
+
|
167
|
+
text_enumeration_node :value, '', :optional => false,
|
168
|
+
:choices => ['boolean', 'bit', 'unsignedByte', 'short', 'int', 'long',
|
169
|
+
'char', 'unicodeChar', 'float', 'double', 'floatComplex', 'doubleComplex']
|
170
|
+
end
|
171
|
+
|
172
|
+
# The measurement unit associated with a measurement.
|
173
|
+
class Unit
|
174
|
+
include XML::Mapping
|
175
|
+
|
176
|
+
text_node :value, '', :optional => false
|
177
|
+
end
|
178
|
+
|
179
|
+
# The name of a unified content descriptor.
|
180
|
+
class UCD
|
181
|
+
include XML::Mapping
|
182
|
+
|
183
|
+
text_node :value, '', :optional => false
|
184
|
+
end
|
185
|
+
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
@@ -0,0 +1,163 @@
|
|
1
|
+
require 'voruby/resources/vodataservice/loader'
|
2
|
+
|
3
|
+
require 'voruby/resources/voresource/voresource_v0_10'
|
4
|
+
require 'voruby/resources/vodataservice/coverage_v0_3'
|
5
|
+
|
6
|
+
include VORuby::Resources::VOResource::V0_10
|
7
|
+
include VORuby::Resources::VODataServiceCoverage::V0_3
|
8
|
+
|
9
|
+
module VORuby
|
10
|
+
module Resources
|
11
|
+
module VODataService
|
12
|
+
module V0_5
|
13
|
+
|
14
|
+
# Forward declarations
|
15
|
+
class DataCollection < Resource; end
|
16
|
+
class Format; end
|
17
|
+
class Rights; end
|
18
|
+
class SkyService < Service; end
|
19
|
+
class WebService < Interface; end
|
20
|
+
class GLUService < Interface; end
|
21
|
+
class ParamHTTP < Interface; end
|
22
|
+
class Param; end
|
23
|
+
class ScalarDataType; end
|
24
|
+
class DataType < ScalarDataType; end
|
25
|
+
class ArrayShape; end
|
26
|
+
class HTTPQueryType; end
|
27
|
+
class TabularSkyService < SkyService; end
|
28
|
+
class Table; end
|
29
|
+
|
30
|
+
# A logical grouping of data which, in general, is composed of one or more accessible datasets.
|
31
|
+
class DataCollection
|
32
|
+
# extent of the content of the resource over space, time, and frequency.
|
33
|
+
object_node :coverage, 'coverage', :class => Coverage, :optional => true
|
34
|
+
# the URL that can be used to download the data contained in this data collection
|
35
|
+
object_node :access_url, 'accessURL', :class => AccessURL, :optional => true
|
36
|
+
|
37
|
+
# the observatory or facility used to collect the data contained or managed by this resource
|
38
|
+
array_node :facilities, 'facility', :class => ResourceName, :optional => true, :default_value => []
|
39
|
+
# the instrument used to collect the data contain or managed by a resource
|
40
|
+
array_node :instruments, 'instrument', :class => ResourceName, :optional => true, :default_value => []
|
41
|
+
# the physical or digital manifestation of the information supported by a resource
|
42
|
+
array_node :formats, 'format', :class => Format, :optional => true, :default_value => []
|
43
|
+
# information about rights held in and over the resource.
|
44
|
+
array_node :rights, 'rights', :class => Rights, :optional => true, :default_value => []
|
45
|
+
end
|
46
|
+
|
47
|
+
class Format
|
48
|
+
include XML::Mapping
|
49
|
+
|
50
|
+
text_node :value, '', :optional => false
|
51
|
+
boolean_node :is_mime_type, '@isMIMEType', 'true', 'false', :optional => false, :default_value => 'false'
|
52
|
+
end
|
53
|
+
|
54
|
+
class Rights
|
55
|
+
include XML::Mapping
|
56
|
+
|
57
|
+
text_enumeration_node :value, '', :optional => false,
|
58
|
+
:choices => ['public', 'secure', 'proprietary']
|
59
|
+
end
|
60
|
+
|
61
|
+
# A service for accessing astronomical data.
|
62
|
+
class SkyService
|
63
|
+
# extent of the content of the resource over space, time, and frequency
|
64
|
+
object_node :coverage, 'coverage', :class => Coverage, :optional => true
|
65
|
+
|
66
|
+
# the observatory or facility used to collect the data contained or managed by this resource
|
67
|
+
array_node :facilities, 'facility', :class => ResourceName, :optional => true, :default_value => []
|
68
|
+
# the instrument used to collect the data contain or managed by a resource
|
69
|
+
array_node :instruments, 'instrument', :class => ResourceName, :optional => true, :default_value => []
|
70
|
+
end
|
71
|
+
|
72
|
+
# A Web Service that is describable by a WSDL document.
|
73
|
+
# The access_url gives the URL to the WSDL document for the service.
|
74
|
+
class WebService; end
|
75
|
+
|
76
|
+
# A web-based service that is described in a GLU registry.
|
77
|
+
# The access_url gives the URL to the GLU record describing the service.
|
78
|
+
class GLUService; end
|
79
|
+
|
80
|
+
# A service invoked via an HTTP Query (either Get or Post) with a set of arguments consisting of keyword name-value pairs.
|
81
|
+
class ParamHTTP
|
82
|
+
# the MIME type of a document returned by an HTTP Get
|
83
|
+
text_node :result_type, 'resultType', :optional => true
|
84
|
+
|
85
|
+
# the type of HTTP request, either GET or POST
|
86
|
+
object_node :qtype, '@qtype', :class => HTTPQueryType, :optional => true
|
87
|
+
|
88
|
+
# a description of a input parameter. Each should be rendered as name=value in the query URL's arguements
|
89
|
+
array_node :params, 'param', :optional => true, :default_value => []
|
90
|
+
end
|
91
|
+
|
92
|
+
class Param
|
93
|
+
include XML::Mapping
|
94
|
+
|
95
|
+
# the name of the column
|
96
|
+
text_node :name, 'name', :optional => true
|
97
|
+
# a description of the column's contents
|
98
|
+
text_node :description, 'description', :optional => true
|
99
|
+
# the unit associated with all values in the column
|
100
|
+
text_node :unit, 'unit', :optional => true
|
101
|
+
# the name of a unified content descriptor
|
102
|
+
text_node :ucd, 'ucd', :optional => true
|
103
|
+
|
104
|
+
# a type of data contained in the column
|
105
|
+
object_node :data_type, 'dataType', :class => DataType, :optional => true
|
106
|
+
end
|
107
|
+
|
108
|
+
class ScalarDataType
|
109
|
+
include XML::Mapping
|
110
|
+
|
111
|
+
text_enumeration_node :value, '', :optional => false,
|
112
|
+
:choices => ['boolean', 'bit', 'unsignedByte', 'short', 'int', 'long', 'char', 'unicodeChar',
|
113
|
+
'float', 'double', 'floatComplex', 'doubleComplex']
|
114
|
+
end
|
115
|
+
|
116
|
+
# A (VOTable-supported) data type.
|
117
|
+
class DataType
|
118
|
+
# the shape of the array that constitutes the value
|
119
|
+
object_node :arraysize, '@arraysize', :object => ArrayShape, :optional => true, :default => '1'
|
120
|
+
end
|
121
|
+
|
122
|
+
class ArrayShape
|
123
|
+
include XML::Mapping
|
124
|
+
|
125
|
+
text_node :value, '', :optional => false
|
126
|
+
|
127
|
+
def value=(shape)
|
128
|
+
raise RuntimeError, "ArrayShape '#{shape}' in wrong format" if !shape.match(/^([0-9]+x)*[0-9]*[*]?$/)
|
129
|
+
|
130
|
+
@value = shape
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
# The type of HTTP request, either GET or POST.
|
135
|
+
class HTTPQueryType
|
136
|
+
include XML::Mapping
|
137
|
+
|
138
|
+
text_enumeration_node :value, '', :optional => false,
|
139
|
+
:choices => ['GET', 'POST']
|
140
|
+
end
|
141
|
+
|
142
|
+
# A service that interacts with one or more specified tables having some coverage of the sky, time, and/or frequency.
|
143
|
+
class TabularSkyService
|
144
|
+
# a description of a table and its columns
|
145
|
+
array_node :tables, 'table', :class => Table, :optional => true, :default_value => []
|
146
|
+
end
|
147
|
+
|
148
|
+
class Table
|
149
|
+
include XML::Mapping
|
150
|
+
|
151
|
+
# the name of the table
|
152
|
+
text_node :name, 'name', :optional => true
|
153
|
+
# a description of the tables contents
|
154
|
+
text_node :description, 'description', :optional => true
|
155
|
+
|
156
|
+
# a description of a table column
|
157
|
+
array_node :params, 'param', :class => Param, :optional => true, :default_value => []
|
158
|
+
end
|
159
|
+
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|