bolognese 1.9.12 → 2.0.0

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 (83) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build.yml +2 -30
  3. data/.github/workflows/ci.yml +22 -0
  4. data/.github/workflows/pull-request.yml +9 -0
  5. data/.github/workflows/release.yml +7 -22
  6. data/.gitignore +1 -0
  7. data/CHANGELOG.md +71 -0
  8. data/Gemfile.lock +106 -92
  9. data/bolognese.gemspec +4 -3
  10. data/lib/bolognese/author_utils.rb +19 -6
  11. data/lib/bolognese/datacite_utils.rb +50 -36
  12. data/lib/bolognese/doi_utils.rb +4 -0
  13. data/lib/bolognese/metadata.rb +1 -1
  14. data/lib/bolognese/metadata_utils.rb +1 -1
  15. data/lib/bolognese/readers/bibtex_reader.rb +2 -2
  16. data/lib/bolognese/readers/citeproc_reader.rb +1 -1
  17. data/lib/bolognese/readers/codemeta_reader.rb +2 -2
  18. data/lib/bolognese/readers/crosscite_reader.rb +4 -1
  19. data/lib/bolognese/readers/crossref_reader.rb +3 -4
  20. data/lib/bolognese/readers/datacite_json_reader.rb +4 -1
  21. data/lib/bolognese/readers/datacite_reader.rb +34 -11
  22. data/lib/bolognese/readers/npm_reader.rb +1 -1
  23. data/lib/bolognese/readers/ris_reader.rb +2 -2
  24. data/lib/bolognese/readers/schema_org_reader.rb +6 -6
  25. data/lib/bolognese/utils.rb +84 -14
  26. data/lib/bolognese/version.rb +1 -1
  27. data/lib/bolognese/writers/bibtex_writer.rb +1 -1
  28. data/lib/bolognese/writers/codemeta_writer.rb +1 -1
  29. data/lib/bolognese/writers/csv_writer.rb +1 -1
  30. data/lib/bolognese/writers/datacite_json_writer.rb +6 -1
  31. data/lib/bolognese/writers/jats_writer.rb +3 -3
  32. data/lib/bolognese/writers/ris_writer.rb +2 -2
  33. data/lib/bolognese/writers/schema_org_writer.rb +2 -2
  34. data/resources/kernel-4/include/datacite-relationType-v4.xsd +2 -0
  35. data/resources/kernel-4/include/datacite-resourceType-v4.xsd +2 -0
  36. data/resources/kernel-4/metadata.xsd +11 -7
  37. data/resources/kernel-4.5/include/datacite-contributorType-v4.xsd +35 -0
  38. data/resources/kernel-4.5/include/datacite-dateType-v4.xsd +25 -0
  39. data/resources/kernel-4.5/include/datacite-descriptionType-v4.xsd +19 -0
  40. data/resources/kernel-4.5/include/datacite-funderIdentifierType-v4.xsd +16 -0
  41. data/resources/kernel-4.5/include/datacite-nameType-v4.xsd +10 -0
  42. data/resources/kernel-4.5/include/datacite-numberType-v4.xsd +12 -0
  43. data/resources/kernel-4.5/include/datacite-relatedIdentifierType-v4.xsd +34 -0
  44. data/resources/kernel-4.5/include/datacite-relationType-v4.xsd +53 -0
  45. data/resources/kernel-4.5/include/datacite-resourceType-v4.xsd +45 -0
  46. data/resources/kernel-4.5/include/datacite-titleType-v4.xsd +14 -0
  47. data/resources/kernel-4.5/include/xml.xsd +286 -0
  48. data/resources/kernel-4.5/metadata.xsd +711 -0
  49. data/resources/oecd/dfg-mappings.json +1866 -0
  50. data/spec/author_utils_spec.rb +61 -2
  51. data/spec/datacite_utils_spec.rb +30 -1
  52. data/spec/fixtures/citeproc.json +4 -2
  53. data/spec/fixtures/datacite-example-ROR-nameIdentifiers.xml +117 -0
  54. data/spec/fixtures/datacite-example-full-v4.5.xml +255 -0
  55. data/spec/fixtures/datacite-example-nameIdentifier-with-schemeURI.xml +94 -0
  56. data/spec/fixtures/datacite-example-relateditems-with-attributes.xml +61 -0
  57. data/spec/fixtures/datacite-funderIdentifier.xml +20 -0
  58. data/spec/fixtures/datacite-seriesinformation.xml +7 -2
  59. data/spec/fixtures/datacite.json +9 -3
  60. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_items/insert.yml +73 -0
  61. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_subjects/insert.yml +32 -14
  62. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_orcid/validate_orcid_sandbox.yml +65 -0
  63. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_orcid/validate_orcid_sandbox_https.yml +65 -0
  64. data/spec/metadata_spec.rb +1 -1
  65. data/spec/readers/bibtex_reader_spec.rb +2 -0
  66. data/spec/readers/citeproc_reader_spec.rb +3 -0
  67. data/spec/readers/codemeta_reader_spec.rb +4 -4
  68. data/spec/readers/crosscite_reader_spec.rb +2 -0
  69. data/spec/readers/crossref_reader_spec.rb +41 -41
  70. data/spec/readers/datacite_json_reader_spec.rb +3 -1
  71. data/spec/readers/datacite_reader_spec.rb +156 -50
  72. data/spec/readers/npm_reader_spec.rb +2 -0
  73. data/spec/readers/ris_reader_spec.rb +3 -0
  74. data/spec/readers/schema_org_reader_spec.rb +11 -11
  75. data/spec/spec_helper.rb +1 -0
  76. data/spec/utils_spec.rb +53 -4
  77. data/spec/writers/crosscite_writer_spec.rb +7 -0
  78. data/spec/writers/datacite_json_writer_spec.rb +38 -0
  79. data/spec/writers/datacite_writer_spec.rb +84 -5
  80. data/spec/writers/jats_writer_spec.rb +8 -0
  81. data/spec/writers/rdf_xml_writer_spec.rb +7 -0
  82. data/spec/writers/turtle_writer_spec.rb +18 -0
  83. metadata +49 -21
