bolognese 0.11.7 → 0.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +15 -15
  3. data/lib/bolognese/datacite_utils.rb +2 -2
  4. data/lib/bolognese/metadata.rb +3 -1
  5. data/lib/bolognese/metadata_utils.rb +10 -6
  6. data/lib/bolognese/readers/codemeta_reader.rb +0 -1
  7. data/lib/bolognese/readers/crossref_reader.rb +2 -2
  8. data/lib/bolognese/readers/datacite_json_reader.rb +1 -1
  9. data/lib/bolognese/readers/datacite_reader.rb +10 -5
  10. data/lib/bolognese/readers/ris_reader.rb +0 -1
  11. data/lib/bolognese/readers/schema_org_reader.rb +1 -2
  12. data/lib/bolognese/utils.rb +20 -1
  13. data/lib/bolognese/version.rb +1 -1
  14. data/lib/bolognese/writers/crosscite_writer.rb +1 -1
  15. data/lib/bolognese/writers/datacite_json_writer.rb +1 -1
  16. data/lib/bolognese/writers/ris_writer.rb +0 -1
  17. data/lib/bolognese/writers/schema_org_writer.rb +4 -3
  18. data/spec/fixtures/crosscite.json +1 -1
  19. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/content_url.yml +89 -0
  20. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_schema_org_metadata/harvard_dataverse.yml +6 -6
  21. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_schema_org_metadata/harvard_dataverse_via_identifiers_org.yml +143 -0
  22. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/to_schema_org_identifier/with_alternate_identifier.yml +37 -0
  23. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_schema_org/alternate_identifiers.yml +42 -0
  24. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/write_metadata_as_schema_org/data_catalog.yml +42 -0
  25. data/spec/fixtures/vivli.xml +1 -0
  26. data/spec/readers/crossref_reader_spec.rb +1 -1
  27. data/spec/readers/datacite_json_reader_spec.rb +1 -1
  28. data/spec/readers/datacite_reader_spec.rb +28 -8
  29. data/spec/readers/schema_org_reader_spec.rb +17 -7
  30. data/spec/utils_spec.rb +18 -0
  31. data/spec/writers/datacite_writer_spec.rb +1 -1
  32. data/spec/writers/ris_writer_spec.rb +6 -11
  33. data/spec/writers/schema_org_writer_spec.rb +35 -0
  34. metadata +8 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ab8d985c2807f050a4d6e3b65c8da6aee333552e67cdf1f5ea1256bd8ae87635
4
- data.tar.gz: 9acaf0de81a4c2dc307f7bd8314b7bb2cf5117b7ab3a1750aea10838ecbc8453
3
+ metadata.gz: b569e2bb9f0bf75501740c1f43c0c916c7a85f55a0ec7efa27c9c04b685ed3a5
4
+ data.tar.gz: 95d0e9485923922ac0a078c071bd644c1628b05d8a01888c2e81989c7be534ff
5
5
  SHA512:
6
- metadata.gz: 82d25b0f172c412f4e5a2911d4e15cd02ec577383028b2f1104025c5ae4e83ce5dd3f19ce1592b4a5d7499cf57a9ac054275fb9665d3340a4ff09f37441ac238
7
- data.tar.gz: 07b2aa98887c6d9a3e648e1d0d1709d0906c6e67bffc69594342be2772fbad1b2356a7a08ae8daf63a6ef090718b2ac4990fe5656a9eece06e9a2f5da67d9350
6
+ metadata.gz: e72f93fde195b2659c28c529efc2d856c9df955ff0c56b8aa2a4f91bf0a3943af178a3d133f29d042aab3711764a3eb287e7702a9c6c970fd740d6bdd3bad810
7
+ data.tar.gz: 4988a36ff5526f7402a13aee011f48ede46b5e4087917a0410190e2f8f35ca6ce5a28c74ea92dea7734d89212d7caae588f869445d55112338920f3b09e8be5b
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bolognese (0.11.7)
4
+ bolognese (0.12)
5
5
  activesupport (>= 4.2.5, < 6)
6
6
  benchmark_methods (~> 0.7)
7
7
  bibtex-ruby (~> 4.1)
@@ -24,7 +24,7 @@ PATH
24
24
  GEM
25
25
  remote: https://rubygems.org/
26
26
  specs:
27
- activesupport (5.2.0)
27
+ activesupport (5.2.1)
28
28
  concurrent-ruby (~> 1.0, >= 1.0.2)
29
29
  i18n (>= 0.7, < 2)
30
30
  minitest (~> 5.1)
@@ -63,7 +63,7 @@ GEM
63
63
  concurrent-ruby (~> 1.0)
64
64
  hashdiff (0.3.7)
65
65
  htmlentities (4.3.4)
