commonmeta-ruby 3.2.3 → 3.2.4

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 (35) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/lib/commonmeta/author_utils.rb +11 -0
  4. data/lib/commonmeta/cli.rb +5 -1
  5. data/lib/commonmeta/readers/json_feed_reader.rb +9 -5
  6. data/lib/commonmeta/utils.rb +4 -2
  7. data/lib/commonmeta/version.rb +1 -1
  8. data/spec/author_utils_spec.rb +9 -8
  9. data/spec/cli_spec.rb +1 -1
  10. data/spec/fixtures/vcr_cassettes/Commonmeta_CLI/json_feed/blog_post.yml +14 -14
  11. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed/all_posts.yml +2625 -0
  12. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed/behind_the_science.yml +1176 -0
  13. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/blogger_post.yml +7 -7
  14. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/ghost_post_with_doi.yml +7 -7
  15. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/ghost_post_without_doi.yml +196 -0
  16. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/jekyll_post.yml +7 -7
  17. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/wordpress_post.yml +7 -7
  18. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/json_feed_url/all_posts.yml +221 -0
  19. data/spec/readers/json_feed_reader_spec.rb +35 -10
  20. data/spec/utils_spec.rb +5 -0
  21. data/spec/writers/citation_writer_spec.rb +1 -1
  22. metadata +6 -15
  23. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_metadata/blogger_post.yml +0 -141
  24. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_metadata/ghost_post_with_doi.yml +0 -164
  25. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_metadata/jekyll_post.yml +0 -134
  26. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_metadata/wordpress_post.yml +0 -210
  27. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_item_metadata/blogger_post.yml +0 -94
  28. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_item_metadata/ghost_post.yml +0 -117
  29. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_item_metadata/ghost_post_with_doi.yml +0 -117
  30. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_item_metadata/jekyll_post.yml +0 -170
  31. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_item_metadata/wordpress_post.yml +0 -163
  32. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_post_metadata/blogger_post.yml +0 -141
  33. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_post_metadata/ghost_post_with_doi.yml +0 -164
  34. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_post_metadata/jekyll_post.yml +0 -134
  35. data/spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_post_metadata/wordpress_post.yml +0 -210
