bolognese 1.0.12 → 1.0.13

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 347b7bb3e8466ba382357816de4d0a07ef64424ec37244b98f12372c0d475ee8
4
- data.tar.gz: a5cef69c662b4fa675951c37d175bde3ff4556252e0176309f2769cfb4544359
3
+ metadata.gz: 1bc5619b1c9dc7435a062e1e9e143c190594087d80e7cb7dac27df816804cd88
4
+ data.tar.gz: 0bc05be427ae2be8b3e9adcebd2eb25d2660409425da9d15c98c319f936fa3a0
5
5
  SHA512:
6
- metadata.gz: a49a0ddaf9749f22de36e8e3d941c664135c540d8815a4cbcefcbe64ebc4922b3ae138194c41df003dcdb194ea99c796dc726b339b27cbbae9d93fb880995a07
7
- data.tar.gz: f1298514c8b8e175754502de187e067eb89da8692bce34cf8e76a17de9501275a9db465a47641538e6456317c4876a806996c5d4c17a271cc15b7e0a466b818d
6
+ metadata.gz: 9115ce5569d2d3a3e2a9b189fa0e2901bb72837704ff8174b742ed05cd4cbb8ad84a7a79e8f0e7635469f0aec480e750d823a80f8f0fe57750dc69de27db54cd
7
+ data.tar.gz: 9238067f30a00dba50cd61a22b4c64b9d3e04f155a2531a3edb2b58cda1d906741bf664f019e4029dbe9e221f881c21e2d0a8e9d6dcc1ceb8a1f59fff6c4abbc
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bolognese (1.0.12)
4
+ bolognese (1.0.13)
5
5
  activesupport (>= 4.2.5, < 6)
6
6
  benchmark_methods (~> 0.7)
7
7
  bibtex-ruby (~> 4.1)
@@ -85,24 +85,38 @@ module Bolognese
85
85
  }.compact
86
86
 
87
87
  titles = Array.wrap(meta.dig("titles", "title")).map do |r|
88
- if r.is_a?(String)
88
+ if r.blank?
89
+ nil
90
+ elsif r.is_a?(String)
89
91
  { "title" => sanitize(r) }
90
92
  else
91
93
  { "title" => sanitize(r["__content__"]), "titleType" => r["titleType"], "lang" => r["lang"] }.compact
92
94
  end
93
- end
95
+ end.compact
94
96
 
95
97
  alternate_identifiers = Array.wrap(meta.dig("alternateIdentifiers", "alternateIdentifier")).map do |r|
96
98
  { "alternateIdentifierType" => r["alternateIdentifierType"], "alternateIdentifier" => r["__content__"].presence }.compact
97
99
  end.compact
98
- descriptions = Array.wrap(meta.dig("descriptions", "description")).select { |r| r["descriptionType"] != "SeriesInformation" }.map do |r|
99
- { "description" => sanitize(r["__content__"]), "descriptionType" => r["descriptionType"], "lang" => r["lang"] }.compact
100
- end
100
+ descriptions = Array.wrap(meta.dig("descriptions", "description")).map do |r|
101
+ if r.blank?
102
+ nil
103
+ elsif r.is_a?(String)
104
+ { "description" => sanitize(r), "descriptionType" => "Abstract" }
105
+ elsif r.is_a?(Hash)
106
+ { "description" => sanitize(r["__content__"]), "descriptionType" => r["descriptionType"], "lang" => r["lang"] }.compact
107
+ end
108
+ end.compact
101
109
  rights_list = Array.wrap(meta.dig("rightsList", "rights")).map do |r|
102
- { "rights" => r["__content__"], "rightsUri" => normalize_url(r["rightsURI"]), "lang" => r["lang"] }.compact
103
- end
110
+ if r.blank?
111
+ nil
112
+ elsif r.is_a?(String)
113
+ { "rights" => r }
114
+ elsif r.is_a?(Hash)
115
+ { "rights" => r["__content__"], "rightsUri" => normalize_url(r["rightsURI"]), "lang" => r["lang"] }.compact
116
+ end
117
+ end.compact
104
118
  subjects = Array.wrap(meta.dig("subjects", "subject")).map do |k|
