bolognese 0.11.7 → 0.12

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 (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