@@ -0,0 +1,221 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.crossref.org/works/10.1101/097196
6
+ body:
7
+ encoding: UTF-8
8
+ string: ''
9
+ headers:
10
+ Connection:
11
+ - close
12
+ Host:
13
+ - api.crossref.org
14
+ User-Agent:
15
+ - http.rb/5.1.1
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Date:
22
+ - Mon, 05 Jun 2023 09:05:58 GMT
23
+ Content-Type:
24
+ - application/json
25
+ Transfer-Encoding:
26
+ - chunked
27
+ Access-Control-Expose-Headers:
28
+ - Link
29
+ Access-Control-Allow-Headers:
30
+ - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language,
31
+ Accept-Ranges, Cache-Control
32
+ Access-Control-Allow-Origin:
33
+ - "*"
34
+ Server:
35
+ - Jetty(9.4.40.v20210413)
36
+ X-Ratelimit-Limit:
37
+ - '50'
38
+ X-Ratelimit-Interval:
39
+ - 1s
40
+ X-Api-Pool:
41
+ - public
42
+ X-Rate-Limit-Limit:
43
+ - '50'
44
+ X-Rate-Limit-Interval:
45
+ - 1s
46
+ Permissions-Policy:
47
+ - interest-cohort=()
48
+ Connection:
49
+ - close
50
+ body:
51
+ encoding: UTF-8
52
+ string: '{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"institution":[{"name":"bioRxiv"}],"indexed":{"date-parts":[[2023,4,18]],"date-time":"2023-04-18T06:31:46Z","timestamp":1681799506885},"posted":{"date-parts":[[2016,12,28]]},"group-title":"Scientific
53
+ Communication and Education","reference-count":26,"publisher":"Cold Spring
54
+ Harbor Laboratory","content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":[],"accepted":{"date-parts":[[2017,10,9]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>This
55
+ article presents a practical roadmap for scholarly data repositories to implement
56
+ data citation in accordance with the Joint Declaration of Data Citation Principles,
57
+ a synopsis and harmonization of the recommendations of major science policy
58
+ bodies. The roadmap was developed by the Repositories Expert Group, as part
59
+ of the Data Citation Implementation Pilot (DCIP) project, an initiative of
60
+ FORCE11.org and the NIH BioCADDIE (<jats:ext-link xmlns:xlink=\"http:\/\/www.w3.org\/1999\/xlink\"
61
+ ext-link-type=\"uri\" xlink:href=\"https:\/\/biocaddie.org\">https:\/\/biocaddie.org<\/jats:ext-link>)
62
+ program. The roadmap makes 11 specific recommendations, grouped into three
63
+ phases of implementation: a) required steps needed to support the Joint Declaration
64
+ of Data Citation Principles, b) recommended steps that facilitate article\/data
65
+ publication workflows, and c) optional steps that further improve data citation
66
+ support provided by data repositories.<\/jats:p>","DOI":"10.1101\/097196","type":"posted-content","created":{"date-parts":[[2016,12,29]],"date-time":"2016-12-29T06:10:15Z","timestamp":1482991815000},"source":"Crossref","is-referenced-by-count":15,"title":["A
67
+ Data Citation Roadmap for Scholarly Data Repositories"],"prefix":"10.1101","author":[{"ORCID":"http:\/\/orcid.org\/0000-0003-1419-2405","authenticated-orcid":false,"given":"Martin","family":"Fenner","sequence":"first","affiliation":[]},{"ORCID":"http:\/\/orcid.org\/0000-0003-1304-1939","authenticated-orcid":false,"given":"Merc\u00e8","family":"Crosas","sequence":"additional","affiliation":[]},{"ORCID":"http:\/\/orcid.org\/0000-0001-5212-7052","authenticated-orcid":false,"given":"Jeffrey","family":"Grethe","sequence":"additional","affiliation":[]},{"ORCID":"http:\/\/orcid.org\/0000-0002-9377-0797","authenticated-orcid":false,"given":"David","family":"Kennedy","sequence":"additional","affiliation":[]},{"ORCID":"http:\/\/orcid.org\/0000-0001-8479-0262","authenticated-orcid":false,"given":"Henning","family":"Hermjakob","sequence":"additional","affiliation":[]},{"ORCID":"http:\/\/orcid.org\/0000-0001-9853-5668","authenticated-orcid":false,"given":"Philippe","family":"Rocca-Serra","sequence":"additional","affiliation":[]},{"ORCID":"http:\/\/orcid.org\/0000-0002-2188-2570","authenticated-orcid":false,"given":"Gustavo","family":"Durand","sequence":"additional","affiliation":[]},{"ORCID":"http:\/\/orcid.org\/0000-0002-1731-5346","authenticated-orcid":false,"given":"Robin","family":"Berjon","sequence":"additional","affiliation":[]},{"ORCID":"http:\/\/orcid.org\/0000-0001-8249-7388","authenticated-orcid":false,"given":"Sebastian","family":"Karcher","sequence":"additional","affiliation":[]},{"ORCID":"http:\/\/orcid.org\/0000-0002-8406-3871","authenticated-orcid":false,"given":"Maryann","family":"Martone","sequence":"additional","affiliation":[]},{"ORCID":"http:\/\/orcid.org\/0000-0003-4060-7360","authenticated-orcid":false,"given":"Timothy","family":"Clark","sequence":"additional","affiliation":[]}],"member":"246","reference":[{"issue":"3","key":"2019071613381284000_097196v2.1","first-page":"43","article-title":"An
68
+ introduction to the joint principles for data citation","volume":"41","year":"2015","journal-title":"Bulletin
69
+ of the American \\ldots"},{"key":"2019071613381284000_097196v2.2","unstructured":"Altman,
70
+ M. , & Crosas, M. (2013). The Evolution of Data Citation: From Principles
71
+ to Implementation. IASSIST Quarterly. Retrieved from http:\/\/scholar.harvard.edu\/mercecrosas\/publications\/evolution-data-citation-principles-implementation"},{"key":"2019071613381284000_097196v2.3","unstructured":"BioSchemas.
72
+ (2016). Retrieved December 22, 2016, from http:\/\/bioschemas.org\/"},{"key":"2019071613381284000_097196v2.4","doi-asserted-by":"crossref","unstructured":"CODATA-ICSTI
73
+ Task Group on Data Citation Standards and Practice. (2013). Out of Cite, Out
74
+ of Mind: The Current State of Practice, Policy, and Technology for the Citation
75
+ of Data. Data Science Journal, 12(0). https:\/\/doi.org\/10.2481\/dsj.OSOM13-043","DOI":"10.2481\/dsj.OSOM13-043"},{"key":"2019071613381284000_097196v2.5","unstructured":"Data
76
+ Citation Synthesis Group. (2014). Data Citation Synthesis Group. (2014). Joint
77
+ Declaration of Data Citation Principles. Force11. https:\/\/doi.org\/10.25490\/a97f-egyk"},{"key":"2019071613381284000_097196v2.6","unstructured":"Data
78
+ Citations: A Primer. (2016). Retrieved December 22, 2016, from http:\/\/force11.github.io\/data-citation-primer\/"},{"key":"2019071613381284000_097196v2.7","unstructured":"DataCite
79
+ Metadata Working. (2016). DataCite Metadata Schema for the Publication and
80
+ Citation of Research Data v4.0. DataCite. Retrieved from http:\/\/search.datacite.org\/works\/10.5438\/0013"},{"key":"2019071613381284000_097196v2.8","unstructured":"DataCite
81
+ Search. (2016). Retrieved December 22, 2016, from https:\/\/search.datacite.org\/"},{"key":"2019071613381284000_097196v2.9","unstructured":"DataMed
82
+ | bioCADDIE DDI. (2016). Retrieved December 22, 2016, from https:\/\/datamed.org\/"},{"key":"2019071613381284000_097196v2.10","unstructured":"Dataset
83
+ - schema.org. (2016). Retrieved December 12, 2016, from https:\/\/schema.org\/Dataset"},{"key":"2019071613381284000_097196v2.11","unstructured":"Dublin
84
+ Core Metadata Element Set, Version 1.1. (2012). Retrieved December 22, 2016,
85
+ from http:\/\/dublincore.org\/documents\/2012\/06\/14\/dces\/"},{"key":"2019071613381284000_097196v2.12","unstructured":"ELIXIR
86
+ Data for life. (2016). Retrieved December 22, 2016, from https:\/\/www.elixir-europe.org\/"},{"key":"2019071613381284000_097196v2.13","unstructured":"Hammond,
87
+ T. , Hannay, T. , & Lund, B. (2004). RDF Site Summary 1.0 Modules: PRISM."},{"key":"2019071613381284000_097196v2.14","unstructured":"Publishing
88
+ Requirements for Industry Standard Metadata (PRISM). Retrieved from http:\/\/purl.org\/rss\/1.0\/modules\/prism\/"},{"key":"2019071613381284000_097196v2.15","doi-asserted-by":"crossref","unstructured":"Honor,
89
+ L. B. , Haselgrove, C. , Frazier, J. A. , & Kennedy, D. N. (2016). Data Citation
90
+ in Neuroimaging: Proposed Best Practices for Data Identification and Attribution.
91
+ Frontiers in Neuroinformatics, 10. https:\/\/doi.org\/10.3389\/fninf.2016.00034","DOI":"10.3389\/fninf.2016.00034"},{"key":"2019071613381284000_097196v2.16","unstructured":"King,
92
+ Gary , & Altman, Micah . (2007). A Proposed Standard for the Scholarly Citation
93
+ of Quantitative Data. https:\/\/doi.org\/10.1045\/march2007-altman"},{"key":"2019071613381284000_097196v2.17","doi-asserted-by":"publisher","DOI":"10.15252\/msb.20156658"},{"key":"2019071613381284000_097196v2.18","unstructured":"Prefix
94
+ Commons. (2016). Retrieved December 22, 2016, from https:\/\/github.com\/prefixcommons\/prefixes"},{"key":"2019071613381284000_097196v2.19","unstructured":"RFC
95
+ 3986 - Uniform Resource Identifier (URI): Generic Syntax. (2005). Retrieved
96
+ December 22, 2016, from http:\/\/www.rfc-base.org\/rfc-3986.html"},{"key":"2019071613381284000_097196v2.20","doi-asserted-by":"crossref","unstructured":"Sansone,
97
+ A. , Gonzalez-Beltran, A. , & Rocca-Serra, P. (2016). DATS, the data tag suite
98
+ to enable discoverability of datasets. Scientific Data 4, Article number:
99
+ 170059 (2017) https:\/\/doi.org\/10.1038\/sdata.2017.59","DOI":"10.1038\/sdata.2017.59"},{"key":"2019071613381284000_097196v2.21","doi-asserted-by":"crossref","first-page":"e86","DOI":"10.7717\/peerj-cs.86","article-title":"Software
100
+ citation principles","volume":"2","year":"2016","journal-title":"PeerJ Computer
101
+ Science"},{"key":"2019071613381284000_097196v2.22","doi-asserted-by":"crossref","first-page":"e1","DOI":"10.7717\/peerj-cs.1","article-title":"Achieving
102
+ human and machine accessibility of cited data in scholarly publications","volume":"1","year":"2015","journal-title":"PeerJ
103
+ Computer Science"},{"key":"2019071613381284000_097196v2.23","doi-asserted-by":"publisher","DOI":"10.1126\/science.aah6168"},{"key":"2019071613381284000_097196v2.24","unstructured":"Treloar,
104
+ A. (2011). Den Haag Persistent Object Identifier \u2013 Linked Open Data Manifesto.
105
+ Zenodo. https:\/\/doi.org\/10.5281\/zenodo.55666"},{"key":"2019071613381284000_097196v2.25","unstructured":"Uhlir,
106
+ P. E. (Ed.). (2012). For Attribution: Developing Data Attribution and Citation
107
+ Practices and Standards: Summary of an International Workshop. Retrieved from
108
+ https:\/\/www.nap.edu\/catalog\/13564\/for-attribution-developing-data-attribution-and-citation-practices-and-standards"},{"key":"2019071613381284000_097196v2.26","doi-asserted-by":"crossref","unstructured":"Van
109
+ de Sompel, H. , & Nelson, M. L. (2015). Reminiscing About 15 Years of Interoperability
110
+ Efforts. D-Lib Magazine, 21(11\/12). https:\/\/doi.org\/10.1045\/november2015-vandesompel","DOI":"10.1045\/november2015-vandesompel"}],"container-title":[],"original-title":[],"link":[{"URL":"https:\/\/syndication.highwire.org\/content\/doi\/10.1101\/097196","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2020,1,18]],"date-time":"2020-01-18T02:53:57Z","timestamp":1579316037000},"score":1,"resource":{"primary":{"URL":"http:\/\/biorxiv.org\/lookup\/doi\/10.1101\/097196"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2016,12,28]]},"references-count":26,"URL":"http:\/\/dx.doi.org\/10.1101\/097196","relation":{"is-preprint-of":[{"id-type":"doi","id":"10.1038\/s41597-019-0031-8","asserted-by":"subject"}]},"published":{"date-parts":[[2016,12,28]]},"subtype":"preprint"}}'
111
+ recorded_at: Mon, 05 Jun 2023 09:05:58 GMT
112
+ - request:
113
+ method: get
114
+ uri: https://api.crossref.org/members/246
115
+ body:
116
+ encoding: UTF-8
117
+ string: ''
118
+ headers:
119
+ Connection:
120
+ - close
121
+ Host:
122
+ - api.crossref.org
123
+ User-Agent:
124
+ - http.rb/5.1.1
125
+ response:
126
+ status:
127
+ code: 200
128
+ message: OK
129
+ headers:
130
+ Date:
131
+ - Mon, 05 Jun 2023 09:05:59 GMT
132
+ Content-Type:
133
+ - application/json
134
+ Transfer-Encoding:
135
+ - chunked
136
+ Access-Control-Expose-Headers:
137
+ - Link
138
+ Access-Control-Allow-Headers:
139
+ - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language,
140
+ Accept-Ranges, Cache-Control
141
+ Access-Control-Allow-Origin:
142
+ - "*"
143
+ Server:
144
+ - Jetty(9.4.40.v20210413)
145
+ X-Ratelimit-Limit:
146
+ - '50'
147
+ X-Ratelimit-Interval:
148
+ - 1s
149
+ X-Api-Pool:
150
+ - public
151
+ X-Rate-Limit-Limit:
152
+ - '50'
153
+ X-Rate-Limit-Interval:
154
+ - 1s
155
+ Permissions-Policy:
156
+ - interest-cohort=()
157
+ Connection:
158
+ - close
159
+ body:
160
+ encoding: UTF-8
161
+ string: '{"status":"ok","message-type":"member","message-version":"1.0.0","message":{"last-status-check-time":1685920979824,"primary-name":"Cold
162
+ Spring Harbor Laboratory","counts":{"current-dois":117840,"backfile-dois":160223,"total-dois":278063},"breakdowns":{"dois-by-issued-year":[[2020,53638],[2021,50444],[2022,46947],[2019,31261],[2018,22041],[2023,20449],[2017,12746],[2016,6114],[2006,3590],[2015,3299],[2014,2295],[2009,1926],[2007,1796],[2010,1753],[2008,1646],[2013,1450],[2011,1418],[2012,1356],[2004,949],[2003,872],[2005,861],[2001,801],[2002,781],[2000,774],[1999,714],[1998,707],[1997,515],[1996,504],[1995,448],[1994,441],[1993,389],[1992,364],[1991,336],[1990,304],[1989,304],[1988,283],[1974,235],[1983,228],[1987,227],[1979,154],[1980,143],[1986,129],[1978,122],[1981,117],[1985,107],[1970,101],[1977,98],[1968,97],[1984,95],[1982,95],[1969,94],[1966,94],[1973,84],[1963,79],[1972,74],[1967,72],[1950,63],[1976,62],[1965,60],[1960,53],[1964,50],[1962,49],[1961,48],[1937,43],[1953,42],[1957,39],[1958,38],[1951,37],[1938,37],[1935,37],[1936,36],[1955,34],[1941,34],[1939,34],[1934,32],[1956,31],[1954,29],[1946,29],[1933,29],[1959,28],[1952,28],[1940,28],[1948,27],[1947,27],[1942,18]]},"prefixes":["10.1261","10.1110","10.1101","10.14224"],"coverage":{"affiliations-current":0.0,"similarity-checking-current":1.0,"descriptions-current":0.0,"ror-ids-current":0.0,"funders-backfile":0.02186327805620916,"licenses-backfile":6.86543130511849E-5,"funders-current":0.007645960624575696,"affiliations-backfile":6.241301186471356E-6,"resource-links-backfile":6.241301186471356E-6,"orcids-backfile":0.5046716139380738,"update-policies-current":0.0,"ror-ids-backfile":0.0,"orcids-current":0.7929226069246436,"similarity-checking-backfile":0.9900451246075782,"references-backfile":0.8710921652946206,"descriptions-backfile":0.0,"award-numbers-backfile":0.02004081810975952,"update-policies-backfile":0.0,"licenses-current":0.0,"award-numbers-current":0.007060420909708079,"abstracts-backfile":0.8900157904920017,"resource-links-current":0.0,"abstracts-current":0.9955363204344874,"references-current":0.9830108621860149},"prefix":[{"name":"Cold
163
+ Spring Harbor Laboratory","value":"10.1261"},{"name":"","value":"10.1110"},{"name":"Cold
164
+ Spring Harbor Laboratory","value":"10.1101"},{"name":"Cold Spring Harbor Laboratory
165
+ - CSHL Library & Archives","value":"10.14224"}],"id":246,"tokens":["cold","spring","harbor","laboratory"],"counts-type":{"all":{"report":20,"journal-article":39609,"journal":8,"posted-content":238432,"journal-issue":2},"backfile":{"report":20,"journal-article":37729,"posted-content":122472,"journal-issue":2},"current":{"journal-article":1880,"posted-content":115960}},"coverage-type":{"all":{"report":{"last-status-check-time":1685920979824,"affiliations":0.0,"abstracts":0.0,"orcids":0.35,"licenses":0.0,"references":0.0,"funders":0.0,"similarity-checking":0.1,"award-numbers":0.0,"ror-ids":0.0,"update-policies":0.0,"resource-links":0.0,"descriptions":0.0},"journal-article":{"last-status-check-time":1685920979824,"affiliations":2.524678734631018E-5,"abstracts":0.5474260900300437,"orcids":0.06104673180337802,"licenses":2.77714660809412E-4,"references":0.6130172435557575,"funders":0.11118685147315,"similarity-checking":0.9602363099295615,"award-numbers":0.1020727612411321,"ror-ids":0.0,"update-policies":0.0,"resource-links":2.524678734631018E-5,"descriptions":0.0},"journal":{"last-status-check-time":1685920979824,"affiliations":0.0,"abstracts":0.0,"orcids":0.0,"licenses":0.0,"references":0.0,"funders":0.0,"similarity-checking":0.0,"award-numbers":0.0,"ror-ids":0.0,"update-policies":0.0,"resource-links":0.0,"descriptions":0.0},"posted-content":{"last-status-check-time":1685920979824,"affiliations":0.0,"abstracts":0.9991611864179305,"orcids":0.7208470339551738,"licenses":0.0,"references":0.9693581398470004,"funders":0.0,"similarity-checking":1.0,"award-numbers":0.0,"ror-ids":0.0,"update-policies":0.0,"resource-links":0.0,"descriptions":0.0},"journal-issue":{"last-status-check-time":1685920979824,"affiliations":0.0,"abstracts":0.0,"orcids":0.0,"licenses":0.0,"references":0.0,"funders":0.0,"similarity-checking":0.0,"award-numbers":0.0,"ror-ids":0.0,"update-policies":0.0,"resource-links":0.0,"descriptions":0.0}},"backfile":{"report":{"last-status-check-time":1685920979824,"affiliations":0.0,"abstracts":0.0,"orcids":0.35,"licenses":0.0,"references":0.0,"funders":0.0,"similarity-checking":0.1,"award-numbers":0.0,"ror-ids":0.0,"update-policies":0.0,"resource-links":0.0,"descriptions":0.0},"journal-article":{"last-status-check-time":1685920979824,"affiliations":2.65048106231281E-5,"abstracts":0.5385512470513398,"orcids":0.03750430703172626,"licenses":2.915529168544091E-4,"references":0.6052373505791301,"funders":0.09284635161281773,"similarity-checking":0.9582549232685732,"award-numbers":0.08510694691086432,"ror-ids":0.0,"update-policies":0.0,"resource-links":2.65048106231281E-5,"descriptions":0.0},"posted-content":{"last-status-check-time":1685920979824,"affiliations":0.0,"abstracts":0.998448624991835,"orcids":0.6486217257822195,"licenses":0.0,"references":0.953148474753413,"funders":0.0,"similarity-checking":1.0,"award-numbers":0.0,"ror-ids":0.0,"update-policies":0.0,"resource-links":0.0,"descriptions":0.0},"journal-issue":{"last-status-check-time":1685920979824,"affiliations":0.0,"abstracts":0.0,"orcids":0.0,"licenses":0.0,"references":0.0,"funders":0.0,"similarity-checking":0.0,"award-numbers":0.0,"ror-ids":0.0,"update-policies":0.0,"resource-links":0.0,"descriptions":0.0}},"current":{"journal-article":{"last-status-check-time":1685920979824,"affiliations":0.0,"abstracts":0.725531914893617,"orcids":0.5335106382978723,"licenses":0.0,"references":0.7691489361702128,"funders":0.4792553191489362,"similarity-checking":1.0,"award-numbers":0.4425531914893617,"ror-ids":0.0,"update-policies":0.0,"resource-links":0.0,"descriptions":0.0},"posted-content":{"last-status-check-time":1685920979824,"affiliations":0.0,"abstracts":0.9999137633666783,"orcids":0.7971283201103829,"licenses":0.0,"references":0.9864780958951364,"funders":0.0,"similarity-checking":1.0,"award-numbers":0.0,"ror-ids":0.0,"update-policies":0.0,"resource-links":0.0,"descriptions":0.0}}},"flags":{"deposits-abstracts-current":true,"deposits-orcids-current":true,"deposits":true,"deposits-affiliations-backfile":true,"deposits-update-policies-backfile":false,"deposits-similarity-checking-backfile":true,"deposits-award-numbers-current":true,"deposits-resource-links-current":false,"deposits-ror-ids-current":false,"deposits-articles":true,"deposits-affiliations-current":false,"deposits-funders-current":true,"deposits-references-backfile":true,"deposits-ror-ids-backfile":false,"deposits-abstracts-backfile":true,"deposits-licenses-backfile":true,"deposits-award-numbers-backfile":true,"deposits-descriptions-current":false,"deposits-references-current":true,"deposits-resource-links-backfile":true,"deposits-descriptions-backfile":false,"deposits-orcids-backfile":true,"deposits-funders-backfile":true,"deposits-update-policies-current":false,"deposits-similarity-checking-current":true,"deposits-licenses-current":false},"location":"Woodbury,
166
+ NY, United States","names":["Cold Spring Harbor Laboratory","","Cold Spring
167
+ Harbor Laboratory - CSHL Library & Archives"]}}'
168
+ recorded_at: Mon, 05 Jun 2023 09:05:59 GMT
169
+ - request:
170
+ method: get
171
+ uri: https://doi.org/ra/10.1101
172
+ body:
173
+ encoding: UTF-8
174
+ string: ''
175
+ headers:
176
+ Connection:
177
+ - close
178
+ Host:
179
+ - doi.org
180
+ User-Agent:
181
+ - http.rb/5.1.1
182
+ response:
183
+ status:
184
+ code: 200
185
+ message: OK
186
+ headers:
187
+ Date:
188
+ - Mon, 05 Jun 2023 09:05:59 GMT
189
+ Content-Type:
190
+ - application/json;charset=UTF-8
191
+ Transfer-Encoding:
192
+ - chunked
193
+ Connection:
194
+ - close
195
+ Permissions-Policy:
196
+ - interest-cohort=(),browsing-topics=()
197
+ Cf-Cache-Status:
198
+ - DYNAMIC
199
+ Report-To:
200
+ - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=0Dom7ycgRyirN9EHyT4qsqeXne5X8bNmpS0FFZMTF98ZAFf57iXr%2B8njQ04ntzZDuKtJzAuGkz0oPUFCSYefF4YytmiKpq29szkB8h4ulMYZ0nOEWliOsJ1xTxXCA2rEcHUcGZ0%3D"}],"group":"cf-nel","max_age":604800}'
201
+ Nel:
202
+ - '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}'
203
+ Strict-Transport-Security:
204
+ - max-age=31536000; includeSubDomains; preload
205
+ Server:
206
+ - cloudflare
207
+ Cf-Ray:
208
+ - 7d2741cbdd151c8d-AMS
209
+ Alt-Svc:
210
+ - h3=":443"; ma=86400
211
+ body:
212
+ encoding: UTF-8
213
+ string: |-
214
+ [
215
+ {
216
+ "DOI": "10.1101",
217
+ "RA": "Crossref"
218
+ }
219
+ ]
220
+ recorded_at: Mon, 05 Jun 2023 09:05:59 GMT
221
+ recorded_with: VCR 6.1.0
@@ -7,7 +7,7 @@ describe Commonmeta::Metadata, vcr: true do
7
7
 