@@ -10,6 +10,8 @@ describe Bolognese::Metadata, vcr: true do
10
10
  ttl = subject.turtle.split("\n")
11
11
  expect(ttl[0]).to eq("@prefix schema: <http://schema.org/> .")
12
12
  expect(ttl[2]).to eq("<https://doi.org/10.7554/elife.01567> a schema:ScholarlyArticle;")
13
+ publisher_line = ttl.find_index(' schema:publisher [') + 2
14
+ expect(ttl[publisher_line]).to eq(" schema:name \"{eLife} Sciences Organisation, Ltd.\"")
13
15
  end
14
16
 
15
17
  it "Dataset" do
@@ -19,6 +21,8 @@ describe Bolognese::Metadata, vcr: true do
19
21
  ttl = subject.turtle.split("\n")
20
22
  expect(ttl[0]).to eq("@prefix schema: <http://schema.org/> .")
21
23
  expect(ttl[2]).to eq("<https://doi.org/10.5061/dryad.8515> a schema:Dataset;")
24
+ publisher_line = ttl.find_index(' schema:publisher [') + 2
25
+ expect(ttl[publisher_line]).to eq(" schema:name \"Dryad\"")
22
26
  end
23
27
 
24
28
  it "BlogPosting" do
@@ -28,6 +32,8 @@ describe Bolognese::Metadata, vcr: true do
28
32
  ttl = subject.turtle.split("\n")
29
33
  expect(ttl[0]).to eq("@prefix schema: <http://schema.org/> .")
30
34
  expect(ttl[2]).to eq("<https://doi.org/10.5438/4k3m-nyvg> a schema:ScholarlyArticle;")
35
+ publisher_line = ttl.find_index(' schema:publisher [') + 2
36
+ expect(ttl[publisher_line]).to eq(" schema:name \"DataCite\"")
31
37
  end
32
38
 
33
39
  it "BlogPosting Citeproc JSON" do
@@ -36,6 +42,8 @@ describe Bolognese::Metadata, vcr: true do
36
42
  ttl = subject.turtle.split("\n")
37
43
  expect(ttl[0]).to eq("@prefix schema: <http://schema.org/> .")
38
44
  expect(ttl[2]).to eq("<https://doi.org/10.5438/4k3m-nyvg> a schema:BlogPosting;")
45
+ publisher_line = ttl.find_index(' schema:publisher [') + 2
46
+ expect(ttl[publisher_line]).to eq(" schema:name \"DataCite\"")
39
47
  end
40
48
 
41
49
  it "BlogPosting DataCite JSON" do
@@ -44,6 +52,8 @@ describe Bolognese::Metadata, vcr: true do
44
52
  ttl = subject.turtle.split("\n")
45
53
  expect(ttl[0]).to eq("@prefix schema: <http://schema.org/> .")
46
54
  expect(ttl[2]).to eq("<https://doi.org/10.5438/4k3m-nyvg> a schema:ScholarlyArticle;")
55
+ publisher_line = ttl.find_index(' schema:publisher [') + 2
56
+ expect(ttl[publisher_line]).to eq(" schema:name \"DataCite\"")
47
57
  end
48
58
 
49
59
  it "BlogPosting schema.org" do
@@ -53,6 +63,8 @@ describe Bolognese::Metadata, vcr: true do
53
63
  ttl = subject.turtle.split("\n")
54
64
  expect(ttl[0]).to eq("@prefix schema: <http://schema.org/> .")