66
- i18n (1.0.1)
66
+ i18n (1.1.0)
67
67
  concurrent-ruby (~> 1.0)
68
68
  iso8601 (0.9.1)
69
69
  json (2.1.0)
@@ -78,7 +78,7 @@ GEM
78
78
  loofah (2.2.2)
79
79
  crass (~> 1.0.2)
80
80
  nokogiri (>= 1.5.9)
81
- maremma (4.1)
81
+ maremma (4.1.1)
82
82
  activesupport (>= 4.2.5, < 6)
83
83
  addressable (>= 2.3.6)
84
84
  builder (~> 3.2, >= 3.2.2)
@@ -127,19 +127,19 @@ GEM
127
127
  rdf (>= 2.2, < 4.0)
128
128
  rdf-xsd (3.0.0)
129
129
  rdf (~> 3.0)
130
- rspec (3.7.0)
131
- rspec-core (~> 3.7.0)
132
- rspec-expectations (~> 3.7.0)
133
- rspec-mocks (~> 3.7.0)
134
- rspec-core (3.7.1)
135
- rspec-support (~> 3.7.0)
136
- rspec-expectations (3.7.0)
130
+ rspec (3.8.0)
131
+ rspec-core (~> 3.8.0)
132
+ rspec-expectations (~> 3.8.0)
133
+ rspec-mocks (~> 3.8.0)
134
+ rspec-core (3.8.0)
135
+ rspec-support (~> 3.8.0)
136
+ rspec-expectations (3.8.1)
137
137
  diff-lcs (>= 1.2.0, < 2.0)
138
- rspec-support (~> 3.7.0)
139
- rspec-mocks (3.7.0)
138
+ rspec-support (~> 3.8.0)
139
+ rspec-mocks (3.8.0)
140
140
  diff-lcs (>= 1.2.0, < 2.0)
141
- rspec-support (~> 3.7.0)
142
- rspec-support (3.7.1)
141
+ rspec-support (~> 3.8.0)
142
+ rspec-support (3.8.0)
143
143
  rspec-xsd (0.1.0)
144
144
  nokogiri (~> 1.6)
145
145
  rspec (~> 3)
@@ -105,10 +105,10 @@ module Bolognese
105
105
  end
106
106
 
107
107
  def insert_alternate_identifiers(xml)
108
- return xml unless alternate_name.present?
108
+ return xml unless alternate_identifier.present?
109
109
 
110
110
  xml.alternateIdentifiers do
111
- Array.wrap(alternate_name).each do |alt|
111
+ Array.wrap(alternate_identifier).each do |alt|
112
112
  xml.alternateIdentifier(alt["name"], 'alternateIdentifierType' => alt["type"])
113
113
  end
114
114
  end
@@ -32,7 +32,8 @@ module Bolognese
32
32
  "date_registered" => options[:date_registered],
33
33
  "date_updated" => options[:date_updated],
34
34
  "provider_id" => options[:provider_id],
35
- "client_id" => options[:client_id] }
35
+ "client_id" => options[:client_id],
36
+ "content_url" => options[:content_url] }
36
37
  string = input
37
38
  @from = from || find_from_format(string: string)
38
39
  end
@@ -55,6 +56,7 @@ module Bolognese
55
56
  @date_updated = hsh.to_h["date_updated"].presence
56
57
  @provider_id = hsh.to_h["provider_id"].presence
57
58
  @client_id = hsh.to_h["client_id"].presence
59
+ @content_url = hsh.to_h["content_url"].presence
58
60
 
59
61
  # generate name for method to call dynamically
60
62
  @meta = @from.present? ? send("read_" + @from, string: string, sandbox: options[:sandbox]) : {}
@@ -68,7 +68,7 @@ module Bolognese
68
68
  :date_accepted, :date_available, :date_copyrighted, :date_collected, :date_published,
69
69
  :date_submitted, :date_valid, :date_created, :date_modified, :date_updated,
70
70
  :journal, :volume, :first_page, :last_page, :b_url, :b_version, :resource_type_general,
71
- :keywords, :editor, :description, :alternate_name, :language, :content_size,
71
+ :keywords, :editor, :description, :alternate_identifier, :language, :content_size,
72
72
  :schema_version, :has_part, :same_as, :resource_type_general,
73
73
  :is_previous_version_of, :is_new_version_of, :is_cited_by, :cites,
74
74
  :is_supplement_to, :is_supplemented_by, :is_continued_by, :continues,
@@ -76,7 +76,7 @@ module Bolognese
76
76
  :is_documented_by, :documents, :is_compiled_by, :compiles,
77
77
  :is_variant_form_of, :is_original_form_of, :is_reviewed_by, :reviews,
78
78
  :is_derived_from, :is_source_of, :format, :funding, :style, :locale, :state,