8
8
  context 'get json_feed_item metadata' do
9
9
  it 'blogger post' do
10
- input = 'https://rogue-scholar.org/api/posts/1jgo59el'
10
+ input = 'https://rogue-scholar.org/api/posts/f3629c86-06e0-42c0-844a-266b03a91ef1'
11
11
  subject = described_class.new(input: input)
12
12
  expect(subject.valid?).to be true
13
13
  expect(subject.id).to eq('https://iphylo.blogspot.com/2023/05/ten-years-and-million-links.html')
@@ -27,7 +27,7 @@ describe Commonmeta::Metadata, vcr: true do
27
27
  end
28
28
 
29
29
  it 'ghost post with doi' do
30
- input = 'https://rogue-scholar.org/api/posts/1jgo8yel'
30
+ input = 'https://rogue-scholar.org/api/posts/5bb66e92-5cb9-4659-8aca-20e486b695c9'
31
31
  subject = described_class.new(input: input)
32
32
  expect(subject.valid?).to be true
33
33
  expect(subject.id).to eq('https://doi.org/10.53731/4nwxn-frt36')
@@ -46,11 +46,31 @@ describe Commonmeta::Metadata, vcr: true do
46
46
  expect(subject.container).to eq("identifier"=>"https://blog.front-matter.io/", "identifierType"=>"URL", "title"=>"Front Matter", "type"=>"Periodical")
