bolognese 1.8.10 → 1.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build.yml +37 -0
  3. data/.github/workflows/changelog.yml +36 -0
  4. data/.github/workflows/release.yml +47 -0
  5. data/CHANGELOG.md +1708 -0
  6. data/Gemfile.lock +63 -59
  7. data/README.md +1 -1
  8. data/bolognese.gemspec +1 -1
  9. data/lib/bolognese/author_utils.rb +6 -5
  10. data/lib/bolognese/datacite_utils.rb +69 -3
  11. data/lib/bolognese/metadata.rb +10 -5
  12. data/lib/bolognese/metadata_utils.rb +3 -2
  13. data/lib/bolognese/readers/bibtex_reader.rb +5 -4
  14. data/lib/bolognese/readers/citeproc_reader.rb +1 -1
  15. data/lib/bolognese/readers/crossref_reader.rb +18 -6
  16. data/lib/bolognese/readers/datacite_reader.rb +57 -11
  17. data/lib/bolognese/readers/ris_reader.rb +3 -3
  18. data/lib/bolognese/utils.rb +163 -46
  19. data/lib/bolognese/version.rb +1 -1
  20. data/lib/bolognese/writers/bibtex_writer.rb +1 -1
  21. data/resources/kernel-4.4/include/datacite-contributorType-v4.xsd +35 -0
  22. data/resources/kernel-4.4/include/datacite-dateType-v4.xsd +25 -0
  23. data/resources/kernel-4.4/include/datacite-descriptionType-v4.xsd +19 -0
  24. data/resources/kernel-4.4/include/datacite-funderIdentifierType-v4.xsd +16 -0
  25. data/resources/kernel-4.4/include/datacite-nameType-v4.xsd +10 -0
  26. data/resources/kernel-4.4/include/datacite-numberType-v4.xsd +12 -0
  27. data/resources/kernel-4.4/include/datacite-relatedIdentifierType-v4.xsd +34 -0
  28. data/resources/kernel-4.4/include/datacite-relationType-v4.xsd +51 -0
  29. data/resources/kernel-4.4/include/datacite-resourceType-v4.xsd +43 -0
  30. data/resources/kernel-4.4/include/datacite-titleType-v4.xsd +14 -0
  31. data/resources/kernel-4.4/include/xml.xsd +286 -0
  32. data/resources/kernel-4.4/metadata.xsd +707 -0
  33. data/resources/kernel-4/include/datacite-contributorType-v4.xsd +21 -21
  34. data/resources/kernel-4/include/datacite-dateType-v4.xsd +11 -11
  35. data/resources/kernel-4/include/datacite-descriptionType-v4.xsd +6 -6
  36. data/resources/kernel-4/include/datacite-funderIdentifierType-v4.xsd +5 -5
  37. data/resources/kernel-4/include/datacite-nameType-v4.xsd +2 -2
  38. data/resources/kernel-4/include/datacite-numberType-v4.xsd +12 -0
  39. data/resources/kernel-4/include/datacite-relatedIdentifierType-v4.xsd +19 -19
  40. data/resources/kernel-4/include/datacite-relationType-v4.xsd +36 -34
  41. data/resources/kernel-4/include/datacite-resourceType-v4.xsd +32 -17
  42. data/resources/kernel-4/include/datacite-titleType-v4.xsd +4 -4
  43. data/resources/kernel-4/metadata.xsd +297 -105
  44. data/spec/fixtures/datacite-example-dissertation-v4.4.xml +56 -0
  45. data/spec/fixtures/datacite-example-full-v4.4.xml +114 -0
  46. data/spec/fixtures/datacite-example-relateditems.xml +61 -0
  47. data/spec/fixtures/datacite-example-xs-string.xml +28 -0
  48. data/spec/fixtures/datacite-geolocationpolygons-multiple.xml +56 -0
  49. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/affiliation_is_space.yml +100 -0
  50. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/article_id_as_page_number.yml +100 -0
  51. data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/multiple_issn.yml +98 -0
  52. data/spec/metadata_spec.rb +1 -1
  53. data/spec/readers/bibtex_reader_spec.rb +2 -2
  54. data/spec/readers/crossref_reader_spec.rb +89 -36
  55. data/spec/readers/datacite_json_reader_spec.rb +1 -1
  56. data/spec/readers/datacite_reader_spec.rb +255 -4
  57. data/spec/readers/ris_reader_spec.rb +3 -3
  58. data/spec/writers/bibtex_writer_spec.rb +1 -1
  59. data/spec/writers/citation_writer_spec.rb +2 -2
  60. data/spec/writers/crosscite_writer_spec.rb +3 -3
  61. data/spec/writers/csv_writer_spec.rb +4 -4
  62. data/spec/writers/datacite_json_writer_spec.rb +3 -3
  63. data/spec/writers/datacite_writer_spec.rb +5 -5
  64. data/spec/writers/ris_writer_spec.rb +3 -2
  65. data/spec/writers/schema_org_writer_spec.rb +4 -4
  66. metadata +32 -8
  67. data/.travis.yml +0 -35
