bolognese 1.11.3 → 2.3.3

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 (102) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +1 -1
  3. data/.github/workflows/release.yml +2 -2
  4. data/Gemfile.lock +15 -12
  5. data/bolognese.gemspec +5 -3
  6. data/lib/bolognese/author_utils.rb +4 -3
  7. data/lib/bolognese/datacite_utils.rb +19 -11
  8. data/lib/bolognese/metadata.rb +1 -6
  9. data/lib/bolognese/metadata_utils.rb +3 -2
  10. data/lib/bolognese/readers/bibtex_reader.rb +2 -2
  11. data/lib/bolognese/readers/citeproc_reader.rb +7 -1
  12. data/lib/bolognese/readers/codemeta_reader.rb +2 -2
  13. data/lib/bolognese/readers/crosscite_reader.rb +4 -1
  14. data/lib/bolognese/readers/crossref_reader.rb +40 -7
  15. data/lib/bolognese/readers/datacite_json_reader.rb +4 -1
  16. data/lib/bolognese/readers/datacite_reader.rb +19 -3
  17. data/lib/bolognese/readers/npm_reader.rb +1 -1
  18. data/lib/bolognese/readers/ris_reader.rb +2 -2
  19. data/lib/bolognese/readers/schema_org_reader.rb +27 -4
  20. data/lib/bolognese/utils.rb +35 -13
  21. data/lib/bolognese/version.rb +1 -1
  22. data/lib/bolognese/writers/bibtex_writer.rb +1 -1
  23. data/lib/bolognese/writers/codemeta_writer.rb +1 -1
  24. data/lib/bolognese/writers/csv_writer.rb +1 -1
  25. data/lib/bolognese/writers/datacite_json_writer.rb +3 -1
  26. data/lib/bolognese/writers/jats_writer.rb +6 -3
  27. data/lib/bolognese/writers/ris_writer.rb +1 -1
  28. data/lib/bolognese/writers/schema_org_writer.rb +5 -1
  29. data/resources/kernel-4/include/datacite-contributorType-v4.xsd +3 -1
  30. data/resources/kernel-4/include/datacite-dateType-v4.xsd +3 -1
  31. data/resources/kernel-4/include/datacite-relatedIdentifierType-v4.xsd +5 -2
  32. data/resources/kernel-4/include/datacite-relationType-v4.xsd +9 -3
  33. data/resources/kernel-4/include/datacite-resourceType-v4.xsd +7 -1
  34. data/resources/kernel-4/include/datacite-titleType-v4.xsd +1 -1
  35. data/resources/kernel-4/metadata.xsd +12 -7
  36. data/resources/kernel-4.5/include/datacite-contributorType-v4.xsd +35 -0
  37. data/resources/kernel-4.5/include/datacite-dateType-v4.xsd +25 -0
  38. data/resources/kernel-4.5/include/datacite-descriptionType-v4.xsd +19 -0
  39. data/resources/kernel-4.5/include/datacite-funderIdentifierType-v4.xsd +16 -0
  40. data/resources/kernel-4.5/include/datacite-nameType-v4.xsd +10 -0
  41. data/resources/kernel-4.5/include/datacite-numberType-v4.xsd +12 -0
  42. data/resources/kernel-4.5/include/datacite-relatedIdentifierType-v4.xsd +34 -0
  43. data/resources/kernel-4.5/include/datacite-relationType-v4.xsd +53 -0
  44. data/resources/kernel-4.5/include/datacite-resourceType-v4.xsd +45 -0
  45. data/resources/kernel-4.5/include/datacite-titleType-v4.xsd +14 -0
  46. data/resources/kernel-4.5/include/xml.xsd +286 -0
  47. data/resources/kernel-4.5/metadata.xsd +711 -0
  48. data/resources/kernel-4.6/include/datacite-contributorType-v4.xsd +37 -0
  49. data/resources/kernel-4.6/include/datacite-dateType-v4.xsd +27 -0
  50. data/resources/kernel-4.6/include/datacite-descriptionType-v4.xsd +19 -0
  51. data/resources/kernel-4.6/include/datacite-funderIdentifierType-v4.xsd +16 -0
  52. data/resources/kernel-4.6/include/datacite-nameType-v4.xsd +10 -0
  53. data/resources/kernel-4.6/include/datacite-numberType-v4.xsd +12 -0
  54. data/resources/kernel-4.6/include/datacite-relatedIdentifierType-v4.xsd +37 -0
  55. data/resources/kernel-4.6/include/datacite-relationType-v4.xsd +57 -0
  56. data/resources/kernel-4.6/include/datacite-resourceType-v4.xsd +49 -0
  57. data/resources/kernel-4.6/include/datacite-titleType-v4.xsd +14 -0
  58. data/resources/kernel-4.6/include/xml.xsd +286 -0
  59. data/resources/kernel-4.6/metadata.xsd +712 -0
  60. data/spec/author_utils_spec.rb +33 -4
  61. data/spec/datacite_utils_spec.rb +156 -2
  62. data/spec/fixtures/citeproc.json +6 -2
  63. data/spec/fixtures/crossref_schema_4.6_values.xml +183 -0
  64. data/spec/fixtures/datacite-example-ROR-nameIdentifiers.xml +18 -2
  65. data/spec/fixtures/datacite-example-full-v4.5.xml +255 -0
  66. data/spec/fixtures/datacite-example-full-v4.6.xml +114 -0
  67. data/spec/fixtures/datacite-seriesinformation.xml +7 -2
  68. data/spec/fixtures/datacite-xml-lang.xml +1 -1
  69. data/spec/fixtures/datacite_blank_name_identifier.xml +22 -0
  70. data/spec/fixtures/datacite_blank_publisher.xml +18 -0
  71. data/spec/fixtures/datacite_journal_article.xml +64 -0
  72. data/spec/fixtures/schema_org.json +1 -0
  73. data/spec/fixtures/schema_org_4.6_attributes.json +108 -0
  74. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_contributors_Translator/supports_Translator_contributorType.yml +71 -0
  75. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_dates_with_Coverage/inserts_date_with_dateType_Coverage.yml +71 -0
  76. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_identifiers_CSTR/supports_CSTR_relatedIdentifierType.yml +71 -0
  77. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_identifiers_HasTranslation/supports_HasTranslation_relationType.yml +71 -0
  78. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_related_identifiers_RRID/supports_RRID_relatedIdentifierType.yml +71 -0
  79. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_resource_type_with_Award/supports_Award_as_resourceTypeGeneral.yml +71 -0
  80. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_resource_type_with_Project/supports_Project_as_resourceTypeGeneral.yml +71 -0
  81. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/insert_subjects/insert.yml +32 -14
  82. data/spec/readers/bibtex_reader_spec.rb +2 -0
  83. data/spec/readers/citeproc_reader_spec.rb +4 -0
  84. data/spec/readers/codemeta_reader_spec.rb +4 -4
  85. data/spec/readers/crosscite_reader_spec.rb +2 -0
  86. data/spec/readers/crossref_reader_spec.rb +72 -41
  87. data/spec/readers/datacite_json_reader_spec.rb +2 -0
  88. data/spec/readers/datacite_reader_spec.rb +164 -42
  89. data/spec/readers/npm_reader_spec.rb +2 -0
  90. data/spec/readers/ris_reader_spec.rb +3 -0
  91. data/spec/readers/schema_org_reader_spec.rb +38 -11
  92. data/spec/spec_helper.rb +1 -0
  93. data/spec/writers/citation_writer_spec.rb +9 -0
  94. data/spec/writers/citeproc_writer_spec.rb +9 -0
  95. data/spec/writers/crosscite_writer_spec.rb +7 -0
  96. data/spec/writers/datacite_json_writer_spec.rb +22 -0
  97. data/spec/writers/datacite_writer_spec.rb +155 -5
  98. data/spec/writers/jats_writer_spec.rb +16 -1
  99. data/spec/writers/rdf_xml_writer_spec.rb +7 -0
  100. data/spec/writers/schema_org_writer_spec.rb +49 -0
  101. data/spec/writers/turtle_writer_spec.rb +18 -0
  102. metadata +85 -25