47
47
  end
48
48
 
49
+ it 'ghost post without doi' do
50
+ input = 'https://rogue-scholar.org/api/posts/c3095752-2af0-40a4-a229-3ceb7424bce2'
51
+ subject = described_class.new(input: input)
52
+ expect(subject.valid?).to be true
53
+ expect(subject.id).to eq('https://www.ideasurg.pub/residency-visual-abstract')
54
+ expect(subject.url).to eq('https://www.ideasurg.pub/residency-visual-abstract')
55
+ expect(subject.type).to eq('Article')
56
+ expect(subject.creators.length).to eq(1)
57
+ expect(subject.creators.first).to eq("familyName"=>"Sathe", "givenName"=>"Tejas S.", "type"=>"Person")
58
+ expect(subject.titles).to eq([{"title"=>"The Residency Visual Abstract"}])
59
+ expect(subject.license).to eq('id' => 'CC-BY-4.0',
60
+ 'url' => 'https://creativecommons.org/licenses/by/4.0/legalcode')
61
+ expect(subject.date).to eq('published' => '2023-04-08')
62
+ expect(subject.descriptions).to eq([{"description"=>"A graphical, user-friendly tool for programs to highlight important data to prospective applicants", "descriptionType"=>"Abstract"}])
63
+ expect(subject.publisher).to eq('name' => 'I.D.E.A.S.')
64
+ expect(subject.subjects).to be_nil
65
+ expect(subject.language).to eq('en')
66
+ expect(subject.container).to eq("identifier"=>"https://www.ideasurg.pub/", "identifierType"=>"URL", "title"=>"I.D.E.A.S.", "type"=>"Periodical")
67
+ end
68
+
49
69
  it 'wordpress post' do