@@ -0,0 +1,98 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://doi.org/ra/10.1007
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Mozilla/5.0 (compatible; Maremma/4.7.2; mailto:info@datacite.org)
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: ''
18
+ headers:
19
+ Date:
20
+ - Mon, 12 Oct 2020 21:10:28 GMT
21
+ Content-Type:
22
+ - application/json;charset=UTF-8
23
+ Connection:
24
+ - keep-alive
25
+ Set-Cookie:
26
+ - __cfduid=d46720dbaaa6164af527771d3ccf0993e1602537028; expires=Wed, 11-Nov-20
27
+ 21:10:28 GMT; path=/; domain=.doi.org; HttpOnly; SameSite=Lax; Secure
28
+ Cf-Cache-Status:
29
+ - DYNAMIC
30
+ Cf-Request-Id:
31
+ - 05c03f924a0000dfd3801da200000001
32
+ Expect-Ct:
33
+ - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
34
+ Report-To:
35
+ - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report?lkg-colo=71&lkg-time=1602537028"}],"group":"cf-nel","max_age":604800}'
36
+ Nel:
37
+ - '{"report_to":"cf-nel","max_age":604800}'
38
+ Strict-Transport-Security:
39
+ - max-age=31536000; includeSubDomains; preload
40
+ Server:
41
+ - cloudflare
42
+ Cf-Ray:
43
+ - 5e13ceca1d6bdfd3-FRA
44
+ Alt-Svc:
45
+ - h3-27=":443"; ma=86400, h3-28=":443"; ma=86400, h3-29=":443"; ma=86400
46
+ body:
47
+ encoding: ASCII-8BIT
48
+ string: |-
49
+ [
50
+ {
51
+ "DOI": "10.1007",
52
+ "RA": "Crossref"
53
+ }
54
+ ]
55
+ http_version:
56
+ recorded_at: Mon, 12 Oct 2020 21:10:28 GMT
57
+ - request:
58
+ method: get
59
+ uri: https://api.crossref.org/works/10.1007/978-3-642-34922-5_19/transform/application/vnd.crossref.unixsd+xml
60
+ body:
61
+ encoding: US-ASCII
62
+ string: ''
63
+ headers:
64
+ User-Agent:
65
+ - Mozilla/5.0 (compatible; Maremma/4.7.2; mailto:info@datacite.org)
66
+ Accept:
67
+ - text/xml
68
+ response:
69
+ status:
70
+ code: 200
71
+ message: OK
72
+ headers:
73
+ Link:
74
+ - <http://dx.doi.org/10.1007/978-3-642-34922-5_19>; rel="canonical", <http://www.springerlink.com/index/pdf/10.1007/978-3-642-34922-5_19>;
75
+ version="vor"; rel="item"
76
+ Access-Control-Allow-Origin:
77
+ - "*"
78
+ Access-Control-Allow-Headers:
79
+ - X-Requested-With
80
+ Content-Length:
81
+ - '20454'
82
+ Server:
83
+ - http-kit
84
+ Date:
85
+ - Mon, 12 Oct 2020 21:10:29 GMT
86
+ X-Rate-Limit-Limit:
87
+ - '50'
88
+ X-Rate-Limit-Interval:
89
+ - 1s
90
+ Connection:
91
+ - close
92
+ body:
93
+ encoding: ASCII-8BIT
94
+ string: !binary |-
95
+ PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGNyb3NzcmVmX3Jlc3VsdCB4bWxucz0iaHR0cDovL3d3dy5jcm9zc3JlZi5vcmcvcXJzY2hlbWEvMy4wIiB2ZXJzaW9uPSIzLjAiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL3d3dy5jcm9zc3JlZi5vcmcvcXJzY2hlbWEvMy4wIGh0dHA6Ly93d3cuY3Jvc3NyZWYub3JnL3NjaGVtYXMvY3Jvc3NyZWZfcXVlcnlfb3V0cHV0My4wLnhzZCI+DQogIDxxdWVyeV9yZXN1bHQ+DQogICAgPGhlYWQ+DQogICAgICA8ZG9pX2JhdGNoX2lkPm5vbmU8L2RvaV9iYXRjaF9pZD4NCiAgICA8L2hlYWQ+DQogICAgPGJvZHk+DQogICAgICA8cXVlcnkgc3RhdHVzPSJyZXNvbHZlZCI+DQogICAgICAgIDxkb2kgdHlwZT0iYm9va19jb250ZW50Ij4xMC4xMDA3Lzk3OC0zLTY0Mi0zNDkyMi01XzE5PC9kb2k+DQogICAgICAgIDxjcm0taXRlbSBuYW1lPSJwdWJsaXNoZXItbmFtZSIgdHlwZT0ic3RyaW5nIj5TcHJpbmdlciBTY2llbmNlIGFuZCBCdXNpbmVzcyBNZWRpYSBMTEM8L2NybS1pdGVtPg0KICAgICAgICA8Y3JtLWl0ZW0gbmFtZT0icHJlZml4LW5hbWUiIHR5cGU9InN0cmluZyI+U3ByaW5nZXItVmVybGFnPC9jcm0taXRlbT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9Im1lbWJlci1pZCIgdHlwZT0ibnVtYmVyIj4yOTc8L2NybS1pdGVtPg0KICAgICAgICA8Y3JtLWl0ZW0gbmFtZT0iY2l0YXRpb24taWQiIHR5cGU9Im51bWJlciI+NTgzNjE5NTk8L2NybS1pdGVtPg0KICAgICAgICA8Y3JtLWl0ZW0gbmFtZT0iYm9vay1pZCIgdHlwZT0ibnVtYmVyIj4xMTYzNzU2PC9jcm0taXRlbT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9InNlcmllcy1pZCIgdHlwZT0ibnVtYmVyIj4yNjc4ODA8L2NybS1pdGVtPg0KICAgICAgICA8Y3JtLWl0ZW0gbmFtZT0iZGVwb3NpdC10aW1lc3RhbXAiIHR5cGU9Im51bWJlciI+MjAxMjEwMzExNjE1NDQ8L2NybS1pdGVtPg0KICAgICAgICA8Y3JtLWl0ZW0gbmFtZT0ib3duZXItcHJlZml4IiB0eXBlPSJzdHJpbmciPjEwLjEwMDc8L2NybS1pdGVtPg0KICAgICAgICA8Y3JtLWl0ZW0gbmFtZT0ibGFzdC11cGRhdGUiIHR5cGU9ImRhdGUiPjIwMTktMDctMDVUMDA6MDk6NThaPC9jcm0taXRlbT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9ImNyZWF0ZWQiIHR5cGU9ImRhdGUiPjIwMTItMTAtMzFUMTE6MTU6NDhaPC9jcm0taXRlbT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9ImNpdGVkYnktY291bnQiIHR5cGU9Im51bWJlciI+MTwvY3JtLWl0ZW0+DQogICAgICAgIDxkb2lfcmVjb3JkPg0KICAgICAgICAgIDxjcm9zc3JlZiB4bWxucz0iaHR0cDovL3d3dy5jcm9zc3JlZi5vcmcveHNjaGVtYS8xLjAiIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL3d3dy5jcm9zc3JlZi5vcmcveHNjaGVtYS8xLjAgaHR0cDovL2RvaS5jcm9zc3JlZi5vcmcvc2NoZW1hcy91bml4cmVmMS4wLnhzZCI+DQogICAgICAgICAgICA8Ym9vayBib29rX3R5cGU9Im90aGVyIj4NCiAgICAgICAgICAgICAgPGJvb2tfc2VyaWVzX21ldGFkYXRhPg0KICAgICAgICAgICAgICAgIDxzZXJpZXNfbWV0YWRhdGE+DQogICAgICAgICAgICAgICAgICA8dGl0bGVzPg0KICAgICAgICAgICAgICAgICAgICA8dGl0bGU+U3R1ZGllcyBpbiBGdXp6aW5lc3MgYW5kIFNvZnQgQ29tcHV0aW5nPC90aXRsZT4NCiAgICAgICAgICAgICAgICAgIDwvdGl0bGVzPg0KICAgICAgICAgICAgICAgICAgPGlzc24gbWVkaWFfdHlwZT0icHJpbnQiPjE0MzQtOTkyMjwvaXNzbj4NCiAgICAgICAgICAgICAgICAgIDxpc3NuIG1lZGlhX3R5cGU9ImVsZWN0cm9uaWMiPjE4NjAtMDgwODwvaXNzbj4NCiAgICAgICAgICAgICAgICA8L3Nlcmllc19tZXRhZGF0YT4NCiAgICAgICAgICAgICAgICA8Y29udHJpYnV0b3JzPg0KICAgICAgICAgICAgICAgICAgPHBlcnNvbl9uYW1lIGNvbnRyaWJ1dG9yX3JvbGU9ImVkaXRvciIgc2VxdWVuY2U9ImZpcnN0Ij4NCiAgICAgICAgICAgICAgICAgICAgPGdpdmVuX25hbWU+Um9uYWxkIFIuPC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgICAgICAgICA8c3VybmFtZT5ZYWdlcjwvc3VybmFtZT4NCiAgICAgICAgICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgICAgICAgICA8cGVyc29uX25hbWUgY29udHJpYnV0b3Jfcm9sZT0iZWRpdG9yIiBzZXF1ZW5jZT0iYWRkaXRpb25hbCI+DQogICAgICAgICAgICAgICAgICAgIDxnaXZlbl9uYW1lPkFsaSBNLjwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgICAgICAgICAgPHN1cm5hbWU+QWJiYXNvdjwvc3VybmFtZT4NCiAgICAgICAgICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgICAgICAgICA8cGVyc29uX25hbWUgY29udHJpYnV0b3Jfcm9sZT0iZWRpdG9yIiBzZXF1ZW5jZT0iYWRkaXRpb25hbCI+DQogICAgICAgICAgICAgICAgICAgIDxnaXZlbl9uYW1lPk1hcmVrIFouPC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgICAgICAgICA8c3VybmFtZT5SZWZvcm1hdDwvc3VybmFtZT4NCiAgICAgICAgICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgICAgICAgICA8cGVyc29uX25hbWUgY29udHJpYnV0b3Jfcm9sZT0iZWRpdG9yIiBzZXF1ZW5jZT0iYWRkaXRpb25hbCI+DQogICAgICAgICAgICAgICAgICAgIDxnaXZlbl9uYW1lPlNoYWhuYXogTi48L2dpdmVuX25hbWU+DQogICAgICAgICAgICAgICAgICAgIDxzdXJuYW1lPlNoYWhiYXpvdmE8L3N1cm5hbWU+DQogICAgICAgICAgICAgICAgICA8L3BlcnNvbl9uYW1lPg0KICAgICAgICAgICAgICAgIDwvY29udHJpYnV0b3JzPg0KICAgICAgICAgICAgICAgIDx0aXRsZXM+DQogICAgICAgICAgICAgICAgICA8dGl0bGU+U29mdCBDb21wdXRpbmc6IFN0YXRlIG9mIHRoZSBBcnQgVGhlb3J5IGFuZCBOb3ZlbCBBcHBsaWNhdGlvbnM8L3RpdGxlPg0KICAgICAgICAgICAgICAgIDwvdGl0bGVzPg0KICAgICAgICAgICAgICAgIDx2b2x1bWU+MjkxPC92b2x1bWU+DQogICAgICAgICAgICAgICAgPHB1YmxpY2F0aW9uX2RhdGUgbWVkaWFfdHlwZT0icHJpbnQiPg0KICAgICAgICAgICAgICAgICAgPHllYXI+MjAxMzwveWVhcj4NCiAgICAgICAgICAgICAgICA8L3B1YmxpY2F0aW9uX2RhdGU+DQogICAgICAgICAgICAgICAgPGlzYm4gbWVkaWFfdHlwZT0icHJpbnQiPjk3OC0zLTY0Mi0zNDkyMS04PC9pc2JuPg0KICAgICAgICAgICAgICAgIDxpc2JuIG1lZGlhX3R5cGU9ImVsZWN0cm9uaWMiPjk3OC0zLTY0Mi0zNDkyMi01PC9pc2JuPg0KICAgICAgICAgICAgICAgIDxwdWJsaXNoZXI+DQogICAgICAgICAgICAgICAgICA8cHVibGlzaGVyX25hbWU+U3ByaW5nZXIgQmVybGluIEhlaWRlbGJlcmc8L3B1Ymxpc2hlcl9uYW1lPg0KICAgICAgICAgICAgICAgICAgPHB1Ymxpc2hlcl9wbGFjZT5CZXJsaW4sIEhlaWRlbGJlcmc8L3B1Ymxpc2hlcl9wbGFjZT4NCiAgICAgICAgICAgICAgICA8L3B1Ymxpc2hlcj4NCiAgICAgICAgICAgICAgICA8ZG9pX2RhdGE+DQogICAgICAgICAgICAgICAgICA8ZG9pPjEwLjEwMDcvOTc4LTMtNjQyLTM0OTIyLTU8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDxyZXNvdXJjZT5odHRwOi8vd3d3LnNwcmluZ2VybGluay5jb20vaW5kZXgvMTAuMTAwNy85NzgtMy02NDItMzQ5MjItNTwvcmVzb3VyY2U+DQogICAgICAgICAgICAgICAgICA8Y29sbGVjdGlvbiBwcm9wZXJ0eT0iY3Jhd2xlci1iYXNlZCIgc2V0YnlJRD0ic3ByaW5nZXIiPg0KICAgICAgICAgICAgICAgICAgICA8aXRlbSBjcmF3bGVyPSJpUGFyYWRpZ21zIj4NCiAgICAgICAgICAgICAgICAgICAgICA8cmVzb3VyY2U+aHR0cDovL3d3dy5zcHJpbmdlcmxpbmsuY29tL2luZGV4L3BkZi8xMC4xMDA3Lzk3OC0zLTY0Mi0zNDkyMi01PC9yZXNvdXJjZT4NCiAgICAgICAgICAgICAgICAgICAgPC9pdGVtPg0KICAgICAgICAgICAgICAgICAgPC9jb2xsZWN0aW9uPg0KICAgICAgICAgICAgICAgIDwvZG9pX2RhdGE+DQogICAgICAgICAgICAgIDwvYm9va19zZXJpZXNfbWV0YWRhdGE+DQogICAgICAgICAgICAgIDxjb250ZW50X2l0ZW0gY29tcG9uZW50X3R5cGU9ImNoYXB0ZXIiIGxldmVsX3NlcXVlbmNlX251bWJlcj0iMSIgcHVibGljYXRpb25fdHlwZT0iZnVsbF90ZXh0Ij4NCiAgICAgICAgICAgICAgICA8Y29udHJpYnV0b3JzPg0KICAgICAgICAgICAgICAgICAgPHBlcnNvbl9uYW1lIGNvbnRyaWJ1dG9yX3JvbGU9ImF1dGhvciIgc2VxdWVuY2U9ImZpcnN0Ij4NCiAgICAgICAgICAgICAgICAgICAgPGdpdmVuX25hbWU+QWxpPC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgICAgICAgICA8c3VybmFtZT5SYXppYjwvc3VybmFtZT4NCiAgICAgICAgICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgICAgICAgICA8cGVyc29uX25hbWUgY29udHJpYnV0b3Jfcm9sZT0iYXV0aG9yIiBzZXF1ZW5jZT0iYWRkaXRpb25hbCI+DQogICAgICAgICAgICAgICAgICAgIDxnaXZlbl9uYW1lPlNjb3R0PC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgICAgICAgICA8c3VybmFtZT5EaWNrPC9zdXJuYW1lPg0KICAgICAgICAgICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgICAgICAgICAgIDxwZXJzb25fbmFtZSBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiIHNlcXVlbmNlPSJhZGRpdGlvbmFsIj4NCiAgICAgICAgICAgICAgICAgICAgPGdpdmVuX25hbWU+VmluY2VudDwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgICAgICAgICAgPHN1cm5hbWU+R2F1ZGV0PC9zdXJuYW1lPg0KICAgICAgICAgICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgICAgICAgICA8L2NvbnRyaWJ1dG9ycz4NCiAgICAgICAgICAgICAgICA8dGl0bGVzPg0KICAgICAgICAgICAgICAgICAgPHRpdGxlPkxvZy1Eb21haW4gQXJpdGhtZXRpYyBmb3IgSGlnaC1TcGVlZCBGdXp6eSBDb250cm9sIG9uIGEgRmllbGQtUHJvZ3JhbW1hYmxlIEdhdGUgQXJyYXk8L3RpdGxlPg0KICAgICAgICAgICAgICAgIDwvdGl0bGVzPg0KICAgICAgICAgICAgICAgIDxjb21wb25lbnRfbnVtYmVyPkNoYXB0ZXIgMTk8L2NvbXBvbmVudF9udW1iZXI+DQogICAgICAgICAgICAgICAgPHB1YmxpY2F0aW9uX2RhdGUgbWVkaWFfdHlwZT0icHJpbnQiPg0KICAgICAgICAgICAgICAgICAgPHllYXI+MjAxMzwveWVhcj4NCiAgICAgICAgICAgICAgICA8L3B1YmxpY2F0aW9uX2RhdGU+DQogICAgICAgICAgICAgICAgPHBhZ2VzPg0KICAgICAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+MjY5PC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgICAgICAgPGxhc3RfcGFnZT4yODc8L2xhc3RfcGFnZT4NCiAgICAgICAgICAgICAgICA8L3BhZ2VzPg0KICAgICAgICAgICAgICAgIDxkb2lfZGF0YT4NCiAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTAwNy85NzgtMy02NDItMzQ5MjItNV8xOTwvZG9pPg0KICAgICAgICAgICAgICAgICAgPHJlc291cmNlPmh0dHA6Ly9saW5rLnNwcmluZ2VyLmNvbS8xMC4xMDA3Lzk3OC0zLTY0Mi0zNDkyMi01XzE5PC9yZXNvdXJjZT4NCiAgICAgICAgICAgICAgICAgIDxjb2xsZWN0aW9uIHByb3BlcnR5PSJjcmF3bGVyLWJhc2VkIiBzZXRieUlEPSJzcHJpbmdlciI+DQogICAgICAgICAgICAgICAgICAgIDxpdGVtIGNyYXdsZXI9ImlQYXJhZGlnbXMiPg0KICAgICAgICAgICAgICAgICAgICAgIDxyZXNvdXJjZT5odHRwOi8vd3d3LnNwcmluZ2VybGluay5jb20vaW5kZXgvcGRmLzEwLjEwMDcvOTc4LTMtNjQyLTM0OTIyLTVfMTk8L3Jlc291cmNlPg0KICAgICAgICAgICAgICAgICAgICA8L2l0ZW0+DQogICAgICAgICAgICAgICAgICA8L2NvbGxlY3Rpb24+DQogICAgICAgICAgICAgICAgPC9kb2lfZGF0YT4NCiAgICAgICAgICAgICAgICA8Y2l0YXRpb25fbGlzdD4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjE5X0NSMSI+DQogICAgICAgICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPkluZm9ybWF0aW9uIGFuZCBDb250cm9sPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8YXV0aG9yPkwuIFphZGVoPC9hdXRob3I+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWU+ODwvdm9sdW1lPg0KICAgICAgICAgICAgICAgICAgICA8aXNzdWU+MzwvaXNzdWU+DQogICAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjMzODwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgICAgICAgICAgPGNZZWFyPjE5NjU8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjEwMTYvUzAwMTktOTk1OCg2NSk5MDI0MS1YPC9kb2k+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+WmFkZWgsIEwuOiBGdXp6eSBTZXRzLiBJbmZvcm1hdGlvbiBhbmQgQ29udHJvbMKgOCgzKSwgMzM44oCTMzUzICgxOTY1KTwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjE5X0NSMiI+DQogICAgICAgICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPklFRUUgVHJhbnMuIENvbXB1dGVyczwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGF1dGhvcj5FLkguIE1hbWRhbmk8L2F1dGhvcj4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZT4yNjwvdm9sdW1lPg0KICAgICAgICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT4xMTgyPC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MTk3NzwvY1llYXI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTEwOS9UQy4xOTc3LjE2NzQ3Nzk8L2RvaT4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5NYW1kYW5pLCBFLkguOiBBcHBsaWNhdGlvbiBvZiBGdXp6eSBMb2dpYyB0byBBcHByb3hpbWF0ZSBSZWFzb25pbmcuIElFRUUgVHJhbnMuIENvbXB1dGVyc8KgKDI2KSwgMTE4MuKAkzExOTEgKDE5NzcpPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMTlfQ1IzIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjExMDkvRlVaWlkuMjAwNy40Mjk1NjY5PC9kb2k+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+SGFuLCBJLlMuOiBNZW1iZXJzaGlwIEZ1bmN0aW9uIENpcmN1aXQgZm9yIE5ldXJhbC9GdXp6eSBIYXJkd2FyZSBvZiBBbmFsb2ctTWl4ZWQgT3BlcmF0aW9uIEJhc2VkIG9uIHRoZSBQcm9ncmFtbWFibGUgQ29uZHVjdGFuY2UuIEluOiBJRUVFIEludC4gRnV6enkgU3lzdGVtcyBDb25mLiwgcHAuIDHigJM0ICgyMDA3KTwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjE5X0NSNCI+DQogICAgICAgICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPkVsZWN0cm9uaWNzIExldHRlcnM8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgICAgICAgIDxhdXRob3I+TC4gVGlnYWVydTwvYXV0aG9yPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lPjM5PC92b2x1bWU+DQogICAgICAgICAgICAgICAgICAgIDxpc3N1ZT44PC9pc3N1ZT4NCiAgICAgICAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+NjQyPC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAwMzwvY1llYXI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTA0OS9lbDoyMDAzMDQzNDwvZG9pPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPlRpZ2FlcnUsIEwuOiBQcm9ncmFtbWFibGUgYW5hbG9ndWUgbWVtYmVyc2hpcCBmdW5jdGlvbiBjaXJjdWl0IGZvciBoeWJyaWQtbW9kZSBmdXp6eSBzeXN0ZW1zLiBFbGVjdHJvbmljcyBMZXR0ZXJzwqAzOSg4KSwgNjQy4oCTNjQ0ICgyMDAzKTwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjE5X0NSNSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMTA5L05BRklQUy4yMDAyLjEwMTgwMjE8L2RvaT4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5LYWxheWtvdiwgSS4sIFRvbHQsIEcuOiBGYXN0IGZ1enp5IHNpZ25hbCBhbmQgaW1hZ2UgcHJvY2Vzc2luZyBoYXJkd2FyZS4gSW46IEFubnVhbCBNZWV0aW5nIG9mIHRoZSBOb3J0aCBBbWVyaWNhbiBGdXp6eSBJbmZvcm1hdGlvbiBQcm9jZXNzaW5nIFNvY2lldHksIHBwLiA34oCTMTIgKDIwMDIpPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMTlfQ1I2Ij4NCiAgICAgICAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjExMDkvTkFGSVBTLjIwMDguNDUzMTI1ODwvZG9pPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPkRpY2ssIFMuLCBHYXVkZXQsIFYuLCBCYWksIEguOiBCaXQtc2VyaWFsIGFyaXRobWV0aWM6IEEgbm92ZWwgYXBwcm9hY2ggdG8gZnV6enkgaGFyZHdhcmUgaW1wbGVtZW50YXRpb24uIEluOiBBbm51YWwgTWVldGluZyBvZiB0aGUgTm9ydGggQW1lcmljYW4gRnV6enkgSW5mb3JtYXRpb24gUHJvY2Vzc2luZyBTb2NpZXR5LCBwcC4gMeKAkzYgKDIwMDgpPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMTlfQ1I3Ij4NCiAgICAgICAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+SUVFRSBUcmFuc2FjdGlvbnMgb24gU3lzdGVtcywgTWFuIGFuZCBDeWJlcm5ldGljcywgUGFydCBBPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8YXV0aG9yPlouIFNhbGNpYzwvYXV0aG9yPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lPjMxPC92b2x1bWU+DQogICAgICAgICAgICAgICAgICAgIDxpc3N1ZT42PC9pc3N1ZT4NCiAgICAgICAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+NzMxPC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAwMTwvY1llYXI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTEwOS8zNDY4Ljk4MzQzMDwvZG9pPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPlNhbGNpYywgWi46IEhpZ2gtc3BlZWQgY3VzdG9taXphYmxlIGZ1enp5LWxvZ2ljIHByb2Nlc3NvcjogYXJjaGl0ZWN0dXJlIGFuZCBpbXBsZW1lbnRhdGlvbi4gSUVFRSBUcmFuc2FjdGlvbnMgb24gU3lzdGVtcywgTWFuIGFuZCBDeWJlcm5ldGljcywgUGFydCBBwqAzMSg2KSwgNzMx4oCTNzM3ICgyMDAxKTwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjE5X0NSOCI+DQogICAgICAgICAgICAgICAgICAgIDxhdXRob3I+Ui5SLiBTdG9sbDwvYXV0aG9yPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MTk3OTwvY1llYXI+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWVfdGl0bGU+U2V0IFRoZW9yeSBhbmQgTG9naWM8L3ZvbHVtZV90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5TdG9sbCwgUi5SLjogU2V0IFRoZW9yeSBhbmQgTG9naWMuIERvdmVyIFB1YmxpY2F0aW9ucywgTmV3IFlvcmsgKDE5NzkpPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMTlfQ1I5Ij4NCiAgICAgICAgICAgICAgICAgICAgPGF1dGhvcj5ELlAuIEZpbGV2PC9hdXRob3I+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4xOTk0PC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZV90aXRsZT5Fc3NlbnRpYWxzIG9mIEZ1enp5IE1vZGVsaW5nIGFuZCBDb250cm9sPC92b2x1bWVfdGl0bGU+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+RmlsZXYsIEQuUC4sIFlhZ2VyLCBSLlIuOiBFc3NlbnRpYWxzIG9mIEZ1enp5IE1vZGVsaW5nIGFuZCBDb250cm9sLiBXaWxleSwgTmV3IFlvcmsgKDE5OTQpPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMTlfQ1IxMCI+DQogICAgICAgICAgICAgICAgICAgIDxhdXRob3I+Si4gSmFudHplbjwvYXV0aG9yPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAwNzwvY1llYXI+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWVfdGl0bGU+Rm91bmRhdGlvbnMgb2YgRnV6enkgQ29udHJvbDwvdm9sdW1lX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjEwMDIvOTc4MDQ3MDA2MTE3NjwvZG9pPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPkphbnR6ZW4sIEouOiBGb3VuZGF0aW9ucyBvZiBGdXp6eSBDb250cm9sLiBXaWxleSwgTmV3IFlvcmsgKDIwMDcpPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMTlfQ1IxMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMDE2L0I5NzgtMDc1MDY3NjA1LTIvNTAwMDMtWDwvZG9pPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPklicmFoaW0sIEEuOiBGdXp6eSBMb2dpYyBmb3IgRW1iZWRkZWQgU3lzdGVtcyBBcHBsaWNhdGlvbnMuIEVsc2V2aWVyICgyMDA0KTwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjE5X0NSMTIiPg0KICAgICAgICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5JRUVFIFRyYW5zLiBvbiBTeXN0ZW1zLCBNYW4sIGFuZCBDeWJlcm5ldGljcyDigJMgUGFydCBBPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8YXV0aG9yPlkuRC4gS2ltPC9hdXRob3I+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWU+Mjc8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgICAgICAgPGlzc3VlPjE8L2lzc3VlPg0KICAgICAgICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT40NTwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgICAgICAgICAgPGNZZWFyPjE5OTc8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjExMDkvMzQ2OC41NTMyMjQ8L2RvaT4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5LaW0sIFkuRC46IEhpZ2ggU3BlZWQgRmxleGlibGUgRnV6enkgSGFyZHdhcmUgZm9yIEZ1enp5IEluZm9ybWF0aW9uIFByb2Nlc3NpbmcuIElFRUUgVHJhbnMuIG9uIFN5c3RlbXMsIE1hbiwgYW5kIEN5YmVybmV0aWNzIOKAkyBQYXJ0IEHCoDI3KDEpLCA0NeKAkzU2ICgxOTk3KTwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjE5X0NSMTMiPg0KICAgICAgICAgICAgICAgICAgICA8YXV0aG9yPkMuUy4gTGVlPC9hdXRob3I+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4xOTk2PC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZV90aXRsZT5OZXVyYWwgRnV6enkgU3lzdGVtczogQSBOZXVyby1GdXp6eSBTeW5lcmdpc20gdG8gSW50ZWxsaWdlbnQgU3lzdGVtczwvdm9sdW1lX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPkxlZSwgQy5TLiwgTGluLCBDLjogTmV1cmFsIEZ1enp5IFN5c3RlbXM6IEEgTmV1cm8tRnV6enkgU3luZXJnaXNtIHRvIEludGVsbGlnZW50IFN5c3RlbXMuIFByZW50aWNlIEhhbGwsIEFsZXhhbmRyaWEgKDE5OTYpPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMTlfQ1IxNCI+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+R2luYXJ0LCBBLiwgU2FuY2hleiwgRy46IEZhc3QgRGVmdXp6aWZpY2F0aW9uIE1ldGhvZCBCYXNlZCBvbiBDZW50cm9pZCBFc3RpbWF0aW9uLiBBcHBsaWVkIE1vZGVsbGluZyBhbmQgU2ltdWxhdGlvbiAoMjAwMik8L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIxOV9DUjE1Ij4NCiAgICAgICAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjExNDUvMzI2NjE5LjMyNjY4ODwvZG9pPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPlJ1bmtsZXIsIFQuLCBHbGVzbmVyLCBNLjogREVDQURF4oCUZmFzdCBjZW50cm9pZCBhcHByb3hpbWF0aW9uIGRlZnV6emlmaWNhdGlvbiBmb3IgcmVhbCB0aW1lIGZ1enp5IGNvbnRyb2wgYXBwbGljYXRpb25zLiBJbjogUHJvY2VlZGluZ3Mgb2YgdGhlIDE5OTQgQUNNIFN5bXBvc2l1bSBvbiBBcHBsaWVkIENvbXB1dGluZywgcHAuIDE2MeKAkzE2NSAoMTk5NCk8L3Vuc3RydWN0dXJlZF9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIxOV9DUjE2Ij4NCiAgICAgICAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjExMDkvSUNNTk4uMTk5NC41OTM3MjY8L2RvaT4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5FaXNlbGUsIE0uLCBIZW50c2NoZWwsIEsuLCBLdW5lbXVuZCwgVC46IEhhcmR3YXJlIHJlYWxpemF0aW9uIG9mIGZhc3QgZGVmdXp6aWZpY2F0aW9uIGJ5IGFkYXB0aXZlIGludGVncmF0aW9uLiBJbjogUHJvY2VlZGluZ3Mgb2YgdGhlIEZvdXJ0aCBJbnRlcm5hdGlvbmFsIENvbmZlcmVuY2Ugb24gTWljcm9lbGVjdHJvbmljcyBmb3IgTmV1cmFsIE5ldHdvcmtzIGFuZCBGdXp6eSBTeXN0ZW1zLCBwcC4gMzE44oCTMzIzICgxOTk0KTwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjE5X0NSMTciPg0KICAgICAgICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5GdXp6eSBTZXRzIGFuZCBTeXN0ZW1zPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8YXV0aG9yPkUuIEJyb2VraG92ZW48L2F1dGhvcj4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZT4xNTc8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgICAgICAgPGlzc3VlPjc8L2lzc3VlPg0KICAgICAgICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT45MDQ8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDA2PC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMDE2L2ouZnNzLjIwMDUuMTEuMDA1PC9kb2k+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+QnJvZWtob3ZlbiwgRS4sIEJhZXRzLCBCLjogRmFzdCBhbmQgYWNjdXJhdGUgY2VudGVyIG9mIGdyYXZpdHkgZGVmdXp6aWZpY2F0aW9uIG9mIGZ1enp5IHN5c3RlbSBvdXRwdXRzIGRlZmluZWQgb24gdHJhcGV6b2lkYWwgZnV6enkgcGFydGl0aW9ucy4gRnV6enkgU2V0cyBhbmQgU3lzdGVtc8KgMTU3KDcpLCA5MDTigJM5MTggKDIwMDYpPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMTlfQ1IxOCI+DQogICAgICAgICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPkludGVybmF0aW9uYWwgSm91cm5hbCBvZiBDb21wdXRhdGlvbmFsIENvZ25pdGlvbjwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGF1dGhvcj5BLiBQYXRlbDwvYXV0aG9yPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lPjI8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgICAgICAgPGlzc3VlPjM8L2lzc3VlPg0KICAgICAgICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT4xMTU8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICAgICAgICAgIDxjWWVhcj4yMDA0PC9jWWVhcj4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5QYXRlbCwgQS46IFRyYW5zZm9ybWF0aW9uIGZ1bmN0aW9ucyBmb3IgdHJhcGV6b2lkYWwgbWVtYmVyc2hpcCBmdW5jdGlvbnMuIEludGVybmF0aW9uYWwgSm91cm5hbCBvZiBDb21wdXRhdGlvbmFsIENvZ25pdGlvbsKgMigzKSwgMTE14oCTMTM1ICgyMDA0KTwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjE5X0NSMTkiPg0KICAgICAgICAgICAgICAgICAgICA8YXV0aG9yPlMuLUcuIExlZTwvYXV0aG9yPg0KICAgICAgICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT45MzwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgICAgICAgICAgPGNZZWFyPjIwMDc8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgICA8c2VyaWVzX3RpdGxlPkxlY3R1cmUgTm90ZXMgaW4gQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2U8L3Nlcmllc190aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZV90aXRsZT5Lbm93bGVkZ2UtQmFzZWQgSW50ZWxsaWdlbnQgSW5mb3JtYXRpb24gYW5kIEVuZ2luZWVyaW5nIFN5c3RlbXM8L3ZvbHVtZV90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMDA3Lzk3OC0zLTU0MC03NDgxOS05XzEyPC9kb2k+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+TGVlLCBTLi1HLiwgTWl5YXpha2ksIE0uLCBLaW0sIEouLUkuOiBEZXNpZ24gb2YgVmVyeSBIaWdoLVNwZWVkIEludGVnZXIgRnV6enkgQ29udHJvbGxlciBXaXRob3V0IE11bHRpcGxpY2F0aW9ucyBieSBVc2luZyBWSERMLiBJbjogQXBvbGxvbmksIEIuLCBIb3dsZXR0LCBSLkouLCBKYWluLCBMLiAoZWRzLikgS0VTIDIwMDcsIFBhcnQgSS4gTE5DUyAoTE5BSSksIHZvbC7CoDQ2OTIsIHBwLiA5M+KAkzEwMC4gU3ByaW5nZXIsIEhlaWRlbGJlcmcgKDIwMDcpPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMTlfQ1IyMCI+DQogICAgICAgICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMTA5L0lDQy4xOTk1LjUyNDI1MzwvZG9pPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPlJvYmVydHNvbiwgUC4sIFZpbGxlYnJ1biwgRS4sIEhvZWhlciwgUC46IEEgQ29tcGFyaXNvbiBvZiBPcHRpbWFsIGFuZCBTdWItT3B0aW1hbCBNQVAgRGVjb2RpbmcgQWxnb3JpdGhtcyBPcGVyYXRpbmcgaW4gdGhlIExvZyBEb21haW4uIEluOiBJRUVFIEludC4gQ29uZi4gQ29tbXVuaWNhdGlvbnMsIFNlYXR0bGUsIFdBLCBwcC4gMTAwOeKAkzEwMTMgKDE5OTUpPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMTlfQ1IyMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMTA5L0dMT0NPTS4xOTkwLjExNjU5ODwvZG9pPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPkVyZmFuaWFuLCBKLiwgUGFzdXBhdGh5LCBTLiwgR3VsYWssIEcuOiBSZWR1Y2VkIENvbXBsZXhpdHkgU3ltYm9sIERldGVjdG9ycyB3aXRoIFBhcmFsbGVsIFN0cnVjdHVyZXMuIEluOiBJRUVFIEdMT0JFQ09NLCBwcC4gNzA04oCTNzA4ICgxOTkwKTwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjE5X0NSMjIiPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPkthd2FqaSwgUy4sIE1hZWRhLCBULiwgTWF0c3VuYWdhLCBOLjogRnV6enkgQ29udHJvbCBVc2luZyBLbm93bGVkZ2UgQWNxdWlyZWQgZnJvbSBQRCBDb250cm9sLiBJbmR1c3RyaWFsIEVsZWN0cm9uaWNzLCBDb250cm9sIGFuZCBJbnN0cnVtZW50YXRpb27CoDIsIDE1NDnigJMxNTU0ICgxOTkxKTwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjE5X0NSMjMiPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPkd3YWx0bmV5LCBELiwgS2luZywgSy4sIFNtaXRoLCBLLiwgT3Jtc2J5LCBKLjogSW1wbGVtZW50YXRpb24gb2YgQWRhcHRpdmUgRGlnaXRhbCBDb250cm9sbGVycyBvbiBQcm9ncmFtbWFibGUgTG9naWMgRGV2aWNlcyAoMjAwMiksIGh0dHBzOi8vd3d3LnJlc2VhcmNoZ2F0ZS5uZXQvcHVibGljYXRpb24vMjM4OTIyOTdfSW1wbGVtZW50YXRpb25fb2ZfQWRhcHRpdmVfRGlnaXRhbF9Db250cm9sbGVyc19vbl9Qcm9ncmFtbWFibGVfTG9naWNfRGV2aWNlczwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjE5X0NSMjQiPg0KICAgICAgICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5JRUVFIFRyYW5zLiBvbiBTeXN0ZW1zLCBNYW4gYW5kIEN5YmVybmV0aWNzPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8YXV0aG9yPkouIFRhdXI8L2F1dGhvcj4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZT4yNzwvdm9sdW1lPg0KICAgICAgICAgICAgICAgICAgICA8aXNzdWU+MzwvaXNzdWU+DQogICAgICAgICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjUyNjwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgICAgICAgICAgPGNZZWFyPjE5OTc8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjExMDkvMzQ3Ny41ODQ5NjA8L2RvaT4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5UYXVyLCBKLiwgVGFvLCBDLjogRGVzaWduIGFuZCBBbmFseXNpcyBvZiBSZWdpb24tV2lzZSBMaW5lYXIgRnV6enkgQ29udHJvbGxlcnMuIElFRUUgVHJhbnMuIG9uIFN5c3RlbXMsIE1hbiBhbmQgQ3liZXJuZXRpY3PCoDI3KDMpLCA1MjbigJM1MzIgKDE5OTcpPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMTlfQ1IyNSI+DQogICAgICAgICAgICAgICAgICAgIDxhdXRob3I+Ti5GLiBNYWNpYTwvYXV0aG9yPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAwNDwvY1llYXI+DQogICAgICAgICAgICAgICAgICAgIDx2b2x1bWVfdGl0bGU+TW9kZWxpbmcgYW5kIENvbnRyb2wgb2YgRHluYW1pYyBTeXN0ZW1zPC92b2x1bWVfdGl0bGU+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+TWFjaWEsIE4uRi4sIFRoYWxlciwgRy5KLjogTW9kZWxpbmcgYW5kIENvbnRyb2wgb2YgRHluYW1pYyBTeXN0ZW1zLiBEZWxtYXIgQ2VuZ2FnZSBMZWFybmluZywgQWxiYW55ICgyMDA0KTwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjE5X0NSMjYiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pIHByb3ZpZGVyPSJjcm9zc3JlZiI+MTAuMTEwOS9BSU5BLjIwMDUuMTQ8L2RvaT4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5CYXJvbGxpLCBMLiwgZXQgYWwuOiBBIENBQyBzY2hlbWUgZm9yIG11bHRpbWVkaWEgYXBwbGljYXRpb25zIGJhc2VkIG9uIGZ1enp5IGxvZ2ljLiBJbjogUHJvYy4gSW50LiBDLiBBZHZhbmNlZCBJbmYuIE5ldHdvcmtpbmcgJmFtcDsgQXBwcy4sIFRhaXBlaSwgVGFpd2FuICgyMDA1KTwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjE5X0NSMjciPg0KICAgICAgICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5JRUVFL0FDTSBUcmFucy4gTmV0d29ya2luZzwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGF1dGhvcj5HLiBBc2NpYTwvYXV0aG9yPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lPjEzPC92b2x1bWU+DQogICAgICAgICAgICAgICAgICAgIDxpc3N1ZT4yPC9pc3N1ZT4NCiAgICAgICAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+MjYyPC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAwNTwvY1llYXI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTEwOS9UTkVULjIwMDUuODQ1NTQzPC9kb2k+DQogICAgICAgICAgICAgICAgICAgIDx1bnN0cnVjdHVyZWRfY2l0YXRpb24+QXNjaWEsIEcuLCBDYXRhbmlhLCBWLiwgUGFubm8sIEQuOiBBbiBldm9sdXRpb25hcnkgbWFuYWdlbWVudCBzY2hlbWUgaW4gaGlnaC1wZXJmb3JtYW5jZSBwYWNrZXQgc3dpdGNoZXMuIElFRUUvQUNNIFRyYW5zLiBOZXR3b3JraW5nwqAxMygyKSwgMjYy4oCTMjc1ICgyMDA1KTwvdW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjE5X0NSMjgiPg0KICAgICAgICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5JRUVFIFRyYW5zLiBNb2JpbGUgQ29tcHV0Ljwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgICAgICAgPGF1dGhvcj5ILi1QLiBMaW48L2F1dGhvcj4NCiAgICAgICAgICAgICAgICAgICAgPHZvbHVtZT40PC92b2x1bWU+DQogICAgICAgICAgICAgICAgICAgIDxpc3N1ZT41PC9pc3N1ZT4NCiAgICAgICAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+NTMwPC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgICAgICAgICA8Y1llYXI+MjAwNTwvY1llYXI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTEwOS9UTUMuMjAwNS43MDwvZG9pPg0KICAgICAgICAgICAgICAgICAgICA8dW5zdHJ1Y3R1cmVkX2NpdGF0aW9uPkxpbiwgSC4tUC4sIEp1YW5nLCBSLi1ULiwgTGluLCBELi1CLjogVmFsaWRhdGlvbiBvZiBhbiBpbXByb3ZlZCBsb2NhdGlvbi1iYXNlZCBoYW5kb3ZlciBhbGdvcml0aG0gdXNpbmcgR1NNIG1lYXN1cmVtZW50IGRhdGEuIElFRUUgVHJhbnMuIE1vYmlsZSBDb21wdXQuwqA0KDUpLCA1MzDigJM1MzYgKDIwMDUpPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMTlfQ1IyOSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMTA5L0lTTVZMLjIwMDkuNDA8L2RvaT4NCiAgICAgICAgICAgICAgICAgICAgPHVuc3RydWN0dXJlZF9jaXRhdGlvbj5SYXppYiwgQS4sIERpY2ssIFMuLCBHYXVkZXQsIFYuOiBEZXNpZ24gb2YgYSBIaWdoLVNwZWVkIEZ1enp5IExvZ2ljIENvbnRyb2xsZXIgQmFzZWQgb24gTG9nLURvbWFpbiBBcml0aG1ldGljLiBJbjogUHJvY2VlZGluZ3MsIElTTVZMIDIwMDksIE5haGEsIE9raW5hd2EsIEphcGFuLCBNYXkgMjEtMjMsIHBwLiAxMznigJMxNDQgKDIwMDkpPC91bnN0cnVjdHVyZWRfY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgIDwvY2l0YXRpb25fbGlzdD4NCiAgICAgICAgICAgICAgPC9jb250ZW50X2l0ZW0+DQogICAgICAgICAgICA8L2Jvb2s+DQogICAgICAgICAgPC9jcm9zc3JlZj4NCiAgICAgICAgPC9kb2lfcmVjb3JkPg0KICAgICAgPC9xdWVyeT4NCiAgICA8L2JvZHk+DQogIDwvcXVlcnlfcmVzdWx0Pg0KPC9jcm9zc3JlZl9yZXN1bHQ+
96
+ http_version:
97
+ recorded_at: Mon, 12 Oct 2020 21:10:29 GMT
98
+ recorded_with: VCR 3.0.3
@@ -153,7 +153,7 @@ describe Bolognese::Metadata, vcr: true do
153
153
  it "missing_comma" do