@@ -78,7 +78,9 @@ module Bolognese
78
78
  "Other" => "CreativeWork",
79
79
  # not part of DataCite schema, but used internally
80
80
  "Periodical" => "Periodical",
81
- "DataCatalog" => "DataCatalog"
81
+ "DataCatalog" => "DataCatalog",
82
+ "Award" => "Grant",
83
+ "Project" => "Project"
82
84
  }
83
85
 
84
86
  DC_TO_CP_TRANSLATIONS = {
@@ -600,12 +602,12 @@ module Bolognese
600
602
  end
601
603
 
602
604
  def validate_orcid(orcid)
603
- orcid = Array(/\A(?:(?:http|https):\/\/(?:(?:www|sandbox)?\.)?orcid\.org\/)?(\d{4}[[:space:]-]\d{4}[[:space:]-]\d{4}[[:space:]-]\d{3}[0-9X]+)\z/.match(orcid)).last
605
+ orcid = Array(/\A(?:(?:http|https):\/\/(?:(?:www|sandbox)?\.)?orcid\.org\/)?(\d{4}[[:space:]-]\d{4}[[:space:]-]\d{4}[[:space:]-]\d{3}[0-9X]+)\/{0,1}\z/.match(orcid)).last
604
606
  orcid.gsub(/[[:space:]]/, "-") if orcid.present?
605
607
  end
606
608
 
607
609
  def validate_ror(ror)
608
- Array(/^(?:(?:(?:http|https):\/\/)?ror\.org\/)?(0\w{6}\d{2})$/.match(ror)).last
610
+ Array(/^(?:(?:(?:http|https):\/\/)?ror\.org\/)?(0\w{6}\d{2})\/{0,1}$/.match(ror)).last
609
611
  end
610
612
 
611
613
  def validate_orcid_scheme(orcid_scheme)
@@ -773,6 +775,14 @@ module Bolognese
773
775
  nil
774
776
  end
775
777
 
778
+ def normalize_publisher(publisher)
779
+ if publisher.respond_to?(:to_hash)
780
+ publisher
781
+ elsif publisher.respond_to?(:to_str)
782
+ { "name" => publisher }
783
+ end
784
+ end
785
+
776
786
  def to_datacite_json(element, options={})
777
787
  a = Array.wrap(element).map do |e|
778
788
  e.inject({}) {|h, (k,v)| h[k.dasherize] = v; h }
@@ -817,7 +827,8 @@ module Bolognese
817
827
 
818
828
  def to_schema_org_contributors(element)
819
829
  element = Array.wrap(element).map do |c|
820
- c["affiliation"] = Array.wrap(c["affiliation"]).map do |a|
830
+ transformed_c = c.dup
831
+ transformed_c["affiliation"] = Array.wrap(c["affiliation"]).map do |a|
821
832
  if a.is_a?(String)
822
833
  name = a
823
834
  affiliation_identifier = nil
@@ -831,10 +842,10 @@ module Bolognese
831
842
  "@id" => affiliation_identifier,
832
843
  "name" => name }.compact
833
844
  end.unwrap