50
- input = 'https://rogue-scholar.org/api/posts/zkevlyd3'
70
+ input = 'https://rogue-scholar.org/api/posts/1c578558-1324-4493-b8af-84c49eabc52f'
51
71
  subject = described_class.new(input: input)
52
72
  expect(subject.valid?).to be true
53
- expect(subject.id).to eq('https://wisspub.net/2023/05/23/eu-mitgliedstaaten-betonen-die-rolle-von-wissenschaftsgeleiteten-open-access-modellen-jenseits-von-apcs')
73
+ expect(subject.id).to eq('https://doi.org/10.59350/kz04m-s8z58')
54
74
  expect(subject.url).to eq('https://wisspub.net/2023/05/23/eu-mitgliedstaaten-betonen-die-rolle-von-wissenschaftsgeleiteten-open-access-modellen-jenseits-von-apcs')
55
75
  expect(subject.type).to eq('Article')
56
76
  expect(subject.creators.length).to eq(1)
@@ -65,9 +85,9 @@ describe Commonmeta::Metadata, vcr: true do
65
85
  expect(subject.language).to eq('de')
66
86
  expect(subject.container).to eq("identifier"=>"https://wisspub.net/", "identifierType"=>"URL", "title"=>"wisspub.net", "type"=>"Periodical")