154
154
  json = IO.read(fixture_path + "datacite_software_missing_comma.json")
155
155
  response = subject.jsonlint(json)
156
- expect(response).to eq(["expected comma, not a string (after doi) at line 4, column 11 [parse.c:373]"])
156
+ expect(response).to eq(["expected comma, not a string (after doi) at line 4, column 11 [parse.c:364]"])
157
157
  end
158
158
 
159
159
  it "overlapping_keys" do
@@ -29,7 +29,7 @@ describe Bolognese::Metadata, vcr: true do
29
29
  it "Crossref DOI" do
30
30
  expect(subject.valid?).to be true
31
31
  expect(subject.id).to eq("https://doi.org/10.7554/elife.01567")
32
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceTypeGeneral"=>"Text", "resourceType"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
32
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceTypeGeneral"=>"JournalArticle", "resourceType"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
33
33
  expect(subject.url).to eq("http://elifesciences.org/lookup/doi/10.7554/eLife.01567")
34
34
  expect(subject.creators.length).to eq(5)
35
35
  expect(subject.creators.first).to eq("familyName"=>"Sankar", "givenName"=>"Martial", "name"=>"Sankar, Martial", "nameType"=>"Personal")
@@ -52,7 +52,7 @@ describe Bolognese::Metadata, vcr: true do
52
52
  expect(subject.valid?).to be false