834
- c["@type"] = c["nameType"].present? ? c["nameType"][0..-3] : nil
835
- c["@id"] = Array.wrap(c["nameIdentifiers"]).first.to_h.fetch("nameIdentifier", nil)
836
- c["name"] = c["familyName"].present? ? [c["givenName"], c["familyName"]].join(" ") : c["name"]
837
- c.except("nameIdentifiers", "nameType").compact
845
+ transformed_c["@type"] = c["nameType"].present? ? c["nameType"][0..-3] : nil
846
+ transformed_c["@id"] = Array.wrap(c["nameIdentifiers"]).first.to_h.fetch("nameIdentifier", nil)
847
+ transformed_c["name"] = c["familyName"].present? ? [c["givenName"], c["familyName"]].join(" ") : c["name"]
848
+ transformed_c.except("nameIdentifiers", "nameType").compact
838
849
  end.unwrap
839
850
  end
840
851
 
@@ -1057,12 +1068,16 @@ module Bolognese
1057
1068
  custom_scrubber = Bolognese::WhitelistScrubber.new(options)
1058
1069
 
1059
1070
  if text.is_a?(String)
1060
- # remove excessive internal whitespace with squish
1061
- Loofah.scrub_fragment(text, custom_scrubber).to_s.squish
1071
+ if options[:new_line]
1072
+ # Remove multiple spaces, tabs, and other whitespace characters while preserving single spaces and new lines
1073
+ Loofah.scrub_fragment(text, custom_scrubber).to_s.gsub(/[ \t]+/, ' ').strip
1074
+ else
1075
+ Loofah.scrub_fragment(text, custom_scrubber).to_s.squish
1076
+ end
1062
1077
  elsif text.is_a?(Hash)
1063
- sanitize(text.fetch(content, nil))
1078
+ sanitize(text.fetch(content, nil), new_line: options[:new_line])
1064
1079
  elsif text.is_a?(Array)
1065
- a = text.map { |e| e.is_a?(Hash) ? sanitize(e.fetch(content, nil)) : sanitize(e) }.uniq
1080
+ a = text.map { |e| e.is_a?(Hash) ? sanitize(e.fetch(content, nil), new_line: options[:new_line]) : sanitize(e, new_line: options[:new_line]) }.uniq
1066
1081
  a = options[:first] ? a.first : a.unwrap
1067
1082
  else
1068
1083
  nil
@@ -1222,7 +1237,9 @@ module Bolognese
1222
1237
  "urn" => "URN",
1223
1238
  "md5" => "md5",
1224
1239
  "minid" => "minid",
1225
- "dataguid" => "dataguid"
1240
+ "dataguid" => "dataguid",
1241
+ "cstr" => "CSTR",
1242
+ "rrid" => "RRID"
1226
1243
  }
1227
1244
 
1228
1245
  identifierTypes[identifier_type.downcase] || identifier_type
@@ -1410,5 +1427,10 @@ module Bolognese
1410
1427
  }
1411
1428
  end
1412
1429
  end
1430
+
1431
+ def abstract_description
1432
+ # Fetch the first description with descriptionType "Abstract"
1433
+ descriptions&.find { |d| d["descriptionType"] == "Abstract" }
1434
+ end
1413
1435
  end
1414
1436
  end
@@ -1,3 +1,3 @@
1
1
  module Bolognese
2
- VERSION = "1.11.3"
2
+ VERSION = "2.3.3"
3
3
  end
@@ -21,7 +21,7 @@ module Bolognese
21
21
  volume: container.to_h["volume"],
22
22
  issue: container.to_h["issue"],
23
23
  pages: pages,
24
- publisher: publisher,
24
+ publisher: publisher["name"],
25
25
  year: publication_year,
26
26
  copyright: Array.wrap(rights_list).map { |l| l["rights"] }.first,
27
27
  }.compact
@@ -19,7 +19,7 @@ module Bolognese
19
19
  "tags" => subjects.present? ? Array.wrap(subjects).map { |k| parse_attributes(k, content: "subject", first: true) } : nil,
20
20
  "datePublished" => get_date(dates, "Issued") || publication_year,
21
21
  "dateModified" => get_date(dates, "Updated"),
22
- "publisher" => publisher,
22
+ "publisher" => publisher["name"],
23
23
  "license" => Array.wrap(rights_list).map { |l| l["rightsUri"] }.compact.unwrap,
24
24
  }.compact
25
25
  JSON.pretty_generate hsh.presence
@@ -15,7 +15,7 @@ module Bolognese
15
15
  resource_type: types["resourceType"],
16
16
  title: parse_attributes(titles, content: "title", first: true),
17
17
  author: authors_as_string(creators),
18
- publisher: publisher,
18
+ publisher: publisher["name"],
19
19
  publication_year: publication_year
20
20
  }.values
21
21
 
@@ -4,7 +4,9 @@ module Bolognese
4
4
  module Writers
5
5
  module DataciteJsonWriter
6
6
  def datacite_json
7
- JSON.pretty_generate crosscite_hsh.transform_keys! { |key| key.camelcase(uppercase_first_letter = :lower) } if crosscite_hsh.present?
7
+ if crosscite_hsh.present?
8
+ JSON.pretty_generate crosscite_hsh.transform_keys! { |key| key.camelcase(uppercase_first_letter = :lower) }
9
+ end
8
10
  end
9
11
  end
10
12
  end
@@ -77,16 +77,19 @@ module Bolognese
77
77
 
78
78
  def insert_source(xml)
79
79
  if is_chapter?
80
- xml.source(publisher)
80
+ xml.source(publisher["name"])
81
81
  elsif is_article? || is_data?
82
- xml.source(container && container["title"] || publisher)
82
+ xml.source(container && container["title"] || publisher["name"])
83
83
  else
84
84
  xml.source(parse_attributes(titles, content: "title", first: true))
85
85
  end
86
86
  end
87
87
 
88
88
  def insert_publisher_name(xml)
89
- xml.send("publisher-name", publisher)
89
+ attributes = {
90
+ "xml:lang" => publisher["lang"]
91
+ }.compact
92
+ xml.send("publisher-name", attributes, publisher["name"])
90
93
  end
91
94
 
92
95
  def insert_publication_date(xml)