67
87
  end
68
-
88
+
69
89
  it 'jekyll post' do
70
- input = 'https://rogue-scholar.org/api/posts/1jdkwod5'
90
+ input = 'https://rogue-scholar.org/api/posts/efdacb04-bcec-49d7-b689-ab3eab0634bf'
71
91
  subject = described_class.new(input: input)
72
92
  puts subject.errors
73
93
  expect(subject.valid?).to be true
@@ -85,7 +105,7 @@ describe Commonmeta::Metadata, vcr: true do
85
105
  expect(subject.subjects).to be_nil
86
106
  expect(subject.language).to eq('en')
87
107
  expect(subject.container).to eq("identifier"=>"https://citationstyles.org/", "identifierType"=>"URL", "title"=>"Citation Style Language", "type"=>"Periodical")
88
- end
108
+ end
89
109
  end
90
110
 
91
111
  context 'get json_feed' do
@@ -101,10 +121,15 @@ describe Commonmeta::Metadata, vcr: true do
101
121
  expect(response).to be_nil
102
122
  end
103
123
 
104
- it 'citation style language' do
105
- id = 'prmb582'
124
+ it 'behind the science' do
125
+ id = '468ap65'
106
126
  response = subject.get_json_feed(id)
107
- expect(response).to eq("1jdkoe52")
127
+ expect(response).to eq("84651758-f820-4e18-ae5f-4483ff4f4e92")
128
+ end
129
+
130
+ it 'all posts' do
131
+ response = subject.get_json_feed
132
+ expect(response).to eq("c801dbdf-6bde-4de4-9455-2ba21c11d4c6")
108
133
  end
109
134
  end
110
135
  end
data/spec/utils_spec.rb CHANGED
@@ -671,5 +671,10 @@ describe Commonmeta::Metadata, vcr: true do
671
671
  response = subject.json_feed_url(id)
672
672
  expect(response).to eq("https://rogue-scholar.org/api/blogs/f0m0e38")
673
673
  end
674
+
675
+ it 'all posts' do
676
+ response = subject.json_feed_url
677
+ expect(response).to eq("https://rogue-scholar.org/api/posts")
678
+ end
674
679
  end
675
680
  end
@@ -37,7 +37,7 @@ describe Commonmeta::Metadata, vcr: true do
37
37
  subject = described_class.new(input: input, from: 'datacite')
38
38
  expect(subject.style).to eq('apa')
39
39
  expect(subject.locale).to eq('en-US')
40
- expect(subject.citation).to eq('Lab For Exosphere And Near Space Environment Studies. (2019). <i>lenses-lab/LYAO_RT-2018JA026426: Original Release</i> (Version 1.0.0) [Computer software]. Zenodo. https://doi.org/10.5281/zenodo.2598836')
40
+ expect(subject.citation).to eq('Exosphere, L. F. (2019). <i>lenses-lab/LYAO_RT-2018JA026426: Original Release</i> (Version 1.0.0) [Computer software]. Zenodo. https://doi.org/10.5281/zenodo.2598836')
41
41
  end
42
42
 
43
43
  it 'interactive resource without dates' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: commonmeta-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.3
4
+ version: 3.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Fenner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-06-04 00:00:00.000000000 Z
11
+ date: 2023-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -1151,6 +1151,8 @@ files:
1151
1151
  - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_datetime_from_time/nil.yml
1152
1152
  - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_datetime_from_time/past.yml
1153
1153
  - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_datetime_from_time/present.yml
1154
+ - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed/all_posts.yml
1155
+ - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed/behind_the_science.yml
1154
1156
  - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed/citation_style_language.yml
1155
1157
  - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed/citation_style_language_blog.yml
1156
1158
  - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed/front-matter_blog.yml
