bolognese 1.0.12 → 1.0.13

Sign up to get free protection for your applications and to get access to all the features.
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