@@ -14,7 +14,7 @@ module Bolognese
14
14
  "AB" => parse_attributes(abstract_description, content: "description", first: true),
15
15
  "KW" => Array.wrap(subjects).map { |k| parse_attributes(k, content: "subject", first: true) }.presence,
16
16
  "PY" => publication_year,
17
- "PB" => publisher,
17
+ "PB" => publisher["name"],
18
18
  "LA" => language,
19
19
  "VL" => container.to_h["volume"],
20
20
  "IS" => container.to_h["issue"],
@@ -13,6 +13,7 @@ module Bolognese
13
13
  "name" => parse_attributes(titles, content: "title", first: true),
14
14
  "author" => to_schema_org_creators(creators),
15
15
  "editor" => to_schema_org_contributors(contributors),
16
+ "translator" => contributors ? to_schema_org_contributors(contributors.select { |c| c["contributorType"] == "Translator" }) : nil,
16
17
  "description" => parse_attributes(abstract_description, content: "description", first: true),
17
18
  "license" => Array.wrap(rights_list).map { |l| l["rightsUri"] }.compact.unwrap,
18
19
  "version" => version_info,
@@ -23,6 +24,7 @@ module Bolognese
23
24
  "dateCreated" => get_date(dates, "Created"),
24
25
  "datePublished" => get_date(dates, "Issued") || publication_year,
25
26
  "dateModified" => get_date(dates, "Updated"),
27
+ "temporalCoverage" => get_date(dates, "Coverage"),
26
28
  "pageStart" => container.to_h["firstPage"],
27
29
  "pageEnd" => container.to_h["lastPage"],
28
30
  "spatialCoverage" => to_schema_org_spatial_coverage(geo_locations),
@@ -32,12 +34,14 @@ module Bolognese
32
34
  "predecessor_of" => to_schema_org_relation(related_identifiers: related_identifiers, relation_type: "IsPreviousVersionOf"),
33
35
  "successor_of" => to_schema_org_relation(related_identifiers: related_identifiers, relation_type: "IsNewVersionOf"),
34
36
  "citation" => to_schema_org_relation(related_identifiers: related_identifiers, relation_type: "References"),
37
+ "workTranslation" => to_schema_org_relation(related_identifiers: related_identifiers, relation_type: "HasTranslation"),
38
+ "translationOfWork" => to_schema_org_relation(related_identifiers: related_identifiers, relation_type: "IsTranslationOf"),
35
39
  "@reverse" => reverse.presence,
36
40
  "contentUrl" => Array.wrap(content_url).unwrap,
37
41
  "schemaVersion" => schema_version,
38
42
  "periodical" => types.present? ? ((types["schemaOrg"] != "Dataset") && container.present? ? to_schema_org(container) : nil) : nil,
39
43
  "includedInDataCatalog" => types.present? ? ((types["schemaOrg"] == "Dataset") && container.present? ? to_schema_org_container(container, type: "Dataset") : nil) : nil,
40
- "publisher" => publisher.present? ? { "@type" => "Organization", "name" => publisher } : nil,
44
+ "publisher" => publisher.present? ? { "@type" => "Organization", "@id" => publisher["publisherIdentifier"], "name" => publisher["name"] }.compact : nil,
41
45
  "funder" => to_schema_org_funder(funding_references),
42
46
  "provider" => agency.present? ? { "@type" => "Organization", "name" => agency } : nil
43
47
  }.compact.presence
@@ -2,7 +2,8 @@
2
2
  <!-- Version 1.0 - Created 2011-01-13 - FZ, TIB, Germany
3
3
  2013-05 v3.0: Addition of ID to simpleType element, added values "ResearchGroup" & "Other"
4
4
  2014-08-20 v3.1: Addition of value "DataCurator"
5
- 2015-05-14 v4.0 dropped value "Funder", use new "funderReference" -->
5
+ 2015-05-14 v4.0 dropped value "Funder", use new "funderReference"
6
+ 2024-12-31 v4.6: Addition of value "Translator" -->
6
7
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://datacite.org/schema/kernel-4" targetNamespace="http://datacite.org/schema/kernel-4" elementFormDefault="qualified">
7
8
  <xs:simpleType name="contributorType" id="contributorType">
8
9
  <xs:annotation>
@@ -29,6 +30,7 @@
29
30
  <xs:enumeration value="Researcher" />
30
31
  <xs:enumeration value="Sponsor" />
31
32
  <xs:enumeration value="Supervisor" />
33
+ <xs:enumeration value="Translator" />
32
34
  <xs:enumeration value="WorkPackageLeader" />
33
35
  </xs:restriction>
34
36
  </xs:simpleType>
@@ -2,7 +2,8 @@
2
2
  <!-- Version 1.0 - Created 2011-01-13 - FZ, TIB, Germany
3
3
  2013-05 v3.0: Addition of ID to simpleType element; addition of value "Collected"; deleted "StartDate" & "EndDate"
4
4
  2017-10-23 v4.1: Addition of value "Other"
5
- 2019-02-14 v4.2: Addition of value "Withdrawn"-->
5
+ 2019-02-14 v4.2: Addition of value "Withdrawn"
6
+ 2024-12-31 v4.6: Addition of value "Coverage"-->
6
7
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://datacite.org/schema/kernel-4" targetNamespace="http://datacite.org/schema/kernel-4" elementFormDefault="qualified">
7
8
  <xs:simpleType name="dateType" id="dateType">
8
9
  <xs:annotation>
@@ -13,6 +14,7 @@
13
14
  <xs:enumeration value="Available" />
14
15
  <xs:enumeration value="Collected" />
15
16
  <xs:enumeration value="Copyrighted" />
17
+ <xs:enumeration value="Coverage" />
16
18
  <xs:enumeration value="Created" />
17
19
  <xs:enumeration value="Issued" />