79
- :type, :additional_type, :citeproc_type, :bibtex_type, :ris_type, :meta
79
+ :type, :additional_type, :citeproc_type, :bibtex_type, :ris_type, :content_url, :meta
80
80
 
81
81
  attr_reader :doc, :service_provider, :page_start, :page_end, :related_identifier, :reverse, :name_detector
82
82
 
@@ -123,6 +123,14 @@ module Bolognese
123
123
  @identifier ||= meta.fetch("id", nil)
124
124
  end
125
125
 
126
+ def alternate_identifier
127
+ @alternate_identifier ||= meta.fetch("alternate_identifier", nil)
128
+ end
129
+
130
+ def content_url
131
+ @content_url ||= meta.fetch("content_url", nil)
132
+ end
133
+
126
134
  def state
127
135
  @state ||= meta.fetch("state", nil)
128
136
  end
@@ -131,10 +139,6 @@ module Bolognese
131
139
  @title ||= meta.fetch("title", nil)
132
140
  end
133
141
 
134
- def alternate_name
135
- @alternate_name ||= meta.fetch("alternate_name", nil)
136
- end
137
-
138
142
  def author
139
143
  @author ||= meta.fetch("author", nil)
140
144
  end
@@ -39,7 +39,6 @@ module Bolognese
39
39
  "doi" => validate_doi(id),
40
40
  "b_url" => normalize_id(meta.fetch("codeRepository", nil)),
41
41
  "title" => meta.fetch("title", nil),
42
- "alternate_name" => meta.fetch("alternateName", nil),
43
42
  "author" => author,
44
43
  "editor" => editor,
45
44
  "publisher" => publisher,
@@ -91,7 +91,7 @@ module Bolognese
91
91
  "doi" => doi,
92
92
  "b_url" => bibliographic_metadata.dig("doi_data", "resource"),
93
93
  "title" => parse_attributes(bibliographic_metadata.dig("titles", "title")),
94
- "alternate_name" => crossref_alternate_name(bibliographic_metadata),
94
+ "alternate_identifier" => crossref_alternate_identifier(bibliographic_metadata),
95
95
  "author" => crossref_people(bibliographic_metadata, "author"),
96
96
  "editor" => crossref_people(bibliographic_metadata, "editor"),
97
97
  "funding" => crossref_funding_reference(program_metadata),
@@ -116,7 +116,7 @@ module Bolognese
116
116
  }
117
117
  end
118
118
 
119
- def crossref_alternate_name(bibliographic_metadata)
119
+ def crossref_alternate_identifier(bibliographic_metadata)
120
120
  if bibliographic_metadata.fetch("publisher_item", nil).present?
121
121
  parse_attributes(bibliographic_metadata.dig("publisher_item", "item_number"))
122
122
  else
@@ -23,7 +23,7 @@ module Bolognese
23
23
  "doi" => validate_doi(meta.fetch("doi", nil)),
24
24
  "b_url" => normalize_id(meta.fetch("url", nil)),
25
25
  "title" => meta.fetch("title", nil),
26
- "alternate_name" => meta.fetch("alternate-identifier", nil),
26
+ "alternate_identifier" => meta.fetch("alternate-identifier", nil),
27
27
  "author" => meta.fetch("creator", nil),
28
28
  "editor" => meta.fetch("contributor", nil),
29
29
  "publisher" => meta.fetch("publisher", nil),
@@ -35,13 +35,18 @@ module Bolognese
35
35
  string = doc.to_xml(:indent => 2)
36
36
  end
37
37
 
38
+ content_url = Array.wrap(attributes.fetch("media", nil)).map do |media|
39
+ media.split(":", 2).last
40
+ end.compact
41
+
38
42
  { "string" => string,
39
43
  "b_url" => attributes.fetch("url", nil),
40
44
  "state" => attributes.fetch("state", nil),
41
45
  "date_registered" => attributes.fetch("minted", nil),
42
46
  "date_updated" => attributes.fetch("updated", nil),
43
47
  "provider_id" => attributes.fetch("allocator_symbol", nil),
44
- "client_id" => attributes.fetch("datacentre_symbol", nil) }
48
+ "client_id" => attributes.fetch("datacentre_symbol", nil),
49
+ "content_url" => content_url }
45
50
  end
46
51
 
47
52
  def read_datacite(string: nil, **options)
@@ -80,8 +85,8 @@ module Bolognese
80
85
 
81
86
  container_title = Array.wrap(meta.dig("descriptions", "description")).find { |r| r["descriptionType"] == "SeriesInformation" }.to_h.fetch("__content__", nil)
82
87
 
83
- alternate_name = Array.wrap(meta.dig("alternateIdentifiers", "alternateIdentifier")).map do |r|
84
- { "type" => r["alternateIdentifierType"], "name" => r["__content__"] }.compact
88
+ alternate_identifier = Array.wrap(meta.dig("alternateIdentifiers", "alternateIdentifier")).map do |r|
89
+ { "type" => r["alternateIdentifierType"], "name" => r["__content__"] }
85
90
  end.unwrap