105
- if k.nil?
119
+ if k.blank?
106
120
  nil
107
121
  elsif k.is_a?(String)
108
122
  { "subject" => sanitize(k) }
@@ -116,7 +130,7 @@ module Bolognese
116
130
  "dateType" => parse_attributes(d, content: "dateType"),
117
131
  "dateInformation" => parse_attributes(d, content: "dateInformation")
118
132
  }.compact
119
- end
133
+ end.compact
120
134
  dates << { "date" => meta.fetch("publicationYear", nil), "dateType" => "Issued" } if meta.fetch("publicationYear", nil).present? && get_date(dates, "Issued").blank?
121
135
  sizes = Array.wrap(meta.dig("sizes", "size"))
122
136
  formats = Array.wrap(meta.dig("formats", "format"))
@@ -455,9 +455,13 @@ module Bolognese
455
455
  def normalize_url(id)
456
456
  return nil unless id.present?
457
457
 
458
+ # handle info URIs
459
+ return id if id.to_s.start_with?("info")
460
+
458
461
  # check for valid HTTP uri
459
462
  uri = Addressable::URI.parse(id)
460
- return nil unless uri && uri.host && %w(http https).include?(uri.scheme)
463
+
464
+ return nil unless uri && uri.host && %w(http https ftp).include?(uri.scheme)
461
465
 
462
466
  # clean up URL
463
467
  PostRank::URI.clean(id)
@@ -1,3 +1,3 @@
1
1
  module Bolognese
2
- VERSION = "1.0.12"
2
+ VERSION = "1.0.13"
3
3
  end