18
20
  <xs:enumeration value="Other" />
@@ -2,8 +2,9 @@
2
2
  <!-- Version 1.0 - Created 2011-01-13 - FZ, TIB, Germany
3
3
  2013-05 v3.0: Addition of ID to simpleType element; addition of value "PMID"
4
4
  2014-08-20 v3.1: Addition of values "arxiv" and "bibcode"
5
- 2015-02-12 v4.0 Addition of value "IGSN"
6
- 2019-02-14 v4.2 Addition of value "w3id" -->
5
+ 2015-02-12 v4.0: Addition of value "IGSN"
6
+ 2019-02-14 v4.2: Addition of value "w3id"
7
+ 2024-12-31 v4.5: Addition of values "CSTR", "RRID" -->
7
8
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://datacite.org/schema/kernel-4" targetNamespace="http://datacite.org/schema/kernel-4" elementFormDefault="qualified">
8
9
  <xs:simpleType name="relatedIdentifierType" id="relatedIdentifierType">
9
10
  <xs:annotation>
@@ -13,6 +14,7 @@
13
14
  <xs:enumeration value="ARK" />
14
15
  <xs:enumeration value="arXiv" />
15
16
  <xs:enumeration value="bibcode" />
17
+ <xs:enumeration value="CSTR" />
16
18
  <xs:enumeration value="DOI" />
17
19
  <xs:enumeration value="EAN13" />
18
20
  <xs:enumeration value="EISSN" />
@@ -25,6 +27,7 @@
25
27
  <xs:enumeration value="LSID" />
26
28
  <xs:enumeration value="PMID" />
27
29
  <xs:enumeration value="PURL" />
30
+ <xs:enumeration value="RRID" />
28
31
  <xs:enumeration value="UPC" />
29
32
  <xs:enumeration value="URL" />
30
33
  <xs:enumeration value="URN" />
@@ -3,9 +3,11 @@
3
3
  2011-01-13 v1.0 - FZ, TIB, Germany
4
4
  2013-05 v3.0: Addition of ID to simpleType element, addition of values "IsIdenticalTo", "HasMetadata" & "IsMetadataFor"
5
5
  2014-08-20 v3.1: Addition of values "Reviews" & "IsReviewedBy" and "IsDerivedFrom" & "IsSourceOf"
6
- 2017-10-23 v.4.1: Addition of values "Describes", "IsDescribedBy", "HasVersion", "IsVersionOf", "Requires", "IsRequiredBy"
7
- 2019-02-14 v.4.2: Addition of values "Obsoletes", "IsObsoletedBy"
8
- 2021-03-05 v.4.4: Addition of value "IsPublishedIn" -->
6
+ 2017-10-23 v4.1: Addition of values "Describes", "IsDescribedBy", "HasVersion", "IsVersionOf", "Requires", "IsRequiredBy"
7
+ 2019-02-14 v4.2: Addition of values "Obsoletes", "IsObsoletedBy"
8
+ 2021-03-05 v4.4: Addition of value "IsPublishedIn"
9
+ 2024-01-22 v4.5: Addition of values "Collects, "IsCollectedBy"
10
+ 2024-12-31 v4.6: Addition of values "HasTranslation", "IsTranslationOf"-->
9
11
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://datacite.org/schema/kernel-4" targetNamespace="http://datacite.org/schema/kernel-4" elementFormDefault="qualified">
10
12
  <xs:simpleType name="relationType" id="relationType">
11
13
  <xs:annotation>
@@ -46,6 +48,10 @@
46
48
  <xs:enumeration value="IsRequiredBy" />
47
49
  <xs:enumeration value="Obsoletes" />
48
50
  <xs:enumeration value="IsObsoletedBy" />
51
+ <xs:enumeration value="Collects" />
52
+ <xs:enumeration value="IsCollectedBy" />
53
+ <xs:enumeration value="HasTranslation" />
54
+ <xs:enumeration value="IsTranslationOf" />
49
55
  </xs:restriction>
50
56
  </xs:simpleType>
51
57
  </xs:schema>
@@ -3,7 +3,9 @@
3
3
  2013-05 v3.0: Addition of ID to simpleType element; added values "Audiovisual", "Workflow" & "Other"; deleted value "Film"
4
4
  2017-10-23 v4.1: Addition of value "DataPaper"
5
5
  2020-01-14 v4.4: Addition of values "Book", "Book Chapter", "ComputationalNotebook", "ConferencePaper", "ConferenceProceeding".
6
- "Dissertation", "Journal", "JournalArticle", "OutputManagementPlan", "PeerReview", "Preprint", "Report" -->
6
+ "Dissertation", "Journal", "JournalArticle", "OutputManagementPlan", "PeerReview", "Preprint", "Report"
7
+ 2024-01-22 v4.5: Addition of values "Instrument", "StudyRegistration"
8
+ 2024-12-31 v4.6: Addition of values "Award", "Project"-->
7
9
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://datacite.org/schema/kernel-4" targetNamespace="http://datacite.org/schema/kernel-4" elementFormDefault="qualified">
8
10
  <xs:simpleType name="resourceType" id="resourceType">
9
11
  <xs:annotation>
@@ -11,6 +13,7 @@
11
13
  </xs:annotation>
12
14
  <xs:restriction base="xs:string">
13
15
  <xs:enumeration value="Audiovisual" />
16
+ <xs:enumeration value="Award" />
14
17
  <xs:enumeration value="Book" />
15
18
  <xs:enumeration value="BookChapter" />
16
19
  <xs:enumeration value="Collection" />
@@ -22,6 +25,7 @@
22
25
  <xs:enumeration value="Dissertation" />
23
26
  <xs:enumeration value="Event" />
24
27
  <xs:enumeration value="Image" />
28
+ <xs:enumeration value="Instrument" />
25
29
  <xs:enumeration value="InteractiveResource" />