55
65
  expect(ttl[2]).to eq("<https://doi.org/10.5438/4k3m-nyvg> a schema:BlogPosting;")
66
+ publisher_line = ttl.find_index(' schema:publisher [') + 2
67
+ expect(ttl[publisher_line]).to eq(" schema:name \"DataCite\"")
56
68
  end
57
69
 
58
70
  it "DataONE" do
@@ -61,6 +73,8 @@ describe Bolognese::Metadata, vcr: true do
61
73
  ttl = subject.turtle.split("\n")
62
74
  expect(ttl[0]).to eq("@prefix schema: <http://schema.org/> .")
63
75
  expect(ttl[2]).to eq("<https://doi.org/10.5063/f1m61h5x> a schema:SoftwareSourceCode;")
76
+ publisher_line = ttl.find_index(' schema:publisher [') + 2
77
+ expect(ttl[publisher_line]).to eq(" schema:name \"https://cran.r-project.org\"")
64
78
  end
65
79
 
66
80
  it "journal article" do
@@ -70,6 +84,8 @@ describe Bolognese::Metadata, vcr: true do
70
84
  ttl = subject.turtle.split("\n")
71
85
  expect(ttl[0]).to eq("@prefix schema: <http://schema.org/> .")
72
86
  expect(ttl[2]).to eq("<https://doi.org/10.7554/elife.01567> a schema:ScholarlyArticle;")
87
+ publisher_line = ttl.find_index(' schema:publisher [') + 2
88
+ expect(ttl[publisher_line]).to eq(" schema:name \"eLife Sciences Publications, Ltd\"")
73
89
  end
74
90
 
75
91
  it "with pages" do
@@ -79,6 +95,8 @@ describe Bolognese::Metadata, vcr: true do
79
95
  ttl = subject.turtle.split("\n")
80
96
  expect(ttl[0]).to eq("@prefix schema: <http://schema.org/> .")
81
97
  expect(ttl[2]).to eq("<https://doi.org/10.1155/2012/291294> a schema:ScholarlyArticle;")
98
+ publisher_line = ttl.find_index(' schema:publisher [') + 2
99
+ expect(ttl[publisher_line]).to eq(" schema:name \"Hindawi Limited\"")
82
100
  end
83
101
  end
84
102
  end
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.9.12
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Fenner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-19 00:00:00.000000000 Z
11
+ date: 2023-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: maremma
@@ -30,34 +30,26 @@ dependencies:
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '5'
33
- - !ruby/object:Gem::Dependency
34
- name: faraday
35
- requirement: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: 0.17.3
40
- type: :runtime
41
- prerelease: false
42
- version_requirements: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - "~>"
45
- - !ruby/object:Gem::Version
46
- version: 0.17.3
47
33
  - !ruby/object:Gem::Dependency
48
34
  name: nokogiri
49
35
  requirement: !ruby/object:Gem::Requirement
50
36
  requirements:
51
- - - "~>"
37
+ - - ">="
52
38
  - !ruby/object:Gem::Version
53
- version: 1.11.2
39
+ version: 1.13.2
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '1.14'
54
43
  type: :runtime
55
44
  prerelease: false
56
45
  version_requirements: !ruby/object:Gem::Requirement
57
46
  requirements:
58
- - - "~>"
47
+ - - ">="
59
48
  - !ruby/object:Gem::Version
60
- version: 1.11.2
49
+ version: 1.13.2
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '1.14'
61
53
  - !ruby/object:Gem::Dependency
62
54
  name: loofah
63
55
  requirement: !ruby/object:Gem::Requirement
@@ -550,6 +542,20 @@ dependencies:
550
542
  - - "<"
551
543
  - !ruby/object:Gem::Version
552
544
  version: 2.0.0
545
+ - !ruby/object:Gem::Dependency
546
+ name: byebug
547
+ requirement: !ruby/object:Gem::Requirement
548
+ requirements:
549
+ - - ">="
550
+ - !ruby/object:Gem::Version
551
+ version: '0'
552
+ type: :development
553
+ prerelease: false
554
+ version_requirements: !ruby/object:Gem::Requirement
555
+ requirements:
556
+ - - ">="
557
+ - !ruby/object:Gem::Version
558
+ version: '0'
553
559
  description: Ruby gem and command-line utility for conversion of DOI metadata from
554
560
  and to different metadata formats, including schema.org.
555
561
  email: mfenner@datacite.org
@@ -561,6 +567,8 @@ extra_rdoc_files:
561
567
  files:
562
568
  - ".github/workflows/build.yml"
563
569
  - ".github/workflows/changelog.yml"
570
+ - ".github/workflows/ci.yml"
571
+ - ".github/workflows/pull-request.yml"
564
572
  - ".github/workflows/release.yml"
565
573
  - ".gitignore"
566
574
  - ".rubocop.yml"