@@ -0,0 +1,59 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <resource xmlns="http://datacite.org/schema/kernel-3" xmlns:dim="http://www.dspace.org/xmlns/dspace/dim" xmlns:dryad="http://purl.org/dryad/terms/" xmlns:dspace="http://www.dspace.org/xmlns/dspace/dim" xmlns:mets="http://www.loc.gov/METS/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://datacite.org/schema/kernel-3 http://schema.datacite.org/meta/kernel-3/metadata.xsd">
3
+ <identifier identifierType="DOI">10.5061/DRYAD.8515</identifier>
4
+ <version>1</version>
5
+ <creators>
6
+ <creator>
7
+ <creatorName>Ollomo, Benjamin</creatorName>
8
+ </creator>
9
+ <creator>
10
+ <creatorName>Durand, Patrick</creatorName>
11
+ </creator>
12
+ <creator>
13
+ <creatorName>Prugnolle, Franck</creatorName>
14
+ </creator>
15
+ <creator>
16
+ <creatorName>Douzery, Emmanuel J. P.</creatorName>
17
+ </creator>
18
+ <creator>
19
+ <creatorName>Arnathau, Céline</creatorName>
20
+ </creator>
21
+ <creator>
22
+ <creatorName>Nkoghe, Dieudonné</creatorName>
23
+ </creator>
24
+ <creator>
25
+ <creatorName>Leroy, Eric</creatorName>
26
+ </creator>
27
+ <creator>
28
+ <creatorName>Renaud, François</creatorName>
29
+ </creator>
30
+ </creators>
31
+ <titles>
32
+ <title>Data from: A new malaria agent in African hominids.</title>
33
+ </titles>
34
+ <publisher>Dryad Digital Repository</publisher>
35
+ <publicationYear>2011</publicationYear>
36
+ <subjects>
37
+ <subject>Phylogeny</subject>
38
+ <subject>Malaria</subject>
39
+ <subject>Parasites</subject>
40
+ <subject>Taxonomy</subject>
41
+ <subject>Mitochondrial genome</subject>
42
+ <subject>Africa</subject>
43
+ <subject>Plasmodium</subject>
44
+ </subjects>
45
+ <resourceType resourceTypeGeneral="Dataset">DataPackage</resourceType>
46
+ <alternateIdentifiers>
47
+ <alternateIdentifier alternateIdentifierType="citation">Ollomo B, Durand P, Prugnolle F, Douzery EJP, Arnathau C, Nkoghe D, Leroy E, Renaud F (2009) A new malaria agent in African hominids. PLoS Pathogens 5(5): e1000446.</alternateIdentifier>
48
+ </alternateIdentifiers>
49
+ <relatedIdentifiers>
50
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="HasPart">10.5061/DRYAD.8515/1</relatedIdentifier>
51
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="HasPart">10.5061/DRYAD.8515/2</relatedIdentifier>
52
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="IsReferencedBy">10.1371/JOURNAL.PPAT.1000446</relatedIdentifier>
53
+ <relatedIdentifier relatedIdentifierType="PMID" relationType="IsReferencedBy">19478877</relatedIdentifier>
54
+ </relatedIdentifiers>
55
+ <rightsList>
56
+ <rights>info:eu-repo/semantics/openAccess</rights>
57
+ <rights rightsURI="info:eu-repo/semantics/openAccess">Open Access</rights>
58
+ </rightsList>
59
+ </resource>
@@ -0,0 +1,58 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <resource xmlns="http://datacite.org/schema/kernel-3" xmlns:dim="http://www.dspace.org/xmlns/dspace/dim" xmlns:dryad="http://purl.org/dryad/terms/" xmlns:dspace="http://www.dspace.org/xmlns/dspace/dim" xmlns:mets="http://www.loc.gov/METS/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://datacite.org/schema/kernel-3 http://schema.datacite.org/meta/kernel-3/metadata.xsd">
3
+ <identifier identifierType="DOI">10.5061/DRYAD.8515</identifier>
4
+ <version>1</version>
5
+ <creators>
6
+ <creator>
7
+ <creatorName>Ollomo, Benjamin</creatorName>
8
+ </creator>
9
+ <creator>
10
+ <creatorName>Durand, Patrick</creatorName>
11
+ </creator>
12
+ <creator>
13
+ <creatorName>Prugnolle, Franck</creatorName>
14
+ </creator>
15
+ <creator>
16
+ <creatorName>Douzery, Emmanuel J. P.</creatorName>
17
+ </creator>
18
+ <creator>
19
+ <creatorName>Arnathau, Céline</creatorName>
20
+ </creator>
21
+ <creator>
22
+ <creatorName>Nkoghe, Dieudonné</creatorName>
23
+ </creator>
24
+ <creator>
25
+ <creatorName>Leroy, Eric</creatorName>
26
+ </creator>
27
+ <creator>
28
+ <creatorName>Renaud, François</creatorName>
29
+ </creator>
30
+ </creators>
31
+ <titles>
32
+ <title>Data from: A new malaria agent in African hominids.</title>
33
+ </titles>
34
+ <publisher>Dryad Digital Repository</publisher>
35
+ <publicationYear>2011</publicationYear>
36
+ <subjects>
37
+ <subject>Phylogeny</subject>
38
+ <subject>Malaria</subject>
39
+ <subject>Parasites</subject>
40
+ <subject>Taxonomy</subject>
41
+ <subject>Mitochondrial genome</subject>
42
+ <subject>Africa</subject>
43
+ <subject>Plasmodium</subject>
44
+ </subjects>
45
+ <resourceType resourceTypeGeneral="Dataset">DataPackage</resourceType>
46
+ <alternateIdentifiers>
47
+ <alternateIdentifier alternateIdentifierType="citation">Ollomo B, Durand P, Prugnolle F, Douzery EJP, Arnathau C, Nkoghe D, Leroy E, Renaud F (2009) A new malaria agent in African hominids. PLoS Pathogens 5(5): e1000446.</alternateIdentifier>
48
+ </alternateIdentifiers>
49
+ <relatedIdentifiers>
50
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="HasPart">10.5061/DRYAD.8515/1</relatedIdentifier>
51
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="HasPart">10.5061/DRYAD.8515/2</relatedIdentifier>
52
+ <relatedIdentifier relatedIdentifierType="DOI" relationType="IsReferencedBy">10.1371/JOURNAL.PPAT.1000446</relatedIdentifier>
53
+ <relatedIdentifier relatedIdentifierType="PMID" relationType="IsReferencedBy">19478877</relatedIdentifier>
54
+ </relatedIdentifiers>
55
+ <rightsList>
56
+ <rights rightsURI="http://creativecommons.org/publicdomain/zero/1.0/" />
57
+ </rightsList>
58
+ </resource>
@@ -111,7 +111,7 @@ describe Bolognese::Metadata, vcr: true do
111
111
  expect(subject.creator).to eq([{"type"=>"Person", "name"=>"Kristian Garza", "givenName"=>"Kristian", "familyName"=>"Garza"}])