@@ -1158,21 +1160,9 @@ files:
1158
1160
  - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed/upstream_blog.yml
1159
1161
  - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/blogger_post.yml
1160
1162
  - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/ghost_post_with_doi.yml
1163
+ - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/ghost_post_without_doi.yml
1161
1164
  - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/jekyll_post.yml
1162
1165
  - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_item_metadata/wordpress_post.yml
1163
- - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_metadata/blogger_post.yml
1164
- - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_metadata/ghost_post_with_doi.yml
1165
- - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_metadata/jekyll_post.yml
1166
- - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_feed_metadata/wordpress_post.yml
1167
- - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_item_metadata/blogger_post.yml
1168
- - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_item_metadata/ghost_post.yml
1169
- - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_item_metadata/ghost_post_with_doi.yml
1170
- - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_item_metadata/jekyll_post.yml
1171
- - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_item_metadata/wordpress_post.yml
1172
- - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_post_metadata/blogger_post.yml
1173
- - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_post_metadata/ghost_post_with_doi.yml
1174
- - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_post_metadata/jekyll_post.yml
1175
- - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_json_post_metadata/wordpress_post.yml
1176
1166
  - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_link/license.yml
1177
1167
  - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_link/url.yml
1178
1168
  - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/get_one_author/has_familyName.yml
@@ -1197,6 +1187,7 @@ files:
1197
1187
  - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/github/github_from_url_file.yml
1198
1188
  - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/handle_input/DOI_RA_not_Crossref_or_DataCite.yml
1199
1189
  - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/handle_input/unknown_DOI_prefix.yml
1190
+ - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/json_feed_url/all_posts.yml
1200
1191
  - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/json_feed_url/front-matter_blog.yml
1201
1192
  - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/json_schema_errors/is_valid.yml
1202
1193
  - spec/fixtures/vcr_cassettes/Commonmeta_Metadata/normalize_cc_url/not_found.yml