86
91
  description = Array.wrap(meta.dig("descriptions", "description")).select { |r| r["descriptionType"] != "SeriesInformation" }.map do |r|
87
92
  { "type" => r["descriptionType"], "text" => sanitize(r["__content__"]) }.compact
@@ -113,9 +118,9 @@ module Bolognese
113
118
  "ris_type" => Bolognese::Utils::CR_TO_RIS_TRANSLATIONS[additional_type.to_s.underscore.camelcase] || Bolognese::Utils::DC_TO_RIS_TRANSLATIONS[resource_type_general.to_s.dasherize] || "GEN",
114
119
  "resource_type_general" => resource_type_general,
115
120
  "doi" => doi,
121
+ "alternate_identifier" => alternate_identifier,
116
122
  "url" => options.fetch(:url, nil),
117
123
  "title" => title,
118
- "alternate_name" => alternate_name,
119
124
  "author" => get_authors(Array.wrap(meta.dig("creators", "creator"))),
120
125
  "editor" => get_authors(Array.wrap(meta.dig("contributors", "contributor")).select { |r| r["contributorType"] == "Editor" }),
121
126
  "container_title" => container_title,
@@ -132,7 +137,7 @@ module Bolognese
132
137
  "date_created" => datacite_date(dates, "Created"),
133
138
  "date_accepted" => datacite_date(dates, "Accepted"),
134
139
  "date_available" => datacite_date(dates, "Available"),
135
- "date_copyrighted" => datacite_date(dates, "Copyrightes"),
140
+ "date_copyrighted" => datacite_date(dates, "Copyrights"),
136
141
  "date_collected" => datacite_date(dates, "Collected"),
137
142
  "date_submitted" => datacite_date(dates, "Submitted"),
138
143
  "date_valid" => datacite_date(dates, "Valid"),
@@ -61,7 +61,6 @@ module Bolognese
61
61
  "doi" => doi,
62
62
  "b_url" => meta.fetch("UR", nil),
63
63
  "title" => meta.fetch("T1", nil),
64
- "alternate_name" => meta.fetch("AN", nil),
65
64
  "author" => get_authors(author),
66
65
  "publisher" => meta.fetch("PB", nil),
67
66
  "is_part_of" => is_part_of,
@@ -67,10 +67,9 @@ module Bolognese
67
67
  "ris_type" => Bolognese::Utils::SO_TO_RIS_TRANSLATIONS[resource_type_general.to_s.dasherize] || "GEN",
68
68
  "resource_type_general" => resource_type_general,
69
69
  "doi" => validate_doi(id),
70
- "identifier" => id,
70
+ "identifier" => meta.fetch("identifier", nil),
71
71
  "b_url" => normalize_id(meta.fetch("url", nil)),
72
72
  "title" => meta.fetch("name", nil),
73
- "alternate_name" => meta.fetch("alternateName", nil),
74
73
  "author" => author,
75
74
  "editor" => editor,
76
75
  "publisher" => publisher,
@@ -523,15 +523,34 @@ module Bolognese
523
523
  end
524
524
 
525
525
  def to_schema_org_container(element, options={})
526
+ return nil unless options[:container_title].present?
527
+
526
528
  mapping = { "type" => "@type", "id" => "@id", "title" => "name" }
527
529
 
528
530
  element ||= {}
529
531
  element["type"] ||= (type == "Dataset") ? "DataCatalog" : "Periodical"
530
- element["title"] = options[:container_title] if options[:container_title].present?
532
+ element["title"] = options[:container_title]
531
533
 
532
534
  map_hash_keys(element: element, mapping: mapping)
533
535
  end
534
536
 
537
+ def to_schema_org_identifier(element, options={})
538
+ if options[:alternate_identifier].present?
539
+ [identifier] + Array.wrap(options[:alternate_identifier]).map do |ai|
540
+ if ai["type"].to_s.downcase == "url"
541
+ ai["name"]
542
+ else
543
+ {
544
+ "@type" => "PropertyValue",
545
+ "propertyID" => ai["type"],
546
+ "value" => ai["name"] }
547
+ end
548
+ end
549
+ else
550
+ identifier
551
+ end
552
+ end
553
+
535
554
  def from_schema_org(element)
536
555
  mapping = { "@type" => "type", "@id" => "id" }
537
556
 
@@ -1,3 +1,3 @@
1
1
  module Bolognese
2
- VERSION = "0.11.7"
2
+ VERSION = "0.12"
3
3
  end
@@ -33,7 +33,7 @@ module Bolognese
33
33
  "date_updated" => date_updated,