26
30
  <xs:enumeration value="Journal" />
27
31
  <xs:enumeration value="JournalArticle" />
@@ -30,11 +34,13 @@
30
34
  <xs:enumeration value="PeerReview" />
31
35
  <xs:enumeration value="PhysicalObject" />
32
36
  <xs:enumeration value="Preprint" />
37
+ <xs:enumeration value="Project" />
33
38
  <xs:enumeration value="Report" />
34
39
  <xs:enumeration value="Service" />
35
40
  <xs:enumeration value="Software" />
36
41
  <xs:enumeration value="Sound" />
37
42
  <xs:enumeration value="Standard" />
43
+ <xs:enumeration value="StudyRegistration" />
38
44
  <xs:enumeration value="Text" />
39
45
  <xs:enumeration value="Workflow" />
40
46
  <xs:enumeration value="Other" />
@@ -1,7 +1,7 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <!-- Version 1.0 - Created 2011-01-13 - FZ, TIB, Germany
3
3
  2013-05 v3.0: Addition of ID to simpleType element
4
- 2015-02-12 v4.0 Added value "Other" -->
4
+ 2015-02-12 v4.0: Added value "Other" -->
5
5
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://datacite.org/schema/kernel-4" targetNamespace="http://datacite.org/schema/kernel-4" elementFormDefault="qualified">
6
6
  <xs:simpleType name="titleType" id="titleType">
7
7
  <xs:restriction base="xs:string">
@@ -2,7 +2,7 @@
2
2
  <!-- Revision history
3
3
  2010-08-26 Complete revision according to new common specification by the metadata work group after review. AJH, DTIC
4
4
  2010-11-17 Revised to current state of kernel review, FZ, TIB
5
- 2011-01-17 Complete revsion after community review. FZ, TIB
5
+ 2011-01-17 Complete revision after community review. FZ, TIB
6
6
  2011-03-17 Release of v2.1: added a namespace; mandatory properties got minLength; changes in the definitions of relationTypes IsDocumentedBy/Documents and isCompiledBy/Compiles; changes type of property "Date" from xs:date to xs:string. FZ, TIB
7
7
  2011-06-27 v2.2: namespace: kernel-2.2, additions to controlled lists "resourceType", "contributorType", "relatedIdentifierType", and "descriptionType". Removal of intermediate include-files.
8
8
  2013-07-24 v3.0: namespace: kernel-3.0; delete LastMetadataUpdate & MetadateVersionNumber; additions to controlled lists "contributorType", "dateType", "descriptionType", "relationType", "relatedIdentifierType" & "resourceType"; deletion of "StartDate" & "EndDate" from list "dateType" and "Film" from "resourceType"; allow arbitrary order of elements; allow optional wrapper elements to be empty; include xml:lang attribute for title, subject & description; include attribute schemeURI for nameIdentifier of creator, contributor & subject; added new attributes "relatedMetadataScheme", "schemeURI" & "schemeType" to relatedIdentifier; included new property "geoLocation"
@@ -12,7 +12,9 @@
12
12
  2018-09-08 v4.1.1 Make schema 4.1 backwards compatible to 4.0 by allowing geolocation elements in any order
13
13
  2019-02-14 v4.2: Addition of dateType value "Withdrawn", relationType values "Obsoletes", "isObsoletedBy", addition of new subproperties for Rights: rightsIdentifier, rightsIdentifierScheme, schemeURI, addition of the XML language attribute to the properties Creator, Contributor and Publisher for organizational names, don't check format of DOI
14
14
  2019-07-13 v4.3: Addition of new subproperties for Affiliation: "affiliationIdentifier", "affiliationIdentifierScheme", "schemeURI", addition of new sub-property for funderIdentifier: "schemeURI", addition of new funderIdentifierScheme: "ROR", added documentation for nameIdentifier
15
- 2021-03-08 v4.4: Addition of new property relatedItem, relationType value "isPublishedIn", subject subproperty "classificationCode", controlled list "numberType", additional 13 properties for controlled list "resourceType" -->
15
+ 2021-03-08 v4.4: Addition of new property relatedItem, relationType value "isPublishedIn", subject subproperty "classificationCode", controlled list "numberType", additional 13 properties for controlled list "resourceType"
16
+ 2024-01-22 v4.5: Addition of new subproperties for publisher: "publisherIdentifier", "publisherIdentifierScheme", and "schemeURI"; addition of new resourceTypeGeneral values "Instrument" and "StudyRegistration"; addition of new relationType values "Collects" and "IsCollectedBy".
17
+ 2024-12-31 v4.6: Addition of new resourceTypeGeneral values "Award" and "Project"; addiition of new relatedIdentifierType values "CSTR" and "RRID"; addition of new contributorType "Translator"; addition of new relationTypes "HasTranslation" and "IsTranslationOf"; addition of new dateType "Coverage".-->
16
18
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://datacite.org/schema/kernel-4" targetNamespace="http://datacite.org/schema/kernel-4" elementFormDefault="qualified" xml:lang="EN">
17
19
  <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="include/xml.xsd" />
18
20
  <xs:include schemaLocation="include/datacite-titleType-v4.xsd" />
@@ -105,6 +107,9 @@
105
107
  <xs:complexType>
106
108
  <xs:simpleContent>
107
109
  <xs:extension base="nonemptycontentStringType">
110
+ <xs:attribute name="publisherIdentifier" type="xs:string" use="optional" />
111
+ <xs:attribute name="publisherIdentifierScheme" type="xs:string" use="optional" />
112
+ <xs:attribute name="schemeURI" type="xs:anyURI" use="optional" />
108
113
  <xs:attribute ref="xml:lang" />
109
114
  </xs:extension>
110
115
  </xs:simpleContent>
@@ -161,7 +166,7 @@
161
166
  <xs:sequence>