53
53
  expect(subject.state).to eq("not_found")
54
54
  expect(subject.id).to eq("https://doi.org/10.7554/elife.01567")
55
- expect(subject.types).to eq("bibtex"=>"phdthesis", "citeproc"=>"thesis", "resourceTypeGeneral"=>"Text", "resourceType"=>"Dissertation", "ris"=>"THES", "schemaOrg"=>"Thesis")
55
+ expect(subject.types).to eq("bibtex"=>"phdthesis", "citeproc"=>"thesis", "resourceTypeGeneral"=>"Dissertation", "resourceType"=>"Dissertation", "ris"=>"THES", "schemaOrg"=>"Thesis")
56
56
  expect(subject.creators).to eq([{"familyName"=>"Toparlar", "givenName"=>"Y.", "name"=>"Toparlar, Y.", "nameType"=>"Personal"}])
57
57
  expect(subject.titles).to eq([{"title"=>"A multiscale analysis of the urban heat island effect: from city averaged temperatures to the energy demand of individual buildings"}])
58
58
  expect(subject.descriptions.first["description"]).to start_with("Designing the climates of cities")
@@ -20,7 +20,7 @@ describe Bolognese::Metadata, vcr: true do
20
20
  expect(subject.valid?).to be true
21
21
  expect(subject.id).to eq("https://doi.org/10.7554/elife.01567")