112
112
  expect(subject.titles).to eq([{"title"=>"Analysis Tools For Crossover Experiment Of Ui Using Choice Architecture"}])
113
113
  expect(subject.descriptions.first["description"]).to start_with("This tools are used to analyse the data produced by the Crosssover Experiment")
114
- expect(subject.rights_list).to eq([{"rightsUri"=>"https://creativecommons.org/licenses/by-nc-sa/4.0", "rights"=>"Creative Commons Attribution-NonCommercial-ShareAlike"}, {"rights"=>"Open Access"}])
114
+ expect(subject.rights_list).to eq([{"rights"=>"Creative Commons Attribution-NonCommercial-ShareAlike", "rightsUri"=>"https://creativecommons.org/licenses/by-nc-sa/4.0"},{"rights"=>"Open Access", "rightsUri"=>"info:eu-repo/semantics/openAccess"}])
115
115
  expect(subject.dates).to eq([{"date"=>"2016-03-27", "dateType"=>"Issued"}])
116
116
  expect(subject.publication_year).to eq("2016")
117
117
  expect(subject.related_identifiers.length).to eq(1)
@@ -418,6 +418,31 @@ describe Bolognese::Metadata, vcr: true do
418
418
  expect(subject.schema_version).to eq("http://datacite.org/schema/kernel-4.0")
419
419
  end
420
420
 
421
+ it "Schema 3 from string" do
422
+ input = fixture_path + "datacite_schema_3.xml"
423
+ subject = Bolognese::Metadata.new(input: input)
424
+ expect(subject.valid?).to be true
425
+ expect(subject.identifier).to eq("https://doi.org/10.5061/dryad.8515")
426
+ expect(subject.types["schemaOrg"]).to eq("Dataset")
427
+ expect(subject.types["resourceType"]).to eq("DataPackage")
428
+ expect(subject.types["resourceTypeGeneral"]).to eq("Dataset")
429
+ expect(subject.types["ris"]).to eq("DATA")
430
+ expect(subject.types["citeproc"]).to eq("dataset")
431
+ expect(subject.creator.length).to eq(8)
432
+ expect(subject.creator.last).to eq("familyName"=>"Renaud", "givenName"=>"François", "name"=>"François Renaud", "type"=>"Person")
433
+ expect(subject.titles).to eq([{"title"=>"Data from: A new malaria agent in African hominids."}])
434
+ expect(subject.alternate_identifiers).to eq([{"alternateIdentifier"=>
435
+ "Ollomo B, Durand P, Prugnolle F, Douzery EJP, Arnathau C, Nkoghe D, Leroy E, Renaud F (2009) A new malaria agent in African hominids. PLoS Pathogens 5(5): e1000446.",
436
+ "alternateIdentifierType"=>"citation"}])
437
+ expect(subject.publication_year).to eq("2011")
438
+ expect(subject.related_identifiers.length).to eq(4)
439
+ expect(subject.related_identifiers.last).to eq("relatedIdentifier"=>"19478877", "relatedIdentifierType"=>"PMID", "relationType"=>"IsReferencedBy")
440
+ expect(subject.rights_list).to eq([{"rightsUri"=>"http://creativecommons.org/publicdomain/zero/1.0"}])
441
+ expect(subject.publisher).to eq("Dryad Digital Repository")
442
+ expect(subject.source).to eq("DataCite")
443
+ expect(subject.schema_version).to eq("http://datacite.org/schema/kernel-3")
444
+ end
445
+
421
446
  it "Schema 3.0 from string" do