162
167
  <xs:element name="contributor" minOccurs="0" maxOccurs="unbounded">
163
168
  <xs:annotation>
164
- <xs:documentation>The institution or person responsible for collecting, creating, or otherwise contributing to the developement of the dataset.</xs:documentation>
169
+ <xs:documentation>The institution or person responsible for collecting, creating, or otherwise contributing to the development of the dataset.</xs:documentation>
165
170
  <xs:documentation>The personal name format should be: Family, Given.</xs:documentation>
166
171
  </xs:annotation>
167
172
  <xs:complexType>
@@ -524,7 +529,7 @@ Use the complete title of a license and include version information if applicabl
524
529
  </xs:element>
525
530
  <xs:element name="number" minOccurs="0">
526
531
  <xs:annotation>
527
- <xs:documentation>Issue number or name of the related item.</xs:documentation>
532
+ <xs:documentation>Number of the related item e.g. report number of article number.</xs:documentation>
528
533
  </xs:annotation>
529
534
  <xs:complexType>
530
535
  <xs:simpleContent>
@@ -641,19 +646,19 @@ Use the complete title of a license and include version information if applicabl
641
646
  <xs:pattern value="\d{2}(\d{2}|\?\?|\d(\d|\?))(-(\d{2}|\?\?))?~?\??" />
642
647
  <!--
643
648
  The following pattern is for yearMonthDay - yyyymmdd, where 'dd' may be '??' so '200412??' means "some day during the month of 12/2004".
644
- The whole string may be followed by '?' or '~' to mean "questionable" or "approximate". Hypens are not allowed for this pattern.
649
+ The whole string may be followed by '?' or '~' to mean "questionable" or "approximate". Hyphens are not allowed for this pattern.
645
650
  -->
646
651
  <xs:pattern value="\d{6}(\d{2}|\?\?)~?\??" />
647
652
  <!--
648
653
 
649
654
  The following pattern is for date and time with T separator:'yyyymmddThhmmss'.
650
- Hypens in date and colons in time not allowed for this pattern.
655
+ Hyphens in date and colons in time not allowed for this pattern.
651
656
  -->
652
657
  <xs:pattern value="\d{8}T\d{6}" />
653
658
  <!--
654
659
 
655
660
  The following pattern is for a date range. in years: 'yyyy/yyyy'; or year/month: yyyy-mm/yyyy-mm, or year/month/day: yyyy-mm-dd/yyyy-mm-dd. Beginning or end of range value may be 'unknown'. End of range value may be 'open'.
656
- Hypens mandatory when month is present.
661
+ Hyphens mandatory when month is present.
657
662
  -->
658
663
  <xs:pattern value="((-)?(\d{4}(-\d{2})?(-\d{2})?)|unknown)/((-)?(\d{4}(-\d{2})?(-\d{2})?)|unknown|open)" />
659
664
  </xs:restriction>
