ruby-avm-library 0.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.
- data/.autotest +5 -0
- data/.gitignore +5 -0
- data/.rspec +5 -0
- data/Gemfile +14 -0
- data/README.md +56 -0
- data/Rakefile +2 -0
- data/autotest/discover.rb +2 -0
- data/bin/avm2avm +7 -0
- data/lib/avm/cli.rb +18 -0
- data/lib/avm/contact.rb +40 -0
- data/lib/avm/controlled_vocabulary.rb +23 -0
- data/lib/avm/coordinate_frame.rb +10 -0
- data/lib/avm/coordinate_system_projection.rb +10 -0
- data/lib/avm/creator.rb +123 -0
- data/lib/avm/image.rb +355 -0
- data/lib/avm/image_quality.rb +10 -0
- data/lib/avm/image_type.rb +10 -0
- data/lib/avm/node.rb +28 -0
- data/lib/avm/observation.rb +76 -0
- data/lib/avm/spatial_quality.rb +10 -0
- data/lib/avm/xmp.rb +157 -0
- data/lib/ruby-avm-library.rb +7 -0
- data/lib/ruby-avm-library/version.rb +7 -0
- data/reek.watchr +12 -0
- data/ruby-avm-library.gemspec +27 -0
- data/spec/avm/cli_spec.rb +0 -0
- data/spec/avm/contact_spec.rb +93 -0
- data/spec/avm/creator_spec.rb +268 -0
- data/spec/avm/image_spec.rb +350 -0
- data/spec/avm/observation_spec.rb +191 -0
- data/spec/avm/xmp_spec.rb +154 -0
- data/spec/quick_fix_formatter.rb +26 -0
- data/spec/sample_files/creator/no_creator.xmp +14 -0
- data/spec/sample_files/creator/one_creator.xmp +28 -0
- data/spec/sample_files/creator/two_creators.xmp +26 -0
- data/spec/sample_files/image/both.xmp +101 -0
- data/spec/sample_files/image/light_years.xmp +96 -0
- data/spec/sample_files/image/nothing.xmp +18 -0
- data/spec/sample_files/image/redshift.xmp +101 -0
- data/spec/sample_files/image/single_value_light_years.xmp +96 -0
- data/spec/sample_files/observation/none.xmp +5 -0
- data/spec/sample_files/observation/one.xmp +17 -0
- data/spec/sample_files/observation/two.xmp +17 -0
- data/spec/spec_helper.rb +3 -0
- metadata +184 -0
@@ -0,0 +1,191 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'avm/image'
|
3
|
+
require 'avm/observation'
|
4
|
+
|
5
|
+
describe AVM::Observation do
|
6
|
+
let(:image) { AVM::Image.new }
|
7
|
+
let(:observation) { image.create_observation(options) }
|
8
|
+
|
9
|
+
subject { observation }
|
10
|
+
|
11
|
+
let(:facility) { 'HST' }
|
12
|
+
let(:instrument) { 'ACS' }
|
13
|
+
let(:color_assignment) { 'Blue' }
|
14
|
+
let(:band) { 'em.opt' }
|
15
|
+
let(:bandpass) { 'B' }
|
16
|
+
let(:wavelength) { 2.5 }
|
17
|
+
let(:start_time) { '2010-01-01' }
|
18
|
+
let(:start_time_string) { '2010-01-01T00:00' }
|
19
|
+
let(:integration_time) { '300' }
|
20
|
+
let(:dataset_id) { '12345' }
|
21
|
+
|
22
|
+
let(:options) { {
|
23
|
+
:facility => facility,
|
24
|
+
:instrument => instrument,
|
25
|
+
:color_assignment => color_assignment,
|
26
|
+
:band => band,
|
27
|
+
:bandpass => bandpass,
|
28
|
+
:wavelength => wavelength,
|
29
|
+
:start_time => start_time,
|
30
|
+
:integration_time => integration_time,
|
31
|
+
:dataset_id => dataset_id,
|
32
|
+
} }
|
33
|
+
|
34
|
+
let(:second_facility) { 'Chandra' }
|
35
|
+
let(:second_instrument) { 'X-Ray' }
|
36
|
+
let(:second_color_assignment) { 'Green' }
|
37
|
+
let(:second_band) { 'em.x-ray' }
|
38
|
+
let(:second_bandpass) { 'C' }
|
39
|
+
let(:second_wavelength) { nil }
|
40
|
+
let(:second_start_time) { '2010-01-02' }
|
41
|
+
let(:second_start_time_string) { '2010-01-02T00:00' }
|
42
|
+
let(:second_integration_time) { '400' }
|
43
|
+
let(:second_dataset_id) { '23456' }
|
44
|
+
|
45
|
+
let(:second_options) { {
|
46
|
+
:facility => second_facility,
|
47
|
+
:instrument => second_instrument,
|
48
|
+
:color_assignment => second_color_assignment,
|
49
|
+
:band => second_band,
|
50
|
+
:bandpass => second_bandpass,
|
51
|
+
:wavelength => second_wavelength,
|
52
|
+
:start_time => second_start_time,
|
53
|
+
:integration_time => second_integration_time,
|
54
|
+
:dataset_id => second_dataset_id,
|
55
|
+
} }
|
56
|
+
|
57
|
+
def self.check_defaults
|
58
|
+
its(:facility) { should == facility }
|
59
|
+
its(:instrument) { should == instrument }
|
60
|
+
its(:color_assignment) { should == color_assignment }
|
61
|
+
its(:band) { should == band }
|
62
|
+
its(:bandpass) { should == bandpass }
|
63
|
+
its(:wavelength) { should == wavelength }
|
64
|
+
its(:start_time) { should == Time.parse(start_time) }
|
65
|
+
its(:integration_time) { should == integration_time }
|
66
|
+
its(:dataset_id) { should == dataset_id }
|
67
|
+
|
68
|
+
its(:to_h) { should == {
|
69
|
+
:facility => facility,
|
70
|
+
:instrument => instrument,
|
71
|
+
:color_assignment => color_assignment,
|
72
|
+
:band => band,
|
73
|
+
:bandpass => bandpass,
|
74
|
+
:wavelength => wavelength,
|
75
|
+
:start_time => Time.parse(start_time),
|
76
|
+
:integration_time => integration_time,
|
77
|
+
:dataset_id => dataset_id
|
78
|
+
} }
|
79
|
+
end
|
80
|
+
|
81
|
+
context 'defaults' do
|
82
|
+
check_defaults
|
83
|
+
end
|
84
|
+
|
85
|
+
describe '.from_xml' do
|
86
|
+
let(:image) { AVM::Image.from_xml(File.read(file_path)) }
|
87
|
+
let(:observations) { image.observations }
|
88
|
+
|
89
|
+
subject { observations }
|
90
|
+
|
91
|
+
context 'no observations' do
|
92
|
+
let(:file_path) { 'spec/sample_files/observation/none.xmp' }
|
93
|
+
|
94
|
+
it { should == [] }
|
95
|
+
end
|
96
|
+
|
97
|
+
context 'one observation' do
|
98
|
+
let(:file_path) { 'spec/sample_files/observation/one.xmp' }
|
99
|
+
|
100
|
+
its(:length) { should == 1 }
|
101
|
+
|
102
|
+
context 'first observation' do
|
103
|
+
subject { observations.first }
|
104
|
+
|
105
|
+
check_defaults
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
context 'two observations' do
|
110
|
+
let(:file_path) { 'spec/sample_files/observation/two.xmp' }
|
111
|
+
|
112
|
+
its(:length) { should == 2 }
|
113
|
+
|
114
|
+
context 'first observation' do
|
115
|
+
subject { observations.first }
|
116
|
+
|
117
|
+
check_defaults
|
118
|
+
end
|
119
|
+
|
120
|
+
context 'second observation' do
|
121
|
+
subject { observations.last }
|
122
|
+
|
123
|
+
its(:facility) { should == second_facility }
|
124
|
+
its(:instrument) { should == second_instrument }
|
125
|
+
its(:color_assignment) { should == second_color_assignment }
|
126
|
+
its(:band) { should == second_band }
|
127
|
+
its(:bandpass) { should == second_bandpass }
|
128
|
+
its(:wavelength) { should == second_wavelength }
|
129
|
+
its(:start_time) { should == Time.parse(second_start_time) }
|
130
|
+
its(:integration_time) { should == second_integration_time }
|
131
|
+
its(:dataset_id) { should == second_dataset_id }
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
describe '.add_to_document' do
|
137
|
+
let(:xml) { image.to_xml }
|
138
|
+
let(:avm) { xml.at_xpath('//rdf:Description[@rdf:about="AVM"]') }
|
139
|
+
|
140
|
+
context 'none' do
|
141
|
+
it "should not have any observation information" do
|
142
|
+
%w{Facility Instrument Spectral.ColorAssignment Spectral.Band Spectral.Bandpass Spectral.CentralWavelength Temporal.StartTime Temporal.IntegrationTime DatasetID}.each do |name|
|
143
|
+
avm.at_xpath("//avm:#{name}").should be_nil
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
context 'one' do
|
149
|
+
before { observation }
|
150
|
+
|
151
|
+
it "should have the AVM values" do
|
152
|
+
{
|
153
|
+
'Facility' => facility,
|
154
|
+
'Instrument' => instrument,
|
155
|
+
'Spectral.ColorAssignment' => color_assignment,
|
156
|
+
'Spectral.Band' => band,
|
157
|
+
'Spectral.Bandpass' => bandpass,
|
158
|
+
'Spectral.CentralWavelength' => wavelength,
|
159
|
+
'Temporal.StartTime' => start_time_string,
|
160
|
+
'Temporal.IntegrationTime' => integration_time,
|
161
|
+
'DatasetID' => dataset_id
|
162
|
+
}.each do |name, value|
|
163
|
+
avm.at_xpath("//avm:#{name}").text.should == value.to_s
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
context 'two' do
|
169
|
+
let(:second_observation) { image.create_observation(second_options) }
|
170
|
+
|
171
|
+
|
172
|
+
before { observation ; second_observation }
|
173
|
+
|
174
|
+
it "should have the AVM values" do
|
175
|
+
{
|
176
|
+
'Facility' => [ facility, second_facility ].join(','),
|
177
|
+
'Instrument' => [ instrument, second_instrument ].join(','),
|
178
|
+
'Spectral.ColorAssignment' => [ color_assignment, second_color_assignment ].join(','),
|
179
|
+
'Spectral.Band' => [ band, second_band ].join(','),
|
180
|
+
'Spectral.Bandpass' => [ bandpass, second_bandpass ].join(','),
|
181
|
+
'Spectral.CentralWavelength' => [ wavelength, second_wavelength || '-' ].join(','),
|
182
|
+
'Temporal.StartTime' => [ start_time_string, second_start_time_string ].join(','),
|
183
|
+
'Temporal.IntegrationTime' => [ integration_time, second_integration_time ].join(','),
|
184
|
+
'DatasetID' => [ dataset_id, second_dataset_id ].join(',')
|
185
|
+
}.each do |name, value|
|
186
|
+
avm.at_xpath("//avm:#{name}").text.should == value.to_s
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
191
|
+
end
|
@@ -0,0 +1,154 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'avm/xmp'
|
3
|
+
|
4
|
+
describe AVM::XMP do
|
5
|
+
let(:xmp) { self.class.describes.new }
|
6
|
+
|
7
|
+
subject { xmp }
|
8
|
+
|
9
|
+
describe '#initialize' do
|
10
|
+
context 'not a nokogiri document' do
|
11
|
+
let(:xmp) { self.class.describes.new("definitely not nokogiri node") }
|
12
|
+
|
13
|
+
it { expect { xmp }.to raise_error(StandardError, /not a Nokogiri node/) }
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe '#get_refs' do
|
18
|
+
before {
|
19
|
+
xmp.get_refs do |refs|
|
20
|
+
refs[:dublin_core] << "<rdf:addedToDublinCore />"
|
21
|
+
refs[:iptc] << "<rdf:addedToIPTC />"
|
22
|
+
refs[:photoshop] << '<rdf:addedToPhotoshop />'
|
23
|
+
refs[:avm] << '<rdf:addedToAVM />'
|
24
|
+
end
|
25
|
+
}
|
26
|
+
|
27
|
+
it "should have gotten the refs correctly" do
|
28
|
+
xmp.doc.at_xpath('//rdf:Description[@rdf:about="Dublin Core"]//rdf:addedToDublinCore').should_not be_nil
|
29
|
+
xmp.doc.at_xpath('//rdf:Description[@rdf:about="IPTC"]//rdf:addedToIPTC').should_not be_nil
|
30
|
+
xmp.doc.at_xpath('//rdf:Description[@rdf:about="Photoshop"]//rdf:addedToPhotoshop').should_not be_nil
|
31
|
+
xmp.doc.at_xpath('//rdf:Description[@rdf:about="AVM"]//rdf:addedToAVM').should_not be_nil
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe 'xml from string' do
|
36
|
+
let(:xmp) { self.class.describes.from_string(string) }
|
37
|
+
let(:doc) { xmp.doc }
|
38
|
+
|
39
|
+
describe '.from_string' do
|
40
|
+
let(:string) { '<xml xmlns:rdf="cats"><rdf:RDF><node /></rdf:RDF></xml>' }
|
41
|
+
|
42
|
+
specify { xmp.doc.at_xpath('//node').should_not be_nil }
|
43
|
+
end
|
44
|
+
|
45
|
+
describe '#ensure_namespaces! and #ensure_xmlns' do
|
46
|
+
let(:rdf_namespace) { AVM::XMP::REQUIRED_NAMESPACES[:rdf] }
|
47
|
+
|
48
|
+
def self.all_default_namespaces
|
49
|
+
it "should have all the namespaces with the default prefixes" do
|
50
|
+
namespaces = doc.document.collect_namespaces
|
51
|
+
|
52
|
+
namespaces_to_test = AVM::XMP::REQUIRED_NAMESPACES.dup
|
53
|
+
yield namespaces_to_test if block_given?
|
54
|
+
|
55
|
+
namespaces_to_test.each do |prefix, namespace|
|
56
|
+
if namespace
|
57
|
+
namespaces["xmlns:#{prefix}"].should == namespace
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
before { doc }
|
64
|
+
|
65
|
+
context 'none of the namespaces exist' do
|
66
|
+
let(:string) { '<xml><node /></xml>' }
|
67
|
+
|
68
|
+
all_default_namespaces
|
69
|
+
|
70
|
+
specify { xmp.ensure_xmlns('.//rdf:what').should == './/rdf:what' }
|
71
|
+
end
|
72
|
+
|
73
|
+
context 'one namespace exists with the same prefix' do
|
74
|
+
let(:string) { %{<xml xmlns:rdf="#{rdf_namespace}"><node /></xml>} }
|
75
|
+
|
76
|
+
all_default_namespaces
|
77
|
+
|
78
|
+
specify { xmp.ensure_xmlns('.//rdf:what').should == './/rdf:what' }
|
79
|
+
end
|
80
|
+
|
81
|
+
context 'one namespace exists with a different prefix' do
|
82
|
+
let(:string) { %{<xml xmlns:r="#{rdf_namespace}"><node /></xml>} }
|
83
|
+
|
84
|
+
all_default_namespaces { |namespaces|
|
85
|
+
namespaces.delete(:rdf)
|
86
|
+
namespaces[:r] = AVM::XMP::REQUIRED_NAMESPACES[:rdf]
|
87
|
+
}
|
88
|
+
|
89
|
+
specify { xmp.ensure_xmlns('.//rdf:what').should == './/r:what' }
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
describe '#ensure_descriptions_findable!' do
|
95
|
+
let(:document) { <<-XML }
|
96
|
+
<x:xmpmeta xmlns:x="adobe:ns:meta/">
|
97
|
+
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
98
|
+
#{content}
|
99
|
+
</rdf:RDF>
|
100
|
+
</x:xmpmeta>
|
101
|
+
XML
|
102
|
+
|
103
|
+
let(:xmp) { self.class.describes.new(Nokogiri::XML(document)) }
|
104
|
+
|
105
|
+
context 'no nodes within' do
|
106
|
+
let(:content) { '' }
|
107
|
+
|
108
|
+
[ 'Dublin Core', 'IPTC', 'Photoshop', 'AVM' ].each do |which|
|
109
|
+
specify { xmp.at_xpath(%{//rdf:Description[@rdf:about="#{which}"]}).children.should be_empty }
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
context 'has identifying nodes within' do
|
114
|
+
let(:content) { <<-XML }
|
115
|
+
<rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/">
|
116
|
+
<dc:creator />
|
117
|
+
</rdf:Description>
|
118
|
+
<rdf:Description rdf:about="" xmlns:Iptc4xmpCore="http://itpc.org/stf/Iptc4xmpCore/1.0/xmlns/">
|
119
|
+
<Iptc4xmpCore:CreatorContactInfo rdf:parseType="Resource" />
|
120
|
+
</rdf:Description>
|
121
|
+
<rdf:Description rdf:about="" xmlns:Photoshop="http://ns.adobe.com/photoshop/1.0/">
|
122
|
+
<photoshop:Something />
|
123
|
+
</rdf:Description>
|
124
|
+
<rdf:Description rdf:about="" xmlns:avm="http://www.communicatingastronomy.org/avm/1.0/">
|
125
|
+
<avm:Something />
|
126
|
+
</rdf:Description>
|
127
|
+
XML
|
128
|
+
|
129
|
+
[ 'Dublin Core', 'IPTC', 'Photoshop', 'AVM' ].each do |which|
|
130
|
+
specify { xmp.at_xpath(%{//rdf:Description[@rdf:about="#{which}"]}).should_not be_nil }
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
context 'has a namespace it should know about with a different prefix' do
|
135
|
+
let(:content) { <<-XML }
|
136
|
+
<rdf:Description rdf:about="" xmlns:whatever="http://purl.org/dc/elements/1.1/">
|
137
|
+
<whatever:creator />
|
138
|
+
</rdf:Description>
|
139
|
+
XML
|
140
|
+
|
141
|
+
specify { xmp.at_xpath(%{//rdf:Description[@rdf:about="Dublin Core"]}).should_not be_nil }
|
142
|
+
end
|
143
|
+
|
144
|
+
context 'has a namespace it knows nothing about' do
|
145
|
+
let(:content) { <<-XML }
|
146
|
+
<rdf:Description rdf:about="" xmlns:whatever="http://example.com">
|
147
|
+
<whatever:creator />
|
148
|
+
</rdf:Description>
|
149
|
+
XML
|
150
|
+
|
151
|
+
it { expect { xmp }.to_not raise_error }
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'rspec/core/formatters/base_text_formatter'
|
2
|
+
|
3
|
+
module RSpec
|
4
|
+
module Core
|
5
|
+
module Formatters
|
6
|
+
class QuickFixFormatter < BaseTextFormatter
|
7
|
+
def dump_summary(duration, example_count, failure_count, pending_count)
|
8
|
+
end
|
9
|
+
|
10
|
+
def dump_profile
|
11
|
+
end
|
12
|
+
|
13
|
+
def dump_pending
|
14
|
+
end
|
15
|
+
|
16
|
+
def dump_failures
|
17
|
+
failed_examples.each do |example|
|
18
|
+
output.puts "%s:%s:%s" % [ example.file_path, example.metadata[:line_number], example.metadata[:execution_result][:exception].message ]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.2-c063 53.352624, 2008/07/30-18:05:41 ">
|
2
|
+
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
3
|
+
<rdf:Description rdf:about=""
|
4
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
5
|
+
<dc:creator />
|
6
|
+
</rdf:Description>
|
7
|
+
<rdf:Description rdf:about=""
|
8
|
+
xmlns:Iptc4xmpCore="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/">
|
9
|
+
<Iptc4xmpCore:CreatorContactInfo rdf:parseType="Resource">
|
10
|
+
</Iptc4xmpCore:CreatorContactInfo>
|
11
|
+
</rdf:Description>
|
12
|
+
</rdf:RDF>
|
13
|
+
</x:xmpmeta>
|
14
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.2-c063 53.352624, 2008/07/30-18:05:41 ">
|
2
|
+
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
3
|
+
<rdf:Description rdf:about=""
|
4
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
5
|
+
<dc:creator>
|
6
|
+
<rdf:Seq><rdf:li>John Bintz</rdf:li></rdf:Seq>
|
7
|
+
</dc:creator>
|
8
|
+
<dc:title>
|
9
|
+
<rdf:Alt>
|
10
|
+
<rdf:li xml:lang="x-default">This is an image</rdf:li>
|
11
|
+
</rdf:Alt>
|
12
|
+
</dc:title>
|
13
|
+
</rdf:Description>
|
14
|
+
<rdf:Description rdf:about=""
|
15
|
+
xmlns:Iptc4xmpCore="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/">
|
16
|
+
<Iptc4xmpCore:CreatorContactInfo rdf:parseType="Resource">
|
17
|
+
<Iptc4xmpCore:CiAdrExtadr>3700 San Martin Drive</Iptc4xmpCore:CiAdrExtadr>
|
18
|
+
<Iptc4xmpCore:CiAdrCity>Baltimore</Iptc4xmpCore:CiAdrCity>
|
19
|
+
<Iptc4xmpCore:CiAdrRegion>Maryland</Iptc4xmpCore:CiAdrRegion>
|
20
|
+
<Iptc4xmpCore:CiAdrPcode>21218</Iptc4xmpCore:CiAdrPcode>
|
21
|
+
<Iptc4xmpCore:CiAdrCtry>USA</Iptc4xmpCore:CiAdrCtry>
|
22
|
+
<Iptc4xmpCore:CiTelWork>800-555-1234</Iptc4xmpCore:CiTelWork>
|
23
|
+
<Iptc4xmpCore:CiEmailWork>bintz@stsci.edu</Iptc4xmpCore:CiEmailWork>
|
24
|
+
<Iptc4xmpCore:CiUrlWork>http://hubblesite.org</Iptc4xmpCore:CiUrlWork>
|
25
|
+
</Iptc4xmpCore:CreatorContactInfo>
|
26
|
+
</rdf:Description>
|
27
|
+
</rdf:RDF>
|
28
|
+
</x:xmpmeta>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.2-c063 53.352624, 2008/07/30-18:05:41 ">
|
2
|
+
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
3
|
+
<rdf:Description rdf:about=""
|
4
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
5
|
+
<dc:creator>
|
6
|
+
<rdf:Seq>
|
7
|
+
<rdf:li>John Bintz</rdf:li>
|
8
|
+
<rdf:li>Aohn Bintz</rdf:li>
|
9
|
+
</rdf:Seq>
|
10
|
+
</dc:creator>
|
11
|
+
</rdf:Description>
|
12
|
+
<rdf:Description rdf:about=""
|
13
|
+
xmlns:Iptc4xmpCore="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/">
|
14
|
+
<Iptc4xmpCore:CreatorContactInfo rdf:parseType="Resource">
|
15
|
+
<Iptc4xmpCore:CiAdrExtadr>3700 San Martin Drive</Iptc4xmpCore:CiAdrExtadr>
|
16
|
+
<Iptc4xmpCore:CiAdrCity>Baltimore</Iptc4xmpCore:CiAdrCity>
|
17
|
+
<Iptc4xmpCore:CiAdrRegion>Maryland</Iptc4xmpCore:CiAdrRegion>
|
18
|
+
<Iptc4xmpCore:CiAdrPcode>21218</Iptc4xmpCore:CiAdrPcode>
|
19
|
+
<Iptc4xmpCore:CiAdrCtry>USA</Iptc4xmpCore:CiAdrCtry>
|
20
|
+
<Iptc4xmpCore:CiTelWork>800-555-1234,800-555-2345</Iptc4xmpCore:CiTelWork>
|
21
|
+
<Iptc4xmpCore:CiEmailWork>bintz@stsci.edu,aohn@stsci.edu</Iptc4xmpCore:CiEmailWork>
|
22
|
+
<Iptc4xmpCore:CiUrlWork>http://hubblesite.org</Iptc4xmpCore:CiUrlWork>
|
23
|
+
</Iptc4xmpCore:CreatorContactInfo>
|
24
|
+
</rdf:Description>
|
25
|
+
</rdf:RDF>
|
26
|
+
</x:xmpmeta>
|
@@ -0,0 +1,101 @@
|
|
1
|
+
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.2-c063 53.352624, 2008/07/30-18:05:41 ">
|
2
|
+
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
3
|
+
<rdf:Description rdf:about=""
|
4
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
5
|
+
<dc:title>:
|
6
|
+
<rdf:Alt>
|
7
|
+
<rdf:li xml:lang="x-default">My title</rdf:li>
|
8
|
+
</rdf:Alt>
|
9
|
+
</dc:title>
|
10
|
+
<dc:description>
|
11
|
+
<rdf:Alt>
|
12
|
+
<rdf:li xml:lang="x-default">Description</rdf:li>
|
13
|
+
</rdf:Alt>
|
14
|
+
</dc:description>
|
15
|
+
<dc:subject>
|
16
|
+
<rdf:Bag>
|
17
|
+
<rdf:li>Name one</rdf:li>
|
18
|
+
<rdf:li>Name two</rdf:li>
|
19
|
+
</rdf:Bag>
|
20
|
+
</dc:subject>
|
21
|
+
</rdf:Description>
|
22
|
+
<rdf:Description rdf:about=""
|
23
|
+
xmlns:Iptc4xmpCore="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/">
|
24
|
+
<Iptc4xmpCore:CreatorContactInfo rdf:parseType="Resource">
|
25
|
+
</Iptc4xmpCore:CreatorContactInfo>
|
26
|
+
</rdf:Description>
|
27
|
+
<rdf:Description rdf:about=""
|
28
|
+
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/">
|
29
|
+
<photoshop:Headline>Headline</photoshop:Headline>
|
30
|
+
<photoshop:Credit>Credit</photoshop:Credit>
|
31
|
+
<photoshop:DateCreated>2010-01-01</photoshop:DateCreated>
|
32
|
+
</rdf:Description>
|
33
|
+
<rdf:Description rdf:about=""
|
34
|
+
xmlns:avm="http://www.communicatingastronomy.org/avm/1.0/">
|
35
|
+
<avm:Spectral.Notes>Spectral Notes</avm:Spectral.Notes>
|
36
|
+
<avm:Distance.Notes>Distance Notes</avm:Distance.Notes>
|
37
|
+
<avm:ReferenceURL>Reference URL</avm:ReferenceURL>
|
38
|
+
<avm:ID>ID</avm:ID>
|
39
|
+
<avm:Type>Observation</avm:Type>
|
40
|
+
<avm:Image.ProductQuality>Good</avm:Image.ProductQuality>
|
41
|
+
<avm:Subject.Category>Category one; Category two</avm:Subject.Category>
|
42
|
+
<avm:Distance>
|
43
|
+
<rdf:Seq>
|
44
|
+
<rdf:li>Light years</rdf:li>
|
45
|
+
<rdf:li>Redshift</rdf:li>
|
46
|
+
</rdf:Seq>
|
47
|
+
</avm:Distance>
|
48
|
+
<avm:Spatial.CoordinateFrame>ICRS</avm:Spatial.CoordinateFrame>
|
49
|
+
<avm:Spatial.Equinox>100</avm:Spatial.Equinox>
|
50
|
+
<avm:Spatial.ReferenceValue>
|
51
|
+
<rdf:Seq>
|
52
|
+
<rdf:li>100</rdf:li>
|
53
|
+
<rdf:li>50</rdf:li>
|
54
|
+
</rdf:Seq>
|
55
|
+
</avm:Spatial.ReferenceValue>
|
56
|
+
<avm:Spatial.ReferenceDimension>
|
57
|
+
<rdf:Seq>
|
58
|
+
<rdf:li>200</rdf:li>
|
59
|
+
<rdf:li>150</rdf:li>
|
60
|
+
</rdf:Seq>
|
61
|
+
</avm:Spatial.ReferenceDimension>
|
62
|
+
<avm:Spatial.ReferencePixel>
|
63
|
+
<rdf:Seq>
|
64
|
+
<rdf:li>25</rdf:li>
|
65
|
+
<rdf:li>15</rdf:li>
|
66
|
+
</rdf:Seq>
|
67
|
+
</avm:Spatial.ReferencePixel>
|
68
|
+
<avm:Spatial.Scale>
|
69
|
+
<rdf:Seq>
|
70
|
+
<rdf:li>40</rdf:li>
|
71
|
+
<rdf:li>35</rdf:li>
|
72
|
+
</rdf:Seq>
|
73
|
+
</avm:Spatial.Scale>
|
74
|
+
<avm:Spatial.Rotation>10</avm:Spatial.Rotation>
|
75
|
+
<avm:Spatial.CoordsystemProjection>TAN</avm:Spatial.CoordsystemProjection>
|
76
|
+
<avm:Spatial.Quality>Full</avm:Spatial.Quality>
|
77
|
+
<avm:Spatial.Notes>Spatial Notes</avm:Spatial.Notes>
|
78
|
+
<avm:Spatial.FITSheader>FITS header</avm:Spatial.FITSheader>
|
79
|
+
<avm:Spatial.CDMatrix>
|
80
|
+
<rdf:Seq>
|
81
|
+
<rdf:li>1</rdf:li>
|
82
|
+
<rdf:li>2</rdf:li>
|
83
|
+
<rdf:li>3</rdf:li>
|
84
|
+
<rdf:li>4</rdf:li>
|
85
|
+
</rdf:Seq>
|
86
|
+
</avm:Spatial.CDMatrix>
|
87
|
+
<avm:Publisher>Publisher</avm:Publisher>
|
88
|
+
<avm:PublisherID>Publisher ID</avm:PublisherID>
|
89
|
+
<avm:ResourceID>Resource ID</avm:ResourceID>
|
90
|
+
<avm:ResourceURL>Resource URL</avm:ResourceURL>
|
91
|
+
<avm:RelatedResources>
|
92
|
+
<rdf:Bag>
|
93
|
+
<rdf:li>Resource 1</rdf:li>
|
94
|
+
<rdf:li>Resource 2</rdf:li>
|
95
|
+
</rdf:Bag>
|
96
|
+
</avm:RelatedResources>
|
97
|
+
<avm:MetadataDate>2010-01-05</avm:MetadataDate>
|
98
|
+
<avm:MetadataVersion>1.2</avm:MetadataVersion>
|
99
|
+
</rdf:Description>
|
100
|
+
</rdf:RDF>
|
101
|
+
</x:xmpmeta>
|