@@ -1,141 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: get
5
- uri: https://rogue-scholar.org/api/blogs/https://rogue-scholar.org/api/posts/1jgo59el
6
- body:
7
- encoding: UTF-8
8
- string: ''
9
- headers:
10
- Connection:
11
- - close
12
- Host:
13
- - rogue-scholar.org
14
- User-Agent:
15
- - http.rb/5.1.1
16
- response:
17
- status:
18
- code: 308
19
- message: Permanent Redirect
20
- headers:
21
- Cache-Control:
22
- - public, max-age=0, must-revalidate
23
- Content-Type:
24
- - text/plain
25
- Date:
26
- - Sun, 04 Jun 2023 13:19:22 GMT
27
- Location:
28
- - "/api/blogs/https:/rogue-scholar.org/api/posts/1jgo59el"
29
- Refresh:
30
- - 0;url=/api/blogs/https:/rogue-scholar.org/api/posts/1jgo59el
31
- Server:
32
- - Vercel
33
- Strict-Transport-Security:
34
- - max-age=63072000
35
- X-Vercel-Cache:
36
- - MISS
37
- X-Vercel-Id:
38
- - fra1::c9dh9-1685884762805-30abff0801ab
39
- Connection:
40
- - close
41
- Transfer-Encoding:
42
- - chunked
43
- body:
44
- encoding: ASCII-8BIT
45
- string: 'Redirecting to /api/blogs/https:/rogue-scholar.org/api/posts/1jgo59el
46
- (308)
47
-
48
- '
49
- recorded_at: Sun, 04 Jun 2023 13:19:22 GMT
50
- - request:
51
- method: get
52
- uri: https://rogue-scholar.org/api/posts/1jgo59el
53
- body:
54
- encoding: UTF-8
55
- string: ''
56
- headers:
57
- Connection:
58
- - close
59
- Host:
60
- - rogue-scholar.org
61
- User-Agent:
62
- - http.rb/5.1.1
63
- response:
64
- status:
65
- code: 200
66
- message: OK
67
- headers:
68
- Age:
69
- - '0'
70
- Cache-Control:
71
- - public, max-age=0, must-revalidate
72
- Content-Length:
73
- - '5576'
74
- Content-Type:
75
- - application/json; charset=utf-8
76
- Date:
77
- - Sun, 04 Jun 2023 13:22:53 GMT
78
- Etag:
79
- - '"r6tc4lxjtm4ak"'
80
- Server:
81
- - Vercel
82
- Strict-Transport-Security:
83
- - max-age=63072000
84
- X-Matched-Path:
85
- - "/api/posts/[slug]"
86
- X-Vercel-Cache:
87
- - MISS
88
- X-Vercel-Id:
89
- - fra1::iad1::p4k6f-1685884969654-20804225b67a
90
- Connection:
91
- - close
92
- body:
93
- encoding: UTF-8
94
- string: '{"id":"https://iphylo.blogspot.com/2023/05/ten-years-and-million-links.html","short_id":"1jgo59el","url":"https://iphylo.blogspot.com/2023/05/ten-years-and-million-links.html","title":"Ten
95
- years and a million links","summary":"As trailed on a Twitter thread last
96
- week I’ve been working on a manuscript describing the efforts to map taxonomic
97
- names to their original descriptions in the taxonomic literature. Putting
98
- together a...","date_published":"2023-05-31T17:26:00Z","date_modified":null,"authors":[{"url":null,"name":"Roderic
99
- Page"}],"image":null,"content_html":"<p>As trailed on a Twitter thread last
100
- week I’ve been working on a manuscript describing the efforts to map taxonomic
101
- names to their original descriptions in the taxonomic literature.</p>\n<blockquote
102
- class=\"twitter-tweet\"><p lang=\"en\" dir=\"ltr\">Putting together a manuscript
103
- on linking taxonomic names to the primary literature, basically “um, what,
104
- exactly, have you been doing all these years?”. TL;DR Across fungi, plants,
105
- and animals approx 1.3 million names have been linked to a persistent identifier
106
- for a publication.</p>— Roderic Page (@rdmpage) <a href=\"https://twitter.com/rdmpage/status/1661714128413573120?ref_src=twsrc%5Etfw\">May
107
- 25, 2023</a></blockquote> \n<p>The preprint is on bioRxiv <a href=\"https://doi.org/10.1101/2023.05.29.542697\">doi:10.1101/2023.05.29.542697</a></p>\n<blockquote>\n<p>A
108
- major gap in the biodiversity knowledge graph is a connection between taxonomic
109
- names and the taxonomic literature. While both names and publications often
110
- have persistent identifiers (PIDs), such as Life Science Identifiers (LSIDs)
111
- or Digital Object Identifiers (DOIs), LSIDs for names are rarely linked to
112
- DOIs for publications. This article describes efforts to make those connections
113
- across three large taxonomic databases: Index Fungorum, International Plant
114
- Names Index (IPNI), and the Index of Organism Names (ION). Over a million
115
- names have been matched to DOIs or other persistent identifiers for taxonomic
116
- publications. This represents approximately 36% of names for which publication
117
- data is available. The mappings between LSIDs and publication PIDs are made
118
- available through ChecklistBank. Applications of this mapping are discussed,
119
- including a web app to locate the citation of a taxonomic name, and a knowledge
120
- graph that uses data on researcher’s ORCID ids to connect taxonomic names
121
- and publications to authors of those names.</p>\n</blockquote>\n<p>Much of
122
- the work has been linking taxa to names, which still has huge gaps. There
123
- are also interesting differences in coverage between plants, animals, and
124
- fungi (see preprint for details).</p>\n\n<div class=\"separator\" style=\"clear:
125
- both;\"><a href=\"https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdWsSQhqi1DErXMIHm28g37-fiALNIsI5eQZmvoX_Fe03ZSwtKHbYt-LCsCCAUop0AGcwy_w7NpIjylVH1hNrM9oW-6j9e6tHASha49TTqFvDg2_tEx3r74RRFsjUo4M_Qat8NmKaZSChOt2hI3LsMjTVLrEVirEckU-9Ei7ug-7OHQlR4LA/s2276/animals-coverage.png\"
126
- style=\"display: block; padding: 1em 0; text-align: center; \"><img alt=\"\"
127
- border=\"0\" width=\"320\" data-original-height=\"2276\" data-original-width=\"2276\"
128
- src=\"https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdWsSQhqi1DErXMIHm28g37-fiALNIsI5eQZmvoX_Fe03ZSwtKHbYt-LCsCCAUop0AGcwy_w7NpIjylVH1hNrM9oW-6j9e6tHASha49TTqFvDg2_tEx3r74RRFsjUo4M_Qat8NmKaZSChOt2hI3LsMjTVLrEVirEckU-9Ei7ug-7OHQlR4LA/s320/animals-coverage.png\"/></a></div><div
129
- class=\"separator\" style=\"clear: both;\"><a href=\"https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdyxlVJ-oyMCNPmHtHWjSxdxMSJvgzdWRGRF6Ad4dk7ab7gGDpuKdKmS9XhROkopw361ylfsTd1ZkwkF6BN0JlWNnVLCKY1AfryCfWKHkgPQM7u-0SELW9j8RlQIflb6ibaV64gwW7oJrEvOGECvR51F8EW8cRg-1usW-GBM5ymObj7zlObQ/s2276/fungi-coverage.png\"
130
- style=\"display: block; padding: 1em 0; text-align: center; \"><img alt=\"\"
131
- border=\"0\" width=\"320\" data-original-height=\"2276\" data-original-width=\"2276\"
132
- src=\"https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdyxlVJ-oyMCNPmHtHWjSxdxMSJvgzdWRGRF6Ad4dk7ab7gGDpuKdKmS9XhROkopw361ylfsTd1ZkwkF6BN0JlWNnVLCKY1AfryCfWKHkgPQM7u-0SELW9j8RlQIflb6ibaV64gwW7oJrEvOGECvR51F8EW8cRg-1usW-GBM5ymObj7zlObQ/s320/fungi-coverage.png\"/></a></div><div
133
- class=\"separator\" style=\"clear: both;\"><a href=\"https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgf0YBuvNSXWAJTfQ1jk4XSocMzCYHP7t6IPUqhjQ3mftgM_850igWaD2copgNH6Xk6T62xBU641wvwOvXgCCDY3m2xC_gaILXO9RGx8H3Gpy5OOncsLb9smpT2LIgtYOExVBVdDRWqA0AZ8-mQjWL7dL5TiG7MqVu8spT8ACoGOPR_T36hRA/s2276/plants-coverage.png\"
134
- style=\"display: block; padding: 1em 0; text-align: center; \"><img alt=\"\"
135
- border=\"0\" width=\"320\" data-original-height=\"2276\" data-original-width=\"2276\"
136
- src=\"https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgf0YBuvNSXWAJTfQ1jk4XSocMzCYHP7t6IPUqhjQ3mftgM_850igWaD2copgNH6Xk6T62xBU641wvwOvXgCCDY3m2xC_gaILXO9RGx8H3Gpy5OOncsLb9smpT2LIgtYOExVBVdDRWqA0AZ8-mQjWL7dL5TiG7MqVu8spT8ACoGOPR_T36hRA/s320/plants-coverage.png\"/></a></div>\n\n\nThere
137
- is also a simple app to demonstrate these links, see <a href=\"https://species-cite.herokuapp.com\">https://species-cite.herokuapp.com</a>.\n\n\n\n<blockquote>\n<p>Written
138
- with <a href=\"https://stackedit.io/\">StackEdit</a>.</p>\n</blockquote>","tags":[],"language":"en","blog_id":"tyfqw20","blog":{"id":"tyfqw20","title":"iPhylo","language":"en","favicon":null,"feed_url":"https://iphylo.blogspot.com/feeds/posts/default?alt=rss","home_page_url":"https://iphylo.blogspot.com/","license":"https://creativecommons.org/licenses/by/4.0/legalcode","category":"Natural
139
- Sciences"}}'
140
- recorded_at: Sun, 04 Jun 2023 13:22:53 GMT
141
- recorded_with: VCR 6.1.0