commonmeta-ruby 3.2.3 → 3.2.4

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