@@ -726,6 +734,18 @@ files:
726
734
  - resources/kernel-4.4/include/datacite-titleType-v4.xsd
727
735
  - resources/kernel-4.4/include/xml.xsd
728
736
  - resources/kernel-4.4/metadata.xsd
737
+ - resources/kernel-4.5/include/datacite-contributorType-v4.xsd
738
+ - resources/kernel-4.5/include/datacite-dateType-v4.xsd
739
+ - resources/kernel-4.5/include/datacite-descriptionType-v4.xsd
740
+ - resources/kernel-4.5/include/datacite-funderIdentifierType-v4.xsd
741
+ - resources/kernel-4.5/include/datacite-nameType-v4.xsd
742
+ - resources/kernel-4.5/include/datacite-numberType-v4.xsd
743
+ - resources/kernel-4.5/include/datacite-relatedIdentifierType-v4.xsd
744
+ - resources/kernel-4.5/include/datacite-relationType-v4.xsd
745
+ - resources/kernel-4.5/include/datacite-resourceType-v4.xsd
746
+ - resources/kernel-4.5/include/datacite-titleType-v4.xsd
747
+ - resources/kernel-4.5/include/xml.xsd
748
+ - resources/kernel-4.5/metadata.xsd
729
749
  - resources/kernel-4/include/datacite-contributorType-v4.xsd
730
750
  - resources/kernel-4/include/datacite-dateType-v4.xsd
731
751
  - resources/kernel-4/include/datacite-descriptionType-v4.xsd
@@ -738,6 +758,7 @@ files:
738
758
  - resources/kernel-4/include/datacite-titleType-v4.xsd
739
759
  - resources/kernel-4/include/xml.xsd
740
760
  - resources/kernel-4/metadata.xsd
761
+ - resources/oecd/dfg-mappings.json
741
762
  - resources/oecd/for-mappings.json
742
763
  - resources/oecd/fos-mappings.json
743
764
  - resources/schema_org/jsonldcontext.json
@@ -762,6 +783,7 @@ files:
762
783
  - spec/fixtures/crossref.ris
763
784
  - spec/fixtures/crossref.xml
764
785
  - spec/fixtures/datacite-empty-sizes.xml
786
+ - spec/fixtures/datacite-example-ROR-nameIdentifiers.xml
765
787
  - spec/fixtures/datacite-example-affiliation.xml
766
788
  - spec/fixtures/datacite-example-ancientdates-v4.3.xml
767
789
  - spec/fixtures/datacite-example-complicated-tba.xml
@@ -771,9 +793,12 @@ files:
771
793
  - spec/fixtures/datacite-example-dissertation-v4.4.xml
772
794
  - spec/fixtures/datacite-example-escaped-text.xml
773
795
  - spec/fixtures/datacite-example-full-v4.4.xml
796
+ - spec/fixtures/datacite-example-full-v4.5.xml
774
797
  - spec/fixtures/datacite-example-geolocation-2.xml
775
798
  - spec/fixtures/datacite-example-geolocation.xml
799
+ - spec/fixtures/datacite-example-nameIdentifier-with-schemeURI.xml
776
800
  - spec/fixtures/datacite-example-polygon-v4.1.xml
801
+ - spec/fixtures/datacite-example-relateditems-with-attributes.xml
777
802
  - spec/fixtures/datacite-example-relateditems.xml
778
803
  - spec/fixtures/datacite-example-xs-string.xml
779
804
  - spec/fixtures/datacite-formats-with-xs.xml
@@ -1038,6 +1063,7 @@ files:
1038
1063
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_publisher/insert.yml
1039
1064
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_identifiers/insert.yml
1040
1065
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_identifiers/related_identifier.yml
1066
+ - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_items/insert.yml
1041
1067
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_resource_type/insert.yml
1042
1068
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_rights_list/insert.yml
1043
1069
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_sizes/insert.yml
@@ -1121,6 +1147,8 @@ files:
1121
1147
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_orcid/validate_orcid.yml
1122
1148
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_orcid/validate_orcid_https.yml
1123
1149
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_orcid/validate_orcid_id.yml
1150
+ - spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_orcid/validate_orcid_sandbox.yml
1151
+ - spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_orcid/validate_orcid_sandbox_https.yml
1124
1152
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_orcid/validate_orcid_with_spaces.yml
1125
1153
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_orcid/validate_orcid_wrong_id.yml
1126
1154
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/validate_orcid/validate_orcid_www.yml
@@ -1275,7 +1303,7 @@ require_paths:
1275
1303
  - lib
1276
1304
  required_ruby_version: !ruby/object:Gem::Requirement
1277
1305
  requirements:
1278
- - - "~>"
1306
+ - - ">="
1279
1307
  - !ruby/object:Gem::Version
1280
1308
  version: '2.3'
1281
1309
  required_rubygems_version: !ruby/object:Gem::Requirement