422
447
  input = fixture_path + "datacite-example-complicated-v3.0.xml"
423
448
  subject = Bolognese::Metadata.new(input: input)
@@ -550,7 +575,7 @@ describe Bolognese::Metadata, vcr: true do
550
575
  expect(subject.dates).to eq([{"date"=>"2008-11-01", "dateType"=>"Valid"}, {"date"=>"2008", "dateType"=>"Issued"}])
551
576
  expect(subject.publication_year).to eq("2008")
552
577
  expect(subject.periodical).to eq("title"=>"23rd European Photovoltaic Solar Energy Conference and Exhibition, 1-5 September 2008, Valencia, Spain; 3353-3356", "type"=>"Periodical")
553
- expect(subject.descriptions.first["description"]).to start_with("Aim of this paper is the presentation")
578
+ expect(subject.descriptions[1]["description"]).to start_with("Aim of this paper is the presentation")
554
579
  expect(subject.publisher).to eq("WIP-Munich")
555
580
  expect(subject.source).to eq("DataCite")
556
581
  expect(subject.schema_version).to eq("http://datacite.org/schema/kernel-2.2")
@@ -660,6 +685,13 @@ describe Bolognese::Metadata, vcr: true do
660
685
  expect(subject.schema_version).to eq("http://datacite.org/schema/kernel-3")
661
686
  end
662
687
 
688
+ it "multiple rights" do
689
+ input = fixture_path + "datacite-multiple-rights.xml"
690
+ subject = Bolognese::Metadata.new(input: input)
691
+ expect(subject.valid?).to be true
692
+ expect(subject.rights_list).to eq([{"rights"=>"info:eu-repo/semantics/openAccess"}, {"rights"=>"Open Access", "rightsUri"=>"info:eu-repo/semantics/openAccess"}])
693
+ end
694
+
663
695
  it "missing creator" do
664
696
  input = fixture_path + "datacite_missing_creator.xml"
665
697
  subject = Bolognese::Metadata.new(input: input, regenerate: true)
data/spec/utils_spec.rb CHANGED
@@ -215,7 +215,7 @@ describe Bolognese::Metadata, vcr: true do
215
215
  it "uri" do
216
216
  url = "info:eu-repo/semantics/openAccess"
217
217
  response = subject.normalize_url(url)
218
- expect(response).to be_nil
218
+ expect(response).to eq("info:eu-repo/semantics/openAccess")
219
219
  end
220
220
  end
221
221
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bolognese
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.12
4
+ version: 1.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Fenner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-16 00:00:00.000000000 Z
11
+ date: 2018-11-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: maremma
@@ -674,12 +674,14 @@ files:
674
674
  - spec/fixtures/datacite-geolocation-empty.xml
675
675
  - spec/fixtures/datacite-metadata-sample-complicated-v2.2.xml
676
676
  - spec/fixtures/datacite-multiple-language.xml
677
+ - spec/fixtures/datacite-multiple-rights.xml
677
678
  - spec/fixtures/datacite-xml-lang.xml
678
679
  - spec/fixtures/datacite.json
679
680
  - spec/fixtures/datacite.xml
680
681
  - spec/fixtures/datacite_dataset.xml
681
682
  - spec/fixtures/datacite_malformed_creator.xml
682
683
  - spec/fixtures/datacite_missing_creator.xml
684
+ - spec/fixtures/datacite_schema_3.xml
683
685
  - spec/fixtures/datacite_software.json
684
686
  - spec/fixtures/datacite_software_missing_comma.json
685
687
  - spec/fixtures/datacite_software_overlapping_keys.json