@@ -0,0 +1,35 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- Version 1.0 - Created 2011-01-13 - FZ, TIB, Germany
3
+ 2013-05 v3.0: Addition of ID to simpleType element, added values "ResearchGroup" & "Other"
4
+ 2014-08-20 v3.1: Addition of value "DataCurator"
5
+ 2015-05-14 v4.0 dropped value "Funder", use new "funderReference" -->
6
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://datacite.org/schema/kernel-4" targetNamespace="http://datacite.org/schema/kernel-4" elementFormDefault="qualified">
7
+ <xs:simpleType name="contributorType" id="contributorType">
8
+ <xs:annotation>
9
+ <xs:documentation>The type of contributor of the resource.</xs:documentation>
10
+ </xs:annotation>
11
+ <xs:restriction base="xs:string">
12
+ <xs:enumeration value="ContactPerson" />
13
+ <xs:enumeration value="DataCollector" />
14
+ <xs:enumeration value="DataCurator" />
15
+ <xs:enumeration value="DataManager" />
16
+ <xs:enumeration value="Distributor" />
17
+ <xs:enumeration value="Editor" />
18
+ <xs:enumeration value="HostingInstitution" />
19
+ <xs:enumeration value="Other" />
20
+ <xs:enumeration value="Producer" />
21
+ <xs:enumeration value="ProjectLeader" />
22
+ <xs:enumeration value="ProjectManager" />
23
+ <xs:enumeration value="ProjectMember" />
24
+ <xs:enumeration value="RegistrationAgency" />
25
+ <xs:enumeration value="RegistrationAuthority" />
26
+ <xs:enumeration value="RelatedPerson" />
27
+ <xs:enumeration value="ResearchGroup" />
28
+ <xs:enumeration value="RightsHolder" />
29
+ <xs:enumeration value="Researcher" />
30
+ <xs:enumeration value="Sponsor" />
31
+ <xs:enumeration value="Supervisor" />
32
+ <xs:enumeration value="WorkPackageLeader" />
33
+ </xs:restriction>
34
+ </xs:simpleType>
35
+ </xs:schema>
@@ -0,0 +1,25 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- Version 1.0 - Created 2011-01-13 - FZ, TIB, Germany
3
+ 2013-05 v3.0: Addition of ID to simpleType element; addition of value "Collected"; deleted "StartDate" & "EndDate"
4
+ 2017-10-23 v4.1: Addition of value "Other"
5
+ 2019-02-14 v4.2: Addition of value "Withdrawn"-->
6
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://datacite.org/schema/kernel-4" targetNamespace="http://datacite.org/schema/kernel-4" elementFormDefault="qualified">
7
+ <xs:simpleType name="dateType" id="dateType">
8
+ <xs:annotation>
9
+ <xs:documentation>The type of date. Use RKMS‐ISO8601 standard for depicting date ranges.To indicate the end of an embargo period, use Available. To indicate the start of an embargo period, use Submitted or Accepted, as appropriate.</xs:documentation>
10
+ </xs:annotation>
11
+ <xs:restriction base="xs:string">
12
+ <xs:enumeration value="Accepted" />
13
+ <xs:enumeration value="Available" />
14
+ <xs:enumeration value="Collected" />
15
+ <xs:enumeration value="Copyrighted" />
16
+ <xs:enumeration value="Created" />
17
+ <xs:enumeration value="Issued" />
18
+ <xs:enumeration value="Other" />
19
+ <xs:enumeration value="Submitted" />
20
+ <xs:enumeration value="Updated" />
21
+ <xs:enumeration value="Valid" />
22
+ <xs:enumeration value="Withdrawn" />
23
+ </xs:restriction>
24
+ </xs:simpleType>
25
+ </xs:schema>
@@ -0,0 +1,19 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- Version 1.0 - Created 2011-01-13 - FZ, TIB, Germany
3
+ 2013-05 v3.0: Addition of ID to simpleType element, addition of value "Methods"
4
+ 2015-02-12 v4.0: Addition of value "TechnicalInfo"-->
5
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://datacite.org/schema/kernel-4" targetNamespace="http://datacite.org/schema/kernel-4" elementFormDefault="qualified">
6
+ <xs:simpleType name="descriptionType" id="descriptionType">
7
+ <xs:annotation>
8
+ <xs:documentation>The type of the description.</xs:documentation>
9
+ </xs:annotation>
10
+ <xs:restriction base="xs:string">
11
+ <xs:enumeration value="Abstract" />
12
+ <xs:enumeration value="Methods" />
13
+ <xs:enumeration value="SeriesInformation" />
14
+ <xs:enumeration value="TableOfContents" />
15
+ <xs:enumeration value="TechnicalInfo" />
16
+ <xs:enumeration value="Other" />
17
+ </xs:restriction>
18
+ </xs:simpleType>
19
+ </xs:schema>
@@ -0,0 +1,16 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- Version 1.0 - Created 2016-05-14 -->
3
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://datacite.org/schema/kernel-4" targetNamespace="http://datacite.org/schema/kernel-4" elementFormDefault="qualified">
4
+ <xs:simpleType name="funderIdentifierType" id="funderIdentifierType">
5
+ <xs:annotation>
6
+ <xs:documentation>The type of the funderIdentifier.</xs:documentation>
7
+ </xs:annotation>
8
+ <xs:restriction base="xs:string">
9
+ <xs:enumeration value="ISNI" />
10
+ <xs:enumeration value="GRID" />
11
+ <xs:enumeration value="ROR" />
12
+ <xs:enumeration value="Crossref Funder ID" />
13
+ <xs:enumeration value="Other" />
14
+ </xs:restriction>
15
+ </xs:simpleType>
16
+ </xs:schema>
@@ -0,0 +1,10 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- Version 4.1 - Created 2017-10-23 -->
3
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://datacite.org/schema/kernel-4" targetNamespace="http://datacite.org/schema/kernel-4" elementFormDefault="qualified">
4
+ <xs:simpleType name="nameType" id="nameType">
5
+ <xs:restriction base="xs:string">
6
+ <xs:enumeration value="Organizational" />
7
+ <xs:enumeration value="Personal" />
8
+ </xs:restriction>
9
+ </xs:simpleType>
10
+ </xs:schema>
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- Version 4.4 - Created 2021-03-05 -->
3
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://datacite.org/schema/kernel-4" targetNamespace="http://datacite.org/schema/kernel-4" elementFormDefault="qualified">
4
+ <xs:simpleType name="numberType" id="numberType">
5
+ <xs:restriction base="xs:string">
6
+ <xs:enumeration value="Article" />
7
+ <xs:enumeration value="Chapter" />
8
+ <xs:enumeration value="Report" />
9
+ <xs:enumeration value="Other" />
10
+ </xs:restriction>
11
+ </xs:simpleType>
12
+ </xs:schema>
@@ -0,0 +1,34 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- Version 1.0 - Created 2011-01-13 - FZ, TIB, Germany
3
+ 2013-05 v3.0: Addition of ID to simpleType element; addition of value "PMID"
4
+ 2014-08-20 v3.1: Addition of values "arxiv" and "bibcode"
5
+ 2015-02-12 v4.0 Addition of value "IGSN"
6
+ 2019-02-14 v4.2 Addition of value "w3id" -->
7
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://datacite.org/schema/kernel-4" targetNamespace="http://datacite.org/schema/kernel-4" elementFormDefault="qualified">
8
+ <xs:simpleType name="relatedIdentifierType" id="relatedIdentifierType">
9
+ <xs:annotation>
10
+ <xs:documentation>The type of the RelatedIdentifier.</xs:documentation>
11
+ </xs:annotation>
12
+ <xs:restriction base="xs:string">
13
+ <xs:enumeration value="ARK" />
14
+ <xs:enumeration value="arXiv" />
15
+ <xs:enumeration value="bibcode" />
16
+ <xs:enumeration value="DOI" />
17
+ <xs:enumeration value="EAN13" />
18
+ <xs:enumeration value="EISSN" />
19
+ <xs:enumeration value="Handle" />
20
+ <xs:enumeration value="IGSN" />
21
+ <xs:enumeration value="ISBN" />
22
+ <xs:enumeration value="ISSN" />
23
+ <xs:enumeration value="ISTC" />
24
+ <xs:enumeration value="LISSN" />
25
+ <xs:enumeration value="LSID" />
26
+ <xs:enumeration value="PMID" />
27
+ <xs:enumeration value="PURL" />
28
+ <xs:enumeration value="UPC" />
29
+ <xs:enumeration value="URL" />
30
+ <xs:enumeration value="URN" />
31
+ <xs:enumeration value="w3id" />
32
+ </xs:restriction>
33
+ </xs:simpleType>
34
+ </xs:schema>