34
34
  "date_valid" => date_valid,
35
35
  "language" => language,
36
- "alternate_name" => alternate_name,
36
+ "alternate_identifier" => alternate_identifier,
37
37
  "content_size" => content_size,
38
38
  "version" => b_version,
39
39
  "license" => license,
@@ -29,7 +29,7 @@ module Bolognese
29
29
  "date_valid" => date_valid,
30
30
  "publication_year" => publication_year,
31
31
  "language" => language,
32
- "alternate_identifier" => alternate_name,
32
+ "alternate_identifier" => alternate_identifier,
33
33
  "references" => references,
34
34
  "is_referenced_by" => is_referenced_by,
35
35
  "is_part_of" => is_part_of,
@@ -15,7 +15,6 @@ module Bolognese
15
15
  "KW" => Array.wrap(keywords).map { |k| parse_attributes(k, content: "text", first: true) }.presence,
16
16
  "PY" => publication_year,
17
17
  "PB" => publisher,
18
- "AN" => parse_attributes(alternate_name, content: "name").presence,
19
18
  "LA" => language,
20
19
  "VL" => volume,
21
20
  "IS" => issue,
@@ -7,11 +7,10 @@ module Bolognese
7
7
  { "@context" => identifier.present? ? "http://schema.org" : nil,
8
8
  "@type" => type,
9
9
  "@id" => identifier,
10
- "identifier" => identifier,
10
+ "identifier" => to_schema_org_identifier(identifier, alternate_identifier: alternate_identifier),
11
11
  "url" => b_url,
12
12
  "additionalType" => additional_type,
13
13
  "name" => parse_attributes(title, content: "text", first: true),
14
- "alternateName" => parse_attributes(alternate_name, content: "name", first: true),
15
14
  "author" => to_schema_org(author),
16
15
  "editor" => to_schema_org(editor),
17
16
  "description" => parse_attributes(description, content: "text", first: true),
@@ -27,13 +26,15 @@ module Bolognese
27
26
  "pageEnd" => last_page,
28
27
  "spatialCoverage" => spatial_coverage,
29
28
  "sameAs" => to_schema_org(is_identical_to),
30
- "isPartOf" => to_schema_org_container(is_part_of, container_title: container_title),
29
+ "isPartOf" => type == "Dataset" ? nil : to_schema_org_container(is_part_of, container_title: container_title),
31
30
  "hasPart" => to_schema_org(has_part),
32
31
  "predecessor_of" => to_schema_org(is_previous_version_of),
33
32
  "successor_of" => to_schema_org(is_new_version_of),
34
33
  "citation" => to_schema_org(references),
35
34
  "@reverse" => reverse.presence,
35
+ "contentUrl" => content_url,
36
36
  "schemaVersion" => schema_version,
37
+ "includedInDataCatalog" => type == "Dataset" ? to_schema_org_container(is_part_of, container_title: container_title) : nil,
37
38
  "publisher" => publisher.present? ? { "@type" => "Organization", "name" => publisher } : nil,
38
39
  "funding" => to_schema_org(funding),
39
40
  "provider" => service_provider.present? ? { "@type" => "Organization", "name" => service_provider } : nil
@@ -18,7 +18,7 @@
18
18
  "publisher": "Zenodo",
19
19
  "keywords": ["choice architecture", "crossover experiment", "hci"],
20
20
  "date_published": "2016-03-27",
21
- "alternate_name": {
21
+ "alternate_identifier": {
22
22
  "type": "URL",
23
23
  "name": "http://zenodo.org/record/48440"
24
24
  },
@@ -0,0 +1,89 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://app.datacite.org/prefixes/10.23725
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Mozilla/5.0 (compatible; Maremma/4.1.1; +https://github.com/datacite/maremma)
12
+ Accept:
13
+ - text/html,application/json,application/xml;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ Date:
20
+ - Wed, 22 Aug 2018 06:38:30 GMT
21
+ Content-Type:
22
+ - application/vnd.api+json; charset=utf-8
23
+ Connection:
24
+ - keep-alive
25
+ Status:
26
+ - 200 OK
27
+ X-Anonymous-Consumer:
28
+ - 'true'
29
+ Cache-Control:
30
+ - max-age=0, private, must-revalidate
31
+ Vary:
32
+ - Accept-Encoding, Origin
33
+ X-Request-Id:
34
+ - 3d4d8c6a-a2bd-4060-875f-07725945597f
35
+ Etag:
36
+ - W/"56c426765344bcbbece7b2dea9a07f50"
37
+ X-Runtime:
38
+ - '0.013853'
39
+ X-Powered-By:
40
+ - Phusion Passenger 5.3.4
41
+ Server:
42
+ - nginx/1.14.0 + Phusion Passenger 5.3.4
43
+ body:
44
+ encoding: ASCII-8BIT
45
+ string: '{"data":{"id":"10.23725","type":"prefixes","attributes":{"registration-agency":"DataCite","created":"2016-09-26T14:06:03.000Z","updated":null},"relationships":{"clients":{"data":[{"id":"datacite.topmed","type":"clients"}]},"providers":{"data":[{"id":"datacite","type":"providers"}]}}},"included":[{"id":"datacite.topmed","type":"clients","attributes":{"name":"TOPMed","symbol":"DATACITE.TOPMED","year":2018,"contact-name":"Martin
46
+ Fenner","contact-email":"mfenner@datacite.org","domains":"*","url":null,"is-active":true,"has-password":false,"created":"2018-08-06T12:46:43Z","updated":"2018-08-22T02:36:18Z"},"relationships":{"prefixes":{"meta":{}},"provider":{"meta":{}},"repository":{"meta":{}}}},{"id":"datacite","type":"providers","attributes":{"name":"DataCite","symbol":"DATACITE","website":null,"contact-name":"DataCite
47
+ Support","contact-email":"info@datacite.org","phone":null,"description":null,"country":"DE","logo-url":null,"institution-type":null,"is-active":true,"has-password":true,"joined":null,"created":"2011-12-07T13:41:07.000Z","updated":"2018-08-22T02:25:51.000Z"},"relationships":{"clients":{"meta":{}},"prefixes":{"meta":{}}}}]}'
48
+ http_version:
49
+ recorded_at: Wed, 22 Aug 2018 06:38:30 GMT
50
+ - request:
51
+ method: get
52
+ uri: https://search.datacite.org/api?defType=edismax&fl=doi,url,xml,state,allocator_symbol,datacentre_symbol,media,minted,updated&q=10.23725/8na3-9s47&wt=json
53
+ body:
54
+ encoding: US-ASCII
55
+ string: ''
56
+ headers:
57
+ User-Agent:
58
+ - Mozilla/5.0 (compatible; Maremma/4.1.1; +https://github.com/datacite/maremma)
59
+ Accept:
60
+ - text/html,application/json,application/xml;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5
61
+ response:
62
+ status:
63
+ code: 200
64
+ message: OK
65
+ headers:
66
+ Date:
67
+ - Wed, 22 Aug 2018 06:38:30 GMT
68
+ Content-Type:
69
+ - application/json;charset=UTF-8
70
+ Connection:
71
+ - keep-alive
72
+ Server:
73
+ - nginx/1.10.3 (Ubuntu)
74
+ Access-Control-Allow-Origin:
75
+ - "*"
76
+ Access-Control-Allow-Methods:
77
+ - GET, POST, PUT, DELETE, OPTIONS
78
+ Access-Control-Allow-Headers:
79
+ - DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,Authorization
80
+ Access-Control-Expose-Headers:
81
+ - DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,Authorization
82
+ body:
83
+ encoding: ASCII-8BIT
84
+ string: '{"responseHeader":{"status":0,"QTime":17},"response":{"numFound":2,"start":0,"docs":[{"datacentre_symbol":"DATACITE.TOPMED","url":"https://ors.datacite.org/doi:/10.23725/8na3-9s47","xml":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHJlc291cmNlIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zPSJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtNCIgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtNCBodHRwOi8vc2NoZW1hLmRhdGFjaXRlLm9yZy9tZXRhL2tlcm5lbC00L21ldGFkYXRhLnhzZCI+CiAgPGlkZW50aWZpZXIgaWRlbnRpZmllclR5cGU9IkRPSSI+MTAuMjM3MjUvOE5BMy05UzQ3PC9pZGVudGlmaWVyPgogIDxjcmVhdG9ycz4KICAgIDxjcmVhdG9yPgogICAgICA8Y3JlYXRvck5hbWUgbmFtZVR5cGU9Ik9yZ2FuaXphdGlvbmFsIj5UT1BNZWQgSVJDPC9jcmVhdG9yTmFtZT4KICAgIDwvY3JlYXRvcj4KICA8L2NyZWF0b3JzPgogIDx0aXRsZXM+CiAgICA8dGl0bGU+TldEMTY1ODI3LnJlY2FiLmNyYW08L3RpdGxlPgogIDwvdGl0bGVzPgogIDxwdWJsaXNoZXI+VE9QTWVkPC9wdWJsaXNoZXI+CiAgPHB1YmxpY2F0aW9uWWVhcj4yMDE3PC9wdWJsaWNhdGlvblllYXI+CiAgPHJlc291cmNlVHlwZSByZXNvdXJjZVR5cGVHZW5lcmFsPSJEYXRhc2V0Ij5DUkFNIGZpbGU8L3Jlc291cmNlVHlwZT4KICA8c3ViamVjdHM+CiAgICA8c3ViamVjdD50b3BtZWQ8L3N1YmplY3Q+CiAgICA8c3ViamVjdD53aG9sZSBnZW5vbWUgc2VxdWVuY2luZzwvc3ViamVjdD4KICA8L3N1YmplY3RzPgogIDxmdW5kaW5nUmVmZXJlbmNlcz4KICAgIDxmdW5kaW5nUmVmZXJlbmNlPgogICAgICA8ZnVuZGVyTmFtZT5OYXRpb25hbCBIZWFydCwgTHVuZywgYW5kIEJsb29kIEluc3RpdHV0ZSAoTkhMQkkpPC9mdW5kZXJOYW1lPgogICAgICA8ZnVuZGVySWRlbnRpZmllciBmdW5kZXJJZGVudGlmaWVyVHlwZT0iQ3Jvc3NyZWYgRnVuZGVyIElEIj5odHRwczovL2RvaS5vcmcvMTAuMTMwMzkvMTAwMDAwMDUwPC9mdW5kZXJJZGVudGlmaWVyPgogICAgPC9mdW5kaW5nUmVmZXJlbmNlPgogIDwvZnVuZGluZ1JlZmVyZW5jZXM+CiAgPGRhdGVzPgogICAgPGRhdGUgZGF0ZVR5cGU9Iklzc3VlZCI+MjAxNy0xMS0zMDwvZGF0ZT4KICA8L2RhdGVzPgogIDxhbHRlcm5hdGVJZGVudGlmaWVycz4KICAgIDxhbHRlcm5hdGVJZGVudGlmaWVyIGFsdGVybmF0ZUlkZW50aWZpZXJUeXBlPSJtZDUiPjNiMzNmNmI5MzM4ZmNjYWIwOTAxYjdkMzE3NTc3ZWEzPC9hbHRlcm5hdGVJZGVudGlmaWVyPgogICAgPGFsdGVybmF0ZUlkZW50aWZpZXIgYWx0ZXJuYXRlSWRlbnRpZmllclR5cGU9Im1pbmlkIj5hcms6Lzk5OTk5L2ZrNDFDclU0ZXN6ZUxVRGU8L2FsdGVybmF0ZUlkZW50aWZpZXI+CiAgICA8YWx0ZXJuYXRlSWRlbnRpZmllciBhbHRlcm5hdGVJZGVudGlmaWVyVHlwZT0iZGF0YWd1aWQiPmRnLjQ1MDMvYzNkNjZkYzktNThkYS00MTFjLTgzYzQtZGQ2NTZhYTNjNGI3PC9hbHRlcm5hdGVJZGVudGlmaWVyPgogIDwvYWx0ZXJuYXRlSWRlbnRpZmllcnM+CiAgPHJlbGF0ZWRJZGVudGlmaWVycz4KICAgIDxyZWxhdGVkSWRlbnRpZmllciByZWxhdGVkSWRlbnRpZmllclR5cGU9IkRPSSIgcmVsYXRpb25UeXBlPSJJc1JlcXVpcmVkQnkiPjEwLjIzNzI1L3diNWgtZHA1MzwvcmVsYXRlZElkZW50aWZpZXI+CiAgPC9yZWxhdGVkSWRlbnRpZmllcnM+CiAgPHZlcnNpb24vPgo8L3Jlc291cmNlPg==","allocator_symbol":"DATACITE","minted":"2018-08-16T15:04:36Z","state":"findable","updated":"2018-08-16T15:04:36Z","doi":"10.23725/8NA3-9S47","media":["text/vnd.cram+s3:s3://cgp-commons-public/topmed_open_access/197bc047-e917-55ed-852d-d563cdbc50e4/NWD165827.recab.cram","text/vnd.cram+gs:gs://topmed-irc-share/public/NWD165827.recab.cram"]},{"datacentre_symbol":"DATACITE.TOPMED","url":"https://ors.datacite.org/doi:/10.23725/2g4s-qv04","xml":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHJlc291cmNlIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zPSJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtNCIgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtNCBodHRwOi8vc2NoZW1hLmRhdGFjaXRlLm9yZy9tZXRhL2tlcm5lbC00L21ldGFkYXRhLnhzZCI+CiAgPGlkZW50aWZpZXIgaWRlbnRpZmllclR5cGU9IkRPSSI+MTAuMjM3MjUvMkc0Uy1RVjA0PC9pZGVudGlmaWVyPgogIDxjcmVhdG9ycz4KICAgIDxjcmVhdG9yPgogICAgICA8Y3JlYXRvck5hbWUgbmFtZVR5cGU9Ik9yZ2FuaXphdGlvbmFsIj5UT1BNZWQgSVJDPC9jcmVhdG9yTmFtZT4KICAgIDwvY3JlYXRvcj4KICA8L2NyZWF0b3JzPgogIDx0aXRsZXM+CiAgICA8dGl0bGU+TldEMTY1ODI3LnJlY2FiLmNyYW0uY3JhaTwvdGl0bGU+CiAgPC90aXRsZXM+CiAgPHB1Ymxpc2hlcj5UT1BNZWQ8L3B1Ymxpc2hlcj4KICA8cHVibGljYXRpb25ZZWFyPjIwMTc8L3B1YmxpY2F0aW9uWWVhcj4KICA8cmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZUdlbmVyYWw9IkRhdGFzZXQiPkNSQU0uY3JhaSBpbmRleCBmaWxlPC9yZXNvdXJjZVR5cGU+CiAgPHN1YmplY3RzPgogICAgPHN1YmplY3Q+dG9wbWVkPC9zdWJqZWN0PgogICAgPHN1YmplY3Q+d2hvbGUgZ2Vub21lIHNlcXVlbmNpbmc8L3N1YmplY3Q+CiAgPC9zdWJqZWN0cz4KICA8ZnVuZGluZ1JlZmVyZW5jZXM+CiAgICA8ZnVuZGluZ1JlZmVyZW5jZT4KICAgICAgPGZ1bmRlck5hbWU+TmF0aW9uYWwgSGVhcnQsIEx1bmcsIGFuZCBCbG9vZCBJbnN0aXR1dGUgKE5ITEJJKTwvZnVuZGVyTmFtZT4KICAgICAgPGZ1bmRlcklkZW50aWZpZXIgZnVuZGVySWRlbnRpZmllclR5cGU9IkNyb3NzcmVmIEZ1bmRlciBJRCI+aHR0cHM6Ly9kb2kub3JnLzEwLjEzMDM5LzEwMDAwMDA1MDwvZnVuZGVySWRlbnRpZmllcj4KICAgIDwvZnVuZGluZ1JlZmVyZW5jZT4KICA8L2Z1bmRpbmdSZWZlcmVuY2VzPgogIDxkYXRlcz4KICAgIDxkYXRlIGRhdGVUeXBlPSJJc3N1ZWQiPjIwMTctMTEtMzA8L2RhdGU+CiAgPC9kYXRlcz4KICA8YWx0ZXJuYXRlSWRlbnRpZmllcnM+CiAgICA8YWx0ZXJuYXRlSWRlbnRpZmllciBhbHRlcm5hdGVJZGVudGlmaWVyVHlwZT0ibWQ1Ij4zYjMzZjZiOTMzOGZjY2FiMDkwMWI3ZDMxNzU3N2VhMzwvYWx0ZXJuYXRlSWRlbnRpZmllcj4KICAgIDxhbHRlcm5hdGVJZGVudGlmaWVyIGFsdGVybmF0ZUlkZW50aWZpZXJUeXBlPSJtaW5pZCI+YXJrOi85OTk5OS9mazQxQ3JVNGVzemVMVURlPC9hbHRlcm5hdGVJZGVudGlmaWVyPgogICAgPGFsdGVybmF0ZUlkZW50aWZpZXIgYWx0ZXJuYXRlSWRlbnRpZmllclR5cGU9ImRhdGFndWlkIj5kZy40NTAzL2MzZDY2ZGM5LTU4ZGEtNDExYy04M2M0LWRkNjU2YWEzYzRiNzwvYWx0ZXJuYXRlSWRlbnRpZmllcj4KICA8L2FsdGVybmF0ZUlkZW50aWZpZXJzPgogIDxyZWxhdGVkSWRlbnRpZmllcnM+CiAgICA8cmVsYXRlZElkZW50aWZpZXIgcmVsYXRlZElkZW50aWZpZXJUeXBlPSJET0kiIHJlbGF0aW9uVHlwZT0iUmVxdWlyZXMiPjEwLjIzNzI1LzhuYTMtOXM0NzwvcmVsYXRlZElkZW50aWZpZXI+CiAgPC9yZWxhdGVkSWRlbnRpZmllcnM+CiAgPHZlcnNpb24vPgo8L3Jlc291cmNlPg==","allocator_symbol":"DATACITE","minted":"2018-08-16T15:09:11Z","state":"findable","updated":"2018-08-16T15:09:11Z","doi":"10.23725/2G4S-QV04","media":["text/vnd.cram.crai+s3:s3://cgp-commons-public/topmed_open_access/197bc047-e917-55ed-852d-d563cdbc50e4/NWD165827.recab.cram.crai","text/vnd.cram.crai+gs:gs://topmed-irc-share/public/NWD165827.recab.cram.crai"]}]}}
85
+
86
+ '
87
+ http_version:
88
+ recorded_at: Wed, 22 Aug 2018 06:38:30 GMT
89
+ recorded_with: VCR 3.0.3