22
22
  expect(subject.identifiers).to eq([{"identifier"=>"e01567", "identifierType"=>"article_number"}])
23
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
23
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
24
24
  expect(subject.url).to eq("https://elifesciences.org/articles/01567")
25
25
  expect(subject.creators.length).to eq(5)
26
26
  expect(subject.creators.first).to eq("nameType"=>"Personal", "name"=>"Sankar, Martial", "givenName"=>"Martial", "familyName"=>"Sankar", "affiliation" => [{"name"=>"Department of Plant Molecular Biology, University of Lausanne, Lausanne, Switzerland"}])
@@ -33,7 +33,7 @@ describe Bolognese::Metadata, vcr: true do
33
33
  expect(subject.dates).to eq([{"date"=>"2014-02-11", "dateType"=>"Issued"}, {"date"=>"2018-08-23T13:41:49Z", "dateType"=>"Updated"}])
34
34
  expect(subject.publication_year).to eq("2014")
35
35
  expect(subject.publisher).to eq("eLife Sciences Publications, Ltd")
36
- expect(subject.container).to eq("identifier"=>"2050-084X", "identifierType"=>"ISSN", "title"=>"eLife", "type"=>"Journal", "volume"=>"3")
36
+ expect(subject.container).to eq("firstPage" => "e01567", "identifier"=>"2050-084X", "identifierType"=>"ISSN", "title"=>"eLife", "type"=>"Journal", "volume"=>"3")
37
37
  expect(subject.related_identifiers.length).to eq(27)
38
38
  expect(subject.related_identifiers.first).to eq("relatedIdentifier"=>"2050-084X", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection")
39
39
  expect(subject.related_identifiers.last).to eq("relatedIdentifier"=>"10.1038/ncb2764", "relatedIdentifierType"=>"DOI", "relationType"=>"References")
@@ -57,7 +57,7 @@ describe Bolognese::Metadata, vcr: true do
57
57
  expect(subject.id).to eq("https://doi.org/10.1371/journal.pone.0000030")
58
58
  expect(subject.identifiers).to eq([{"identifier"=>"10.1371/journal.pone.0000030", "identifierType"=>"Publisher ID"}])
59
59
  expect(subject.url).to eq("https://dx.plos.org/10.1371/journal.pone.0000030")
60
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
60
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
61
61
  expect(subject.creators.length).to eq(5)
62
62
  expect(subject.creators.first).to eq("nameType"=>"Personal", "name"=>"Ralser, Markus", "givenName"=>"Markus", "familyName"=>"Ralser")
63
63
  expect(subject.contributors).to eq([{"contributorType"=>"Editor", "familyName"=>"Janbon", "givenName"=>"Guilhem", "name"=>"Janbon, Guilhem", "nameType"=>"Personal"}])
@@ -84,7 +84,7 @@ describe Bolognese::Metadata, vcr: true do
84
84
  expect(subject.id).to eq("https://doi.org/10.3389/fpls.2019.00816")
85
85
  expect(subject.identifiers).to eq([{"identifier"=>"816", "identifierType"=>"article_number"}])
86
86
  expect(subject.url).to eq("https://www.frontiersin.org/article/10.3389/fpls.2019.00816/full")
87
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
87
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
88
88
  expect(subject.creators.length).to eq(4)
89
89
  expect(subject.creators.first).to eq("familyName"=>"Fortes", "givenName"=>"Ana Margarida", "name"=>"Fortes, Ana Margarida", "nameType"=>"Personal")
90
90
  expect(subject.titles).to eq([{"title"=>"Transcriptional Modulation of Polyamine Metabolism in Fruit Species Under Abiotic and Biotic Stress"}])
@@ -100,7 +100,7 @@ describe Bolognese::Metadata, vcr: true do
100
100
  expect(subject.related_identifiers.length).to eq(70)
101
101
  expect(subject.related_identifiers.first).to eq("relatedIdentifier"=>"1664-462X", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection")
102
102
  expect(subject.related_identifiers.last).to eq("relatedIdentifier"=>"10.17660/actahortic.2004.632.41", "relatedIdentifierType"=>"DOI", "relationType"=>"References")
103
- expect(subject.container).to eq("identifier"=>"1664-462X", "identifierType"=>"ISSN", "title"=>"Frontiers in Plant Science", "type"=>"Journal", "volume"=>"10")
103
+ expect(subject.container).to eq("firstPage" => "816", "identifier"=>"1664-462X", "identifierType"=>"ISSN", "title"=>"Frontiers in Plant Science", "type"=>"Journal", "volume"=>"10")
104
104
  expect(subject.agency).to eq("crossref")
105
105
  end
106
106
 
@@ -110,7 +110,7 @@ describe Bolognese::Metadata, vcr: true do
110
110
  expect(subject.valid?).to be true
111
111
  expect(subject.id).to eq("https://doi.org/10.7600/jspfsm.56.60")
112
112
  expect(subject.url).to eq("http://jlc.jst.go.jp/JST.JSTAGE/jspfsm/56.60?lang=en&from=CrossRef&type=abstract")
113
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
113
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
114
114
  expect(subject.creators).to eq([{"name"=>":(unav)", "nameType"=>"Organizational"}])
115
115
  expect(subject.titles).to eq([{"lang"=>"ja", "title"=>"自律神経・循環器応答"}])
116
116
  expect(subject.dates).to include({"date"=>"2007", "dateType"=>"Issued"})
@@ -128,7 +128,7 @@ describe Bolognese::Metadata, vcr: true do
128
128
  expect(subject.valid?).to be true
129
129
  expect(subject.id).to eq("https://doi.org/10.1163/1937240x-00002096")
130
130
  expect(subject.url).to eq("https://academic.oup.com/jcb/article-lookup/doi/10.1163/1937240X-00002096")
131
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
131
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
132
132
  expect(subject.creators.length).to eq(8)
133
133
  expect(subject.creators.first).to eq("familyName"=>"Mesquita-Joanes", "givenName"=>"Francesc", "name"=>"Mesquita-Joanes, Francesc", "nameType"=>"Personal")
134
134
  expect(subject.titles).to eq([{"title"=>"Global distribution of Fabaeformiscandona subacuta: an exotic invasive Ostracoda on the Iberian Peninsula?"}])
@@ -148,7 +148,7 @@ describe Bolognese::Metadata, vcr: true do
148
148
  expect(subject.valid?).to be true
149
149
  expect(subject.id).to eq("https://doi.org/10.1007/978-3-642-33191-6_49")
150
150
  expect(subject.url).to eq("http://link.springer.com/10.1007/978-3-642-33191-6_49")
151
- expect(subject.types).to eq("bibtex"=>"inbook", "citeproc"=>"chapter", "resourceType"=>"BookChapter", "resourceTypeGeneral"=>"Text", "ris"=>"CHAP", "schemaOrg"=>"Chapter")
151
+ expect(subject.types).to eq("bibtex"=>"inbook", "citeproc"=>"chapter", "resourceType"=>"BookChapter", "resourceTypeGeneral"=>"BookChapter", "ris"=>"CHAP", "schemaOrg"=>"Chapter")
152
152
  expect(subject.creators.length).to eq(3)
153
153
  expect(subject.creators.first).to eq("familyName"=>"Chen", "givenName"=>"Lili", "name"=>"Chen, Lili", "nameType"=>"Personal")
154
154
  expect(subject.titles).to eq([{"title"=>"Human Body Orientation Estimation in Multiview Scenarios"}])
@@ -166,7 +166,7 @@ describe Bolognese::Metadata, vcr: true do
166
166
  subject = Bolognese::Metadata.new(input: input)
167
167
  expect(subject.valid?).to be true
168
168
  expect(subject.url).to eq("http://biorxiv.org/lookup/doi/10.1101/097196")
169
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"PostedContent", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
169
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"PostedContent", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
170
170
  expect(subject.creators.count).to eq(11)
171
171
  expect(subject.creators.last).to eq("nameType"=>"Personal", "nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0003-4060-7360", "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}], "name"=>"Clark, Timothy", "givenName"=>"Timothy", "familyName"=>"Clark")
172
172
  expect(subject.titles).to eq([{"title"=>"A Data Citation Roadmap for Scholarly Data Repositories"}])
@@ -184,7 +184,7 @@ describe Bolognese::Metadata, vcr: true do
184
184
  subject = Bolognese::Metadata.new(input: input)
185
185
  expect(subject.valid?).to be true
186
186
  expect(subject.url).to eq("https://elifesciences.org/articles/55167#sa2")
187
- expect(subject.types).to eq("bibtex"=>"misc", "citeproc"=>"article-journal", "resourceType"=>"PeerReview", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"Review")
187
+ expect(subject.types).to eq("bibtex"=>"misc", "citeproc"=>"article-journal", "resourceType"=>"PeerReview", "resourceTypeGeneral"=>"PeerReview", "ris"=>"JOUR", "schemaOrg"=>"Review")
188
188
  expect(subject.creators.count).to eq(8)
189
189
  expect(subject.creators.last).to eq("affiliation" => [{"name"=>"Center for Computational Mathematics, Flatiron Institute, New York, United States"}],
190
190
  "familyName" => "Barnett",
@@ -206,7 +206,7 @@ describe Bolognese::Metadata, vcr: true do
206
206
  subject = Bolognese::Metadata.new(input: input)
207
207
  expect(subject.valid?).to be true
208
208
  expect(subject.url).to eq("http://espace.library.uq.edu.au/view/UQ:23a1e74")
209
- expect(subject.types).to eq("bibtex"=>"phdthesis", "citeproc"=>"thesis", "resourceType"=>"Dissertation", "resourceTypeGeneral"=>"Text", "ris"=>"THES", "schemaOrg"=>"Thesis")
209
+ expect(subject.types).to eq("bibtex"=>"phdthesis", "citeproc"=>"thesis", "resourceType"=>"Dissertation", "resourceTypeGeneral"=>"Dissertation", "ris"=>"THES", "schemaOrg"=>"Thesis")
210
210
  expect(subject.creators).to eq([{"familyName"=>"Collingwood",
211
211
  "givenName"=>"Patricia Maree",
212
212
  "name"=>"Collingwood, Patricia Maree",
@@ -231,7 +231,7 @@ describe Bolognese::Metadata, vcr: true do
231
231
  expect(subject.valid?).to be true
232
232
  expect(subject.id).to eq("https://doi.org/10.1890/0012-9658(2006)87%255b2832:tiopma%255d2.0.co;2")
233
233
  expect(subject.url).to eq("http://doi.wiley.com/10.1890/0012-9658(2006)87[2832:TIOPMA]2.0.CO;2")
234
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
234
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
235
235
  expect(subject.creators).to eq([{"nameType"=>"Personal", "name"=>"Fenton, A.", "givenName"=>"A.", "familyName"=>"Fenton"}, {"nameType"=>"Personal", "name"=>"Rands, S. A.", "givenName"=>"S. A.", "familyName"=>"Rands"}])
236
236
  expect(subject.rights_list).to eq([{"rightsUri"=>"http://doi.wiley.com/10.1002/tdm_license_1.1"}])
237
237
  expect(subject.titles).to eq([{"title"=>"THE IMPACT OF PARASITE MANIPULATION AND PREDATOR FORAGING BEHAVIOR ON PREDATOR–PREY COMMUNITIES"}])
@@ -251,7 +251,7 @@ describe Bolognese::Metadata, vcr: true do
251
251
  expect(subject.valid?).to be true
252
252
  expect(subject.id).to eq("https://doi.org/10.1155/2012/291294")
253
253
  expect(subject.url).to eq("http://www.hindawi.com/journals/pm/2012/291294/")
254
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
254
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
255
255
  expect(subject.creators.length).to eq(7)
256
256
  expect(subject.creators[2]).to eq("nameType"=>"Personal", "nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0003-2043-4925", "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}], "name"=>"Hernandez, Beatriz", "givenName"=>"Beatriz", "familyName"=>"Hernandez", "affiliation" => [{"name"=>"War Related Illness and Injury Study Center (WRIISC) and Mental Illness Research Education and Clinical Center (MIRECC), Department of Veterans Affairs, Palo Alto, CA 94304, USA"}, {"name"=>"Department of Psychiatry and Behavioral Sciences, Stanford University School of Medicine, Stanford, CA 94304, USA"}])
257
257
  expect(subject.rights_list).to eq([{"rights"=>"Creative Commons Attribution 3.0 Unported",
@@ -277,7 +277,7 @@ describe Bolognese::Metadata, vcr: true do
277
277
  expect(subject.id).to eq("https://doi.org/10.1016/j.ejphar.2015.03.018")
278
278
  expect(subject.identifiers).to eq([{"identifier"=>"S0014299915002332", "identifierType"=>"sequence-number"}])
279
279
  expect(subject.url).to eq("https://linkinghub.elsevier.com/retrieve/pii/S0014299915002332")
280
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
280
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
281
281
  expect(subject.creators.length).to eq(10)
282
282
  expect(subject.creators.first).to eq("nameType"=>"Personal", "name"=>"Beck, Sarah E.", "givenName"=>"Sarah E.", "familyName"=>"Beck")
283
283
  expect(subject.titles).to eq([{"title"=>"Paving the path to HIV neurotherapy: Predicting SIV CNS disease"}])
@@ -295,7 +295,7 @@ describe Bolognese::Metadata, vcr: true do
295
295
  expect(subject.valid?).to be true
296
296
  expect(subject.id).to eq("https://doi.org/10.1038/hdy.2013.26")
297
297
  expect(subject.url).to eq("http://www.nature.com/articles/hdy201326")
298
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
298
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
299
299
  expect(subject.creators.length).to eq(2)
300
300
  expect(subject.creators.first).to eq("familyName"=>"Gross", "givenName"=>"J B", "name"=>"Gross, J B", "nameType"=>"Personal")
301
301
  expect(subject.titles).to eq([{"title"=>"Albinism in phylogenetically and geographically distinct populations of Astyanax cavefish arises through the same loss-of-function Oca2 allele"}])
@@ -364,7 +364,7 @@ describe Bolognese::Metadata, vcr: true do
364
364
  expect(subject.valid?).to be true
365
365
  expect(subject.id).to eq("https://doi.org/10.1007/978-3-662-46370-3_13")
366
366
  expect(subject.url).to eq("http://link.springer.com/10.1007/978-3-662-46370-3_13")
367
- expect(subject.types).to eq("bibtex"=>"inbook", "citeproc"=>"chapter", "resourceType"=>"BookChapter", "resourceTypeGeneral"=>"Text", "ris"=>"CHAP", "schemaOrg"=>"Chapter")
367
+ expect(subject.types).to eq("bibtex"=>"inbook", "citeproc"=>"chapter", "resourceType"=>"BookChapter", "resourceTypeGeneral"=>"BookChapter", "ris"=>"CHAP", "schemaOrg"=>"Chapter")
368
368
  expect(subject.creators.length).to eq(2)
369
369
  expect(subject.creators.first).to eq("nameType"=>"Personal", "name"=>"Diercks, Ronald L.", "givenName"=>"Ronald L.", "familyName"=>"Diercks")
370
370
  expect(subject.titles).to eq([{"title"=>"Clinical Symptoms and Physical Examinations"}])
@@ -380,7 +380,7 @@ describe Bolognese::Metadata, vcr: true do
380
380
  expect(subject.valid?).to be true
381
381
  expect(subject.id).to eq("https://doi.org/10.1007/978-3-319-75889-3_1")
382
382
  expect(subject.url).to eq("http://link.springer.com/10.1007/978-3-319-75889-3_1")
383
- expect(subject.types).to eq("bibtex"=>"inbook", "citeproc"=>"chapter", "resourceType"=>"BookChapter", "resourceTypeGeneral"=>"Text", "ris"=>"CHAP", "schemaOrg"=>"Chapter")
383
+ expect(subject.types).to eq("bibtex"=>"inbook", "citeproc"=>"chapter", "resourceType"=>"BookChapter", "resourceTypeGeneral"=>"BookChapter", "ris"=>"CHAP", "schemaOrg"=>"Chapter")
384
384
  expect(subject.creators).to eq([{"familyName"=>"Jones", "givenName"=>"Hunter M.", "name"=>"Jones, Hunter M.", "nameType"=>"Personal"}])
385
385
  expect(subject.titles).to eq([{"title"=>"Climate Change and Increasing Risk of Extreme Heat"}])
386
386
  expect(subject.dates).to include({"date"=>"2018", "dateType"=>"Issued"})
@@ -395,7 +395,7 @@ describe Bolognese::Metadata, vcr: true do
395
395
  expect(subject.valid?).to be true
396
396
  expect(subject.id).to eq("https://doi.org/10.4018/978-1-4666-1891-6.ch004")
397
397
  expect(subject.url).to eq("http://services.igi-global.com/resolvedoi/resolve.aspx?doi=10.4018/978-1-4666-1891-6.ch004")
398
- expect(subject.types).to eq("bibtex"=>"inbook", "citeproc"=>"chapter", "resourceType"=>"BookChapter", "resourceTypeGeneral"=>"Text", "ris"=>"CHAP", "schemaOrg"=>"Chapter")
398
+ expect(subject.types).to eq("bibtex"=>"inbook", "citeproc"=>"chapter", "resourceType"=>"BookChapter", "resourceTypeGeneral"=>"BookChapter", "ris"=>"CHAP", "schemaOrg"=>"Chapter")
399
399
  expect(subject.creators).to eq([{"affiliation"=>[{"name"=>"Université de Lyon, France"}], "familyName"=>"Bichot", "givenName"=>"Charles-Edmond", "name"=>"Bichot, Charles-Edmond", "nameType"=>"Personal"}])
400
400
  expect(subject.titles).to eq([{"title"=>"Unsupervised and Supervised Image Segmentation Using Graph Partitioning"}])
401
401
  expect(subject.dates).to eq([{"date"=>"2012-08-08", "dateType"=>"Issued"}, {"date"=>"2019-07-02T17:17:21Z", "dateType"=>"Updated"}])
@@ -410,7 +410,7 @@ describe Bolognese::Metadata, vcr: true do
410
410
  expect(subject.valid?).to be true
411
411
  expect(subject.id).to eq("https://doi.org/10.3390/publications6020015")
412
412
  expect(subject.url).to eq("http://www.mdpi.com/2304-6775/6/2/15")
413
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
413
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
414
414
  expect(subject.creators).to eq([{"name"=>"Alexander Kohls", "nameType"=>"Organizational"}, {"name"=>"Salvatore Mele", "nameType"=>"Organizational"}])
415
415
  expect(subject.titles).to eq([{"title"=>"Converting the Literature of a Scientific Field to Open Access through Global Collaboration: The Experience of SCOAP3 in Particle Physics"}])
416
416
  expect(subject.dates).to eq([{"date"=>"2018-04-09", "dateType"=>"Issued"}, {"date"=>"2018-04-10T17:58:05Z", "dateType"=>"Updated"}])
@@ -426,7 +426,7 @@ describe Bolognese::Metadata, vcr: true do
426
426
  expect(subject.id).to eq("https://doi.org/10.1017/9781108348843")
427
427
  expect(subject.identifiers).to eq([{"identifier"=>"9781108348843", "identifierType"=>"ISBN"}])
428
428
  expect(subject.url).to eq("https://www.cambridge.org/core/product/identifier/9781108348843/type/book")
429
- expect(subject.types).to eq("bibtex"=>"book", "citeproc"=>"book", "resourceType"=>"Book", "resourceTypeGeneral"=>"Text", "ris"=>"BOOK", "schemaOrg"=>"Book")
429
+ expect(subject.types).to eq("bibtex"=>"book", "citeproc"=>"book", "resourceType"=>"Book", "resourceTypeGeneral"=>"Book", "ris"=>"BOOK", "schemaOrg"=>"Book")
430
430
  expect(subject.creators).to eq([{"familyName"=>"Leung", "givenName"=>"Vincent S.", "name"=>"Leung, Vincent S.", "nameType"=>"Personal"}])
431
431
  expect(subject.titles).to eq([{"title"=>"The Politics of the Past in Early China"}])
432
432
  expect(subject.dates).to eq([{"date"=>"2019-07-01", "dateType"=>"Issued"}, {"date"=>"2019-12-01T18:11:11Z", "dateType"=>"Updated"}])
@@ -442,7 +442,7 @@ describe Bolognese::Metadata, vcr: true do
442
442
  expect(subject.valid?).to be true
443
443
  expect(subject.id).to eq("https://doi.org/10.2973/odp.proc.ir.180.2000")
444
444
  expect(subject.url).to eq("http://www-odp.tamu.edu/publications/180_IR/180TOC.HTM")
445
- expect(subject.types).to eq("bibtex"=>"book", "citeproc"=>"book", "resourceType"=>"Book", "resourceTypeGeneral"=>"Text", "ris"=>"BOOK", "schemaOrg"=>"Book")
445
+ expect(subject.types).to eq("bibtex"=>"book", "citeproc"=>"book", "resourceType"=>"Book", "resourceTypeGeneral"=>"Book", "ris"=>"BOOK", "schemaOrg"=>"Book")
446
446
  expect(subject.creators).to eq([{"name"=>":(unav)", "nameType"=>"Organizational"}])
447
447
  expect(subject.contributors.size).to eq(4)
448
448
  expect(subject.contributors.first).to eq("contributorType"=>"Editor", "familyName"=>"Taylor", "givenName"=>"B.", "name"=>"Taylor, B.", "nameType"=>"Personal")
@@ -461,7 +461,7 @@ describe Bolognese::Metadata, vcr: true do
461
461
  expect(subject.id).to eq("https://doi.org/10.1029/ar035")
462
462
  expect(subject.identifiers).to eq([{"identifier"=>"0-87590-181-6", "identifierType"=>"ISBN"}])
463
463
  expect(subject.url).to eq("http://doi.wiley.com/10.1029/AR035")
464
- expect(subject.types).to eq("bibtex"=>"book", "citeproc"=>"book", "resourceType"=>"Book", "resourceTypeGeneral"=>"Text", "ris"=>"BOOK", "schemaOrg"=>"Book")
464
+ expect(subject.types).to eq("bibtex"=>"book", "citeproc"=>"book", "resourceType"=>"Book", "resourceTypeGeneral"=>"Book", "ris"=>"BOOK", "schemaOrg"=>"Book")
465
465
  expect(subject.creators).to eq([{"familyName"=>"McGinnis", "givenName"=>"Richard Frank", "name"=>"McGinnis, Richard Frank", "nameType"=>"Personal"}])
466
466
  expect(subject.titles).to eq([{"title"=>"Biogeography of Lanternfishes (Myctophidae) South of 30°S"}])
467
467
  expect(subject.dates).to eq([{"date"=>"1982", "dateType"=>"Issued"}, {"date"=>"2019-06-15T05:11:12Z", "dateType"=>"Updated"}])
@@ -481,7 +481,7 @@ describe Bolognese::Metadata, vcr: true do
481
481
  expect(subject.id).to eq("https://doi.org/10.3280/ecag2018-001005")
482
482
  expect(subject.identifiers).to eq([{"identifier"=>"5", "identifierType"=>"article_number"}])
483
483
  expect(subject.url).to eq("http://www.francoangeli.it/riviste/Scheda_Riviste.asp?IDArticolo=61645")
484
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
484
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
485
485
  expect(subject.creators.length).to eq(2)
486
486
  expect(subject.creators.first).to eq("familyName"=>"Oh", "givenName"=>"Sohae Eve", "name"=>"Oh, Sohae Eve", "nameType"=>"Personal")
487
487
  expect(subject.titles).to eq([{"title"=>"Substitutability between organic and conventional poultry products and organic price premiums"}])
@@ -498,7 +498,7 @@ describe Bolognese::Metadata, vcr: true do
498
498
  expect(subject.id).to eq("https://doi.org/10.5012/bkcs.2013.34.10.2889")
499
499
  expect(subject.identifiers).to eq([{"identifier"=>"JCGMCS_2013_v34n10_2889", "identifierType"=>"Publisher ID"}])
500
500
  expect(subject.url).to eq("http://koreascience.or.kr/journal/view.jsp?kj=JCGMCS&py=2013&vnc=v34n10&sp=2889")
501
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
501
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
502
502
  expect(subject.creators.length).to eq(7)
503
503
  expect(subject.creators.first).to eq("familyName"=>"Huang", "givenName"=>"Guimei", "name"=>"Huang, Guimei", "nameType"=>"Personal")
504
504
  expect(subject.titles).to eq([{"title"=>"Synthesis, Crystal Structure and Theoretical Calculation of a Novel Nickel(II) Complex with Dibromotyrosine and 1,10-Phenanthroline"}])
@@ -514,7 +514,7 @@ describe Bolognese::Metadata, vcr: true do
514
514
  expect(subject.valid?).to be true
515
515
  expect(subject.id).to eq("https://doi.org/10.1241/johokanri.39.979")
516
516
  expect(subject.url).to eq("http://joi.jlc.jst.go.jp/JST.JSTAGE/johokanri/39.979?from=CrossRef")
517
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
517
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
518
518
  expect(subject.creators).to eq([{"familyName"=>"KUSUMOTO", "givenName"=>"Hiroyuki", "name"=>"KUSUMOTO, Hiroyuki", "nameType"=>"Personal"}])
519
519
  expect(subject.titles).to eq([{"title"=>"Utilizing the Internet. 12 Series. Future of the Internet."}])
520
520
  expect(subject.dates).to eq([{"date"=>"1997", "dateType"=>"Issued"}, {"date"=>"2020-03-06T06:44:36Z", "dateType"=>"Updated"}])
@@ -529,7 +529,7 @@ describe Bolognese::Metadata, vcr: true do
529
529
  #expect(subject.valid?).to be true
530
530
  expect(subject.id).to eq("https://doi.org/10.2903/j.efsa.2018.5239")
531
531
  expect(subject.url).to eq("http://doi.wiley.com/10.2903/j.efsa.2018.5239")
532
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
532
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
533
533
  expect(subject.creators.length).to eq(28)
534
534
  expect(subject.creators.first).to eq("familyName"=>"Younes", "givenName"=>"Maged", "name"=>"Younes, Maged", "nameType"=>"Personal")
535
535
  expect(subject.titles).to eq([{"title"=>"Scientific opinion on the safety of green tea catechins"}])
@@ -545,7 +545,7 @@ describe Bolognese::Metadata, vcr: true do
545
545
  expect(subject.valid?).to be true
546
546
  expect(subject.id).to eq("https://doi.org/10.4000/dms.865")
547
547
  expect(subject.url).to eq("http://journals.openedition.org/dms/865")
548
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
548
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
549
549
  expect(subject.creators).to eq([{"familyName"=>"Peraya", "givenName"=>"Daniel", "name"=>"Peraya, Daniel", "nameType"=>"Personal"}])
550
550
  expect(subject.titles).to eq([{"title"=>"Distances, absence, proximités et présences : des concepts en déplacement"}, {"title"=>"Distance(s), proximity and presence(s): evolving concepts"}])
551
551
  expect(subject.dates).to include({"date"=>"2014-12-23", "dateType"=>"Issued"})
@@ -561,7 +561,7 @@ describe Bolognese::Metadata, vcr: true do
561
561
  expect(subject.valid?).to be true
562
562
  expect(subject.id).to eq("https://doi.org/10.1186/1471-2164-7-187")
563
563
  expect(subject.url).to eq("https://bmcgenomics.biomedcentral.com/articles/10.1186/1471-2164-7-187")
564
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
564
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
565
565
  expect(subject.creators).to eq([{"familyName"=>"Myers",
566
566
  "givenName"=>"Chad L",
567
567
  "name"=>"Myers, Chad L",
@@ -596,7 +596,7 @@ describe Bolognese::Metadata, vcr: true do
596
596
  expect(subject.valid?).to be true
597
597
  expect(subject.id).to eq("https://doi.org/10.1098/rspb.2017.0132")
598
598
  expect(subject.url).to eq("https://royalsocietypublishing.org/doi/10.1098/rspb.2017.0132")
599
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
599
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
600
600
  expect(subject.creators.size).to eq(6)
601
601
  expect(subject.creators.first).to eq("affiliation" => [{"name"=>"School of Biological Sciences, Centre for Evolutionary Biology, University of Western Australia, Crawley, WA 6009, Australia"}], "familyName" => "Dougherty","givenName" => "Liam R.","name" => "Dougherty, Liam R.","nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0003-1406-0680", "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}],"nameType"=>"Personal")
602
602
  expect(subject.titles).to eq([{"title"=>"Sexual conflict and correlated evolution between male persistence and female resistance traits in the seed beetle <i>Callosobruchus maculatus</i>"}])
@@ -613,7 +613,7 @@ describe Bolognese::Metadata, vcr: true do
613
613
  expect(subject.valid?).to be true
614
614
  expect(subject.id).to eq("https://doi.org/10.1111/j.1865-1682.2010.01171.x")
615
615
  expect(subject.url).to eq("http://doi.wiley.com/10.1111/j.1865-1682.2010.01171.x")
616
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
616
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
617
617
  expect(subject.creators.length).to eq(5)
618
618
  expect(subject.creators[3]).to eq("familyName"=>"Ehtisham-ul-Haq", "givenName"=>" ", "name"=>"Ehtisham-ul-Haq,  ", "nameType"=>"Personal")
619
619
  expect(subject.titles).to eq([{"title"=>"Serological Evidence of Brucella abortus Prevalence in Punjab Province, Pakistan - A Cross-Sectional Study"}])
@@ -630,7 +630,7 @@ describe Bolognese::Metadata, vcr: true do
630
630
  expect(subject.id).to eq("https://doi.org/10.1055/s-0039-1690894")
631
631
  expect(subject.identifiers).to eq([{"identifier"=>"s-0039-1690894", "identifierType"=>"sequence-number"}])
632
632
  expect(subject.url).to eq("http://www.thieme-connect.de/DOI/DOI?10.1055/s-0039-1690894")
633
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
633
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
634
634
  expect(subject.creators.length).to eq(4)
635
635
  expect(subject.creators[3]).to eq("affiliation" => [{"name"=>"Department of Chemistry, Tianjin Key Laboratory of Molecular Optoelectronic Sciences, and Tianjin Collaborative Innovation Centre of Chemical Science and Engineering, Tianjin University"}, {"name"=>"Joint School of National University of Singapore and Tianjin University, International Campus of Tianjin University"}],
636
636
  "familyName" => "Ma",
@@ -650,7 +650,7 @@ describe Bolognese::Metadata, vcr: true do
650
650
  expect(subject.valid?).to be true
651
651
  expect(subject.id).to eq("https://doi.org/10.1111/nph.14619")
652
652
  expect(subject.url).to eq("http://doi.wiley.com/10.1111/nph.14619")
653
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
653
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
654
654
  expect(subject.creators.length).to eq(3)
655
655
  expect(subject.creators.first).to eq("nameType"=>"Personal", "nameIdentifiers" => [{"nameIdentifier"=>"https://orcid.org/0000-0002-4156-3761", "nameIdentifierScheme"=>"ORCID", "schemeUri"=>"https://orcid.org"}], "name"=>"Dissmeyer, Nico", "givenName"=>"Nico", "familyName"=>"Dissmeyer", "affiliation" => [{"name"=>"Independent Junior Research Group on Protein Recognition and Degradation; Leibniz Institute of Plant Biochemistry (IPB); Weinberg 3 Halle (Saale) D-06120 Germany"}, {"name"=>"ScienceCampus Halle - Plant-based Bioeconomy; Betty-Heimann-Strasse 3 Halle (Saale) D-06120 Germany"}])
656
656
  expect(subject.titles).to eq([{"title"=>"Life and death of proteins after protease cleavage: protein degradation by the N-end rule pathway"}])
@@ -672,7 +672,7 @@ describe Bolognese::Metadata, vcr: true do
672
672
  expect(subject.valid?).to be true
673
673
  expect(subject.id).to eq("https://doi.org/10.1038/ng.3834")
674
674
  expect(subject.url).to eq("http://www.nature.com/articles/ng.3834")
675
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
675
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
676
676
  expect(subject.creators.length).to eq(14)
677
677
  expect(subject.creators.last).to eq("name"=>"GTEx Consortium", "nameType"=>"Organizational")
678
678
  expect(subject.titles).to eq([{"title"=>"The impact of structural variation on human gene expression"}])
@@ -683,12 +683,65 @@ describe Bolognese::Metadata, vcr: true do
683
683
  expect(subject.date_registered).to eq("2019-11-02T09:30:06Z")
684
684
  end
685
685
 
686
+ it "affiliation is space" do
687
+ input = "https://doi.org/10.1177/0042098011428175"
688
+ subject = Bolognese::Metadata.new(input: input)
689
+ expect(subject.valid?).to be true
690
+ expect(subject.id).to eq("https://doi.org/10.1177/0042098011428175")
691
+ expect(subject.url).to eq("http://journals.sagepub.com/doi/10.1177/0042098011428175")
692
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
693
+ expect(subject.creators.length).to eq(1)
694
+ expect(subject.creators.first).to eq("familyName"=>"Petrovici", "givenName"=>"Norbert", "name"=>"Petrovici, Norbert", "nameType"=>"Personal")
695
+ expect(subject.titles).to eq([{"title"=>"Workers and the City: Rethinking the Geographies of Power in Post-socialist Urbanisation"}])
696
+ expect(subject.dates).to include({"date"=>"2011-12-22", "dateType"=>"Issued"})
697
+ expect(subject.publication_year).to eq("2011")
698
+ expect(subject.publisher).to eq("SAGE Publications")
699
+ expect(subject.agency).to eq("crossref")
700
+ expect(subject.date_registered).to eq("2017-12-17T00:37:32Z")
701
+ end
702
+
703
+ it "multiple issn" do
704
+ input = "https://doi.org/10.1007/978-3-642-34922-5_19"
705
+ subject = Bolognese::Metadata.new(input: input)
706
+ expect(subject.valid?).to be true
707
+ expect(subject.id).to eq("https://doi.org/10.1007/978-3-642-34922-5_19")
708
+ expect(subject.url).to eq("http://link.springer.com/10.1007/978-3-642-34922-5_19")
709
+ expect(subject.types).to eq("bibtex"=>"inbook", "citeproc"=>"chapter", "resourceType"=>"BookChapter", "resourceTypeGeneral"=>"BookChapter", "ris"=>"CHAP", "schemaOrg"=>"Chapter")
710
+ expect(subject.creators.length).to eq(3)
711
+ expect(subject.creators.first).to eq("familyName"=>"Razib", "givenName"=>"Ali", "name"=>"Razib, Ali", "nameType"=>"Personal")
712
+ expect(subject.titles).to eq([{"title"=>"Log-Domain Arithmetic for High-Speed Fuzzy Control on a Field-Programmable Gate Array"}])
713
+ expect(subject.dates).to include({"date"=>"2013", "dateType"=>"Issued"})
714
+ expect(subject.publication_year).to eq("2013")
715
+ expect(subject.publisher).to eq("Springer Science and Business Media LLC")
716
+ expect(subject.container).to eq("identifier"=>"1860-0808", "identifierType"=>"ISSN", "title"=>"Studies in Fuzziness and Soft Computing", "type"=>"Book Series")
717
+ expect(subject.agency).to eq("crossref")
718
+ expect(subject.date_registered).to eq("2012-10-31T16:15:44Z")
719
+ end
720
+
721
+ it "article id as page number" do
722
+ input = "https://doi.org/10.1103/physrevlett.120.117701"
723
+ subject = Bolognese::Metadata.new(input: input)
724
+ expect(subject.valid?).to be true
725
+ expect(subject.id).to eq("https://doi.org/10.1103/physrevlett.120.117701")
726
+ expect(subject.url).to eq("https://link.aps.org/doi/10.1103/PhysRevLett.120.117701")
727
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
728
+ expect(subject.creators.length).to eq(5)
729
+ expect(subject.creators.first).to eq("familyName"=>"Marrazzo", "givenName"=>"Antimo", "name"=>"Marrazzo, Antimo", "nameType"=>"Personal")
730
+ expect(subject.titles).to eq([{"title"=>"Prediction of a Large-Gap and Switchable Kane-Mele Quantum Spin Hall Insulator"}])
731
+ expect(subject.dates).to include({"date"=>"2018-03-13", "dateType"=>"Issued"})
732
+ expect(subject.publication_year).to eq("2018")
733
+ expect(subject.publisher).to eq("American Physical Society (APS)")
734
+ expect(subject.container).to eq("firstPage" => "117701", "identifier"=>"1079-7114", "identifierType"=>"ISSN", "issue"=>"11", "title"=>"Physical Review Letters", "type"=>"Journal", "volume"=>"120")
735
+ expect(subject.agency).to eq("crossref")
736
+ expect(subject.date_registered).to eq("2018-03-13T15:18:48Z")
737
+ end
738
+
686
739
  it "posted content copernicus" do
687
740
  input = "https://doi.org/10.5194/CP-2020-95"
688
741
  subject = Bolognese::Metadata.new(input: input)
689
742
  expect(subject.valid?).to be true
690
743
  expect(subject.url).to eq("https://cp.copernicus.org/preprints/cp-2020-95/")
691
- expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"PostedContent", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
744
+ expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"PostedContent", "resourceTypeGeneral"=>"JournalArticle", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
692
745
  expect(subject.creators.count).to eq(6)
693
746
  expect(subject.creators.first).to eq("nameType" => "Personal", "familyName" => "Shao",
694
747
  "givenName" => "Jun",
@@ -709,7 +762,7 @@ describe Bolognese::Metadata, vcr: true do
709
762
  subject = Bolognese::Metadata.new(input: input)
710
763
  expect(subject.valid?).to be true
711
764
  expect(subject.url).to eq("http://oxfordhandbooks.com/view/10.1093/oxfordhb/9780198746140.001.0001/oxfordhb-9780198746140-e-5")
712
- expect(subject.types).to eq("bibtex"=>"book", "citeproc"=>"book", "resourceType"=>"Book", "resourceTypeGeneral"=>"Text", "ris"=>"BOOK", "schemaOrg"=>"Book")
765
+ expect(subject.types).to eq("bibtex"=>"book", "citeproc"=>"book", "resourceType"=>"Book", "resourceTypeGeneral"=>"Book", "ris"=>"BOOK", "schemaOrg"=>"Book")
713
766
  expect(subject.creators.count).to eq(1)
714
767
  expect(subject.creators.first).to eq("familyName"=>"Clayton", "givenName"=>"Barbra R.", "name"=>"Clayton, Barbra R.", "nameType"=>"Personal")
715
768
  expect(subject.contributors.count).to eq(2)
@@ -729,7 +782,7 @@ describe Bolognese::Metadata, vcr: true do
729
782
  subject = Bolognese::Metadata.new(input: input)
730
783
  expect(subject.valid?).to be true
731
784
  expect(subject.url).to eq("http://www.osti.gov/servlets/purl/972169-1QXROM/")
732
- expect(subject.types).to eq("bibtex"=>"techreport", "citeproc"=>"report", "resourceType"=>"Report", "resourceTypeGeneral"=>"Text", "ris"=>"RPRT", "schemaOrg"=>"Report")
785
+ expect(subject.types).to eq("bibtex"=>"techreport", "citeproc"=>"report", "resourceType"=>"Report", "resourceTypeGeneral"=>"Report", "ris"=>"RPRT", "schemaOrg"=>"Report")
733
786
  expect(subject.creators.count).to eq(4)
734
787
  expect(subject.creators.first).to eq("familyName"=>"Denholm", "givenName"=>"P.", "name"=>"Denholm, P.", "nameType"=>"Personal")
735
788
  expect(subject.contributors.count).to eq(0)